Introduced a filter mode spec to replace TLA subclasses. Unfinished

pull/14/head
Sam Bosley 14 years ago
parent d75649702a
commit f1cffcc704

@ -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<? extends FilterListFragment> 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
};
}

@ -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<? extends FilterListFragment> 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);
}
}

@ -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<? extends FilterListFragment> getFilterListClass();
public Filter getDefaultFilter(Context context);
public void onFilterItemClickedCallback(FilterListItem item);
}

@ -42,14 +42,13 @@ import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.core.CustomFilterExposer;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.people.PeopleFilterMode;
import com.todoroo.astrid.people.PeopleListFragment; import com.todoroo.astrid.people.PeopleListFragment;
import com.todoroo.astrid.people.PeopleViewActivity;
import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
import com.todoroo.astrid.service.abtesting.ABTestEventReportingService; import com.todoroo.astrid.service.abtesting.ABTestEventReportingService;
import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.reusable.FeaturedListActivity;
import com.todoroo.astrid.tags.reusable.FeaturedListFragment; import com.todoroo.astrid.tags.reusable.FeaturedListFragment;
import com.todoroo.astrid.ui.DateChangedAlerts; import com.todoroo.astrid.ui.DateChangedAlerts;
import com.todoroo.astrid.ui.FragmentPopover; import com.todoroo.astrid.ui.FragmentPopover;
@ -83,7 +82,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private ImageView mainMenu; private ImageView mainMenu;
private Button commentsButton; private Button commentsButton;
private int filterMode; private int filterMode;
private int[] forbiddenMenuItems = {}; private FilterModeSpec filterModeSpec;
private TaskListFragmentPager tlfPager; private TaskListFragmentPager tlfPager;
private TaskListFragmentPagerAdapter tlfPagerAdapter; private TaskListFragmentPagerAdapter tlfPagerAdapter;
@ -323,7 +322,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
}); });
if (isTablet) if (isTablet)
refreshMainMenuForFilterMode(filterMode); mainMenuPopover.refreshFixedItems();
} }
private void setupPopoverWithFragment(FragmentPopover popover, Fragment frag, LayoutParams params) { private void setupPopoverWithFragment(FragmentPopover popover, Fragment frag, LayoutParams params) {
@ -359,7 +358,9 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
if (tef != null) if (tef != null)
onBackPressed(); onBackPressed();
return super.onFilterItemClicked(item); boolean result = super.onFilterItemClicked(item);
filterModeSpec.onFilterItemClickedCallback(item);
return result;
} }
private void setListsDropdownSelected(boolean selected) { private void setListsDropdownSelected(boolean selected) {
@ -630,7 +631,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
@Override @Override
public boolean shouldAddMenuItem(int itemId) { public boolean shouldAddMenuItem(int itemId) {
return AndroidUtilities.indexOf(forbiddenMenuItems, itemId) < 0; return AndroidUtilities.indexOf(filterModeSpec.getForbiddenMenuItems(), itemId) < 0;
} }
@Override @Override
@ -677,7 +678,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private void setFilterMode(int mode) { private void setFilterMode(int mode) {
filterMode = mode; filterMode = mode;
refreshMainMenuForFilterMode(mode); filterModeSpec = getFilterModeSpec();
mainMenuPopover.refreshFixedItems();
if (fragmentLayout == LAYOUT_SINGLE) { if (fragmentLayout == LAYOUT_SINGLE) {
createListsPopover(); createListsPopover();
setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0, setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0,
@ -690,21 +692,13 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
getIntent().putExtra(FILTER_MODE, mode); getIntent().putExtra(FILTER_MODE, mode);
} }
private void refreshMainMenuForFilterMode(int mode) { private FilterModeSpec getFilterModeSpec() {
switch (mode) { switch(filterMode) {
case FILTER_MODE_PEOPLE: case FILTER_MODE_PEOPLE:
forbiddenMenuItems = PeopleViewActivity.FORBIDDEN_MENU_ITEMS; return new PeopleFilterMode();
break;
case FILTER_MODE_FEATURED:
forbiddenMenuItems = FeaturedListActivity.FORBIDDEN_MENU_ITEMS;
break;
case FILTER_MODE_NORMAL:
default: default:
forbiddenMenuItems = new int[0]; return null;
break;
} }
mainMenuPopover.refreshFixedItems();
} }
public MainMenuPopover getMainMenuPopover() { public MainMenuPopover getMainMenuPopover() {

Loading…
Cancel
Save