diff options
Diffstat (limited to 'src/com/android/browser/BrowserDownloadAdapter.java')
-rw-r--r-- | src/com/android/browser/BrowserDownloadAdapter.java | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/src/com/android/browser/BrowserDownloadAdapter.java b/src/com/android/browser/BrowserDownloadAdapter.java deleted file mode 100644 index 38b83fe..0000000 --- a/src/com/android/browser/BrowserDownloadAdapter.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -package com.android.browser; - -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.res.Resources; -import android.database.Cursor; -import android.drm.mobile1.DrmRawContent; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.provider.Downloads; -import android.text.format.Formatter; -import android.view.View; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.ResourceCursorAdapter; -import android.widget.TextView; - -import java.io.File; -import java.text.DateFormat; -import java.util.Date; -import java.util.List; - -/** - * This class is used to represent the data for the download list box. The only - * real work done by this class is to construct a custom view for the line - * items. - */ -public class BrowserDownloadAdapter extends ResourceCursorAdapter { - - private int mFilenameColumnId; - private int mTitleColumnId; - private int mDescColumnId; - private int mStatusColumnId; - private int mTotalBytesColumnId; - private int mCurrentBytesColumnId; - private int mMimetypeColumnId; - private int mDateColumnId; - - public BrowserDownloadAdapter(Context context, int layout, Cursor c) { - super(context, layout, c); - mFilenameColumnId = c.getColumnIndexOrThrow(Downloads._DATA); - mTitleColumnId = c.getColumnIndexOrThrow(Downloads.TITLE); - mDescColumnId = c.getColumnIndexOrThrow(Downloads.DESCRIPTION); - mStatusColumnId = c.getColumnIndexOrThrow(Downloads.STATUS); - mTotalBytesColumnId = c.getColumnIndexOrThrow(Downloads.TOTAL_BYTES); - mCurrentBytesColumnId = - c.getColumnIndexOrThrow(Downloads.CURRENT_BYTES); - mMimetypeColumnId = c.getColumnIndexOrThrow(Downloads.MIMETYPE); - mDateColumnId = c.getColumnIndexOrThrow(Downloads.LAST_MODIFICATION); - } - - @Override - public void bindView(View view, Context context, Cursor cursor) { - Resources r = context.getResources(); - - // Retrieve the icon for this download - String mimeType = cursor.getString(mMimetypeColumnId); - ImageView iv = (ImageView) view.findViewById(R.id.download_icon); - if (DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING.equalsIgnoreCase(mimeType)) { - iv.setImageResource(R.drawable.ic_launcher_drm_file); - } else if (mimeType == null) { - iv.setVisibility(View.INVISIBLE); - } else { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(Uri.fromParts("file", "", null), mimeType); - PackageManager pm = context.getPackageManager(); - List<ResolveInfo> list = pm.queryIntentActivities(intent, - PackageManager.MATCH_DEFAULT_ONLY); - if (list.size() > 0) { - Drawable icon = list.get(0).activityInfo.loadIcon(pm); - iv.setImageDrawable(icon); - iv.setVisibility(View.VISIBLE); - } else { - iv.setVisibility(View.INVISIBLE); - } - } - - TextView tv = (TextView) view.findViewById(R.id.download_title); - String title = cursor.getString(mTitleColumnId); - if (title == null) { - String fullFilename = cursor.getString(mFilenameColumnId); - if (fullFilename == null) { - title = r.getString(R.string.download_unknown_filename); - } else { - // We have a filename, so we can build a title from that - title = new File(fullFilename).getName(); - ContentValues values = new ContentValues(); - values.put(Downloads.TITLE, title); - // assume "_id" is the first column for the cursor - context.getContentResolver().update( - ContentUris.withAppendedId(Downloads.CONTENT_URI, - cursor.getLong(0)), values, null, null); - } - } - tv.setText(title); - - tv = (TextView) view.findViewById(R.id.domain); - tv.setText(cursor.getString(mDescColumnId)); - - long totalBytes = cursor.getLong(mTotalBytesColumnId); - - int status = cursor.getInt(mStatusColumnId); - if (Downloads.isStatusCompleted(status)) { // Download stopped - View v = view.findViewById(R.id.progress_text); - v.setVisibility(View.GONE); - - v = view.findViewById(R.id.download_progress); - v.setVisibility(View.GONE); - - tv = (TextView) view.findViewById(R.id.complete_text); - tv.setVisibility(View.VISIBLE); - if (Downloads.isStatusError(status)) { - tv.setText(getErrorText(status)); - } else { - tv.setText(r.getString(R.string.download_success, - Formatter.formatFileSize(mContext, totalBytes))); - } - - long time = cursor.getLong(mDateColumnId); - Date d = new Date(time); - DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); - tv = (TextView) view.findViewById(R.id.complete_date); - tv.setVisibility(View.VISIBLE); - tv.setText(df.format(d)); - - } else { // Download is still running - tv = (TextView) view.findViewById(R.id.progress_text); - tv.setVisibility(View.VISIBLE); - - View progress = view.findViewById(R.id.download_progress); - progress.setVisibility(View.VISIBLE); - - View v = view.findViewById(R.id.complete_date); - v.setVisibility(View.GONE); - - v = view.findViewById(R.id.complete_text); - v.setVisibility(View.GONE); - - if (status == Downloads.STATUS_PENDING) { - tv.setText(r.getText(R.string.download_pending)); - } else if (status == Downloads.STATUS_PENDING_PAUSED) { - tv.setText(r.getText(R.string.download_pending_network)); - } else { - ProgressBar pb = (ProgressBar) progress; - - StringBuilder sb = new StringBuilder(); - if (status == Downloads.STATUS_RUNNING) { - sb.append(r.getText(R.string.download_running)); - } else { - sb.append(r.getText(R.string.download_running_paused)); - } - if (totalBytes > 0) { - long currentBytes = cursor.getLong(mCurrentBytesColumnId); - int progressAmount = (int)(currentBytes * 100 / totalBytes); - sb.append(' '); - sb.append(progressAmount); - sb.append("% ("); - sb.append(Formatter.formatFileSize(mContext, currentBytes)); - sb.append("/"); - sb.append(Formatter.formatFileSize(mContext, totalBytes)); - sb.append(")"); - pb.setIndeterminate(false); - pb.setProgress(progressAmount); - } else { - pb.setIndeterminate(true); - } - tv.setText(sb.toString()); - } - } - - } - - /** - * Provide the resource id for the error string. - * @param status status of the download item - * @return resource id for the error string. - */ - public static int getErrorText(int status) { - switch (status) { - case Downloads.STATUS_NOT_ACCEPTABLE: - return R.string.download_not_acceptable; - - case Downloads.STATUS_LENGTH_REQUIRED: - return R.string.download_length_required; - - case Downloads.STATUS_PRECONDITION_FAILED: - return R.string.download_precondition_failed; - - case Downloads.STATUS_CANCELED: - return R.string.download_canceled; - - case Downloads.STATUS_FILE_ERROR: - return R.string.download_file_error; - - case Downloads.STATUS_BAD_REQUEST: - case Downloads.STATUS_UNKNOWN_ERROR: - default: - return R.string.download_error; - } - } -} |