Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ff9076a6e330bec6d3dcedcf29ce4b7d5fba6461 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java |
@@ -0,0 +1,71 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.ntp.cards; |
+ |
+import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager; |
+import org.chromium.chrome.browser.ntp.snippets.SnippetArticleListItem; |
+import org.chromium.chrome.browser.ntp.snippets.SnippetHeaderListItem; |
+import org.chromium.chrome.browser.ntp.snippets.SuggestionsCategoryStatus; |
+ |
+import java.util.ArrayList; |
+import java.util.List; |
+ |
+/** |
+ * A group of suggestions, with a header and a status card. |
+ */ |
+public class SuggestionsSection implements NewTabPageItemGroup { |
+ private final List<NewTabPageListItem> mItems; |
+ private final SnippetHeaderListItem mHeader; |
+ private StatusListItem mStatus; |
+ |
+ SuggestionsSection(List<SnippetArticleListItem> suggestions, |
+ @SuggestionsCategoryStatus int status, NewTabPageAdapter adapter, |
+ NewTabPageManager manager) { |
+ mItems = new ArrayList<>(); |
+ |
+ // TODO(mvanouwerkerk): Pass in the header text. |
+ mHeader = new SnippetHeaderListItem(); |
+ |
+ setSuggestions(suggestions, status, adapter, manager); |
+ } |
+ |
+ @Override |
+ public List<NewTabPageListItem> getItems() { |
+ return mItems; |
+ } |
+ |
+ public void dismissSuggestion(SnippetArticleListItem suggestion) { |
+ mItems.remove(suggestion); |
+ |
+ if (!hasSuggestions() && !mItems.contains(mStatus)) { |
+ mItems.add(mStatus); |
+ mHeader.setVisible(false); |
+ } |
+ } |
+ |
+ public boolean hasSuggestions() { |
+ for (NewTabPageListItem item : mItems) { |
+ if (item instanceof SnippetArticleListItem) return true; |
+ } |
+ return false; |
+ } |
+ |
+ public void setSuggestions(List<SnippetArticleListItem> suggestions, |
+ @SuggestionsCategoryStatus int status, NewTabPageAdapter adapter, |
+ NewTabPageManager manager) { |
+ mItems.clear(); |
+ |
+ mItems.add(mHeader); |
+ mHeader.setVisible(!suggestions.isEmpty()); |
+ |
+ mStatus = StatusListItem.create(status, adapter, manager); |
+ |
+ if (suggestions.isEmpty()) { |
+ mItems.add(mStatus); |
+ } else { |
+ mItems.addAll(suggestions); |
+ } |
+ } |
+} |