OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.download.ui; | 5 package org.chromium.chrome.browser.download.ui; |
6 | 6 |
7 import android.content.ComponentName; | 7 import android.content.ComponentName; |
8 import android.support.v7.widget.RecyclerView; | |
8 import android.support.v7.widget.RecyclerView.ViewHolder; | 9 import android.support.v7.widget.RecyclerView.ViewHolder; |
9 import android.text.TextUtils; | 10 import android.text.TextUtils; |
11 import android.util.Pair; | |
10 import android.view.LayoutInflater; | 12 import android.view.LayoutInflater; |
13 import android.view.View; | |
11 import android.view.ViewGroup; | 14 import android.view.ViewGroup; |
12 | 15 |
13 import org.chromium.base.ObserverList; | 16 import org.chromium.base.ObserverList; |
14 import org.chromium.base.metrics.RecordHistogram; | 17 import org.chromium.base.metrics.RecordHistogram; |
15 import org.chromium.base.metrics.RecordUserAction; | 18 import org.chromium.base.metrics.RecordUserAction; |
16 import org.chromium.chrome.R; | 19 import org.chromium.chrome.R; |
17 import org.chromium.chrome.browser.download.DownloadItem; | 20 import org.chromium.chrome.browser.download.DownloadItem; |
18 import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper; | 21 import org.chromium.chrome.browser.download.DownloadSharedPreferenceHelper; |
19 import org.chromium.chrome.browser.download.ui.BackendProvider.DownloadDelegate; | 22 import org.chromium.chrome.browser.download.ui.BackendProvider.DownloadDelegate; |
20 import org.chromium.chrome.browser.download.ui.BackendProvider.OfflinePageDelega te; | 23 import org.chromium.chrome.browser.download.ui.BackendProvider.OfflinePageDelega te; |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
197 totalSize += mIncognitoDownloadItems.getTotalBytes(); | 200 totalSize += mIncognitoDownloadItems.getTotalBytes(); |
198 totalSize += mOfflinePageItems.getTotalBytes(); | 201 totalSize += mOfflinePageItems.getTotalBytes(); |
199 return totalSize; | 202 return totalSize; |
200 } | 203 } |
201 | 204 |
202 @Override | 205 @Override |
203 protected int getTimedItemViewResId() { | 206 protected int getTimedItemViewResId() { |
204 return R.layout.date_view; | 207 return R.layout.date_view; |
205 } | 208 } |
206 | 209 |
210 private static class OfflineGroupHeaderViewHolder extends RecyclerView.ViewH older { | |
211 private OfflineGroupHeaderView mView; | |
212 | |
213 public OfflineGroupHeaderViewHolder(View view) { | |
214 super(view); | |
215 mView = (OfflineGroupHeaderView) view; | |
216 } | |
217 | |
218 public OfflineGroupHeaderView getView() { | |
219 return mView; | |
220 } | |
221 } | |
222 | |
223 @Override | |
224 public final RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, in t viewType) { | |
225 if (viewType == TYPE_SUBSECTION_HEADER) { | |
226 return new OfflineGroupHeaderViewHolder( | |
Theresa
2017/02/10 00:55:12
For consistency with how we create headers, DateDi
shaktisahu
2017/02/10 21:30:24
Good idea! Thanks.
| |
227 LayoutInflater.from(parent.getContext()) | |
228 .inflate(R.layout.offline_download_header, parent, f alse)); | |
229 } else { | |
230 return super.onCreateViewHolder(parent, viewType); | |
231 } | |
232 } | |
233 | |
234 @Override | |
235 public final void onBindViewHolder(RecyclerView.ViewHolder holder, int posit ion) { | |
236 if (holder instanceof OfflineGroupHeaderViewHolder) { | |
237 Pair<ItemGroup, Integer> pair = getGroupAt(position); | |
238 DownloadItemGroup group = (DownloadItemGroup) pair.first; | |
239 OfflineGroupHeaderView offlineHeader = | |
240 ((OfflineGroupHeaderViewHolder) holder).getView(); | |
241 offlineHeader.bindGroupAndAdapter(group, this); | |
Theresa
2017/02/10 00:55:12
The adapter can be set when the OfflineGroupHeader
shaktisahu
2017/02/10 21:30:24
Done.
| |
242 } else { | |
243 super.onBindViewHolder(holder, position); | |
244 } | |
245 } | |
246 | |
207 @Override | 247 @Override |
208 public ViewHolder createViewHolder(ViewGroup parent) { | 248 public ViewHolder createViewHolder(ViewGroup parent) { |
209 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate( | 249 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate( |
210 R.layout.download_item_view, parent, false); | 250 R.layout.download_item_view, parent, false); |
211 v.setSelectionDelegate(getSelectionDelegate()); | 251 v.setSelectionDelegate(getSelectionDelegate()); |
212 mViews.add(v); | 252 mViews.add(v); |
213 return new DownloadHistoryItemViewHolder(v); | 253 return new DownloadHistoryItemViewHolder(v); |
214 } | 254 } |
215 | 255 |
216 @Override | 256 @Override |
217 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) { | 257 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) { |
218 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem; | 258 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem; |
219 | 259 |
220 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent; | 260 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent; |
221 holder.getItemView().displayItem(mBackendProvider, item); | 261 holder.getItemView().displayItem(mBackendProvider, item); |
222 } | 262 } |
223 | 263 |
264 public void expandSuggestedPagesHeader(DownloadItemGroup group) { | |
gone
2017/02/10 02:31:44
1) javadocs for public methods
2) This is basicall
shaktisahu
2017/02/10 21:30:24
Done. Thanks!
| |
265 group.setIsSuggestedOfflinePagesSectionExpanded(true); | |
266 computeItemCount(); | |
267 setGroupPositions(); | |
268 notifyDataSetChanged(); | |
269 } | |
270 | |
271 public void collapseSuggestedPagesHeader(DownloadItemGroup group) { | |
272 group.setIsSuggestedOfflinePagesSectionExpanded(false); | |
273 computeItemCount(); | |
274 setGroupPositions(); | |
275 notifyDataSetChanged(); | |
276 } | |
277 | |
278 @Override | |
279 protected ItemGroup createGroup(long timeStamp) { | |
280 ItemGroup group = new DownloadItemGroup(timeStamp); | |
281 return group; | |
282 } | |
283 | |
224 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */ | 284 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */ |
225 public void onDownloadItemCreated(DownloadItem item) { | 285 public void onDownloadItemCreated(DownloadItem item) { |
226 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); | 286 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); |
227 if (isOffTheRecord && !mShowOffTheRecord) return; | 287 if (isOffTheRecord && !mShowOffTheRecord) return; |
228 | 288 |
229 BackendItems list = getDownloadItemList(isOffTheRecord); | 289 BackendItems list = getDownloadItemList(isOffTheRecord); |
230 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; | 290 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; |
231 | 291 |
232 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); | 292 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); |
233 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); | 293 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
476 itemCounts[DownloadFilter.FILTER_VIDEO]); | 536 itemCounts[DownloadFilter.FILTER_VIDEO]); |
477 } | 537 } |
478 | 538 |
479 private void recordTotalDownloadCountHistogram() { | 539 private void recordTotalDownloadCountHistogram() { |
480 // The total count intentionally leaves out incognito downloads. This sh ould be revisited | 540 // The total count intentionally leaves out incognito downloads. This sh ould be revisited |
481 // if/when incognito downloads are persistently available in downloads h ome. | 541 // if/when incognito downloads are persistently available in downloads h ome. |
482 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total", | 542 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total", |
483 mRegularDownloadItems.size() + mOfflinePageItems.size()); | 543 mRegularDownloadItems.size() + mOfflinePageItems.size()); |
484 } | 544 } |
485 } | 545 } |
OLD | NEW |