diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 1d3fc4139..5f7e2cc02 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="90" + android:versionName="2.4.5"> diff --git a/src/com/timsu/astrid/activities/TagListSubActivity.java b/src/com/timsu/astrid/activities/TagListSubActivity.java index b6315a37a..c85520ffc 100644 --- a/src/com/timsu/astrid/activities/TagListSubActivity.java +++ b/src/com/timsu/astrid/activities/TagListSubActivity.java @@ -32,6 +32,7 @@ import android.content.res.Resources; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; +import android.util.Log; import android.view.ContextMenu; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -160,10 +161,12 @@ public class TagListSubActivity extends SubActivity { /** Fill in the Tag List with our tags */ private void fillData() { - tagArray = getTagController().getAllTags(getParent()); - - // perform sort - sortTagArray(); + try { + tagArray = getTagController().getAllTags(getParent()); + sortTagArray(); + } catch (Exception e) { + Log.e("astrid", "Error loading list", e); + } handler.post(new Runnable() { @Override diff --git a/src/com/timsu/astrid/activities/TaskListSubActivity.java b/src/com/timsu/astrid/activities/TaskListSubActivity.java index e9fe0972b..c228daaf1 100644 --- a/src/com/timsu/astrid/activities/TaskListSubActivity.java +++ b/src/com/timsu/astrid/activities/TaskListSubActivity.java @@ -132,6 +132,7 @@ public class TaskListSubActivity extends SubActivity { private TaskModelForList selectedTask = null; private Handler handler = null; private Thread loadingThread = null; + private Thread reLoadThread = null; // display filters private static boolean filterShowHidden = false; @@ -169,30 +170,35 @@ public class TaskListSubActivity extends SubActivity { setupUIComponents(); + reLoadThread = new Thread(new Runnable() { + @Override + public void run() { + suppressReload = true; + handler.post(new Runnable() { + @Override + public void run() { + loadingText.setVisibility(View.VISIBLE); + listView.setAdapter(null); + } + }); + + fillData(); + } + }); + // time to go! loadingThread = new Thread(new Runnable() { @Override public void run() { + handler.post(new Runnable() { + @Override + public void run() { + loadingText.setVisibility(View.VISIBLE); + } + }); + loadTaskListSort(); - try { - fillData(); - } catch (StaleDataException e) { - // happens when you rotate the screen whiel the thread is - // still running. i don't think it's avoidable? - Log.w("astrid", "StaleDataException", e); - } catch (final Exception e) { - Log.e("astrid", "Error loading task list", e); - handler.post(new Runnable() { - public void run() { - DialogUtilities.okDialog(getParent(), - "Error loading task list, FYI. If you " + - "continue to have problems, please let " + - "me know!\n\n" + e.getClass().getSimpleName() + - ": " + e.getMessage(), - null); - } - }); - } + fillData(); // open up reminder box if(variables != null && variables.containsKey(NOTIF_FLAGS_TOKEN) && @@ -216,7 +222,6 @@ public class TaskListSubActivity extends SubActivity { } }); loadingThread.start(); - } /** Initialize UI components */ @@ -427,66 +432,87 @@ public class TaskListSubActivity extends SubActivity { } /** Fill in the Task List with our tasks */ - private void fillData() { - // get a cursor to the task list - Cursor tasksCursor; - if(filterTag != null) { - List tasks = getTagController().getTaggedTasks(getParent(), - filterTag.getTagIdentifier()); - tasksCursor = getTaskController().getTaskListCursorById(tasks); - } else { - if(filterShowDone) - tasksCursor = getTaskController().getAllTaskListCursor(); - else - tasksCursor = getTaskController().getActiveTaskListCursor(); - } - startManagingCursor(tasksCursor); - taskArray = getTaskController().createTaskListFromCursor(tasksCursor); - - // read tags and apply filters + private synchronized void fillData() { int hiddenTasks = 0; // # of tasks hidden int completedTasks = 0; // # of tasks on list that are done - tagMap = getTagController().getAllTagsAsMap(getParent()); - taskTags = new HashMap>(); - for(Iterator i = taskArray.iterator(); i.hasNext();) { - TaskModelForList task = i.next(); + Log.e("astrid", "fill data called! ", new Throwable("hai")); // XXX + + try { + // get a cursor to the task list + Cursor tasksCursor; + if(filterTag != null) { + List tasks = getTagController().getTaggedTasks(getParent(), + filterTag.getTagIdentifier()); + tasksCursor = getTaskController().getTaskListCursorById(tasks); + } else { + if(filterShowDone) + tasksCursor = getTaskController().getAllTaskListCursor(); + else + tasksCursor = getTaskController().getActiveTaskListCursor(); + } + startManagingCursor(tasksCursor); + taskArray = getTaskController().createTaskListFromCursor(tasksCursor); + + // read tags and apply filters + tagMap = getTagController().getAllTagsAsMap(getParent()); + taskTags = new HashMap>(); + + for(Iterator i = taskArray.iterator(); i.hasNext();) { + TaskModelForList task = i.next(); - if(task.isTaskCompleted()) { - if(!filterShowDone) { - i.remove(); - continue; + if(task.isTaskCompleted()) { + if(!filterShowDone) { + i.remove(); + continue; + } } - } - if(selectedTaskId != null && task.getTaskIdentifier().getId() == selectedTaskId) { - selectedTask = task; - } + if(selectedTaskId != null && task.getTaskIdentifier().getId() == selectedTaskId) { + selectedTask = task; + } - // get list of tags - LinkedList tagIds = getTagController().getTaskTags(getParent(), - task.getTaskIdentifier()); - LinkedList tags = new LinkedList(); - for(TagIdentifier tagId : tagIds) { - TagModelForView tag = tagMap.get(tagId); - tags.add(tag); - } - taskTags.put(task, tags); - - // hide hidden - if(!filterShowHidden) { - if(isTaskHidden(task)) { - hiddenTasks++; - i.remove(); - continue; + // get list of tags + LinkedList tagIds = getTagController().getTaskTags(getParent(), + task.getTaskIdentifier()); + LinkedList tags = new LinkedList(); + for(TagIdentifier tagId : tagIds) { + TagModelForView tag = tagMap.get(tagId); + tags.add(tag); + } + taskTags.put(task, tags); + + // hide hidden + if(!filterShowHidden) { + if(isTaskHidden(task)) { + hiddenTasks++; + i.remove(); + continue; + } } - } - if(task.isTaskCompleted()) - completedTasks++; + if(task.isTaskCompleted()) + completedTasks++; + } + } catch (StaleDataException e) { + // happens when you rotate the screen while the thread is + // still running. i don't think it's avoidable? + Log.w("astrid", "StaleDataException", e); + } catch (final Exception e) { + Log.e("astrid", "Error loading task list", e); + handler.post(new Runnable() { + public void run() { + DialogUtilities.okDialog(getParent(), + "Error loading task list, FYI. If you " + + "continue to have problems, please let " + + "me know!\n\n" + e.getClass().getSimpleName() + + ": " + e.getMessage(), + null); + } + }); } - int activeTasks = taskArray.size() - completedTasks; + int activeTasks = taskArray.size() - completedTasks; // sort task list Collections.sort(taskArray, new Comparator() { @Override @@ -722,6 +748,7 @@ public class TaskListSubActivity extends SubActivity { public void onWindowFocusChanged(boolean hasFocus) { // refresh, since stuff might have changed... if(hasFocus) { + Log.e("astrid", "window focus changed. suppress: " + suppressReload); // XXX if(suppressReload) { suppressReload = false; return; @@ -911,12 +938,12 @@ public class TaskListSubActivity extends SubActivity { case CONTEXT_FILTER_HIDDEN: TaskListSubActivity.filterShowHidden = !filterShowHidden; saveTaskListSort(); - fillData(); + reLoadThread.start(); return true; case CONTEXT_FILTER_DONE: TaskListSubActivity.filterShowDone = !filterShowDone; saveTaskListSort(); - fillData(); + reLoadThread.start(); return true; case CONTEXT_FILTER_TAG: switchToActivity(TaskList.AC_TASK_LIST, null);