diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java index 698507dc6..2d264ab86 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagUpdatesFragment.java @@ -289,7 +289,15 @@ public class TagUpdatesFragment extends ListFragment { return; MenuItem item; - if(actFmPreferenceService.isLoggedIn()) { + boolean showCommentsRefresh = actFmPreferenceService.isLoggedIn(); + if (showCommentsRefresh) { + Activity activity = getActivity(); + if (activity instanceof TaskListActivity) { + TaskListActivity tla = (TaskListActivity) activity; + showCommentsRefresh = tla.getTaskEditFragment() == null; + } + } + if(showCommentsRefresh) { item = menu.add(Menu.NONE, MENU_REFRESH_ID, Menu.NONE, R.string.ENA_refresh_comments); item.setIcon(R.drawable.icn_menu_refresh_dark); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java index f8d4d6376..7e0212130 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java @@ -123,7 +123,8 @@ public class TagViewFragment extends TaskListFragment { ((EditText) getView().findViewById(R.id.quickAddText)).setOnTouchListener(onTouch); View membersEdit = getView().findViewById(R.id.members_edit); - membersEdit.setOnClickListener(settingsListener); + if (membersEdit != null) + membersEdit.setOnClickListener(settingsListener); originalFilter = filter; } @@ -165,8 +166,9 @@ public class TagViewFragment extends TaskListFragment { if (!Preferences.getBoolean(R.string.p_showed_list_settings_help, false)) { Preferences.setBoolean(R.string.p_showed_list_settings_help, true); View tabView = getView().findViewById(R.id.members_edit); - HelpInfoPopover.showPopover(getActivity(), tabView, - R.string.help_popover_list_settings, null); + if (tabView != null) + HelpInfoPopover.showPopover(getActivity(), tabView, + R.string.help_popover_list_settings, null); } } @@ -214,10 +216,10 @@ public class TagViewFragment extends TaskListFragment { } postLoadTagData(); - setUpMembersGallery(); - super.initializeData(); + setUpMembersGallery(); + if (extras.getBoolean(TOKEN_START_ACTIVITY, false)) { extras.remove(TOKEN_START_ACTIVITY); activity.showComments(); @@ -334,12 +336,15 @@ public class TagViewFragment extends TaskListFragment { } catch (JSONException e) { e.printStackTrace(); } - getView().findViewById(R.id.filter_assigned).setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - resetAssignedFilter(); - } - }); + + View filterAssigned = getView().findViewById(R.id.filter_assigned); + if (filterAssigned != null) + filterAssigned.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + resetAssignedFilter(); + } + }); } @SuppressWarnings("nls") @@ -395,11 +400,13 @@ public class TagViewFragment extends TaskListFragment { Criterion assigned = Criterion.and(TaskCriteria.activeAndVisible(), assignedCriterion); filter = TagFilterExposer.filterFromTag(getActivity(), new Tag(tagData), assigned); TextView filterByAssigned = (TextView) getView().findViewById(R.id.filter_assigned); - filterByAssigned.setVisibility(View.VISIBLE); - if (id == Task.USER_ID_UNASSIGNED) - filterByAssigned.setText(getString(R.string.actfm_TVA_filter_by_unassigned)); - else - filterByAssigned.setText(getString(R.string.actfm_TVA_filtered_by_assign, displayName)); + if (filterByAssigned != null) { + filterByAssigned.setVisibility(View.VISIBLE); + if (id == Task.USER_ID_UNASSIGNED) + filterByAssigned.setText(getString(R.string.actfm_TVA_filter_by_unassigned)); + else + filterByAssigned.setText(getString(R.string.actfm_TVA_filtered_by_assign, displayName)); + } setUpTaskList(); } } @@ -416,7 +423,9 @@ public class TagViewFragment extends TaskListFragment { private void resetAssignedFilter() { currentId = Task.USER_ID_IGNORE; filter = originalFilter; - getView().findViewById(R.id.filter_assigned).setVisibility(View.GONE); + View filterAssigned = getView().findViewById(R.id.filter_assigned); + if (filterAssigned != null) + filterAssigned.setVisibility(View.GONE); setUpTaskList(); } diff --git a/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java b/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java index 606d18c19..966ada565 100644 --- a/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java +++ b/astrid/plugin-src/com/todoroo/astrid/backup/BackupPreferences.java @@ -17,10 +17,14 @@ import android.view.View; import android.view.ViewGroup.OnHierarchyChangeListener; import com.timsu.astrid.R; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.TodorooPreferenceActivity; +import com.todoroo.astrid.actfm.ActFmLoginActivity; +import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; /** * Displays synchronization preferences and an action panel so users can @@ -37,6 +41,9 @@ public class BackupPreferences extends TodorooPreferenceActivity { private int statusColor = Color.BLACK; + @Autowired + private ActFmPreferenceService actFmPreferenceService; + @Override public int getPreferenceResource() { return R.xml.preferences_backup; @@ -45,6 +52,7 @@ public class BackupPreferences extends TodorooPreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + DependencyInjectionService.getInstance().inject(this); getListView().setOnHierarchyChangeListener(new OnHierarchyChangeListener() { @Override @@ -68,6 +76,14 @@ public class BackupPreferences extends TodorooPreferenceActivity { return false; } }); + + findPreference(getString(R.string.backup_BAc_cloud)).setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + initiateCloudBackup(); + return false; + } + }); } @Override @@ -133,4 +149,14 @@ public class BackupPreferences extends TodorooPreferenceActivity { } + private void initiateCloudBackup() { + if (actFmPreferenceService.isLoggedIn()) { + DialogUtilities.okDialog(this, getString(R.string.DLG_information_title), 0, + getString(R.string.backup_BPr_cloud_already_logged_in), null); + } else { + Intent intent = new Intent(this, ActFmLoginActivity.class); + startActivity(intent); + } + } + } diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java index 8828eacfa..5adb54cd1 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterMode.java @@ -56,4 +56,9 @@ public class PeopleFilterMode implements FilterModeSpec { TaskListFragment.MENU_ADDONS_ID, MainMenuPopover.MAIN_MENU_ITEM_FRIENDS }; + + @Override + public boolean showComments() { + return false; + } } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java index 9b45cc937..5cc493388 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java @@ -3,6 +3,8 @@ package com.todoroo.astrid.tags.reusable; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; +import android.view.View; +import android.view.ViewGroup; import android.widget.ListView; import com.todoroo.astrid.adapter.FilterAdapter; @@ -34,4 +36,23 @@ public class FeaturedListFilterAdapter extends FilterAdapter { public void unregisterRecevier() { activity.unregisterReceiver(filterReceiver); } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View v = super.getView(position, convertView, parent); + + ViewHolder viewHolder = (ViewHolder) v.getTag(); + viewHolder.size.setVisibility(View.GONE); + viewHolder.name.setSingleLine(false); + viewHolder.name.setLines(2); + viewHolder.name.setMaxLines(2); + + int right = (int) (metrics.density * 10); + int top = (int) (metrics.density * 2); + viewHolder.name.setPadding(0, top, right, 0); + viewHolder.name.setTextSize(14); + viewHolder.name.setLineSpacing(0.0f, 1.2f); + + return v; + } } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterMode.java b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterMode.java index 17b88d631..bfa5ad148 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterMode.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterMode.java @@ -48,6 +48,9 @@ public class FeaturedListFilterMode implements FilterModeSpec { // } - + @Override + public boolean showComments() { + return false; + } } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java index 58968b738..df09acb0f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java @@ -2,8 +2,15 @@ package com.todoroo.astrid.tags.reusable; import android.app.Activity; import android.app.ProgressDialog; +import android.content.Intent; +import android.content.res.Resources; +import android.support.v4.view.Menu; +import android.support.v4.view.MenuItem; +import android.text.TextUtils; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.MenuInflater; import android.view.View; -import android.view.View.OnClickListener; import android.widget.TextView; import android.widget.Toast; @@ -13,16 +20,24 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.actfm.TagViewFragment; +import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.adapter.TaskAdapter; +import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.service.TagDataService; +import com.todoroo.astrid.tags.TagFilterExposer; +import com.todoroo.astrid.tags.TagService.Tag; import com.todoroo.astrid.utility.Flags; public class FeaturedTaskListFragment extends TagViewFragment { @Autowired private TagDataService tagDataService; + private static final int MENU_CLONE_LIST = R.string.actfm_feat_list_clone; + @Override protected TaskAdapter createTaskAdapter(TodorooCursor cursor) { return new ReusableTaskAdapter(this, R.layout.reusable_task_adapter_row, @@ -46,61 +61,119 @@ public class FeaturedTaskListFragment extends TagViewFragment { return R.layout.task_list_body_featured_list; } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + + MenuItem item = menu.add(Menu.NONE, MENU_CLONE_LIST, 0, R.string.actfm_feat_list_clone); + item.setIcon(R.drawable.ic_menu_list_copy); + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + } + + @Override + public boolean handleOptionsMenuItemSelected(int id, Intent intent) { + if (id == MENU_CLONE_LIST) { + cloneList(); + return true; + } + return super.handleOptionsMenuItemSelected(id, intent); + } + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + // Do nothing + } + @Override protected void setUpMembersGallery() { - // Repurposed this method to set up listener for clone list button - View clone = getView().findViewById(R.id.clone_list); - clone.setOnClickListener(new OnClickListener() { + // Repurposed this method to set up the description view + AsyncImageView imageView = (AsyncImageView) getView().findViewById(R.id.url_image); + String imageUrl = tagData.getValue(TagData.PICTURE); + if (!TextUtils.isEmpty(imageUrl)) { + imageView.setVisibility(View.VISIBLE); + imageView.setDefaultImageResource(R.drawable.default_list_0); + imageView.setUrl(imageUrl); + } else { + imageView.setVisibility(View.GONE); + } + + final String description = tagData.getValue(TagData.TAG_DESCRIPTION); + final Resources r = getActivity().getResources(); + TextView desc = (TextView) getView().findViewById(R.id.feat_list_desc); + desc.setText(description); + desc.setLines(4); + desc.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - // Clone list - if (taskAdapter == null || taskAdapter.getCount() == 0) { - Toast.makeText(getActivity(), R.string.actfm_feat_list_clone_empty, Toast.LENGTH_LONG).show(); - return; - } - final String localName = tagData.getValue(TagData.NAME) + " " + getString(R.string.actfm_feat_list_suffix); //$NON-NLS-1$ - long remoteId = 0; - TodorooCursor existing = tagDataService.query(Query.select(TagData.REMOTE_ID) - .where(TagData.NAME.eqCaseInsensitive(localName))); + DialogUtilities.okDialog(getActivity(), r.getString(R.string.DLG_information_title), + 0, description, null); + } + }); + } + + private void cloneList() { + // Clone list + if (taskAdapter == null || taskAdapter.getCount() == 0) { + Toast.makeText(getActivity(), R.string.actfm_feat_list_clone_empty, Toast.LENGTH_LONG).show(); + return; + } + final String localName = tagData.getValue(TagData.NAME) + " " + getString(R.string.actfm_feat_list_suffix); //$NON-NLS-1$ + long remoteId = 0; + TodorooCursor existing = tagDataService.query(Query.select(TagData.REMOTE_ID) + .where(TagData.NAME.eqCaseInsensitive(localName))); + try { + if (existing.getCount() > 0) { + existing.moveToFirst(); + TagData match = new TagData(existing); + remoteId = match.getValue(TagData.REMOTE_ID); + } + + } finally { + existing.close(); + } + + final ProgressDialog pd = DialogUtilities.progressDialog(getActivity(), getString(R.string.actfm_feat_list_cloning)); + + final long finalRemoteId = remoteId; + new Thread(new Runnable() { + @Override + public void run() { + final TodorooCursor tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES); try { - if (existing.getCount() > 0) { - existing.moveToFirst(); - TagData match = new TagData(existing); - remoteId = match.getValue(TagData.REMOTE_ID); + Task t = new Task(); + for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { + t.readFromCursor(tasks); + taskService.cloneReusableTask(t, + localName, finalRemoteId); + } + final Activity activity = getActivity(); + if (activity != null) { + DialogUtilities.dismissDialog(activity, pd); + DialogUtilities.okDialog(activity, getString(R.string.actfm_feat_list_clone_success), null); } - } finally { - existing.close(); - } + Flags.set(Flags.REFRESH); + if (activity instanceof TaskListActivity) { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + TaskListActivity tla = (TaskListActivity) activity; + tla.setFilterMode(TaskListActivity.FILTER_MODE_NORMAL); - final ProgressDialog pd = DialogUtilities.progressDialog(getActivity(), getString(R.string.actfm_feat_list_cloning)); - - final long finalRemoteId = remoteId; - new Thread(new Runnable() { - @Override - public void run() { - TodorooCursor tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES); - try { - Task t = new Task(); - for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { - t.readFromCursor(tasks); - taskService.cloneReusableTask(t, - localName, finalRemoteId); - } - Activity activity = getActivity(); - if (activity != null) { - DialogUtilities.dismissDialog(activity, pd); - DialogUtilities.okDialog(activity, getString(R.string.actfm_feat_list_clone_success), null); - } + Filter clonedFilter; + Tag tag = new Tag(localName, tasks.getCount(), finalRemoteId); + clonedFilter = TagFilterExposer.filterFromTag(activity, tag, TaskCriteria.activeAndVisible()); - Flags.set(Flags.REFRESH); - } finally { - tasks.close(); - } + tla.onFilterItemClicked(clonedFilter); + } + }); } - }).start(); + } finally { + tasks.close(); + } } - }); + }).start(); } @Override diff --git a/astrid/res/drawable-hdpi/ic_menu_list_copy.png b/astrid/res/drawable-hdpi/ic_menu_list_copy.png new file mode 100644 index 000000000..9b6faaee4 Binary files /dev/null and b/astrid/res/drawable-hdpi/ic_menu_list_copy.png differ diff --git a/astrid/res/drawable-xhdpi/ic_menu_list_copy.png b/astrid/res/drawable-xhdpi/ic_menu_list_copy.png new file mode 100644 index 000000000..9b9f0cdd0 Binary files /dev/null and b/astrid/res/drawable-xhdpi/ic_menu_list_copy.png differ diff --git a/astrid/res/drawable/ic_menu_list_copy.png b/astrid/res/drawable/ic_menu_list_copy.png new file mode 100644 index 000000000..409377cdf Binary files /dev/null and b/astrid/res/drawable/ic_menu_list_copy.png differ diff --git a/astrid/res/layout/task_list_body_featured_list.xml b/astrid/res/layout/task_list_body_featured_list.xml index 1c3093292..f0ed64af1 100644 --- a/astrid/res/layout/task_list_body_featured_list.xml +++ b/astrid/res/layout/task_list_body_featured_list.xml @@ -6,50 +6,34 @@ android:layout_height="wrap_content" android:layout_weight="100"> - - + android:background="?attr/asMembersHeaderBackground" + android:padding="15dip" + android:gravity="center_vertical"> + + - + android:singleLine="false" + android:lines="4" + android:ellipsize="end"/> + - - - - diff --git a/astrid/res/values/strings-actfm.xml b/astrid/res/values/strings-actfm.xml index 953e27224..5cc1d6f90 100644 --- a/astrid/res/values/strings-actfm.xml +++ b/astrid/res/values/strings-actfm.xml @@ -273,7 +273,7 @@ - Copy this list + Copy list (Copy) diff --git a/astrid/res/values/strings-backup.xml b/astrid/res/values/strings-backup.xml index 3ff0f6bd9..c27f88db5 100644 --- a/astrid/res/values/strings-backup.xml +++ b/astrid/res/values/strings-backup.xml @@ -39,6 +39,8 @@ How do I restore backups? You need to add the Astrid Power Pack to manage and restore your backups. As a favor, Astrid also automatically backs up your tasks, just in case. + + You already have cloud backup on Astrid.com! @@ -53,6 +55,9 @@ Export Tasks + + + Click for free cloud backup on Astrid.com diff --git a/astrid/res/xml/preferences_backup.xml b/astrid/res/xml/preferences_backup.xml index f7ca38bc3..4cd8433c9 100644 --- a/astrid/res/xml/preferences_backup.xml +++ b/astrid/res/xml/preferences_backup.xml @@ -33,5 +33,11 @@ android:title="@string/backup_BAc_label" android:textSize="24sp" android:gravity="center"/> + + \ No newline at end of file diff --git a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java index 8d68c20c5..816f1a540 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java @@ -303,6 +303,7 @@ public class AstridActivity extends FragmentActivity final FragmentManager fm = getSupportFragmentManager(); Fragment fragment = fm.findFragmentByTag(tag); if(fragment == null || replace) { + Fragment oldFragment = fragment; try { fragment = cls.newInstance(); } catch (InstantiationException e) { @@ -312,8 +313,11 @@ public class AstridActivity extends FragmentActivity } FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - if (container == 0) + if (container == 0) { + if (oldFragment != null && replace) + ft.remove(oldFragment); ft.add(fragment, tag); + } else ft.replace(container, fragment, tag); ft.commit(); diff --git a/astrid/src/com/todoroo/astrid/activity/DefaultFilterMode.java b/astrid/src/com/todoroo/astrid/activity/DefaultFilterMode.java index 6f01049ec..05d9b3812 100644 --- a/astrid/src/com/todoroo/astrid/activity/DefaultFilterMode.java +++ b/astrid/src/com/todoroo/astrid/activity/DefaultFilterMode.java @@ -39,4 +39,9 @@ public class DefaultFilterMode implements FilterModeSpec { // } + @Override + public boolean showComments() { + return true; + } + } diff --git a/astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java b/astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java index 396c5fd8a..1b90dbd7b 100644 --- a/astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java +++ b/astrid/src/com/todoroo/astrid/activity/FilterModeSpec.java @@ -13,5 +13,6 @@ public interface FilterModeSpec { public Filter getDefaultFilter(Context context); public int getMainMenuIconAttr(); public void onFilterItemClickedCallback(FilterListItem item); + public boolean showComments(); } diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java index ea5c8a5cd..06b9b3b29 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListActivity.java @@ -46,6 +46,7 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.core.CustomFilterExposer; +import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.people.PeopleFilterMode; @@ -76,9 +77,10 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener public static final String OPEN_TASK = "openTask"; //$NON-NLS-1$ private static final String FILTER_MODE = "filterMode"; //$NON-NLS-1$ - private static final int FILTER_MODE_NORMAL = 0; - private static final int FILTER_MODE_PEOPLE = 1; - private static final int FILTER_MODE_FEATURED = 2; + + public static final int FILTER_MODE_NORMAL = 0; + public static final int FILTER_MODE_PEOPLE = 1; + public static final int FILTER_MODE_FEATURED = 2; @Autowired private ABTestEventReportingService abTestEventReportingService; @@ -260,6 +262,14 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener } } + @Override + protected Bundle configureIntentAndExtrasWithFilter(Intent intent, + Filter filter) { + Bundle extras = super.configureIntentAndExtrasWithFilter(intent, filter); + getIntent().putExtra(FILTER_MODE, filterMode); + return extras; + } + /** * * @param actionBar @@ -377,6 +387,21 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener return result; } + @Override + public void setupActivityFragment(TagData tagData) { + super.setupActivityFragment(tagData); + + int visibility = (filterModeSpec.showComments() ? View.VISIBLE : View.GONE); + + if (fragmentLayout != LAYOUT_TRIPLE) { + commentsButton.setVisibility(visibility); + } else { + View container = findViewById(R.id.taskedit_fragment_container); + if (container != null) + container.setVisibility(visibility); + } + } + private void setListsDropdownSelected(boolean selected) { int oldTextColor = lists.getTextColors().getDefaultColor(); int textStyle = (selected ? R.style.TextAppearance_ActionBar_ListsHeader_Selected : @@ -678,9 +703,10 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener tlf.handleOptionsMenuItemSelected(item, customIntent); } - private void setFilterMode(int mode) { + public void setFilterMode(int mode) { filterMode = mode; updateFilterModeSpec(mode); + getIntent().putExtra(FILTER_MODE, mode); refreshMainMenu(); if (fragmentLayout == LAYOUT_SINGLE) { @@ -703,7 +729,6 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener onFilterItemClicked(getDefaultFilter()); if (fragmentLayout == LAYOUT_SINGLE) listsNav.performClick(); - getIntent().putExtra(FILTER_MODE, mode); } public void refreshMainMenu() { diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index 2beb54c56..cf5d2a15a 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -428,8 +428,11 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, return; boolean isTablet = AstridPreferences.useTabletLayout(activity); - if (activity instanceof TaskListActivity) - ((TaskListActivity) activity).getMainMenuPopover().clear(); + TaskListActivity tla = null; + if (activity instanceof TaskListActivity) { + tla = (TaskListActivity) activity; + tla.getMainMenuPopover().clear(); + } // --- sort if (allowResorting()) { @@ -438,7 +441,8 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, } // --- sync - addSyncRefreshMenuItem(menu, isTablet ? ThemeService.FLAG_INVERT : 0); + if (tla == null || tla.getTaskEditFragment() == null) + addSyncRefreshMenuItem(menu, isTablet ? ThemeService.FLAG_INVERT : 0); // --- new filter addMenuItem(menu, R.string.FLA_new_filter, diff --git a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java index 8fda3e699..86cff545a 100644 --- a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java @@ -80,7 +80,7 @@ public class FilterAdapter extends ArrayAdapter { protected ListView listView; /** display metrics for scaling icons */ - private final DisplayMetrics metrics = new DisplayMetrics(); + protected final DisplayMetrics metrics = new DisplayMetrics(); /** receiver for new filters */ protected final FilterReceiver filterReceiver = new FilterReceiver(); diff --git a/astrid/src/com/todoroo/astrid/helper/SyncActionHelper.java b/astrid/src/com/todoroo/astrid/helper/SyncActionHelper.java index 90b16e077..313ebe261 100644 --- a/astrid/src/com/todoroo/astrid/helper/SyncActionHelper.java +++ b/astrid/src/com/todoroo/astrid/helper/SyncActionHelper.java @@ -150,8 +150,9 @@ public class SyncActionHelper { // --- sync logic protected void performSyncServiceV2Sync(boolean manual) { - syncService.synchronizeActiveTasks(manual, syncResultCallback); - Preferences.setLong(PREF_LAST_AUTO_SYNC, DateUtilities.now()); + boolean syncOccurred = syncService.synchronizeActiveTasks(manual, syncResultCallback); + if (syncOccurred) + Preferences.setLong(PREF_LAST_AUTO_SYNC, DateUtilities.now()); } /** diff --git a/astrid/src/com/todoroo/astrid/service/SyncV2Service.java b/astrid/src/com/todoroo/astrid/service/SyncV2Service.java index 064ed956c..ba137ed48 100644 --- a/astrid/src/com/todoroo/astrid/service/SyncV2Service.java +++ b/astrid/src/com/todoroo/astrid/service/SyncV2Service.java @@ -59,10 +59,14 @@ public class SyncV2Service { * * @param manual if manual sync * @param callback result callback + * @return true if any servide was logged in and initiated a sync */ - public void synchronizeActiveTasks(final boolean manual, final SyncResultCallback callback) { + public boolean synchronizeActiveTasks(final boolean manual, final SyncResultCallback callback) { final List active = activeProviders(); + if (active.size() == 0) + return false; + if (active.size() > 1) { SyncResultCallback newCallback = new SyncResultCallback() { private int next = 1; @@ -94,6 +98,8 @@ public class SyncV2Service { } else if (active.size() == 1) { active.get(0).synchronizeActiveTasks(manual, callback); } + + return true; } /**