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))); |
+ } |
} |