Bug 1405215 - Part 1 - Allow editing keyword in new Edit Bookmark dialogue. r?jwu draft
authorJan Henning <jh+bugzilla@buttercookie.de>
Thu, 19 Oct 2017 17:18:59 +0200
changeset 683382 a52dc766ab29cc93d2dc79bdc7cbeb75411a9045
parent 683381 e34bf30512fbf036488add812158d46b2c859d64
child 683383 2d89339890bd9aaa363bb46877ff2dee0031ad51
push id85354
push usermozilla@buttercookie.de
push dateThu, 19 Oct 2017 16:22:16 +0000
reviewersjwu
bugs1405215
milestone58.0a1
Bug 1405215 - Part 1 - Allow editing keyword in new Edit Bookmark dialogue. r?jwu MozReview-Commit-ID: Ek6qLdux7zt
mobile/android/app/src/main/res/layout/bookmark_edit_with_full_page.xml
mobile/android/base/java/org/mozilla/gecko/bookmarks/BookmarkEditFragment.java
--- a/mobile/android/app/src/main/res/layout/bookmark_edit_with_full_page.xml
+++ b/mobile/android/app/src/main/res/layout/bookmark_edit_with_full_page.xml
@@ -94,10 +94,31 @@
                 android:gravity="start"
                 android:hint="@string/bookmark_parent_folder"
                 android:inputType="none"
                 android:maxLines="1"
                 android:singleLine="true"
                 android:textColor="@color/text_and_tabs_tray_grey"
                 android:textSize="18sp" />
         </android.support.design.widget.TextInputLayout>
+
+        <android.support.design.widget.TextInputLayout
+            android:id="@+id/edit_bookmark_keyword_layout"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="8dp"
+            android:layout_marginTop="16dp">
+
+            <EditText
+                android:id="@+id/edit_bookmark_keyword"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:gravity="start"
+                android:hint="@string/bookmark_edit_keyword"
+                android:inputType="textNoSuggestions"
+                android:maxLines="1"
+                android:singleLine="true"
+                android:textColor="@color/text_and_tabs_tray_grey"
+                android:textSize="18sp" />
+        </android.support.design.widget.TextInputLayout>
     </LinearLayout>
 </LinearLayout>
--- a/mobile/android/base/java/org/mozilla/gecko/bookmarks/BookmarkEditFragment.java
+++ b/mobile/android/base/java/org/mozilla/gecko/bookmarks/BookmarkEditFragment.java
@@ -47,16 +47,18 @@ public class BookmarkEditFragment extend
     private long bookmarkId;
     private String url;
     private Bookmark bookmark;
 
     private Toolbar toolbar;
     private EditText nameText;
     private TextInputLayout locationLayout;
     private EditText locationText;
+    private TextInputLayout keywordLayout;
+    private EditText keywordText;
     private EditText folderText;
 
     public interface Callbacks {
         /**
          * A callback method to tell caller that bookmark has been modified.
          * Caller takes charge for the change(e.g. update database).
          */
         void onEditBookmark(Bundle bundle);
@@ -112,39 +114,43 @@ public class BookmarkEditFragment extend
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                              @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.bookmark_edit_with_full_page, container);
         toolbar = (Toolbar) view.findViewById(R.id.toolbar);
         nameText = (EditText) view.findViewById(R.id.edit_bookmark_name);
         locationLayout = (TextInputLayout) view.findViewById(R.id.edit_bookmark_location_layout);
         locationText = (EditText) view.findViewById(R.id.edit_bookmark_location);
+        keywordLayout = (TextInputLayout) view.findViewById(R.id.edit_bookmark_keyword_layout);
+        keywordText = (EditText) view.findViewById(R.id.edit_bookmark_keyword);
         folderText = (EditText) view.findViewById(R.id.edit_parent_folder);
 
         toolbar.inflateMenu(R.menu.bookmark_edit_menu);
         toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
             @Override
             public boolean onMenuItemClick(MenuItem item) {
                 switch (item.getItemId()) {
                     case R.id.done:
                         final String newUrl = locationText.getText().toString().trim();
                         final String newTitle = nameText.getText().toString();
+                        final String newKeyword = keywordText.getText().toString();
                         if (callbacks != null) {
                             if (TextUtils.equals(newTitle, bookmark.originalTitle) &&
                                 TextUtils.equals(newUrl, bookmark.originalUrl) &&
+                                TextUtils.equals(newKeyword, bookmark.originalKeyword) &&
                                 bookmark.parentId == bookmark.originalParentId) {
                                 // Nothing changed, skip callback.
                                 break;
                             }
 
                             final Bundle bundle = new Bundle();
                             bundle.putLong(Bookmarks._ID, bookmark.id);
                             bundle.putString(Bookmarks.TITLE, newTitle);
                             bundle.putString(Bookmarks.URL, newUrl);
-                            bundle.putString(Bookmarks.KEYWORD, bookmark.keyword);
+                            bundle.putString(Bookmarks.KEYWORD, newKeyword);
                             if (bookmark.parentId != bookmark.originalParentId) {
                                 bundle.putLong(Bookmarks.PARENT, bookmark.parentId);
                                 bundle.putLong(BrowserContract.PARAM_OLD_BOOKMARK_PARENT, bookmark.originalParentId);
                             }
                             bundle.putInt(Bookmarks.TYPE, bookmark.type);
 
                             callbacks.onEditBookmark(bundle);
                         }
@@ -202,16 +208,17 @@ public class BookmarkEditFragment extend
         getLoaderManager().destroyLoader(0);
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         if (bookmark != null) {
             bookmark.url = locationText.getText().toString().trim();
             bookmark.title = nameText.getText().toString();
+            bookmark.keyword = keywordText.getText().toString();
             bookmark.folder = folderText.getText().toString();
             outState.putParcelable(ARG_BOOKMARK, bookmark);
         }
 
         super.onSaveInstanceState(outState);
     }
 
     @Override
@@ -229,21 +236,24 @@ public class BookmarkEditFragment extend
     private void invalidateView(Bookmark bookmark) {
         this.bookmark = bookmark;
 
         nameText.setText(bookmark.title);
 
         if (bookmark.type == Bookmarks.TYPE_FOLDER) {
             toolbar.setTitle(R.string.bookmark_edit_folder_title);
             locationLayout.setVisibility(View.GONE);
+            keywordLayout.setVisibility(View.GONE);
         } else {
             toolbar.setTitle(R.string.bookmark_edit_title);
             locationLayout.setVisibility(View.VISIBLE);
+            keywordLayout.setVisibility(View.VISIBLE);
         }
         locationText.setText(bookmark.url);
+        keywordText.setText(bookmark.keyword);
 
         if (Bookmarks.MOBILE_FOLDER_GUID.equals(bookmark.guid)) {
             folderText.setText(R.string.bookmarks_folder_mobile);
         } else {
             folderText.setText(bookmark.folder);
         }
 
         // Enable menu item after bookmark is set to view
@@ -261,49 +271,52 @@ public class BookmarkEditFragment extend
     }
 
     /**
      * A private struct to make it easier to pass bookmark data across threads
      */
     private static class Bookmark implements Parcelable {
         // Cannot be modified in this fragment.
         final long id;
-        final String keyword;
         final int type; // folder or bookmark
         final String guid;
         final String originalTitle;
         final String originalUrl;
+        final String originalKeyword;
         final long originalParentId;
         final String originalFolder;
 
         // Can be modified in this fragment.
         String title;
         String url;
+        String keyword;
         long parentId;
         String folder;
 
         public Bookmark(long id, String url, String title, String keyword, long parentId,
                         String folder, int type, String guid) {
-            this(id, url, title, keyword, parentId, folder, type, guid, url, title, parentId, folder);
+            this(id, url, title, keyword, parentId, folder, type, guid, url, title, keyword, parentId, folder);
         }
 
-        private Bookmark(long id, String originalUrl, String originalTitle, String keyword,
+        private Bookmark(long id, String originalUrl, String originalTitle, String originalKeyword,
                          long originalParentId, String originalFolder, int type, String guid,
-                         String modifiedUrl, String modifiedTitle, long modifiedParentId, String modifiedFolder) {
+                         String modifiedUrl, String modifiedTitle, String modifiedKeyword,
+                         long modifiedParentId, String modifiedFolder) {
             this.id = id;
             this.originalUrl = originalUrl;
             this.originalTitle = originalTitle;
-            this.keyword = keyword;
+            this.originalKeyword = originalKeyword;
             this.originalParentId = originalParentId;
             this.originalFolder = originalFolder;
             this.type = type;
             this.guid = guid;
 
             this.url = modifiedUrl;
             this.title = modifiedTitle;
+            this.keyword = modifiedKeyword;
             this.parentId = modifiedParentId;
             this.folder = modifiedFolder;
         }
 
         @Override
         public int describeContents() {
             return 0;
         }
@@ -315,39 +328,41 @@ public class BookmarkEditFragment extend
             parcel.writeString(title);
             parcel.writeString(keyword);
             parcel.writeLong(parentId);
             parcel.writeString(folder);
             parcel.writeInt(type);
             parcel.writeString(guid);
             parcel.writeString(originalUrl);
             parcel.writeString(originalTitle);
+            parcel.writeString(originalKeyword);
             parcel.writeLong(originalParentId);
             parcel.writeString(originalFolder);
         }
 
         public static final Creator<Bookmark> CREATOR = new Creator<Bookmark>() {
             @Override
             public Bookmark createFromParcel(final Parcel source) {
                 final long id = source.readLong();
                 final String modifiedUrl = source.readString();
                 final String modifiedTitle = source.readString();
-                final String keyword = source.readString();
+                final String modifiedKeyword = source.readString();
                 final long modifiedParentId = source.readLong();
                 final String modifiedFolder = source.readString();
                 final int type = source.readInt();
                 final String guid = source.readString();
 
                 final String originalUrl = source.readString();
                 final String originalTitle = source.readString();
+                final String originalKeyword = source.readString();
                 final long originalParentId = source.readLong();
                 final String originalFolder = source.readString();
 
-                return new Bookmark(id, originalUrl, originalTitle, keyword, originalParentId, originalFolder,
-                                    type, guid, modifiedUrl, modifiedTitle, modifiedParentId, modifiedFolder);
+                return new Bookmark(id, originalUrl, originalTitle, originalKeyword, originalParentId, originalFolder,
+                                    type, guid, modifiedUrl, modifiedTitle, modifiedKeyword, modifiedParentId, modifiedFolder);
             }
 
             @Override
             public Bookmark[] newArray(final int size) {
                 return new Bookmark[size];
             }
         };
     }