Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(749)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java

Issue 2768663002: [Bookmarks] Refactor search view to use SelectableListLayout paradigm (Closed)
Patch Set: Fix spelling error Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
index 78f1d85c91d6efd14b519b8c183489f6b68d0139..0675e4ba47049b0adf31d62e551f1ca0bb200a2c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.bookmarks;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -33,10 +34,14 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
private static final int DIVIDER_VIEW = 2;
private static final int BOOKMARK_VIEW = 3;
+ private static final int MAXIMUM_NUMBER_OF_SEARCH_RESULTS = 500;
+ private static final String EMPTY_QUERY = null;
+
private BookmarkDelegate mDelegate;
private Context mContext;
private BookmarkPromoHeader mPromoHeaderManager;
private boolean mShouldShowDividers;
+ private String mSearchText;
private List<List<? extends Object>> mSections;
private List<Object> mPromoHeaderSection = new ArrayList<>();
@@ -74,6 +79,11 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
public void bookmarkModelChanged() {
assert mDelegate != null;
mDelegate.notifyStateChange(BookmarkItemsAdapter.this);
+
+ if (mDelegate.getCurrentState() == BookmarkUIState.STATE_SEARCHING
+ && !TextUtils.equals(mSearchText, EMPTY_QUERY)) {
+ search(mSearchText);
+ }
}
};
@@ -153,12 +163,7 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
mBookmarkSection.clear();
mBookmarkSection.addAll(bookmarks);
- updateHeader();
- updateDividerSections();
-
- // TODO(kkimlabs): Animation is disabled due to a performance issue on bookmark undo.
- // http://crbug.com/484174
- notifyDataSetChanged();
+ updateHeaderAndNotify();
}
private void updateDividerSections() {
@@ -285,9 +290,7 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
return;
}
- updateHeader();
- updateDividerSections();
- notifyDataSetChanged();
+ updateHeaderAndNotify();
}
// BookmarkUIObserver implementations.
@@ -314,17 +317,41 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
assert mDelegate != null;
setBookmarks(mDelegate.getModel().getChildIDs(folder, true, false),
mDelegate.getModel().getChildIDs(folder, false, true));
+
+ mSearchText = EMPTY_QUERY;
+ }
+
+ @Override
+ public void onSearchStateSet() {
+ updateHeaderAndNotify();
}
@Override
public void onSelectionStateChange(List<BookmarkId> selectedBookmarks) {}
+ /**
+ * Synchronously searches for the given query.
+ * @param query The query text to search for.
+ */
+ void search(String query) {
+ mSearchText = query.toString().trim();
+ List<BookmarkId> results =
+ mDelegate.getModel().searchBookmarks(mSearchText, MAXIMUM_NUMBER_OF_SEARCH_RESULTS);
+ setBookmarks(null, results);
+ }
+
private static class ItemViewHolder extends RecyclerView.ViewHolder {
private ItemViewHolder(View view) {
super(view);
}
}
+ private void updateHeaderAndNotify() {
+ updateHeader();
+ updateDividerSections();
+ notifyDataSetChanged();
+ }
+
private void updateHeader() {
if (mDelegate == null) return;
@@ -332,6 +359,9 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
if (currentUIState == BookmarkUIState.STATE_LOADING) return;
mPromoHeaderSection.clear();
+
+ if (currentUIState == BookmarkUIState.STATE_SEARCHING) return;
+
assert currentUIState == BookmarkUIState.STATE_FOLDER : "Unexpected UI state";
if (mPromoHeaderManager.shouldShow()) {
mPromoHeaderSection.add(null);

Powered by Google App Engine
This is Rietveld 408576698