From 33a3f2e1df0beb77305b6dac1efa033ce8812a76 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Tue, 24 Feb 2009 21:51:46 +0000 Subject: [PATCH] Cleaned up the refresh code, not doing a refresh when you do timer or postponing. --- AndroidManifest.xml | 4 +- .../astrid/activities/TaskListAdapter.java | 10 +++- .../activities/TaskListSubActivity.java | 57 ++++++++++++------- .../astrid/data/task/TaskModelForList.java | 3 + 4 files changed, 50 insertions(+), 24 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 1a0aa8b13..5d92f6a44 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="93" + android:versionName="2.4.8"> diff --git a/src/com/timsu/astrid/activities/TaskListAdapter.java b/src/com/timsu/astrid/activities/TaskListAdapter.java index 045edd71d..c64d12531 100644 --- a/src/com/timsu/astrid/activities/TaskListAdapter.java +++ b/src/com/timsu/astrid/activities/TaskListAdapter.java @@ -232,7 +232,7 @@ public class TaskListAdapter extends ArrayAdapter { final ImageView timer = ((ImageView)view.findViewById(R.id.imageLeft)); if(task.getTimerStart() != null) { timer.setImageDrawable(r.getDrawable(R.drawable.icon_timer)); - view.setMinimumHeight(80); + view.setMinimumHeight(90); } else { timer.setImageDrawable(null); view.setMinimumHeight(45); @@ -547,6 +547,14 @@ public class TaskListAdapter extends ArrayAdapter { } + public void refreshItem(ListView listView, int position) { + View view = listView.getChildAt(position); + TaskModelForList task = hooks.getTaskArray().get(position); + task.clearCache(); + + setupView(view, task); + } + /** Set listeners for this view. This is called once total */ private void addListeners(View view) { final CheckBox progress = ((CheckBox)view.findViewById(R.id.cb1)); diff --git a/src/com/timsu/astrid/activities/TaskListSubActivity.java b/src/com/timsu/astrid/activities/TaskListSubActivity.java index d2ed7e62a..c4197cadd 100644 --- a/src/com/timsu/astrid/activities/TaskListSubActivity.java +++ b/src/com/timsu/astrid/activities/TaskListSubActivity.java @@ -132,7 +132,8 @@ public class TaskListSubActivity extends SubActivity { private TaskModelForList selectedTask = null; private Handler handler = null; private Thread loadingThread = null; - private Thread reLoadThread = null; + private Runnable reLoadRunnable = null; + private TaskListAdapter listAdapter = null; // display filters private static boolean filterShowHidden = false; @@ -170,7 +171,7 @@ public class TaskListSubActivity extends SubActivity { setupUIComponents(); - reLoadThread = new Thread(new Runnable() { + reLoadRunnable = new Runnable() { @Override public void run() { suppressReload = true; @@ -178,13 +179,12 @@ public class TaskListSubActivity extends SubActivity { @Override public void run() { loadingText.setVisibility(View.VISIBLE); - listView.setAdapter(null); } }); fillData(); } - }); + }; // time to go! loadingThread = new Thread(new Runnable() { @@ -218,7 +218,6 @@ public class TaskListSubActivity extends SubActivity { } }); } - loadingThread = null; } }); loadingThread.start(); @@ -624,16 +623,16 @@ public class TaskListSubActivity extends SubActivity { /** Set up the adapter for our task list */ private void setUpListUI() { // set up our adapter - TaskListAdapter tasks = new TaskListAdapter(getParent(), + listAdapter = new TaskListAdapter(getParent(), R.layout.task_list_row, taskArray, new TaskListHooks()); - listView.setAdapter(tasks); + listView.setAdapter(listAdapter); listView.setItemsCanFocus(true); if(selectedTask != null) { try { - int selectedPosition = tasks.getPosition(selectedTask); + int selectedPosition = listAdapter.getPosition(selectedTask); View v = listView.getChildAt(selectedPosition); - tasks.setExpanded(v, selectedTask, true); + listAdapter.setExpanded(v, selectedTask, true); listView.setSelection(selectedPosition); } catch (Exception e) { Log.e("astrid", "error with selected task", e); @@ -712,7 +711,7 @@ public class TaskListSubActivity extends SubActivity { @Override protected void onSaveInstanceState(Bundle outState) { - if(loadingThread != null) + if(loadingThread.isAlive()) loadingThread.stop(); } @@ -727,7 +726,8 @@ public class TaskListSubActivity extends SubActivity { R.string.sync_no_synchronizers), null); return; } - fillData(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); } }); } else if(requestCode == ACTIVITY_TAGS) @@ -768,7 +768,8 @@ public class TaskListSubActivity extends SubActivity { @Override public void onClick(DialogInterface dialog, int which) { getTaskController().deleteTask(taskId); - fillData(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); } }) .setNegativeButton(android.R.string.cancel, null) @@ -791,7 +792,7 @@ public class TaskListSubActivity extends SubActivity { task.stopTimerAndUpdateElapsedTime(); } getTaskController().saveTask(task); - fillData(); + listAdapter.refreshItem(listView, taskArray.indexOf(task)); } /** Show the tags view */ @@ -799,6 +800,12 @@ public class TaskListSubActivity extends SubActivity { switchToActivity(TaskList.AC_TAG_LIST, null); } + @Override + public void launchActivity(Intent intent, int requestCode) { + suppressReload = false; + super.launchActivity(intent, requestCode); + } + /** Save the sorting mode to the preferences */ private void saveTaskListSort() { int sortId = sortMode.ordinal() + 1; @@ -844,7 +851,7 @@ public class TaskListSubActivity extends SubActivity { } @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { + public boolean onMenuItemSelected(int featureId, final MenuItem item) { final TaskModelForList task; Resources r = getResources(); @@ -901,6 +908,7 @@ public class TaskListSubActivity extends SubActivity { case TaskListAdapter.CONTEXT_TIMER_ID: task = taskArray.get(item.getGroupId()); toggleTimer(task); + suppressReload = true; return true; case TaskListAdapter.CONTEXT_POSTPONE_ID: task = taskArray.get(item.getGroupId()); @@ -918,7 +926,8 @@ public class TaskListSubActivity extends SubActivity { task.getHiddenUntil(), postponeMillis, false)); getTaskController().saveTask(task); - fillData(); + suppressReload = true; + listAdapter.refreshItem(listView, item.getGroupId()); } }); return true; @@ -927,12 +936,14 @@ public class TaskListSubActivity extends SubActivity { case CONTEXT_FILTER_HIDDEN: TaskListSubActivity.filterShowHidden = !filterShowHidden; saveTaskListSort(); - reLoadThread.start(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); return true; case CONTEXT_FILTER_DONE: TaskListSubActivity.filterShowDone = !filterShowDone; saveTaskListSort(); - reLoadThread.start(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); return true; case CONTEXT_FILTER_TAG: switchToActivity(TaskList.AC_TASK_LIST, null); @@ -943,7 +954,8 @@ public class TaskListSubActivity extends SubActivity { TaskListSubActivity.sortReverse = false; TaskListSubActivity.sortMode = SortMode.AUTO; saveTaskListSort(); - fillData(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); return true; case CONTEXT_SORT_ALPHA: if(sortMode == SortMode.ALPHA) @@ -951,7 +963,8 @@ public class TaskListSubActivity extends SubActivity { TaskListSubActivity.sortReverse = false; TaskListSubActivity.sortMode = SortMode.ALPHA; saveTaskListSort(); - fillData(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); return true; case CONTEXT_SORT_DUEDATE: if(sortMode == SortMode.DUEDATE) @@ -959,12 +972,14 @@ public class TaskListSubActivity extends SubActivity { TaskListSubActivity.sortReverse = false; TaskListSubActivity.sortMode = SortMode.DUEDATE; saveTaskListSort(); - fillData(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); return true; case CONTEXT_SORT_REVERSE: TaskListSubActivity.sortReverse = !sortReverse; saveTaskListSort(); - fillData(); + loadingThread = new Thread(reLoadRunnable); + loadingThread.start(); return true; } diff --git a/src/com/timsu/astrid/data/task/TaskModelForList.java b/src/com/timsu/astrid/data/task/TaskModelForList.java index 5b4413396..fee56a989 100644 --- a/src/com/timsu/astrid/data/task/TaskModelForList.java +++ b/src/com/timsu/astrid/data/task/TaskModelForList.java @@ -108,6 +108,9 @@ public class TaskModelForList extends AbstractTaskModel { public void putCachedLabel(int key, String value) { displayLabels.put(key, value); } + public void clearCache() { + displayLabels.clear(); + } // --- constructors