--- 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];
}
};
}