From 6689788047fc8b534820a0525766ecb5b71cfffe Mon Sep 17 00:00:00 2001 From: Tim Su Date: Sun, 25 Jul 2010 16:58:28 -0700 Subject: [PATCH] Now we save expansion settings --- .../astrid/locale/LocaleEditAlerts.java | 11 +++++--- .../astrid/activity/FilterListActivity.java | 11 +++++--- .../todoroo/astrid/adapter/FilterAdapter.java | 26 ++++++++++++++++--- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/locale/LocaleEditAlerts.java b/astrid/plugin-src/com/todoroo/astrid/locale/LocaleEditAlerts.java index b4341d532..d8db18120 100644 --- a/astrid/plugin-src/com/todoroo/astrid/locale/LocaleEditAlerts.java +++ b/astrid/plugin-src/com/todoroo/astrid/locale/LocaleEditAlerts.java @@ -182,14 +182,19 @@ public final class LocaleEditAlerts extends ExpandableListActivity { @Override public void onGroupExpand(int groupPosition) { FilterListItem item = (FilterListItem) adapter.getGroup(groupPosition); - if(item instanceof Filter) { + if(item instanceof Filter) adapter.setSelection(item); - } + else if(item instanceof FilterCategory) + adapter.saveExpansionSetting((FilterCategory) item, true); } @Override public void onGroupCollapse(int groupPosition) { - onGroupExpand(groupPosition); + FilterListItem item = (FilterListItem) adapter.getGroup(groupPosition); + if(item instanceof Filter) + adapter.setSelection(item); + else if(item instanceof FilterCategory) + adapter.saveExpansionSetting((FilterCategory) item, false); } /** diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java index 951975439..11efeb63c 100644 --- a/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/FilterListActivity.java @@ -15,19 +15,19 @@ import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.ContextMenu; -import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ContextMenu.ContextMenuInfo; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.ExpandableListView; -import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import android.widget.FrameLayout; import android.widget.TextView; -import android.widget.TextView.OnEditorActionListener; import android.widget.Toast; +import android.widget.ExpandableListView.ExpandableListContextMenuInfo; +import android.widget.TextView.OnEditorActionListener; import com.flurry.android.FlurryAgent; import com.timsu.astrid.R; @@ -39,6 +39,7 @@ import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.api.FilterCategory; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.SearchFilter; import com.todoroo.astrid.model.Task; @@ -215,12 +216,16 @@ public class FilterListActivity extends ExpandableListActivity { public void onGroupExpand(int groupPosition) { FilterListItem item = (FilterListItem) adapter.getGroup(groupPosition); onItemClicked(item); + if(item instanceof FilterCategory) + adapter.saveExpansionSetting((FilterCategory) item, true); } @Override public void onGroupCollapse(int groupPosition) { FilterListItem item = (FilterListItem) adapter.getGroup(groupPosition); onItemClicked(item); + if(item instanceof FilterCategory) + adapter.saveExpansionSetting((FilterCategory) item, false); } @Override diff --git a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java index 0c8d7e172..84b61770d 100644 --- a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java @@ -27,6 +27,7 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.FilterCategory; import com.todoroo.astrid.api.FilterListHeader; import com.todoroo.astrid.api.FilterListItem; +import com.todoroo.astrid.utility.Preferences; public class FilterAdapter extends BaseExpandableListAdapter { @@ -200,6 +201,10 @@ public class FilterAdapter extends BaseExpandableListAdapter { * ============================================================= receiver * ====================================================================== */ + private static final String createExpansionPreference(FilterCategory category) { + return "Expansion:" + category.listingTitle; //$NON-NLS-1$ + } + /** * Receiver which receives intents to add items to the filter list * @@ -233,21 +238,36 @@ public class FilterAdapter extends BaseExpandableListAdapter { } /** - * Expand the first category filter in this group + * Expand the category filters in this group according to preference * @param filters */ protected void expandList(Parcelable[] filters) { for(Parcelable filter : filters) { if(filter instanceof FilterCategory) { - for(int i = 0; i < getGroupCount(); i++) + String preference = createExpansionPreference((FilterCategory) filter); + if(!Preferences.getBoolean(preference, true)) + continue; + + int count = getGroupCount(); + for(int i = 0; i < count; i++) if(getGroup(i) == filter) { listView.expandGroup(i); - return; + break; } } } } + /** + * Call to save user preference for whether a node is expanded + * @param category + * @param expanded + */ + public void saveExpansionSetting(FilterCategory category, boolean expanded) { + String preference = createExpansionPreference(category); + Preferences.setBoolean(preference, expanded); + } + /** * Broadcast a request for lists. The request is sent to every * application registered to listen for this broadcast. Each application