From f1cffcc70438e5003d93ff4123ff43b57f7bd8ea Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 27 Jun 2012 11:33:45 -0700 Subject: [PATCH] Introduced a filter mode spec to replace TLA subclasses. Unfinished --- .../astrid/people/PeopleFilterMode.java | 53 ++++++++++++ .../astrid/people/PeopleViewActivity.java | 80 ------------------- .../astrid/activity/FilterModeSpec.java | 16 ++++ .../astrid/activity/TaskListActivity.java | 32 +++----- 4 files changed, 82 insertions(+), 99 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java delete mode 100644 astrid/plugin-src/com/todoroo/astrid/people/PeopleViewActivity.java create mode 100644 astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java new file mode 100644 index 000000000..c14e60c7c --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java @@ -0,0 +1,53 @@ +package com.todoroo.astrid.people; + +import android.content.Context; + +import com.todoroo.astrid.activity.FilterListFragment; +import com.todoroo.astrid.activity.FilterModeSpec; +import com.todoroo.astrid.activity.TaskListFragment; +import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.api.FilterListItem; +import com.todoroo.astrid.api.FilterWithUpdate; +import com.todoroo.astrid.helper.AsyncImageView; +import com.todoroo.astrid.ui.MainMenuPopover; + +public class PeopleFilterMode implements FilterModeSpec { + + private AsyncImageView imageView; + + @Override + public Filter getDefaultFilter(Context context) { + Filter defaultFilter = PeopleFilterExposer.mySharedTasks(context); + return defaultFilter; + } + + @Override + public Class getFilterListClass() { + return PeopleListFragment.class; + } + + @Override + public void onFilterItemClickedCallback(FilterListItem item) { + if (imageView == null) + return; + if (item instanceof FilterWithUpdate) + imageView.setUrl(((FilterWithUpdate) item).imageUrl); + else + imageView.setUrl(null); + } + + public void setImageView(AsyncImageView imageView) { + this.imageView = imageView; + } + + @Override + public int[] getForbiddenMenuItems() { + return FORBIDDEN_MENU_ITEMS; + } + + private static final int[] FORBIDDEN_MENU_ITEMS = { + TaskListFragment.MENU_NEW_FILTER_ID, + TaskListFragment.MENU_ADDONS_ID, + MainMenuPopover.MAIN_MENU_ITEM_FRIENDS + }; +} diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PeopleViewActivity.java b/astrid/plugin-src/com/todoroo/astrid/people/PeopleViewActivity.java deleted file mode 100644 index 53a4b3ad3..000000000 --- a/astrid/plugin-src/com/todoroo/astrid/people/PeopleViewActivity.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.todoroo.astrid.people; - -import android.content.Intent; -import android.os.Bundle; - -import com.timsu.astrid.R; -import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.astrid.activity.FilterListFragment; -import com.todoroo.astrid.activity.TaskListActivity; -import com.todoroo.astrid.activity.TaskListFragment; -import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.api.FilterListItem; -import com.todoroo.astrid.api.FilterWithUpdate; -import com.todoroo.astrid.helper.AsyncImageView; -import com.todoroo.astrid.ui.MainMenuPopover; - -public class PeopleViewActivity extends TaskListActivity { - - private AsyncImageView imageView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - imageView = (AsyncImageView) findViewById(R.id.person_image); - imageView.setDefaultImageResource(R.drawable.icn_default_person_image); - } - - @Override - protected int getContentView() { - return R.layout.people_view_wrapper_activity; - } - - @Override - protected Filter getDefaultFilter() { - Filter defaultFilter = PeopleFilterExposer.mySharedTasks(this); - return defaultFilter; - } - - @Override - protected Class getFilterListClass() { - return PeopleListFragment.class; - } - - @Override - protected int getHeaderView() { - return R.layout.header_people_view; - } - - @Override - public boolean onFilterItemClicked(FilterListItem item) { - boolean result = super.onFilterItemClicked(item); - if (result && item instanceof FilterWithUpdate) - imageView.setUrl(((FilterWithUpdate) item).imageUrl); - else - imageView.setUrl(null); - return result; - } - - public static final int[] FORBIDDEN_MENU_ITEMS = { - TaskListFragment.MENU_NEW_FILTER_ID, - TaskListFragment.MENU_ADDONS_ID, - MainMenuPopover.MAIN_MENU_ITEM_FRIENDS - }; - - @Override - public boolean shouldAddMenuItem(int itemId) { - return AndroidUtilities.indexOf(FORBIDDEN_MENU_ITEMS, itemId) < 0; - } - - @Override - public void mainMenuItemSelected(int item, Intent customIntent) { - if (item == MainMenuPopover.MAIN_MENU_ITEM_LISTS) { - finish(); - return; - } - - super.mainMenuItemSelected(item, customIntent); - } -} diff --git a/astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java b/astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java new file mode 100644 index 000000000..256d2a754 --- /dev/null +++ b/astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java @@ -0,0 +1,16 @@ +package com.todoroo.astrid.activity; + +import android.content.Context; + +import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.api.FilterListItem; + + +public interface FilterModeSpec { + + public int[] getForbiddenMenuItems(); + public Class getFilterListClass(); + public Filter getDefaultFilter(Context context); + public void onFilterItemClickedCallback(FilterListItem item); + +} diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index 817e65489..81e91b103 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -42,14 +42,13 @@ import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.people.PeopleFilterMode; import com.todoroo.astrid.people.PeopleListFragment; -import com.todoroo.astrid.people.PeopleViewActivity; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.abtesting.ABTestEventReportingService; import com.todoroo.astrid.tags.TagService; -import com.todoroo.astrid.tags.reusable.FeaturedListActivity; import com.todoroo.astrid.tags.reusable.FeaturedListFragment; import com.todoroo.astrid.ui.DateChangedAlerts; import com.todoroo.astrid.ui.FragmentPopover; @@ -83,7 +82,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener private ImageView mainMenu; private Button commentsButton; private int filterMode; - private int[] forbiddenMenuItems = {}; + private FilterModeSpec filterModeSpec; private TaskListFragmentPager tlfPager; private TaskListFragmentPagerAdapter tlfPagerAdapter; @@ -323,7 +322,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener }); if (isTablet) - refreshMainMenuForFilterMode(filterMode); + mainMenuPopover.refreshFixedItems(); } private void setupPopoverWithFragment(FragmentPopover popover, Fragment frag, LayoutParams params) { @@ -359,7 +358,9 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener if (tef != null) onBackPressed(); - return super.onFilterItemClicked(item); + boolean result = super.onFilterItemClicked(item); + filterModeSpec.onFilterItemClickedCallback(item); + return result; } private void setListsDropdownSelected(boolean selected) { @@ -630,7 +631,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener @Override public boolean shouldAddMenuItem(int itemId) { - return AndroidUtilities.indexOf(forbiddenMenuItems, itemId) < 0; + return AndroidUtilities.indexOf(filterModeSpec.getForbiddenMenuItems(), itemId) < 0; } @Override @@ -677,7 +678,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener private void setFilterMode(int mode) { filterMode = mode; - refreshMainMenuForFilterMode(mode); + filterModeSpec = getFilterModeSpec(); + mainMenuPopover.refreshFixedItems(); if (fragmentLayout == LAYOUT_SINGLE) { createListsPopover(); setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0, @@ -690,21 +692,13 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener getIntent().putExtra(FILTER_MODE, mode); } - private void refreshMainMenuForFilterMode(int mode) { - switch (mode) { + private FilterModeSpec getFilterModeSpec() { + switch(filterMode) { case FILTER_MODE_PEOPLE: - forbiddenMenuItems = PeopleViewActivity.FORBIDDEN_MENU_ITEMS; - break; - case FILTER_MODE_FEATURED: - forbiddenMenuItems = FeaturedListActivity.FORBIDDEN_MENU_ITEMS; - break; - case FILTER_MODE_NORMAL: + return new PeopleFilterMode(); default: - forbiddenMenuItems = new int[0]; - break; + return null; } - - mainMenuPopover.refreshFixedItems(); } public MainMenuPopover getMainMenuPopover() {