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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryItemViewHolder.java

Issue 2309503002: [Download Home] Pull out DownloadHistoryWrapper.ItemViewHolder (Closed)
Patch Set: Really uploading this time Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryItemViewHolder.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryItemViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryItemViewHolder.java
new file mode 100644
index 0000000000000000000000000000000000000000..0352799f1efb3892890141448355a79725033bbf
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryItemViewHolder.java
@@ -0,0 +1,104 @@
+// 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.download.ui;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.text.format.Formatter;
+import android.view.View;
+import android.widget.TextView;
+
+import org.chromium.base.VisibleForTesting;
+import org.chromium.chrome.R;
+import org.chromium.components.url_formatter.UrlFormatter;
+
+/** Holds onto a View that displays information about a downloaded file. */
+public class DownloadHistoryItemViewHolder
+ extends RecyclerView.ViewHolder implements ThumbnailProvider.ThumbnailRequest {
+ private final DownloadItemView mItemView;
+ private final TextView mFilenameView;
+ private final TextView mHostnameView;
+ private final TextView mFilesizeView;
+
+ private DownloadHistoryItemWrapper mItem;
+
+ public DownloadHistoryItemViewHolder(View itemView) {
+ super(itemView);
+
+ assert itemView instanceof DownloadItemView;
+ mItemView = (DownloadItemView) itemView;
+
+ mFilenameView = (TextView) itemView.findViewById(R.id.filename_view);
+ mHostnameView = (TextView) itemView.findViewById(R.id.hostname_view);
+ mFilesizeView = (TextView) itemView.findViewById(R.id.filesize_view);
+ }
+
+ @Override
+ public String getFilePath() {
+ return mItem == null ? null : mItem.getFilePath();
+ }
+
+ @Override
+ public void onThumbnailRetrieved(String filePath, Bitmap thumbnail) {
+ if (TextUtils.equals(getFilePath(), filePath) && thumbnail != null
+ && thumbnail.getWidth() != 0 && thumbnail.getHeight() != 0) {
+ mItemView.setThumbnailBitmap(thumbnail);
+ }
+ }
+
+ /** Set up the View for a particular download item. */
+ void displayItem(BackendProvider provider, DownloadHistoryItemWrapper item) {
+ // Cancel any previous thumbnail request for the previously displayed item.
+ ThumbnailProvider thumbnailProvider = provider.getThumbnailProvider();
+ thumbnailProvider.cancelRetrieval(this);
+
+ Context context = mFilesizeView.getContext();
+ mFilenameView.setText(item.getDisplayFileName());
+ mHostnameView.setText(
+ UrlFormatter.formatUrlForSecurityDisplay(item.getUrl(), false));
+ mFilesizeView.setText(
+ Formatter.formatFileSize(context, item.getFileSize()));
+ mItem = item;
+
+ // Asynchronously grab a thumbnail for the file if it might have one.
+ int fileType = item.getFilterType();
+ if (fileType == DownloadFilter.FILTER_IMAGE) {
+ thumbnailProvider.getThumbnail(this);
+ } else {
+ // TODO(dfalcantara): Get thumbnails for audio and video files when possible.
+ }
+
+ // Pick what icon to display for the item.
+ int iconResource = R.drawable.ic_drive_file_white_24dp;
+ switch (fileType) {
+ case DownloadFilter.FILTER_PAGE:
+ iconResource = R.drawable.ic_drive_site_white_24dp;
+ break;
+ case DownloadFilter.FILTER_VIDEO:
+ iconResource = R.drawable.ic_play_arrow_white_24dp;
+ break;
+ case DownloadFilter.FILTER_AUDIO:
+ iconResource = R.drawable.ic_music_note_white_24dp;
+ break;
+ case DownloadFilter.FILTER_IMAGE:
+ iconResource = R.drawable.ic_image_white_24dp;
+ break;
+ case DownloadFilter.FILTER_DOCUMENT:
+ iconResource = R.drawable.ic_drive_text_white_24dp;
+ break;
+ default:
+ }
+
+ // Initialize the DownloadItemView.
+ mItemView.initialize(item, iconResource);
+ }
+
+ @VisibleForTesting
+ public DownloadItemView getItemView() {
+ return mItemView;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698