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 0675e4ba47049b0adf31d62e551f1ca0bb200a2c..7619513b07b65e6de8db47bc92e96c805656c551 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 |
@@ -19,7 +19,6 @@ import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem; |
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver; |
import org.chromium.chrome.browser.bookmarks.BookmarkPromoHeader.PromoHeaderShowingChangeListener; |
import org.chromium.components.bookmarks.BookmarkId; |
-import org.chromium.ui.base.DeviceFormFactor; |
import java.util.ArrayList; |
import java.util.List; |
@@ -31,28 +30,26 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
BookmarkUIObserver, PromoHeaderShowingChangeListener { |
private static final int PROMO_HEADER_VIEW = 0; |
private static final int FOLDER_VIEW = 1; |
- private static final int DIVIDER_VIEW = 2; |
- private static final int BOOKMARK_VIEW = 3; |
+ private static final int BOOKMARK_VIEW = 2; |
private static final int MAXIMUM_NUMBER_OF_SEARCH_RESULTS = 500; |
private static final String EMPTY_QUERY = null; |
+ private final List<List<? extends Object>> mSections; |
+ private final List<Object> mPromoHeaderSection = new ArrayList<>(); |
+ private final List<BookmarkId> mFolderSection = new ArrayList<>(); |
+ private final List<BookmarkId> mBookmarkSection = new ArrayList<>(); |
+ |
+ private final List<BookmarkRow> mBookmarkRows = new ArrayList<>(); |
+ private final List<BookmarkRow> mFolderRows = new ArrayList<>(); |
+ |
+ private final List<BookmarkId> mTopLevelFolders = new ArrayList<>(); |
+ |
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<>(); |
- private List<Object> mFolderDividerSection; |
- private List<BookmarkId> mFolderSection = new ArrayList<>(); |
- private List<Object> mBookmarkDividerSection; |
- private List<BookmarkId> mBookmarkSection = new ArrayList<>(); |
- |
- private List<BookmarkRow> mBookmarkRows = new ArrayList<>(); |
- private List<BookmarkRow> mFolderRows = new ArrayList<>(); |
- |
private BookmarkModelObserver mBookmarkModelObserver = new BookmarkModelObserver() { |
@Override |
public void bookmarkNodeChanged(BookmarkItem node) { |
@@ -90,25 +87,9 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
BookmarkItemsAdapter(Context context) { |
mContext = context; |
- // TODO(twellington): remove dividers entirely after the bookmarks 720dp layout is restyled |
- // to match the < 720dp style. |
- mShouldShowDividers = DeviceFormFactor.isLargeTablet(context); |
- |
mSections = new ArrayList<>(); |
mSections.add(mPromoHeaderSection); |
- |
- if (mShouldShowDividers) { |
- mFolderDividerSection = new ArrayList<>(); |
- mSections.add(mFolderDividerSection); |
- } |
- |
mSections.add(mFolderSection); |
- |
- if (mShouldShowDividers) { |
- mBookmarkDividerSection = new ArrayList<>(); |
- mSections.add(mBookmarkDividerSection); |
- } |
- |
mSections.add(mBookmarkSection); |
} |
@@ -166,22 +147,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
updateHeaderAndNotify(); |
} |
- private void updateDividerSections() { |
- if (!mShouldShowDividers) return; |
- |
- mFolderDividerSection.clear(); |
- mBookmarkDividerSection.clear(); |
- |
- boolean isHeaderPresent = !mPromoHeaderSection.isEmpty(); |
- |
- if (isHeaderPresent && !mFolderSection.isEmpty()) { |
- mFolderDividerSection.add(null); |
- } |
- if ((isHeaderPresent || !mFolderSection.isEmpty()) && !mBookmarkSection.isEmpty()) { |
- mBookmarkDividerSection.add(null); |
- } |
- } |
- |
private void removeItem(int position) { |
List<?> section = getSection(position); |
assert section == mFolderSection || section == mBookmarkSection; |
@@ -218,9 +183,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
if (section == mPromoHeaderSection) { |
return PROMO_HEADER_VIEW; |
- } else if (section == mFolderDividerSection |
- || section == mBookmarkDividerSection) { |
- return DIVIDER_VIEW; |
} else if (section == mFolderSection) { |
return FOLDER_VIEW; |
} else if (section == mBookmarkSection) { |
@@ -238,9 +200,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
switch (viewType) { |
case PROMO_HEADER_VIEW: |
return mPromoHeaderManager.createHolder(parent); |
- case DIVIDER_VIEW: |
- return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate( |
- R.layout.bookmark_divider, parent, false)) {}; |
case FOLDER_VIEW: |
BookmarkFolderRow folder = (BookmarkFolderRow) LayoutInflater.from( |
parent.getContext()).inflate(R.layout.bookmark_folder_row, parent, false); |
@@ -266,7 +225,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
switch (getItemViewType(position)) { |
case PROMO_HEADER_VIEW: |
- case DIVIDER_VIEW: |
break; |
case FOLDER_VIEW: |
((BookmarkRow) holder.itemView).setBookmarkId(id); |
@@ -301,6 +259,7 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
mDelegate.addUIObserver(this); |
mDelegate.getModel().addObserver(mBookmarkModelObserver); |
mPromoHeaderManager = new BookmarkPromoHeader(mContext, this); |
+ populateTopLevelFoldersList(); |
} |
@Override |
@@ -315,10 +274,15 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
@Override |
public void onFolderStateSet(BookmarkId folder) { |
assert mDelegate != null; |
- setBookmarks(mDelegate.getModel().getChildIDs(folder, true, false), |
- mDelegate.getModel().getChildIDs(folder, false, true)); |
mSearchText = EMPTY_QUERY; |
+ |
+ if (folder.equals(mDelegate.getModel().getRootFolderId())) { |
+ setBookmarks(mTopLevelFolders, new ArrayList<BookmarkId>()); |
+ } else { |
+ setBookmarks(mDelegate.getModel().getChildIDs(folder, true, false), |
+ mDelegate.getModel().getChildIDs(folder, false, true)); |
+ } |
} |
@Override |
@@ -348,7 +312,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
private void updateHeaderAndNotify() { |
updateHeader(); |
- updateDividerSections(); |
notifyDataSetChanged(); |
} |
@@ -368,6 +331,22 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> |
} |
} |
+ private void populateTopLevelFoldersList() { |
+ BookmarkId desktopNodeId = mDelegate.getModel().getDesktopFolderId(); |
+ BookmarkId mobileNodeId = mDelegate.getModel().getMobileFolderId(); |
+ BookmarkId othersNodeId = mDelegate.getModel().getOtherFolderId(); |
+ |
+ if (mDelegate.getModel().isFolderVisible(mobileNodeId)) { |
+ mTopLevelFolders.add(mobileNodeId); |
+ } |
+ if (mDelegate.getModel().isFolderVisible(desktopNodeId)) { |
+ mTopLevelFolders.add(desktopNodeId); |
+ } |
+ if (mDelegate.getModel().isFolderVisible(othersNodeId)) { |
+ mTopLevelFolders.add(othersNodeId); |
+ } |
+ } |
+ |
@VisibleForTesting |
public BookmarkDelegate getDelegateForTesting() { |
return mDelegate; |