diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7f43b789f..063c6761e 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="20" + android:versionName="1.7.10"> diff --git a/res/drawable/strikeout.png b/res/drawable/strikeout.png index 608cb239e..175cac2ac 100644 Binary files a/res/drawable/strikeout.png and b/res/drawable/strikeout.png differ diff --git a/res/values/colors.xml b/res/values/colors.xml index cfa42a52a..b22f8813d 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -21,11 +21,11 @@ --> #F09EA6 - #ffaaaaaa + #ff777777 #ffFFBF9E #ffF0E89E - #ffccffaa + #ff888888 #ff888888 #ff83ffa9 diff --git a/res/values/strings.xml b/res/values/strings.xml index d22cf1545..7a341659d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -37,6 +37,10 @@ 1 Task %d Tasks + + %d / %d Active + %d / %d Active + 1 Tag %d Tags diff --git a/src/com/timsu/astrid/activities/TaskList.java b/src/com/timsu/astrid/activities/TaskList.java index e2f34c4b6..c91dfcd0d 100644 --- a/src/com/timsu/astrid/activities/TaskList.java +++ b/src/com/timsu/astrid/activities/TaskList.java @@ -194,7 +194,6 @@ public class TaskList extends Activity { if(filterTag != null) { List tasks = tagController.getTaggedTasks(this, filterTag.getTagIdentifier()); - tasksCursor = controller.getTaskListCursorById(tasks); } else { if(filterShowDone) @@ -202,15 +201,22 @@ public class TaskList extends Activity { else tasksCursor = controller.getActiveTaskListCursor(); } - startManagingCursor(tasksCursor); + taskArray = controller.createTaskListFromCursor(tasksCursor, !filterShowHidden); int hiddenTasks = tasksCursor.getCount() - taskArray.size(); + int doneTasks = 0; + for(TaskModelForList task : taskArray) + if(task.isTaskCompleted()) + doneTasks++; + int activeTasks = taskArray.size() - doneTasks; // hide "add" button if we have a few tasks if(taskArray.size() > 2) addButton.setVisibility(View.GONE); + else + addButton.setVisibility(View.VISIBLE); // set up the title StringBuilder title = new StringBuilder(). @@ -219,8 +225,13 @@ public class TaskList extends Activity { title.append(r.getString(R.string.taskList_titleTagPrefix, filterTag.getName())).append(" "); } - title.append(r.getQuantityString(R.plurals.Ntasks, - taskArray.size(), taskArray.size())); + + if(doneTasks > 0) + title.append(r.getQuantityString(R.plurals.NactiveTasks, + activeTasks, activeTasks, taskArray.size())); + else + title.append(r.getQuantityString(R.plurals.Ntasks, + taskArray.size(), taskArray.size())); if(hiddenTasks > 0) title.append(" (+").append(hiddenTasks).append(" "). append(r.getString(R.string.taskList_hiddenSuffix)).append(")"); diff --git a/src/com/timsu/astrid/data/task/TaskController.java b/src/com/timsu/astrid/data/task/TaskController.java index e108217a5..3d88c7962 100644 --- a/src/com/timsu/astrid/data/task/TaskController.java +++ b/src/com/timsu/astrid/data/task/TaskController.java @@ -160,6 +160,9 @@ public class TaskController extends AbstractController { long id = task.getTaskIdentifier().getId(); ContentValues values = task.getSetValues(); + if(values.size() == 0) // nothing changed + return true; + // set completion date if(values.containsKey(AbstractTaskModel.PROGRESS_PERCENTAGE) && values.getAsInteger(AbstractTaskModel.PROGRESS_PERCENTAGE) @@ -167,7 +170,7 @@ public class TaskController extends AbstractController { values.put(AbstractTaskModel.COMPLETION_DATE, System.currentTimeMillis()); } - saveSucessful = database.update(TASK_TABLE_NAME, task.getSetValues(), + saveSucessful = database.update(TASK_TABLE_NAME, values, KEY_ROWID + "=" + id, null) > 0; } diff --git a/src/com/timsu/astrid/utilities/Notifications.java b/src/com/timsu/astrid/utilities/Notifications.java index aaf76b625..abfc1e8c7 100644 --- a/src/com/timsu/astrid/utilities/Notifications.java +++ b/src/com/timsu/astrid/utilities/Notifications.java @@ -29,8 +29,8 @@ public class Notifications extends BroadcastReceiver { // stuff for scheduling private static final int MIN_INTERVAL_SECONDS = 300; - private static final float FUDGE_MIN = 0.2f; - private static final float FUDGE_MAX = 0.8f; + private static final float FUDGE_MIN = 0.4f; + private static final float FUDGE_MAX = 1.1f; /** # of seconds before a deadline to notify */ private static final int DEADLINE_NOTIFY_SECS = 3600; /** # of seconds after now, if a deadline is in the past */ @@ -127,8 +127,9 @@ public class Notifications extends BroadcastReceiver { // compute, and add a fudge factor to mix things up a bit interval = task.getNotificationIntervalSeconds(); int currentSeconds = (int)(System.currentTimeMillis() / 1000); - int untilNextInterval = interval - currentSeconds % interval; - untilNextInterval *= FUDGE_MIN + random.nextFloat() * (FUDGE_MAX - FUDGE_MIN); + int flexyInterval = interval * (int)(FUDGE_MIN + random.nextFloat() + * (FUDGE_MAX - FUDGE_MIN)); + int untilNextInterval = flexyInterval - currentSeconds % flexyInterval; if(untilNextInterval < MIN_INTERVAL_SECONDS) untilNextInterval = MIN_INTERVAL_SECONDS; when = System.currentTimeMillis() + untilNextInterval * 1000;