Added a tag data listener to update metadata when tag data name changes

pull/14/head
Sam Bosley 12 years ago
parent a8ac2dccde
commit cfe2a0724f

@ -15,6 +15,7 @@ import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
@ -28,6 +29,7 @@ import android.widget.Toast;
import com.crittercism.app.Crittercism;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
@ -45,11 +47,13 @@ import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.backup.BackupConstants;
import com.todoroo.astrid.backup.BackupService;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.CalendarStartupReceiver;
import com.todoroo.astrid.gtasks.GtasksMetadata;
@ -63,6 +67,7 @@ import com.todoroo.astrid.service.abtesting.ABChooser;
import com.todoroo.astrid.service.abtesting.ABTestInvoker;
import com.todoroo.astrid.service.abtesting.ABTests;
import com.todoroo.astrid.subtasks.SubtasksMetadata;
import com.todoroo.astrid.tags.TagMetadata;
import com.todoroo.astrid.ui.TaskListFragmentPager;
import com.todoroo.astrid.utility.AstridPreferences;
import com.todoroo.astrid.utility.Constants;
@ -209,6 +214,7 @@ public class StartupService {
abTestInvoker.reportAcquisition();
initializeDatabaseListeners();
ActFmSyncThread.initializeSyncComponents(taskDao, tagDataDao);
// perform startup activities in a background thread
@ -258,6 +264,25 @@ 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(TagMetadata.TAG_NAME, model.getValue(TagData.NAME));
PluginServices.getMetadataService().update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY),
TagMetadata.TAG_UUID.eq(model.getValue(TagData.UUID))), m);
}
}
}
});
}
/**
* @param context
* @param e error that was raised

Loading…
Cancel
Save