From 7dcd0736f3a74ae3039c10b77941493004a829e2 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 13 Jan 2012 19:26:08 -0800 Subject: [PATCH] Add progress bar for fetching task activity --- .../astrid/actfm/TagUpdatesActivity.java | 33 ++++++------ .../astrid/notes/EditNoteActivity.java | 51 ++++++++++--------- astrid/res/layout/edit_note_activity.xml | 9 ++++ astrid/res/layout/tag_updates_activity.xml | 8 +++ 4 files changed, 63 insertions(+), 38 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesActivity.java index 22155a939..8cd793a1a 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesActivity.java @@ -1,7 +1,6 @@ package com.todoroo.astrid.actfm; import android.app.ListActivity; -import android.app.ProgressDialog; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; @@ -28,7 +27,6 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.actfm.ActFmCameraModule.CameraResultCallback; import com.todoroo.astrid.actfm.ActFmCameraModule.ClearImageCallback; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; @@ -38,6 +36,7 @@ import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Update; +import com.todoroo.astrid.helper.ProgressBarSyncResultCallback; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.TagDataService; @@ -141,7 +140,7 @@ public class TagUpdatesActivity extends ListActivity { }); refreshUpdatesList(); - refreshActivity(null); // start a pull in the background + refreshActivity(false); // start a pull in the background } private void refreshUpdatesList() { @@ -193,8 +192,7 @@ public class TagUpdatesActivity extends ListActivity { case MENU_REFRESH_ID: { - final ProgressDialog progressDialog = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait)); - refreshActivity(progressDialog); + refreshActivity(true); return true; } @@ -202,20 +200,25 @@ public class TagUpdatesActivity extends ListActivity { } } - private void refreshActivity(final ProgressDialog progressDialog) { - actFmSyncService.fetchUpdatesForTag(tagData, true, new Runnable() { + private void refreshActivity(boolean manual) { + final ProgressBarSyncResultCallback callback = new ProgressBarSyncResultCallback( + this, R.id.progressBar, new Runnable() { + @Override + public void run() { + refreshUpdatesList(); + } + }); + + callback.started(); + callback.incrementMax(100); + actFmSyncService.fetchUpdatesForTag(tagData, manual, new Runnable() { @Override public void run() { - runOnUiThread(new Runnable() { - @Override - public void run() { - refreshUpdatesList(); - if (progressDialog != null) - DialogUtilities.dismissDialog(TagUpdatesActivity.this, progressDialog); - } - }); + callback.incrementProgress(50); + callback.finished(); } }); + callback.incrementProgress(50); } @SuppressWarnings("nls") diff --git a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java index 86e4f2b0d..8850a9082 100644 --- a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java @@ -10,7 +10,6 @@ import java.util.List; import org.json.JSONObject; import android.app.ListActivity; -import android.app.ProgressDialog; import android.content.Context; import android.graphics.Color; import android.os.Bundle; @@ -37,7 +36,6 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.ActFmSyncService; @@ -47,9 +45,11 @@ import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Update; +import com.todoroo.astrid.helper.ProgressBarSyncResultCallback; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; +import com.todoroo.astrid.service.SyncV2Service.SyncResultCallback; import com.todoroo.astrid.utility.Flags; public class EditNoteActivity extends ListActivity { @@ -95,12 +95,12 @@ public class EditNoteActivity extends ListActivity { findViewById(R.id.add_comment).setVisibility(View.VISIBLE); if(task.getValue(Task.REMOTE_ID) == 0) - refreshData(true); + refreshData(true, null); else { String fetchKey = LAST_FETCH_KEY + task.getId(); long lastFetchDate = Preferences.getLong(fetchKey, 0); if(DateUtilities.now() > lastFetchDate + 300000L) { - refreshData(false); + refreshData(false, null); Preferences.setLong(fetchKey, DateUtilities.now()); } else { loadingText.setText(R.string.ENA_no_comments); @@ -223,21 +223,32 @@ public class EditNoteActivity extends ListActivity { // --- events - private void refreshData(boolean manual) { - final ProgressDialog progressDialog; - if(manual) - progressDialog = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait)); - else - progressDialog = null; + private void refreshData(boolean manual, SyncResultCallback existingCallback) { + final SyncResultCallback callback; + if(existingCallback != null) + callback = existingCallback; + else { + callback = new ProgressBarSyncResultCallback( + this, R.id.progressBar, new Runnable() { + @Override + public void run() { + setUpListAdapter(); + loadingText.setText(R.string.ENA_no_comments); + loadingText.setVisibility(items.size() == 0 ? View.VISIBLE : View.GONE); + } + }); + + callback.started(); + callback.incrementMax(100); + } + // push task if it hasn't been pushed if(task.getValue(Task.REMOTE_ID) == 0) { - // push task if it hasn't been pushed new Thread(new Runnable() { @Override public void run() { actFmSyncService.pushTask(task.getId()); - refreshData(false); - DialogUtilities.dismissDialog(EditNoteActivity.this, progressDialog); + refreshData(false, callback); } }).start(); return; @@ -246,17 +257,11 @@ public class EditNoteActivity extends ListActivity { actFmSyncService.fetchUpdatesForTask(task, manual, new Runnable() { @Override public void run() { - runOnUiThread(new Runnable() { - @Override - public void run() { - setUpListAdapter(); - loadingText.setText(R.string.ENA_no_comments); - loadingText.setVisibility(items.size() == 0 ? View.VISIBLE : View.GONE); - DialogUtilities.dismissDialog(EditNoteActivity.this, progressDialog); - } - }); + callback.incrementProgress(50); + callback.finished(); } }); + callback.incrementProgress(50); } private void addComment() { @@ -288,7 +293,7 @@ public class EditNoteActivity extends ListActivity { switch (item.getItemId()) { case MENU_REFRESH_ID: { - refreshData(true); + refreshData(true, null); return true; } diff --git a/astrid/res/layout/edit_note_activity.xml b/astrid/res/layout/edit_note_activity.xml index b371ae39f..951355cf1 100644 --- a/astrid/res/layout/edit_note_activity.xml +++ b/astrid/res/layout/edit_note_activity.xml @@ -5,6 +5,15 @@ android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/background_gradient"> + + + + +