From 57427e16d929b34a646dbcac0a16004f4a82cc9c Mon Sep 17 00:00:00 2001 From: Steve Howard Date: Mon, 27 Sep 2010 11:36:33 -0700 Subject: Ensure that downloads UI switches to/from empty view as needed Change-Id: I0eef5efd7affc34c465ce04234713874c8d6937e Bug: 3038070 --- .../providers/downloads/ui/DownloadList.java | 41 +++++++++++++++++----- 1 file changed, 33 insertions(+), 8 deletions(-) (limited to 'ui/src') 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); } } -- cgit v1.2.3