diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/res/values/strings.xml | 6 | ||||
-rw-r--r-- | ui/src/com/android/providers/downloads/ui/DownloadAdapter.java | 12 | ||||
-rw-r--r-- | ui/src/com/android/providers/downloads/ui/DownloadList.java | 52 |
3 files changed, 43 insertions, 27 deletions
diff --git a/ui/res/values/strings.xml b/ui/res/values/strings.xml index bb3654af..6bd9f2c9 100644 --- a/ui/res/values/strings.xml +++ b/ui/res/values/strings.xml @@ -38,9 +38,9 @@ <!-- Status messages --> - <!-- Status indicating that the download has not yet begun. Appears for an individual item in - the download list. [CHAR LIMIT=11] --> - <string name="download_pending">Queued</string> + <!-- Status indicating that the download has been queued to start in the future. Appears for an + individual item in the download list. [CHAR LIMIT=11] --> + <string name="download_queued">Queued</string> <!-- Status indicating that the system is currently downloading the file. Appears for an individual item in the download list. [CHAR LIMIT=11] --> <string name="download_running">In progress</string> diff --git a/ui/src/com/android/providers/downloads/ui/DownloadAdapter.java b/ui/src/com/android/providers/downloads/ui/DownloadAdapter.java index c7d4c2cb..9c572538 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadAdapter.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadAdapter.java @@ -57,6 +57,7 @@ public class DownloadAdapter extends CursorAdapter { private int mTitleColumnId; private int mDescriptionColumnId; private int mStatusColumnId; + private int mReasonColumnId; private int mTotalBytesColumnId; private int mMediaTypeColumnId; private int mDateColumnId; @@ -76,6 +77,7 @@ public class DownloadAdapter extends CursorAdapter { mTitleColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TITLE); mDescriptionColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_DESCRIPTION); mStatusColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS); + mReasonColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_REASON); mTotalBytesColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES); mMediaTypeColumnId = cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE); mDateColumnId = @@ -150,11 +152,15 @@ public class DownloadAdapter extends CursorAdapter { return R.string.download_success; case DownloadManager.STATUS_PENDING: - return R.string.download_pending; - case DownloadManager.STATUS_RUNNING: - case DownloadManager.STATUS_PAUSED: return R.string.download_running; + + case DownloadManager.STATUS_PAUSED: + if (mCursor.getInt(mReasonColumnId) == DownloadManager.PAUSED_QUEUED_FOR_WIFI) { + return R.string.download_queued; + } else { + return R.string.download_running; + } } throw new IllegalStateException("Unknown status: " + mCursor.getInt(mStatusColumnId)); } diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index 4b3547c2..bb331534 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -85,7 +85,7 @@ public class DownloadList extends Activity private int mIdColumnId; private int mLocalUriColumnId; private int mMediaTypeColumnId; - private int mErrorCodeColumndId; + private int mReasonColumndId; private boolean mIsSortedBySize = false; private Set<Long> mSelectedIds = new HashSet<Long>(); @@ -94,8 +94,9 @@ public class DownloadList extends Activity * We keep track of when a dialog is being displayed for a pending download, because if that * download starts running, we want to immediately hide the dialog. */ - private Long mPendingDownloadId = null; - private AlertDialog mPendingDialog; + private Long mQueuedDownloadId = null; + private AlertDialog mQueuedDialog; + private class MyContentObserver extends ContentObserver { public MyContentObserver() { @@ -145,8 +146,8 @@ public class DownloadList extends Activity mDateSortedCursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_URI); mMediaTypeColumnId = mDateSortedCursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE); - mErrorCodeColumndId = - mDateSortedCursor.getColumnIndexOrThrow(DownloadManager.COLUMN_ERROR_CODE); + mReasonColumndId = + mDateSortedCursor.getColumnIndexOrThrow(DownloadManager.COLUMN_REASON); mDateSortedAdapter = new DateSortedDownloadAdapter(this, mDateSortedCursor, this); mDateOrderedListView.setAdapter(mDateSortedAdapter); @@ -359,19 +360,23 @@ public class DownloadList extends Activity long id = cursor.getInt(mIdColumnId); switch (cursor.getInt(mStatusColumnId)) { case DownloadManager.STATUS_PENDING: - mPendingDownloadId = id; - mPendingDialog = new AlertDialog.Builder(this) - .setTitle(R.string.dialog_title_not_available) - .setMessage(R.string.dialog_queued_body) - .setPositiveButton(R.string.keep_queued_download, null) - .setNegativeButton(R.string.remove_download, getDeleteClickHandler(id)) - .setOnCancelListener(this) - .show(); + case DownloadManager.STATUS_RUNNING: + sendRunningDownloadClickedBroadcast(id); break; - case DownloadManager.STATUS_RUNNING: case DownloadManager.STATUS_PAUSED: - sendRunningDownloadClickedBroadcast(id); + if (isPausedForWifi(cursor)) { + mQueuedDownloadId = id; + mQueuedDialog = new AlertDialog.Builder(this) + .setTitle(R.string.dialog_title_not_available) + .setMessage(R.string.dialog_queued_body) + .setPositiveButton(R.string.keep_queued_download, null) + .setNegativeButton(R.string.remove_download, getDeleteClickHandler(id)) + .setOnCancelListener(this) + .show(); + } else { + sendRunningDownloadClickedBroadcast(id); + } break; case DownloadManager.STATUS_SUCCESSFUL: @@ -388,7 +393,7 @@ public class DownloadList extends Activity * @return the appropriate error message for the failed download pointed to by cursor */ private String getErrorMessage(Cursor cursor) { - switch (cursor.getInt(mErrorCodeColumndId)) { + switch (cursor.getInt(mReasonColumndId)) { case DownloadManager.ERROR_FILE_ALREADY_EXISTS: if (isOnExternalStorage(cursor)) { return getString(R.string.dialog_file_already_exists); @@ -616,13 +621,18 @@ public class DownloadList extends Activity void handleDownloadsChanged() { checkSelectionForDeletedEntries(); - if (mPendingDownloadId != null && moveToDownload(mPendingDownloadId)) { - if (mDateSortedCursor.getInt(mStatusColumnId) != DownloadManager.STATUS_PENDING) { - mPendingDialog.cancel(); + if (mQueuedDownloadId != null && moveToDownload(mQueuedDownloadId)) { + if (mDateSortedCursor.getInt(mStatusColumnId) != DownloadManager.STATUS_PAUSED + || !isPausedForWifi(mDateSortedCursor)) { + mQueuedDialog.cancel(); } } } + private boolean isPausedForWifi(Cursor cursor) { + return cursor.getInt(mReasonColumndId) == DownloadManager.PAUSED_QUEUED_FOR_WIFI; + } + /** * Check if any of the selected downloads have been deleted from the downloads database, and * remove such downloads from the selection. @@ -662,7 +672,7 @@ public class DownloadList extends Activity */ @Override public void onCancel(DialogInterface dialog) { - mPendingDownloadId = null; - mPendingDialog = null; + mQueuedDownloadId = null; + mQueuedDialog = null; } } |