diff --git a/api/res/values/strings.xml b/api/res/values/strings.xml index 8145ebc05..25eb24f78 100644 --- a/api/res/values/strings.xml +++ b/api/res/values/strings.xml @@ -151,6 +151,9 @@ Sync & backup + + Sync now + Astrid.com, Google Tasks, saved data, local backup diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java index 8f4b1661f..f8c3a11c8 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java @@ -735,6 +735,7 @@ public class EditPeopleControlSet extends PopupControlSet { } else if(userJson.optLong("id") == Task.USER_ID_UNASSIGNED) { dirty = task.getValue(Task.USER_ID) == Task.USER_ID_UNASSIGNED ? dirty : true; task.setValue(Task.USER_ID, Task.USER_ID_UNASSIGNED); + task.setValue(Task.USER, "{}"); } else { String user = userJson.toString(); @@ -758,7 +759,6 @@ public class EditPeopleControlSet extends PopupControlSet { task.setValue(Task.USER_ID, userJson.optLong("id", Task.USER_ID_EMAIL)); task.setValue(Task.USER, user); - String assignedName = userJson.optString("name", userEmail); } JSONObject sharedWith = sharedWithContainer.parseSharedWithAndTags(activity, false); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java index 104aa558e..5a1746812 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java @@ -5,6 +5,8 @@ */ package com.todoroo.astrid.actfm; +import java.util.concurrent.atomic.AtomicBoolean; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -105,7 +107,9 @@ public class TagViewFragment extends TaskListFragment { private boolean dataLoaded = false; - private long currentId; + private long currentId = Task.USER_ID_IGNORE; + + protected AtomicBoolean isBeingFiltered = new AtomicBoolean(false); private Filter originalFilter; @@ -443,6 +447,7 @@ public class TagViewFragment extends TaskListFragment { else filterByAssigned.setText(getString(R.string.actfm_TVA_filtered_by_assign, displayName)); } + isBeingFiltered.set(true); setUpTaskList(); } } @@ -458,6 +463,7 @@ public class TagViewFragment extends TaskListFragment { private void resetAssignedFilter() { currentId = Task.USER_ID_IGNORE; + isBeingFiltered.set(false); filter = originalFilter; View filterAssigned = getView().findViewById(R.id.filter_assigned); if (filterAssigned != null) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java index 748c72a57..f516902d0 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -1168,6 +1168,11 @@ public final class ActFmSyncService { * @param done */ public void fetchUpdatesForTag(final TagData tagData, final boolean manual, Runnable done) { + if (tagData.getFlag(TagData.FLAGS, TagData.FLAG_FEATURED)) { + if (done != null) + done.run(); + return; + } invokeFetchList("activity", manual, null, new UpdateListItemProcessor(), done, "updates:" + tagData.getId(), "tag_id", tagData.getValue(TagData.REMOTE_ID)); diff --git a/astrid/plugin-src/com/todoroo/astrid/alarms/AlarmControlSet.java b/astrid/plugin-src/com/todoroo/astrid/alarms/AlarmControlSet.java index 0433f72e0..780f6dc04 100644 --- a/astrid/plugin-src/com/todoroo/astrid/alarms/AlarmControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/alarms/AlarmControlSet.java @@ -58,12 +58,13 @@ public final class AlarmControlSet extends TaskEditControlSet { @Override protected void afterInflate() { this.alertsContainer = (LinearLayout) getView().findViewById(R.id.alert_container); - getView().findViewById(R.id.alarms_add).setOnClickListener(new View.OnClickListener() { + View.OnClickListener addAlarmListener = new View.OnClickListener() { @Override public void onClick(View arg0) { addAlarm(new Date()); } - }); + }; + getView().findViewById(R.id.alarms_add).setOnClickListener(addAlarmListener); pickerDialog = new DateAndTimeDialog(activity, 0); } diff --git a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterActivity.java b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterActivity.java index 786d1914d..008cfed1f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/core/CustomFilterActivity.java @@ -158,7 +158,7 @@ public class CustomFilterActivity extends FragmentActivity { ab.setDisplayHomeAsUpEnabled(true); setContentView(R.layout.custom_filter_activity); - setTitle(R.string.CFA_title); + setTitle(R.string.FLA_new_filter); listView = (ListView) findViewById(android.R.id.list); diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/auth/ModernAuthManager.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/auth/ModernAuthManager.java index fe8fc6e0d..34567788b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/auth/ModernAuthManager.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/auth/ModernAuthManager.java @@ -212,12 +212,16 @@ public class ModernAuthManager implements AuthManager { } public static String[] getAccounts(Activity activity) { - GoogleAccountManager accountManager = new GoogleAccountManager(activity); - Account[] accounts = accountManager.getAccounts(); - ArrayList accountNames = new ArrayList(); - for (Account a : accounts) { - accountNames.add(a.name); + try { + GoogleAccountManager accountManager = new GoogleAccountManager(activity); + Account[] accounts = accountManager.getAccounts(); + ArrayList accountNames = new ArrayList(); + for (Account a : accounts) { + accountNames.add(a.name); + } + return accountNames.toArray(new String[accountNames.size()]); + } catch (Exception e) { + return new String[] {}; // Empty array on failure } - return accountNames.toArray(new String[accountNames.size()]); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java index 4a5adb173..54048d2ed 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/OrderedMetadataListFragmentHelper.java @@ -13,15 +13,12 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import android.app.Activity; -import android.content.Context; import android.database.Cursor; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.View; -import android.view.ViewGroup; -import android.view.ViewGroup.MarginLayoutParams; import android.widget.ListView; import com.commonsware.cwac.tlv.TouchListView.DropListener; @@ -228,25 +225,6 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm return (ViewHolder)((View)v.getParent()).getTag(); } - @Override - public View newView(Context context, Cursor cursor, ViewGroup parent) { - View view = super.newView(context, cursor, parent); - view.getLayoutParams().height = Math.round(45 * metrics.density); - - ViewHolder vh = (ViewHolder) view.getTag(); - - MarginLayoutParams rowParams = (MarginLayoutParams) vh.rowBody.getLayoutParams(); - rowParams.topMargin = rowParams.bottomMargin = 0; - - ViewGroup.LayoutParams pictureParams = vh.picture.getLayoutParams(); - pictureParams.width = pictureParams.height = Math.round(38 * metrics.density); - - pictureParams = vh.pictureBorder.getLayoutParams(); - pictureParams.width = pictureParams.height = Math.round(38 * metrics.density); - - return view; - } - @Override public synchronized void setFieldContentsAndVisibility(View view) { super.setFieldContentsAndVisibility(view); diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java index 8ae8db831..2707bf38f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java @@ -21,7 +21,7 @@ public class SubtasksTagListFragment extends TagViewFragment { public SubtasksTagListFragment() { super(); - helper = new AstridOrderedListFragmentHelper(this, new SubtasksTagUpdater()); + helper = new AstridOrderedListFragmentHelper(this, new SubtasksTagUpdater(isBeingFiltered)); } @Override diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java index 77341f0d7..17ad2c080 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java @@ -1,13 +1,21 @@ package com.todoroo.astrid.subtasks; +import java.util.concurrent.atomic.AtomicBoolean; + import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.data.TagData; public class SubtasksTagUpdater extends SubtasksUpdater { + private final AtomicBoolean isBeingFiltered; + + public SubtasksTagUpdater(AtomicBoolean isBeingFiltered) { + this.isBeingFiltered = isBeingFiltered; + } + @Override protected String getSerializedTree(TagData list, Filter filter) { - if (list == null) + if (list == null || isBeingFiltered.get()) return "[]"; //$NON-NLS-1$ String order = list.getValue(TagData.TAG_ORDERING); if (order == null || "null".equals(order)) //$NON-NLS-1$ @@ -18,10 +26,19 @@ public class SubtasksTagUpdater extends SubtasksUpdater { @Override protected void writeSerialization(TagData list, String serialized, boolean shouldQueueSync) { - list.setValue(TagData.TAG_ORDERING, serialized); - tagDataService.save(list); - if (shouldQueueSync) - actFmSyncService.pushTagOrderingOnSave(list.getId()); + if (!isBeingFiltered.get()) { + list.setValue(TagData.TAG_ORDERING, serialized); + tagDataService.save(list); + if (shouldQueueSync) + actFmSyncService.pushTagOrderingOnSave(list.getId()); + } + } + + @Override + public int getIndentForTask(long targetTaskId) { + if (isBeingFiltered.get()) + return 0; + return super.getIndentForTask(targetTaskId); } } diff --git a/astrid/res/drawable-hdpi/trashcan.png b/astrid/res/drawable-hdpi/trashcan.png new file mode 100644 index 000000000..417fbf7b9 Binary files /dev/null and b/astrid/res/drawable-hdpi/trashcan.png differ diff --git a/astrid/res/drawable-xhdpi/trashcan.png b/astrid/res/drawable-xhdpi/trashcan.png new file mode 100644 index 000000000..d1af42a65 Binary files /dev/null and b/astrid/res/drawable-xhdpi/trashcan.png differ diff --git a/astrid/res/drawable/trashcan.png b/astrid/res/drawable/trashcan.png new file mode 100644 index 000000000..54ba462ca Binary files /dev/null and b/astrid/res/drawable/trashcan.png differ diff --git a/astrid/res/layout-land/share_activity.xml b/astrid/res/layout-land/share_activity.xml index e8dec7ca4..c5d8628b2 100644 --- a/astrid/res/layout-land/share_activity.xml +++ b/astrid/res/layout-land/share_activity.xml @@ -3,7 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:background="#aaa" > + android:background="#eee" > -