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 protected ViewHolder createSubsectionHeader(ViewGroup parent) { |
| 225 OfflineGroupHeaderView offlineHeader = |
| 226 (OfflineGroupHeaderView) LayoutInflater.from(parent.getContext()
) |
| 227 .inflate(R.layout.offline_download_header, parent, false
); |
| 228 offlineHeader.setAdapter(this); |
| 229 return new OfflineGroupHeaderViewHolder(offlineHeader); |
| 230 } |
| 231 |
| 232 @Override |
| 233 public final void onBindViewHolder(RecyclerView.ViewHolder holder, int posit
ion) { |
| 234 if (holder instanceof OfflineGroupHeaderViewHolder) { |
| 235 Pair<ItemGroup, Integer> pair = getGroupAt(position); |
| 236 DownloadItemGroup group = (DownloadItemGroup) pair.first; |
| 237 OfflineGroupHeaderView offlineHeader = |
| 238 ((OfflineGroupHeaderViewHolder) holder).getView(); |
| 239 offlineHeader.setGroup(group); |
| 240 } else { |
| 241 super.onBindViewHolder(holder, position); |
| 242 } |
| 243 } |
| 244 |
207 @Override | 245 @Override |
208 public ViewHolder createViewHolder(ViewGroup parent) { | 246 public ViewHolder createViewHolder(ViewGroup parent) { |
209 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo
ntext()).inflate( | 247 DownloadItemView v = (DownloadItemView) LayoutInflater.from(parent.getCo
ntext()).inflate( |
210 R.layout.download_item_view, parent, false); | 248 R.layout.download_item_view, parent, false); |
211 v.setSelectionDelegate(getSelectionDelegate()); | 249 v.setSelectionDelegate(getSelectionDelegate()); |
212 mViews.add(v); | 250 mViews.add(v); |
213 return new DownloadHistoryItemViewHolder(v); | 251 return new DownloadHistoryItemViewHolder(v); |
214 } | 252 } |
215 | 253 |
216 @Override | 254 @Override |
217 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt
em) { | 255 public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedIt
em) { |
218 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim
edItem; | 256 final DownloadHistoryItemWrapper item = (DownloadHistoryItemWrapper) tim
edItem; |
219 | 257 |
220 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c
urrent; | 258 DownloadHistoryItemViewHolder holder = (DownloadHistoryItemViewHolder) c
urrent; |
221 holder.getItemView().displayItem(mBackendProvider, item); | 259 holder.getItemView().displayItem(mBackendProvider, item); |
222 } | 260 } |
223 | 261 |
| 262 /** |
| 263 * Expands or collapses the suggested pages section header for a group. |
| 264 * @param group The item group associated. |
| 265 * @param expanded Whether the group should be shown as expanded or collapse
d. |
| 266 */ |
| 267 public void setSuggestedPagesHeaderState(DownloadItemGroup group, boolean ex
panded) { |
| 268 group.setIsSuggestedOfflinePagesSectionExpanded(expanded); |
| 269 computeItemCount(); |
| 270 setGroupPositions(); |
| 271 notifyDataSetChanged(); |
| 272 } |
| 273 |
| 274 @Override |
| 275 protected ItemGroup createGroup(long timeStamp) { |
| 276 return new DownloadItemGroup(timeStamp); |
| 277 } |
| 278 |
224 /** Called when a new DownloadItem has been created by the native DownloadMa
nager. */ | 279 /** Called when a new DownloadItem has been created by the native DownloadMa
nager. */ |
225 public void onDownloadItemCreated(DownloadItem item) { | 280 public void onDownloadItemCreated(DownloadItem item) { |
226 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); | 281 boolean isOffTheRecord = item.getDownloadInfo().isOffTheRecord(); |
227 if (isOffTheRecord && !mShowOffTheRecord) return; | 282 if (isOffTheRecord && !mShowOffTheRecord) return; |
228 | 283 |
229 BackendItems list = getDownloadItemList(isOffTheRecord); | 284 BackendItems list = getDownloadItemList(isOffTheRecord); |
230 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; | 285 assert list.findItemIndex(item.getId()) == BackendItems.INVALID_INDEX; |
231 | 286 |
232 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); | 287 DownloadItemWrapper wrapper = createDownloadItemWrapper(item); |
233 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); | 288 boolean wasAdded = addDownloadHistoryItemWrapper(wrapper); |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 itemCounts[DownloadFilter.FILTER_VIDEO]); | 531 itemCounts[DownloadFilter.FILTER_VIDEO]); |
477 } | 532 } |
478 | 533 |
479 private void recordTotalDownloadCountHistogram() { | 534 private void recordTotalDownloadCountHistogram() { |
480 // The total count intentionally leaves out incognito downloads. This sh
ould be revisited | 535 // 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. | 536 // if/when incognito downloads are persistently available in downloads h
ome. |
482 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou
nt.Total", | 537 RecordHistogram.recordCountHistogram("Android.DownloadManager.InitialCou
nt.Total", |
483 mRegularDownloadItems.size() + mOfflinePageItems.size()); | 538 mRegularDownloadItems.size() + mOfflinePageItems.size()); |
484 } | 539 } |
485 } | 540 } |
OLD | NEW |