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;
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")

@ -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;
}

@ -5,6 +5,15 @@
android:layout_height="fill_parent"
android:orientation="vertical"
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
android:layout_width="fill_parent"

@ -23,6 +23,14 @@
android:ellipsize="start"
style="@style/TextAppearance.TLA_Header"/>
</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
android:id="@android:id/list"

Loading…
Cancel
Save