Several minor fixes to sync callbacks, ui fixes to TagViewFragment

pull/14/head
Sam Bosley 13 years ago
parent 89709ab71f
commit 3e1c722280

@ -22,7 +22,6 @@ import android.support.v4.view.Menu;
import android.support.v4.view.MenuItem;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
@ -324,37 +323,33 @@ public class TagViewFragment extends TaskListFragment {
if (tagData != null) {
long lastAutoSync = Preferences.getLong(LAST_FETCH_KEY + tagData.getId(), 0);
if(DateUtilities.now() - lastAutoSync > DateUtilities.ONE_HOUR)
refreshData(false);
refreshData();
}
}
/** refresh the list with latest data from the web */
private void refreshData(final boolean manual) {
private void refreshData() {
if (actFmPreferenceService.isLoggedIn()) {
((TextView)taskListView.findViewById(android.R.id.empty)).setText(R.string.DLG_loading);
Runnable callback = new Runnable() {
@Override
public void run() {
Log.e("TagViewFragment", "Refresh data callback");
Activity activity = getActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
reloadTagData(false);
refresh();
((TextView)taskListView.findViewById(android.R.id.empty)).setText(R.string.TLA_no_items);
}
});
}
}
};
ActFmSyncThread.getInstance().enqueueMessage(new BriefMe<TagData>(TagData.class, tagData.getValue(TagData.UUID), tagData.getValue(TagData.PUSHED_AT)), callback);
// TODO: Refresh and reload tagData
// syncService.synchronizeList(tagData, manual, new ProgressBarSyncResultCallback(getActivity(), this,
// R.id.progressBar, new Runnable() {
// @Override
// public void run() {
// if (manual)
// ContextManager.getContext().sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH));
// else
// refresh();
// ((TextView)taskListView.findViewById(android.R.id.empty)).setText(R.string.TLA_no_items);
// }
// }));
// Preferences.setLong(LAST_FETCH_KEY + tagData.getId(), DateUtilities.now());
}
}
@ -388,6 +383,10 @@ public class TagViewFragment extends TaskListFragment {
.where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagData.getUuid(), TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0))))));
try {
addedMembers = users.getCount() > 0;
if (addedMembers) {
membersView.setOnClickListener(null);
membersView.removeAllViews();
}
User user = new User();
for (users.moveToFirst(); !users.isAfterLast(); users.moveToNext()) {
user.clear();
@ -404,6 +403,10 @@ public class TagViewFragment extends TaskListFragment {
.where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagData.getUuid(), TagMemberMetadata.KEY),
TagMemberMetadata.USER_UUID.like("%@%"), TagMetadata.DELETION_DATE.eq(0)))); //$NON-NLS-1$
try {
if (!addedMembers && byEmail.getCount() > 0) {
membersView.setOnClickListener(null);
membersView.removeAllViews();
}
addedMembers = addedMembers || byEmail.getCount() > 0;
TagMetadata tm = new TagMetadata();
for (byEmail.moveToFirst(); !byEmail.isAfterLast(); byEmail.moveToNext()) {
@ -419,11 +422,6 @@ public class TagViewFragment extends TaskListFragment {
} finally {
byEmail.close();
}
if (addedMembers) {
membersView.setOnClickListener(null);
membersView.removeAllViews();
}
}
} catch (JSONException e) {
e.printStackTrace();
@ -491,7 +489,7 @@ public class TagViewFragment extends TaskListFragment {
final JSONObject memberToUse = member;
final String memberName = displayName(memberToUse);
if (memberToUse.has("picture")) {
if (memberToUse.has("picture") && !TextUtils.isEmpty(memberToUse.getString("picture"))) {
image.setUrl(memberToUse.getString("picture"));
}
image.setOnClickListener(listenerForImage(memberToUse, id, memberName));
@ -596,7 +594,7 @@ public class TagViewFragment extends TaskListFragment {
//refreshUpdatesList();
}
});
refreshData(false);
refreshData();
NotificationManager nm = new AndroidNotificationManager(ContextManager.getContext());
try {
@ -637,7 +635,7 @@ public class TagViewFragment extends TaskListFragment {
AndroidUtilities.tryUnregisterReceiver(getActivity(), notifyReceiver);
}
protected void reloadTagData() {
protected void reloadTagData(boolean onActivityResult) {
tagData = tagDataService.fetchById(tagData.getId(), TagData.PROPERTIES); // refetch
if (tagData == null) {
// This can happen if a tag has been deleted as part of a sync
@ -653,9 +651,13 @@ public class TagViewFragment extends TaskListFragment {
if (activity instanceof TaskListActivity) {
((TaskListActivity) activity).setListsTitle(filter.title);
FilterListFragment flf = ((TaskListActivity) activity).getFilterListFragment();
if (flf != null)
if (flf != null) {
if (!onActivityResult)
flf.refresh();
else
flf.clear();
}
}
taskAdapter = null;
Flags.set(Flags.REFRESH);
}
@ -663,7 +665,7 @@ public class TagViewFragment extends TaskListFragment {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_SETTINGS && resultCode == Activity.RESULT_OK) {
reloadTagData();
reloadTagData(true);
} else {
super.onActivityResult(requestCode, resultCode, data);
}
@ -674,7 +676,7 @@ public class TagViewFragment extends TaskListFragment {
// handle my own menus
switch (id) {
case MENU_REFRESH_ID:
refreshData(true);
refreshData();
return true;
case MENU_LIST_SETTINGS_ID:
settingsListener.onClick(null);

@ -8,10 +8,12 @@ import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import android.content.Intent;
import android.util.Log;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
@ -21,6 +23,7 @@ import com.todoroo.astrid.actfm.sync.messages.ClientToServerMessage;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.actfm.sync.messages.ReplayOutstandingEntries;
import com.todoroo.astrid.actfm.sync.messages.ServerToClientMessage;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.dao.OutstandingEntryDao;
import com.todoroo.astrid.dao.RemoteModelDao;
@ -38,7 +41,6 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.data.UserActivityOutstanding;
import com.todoroo.astrid.utility.Flags;
public class ActFmSyncThread {
@ -171,15 +173,21 @@ public class ActFmSyncThread {
messageBatch.add(message);
}
while (callbackBatch.size() < batchSize && !callbackBatch.isEmpty()) {
while (callbackBatch.size() < batchSize && !pendingCallbacks.isEmpty()) {
Runnable callback = pendingCallbacks.remove(0);
callbackBatch.add(callback);
}
if (messageBatch.isEmpty() && timeForBackgroundSync()) {
Flags.checkAndClear(Flags.BG_SYNC);
messageBatch.add(BriefMe.instantiateBriefMeForClass(Task.class, NameMaps.PUSHED_AT_TASKS));
messageBatch.add(BriefMe.instantiateBriefMeForClass(TagData.class, NameMaps.PUSHED_AT_TAGS));
callbackBatch.add(new Runnable() {
@Override
public void run() {
Intent refresh = new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH);
ContextManager.getContext().sendBroadcast(refresh);
}
});
}
if (!messageBatch.isEmpty() && checkForToken()) {
@ -228,8 +236,6 @@ public class ActFmSyncThread {
messageBatch = new LinkedList<ClientToServerMessage<?>>();
callbackBatch = new LinkedList<Runnable>();
// Intent refresh = new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH);
// ContextManager.getContext().sendBroadcast(refresh);
}
}
} catch (Exception e) {
@ -250,7 +256,7 @@ public class ActFmSyncThread {
}
private boolean timeForBackgroundSync() {
return Flags.check(Flags.BG_SYNC);
return false;
}
private void repopulateQueueFromOutstandingTables() {

@ -14,6 +14,8 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import com.timsu.astrid.GCMIntentService;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.AbstractModel;
@ -24,6 +26,9 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.messages.BriefMe;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.billing.BillingConstants;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
@ -42,7 +47,6 @@ import com.todoroo.astrid.sync.SyncResultCallback;
import com.todoroo.astrid.sync.SyncV2Provider;
import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.utility.Flags;
/**
* Exposes sync action
@ -176,10 +180,16 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
actFmPreferenceService.recordSyncStart();
updateUserStatus();
Flags.set(Flags.BG_SYNC);
synchronized(ActFmSyncMonitor.getInstance()) {
ActFmSyncMonitor.getInstance().notifyAll();
Runnable refreshCallback = new Runnable() {
@Override
public void run() {
Intent refresh = new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH);
ContextManager.getContext().sendBroadcast(refresh);
}
};
ActFmSyncThread.getInstance().enqueueMessage(BriefMe.instantiateBriefMeForClass(Task.class, NameMaps.PUSHED_AT_TASKS), null);
ActFmSyncThread.getInstance().enqueueMessage(BriefMe.instantiateBriefMeForClass(TagData.class, NameMaps.PUSHED_AT_TAGS), refreshCallback);
// startUsersSync(callback, finisher);
//

@ -36,8 +36,6 @@ public class Flags {
*/
public static final int TLFP_NO_INTERCEPT_TOUCH = 1 << 7;
public static final int BG_SYNC = 1 << 8;
public static boolean checkAndClear(int flag) {
boolean set = (state & flag) > 0;
state &= ~flag;

Loading…
Cancel
Save