Fixed some ui bugs when renaming a list

pull/14/head
Sam Bosley 11 years ago
parent 1d77ddf0c6
commit c979e1c2c1

@ -266,4 +266,9 @@ public class AstridApiConstants {
*/
public static final String BROADCAST_EVENT_TAG_DELETED = API_PACKAGE + ".TAG_DELETED";
/**
* Action name for broadcast intent notifying that tag was renamed
*/
public static final String BROADCAST_EVENT_TAG_RENAMED = API_PACKAGE + ".TAG_RENAMED";
}

@ -39,6 +39,7 @@ import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.api.FilterWithUpdate;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TagMetadataDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
@ -202,6 +203,7 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
@Autowired public TagService tagService;
@Autowired public TagDataDao tagDataDao;
@Autowired public TagMetadataDao tagMetadataDao;
static {
AstridDependencyInjector.initialize();
@ -222,10 +224,6 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
TagData tagData = tagDataDao.fetch(uuid, TagData.MEMBER_COUNT, TagData.USER_ID);
if(tagData != null && tagData.getValue(TagData.MEMBER_COUNT) > 0 && Task.USER_ID_SELF.equals(tagData.getValue(TagData.USER_ID))) {
DialogUtilities.okCancelDialog(this, getString(R.string.actfm_tag_operation_owner_delete), getOkListener(), getCancelListener());
return;
}
showDialog(tagData);
}
@ -277,8 +275,12 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
@Override
protected void showDialog(TagData tagData) {
int string;
if (tagData != null && tagData.getValue(TagData.MEMBER_COUNT) > 0)
string = R.string.DLG_leave_this_shared_tag_question;
if (tagData != null && (tagMetadataDao.tagHasMembers(uuid) || tagData.getValue(TagData.MEMBER_COUNT) > 0)) {
if (Task.USER_ID_SELF.equals(tagData.getValue(TagData.USER_ID)))
string = R.string.actfm_tag_operation_owner_delete;
else
string = R.string.DLG_leave_this_shared_tag_question;
}
else
string = R.string.DLG_delete_this_tag_question;
DialogUtilities.okCancelDialog(this, getString(string, tag), getOkListener(), getCancelListener());

@ -22,6 +22,7 @@ import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Property.CountProperty;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Field;
@ -548,11 +549,22 @@ public final class TagService {
template.setValue(TagData.NAME, newName);
if (suppressSync)
template.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
tagDataDao.update(TagData.UUID.eq(uuid), template);
int result = tagDataDao.update(TagData.UUID.eq(uuid), template);
boolean tagRenamed = result > 0;
Metadata metadataTemplate = new Metadata();
metadataTemplate.setValue(TaskToTagMetadata.TAG_NAME, newName);
return metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid)), metadataTemplate);
result = metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid)), metadataTemplate);
tagRenamed = tagRenamed || result > 0;
if (tagRenamed) {
Intent intent = new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED);
intent.putExtra(TagViewFragment.EXTRA_TAG_UUID, uuid);
ContextManager.getContext().sendBroadcast(intent);
}
return result;
}
public static int getDefaultImageIDForTag(String nameOrUUID) {

@ -120,6 +120,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private boolean swipeEnabled = false;
private final TagDeletedReceiver tagDeletedReceiver = new TagDeletedReceiver();
private final TagRenamedReceiver tagRenamedReceiver = new TagRenamedReceiver();
private final OnClickListener mainMenuClickListener = new OnClickListener() {
@Override
@ -518,6 +519,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
protected void onResume() {
super.onResume();
registerReceiver(tagDeletedReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED));
registerReceiver(tagRenamedReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED));
}
@Override
@ -531,6 +533,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
protected void onStop() {
super.onStop();
AndroidUtilities.tryUnregisterReceiver(this, tagDeletedReceiver);
AndroidUtilities.tryUnregisterReceiver(this, tagRenamedReceiver);
}
public void setSelectedItem(Filter item) {
@ -914,6 +917,19 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
return super.onKeyDown(keyCode, event);
}
private class TagRenamedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
TaskListFragment tlf = getTaskListFragment();
if (tlf != null)
tlf.refresh();
FilterListFragment flf = getFilterListFragment();
if (flf != null)
flf.refresh();
}
}
private class TagDeletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

@ -189,6 +189,15 @@ public class TagMetadataDao extends DatabaseDao<TagMetadata> {
}
}
public boolean tagHasMembers(String uuid) {
TodorooCursor<TagMetadata> metadata = query(Query.select(TagMetadata.ID).where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(uuid, TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0))));
try {
return metadata.getCount() > 0;
} finally {
metadata.close();
}
}
public boolean memberOfTagData(String email, String tagId, String memberId) {
Criterion criterion;
if (!RemoteModel.isUuidEmpty(memberId) && !TextUtils.isEmpty(email))

Loading…
Cancel
Save