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.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() {

Loading…
Cancel
Save