Update task metadata from TagSettingsActivity

pull/413/head
Alex Baker 10 years ago
parent 84fe2b697a
commit 10b391a3e5

@ -26,6 +26,7 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.helper.UUIDHelper;
import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagFilterExposer;
@ -35,7 +36,6 @@ import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ActivityComponent; import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.injection.ThemedInjectingAppCompatActivity; import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.ui.MenuColorizer; import org.tasks.ui.MenuColorizer;
@ -148,6 +148,11 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity {
tagData.setName(newName); tagData.setName(newName);
tagService.rename(tagData.getUuid(), newName); tagService.rename(tagData.getUuid(), newName);
tagDataDao.persist(tagData); tagDataDao.persist(tagData);
Metadata m = new Metadata();
m.setValue(TaskToTagMetadata.TAG_NAME, newName);
metadataDao.update(Criterion.and(
MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY),
TaskToTagMetadata.TAG_UUID.eq(tagData.getUUID())), m);
setResult(RESULT_OK, new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED).putExtra(EXTRA_TAG_UUID, tagData.getUuid())); setResult(RESULT_OK, new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_RENAMED).putExtra(EXTRA_TAG_UUID, tagData.getUuid()));
} }

@ -82,10 +82,6 @@ public class TagDataDao {
dao.saveExisting(tagData); dao.saveExisting(tagData);
} }
public void addListener(DatabaseDao.ModelUpdateListener<TagData> modelUpdateListener) {
dao.addListener(modelUpdateListener);
}
public void delete(long id) { public void delete(long id) {
dao.delete(id); dao.delete(id);
} }

@ -6,26 +6,17 @@
package com.todoroo.astrid.service; package com.todoroo.astrid.service;
import android.app.Activity; import android.app.Activity;
import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteException;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.DatabaseUpdateListener; import com.todoroo.astrid.dao.DatabaseUpdateListener;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.provider.Astrid2TaskProvider; import com.todoroo.astrid.provider.Astrid2TaskProvider;
import com.todoroo.astrid.provider.Astrid3ContentProvider; import com.todoroo.astrid.provider.Astrid3ContentProvider;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.tasks.Broadcaster; import org.tasks.Broadcaster;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
@ -51,9 +42,7 @@ public class StartupService {
// --- application startup // --- application startup
private final TagDataDao tagDataDao;
private final Database database; private final Database database;
private final MetadataDao metadataDao;
private final Preferences preferences; private final Preferences preferences;
private final TasksXmlImporter xmlImporter; private final TasksXmlImporter xmlImporter;
private final TaskDeleter taskDeleter; private final TaskDeleter taskDeleter;
@ -61,12 +50,9 @@ public class StartupService {
private final DialogBuilder dialogBuilder; private final DialogBuilder dialogBuilder;
@Inject @Inject
public StartupService(TagDataDao tagDataDao, Database database, MetadataDao metadataDao, public StartupService(Database database, Preferences preferences, TasksXmlImporter xmlImporter,
Preferences preferences, TasksXmlImporter xmlImporter,
TaskDeleter taskDeleter, Broadcaster broadcaster, DialogBuilder dialogBuilder) { TaskDeleter taskDeleter, Broadcaster broadcaster, DialogBuilder dialogBuilder) {
this.tagDataDao = tagDataDao;
this.database = database; this.database = database;
this.metadataDao = metadataDao;
this.preferences = preferences; this.preferences = preferences;
this.xmlImporter = xmlImporter; this.xmlImporter = xmlImporter;
this.taskDeleter = taskDeleter; this.taskDeleter = taskDeleter;
@ -122,8 +108,6 @@ public class StartupService {
preferences.setCurrentVersion(currentVersion); preferences.setCurrentVersion(currentVersion);
} }
initializeDatabaseListeners();
// perform startup activities in a background thread // perform startup activities in a background thread
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
@ -139,25 +123,6 @@ public class StartupService {
hasStartedUp = true; hasStartedUp = true;
} }
private void initializeDatabaseListeners() {
// This listener makes sure that when a tag's name is created or changed,
// the corresponding metadata will also update
tagDataDao.addListener(new ModelUpdateListener<TagData>() {
@Override
public void onModelUpdated(TagData model) {
ContentValues values = model.getSetValues();
Metadata m = new Metadata();
if (values != null) {
if (values.containsKey(TagData.NAME.name)) {
m.setValue(TaskToTagMetadata.TAG_NAME, model.getName());
metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
TaskToTagMetadata.TAG_UUID.eq(model.getUUID())), m);
}
}
}
});
}
/** /**
* If database exists, no tasks but metadata, and a backup file exists, restore it * If database exists, no tasks but metadata, and a backup file exists, restore it
*/ */

Loading…
Cancel
Save