Don't pop task lists

pull/491/merge
Alex Baker 9 years ago
parent 38919c352d
commit 59794ad3ac

@ -19,6 +19,7 @@ import android.support.v4.widget.DrawerLayout;
import android.support.v7.view.ActionMode; import android.support.v7.view.ActionMode;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.FrameLayout;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
@ -102,6 +103,8 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
@Inject TaskDao taskDao; @Inject TaskDao taskDao;
@BindView(R.id.drawer_layout) DrawerLayout drawerLayout; @BindView(R.id.drawer_layout) DrawerLayout drawerLayout;
@BindView(R.id.master) FrameLayout master;
@BindView(R.id.detail) FrameLayout detail;
private NavigationDrawerFragment navigationDrawer; private NavigationDrawerFragment navigationDrawer;
@ -156,58 +159,72 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
Intent intent = getIntent(); Intent intent = getIntent();
TaskEditFragment taskEditFragment = getTaskEditFragment(); TaskEditFragment taskEditFragment = getTaskEditFragment();
if (taskEditFragment != null) { if (taskEditFragment == null) {
if (intent.hasExtra(OPEN_FILTER) || intent.hasExtra(LOAD_FILTER) || intent.hasExtra(OPEN_TASK)) { hideDetailFragment();
} else if (intent.hasExtra(OPEN_FILTER) || intent.hasExtra(LOAD_FILTER) || intent.hasExtra(OPEN_TASK)) {
taskEditFragment.save(); taskEditFragment.save();
taskEditFragment = null; taskEditFinished();
} } else {
showDetailFragment();
} }
TaskListFragment taskListFragment; TaskListFragment taskListFragment = getTaskListFragment();
if (intent.hasExtra(OPEN_FILTER)) { if (intent.hasExtra(OPEN_FILTER)) {
Filter filter = intent.getParcelableExtra(OPEN_FILTER); Filter filter = intent.getParcelableExtra(OPEN_FILTER);
intent.removeExtra(OPEN_FILTER); intent.removeExtra(OPEN_FILTER);
taskListFragment = newTaskListFragment(filter); loadTaskListFragment(filter);
} else if (intent.hasExtra(LOAD_FILTER)) { } else if (intent.hasExtra(LOAD_FILTER)) {
Filter filter = defaultFilterProvider.getFilterFromPreference(intent.getStringExtra(LOAD_FILTER)); Filter filter = defaultFilterProvider.getFilterFromPreference(intent.getStringExtra(LOAD_FILTER));
intent.removeExtra(LOAD_FILTER); intent.removeExtra(LOAD_FILTER);
taskListFragment = newTaskListFragment(filter); loadTaskListFragment(filter);
} else if (taskListFragment == null) {
loadTaskListFragment(null);
} else { } else {
taskListFragment = getTaskListFragment(); applyTheme(taskListFragment);
}
} }
if (taskListFragment == null) { private void showDetailFragment() {
taskListFragment = newTaskListFragment(defaultFilterProvider.getDefaultFilter()); if (!isDoublePaneLayout()) {
detail.setVisibility(View.VISIBLE);
master.setVisibility(View.GONE);
}
} }
loadTaskListFragment(taskListFragment);
private void hideDetailFragment() {
if (isDoublePaneLayout()) { if (isDoublePaneLayout()) {
getSupportFragmentManager().beginTransaction() getSupportFragmentManager().beginTransaction()
.replace(R.id.detail_dual, new EmptyTaskEditFragment()) .replace(R.id.detail, new EmptyTaskEditFragment())
.commit(); .commit();
} else {
master.setVisibility(View.VISIBLE);
detail.setVisibility(View.GONE);
} }
if (taskEditFragment != null) {
loadTaskEditFragment(taskEditFragment);
} }
private void loadTaskListFragment(Filter filter) {
if (filter == null) {
filter = defaultFilterProvider.getDefaultFilter();
} }
TaskListFragment taskListFragment = newTaskListFragment(filter);
private void loadTaskListFragment(TaskListFragment taskListFragment) {
finishActionMode(); finishActionMode();
applyTheme(taskListFragment);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.master, taskListFragment, FRAG_TAG_TASK_LIST)
.commit();
}
private void applyTheme(TaskListFragment taskListFragment) {
filter = taskListFragment.filter; filter = taskListFragment.filter;
ThemeColor filterColor = getFilterColor(); ThemeColor filterColor = getFilterColor();
filterColor.applyToStatusBar(drawerLayout); filterColor.applyToStatusBar(drawerLayout);
filterColor.applyTaskDescription(this, filter.listingTitle); filterColor.applyTaskDescription(this, filter.listingTitle);
theme.withThemeColor(filterColor).applyToContext(this); theme.withThemeColor(filterColor).applyToContext(this);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction()
.replace(isDoublePaneLayout() ? R.id.master_dual : R.id.single_pane, taskListFragment, FRAG_TAG_TASK_LIST)
.addToBackStack(FRAG_TAG_TASK_LIST)
.commit();
} }
private ThemeColor getFilterColor() { private ThemeColor getFilterColor() {
@ -221,9 +238,13 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
getSupportFragmentManager() getSupportFragmentManager()
.beginTransaction() .beginTransaction()
.replace(isDoublePaneLayout() ? R.id.detail_dual : R.id.single_pane, taskEditFragment, TaskEditFragment.TAG_TASKEDIT_FRAGMENT) .replace(R.id.detail, taskEditFragment, TaskEditFragment.TAG_TASKEDIT_FRAGMENT)
.addToBackStack(TaskEditFragment.TAG_TASKEDIT_FRAGMENT) .addToBackStack(TaskEditFragment.TAG_TASKEDIT_FRAGMENT)
.commit(); .commit();
getSupportFragmentManager().executePendingTransactions();
showDetailFragment();
} }
private NavigationDrawerFragment getNavigationDrawerFragment() { private NavigationDrawerFragment getNavigationDrawerFragment() {
@ -469,6 +490,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
@Override @Override
public void taskEditFinished() { public void taskEditFinished() {
getSupportFragmentManager().popBackStackImmediate(TaskEditFragment.TAG_TASKEDIT_FRAGMENT, FragmentManager.POP_BACK_STACK_INCLUSIVE); getSupportFragmentManager().popBackStackImmediate(TaskEditFragment.TAG_TASKEDIT_FRAGMENT, FragmentManager.POP_BACK_STACK_INCLUSIVE);
hideDetailFragment();
hideKeyboard(); hideKeyboard();
} }

@ -13,7 +13,7 @@
<!-- Task List --> <!-- Task List -->
<FrameLayout <FrameLayout
android:id="@+id/master_dual" android:id="@+id/master"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="60" android:layout_weight="60"
@ -21,7 +21,7 @@
<!-- Task Edit --> <!-- Task Edit -->
<FrameLayout <FrameLayout
android:id="@+id/detail_dual" android:id="@+id/detail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="40" android:layout_weight="40"

@ -6,11 +6,19 @@
android:fitsSystemWindows="true"> android:fitsSystemWindows="true">
<FrameLayout <FrameLayout
android:id="@+id/single_pane" android:id="@+id/master"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:ignore="InconsistentLayout" /> tools:ignore="InconsistentLayout" />
<FrameLayout
android:id="@+id/detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
tools:ignore="InconsistentLayout" />
<include layout="@layout/navigation_drawer" /> <include layout="@layout/navigation_drawer" />
</android.support.v4.widget.DrawerLayout> </android.support.v4.widget.DrawerLayout>

Loading…
Cancel
Save