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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadItemGroup.java

Issue 2670083002: [Download Home] Displaying offline page bundle per day (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.download.ui;
6
7 import org.chromium.chrome.browser.widget.DateDividedAdapter;
8 import org.chromium.chrome.browser.widget.DateDividedAdapter.TimedItem;
9
10 /**
11 * A bucket of downloaded items with the same date.
12 */
13 public class DownloadItemGroup extends DateDividedAdapter.ItemGroup {
gone 2017/02/02 23:59:48 This is confusing because the user can download of
shaktisahu 2017/02/04 18:57:42 Okay. I renamed everything with *OfflinePage* here
14 private int mNumOfflinePages;
gone 2017/02/02 23:59:48 mNumSuggestedOfflinePages or mNumAutomaticallyDown
shaktisahu 2017/02/04 18:57:42 Done.
15 private boolean mOfflinePagesExpanded;
gone 2017/02/02 23:59:48 mIsSuggestedOfflinePagesSectionExpanded / isSugges
shaktisahu 2017/02/04 18:57:42 Done.
16
17 // The header for the group containing offline pages.
gone 2017/02/02 23:59:48 1) Don't say there's a "group" inside a "group". 2
shaktisahu 2017/02/04 18:57:42 Done.
18 private TimedItem mOfflineHeader;
19
20 public DownloadItemGroup(long timestamp) {
21 super(timestamp);
22 mNumOfflinePages = 0;
23 mOfflinePagesExpanded = false;
24
25 mOfflineHeader = new TimedItem() {
gone 2017/02/02 23:59:47 This should only be created when it's actually nec
shaktisahu 2017/02/04 18:57:42 Done.
26 private Long mStableId;
27
28 @Override
29 public long getTimestamp() {
30 return getDate().getTime();
31 }
32
33 @Override
34 public long getStableId() {
35 if (mStableId == null) {
36 // Generate a stable ID based on timestamp.
37 mStableId = getTimestamp() & 0x0FFFFFFFF;
38 mStableId = (mStableId << 32) + ~(getTimestamp() & 0x0FFFFFF FF);
gone 2017/02/02 23:59:47 This should be more consistent with the stable IDs
shaktisahu 2017/02/04 18:57:42 Done.
39 }
40 return mStableId;
41 }
42 };
43 }
44
45 public boolean offlinePageExpanded() {
46 return mOfflinePagesExpanded;
47 }
48
49 public void setOfflinePageExpanded(boolean expanded) {
50 mOfflinePagesExpanded = expanded;
51 }
52
53 public int getOfflinePageCount() {
54 return mNumOfflinePages;
55 }
56
57 @Override
58 public void addItem(TimedItem item) {
59 super.addItem(item);
60 if (item.isOfflinePage()) {
61 mNumOfflinePages++;
62 }
63 }
64
65 @Override
66 public void removeItem(TimedItem item) {
67 super.removeItem(item);
68 if (item.isOfflinePage()) {
69 mNumOfflinePages--;
70 }
71 }
72
73 @Override
74 protected void setPositionForItems(int startIndex) {
75 int index = startIndex;
76 boolean firstOfflineItem = false;
77 for (TimedItem item : mItems) {
78 if (item.isOfflinePage()) {
79 if (!firstOfflineItem) {
80 index += 1;
81 firstOfflineItem = true;
82 }
83 if (!offlinePageExpanded()) continue;
84 }
85 item.setPosition(index);
86 index += 1;
87 }
88 }
89
90 @Override
91 public int size() {
92 int size = super.size();
93
94 if (mNumOfflinePages > 0) {
95 size += 1;
96 if (!offlinePageExpanded()) {
97 size -= mNumOfflinePages;
98 }
99 }
100
101 return size;
102 }
103
104 public long getOfflinePagesFileSize() {
105 long size = 0;
106 for (TimedItem item : mItems) {
107 if (item.isOfflinePage()) {
108 size += ((DownloadHistoryItemWrapper) item).getFileSize();
109 }
110 }
111 return size;
112 }
113
114 public boolean isOfflineHeader(int index) {
gone 2017/02/02 23:59:47 This is used only here. Make it private.
shaktisahu 2017/02/04 18:57:42 Done.
115 return index == (mItems.size() - mNumOfflinePages + 1) && mNumOfflinePag es > 0;
116 }
117
118 @Override
119 public TimedItem getItemAt(int index) {
120 // 0 is allocated to the date header. The list header has no items.
121 if (index == 0) return null;
122
123 sortIfNeeded();
124
125 // If the offline pages would start at the beginning of the group
126 /*if (mNumOfflinePages > 0) {
127 if (index == 1) return mOfflineHeader;
128
129 if (offlinePageExpanded()) {
130 return mItems.get(index - 2);
131 } else {
132 int newIndex = index - 2 + mNumOfflinePages;
133 return mItems.get(newIndex);
134 }
135 } else {
136 return mItems.get(index - 1);
137 }*/
138
139 // Offline pages start at the end of the group.
140 if (index <= mItems.size() - mNumOfflinePages) {
141 return mItems.get(index - 1);
142 } else {
143 if (mNumOfflinePages > 0 && index == mItems.size() - mNumOfflinePage s + 1) {
144 return mOfflineHeader;
145 } else if (offlinePageExpanded()) {
146 return mItems.get(index - 2);
147 } else {
148 System.out.println("shakti, index " + index + " total " + mItems .size()
149 + " offline " + mNumOfflinePages + " expanded " + offlin ePageExpanded());
150 assert false;
151 return null;
152 }
153 }
154 }
155
156 @Override
157 public int getItemViewType(int position) {
158 if (isOfflineHeader(position)) {
159 return DateDividedAdapter.TYPE_OFFLINE_HEADER;
160 } else {
161 return DateDividedAdapter.TYPE_NORMAL;
162 }
163 }
164
165 @Override
166 public int compareItem(TimedItem lhs, TimedItem rhs) {
167 if (lhs.isOfflinePage() && !rhs.isOfflinePage()) return 1;
168 if (!lhs.isOfflinePage() && rhs.isOfflinePage()) return -1;
169
170 return super.compareItem(lhs, rhs);
171 }
172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698