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 int getOfflineGroupHeaderResId() { | |
211 return R.layout.offline_download_header; | |
Theresa
2017/02/03 19:53:06
Since this is only called in one place I think it'
shaktisahu
2017/02/04 18:57:43
Done.
| |
212 } | |
213 | |
214 private static class OfflineGroupHeaderViewHolder extends RecyclerView.ViewH older { | |
215 private OfflineGroupHeaderView mView; | |
216 | |
217 public OfflineGroupHeaderViewHolder(View view) { | |
218 super(view); | |
219 mView = (OfflineGroupHeaderView) view; | |
220 } | |
221 | |
222 public OfflineGroupHeaderView getView() { | |
223 return mView; | |
224 } | |
225 } | |
226 | |
227 @Override | |
228 public final RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, in t viewType) { | |
229 if (viewType == TYPE_SUGGESTED_OFFLINE_PAGES_HEADER) { | |
230 return new OfflineGroupHeaderViewHolder( | |
231 LayoutInflater.from(parent.getContext()) | |
232 .inflate(getOfflineGroupHeaderResId(), parent, false )); | |
233 } else { | |
234 return super.onCreateViewHolder(parent, viewType); | |
235 } | |
236 } | |
237 | |
238 @Override | |
239 public final void onBindViewHolder(RecyclerView.ViewHolder holder, int posit ion) { | |
240 if (holder instanceof OfflineGroupHeaderViewHolder) { | |
241 Pair<ItemGroup, Integer> pair = getGroupAt(position); | |
242 DownloadItemGroup group = (DownloadItemGroup) pair.first; | |
243 OfflineGroupHeaderView offlineView = ((OfflineGroupHeaderViewHolder) holder).getView(); | |
244 offlineView.bindGroupAndAdapter(group, this); | |
245 offlineView.updateTitleText(group.getSuggestedOfflinePageCount()); | |
246 } else { | |
247 super.onBindViewHolder(holder, position); | |
248 } | |
249 } | |
250 | |
207 @Override | 251 @Override |
208 public ViewHolder createViewHolder(ViewGroup parent) { | 252 public ViewHolder createViewHolder(ViewGroup parent) { |
209 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate( | 253 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo ntext()).inflate( |
210 R.layout.download_item_view, parent, false); | 254 R.layout.download_item_view, parent, false); |
211 v.setSelectionDelegate(getSelectionDelegate()); | 255 v.setSelectionDelegate(getSelectionDelegate()); |
212 mViews.add(v); | 256 mViews.add(v); |
213 return new DownloadHistoryItemViewHolder(v); | 257 return new DownloadHistoryItemViewHolder(v); |
214 } | 258 } |
215 | 259 |
216 @Override | 260 @Override |
217 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) { | 261 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt em) { |
218 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem; | 262 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim edItem; |
219 | 263 |
220 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent; | 264 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c urrent; |
221 holder.getItemView().displayItem(mBackendProvider, item); | 265 holder.getItemView().displayItem(mBackendProvider, item); |
222 } | 266 } |
223 | 267 |
268 public void expandSuggestedPagesHeader(DownloadItemGroup group) { | |
269 group.setIsSuggestedOfflinePagesSectionExpanded(true); | |
270 computeItemCount(); | |
271 setGroupPositions(); | |
272 notifyDataSetChanged(); | |
273 } | |
274 | |
275 public void collapseSuggestedPagesHeader(DownloadItemGroup group) { | |
276 group.setIsSuggestedOfflinePagesSectionExpanded(false); | |
277 computeItemCount(); | |
278 setGroupPositions(); | |
279 notifyDataSetChanged(); | |
280 } | |
281 | |
282 @Override | |
283 protected ItemGroup createGroup(long timeStamp) { | |
284 ItemGroup group = new DownloadItemGroup(timeStamp); | |
285 return group; | |
286 } | |
287 | |
224 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */ | 288 /** Called when a new DownloadItem has been created by the native DownloadMa nager. */ |
225 public void onDownloadItemCreated(DownloadItem item) { | 289 public void onDownloadItemCreated(DownloadItem item) { |
226 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); | 290 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); |
227 if (isOffTheRecord && !mShowOffTheRecord) return; | 291 if (isOffTheRecord && !mShowOffTheRecord) return; |
228 | 292 |
229 BackendItems list = getDownloadItemList(isOffTheRecord); | 293 BackendItems list = getDownloadItemList(isOffTheRecord); |
230 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; | 294 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; |
231 | 295 |
232 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); | 296 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); |
233 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); | 297 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
476 itemCounts[DownloadFilter.FILTER_VIDEO]); | 540 itemCounts[DownloadFilter.FILTER_VIDEO]); |
477 } | 541 } |
478 | 542 |
479 private void recordTotalDownloadCountHistogram() { | 543 private void recordTotalDownloadCountHistogram() { |
480 // The total count intentionally leaves out incognito downloads. This sh ould be revisited | 544 // 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. | 545 // if/when incognito downloads are persistently available in downloads h ome. |
482 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total", | 546 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou nt.Total", |
483 mRegularDownloadItems.size() + mOfflinePageItems.size()); | 547 mRegularDownloadItems.size() + mOfflinePageItems.size()); |
484 } | 548 } |
485 } | 549 } |
OLD | NEW |