| 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;
|
| + }
|
| +}
|
|
|