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.dao.MetadataDao;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.helper.UUIDHelper;
import com.todoroo.astrid.tags.TagFilterExposer;
@ -35,7 +36,6 @@ import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.ui.MenuColorizer;
@ -148,6 +148,11 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity {
tagData.setName(newName);
tagService.rename(tagData.getUuid(), newName);
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()));
}

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

@ -6,26 +6,17 @@
package com.todoroo.astrid.service;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
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.astrid.activity.TaskListActivity;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database;
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.Astrid3ContentProvider;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.tasks.Broadcaster;
import org.tasks.BuildConfig;
@ -51,9 +42,7 @@ public class StartupService {
// --- application startup
private final TagDataDao tagDataDao;
private final Database database;
private final MetadataDao metadataDao;
private final Preferences preferences;
private final TasksXmlImporter xmlImporter;
private final TaskDeleter taskDeleter;
@ -61,12 +50,9 @@ public class StartupService {
private final DialogBuilder dialogBuilder;
@Inject
public StartupService(TagDataDao tagDataDao, Database database, MetadataDao metadataDao,
Preferences preferences, TasksXmlImporter xmlImporter,
public StartupService(Database database, Preferences preferences, TasksXmlImporter xmlImporter,
TaskDeleter taskDeleter, Broadcaster broadcaster, DialogBuilder dialogBuilder) {
this.tagDataDao = tagDataDao;
this.database = database;
this.metadataDao = metadataDao;
this.preferences = preferences;
this.xmlImporter = xmlImporter;
this.taskDeleter = taskDeleter;
@ -122,8 +108,6 @@ public class StartupService {
preferences.setCurrentVersion(currentVersion);
}
initializeDatabaseListeners();
// perform startup activities in a background thread
new Thread(new Runnable() {
@Override
@ -139,25 +123,6 @@ public class StartupService {
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
*/

Loading…
Cancel
Save