diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index 901fc9a09..0e04268e3 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionName="3.0.0-beta" android:versionCode="136"> diff --git a/astrid/res/values/strings-3.0.xml b/astrid/res/values/strings-3.0.xml index 08783f896..3470144eb 100644 --- a/astrid/res/values/strings-3.0.xml +++ b/astrid/res/values/strings-3.0.xml @@ -112,6 +112,9 @@ Cancel + + Please wait... + @@ -287,16 +290,16 @@ to the plugin creator for fastest service. No Repeat Set - Remind me when... + Remind me... - it\'s time to start the task + ... when it\'s time to start the task - task is overdue + ... when task is overdue - randomly every %s + ... randomly every %s Ring/Vibrate Type: diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java index df6dfa98e..575f52030 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditActivity.java @@ -338,14 +338,6 @@ public final class TaskEditActivity extends TabActivity { /** Save task model from values in UI components */ private void save() { - // don't save if user accidentally created a new task - if(title.getText().length() == 0) { - if(model.isSaved()) - taskService.delete(model); - showCancelToast(); - return; - } - for(TaskEditControlSet controlSet : controls) controlSet.writeToModel(); @@ -368,6 +360,10 @@ public final class TaskEditActivity extends TabActivity { * precision */ private void showSaveToast() { + // if we have no title, don't show a message + if(isNewTask()) + return; + int stringResource; long due = model.getValue(Task.DUE_DATE); @@ -492,6 +488,14 @@ public final class TaskEditActivity extends TabActivity { protected void onStop() { super.onStop(); FlurryAgent.onEndSession(this); + + // don't save if user accidentally created a new task + if(title.getText().length() == 0) { + if(model.isSaved()) + taskService.delete(model); + showCancelToast(); + return; + } } /* ====================================================================== diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index 12bab87da..2027f6eef 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -320,8 +320,9 @@ public class TaskListActivity extends ListActivity implements OnScrollListener { protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - // if(requestCode == ACTIVITY_EDIT_TASK && resultCode != TaskEditActivity.RESULT_CODE_DISCARDED) - // loadTaskListContent(true); + taskService.cleanup(); + if(requestCode == ACTIVITY_EDIT_TASK && resultCode != TaskEditActivity.RESULT_CODE_DISCARDED) + loadTaskListContent(true); } public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, @@ -367,6 +368,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener { taskCursor.requery(); taskAdapter.notifyDataSetChanged(); } + startManagingCursor(taskCursor); if(oldListItemSelected != ListView.INVALID_POSITION && oldListItemSelected < taskCursor.getCount()) diff --git a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java index 6af61f439..7c4b30db5 100644 --- a/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/TaskAdapter.java @@ -57,6 +57,7 @@ public class TaskAdapter extends CursorAdapter { Task.DUE_DATE, Task.COMPLETION_DATE, Task.HIDE_UNTIL, + Task.DELETION_DATE, }; private static int[] IMPORTANCE_COLORS = null; @@ -197,6 +198,8 @@ public class TaskAdapter extends CursorAdapter { final TextView nameView = viewHolder.nameView; { String nameValue = task.getValue(Task.TITLE); long hiddenUntil = task.getValue(Task.HIDE_UNTIL); + if(task.getValue(Task.DELETION_DATE) > 0) + nameValue = r.getString(R.string.TAd_deletedFormat, nameValue); if(hiddenUntil > DateUtilities.now()) nameValue = r.getString(R.string.TAd_hiddenFormat, nameValue); nameView.setText(nameValue); diff --git a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java index 64c064a05..ca8006d4e 100644 --- a/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java +++ b/astrid/src/com/todoroo/astrid/service/Astrid2To3UpgradeHelper.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Map.Entry; +import android.app.ProgressDialog; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -11,6 +12,7 @@ import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.util.Log; +import com.timsu.astrid.R; import com.timsu.astrid.data.AbstractController; import com.timsu.astrid.data.alerts.Alert; import com.timsu.astrid.data.task.AbstractTaskModel; @@ -23,6 +25,7 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.alarms.Alarm; import com.todoroo.astrid.alarms.AlarmDatabase; import com.todoroo.astrid.dao.Database; @@ -58,6 +61,9 @@ public class Astrid2To3UpgradeHelper { @Autowired private String alertsTable; + @Autowired + private DialogUtilities dialogUtilities; + // --- implementation public Astrid2To3UpgradeHelper() { @@ -93,6 +99,9 @@ public class Astrid2To3UpgradeHelper { public void upgrade2To3() { Context context = ContextManager.getContext(); + // pop up a progress dialog + ProgressDialog dialog = dialogUtilities.progressDialog(context, context.getString(R.string.DLG_wait)); + // initiate a backup try { TasksXmlExporter exporter = new TasksXmlExporter(true); @@ -149,6 +158,8 @@ public class Astrid2To3UpgradeHelper { metadataService.cleanup(); database.close(); + + dialog.dismiss(); } // --- database upgrade helpers diff --git a/astrid/src/com/todoroo/astrid/service/AstridDependencyInjector.java b/astrid/src/com/todoroo/astrid/service/AstridDependencyInjector.java index ca91a66d8..d1151e60a 100644 --- a/astrid/src/com/todoroo/astrid/service/AstridDependencyInjector.java +++ b/astrid/src/com/todoroo/astrid/service/AstridDependencyInjector.java @@ -91,6 +91,7 @@ public class AstridDependencyInjector implements AbstractDependencyInjector { // com.todoroo.astrid.service injectables.put("taskService", TaskService.class); injectables.put("metadataService", MetadataService.class); + injectables.put("upgradeService", UpgradeService.class); // com.timsu.astrid.data injectables.put("tasksTable", "tasks"); diff --git a/astrid/src/com/todoroo/astrid/service/StartupService.java b/astrid/src/com/todoroo/astrid/service/StartupService.java index 8d4f42e6b..3b2de39af 100644 --- a/astrid/src/com/todoroo/astrid/service/StartupService.java +++ b/astrid/src/com/todoroo/astrid/service/StartupService.java @@ -21,8 +21,10 @@ import com.timsu.astrid.utilities.BackupService; import com.timsu.astrid.utilities.Notifications; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.ContextManager; +import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; import com.todoroo.andlib.service.ExceptionService.TodorooUncaughtExceptionHandler; +import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Preferences; @@ -39,6 +41,10 @@ public class StartupService extends BroadcastReceiver { AstridDependencyInjector.initialize(); } + public StartupService() { + DependencyInjectionService.getInstance().inject(this); + } + // --- system startup @Override @@ -56,6 +62,12 @@ public class StartupService extends BroadcastReceiver { @Autowired UpgradeService upgradeService; + @Autowired + TaskService taskService; + + @Autowired + Database database; + /** * bit to prevent multiple initializations */ @@ -110,6 +122,9 @@ public class StartupService extends BroadcastReceiver { // start backup service BackupService.scheduleService(context); + + database.openForWriting(); + taskService.cleanup(); } }).start(); diff --git a/astrid/src/com/todoroo/astrid/service/TaskService.java b/astrid/src/com/todoroo/astrid/service/TaskService.java index 0f37751ca..f78e1d5e0 100644 --- a/astrid/src/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/com/todoroo/astrid/service/TaskService.java @@ -73,9 +73,15 @@ public class TaskService { public void delete(Task item) { if(!item.isSaved()) return; - item.clear(); - item.setValue(Task.DELETION_DATE, DateUtilities.now()); - taskDao.save(item, false); + else if(item.containsValue(Task.TITLE) && item.getValue(Task.TITLE).length() == 0) { + taskDao.delete(item.getId()); + } else { + long id = item.getId(); + item.clear(); + item.setId(id); + item.setValue(Task.DELETION_DATE, DateUtilities.now()); + taskDao.save(item, false); + } } /**