diff --git a/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java index cfebbb76c..9d3b6f235 100644 --- a/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -6,6 +6,7 @@ package com.todoroo.astrid.gtasks; import android.os.Bundle; +import android.support.v7.widget.Toolbar; import android.view.MenuItem; import com.todoroo.andlib.data.Property; @@ -71,6 +72,12 @@ public class GtasksListFragment extends SubtasksListFragment { ((OrderedMetadataListFragmentHelper)helper).setList(list); } + @Override + protected void inflateMenu(Toolbar toolbar) { + super.inflateMenu(toolbar); + toolbar.inflateMenu(R.menu.menu_gtasks_list_fragment); + } + @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); diff --git a/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java b/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java index dd1e415b7..fc77af555 100644 --- a/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java @@ -5,20 +5,33 @@ */ package com.todoroo.astrid.actfm; +import android.app.Activity; +import android.content.Intent; import android.os.Bundle; +import android.support.v7.widget.Toolbar; +import android.view.MenuItem; import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListFragment; +import com.todoroo.astrid.api.AstridApiConstants; +import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.TagFilter; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.data.TagData; +import com.todoroo.astrid.tags.TagFilterExposer; +import org.tasks.Broadcaster; +import org.tasks.R; import org.tasks.injection.FragmentComponent; import javax.inject.Inject; public class TagViewFragment extends TaskListFragment { + private static final int REQUEST_EDIT_TAG = 11543; + public static TaskListFragment newTagViewFragment(TagFilter filter, TagData tagData) { TagViewFragment fragment = new TagViewFragment(); fragment.filter = filter; @@ -29,6 +42,7 @@ public class TagViewFragment extends TaskListFragment { private static final String EXTRA_TAG_DATA = "extra_tag_data"; @Inject TagDataDao tagDataDao; + @Inject Broadcaster broadcaster; protected TagData tagData; @@ -41,6 +55,56 @@ public class TagViewFragment extends TaskListFragment { } } + @Override + protected void inflateMenu(Toolbar toolbar) { + super.inflateMenu(toolbar); + toolbar.inflateMenu(R.menu.menu_tag_view_fragment); + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_tag_settings: + startActivityForResult(new Intent(getActivity(), TagSettingsActivity.class) {{ + putExtra(TagSettingsActivity.EXTRA_TAG_DATA, tagData); + }}, REQUEST_EDIT_TAG); + return true; + default: + return super.onMenuItemClick(item); + } + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == REQUEST_EDIT_TAG) { + if (resultCode == Activity.RESULT_OK) { + String action = data.getAction(); + String uuid = data.getStringExtra(TagSettingsActivity.EXTRA_TAG_UUID); + TaskListActivity activity = (TaskListActivity) getActivity(); + if (AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED.equals(action)) { + if (tagData.getUuid().equals(uuid)) { + TagData newTagData = tagDataDao.fetch(uuid, TagData.PROPERTIES); + if (newTagData != null) { + Filter filter = TagFilterExposer.filterFromTag(newTagData); + activity.onFilterItemClicked(filter); + } + } + } else if (AstridApiConstants.BROADCAST_EVENT_TAG_DELETED.equals(action)) { + String activeUuid = tagData.getUuid(); + if (activeUuid.equals(uuid)) { + activity.onFilterItemClicked(BuiltInFilterExposer.getMyTasksFilter(getResources())); + activity.clearNavigationDrawer(); // Should auto refresh + } + } + + activity.refreshNavigationDrawer(); + broadcaster.refresh(); + } + } else { + super.onActivityResult(requestCode, resultCode, data); + } + } + @Override public void onActivityCreated(final Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); @@ -55,10 +119,6 @@ public class TagViewFragment extends TaskListFragment { outState.putParcelable(EXTRA_TAG_DATA, tagData); } - public TagData getTagData() { - return tagData; - } - @Override protected void initiateAutomaticSyncImpl() { if (tagData != null) { diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index f764b08f0..2ae3bedab 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -44,7 +44,6 @@ import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.actfm.FilterSettingsActivity; -import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener; @@ -54,10 +53,8 @@ import com.todoroo.astrid.api.CustomFilter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.core.SortHelper; -import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.data.Metadata; -import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.gtasks.GtasksListFragment; @@ -69,7 +66,6 @@ import com.todoroo.astrid.service.TaskDuplicator; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.subtasks.SubtasksListFragment; import com.todoroo.astrid.subtasks.SubtasksTagListFragment; -import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.timers.TimerPlugin; import com.todoroo.astrid.voice.VoiceInputAssistant; @@ -117,7 +113,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr public static final String TAG_TASKLIST_FRAGMENT = "tasklist_fragment"; //$NON-NLS-1$ public static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; - private static final int REQUEST_EDIT_TAG = 11543; private static final int REQUEST_EDIT_FILTER = 11544; private static final int REQUEST_SORT = 11545; @@ -148,7 +143,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr @Inject CheckBoxes checkBoxes; @Inject VoiceInputAssistant voiceInputAssistant; @Inject TaskCreator taskCreator; - @Inject TagDataDao tagDataDao; @Inject Broadcaster broadcaster; @Bind(R.id.swipe_layout) SwipeRefreshLayout swipeRefreshLayout; @@ -263,7 +257,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr callbacks.onNavigationIconClicked(); } }); - toolbar.inflateMenu(R.menu.task_list_fragment); + inflateMenu(toolbar); Menu menu = toolbar.getMenu(); for (int i = 0 ; i < menu.size() ; i++) { MenuColorizer.colorMenuItem(menu.getItem(i), getResources().getColor(android.R.color.white)); @@ -274,8 +268,14 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr return parent; } + protected void inflateMenu(Toolbar toolbar) { + toolbar.inflateMenu(R.menu.menu_task_list_fragment); + if (filter instanceof CustomFilter && ((CustomFilter) filter).getId() > 0) { + toolbar.inflateMenu(R.menu.menu_custom_filter); + } + } + private void setupMenu(Menu menu) { - TaskListFragment tlf = this; MenuItem hidden = menu.findItem(R.id.menu_show_hidden); if (preferences.getBoolean(R.string.p_show_hidden_tasks, false)) { hidden.setChecked(true); @@ -284,20 +284,13 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr if (preferences.getBoolean(R.string.p_show_completed_tasks, false)) { completed.setChecked(true); } - if (tlf instanceof GtasksListFragment) { - menu.findItem(R.id.menu_clear_completed).setVisible(true); + if (this instanceof GtasksListFragment) { menu.findItem(R.id.menu_sort).setVisible(false); completed.setChecked(true); completed.setEnabled(false); - } else if(tlf instanceof TagViewFragment) { - menu.findItem(R.id.menu_tag_settings).setVisible(true); - } else { - if(filter instanceof CustomFilter && ((CustomFilter) filter).getId() > 0) { - menu.findItem(R.id.menu_filter_settings).setVisible(true); - } } - if (tlf instanceof SubtasksTagListFragment || tlf instanceof SubtasksListFragment) { + if (this instanceof SubtasksTagListFragment || this instanceof SubtasksListFragment) { hidden.setChecked(true); hidden.setEnabled(false); } @@ -348,11 +341,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr putExtra(SortActivity.EXTRA_MANUAL_ENABLED, hasDraggableOption()); }}, REQUEST_SORT); return true; - case R.id.menu_tag_settings: - startActivityForResult(new Intent(getActivity(), TagSettingsActivity.class) {{ - putExtra(TagSettingsActivity.EXTRA_TAG_DATA, ((TagViewFragment) TaskListFragment.this).getTagData()); - }}, REQUEST_EDIT_TAG); - return true; case R.id.menu_show_hidden: item.setChecked(!item.isChecked()); preferences.setBoolean(R.string.p_show_hidden_tasks, item.isChecked()); @@ -740,32 +728,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr }; voiceInputAssistant.handleActivityResult(data, quickAddTask); } - } else if (requestCode == REQUEST_EDIT_TAG) { - if (resultCode == Activity.RESULT_OK) { - String action = data.getAction(); - String uuid = data.getStringExtra(TagSettingsActivity.EXTRA_TAG_UUID); - if (this instanceof TagViewFragment) { - TagData tagData = ((TagViewFragment) this).getTagData(); - if (AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED.equals(action)) { - if (tagData.getUuid().equals(uuid)) { - TagData newTagData = tagDataDao.fetch(uuid, TagData.PROPERTIES); - if (newTagData != null) { - Filter filter = TagFilterExposer.filterFromTag(newTagData); - ((TaskListActivity) getActivity()).onFilterItemClicked(filter); - } - } - } else if (AstridApiConstants.BROADCAST_EVENT_TAG_DELETED.equals(action)) { - String activeUuid = tagData.getUuid(); - if (activeUuid.equals(uuid)) { - ((TaskListActivity) getActivity()).onFilterItemClicked(BuiltInFilterExposer.getMyTasksFilter(getResources())); - ((TaskListActivity) getActivity()).clearNavigationDrawer(); // Should auto refresh - } - } - } - - ((TaskListActivity) getActivity()).refreshNavigationDrawer(); - broadcaster.refresh(); - } } else if (requestCode == REQUEST_EDIT_FILTER) { if (resultCode == Activity.RESULT_OK) { String action = data.getAction(); diff --git a/src/main/res/menu/menu_custom_filter.xml b/src/main/res/menu/menu_custom_filter.xml new file mode 100644 index 000000000..57089b516 --- /dev/null +++ b/src/main/res/menu/menu_custom_filter.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/main/res/menu/menu_gtasks_list_fragment.xml b/src/main/res/menu/menu_gtasks_list_fragment.xml new file mode 100644 index 000000000..8f3b25484 --- /dev/null +++ b/src/main/res/menu/menu_gtasks_list_fragment.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/main/res/menu/menu_tag_view_fragment.xml b/src/main/res/menu/menu_tag_view_fragment.xml new file mode 100644 index 000000000..91d98c55b --- /dev/null +++ b/src/main/res/menu/menu_tag_view_fragment.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/main/res/menu/task_list_fragment.xml b/src/main/res/menu/menu_task_list_fragment.xml similarity index 68% rename from src/main/res/menu/task_list_fragment.xml rename to src/main/res/menu/menu_task_list_fragment.xml index c3c28bade..1e5aa6380 100644 --- a/src/main/res/menu/task_list_fragment.xml +++ b/src/main/res/menu/menu_task_list_fragment.xml @@ -30,19 +30,4 @@ android:title="@string/show_completed" android:checkable="true" /> - - - \ No newline at end of file