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;
}
private static final int[] FORBIDDEN_MENU_ITEMS = {
public static final int[] FORBIDDEN_MENU_ITEMS = {
TaskListFragment.MENU_NEW_FILTER_ID,
TaskListFragment.MENU_ADDONS_ID,
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_ADDONS_ID,
TaskListFragment.MENU_SORT_ID,
MainMenuPopover.MAIN_MENU_ITEM_FRIENDS,
MainMenuPopover.MAIN_MENU_ITEM_FEATURED_LISTS,
};

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

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

Loading…
Cancel
Save