diff options
author | Steve Howard <showard@google.com> | 2010-09-27 21:03:46 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-27 21:03:46 -0700 |
commit | 18ae76cd5020d04b2d9bf112cca099df05f31f7a (patch) | |
tree | 379e99a7228ee5af873b5cc7af62369b59e7aa46 | |
parent | bbf6a1c7fe3054c389d879fe7b4c60b5cbeaacee (diff) | |
parent | b281b2e6590941e53b0ef3d644e08c48d3367de3 (diff) | |
download | android_packages_providers_DownloadProvider-18ae76cd5020d04b2d9bf112cca099df05f31f7a.tar.gz android_packages_providers_DownloadProvider-18ae76cd5020d04b2d9bf112cca099df05f31f7a.tar.bz2 android_packages_providers_DownloadProvider-18ae76cd5020d04b2d9bf112cca099df05f31f7a.zip |
am b281b2e6: am 57427e16: Ensure that downloads UI switches to/from empty view as needed
Merge commit 'b281b2e6590941e53b0ef3d644e08c48d3367de3'
* commit 'b281b2e6590941e53b0ef3d644e08c48d3367de3':
Ensure that downloads UI switches to/from empty view as needed
-rw-r--r-- | ui/src/com/android/providers/downloads/ui/DownloadList.java | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index ac733901..cdfe0177 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -26,6 +26,7 @@ import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.database.ContentObserver; import android.database.Cursor; +import android.database.DataSetObserver; import android.net.DownloadManager; import android.net.Uri; import android.os.Bundle; @@ -78,6 +79,7 @@ public class DownloadList extends Activity private Cursor mSizeSortedCursor; private DownloadAdapter mSizeSortedAdapter; private MyContentObserver mContentObserver = new MyContentObserver(); + private MyDataSetObserver mDataSetObserver = new MyDataSetObserver(); private int mStatusColumnId; private int mIdColumnId; @@ -106,6 +108,15 @@ public class DownloadList extends Activity } } + private class MyDataSetObserver extends DataSetObserver { + @Override + public void onChanged() { + // may need to switch to or from the empty view + chooseListToShow(); + ensureSomeGroupIsExpanded(); + } + } + @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); @@ -142,19 +153,31 @@ public class DownloadList extends Activity mSizeSortedAdapter = new DownloadAdapter(this, mSizeSortedCursor, this); mSizeOrderedListView.setAdapter(mSizeSortedAdapter); - // have the first group be open by default - mDateOrderedListView.post(new Runnable() { - public void run() { - if (mDateSortedAdapter.getGroupCount() > 0) { - mDateOrderedListView.expandGroup(0); - } - } - }); + ensureSomeGroupIsExpanded(); } chooseListToShow(); } + /** + * If no group is expanded in the date-sorted list, expand the first one. + */ + private void ensureSomeGroupIsExpanded() { + mDateOrderedListView.post(new Runnable() { + public void run() { + if (mDateSortedAdapter.getGroupCount() == 0) { + return; + } + for (int group = 0; group < mDateSortedAdapter.getGroupCount(); group++) { + if (mDateOrderedListView.isGroupExpanded(group)) { + return; + } + } + mDateOrderedListView.expandGroup(0); + } + }); + } + private void setupViews() { setContentView(R.layout.download_list); setTitle(getText(R.string.download_title)); @@ -183,6 +206,7 @@ public class DownloadList extends Activity super.onResume(); if (haveCursors()) { mDateSortedCursor.registerContentObserver(mContentObserver); + mDateSortedCursor.registerDataSetObserver(mDataSetObserver); refresh(); } } @@ -192,6 +216,7 @@ public class DownloadList extends Activity super.onPause(); if (haveCursors()) { mDateSortedCursor.unregisterContentObserver(mContentObserver); + mDateSortedCursor.unregisterDataSetObserver(mDataSetObserver); } } |