Toggle filter list fragments on phones and tablets without launching new activity. Bugs exist in the action bar display

pull/14/head
Sam Bosley 14 years ago
parent 8912fa0491
commit d75649702a

@ -57,7 +57,7 @@ public class PeopleViewActivity extends TaskListActivity {
return result; return result;
} }
private static final int[] FORBIDDEN_MENU_ITEMS = { public static final int[] FORBIDDEN_MENU_ITEMS = {
TaskListFragment.MENU_NEW_FILTER_ID, TaskListFragment.MENU_NEW_FILTER_ID,
TaskListFragment.MENU_ADDONS_ID, TaskListFragment.MENU_ADDONS_ID,
MainMenuPopover.MAIN_MENU_ITEM_FRIENDS MainMenuPopover.MAIN_MENU_ITEM_FRIENDS

@ -16,11 +16,9 @@ public class FeaturedListActivity extends TaskListActivity {
} }
private static final int[] FORBIDDEN_MENU_ITEMS = { public static final int[] FORBIDDEN_MENU_ITEMS = {
TaskListFragment.MENU_NEW_FILTER_ID, TaskListFragment.MENU_NEW_FILTER_ID,
TaskListFragment.MENU_ADDONS_ID, TaskListFragment.MENU_ADDONS_ID,
TaskListFragment.MENU_SORT_ID,
MainMenuPopover.MAIN_MENU_ITEM_FRIENDS,
MainMenuPopover.MAIN_MENU_ITEM_FEATURED_LISTS, MainMenuPopover.MAIN_MENU_ITEM_FEATURED_LISTS,
}; };

@ -83,6 +83,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 TaskListFragmentPager tlfPager; private TaskListFragmentPager tlfPager;
private TaskListFragmentPagerAdapter tlfPagerAdapter; private TaskListFragmentPagerAdapter tlfPagerAdapter;
@ -281,7 +282,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
listsNav.setOnClickListener(popupMenuClickListener); listsNav.setOnClickListener(popupMenuClickListener);
createListsPopover(); createListsPopover();
setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0, setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0,
getFilterListClass(), true, false)); getFilterFragmentClass(filterMode), true, false));
} }
} }
@ -629,7 +630,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
@Override @Override
public boolean shouldAddMenuItem(int itemId) { public boolean shouldAddMenuItem(int itemId) {
return true; return AndroidUtilities.indexOf(forbiddenMenuItems, itemId) < 0;
} }
@Override @Override
@ -637,7 +638,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
TaskListFragment tlf = getTaskListFragment(); TaskListFragment tlf = getTaskListFragment();
switch (item) { switch (item) {
case MainMenuPopover.MAIN_MENU_ITEM_LISTS: case MainMenuPopover.MAIN_MENU_ITEM_LISTS:
if (fragmentLayout == LAYOUT_SINGLE || filterMode == FILTER_MODE_NORMAL) if (filterMode == FILTER_MODE_NORMAL)
listsNav.performClick(); listsNav.performClick();
else else
setFilterMode(FILTER_MODE_NORMAL); setFilterMode(FILTER_MODE_NORMAL);
@ -646,20 +647,10 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
onSearchRequested(); onSearchRequested();
return; return;
case MainMenuPopover.MAIN_MENU_ITEM_FEATURED_LISTS: case MainMenuPopover.MAIN_MENU_ITEM_FEATURED_LISTS:
if (fragmentLayout != LAYOUT_SINGLE) { setFilterMode(FILTER_MODE_FEATURED);
setFilterMode(FILTER_MODE_FEATURED);
} else {
Intent featured = new Intent(this, FeaturedListActivity.class);
startActivity(featured);
}
return; return;
case MainMenuPopover.MAIN_MENU_ITEM_FRIENDS: case MainMenuPopover.MAIN_MENU_ITEM_FRIENDS:
if (fragmentLayout != LAYOUT_SINGLE) { setFilterMode(FILTER_MODE_PEOPLE);
setFilterMode(FILTER_MODE_PEOPLE);
} else {
Intent peopleIntent = new Intent(this, PeopleViewActivity.class);
startActivity(peopleIntent);
}
return; return;
case MainMenuPopover.MAIN_MENU_ITEM_SUGGESTIONS: case MainMenuPopover.MAIN_MENU_ITEM_SUGGESTIONS:
// Doesn't exist yet // Doesn't exist yet
@ -686,14 +677,34 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private void setFilterMode(int mode) { private void setFilterMode(int mode) {
filterMode = mode; filterMode = mode;
setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, R.id.filterlist_fragment_container,
getFilterFragmentClass(mode), false, true);
refreshMainMenuForFilterMode(mode); refreshMainMenuForFilterMode(mode);
if (fragmentLayout == LAYOUT_SINGLE) {
createListsPopover();
setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0,
getFilterFragmentClass(filterMode), true, true));
listsNav.performClick();
} else {
setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, R.id.filterlist_fragment_container,
getFilterFragmentClass(mode), false, true);
}
getIntent().putExtra(FILTER_MODE, mode); getIntent().putExtra(FILTER_MODE, mode);
} }
private void refreshMainMenuForFilterMode(int filterMode) { private void refreshMainMenuForFilterMode(int mode) {
// TODO: IMPLEMENT ME! switch (mode) {
case FILTER_MODE_PEOPLE:
forbiddenMenuItems = PeopleViewActivity.FORBIDDEN_MENU_ITEMS;
break;
case FILTER_MODE_FEATURED:
forbiddenMenuItems = FeaturedListActivity.FORBIDDEN_MENU_ITEMS;
break;
case FILTER_MODE_NORMAL:
default:
forbiddenMenuItems = new int[0];
break;
}
mainMenuPopover.refreshFixedItems();
} }
public MainMenuPopover getMainMenuPopover() { public MainMenuPopover getMainMenuPopover() {

@ -41,6 +41,7 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
private final LinearLayout bottomFixed; private final LinearLayout bottomFixed;
private final int rowLayout; private final int rowLayout;
private boolean suppressNextKeyEvent = false; private boolean suppressNextKeyEvent = false;
private final boolean isTablet;
public void setMenuListener(MainMenuListener listener) { public void setMenuListener(MainMenuListener listener) {
this.mListener = listener; this.mListener = listener;
@ -71,9 +72,11 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
topFixed = (LinearLayout) getContentView().findViewById(R.id.topFixedItems); topFixed = (LinearLayout) getContentView().findViewById(R.id.topFixedItems);
bottomFixed = (LinearLayout) getContentView().findViewById(R.id.bottomFixedItems); bottomFixed = (LinearLayout) getContentView().findViewById(R.id.bottomFixedItems);
this.isTablet = isTablet;
mListener = listener; mListener = listener;
addFixedItems(isTablet); addFixedItems();
} }
public boolean didInterceptTouch(KeyEvent event) { public boolean didInterceptTouch(KeyEvent event) {
@ -97,7 +100,7 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
super.setBackgroundDrawable(null); super.setBackgroundDrawable(null);
} }
private void addFixedItems(boolean isTablet) { private void addFixedItems() {
int themeFlags = isTablet ? ThemeService.FLAG_FORCE_DARK : 0; int themeFlags = isTablet ? ThemeService.FLAG_FORCE_DARK : 0;
addMenuItem(R.string.TLA_menu_lists, addMenuItem(R.string.TLA_menu_lists,
ThemeService.getDrawable(R.drawable.icn_menu_lists, themeFlags), ThemeService.getDrawable(R.drawable.icn_menu_lists, themeFlags),
@ -120,6 +123,12 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
MAIN_MENU_ITEM_SETTINGS, null, bottomFixed); // Settings item MAIN_MENU_ITEM_SETTINGS, null, bottomFixed); // Settings item
} }
public void refreshFixedItems() {
topFixed.removeAllViews();
bottomFixed.removeAllViews();
addFixedItems();
}
public void setFixedItemVisibility(int index, int visibility, boolean top) { public void setFixedItemVisibility(int index, int visibility, boolean top) {
LinearLayout container = top ? topFixed : bottomFixed; LinearLayout container = top ? topFixed : bottomFixed;
if (index < 0 || index >= container.getChildCount()) if (index < 0 || index >= container.getChildCount())

Loading…
Cancel
Save