From e2dac89c37db192f9cb09bd05d976ee0a286b213 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Fri, 1 Mar 2013 16:48:37 -0800 Subject: [PATCH] Fixed some behavior with how tag data is loaded from filter--always use the uuid when possible --- .../astrid/actfm/TagSettingsActivity.java | 5 ++-- .../todoroo/astrid/actfm/TagViewFragment.java | 10 ++++--- .../com/todoroo/astrid/tags/TagService.java | 6 ++--- .../astrid/activity/TaskListActivity.java | 26 +++++++++---------- 4 files changed, 25 insertions(+), 22 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java index bdc6d2b40..274757207 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -354,14 +354,15 @@ public class TagSettingsActivity extends FragmentActivity { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(tagName.getWindowToken(), 0); + tagDataService.save(tagData); + tagMetadataDao.synchronizeMembers(tagData.getId(), tagData.getUuid(), members); + if (isNewTag) { setResult(RESULT_OK, new Intent().putExtra(TOKEN_NEW_FILTER, TagFilterExposer.filterFromTagData(TagSettingsActivity.this, tagData))); } else { setResult(RESULT_OK); } - tagDataService.save(tagData); - tagMetadataDao.synchronizeMembers(tagData.getId(), tagData.getUuid(), members); refreshSettingsPage(); finish(); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java index 20c01e935..8d3ccecc1 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java @@ -242,9 +242,13 @@ public class TagViewFragment extends TaskListFragment { if(tag == null && RemoteModel.NO_UUID.equals(uuid)) return; - TodorooCursor cursor = tagDataService.query(Query.select(TagData.PROPERTIES).where( - Criterion.or(TagData.NAME.eqCaseInsensitive(tag), - TagData.UUID.eq(uuid)))); + TodorooCursor cursor; + if (!RemoteModel.isUuidEmpty(uuid)) { + cursor = tagDataService.query(Query.select(TagData.PROPERTIES).where(TagData.UUID.eq(uuid))); + } else { + cursor = tagDataService.query(Query.select(TagData.PROPERTIES).where(TagData.NAME.eqCaseInsensitive(tag))); + } + try { tagData = new TagData(); if(cursor.getCount() == 0) { diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java index 966def037..9c2c64213 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagService.java @@ -375,18 +375,18 @@ public final class TagService { public boolean deleteOrLeaveTag(Context context, String tag, String sql) { int deleted = deleteTagMetadata(tag); - TagData tagData = PluginServices.getTagDataService().getTag(tag, TagData.ID, TagData.DELETION_DATE, TagData.MEMBER_COUNT, TagData.USER_ID); + TagData tagData = PluginServices.getTagDataService().getTag(tag, TagData.ID, TagData.UUID, TagData.DELETION_DATE, TagData.MEMBER_COUNT, TagData.USER_ID); boolean shared = false; + Intent tagDeleted = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED); if(tagData != null) { tagData.setValue(TagData.DELETION_DATE, DateUtilities.now()); PluginServices.getTagDataService().save(tagData); + tagDeleted.putExtra(TagViewFragment.EXTRA_TAG_UUID, tagData.getUuid()); shared = tagData.getValue(TagData.MEMBER_COUNT) > 0 && !Task.USER_ID_SELF.equals(tagData.getValue(TagData.USER_ID)); // Was I a list member and NOT owner? } Toast.makeText(context, context.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); tagDeleted.putExtra(TOKEN_TAG_SQL, sql); context.sendBroadcast(tagDeleted); return true; diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index c8a1ebbb6..10906fbd0 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -52,6 +52,7 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.dao.TagMetadataDao; +import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.people.PeopleFilterMode; @@ -917,24 +918,21 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener private class TagDeletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - String deletedTag = intent.getStringExtra(TagViewFragment.EXTRA_TAG_NAME); String deletedTagSql = intent.getStringExtra(TagService.TOKEN_TAG_SQL); + String uuid = intent.getStringExtra(TagViewFragment.EXTRA_TAG_UUID); + TaskListFragment tlf = getTaskListFragment(); FilterListFragment fl = getFilterListFragment(); - if (deletedTagSql.equals(TagService.SHOW_ACTIVE_TASKS)) { - fl.switchToActiveTasks(); - fl.clear(); // Should auto refresh - } - else if (fl != null) { - Filter currentlyShowing = getIntent().getParcelableExtra(TaskListFragment.TOKEN_FILTER); - if (currentlyShowing != null) { - boolean titlesMatch = currentlyShowing.title != null && currentlyShowing.title.equals(deletedTag); - boolean sqlMatches = currentlyShowing.getSqlQuery() != null && currentlyShowing.getSqlQuery().equals(deletedTagSql); - if (titlesMatch && sqlMatches) - fl.switchToActiveTasks(); + if (tlf != null) { + TagData tagData = tlf.getActiveTagData(); + String activeUuid = RemoteModel.NO_UUID; + if (tagData != null) + activeUuid = tagData.getUuid(); + + if (deletedTagSql.equals(TagService.SHOW_ACTIVE_TASKS) || activeUuid.equals(uuid)) { + fl.switchToActiveTasks(); + fl.clear(); // Should auto refresh } - fl.clear(); // Should auto refresh } } - } }