From 52e7c018547c9fc1376b5ba16c585e9b836e550b Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Thu, 26 Jan 2012 12:25:44 -0800 Subject: [PATCH] Use flags instead of booleans for flags in task list wrapper --- .../astrid/activity/TaskListActivity.java | 1 + .../astrid/activity/TaskListWrapperActivity.java | 16 +++++++--------- astrid/src/com/todoroo/astrid/utility/Flags.java | 10 ++++++++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index e71bf3f78..1b6ad5dd4 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -764,6 +764,7 @@ public class TaskListActivity extends ListFragment implements OnScrollListener, // handle the result of voice recognition, put it into the textfield if (voiceInputAssistant.handleActivityResult(requestCode, resultCode, data)) { // if user wants, create the task directly (with defaultvalues) after saying it + Flags.set(Flags.TLA_RESUMED_FROM_VOICE_ADD); if (Preferences.getBoolean(R.string.p_voiceInputCreatesTask, false)) quickAddTask(quickAddBox.getText().toString(), true); super.onActivityResult(requestCode, resultCode, data); diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java index a420c29bd..525f94b1f 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListWrapperActivity.java @@ -24,6 +24,7 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.ui.FragmentPopover; +import com.todoroo.astrid.utility.Flags; public class TaskListWrapperActivity extends AstridWrapperActivity { @@ -35,8 +36,6 @@ public class TaskListWrapperActivity extends AstridWrapperActivity { private FragmentPopover listsPopover; private FragmentPopover editPopover; - private boolean fromTaskEdit = false; - private final OnClickListener popupMenuClickListener = new OnClickListener() { @Override public void onClick(View v) { @@ -51,9 +50,8 @@ public class TaskListWrapperActivity extends AstridWrapperActivity { TaskEditActivity tea = getTaskEditFragment(); if (tea != null) { try { - if (!fromTaskEdit) + if (!Flags.checkAndClear(Flags.TLA_DISMISSED_FROM_TASK_EDIT)) tea.save(false); - fromTaskEdit = false; } catch (IllegalStateException e) { // Save during pause, ignore it } @@ -190,16 +188,16 @@ public class TaskListWrapperActivity extends AstridWrapperActivity { super.onPostResume(); Filter savedFilter = getIntent().getParcelableExtra(TaskListActivity.TOKEN_FILTER); - setupTasklistFragmentWithFilter(savedFilter); + if (!Flags.checkAndClear(Flags.TLA_RESUMED_FROM_VOICE_ADD)) + setupTasklistFragmentWithFilter(savedFilter); if (savedFilter != null) lists.setText(savedFilter.title); - if (!fromTaskEdit) { + if (!Flags.checkAndClear(Flags.TLA_DISMISSED_FROM_TASK_EDIT)) { TaskEditActivity tea = getTaskEditFragment(); if (tea != null) onBackPressed(); } - fromTaskEdit = false; } @Override @@ -226,11 +224,11 @@ public class TaskListWrapperActivity extends AstridWrapperActivity { } else { findViewById(R.id.taskedit_fragment_container).setVisibility(View.INVISIBLE); } - fromTaskEdit = true; + Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT); onPostResume(); } else { if (editPopover != null && editPopover.isShowing()) { - fromTaskEdit = true; + Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT); editPopover.dismiss(); } } diff --git a/astrid/src/com/todoroo/astrid/utility/Flags.java b/astrid/src/com/todoroo/astrid/utility/Flags.java index ca91f0786..dac4cc622 100644 --- a/astrid/src/com/todoroo/astrid/utility/Flags.java +++ b/astrid/src/com/todoroo/astrid/utility/Flags.java @@ -31,6 +31,16 @@ public class Flags { */ public static final int GTASKS_SUPPRESS_SYNC = 1 << 4; + /** + * If set, indicates that the edit popover was dismissed by the edit fragment/back button + */ + public static final int TLA_DISMISSED_FROM_TASK_EDIT = 1 << 5; + + /** + * If set, indicates that task list activity was resumed after voice add (so don't replace refresh list fragment) + */ + public static final int TLA_RESUMED_FROM_VOICE_ADD = 1 << 6; + public static boolean checkAndClear(int flag) { boolean set = (state & flag) > 0; state &= ~flag;