diff --git a/api/src/com/todoroo/astrid/api/AstridApiConstants.java b/api/src/com/todoroo/astrid/api/AstridApiConstants.java index c99c4b8ee..aa55d876b 100644 --- a/api/src/com/todoroo/astrid/api/AstridApiConstants.java +++ b/api/src/com/todoroo/astrid/api/AstridApiConstants.java @@ -262,4 +262,9 @@ public class AstridApiConstants { */ public static final String BROADCAST_EVENT_TASK_REPEATED = PACKAGE + ".TASK_REPEATED"; + /** + * Action name for broadcast intent notifying that tag was deleted + */ + public static final String BROADCAST_EVENT_TAG_DELETED = PACKAGE + ".TAG_DELETED"; + } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java index bfa66184b..8dc7a8c74 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagFilterExposer.java @@ -270,6 +270,10 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE } Toast.makeText(this, getString(shared ? R.string.TEA_tags_left : R.string.TEA_tags_deleted, tag, deleted), Toast.LENGTH_SHORT).show(); + + Intent tagDeleted = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED); + tagDeleted.putExtra(TagViewFragment.EXTRA_TAG_NAME, tag); + sendBroadcast(tagDeleted); return true; } diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java b/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java index d02261b7d..f8aa1a874 100644 --- a/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java @@ -352,12 +352,21 @@ public class FilterListFragment extends ListFragment { if (mDualFragments) getListView().setItemChecked(position, true); Filter item = adapter.getItem(position); + setFilterItemSelected(item, position); + } + + private void setFilterItemSelected(Filter item, int position) { mSelectedIndex = position; adapter.setLastSelected(mSelectedIndex); getActivity().getIntent().putExtra(TOKEN_LAST_SELECTED, mSelectedIndex); mListener.onFilterItemClicked(item); } + public void switchToActiveTasks() { + if (adapter.getCount() > 0) + setFilterItemSelected(adapter.getItem(0), 0); + } + @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index eeb0634bd..509b18a9e 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -1,7 +1,10 @@ package com.todoroo.astrid.activity; import android.app.Activity; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.os.Bundle; import android.support.v4.app.ActionBar; import android.support.v4.app.Fragment; @@ -22,6 +25,8 @@ import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.actfm.ActFmLoginActivity; import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.actfm.TagUpdatesFragment; +import com.todoroo.astrid.actfm.TagViewFragment; +import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.reminders.NotificationFragment; @@ -47,6 +52,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener private FragmentPopover commentsPopover; private MainMenuPopover mainMenuPopover; + private final TagDeletedReceiver tagDeletedReceiver = new TagDeletedReceiver(); + private final OnClickListener mainMenuClickListener = new OnClickListener() { @Override public void onClick(View v) { @@ -276,6 +283,12 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener lists.setText(title); } + @Override + protected void onResume() { + super.onResume(); + registerReceiver(tagDeletedReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED)); + } + @Override protected void onPause() { super.onPause(); @@ -289,6 +302,13 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener commentsPopover.dismiss(); } + @Override + protected void onStop() { + super.onStop(); + System.err.println("Unregistering"); + unregisterReceiver(tagDeletedReceiver); + } + public void setSelectedItem(Filter item) { lists.setText(item.title); } @@ -365,4 +385,19 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener break; } } + + private class TagDeletedReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + String deletedTag = intent.getStringExtra(TagViewFragment.EXTRA_TAG_NAME); + String currentlyShowing = getIntent().getStringExtra(TagViewFragment.EXTRA_TAG_NAME); + if (currentlyShowing != null && currentlyShowing.equals(deletedTag)) { + FilterListFragment fl = getFilterListFragment(); + if (fl != null) { + fl.switchToActiveTasks(); + } + } + } + + } }