| 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 28ece5e1621e96ebe43959410a6de7d909f6503b..78f1d85c91d6efd14b519b8c183489f6b68d0139 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
|
| @@ -18,6 +18,7 @@ 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;
|
| @@ -35,14 +36,18 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
| private BookmarkDelegate mDelegate;
|
| private Context mContext;
|
| private BookmarkPromoHeader mPromoHeaderManager;
|
| + private boolean mShouldShowDividers;
|
|
|
| private List<List<? extends Object>> mSections;
|
| private List<Object> mPromoHeaderSection = new ArrayList<>();
|
| - private List<Object> mFolderDividerSection = new ArrayList<>();
|
| + private List<Object> mFolderDividerSection;
|
| private List<BookmarkId> mFolderSection = new ArrayList<>();
|
| - private List<Object> mBookmarkDividerSection = 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) {
|
| @@ -75,11 +80,25 @@ 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);
|
| - mSections.add(mFolderDividerSection);
|
| +
|
| + if (mShouldShowDividers) {
|
| + mFolderDividerSection = new ArrayList<>();
|
| + mSections.add(mFolderDividerSection);
|
| + }
|
| +
|
| mSections.add(mFolderSection);
|
| - mSections.add(mBookmarkDividerSection);
|
| +
|
| + if (mShouldShowDividers) {
|
| + mBookmarkDividerSection = new ArrayList<>();
|
| + mSections.add(mBookmarkDividerSection);
|
| + }
|
| +
|
| mSections.add(mBookmarkSection);
|
| }
|
|
|
| @@ -143,6 +162,8 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
| }
|
|
|
| private void updateDividerSections() {
|
| + if (!mShouldShowDividers) return;
|
| +
|
| mFolderDividerSection.clear();
|
| mBookmarkDividerSection.clear();
|
|
|
| @@ -161,6 +182,18 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
| assert section == mFolderSection || section == mBookmarkSection;
|
| section.remove(toSectionPosition(position));
|
| notifyItemRemoved(position);
|
| +
|
| + if (section == mBookmarkSection && !mBookmarkSection.isEmpty()) {
|
| + for (BookmarkRow row : mBookmarkRows) {
|
| + BookmarkId id = row.getItem();
|
| + setBackgroundResourceForBookmarkRow(row, id);
|
| + }
|
| + } else if (!mFolderSection.isEmpty()) {
|
| + for (BookmarkRow row : mFolderRows) {
|
| + BookmarkId id = row.getItem();
|
| + setBackgroundResourceForFolderRow(row, id);
|
| + }
|
| + }
|
| }
|
|
|
| // RecyclerView.Adapter implementation.
|
| @@ -207,11 +240,13 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
| BookmarkFolderRow folder = (BookmarkFolderRow) LayoutInflater.from(
|
| parent.getContext()).inflate(R.layout.bookmark_folder_row, parent, false);
|
| folder.onBookmarkDelegateInitialized(mDelegate);
|
| + mFolderRows.add(folder);
|
| return new ItemViewHolder(folder);
|
| case BOOKMARK_VIEW:
|
| BookmarkItemRow item = (BookmarkItemRow) LayoutInflater.from(
|
| parent.getContext()).inflate(R.layout.bookmark_item_row, parent, false);
|
| item.onBookmarkDelegateInitialized(mDelegate);
|
| + mBookmarkRows.add(item);
|
| return new ItemViewHolder(item);
|
| default:
|
| assert false;
|
| @@ -230,9 +265,11 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
| break;
|
| case FOLDER_VIEW:
|
| ((BookmarkRow) holder.itemView).setBookmarkId(id);
|
| + setBackgroundResourceForFolderRow(((BookmarkRow) holder.itemView), id);
|
| break;
|
| case BOOKMARK_VIEW:
|
| ((BookmarkRow) holder.itemView).setBookmarkId(id);
|
| + setBackgroundResourceForBookmarkRow((BookmarkRow) holder.itemView, id);
|
| break;
|
| default:
|
| assert false : "View type not supported!";
|
| @@ -305,4 +342,14 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
| public BookmarkDelegate getDelegateForTesting() {
|
| return mDelegate;
|
| }
|
| +
|
| + private void setBackgroundResourceForBookmarkRow(BookmarkRow row, BookmarkId id) {
|
| + row.setBackgroundResourceForGroupPosition(id.equals(mBookmarkSection.get(0)),
|
| + id.equals(mBookmarkSection.get(mBookmarkSection.size() - 1)));
|
| + }
|
| +
|
| + private void setBackgroundResourceForFolderRow(BookmarkRow row, BookmarkId id) {
|
| + row.setBackgroundResourceForGroupPosition(id.equals(mFolderSection.get(0)),
|
| + id.equals(mFolderSection.get(mFolderSection.size() - 1)));
|
| + }
|
| }
|
|
|