Add progress bar for fetching task activity

pull/14/head
Tim Su 14 years ago
parent 11bb7e6e71
commit 7dcd0736f3

@ -1,7 +1,6 @@
package com.todoroo.astrid.actfm; package com.todoroo.astrid.actfm;
import android.app.ListActivity; import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -28,7 +27,6 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities; 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.CameraResultCallback;
import com.todoroo.astrid.actfm.ActFmCameraModule.ClearImageCallback; import com.todoroo.astrid.actfm.ActFmCameraModule.ClearImageCallback;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; 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.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.Update;
import com.todoroo.astrid.helper.ProgressBarSyncResultCallback;
import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
@ -141,7 +140,7 @@ public class TagUpdatesActivity extends ListActivity {
}); });
refreshUpdatesList(); refreshUpdatesList();
refreshActivity(null); // start a pull in the background refreshActivity(false); // start a pull in the background
} }
private void refreshUpdatesList() { private void refreshUpdatesList() {
@ -193,8 +192,7 @@ public class TagUpdatesActivity extends ListActivity {
case MENU_REFRESH_ID: { case MENU_REFRESH_ID: {
final ProgressDialog progressDialog = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait)); refreshActivity(true);
refreshActivity(progressDialog);
return true; return true;
} }
@ -202,20 +200,25 @@ public class TagUpdatesActivity extends ListActivity {
} }
} }
private void refreshActivity(final ProgressDialog progressDialog) { private void refreshActivity(boolean manual) {
actFmSyncService.fetchUpdatesForTag(tagData, true, new Runnable() { final ProgressBarSyncResultCallback callback = new ProgressBarSyncResultCallback(
@Override this, R.id.progressBar, new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
refreshUpdatesList(); refreshUpdatesList();
if (progressDialog != null)
DialogUtilities.dismissDialog(TagUpdatesActivity.this, progressDialog);
} }
}); });
callback.started();
callback.incrementMax(100);
actFmSyncService.fetchUpdatesForTag(tagData, manual, new Runnable() {
@Override
public void run() {
callback.incrementProgress(50);
callback.finished();
} }
}); });
callback.incrementProgress(50);
} }
@SuppressWarnings("nls") @SuppressWarnings("nls")

@ -10,7 +10,6 @@ import java.util.List;
import org.json.JSONObject; import org.json.JSONObject;
import android.app.ListActivity; import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
@ -37,7 +36,6 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.actfm.sync.ActFmSyncService; 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.Metadata;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.Update; import com.todoroo.astrid.data.Update;
import com.todoroo.astrid.helper.ProgressBarSyncResultCallback;
import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.service.SyncV2Service.SyncResultCallback;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
public class EditNoteActivity extends ListActivity { public class EditNoteActivity extends ListActivity {
@ -95,12 +95,12 @@ public class EditNoteActivity extends ListActivity {
findViewById(R.id.add_comment).setVisibility(View.VISIBLE); findViewById(R.id.add_comment).setVisibility(View.VISIBLE);
if(task.getValue(Task.REMOTE_ID) == 0) if(task.getValue(Task.REMOTE_ID) == 0)
refreshData(true); refreshData(true, null);
else { else {
String fetchKey = LAST_FETCH_KEY + task.getId(); String fetchKey = LAST_FETCH_KEY + task.getId();
long lastFetchDate = Preferences.getLong(fetchKey, 0); long lastFetchDate = Preferences.getLong(fetchKey, 0);
if(DateUtilities.now() > lastFetchDate + 300000L) { if(DateUtilities.now() > lastFetchDate + 300000L) {
refreshData(false); refreshData(false, null);
Preferences.setLong(fetchKey, DateUtilities.now()); Preferences.setLong(fetchKey, DateUtilities.now());
} else { } else {
loadingText.setText(R.string.ENA_no_comments); loadingText.setText(R.string.ENA_no_comments);
@ -223,21 +223,32 @@ public class EditNoteActivity extends ListActivity {
// --- events // --- events
private void refreshData(boolean manual) { private void refreshData(boolean manual, SyncResultCallback existingCallback) {
final ProgressDialog progressDialog; final SyncResultCallback callback;
if(manual) if(existingCallback != null)
progressDialog = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait)); callback = existingCallback;
else else {
progressDialog = null; 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);
}
if(task.getValue(Task.REMOTE_ID) == 0) {
// push task if it hasn't been pushed // push task if it hasn't been pushed
if(task.getValue(Task.REMOTE_ID) == 0) {
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
actFmSyncService.pushTask(task.getId()); actFmSyncService.pushTask(task.getId());
refreshData(false); refreshData(false, callback);
DialogUtilities.dismissDialog(EditNoteActivity.this, progressDialog);
} }
}).start(); }).start();
return; return;
@ -246,17 +257,11 @@ public class EditNoteActivity extends ListActivity {
actFmSyncService.fetchUpdatesForTask(task, manual, new Runnable() { actFmSyncService.fetchUpdatesForTask(task, manual, new Runnable() {
@Override @Override
public void run() { public void run() {
runOnUiThread(new Runnable() { callback.incrementProgress(50);
@Override callback.finished();
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);
} }
private void addComment() { private void addComment() {
@ -288,7 +293,7 @@ public class EditNoteActivity extends ListActivity {
switch (item.getItemId()) { switch (item.getItemId()) {
case MENU_REFRESH_ID: { case MENU_REFRESH_ID: {
refreshData(true); refreshData(true, null);
return true; return true;
} }

@ -6,6 +6,15 @@
android:orientation="vertical" android:orientation="vertical"
android:background="@drawable/background_gradient"> android:background="@drawable/background_gradient">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="fill_parent"
android:layout_height="5dip"
style="@android:style/Widget.ProgressBar.Horizontal"
android:visibility="gone"
android:layout_weight="1" />
<FrameLayout <FrameLayout
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

@ -24,6 +24,14 @@
style="@style/TextAppearance.TLA_Header"/> style="@style/TextAppearance.TLA_Header"/>
</LinearLayout> </LinearLayout>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="fill_parent"
android:layout_height="5dip"
style="@android:style/Widget.ProgressBar.Horizontal"
android:visibility="gone"
android:layout_weight="1" />
<ListView <ListView
android:id="@android:id/list" android:id="@android:id/list"
android:layout_width="fill_parent" android:layout_width="fill_parent"

Loading…
Cancel
Save