Don't hide synchronization features

gtask_related_email
Alex Baker 6 years ago
parent 68f657c971
commit 304e7153ae

@ -34,7 +34,7 @@ import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Device; import org.tasks.preferences.Device;
import org.tasks.preferences.PermissionRequestor; import org.tasks.preferences.PermissionRequestor;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.sync.SyncAdapters; import org.tasks.sync.SynchronizationPreferences;
public class DefaultsPreferences extends InjectingPreferenceActivity public class DefaultsPreferences extends InjectingPreferenceActivity
implements RemoteListSelectionHandler, NativeSeekBarDialog.SeekBarCallback { implements RemoteListSelectionHandler, NativeSeekBarDialog.SeekBarCallback {
@ -49,7 +49,6 @@ public class DefaultsPreferences extends InjectingPreferenceActivity
@Inject ActivityPermissionRequestor permissionRequester; @Inject ActivityPermissionRequestor permissionRequester;
@Inject Tracker tracker; @Inject Tracker tracker;
@Inject DefaultFilterProvider defaultFilterProvider; @Inject DefaultFilterProvider defaultFilterProvider;
@Inject SyncAdapters syncAdapters;
@Inject Locale locale; @Inject Locale locale;
@Inject Device device; @Inject Device device;
@ -98,7 +97,6 @@ public class DefaultsPreferences extends InjectingPreferenceActivity
}); });
updateRadius(); updateRadius();
requires(syncAdapters.isSyncEnabled(), R.string.p_default_remote_list);
requires(device.supportsGeofences(), R.string.p_default_location_reminder_key); requires(device.supportsGeofences(), R.string.p_default_location_reminder_key);
} }
@ -139,6 +137,11 @@ public class DefaultsPreferences extends InjectingPreferenceActivity
} }
} }
@Override
public void addAccount() {
startActivity(new Intent(this, SynchronizationPreferences.class));
}
@Override @Override
public void selectedList(Filter list) { public void selectedList(Filter list) {
tracker.reportEvent(Tracking.Events.DEFAULT_REMOTE_LIST); tracker.reportEvent(Tracking.Events.DEFAULT_REMOTE_LIST);

@ -17,6 +17,7 @@ import org.tasks.filters.FilterProvider;
import org.tasks.gtasks.RemoteListSelectionHandler; import org.tasks.gtasks.RemoteListSelectionHandler;
import org.tasks.injection.InjectingNativeDialogFragment; import org.tasks.injection.InjectingNativeDialogFragment;
import org.tasks.injection.NativeDialogFragmentComponent; import org.tasks.injection.NativeDialogFragmentComponent;
import org.tasks.sync.SyncAdapters;
public class RemoteListNativePicker extends InjectingNativeDialogFragment { public class RemoteListNativePicker extends InjectingNativeDialogFragment {
@ -25,6 +26,7 @@ public class RemoteListNativePicker extends InjectingNativeDialogFragment {
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject FilterAdapter filterAdapter; @Inject FilterAdapter filterAdapter;
@Inject FilterProvider filterProvider; @Inject FilterProvider filterProvider;
@Inject SyncAdapters syncAdapters;
private RemoteListSelectionHandler handler; private RemoteListSelectionHandler handler;
private CompositeDisposable disposables; private CompositeDisposable disposables;
@ -44,7 +46,7 @@ public class RemoteListNativePicker extends InjectingNativeDialogFragment {
filterAdapter.restore(savedInstanceState); filterAdapter.restore(savedInstanceState);
} }
return createDialog(filterAdapter, dialogBuilder, handler); return createDialog(filterAdapter, dialogBuilder, syncAdapters, handler);
} }
@Override @Override

@ -17,13 +17,18 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R;
import org.tasks.dialogs.AlertDialogBuilder;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.filters.FilterProvider; import org.tasks.filters.FilterProvider;
import org.tasks.gtasks.RemoteListSelectionHandler; import org.tasks.gtasks.RemoteListSelectionHandler;
import org.tasks.injection.DialogFragmentComponent; import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.InjectingDialogFragment; import org.tasks.injection.InjectingDialogFragment;
import org.tasks.sync.SyncAdapters;
import org.tasks.sync.SynchronizationPreferences;
public class RemoteListSupportPicker extends InjectingDialogFragment { public class RemoteListSupportPicker extends InjectingDialogFragment
implements RemoteListSelectionHandler {
public static final String EXTRA_SELECTED_FILTER = "extra_selected_filter"; public static final String EXTRA_SELECTED_FILTER = "extra_selected_filter";
private static final String EXTRA_NO_SELECTION = "extra_no_selection"; private static final String EXTRA_NO_SELECTION = "extra_no_selection";
@ -31,6 +36,7 @@ public class RemoteListSupportPicker extends InjectingDialogFragment {
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject FilterAdapter filterAdapter; @Inject FilterAdapter filterAdapter;
@Inject FilterProvider filterProvider; @Inject FilterProvider filterProvider;
@Inject SyncAdapters syncAdapters;
private CompositeDisposable disposables; private CompositeDisposable disposables;
@ -57,24 +63,30 @@ public class RemoteListSupportPicker extends InjectingDialogFragment {
static AlertDialog createDialog( static AlertDialog createDialog(
FilterAdapter filterAdapter, FilterAdapter filterAdapter,
DialogBuilder dialogBuilder, DialogBuilder dialogBuilder,
SyncAdapters syncAdapters,
RemoteListSelectionHandler handler) { RemoteListSelectionHandler handler) {
return dialogBuilder AlertDialogBuilder builder =
.newDialog() dialogBuilder
.setSingleChoiceItems( .newDialog()
filterAdapter, .setNegativeButton(android.R.string.cancel, null)
-1, .setSingleChoiceItems(
(dialog, which) -> { filterAdapter,
if (which == 0) { -1,
handler.selectedList(null); (dialog, which) -> {
} else { if (which == 0) {
FilterListItem item = filterAdapter.getItem(which); handler.selectedList(null);
if (item instanceof GtasksFilter || item instanceof CaldavFilter) { } else {
handler.selectedList((Filter) item); FilterListItem item = filterAdapter.getItem(which);
} if (item instanceof GtasksFilter || item instanceof CaldavFilter) {
} handler.selectedList((Filter) item);
dialog.dismiss(); }
}) }
.show(); dialog.dismiss();
});
if (!syncAdapters.isSyncEnabled()) {
builder.setNeutralButton(R.string.add_account, (dialog, which) -> handler.addAccount());
}
return builder.show();
} }
@NonNull @NonNull
@ -84,7 +96,7 @@ public class RemoteListSupportPicker extends InjectingDialogFragment {
filterAdapter.restore(savedInstanceState); filterAdapter.restore(savedInstanceState);
} }
return createDialog(filterAdapter, dialogBuilder, this::selected); return createDialog(filterAdapter, dialogBuilder, syncAdapters, this);
} }
@Override @Override
@ -117,16 +129,22 @@ public class RemoteListSupportPicker extends InjectingDialogFragment {
filterAdapter.save(outState); filterAdapter.save(outState);
} }
private void selected(Filter filter) { @Override
protected void inject(DialogFragmentComponent component) {
component.inject(this);
}
@Override
public void addAccount() {
startActivity(new Intent(getContext(), SynchronizationPreferences.class));
}
@Override
public void selectedList(Filter filter) {
getTargetFragment() getTargetFragment()
.onActivityResult( .onActivityResult(
getTargetRequestCode(), getTargetRequestCode(),
Activity.RESULT_OK, Activity.RESULT_OK,
new Intent().putExtra(EXTRA_SELECTED_FILTER, filter)); new Intent().putExtra(EXTRA_SELECTED_FILTER, filter));
} }
@Override
protected void inject(DialogFragmentComponent component) {
component.inject(this);
}
} }

@ -22,7 +22,6 @@ import org.tasks.BuildConfig;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.sync.SyncAdapters;
import org.tasks.ui.CalendarControlSet; import org.tasks.ui.CalendarControlSet;
import org.tasks.ui.DeadlineControlSet; import org.tasks.ui.DeadlineControlSet;
import org.tasks.ui.DescriptionControlSet; import org.tasks.ui.DescriptionControlSet;
@ -79,15 +78,10 @@ public class TaskEditControlSetFragmentManager {
private final Map<String, Integer> controlSetFragments = new LinkedHashMap<>(); private final Map<String, Integer> controlSetFragments = new LinkedHashMap<>();
private final List<String> displayOrder; private final List<String> displayOrder;
private final SyncAdapters syncAdapters;
private int numRows; private int numRows;
@Inject @Inject
public TaskEditControlSetFragmentManager( public TaskEditControlSetFragmentManager(@ForActivity Context context, Preferences preferences) {
@ForActivity Context context,
Preferences preferences,
SyncAdapters syncAdapters) {
this.syncAdapters = syncAdapters;
displayOrder = BeastModePreferences.constructOrderedControlList(preferences, context); displayOrder = BeastModePreferences.constructOrderedControlList(preferences, context);
displayOrder.add(0, context.getString(EditTitleControlSet.TAG)); displayOrder.add(0, context.getString(EditTitleControlSet.TAG));
displayOrder.add(1, context.getString(CommentBarFragment.TAG)); displayOrder.add(1, context.getString(CommentBarFragment.TAG));
@ -129,9 +123,6 @@ public class TaskEditControlSetFragmentManager {
if (fragment == null) { if (fragment == null) {
Integer resId = controlSetFragments.get(tag); Integer resId = controlSetFragments.get(tag);
fragment = createFragment(resId); fragment = createFragment(resId);
if (fragment == null) {
continue;
}
fragment.setArguments(arguments); fragment.setArguments(arguments);
} }
fragments.add(fragment); fragments.add(fragment);
@ -168,7 +159,7 @@ public class TaskEditControlSetFragmentManager {
case CommentBarFragment.TAG: case CommentBarFragment.TAG:
return new CommentBarFragment(); return new CommentBarFragment();
case RemoteListFragment.TAG: case RemoteListFragment.TAG:
return syncAdapters.isSyncEnabled() ? new RemoteListFragment() : null; return new RemoteListFragment();
default: default:
throw new RuntimeException("Unsupported fragment"); throw new RuntimeException("Unsupported fragment");
} }

@ -4,5 +4,7 @@ import com.todoroo.astrid.api.Filter;
public interface RemoteListSelectionHandler { public interface RemoteListSelectionHandler {
void addAccount();
void selectedList(Filter list); void selectedList(Filter list);
} }

@ -23,7 +23,6 @@ import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking; import org.tasks.analytics.Tracking;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
import org.tasks.sync.SyncAdapters;
import org.tasks.ui.MenuColorizer; import org.tasks.ui.MenuColorizer;
public class ActionModeProvider { public class ActionModeProvider {
@ -36,7 +35,6 @@ public class ActionModeProvider {
private final TaskDuplicator taskDuplicator; private final TaskDuplicator taskDuplicator;
private final TaskMover taskMover; private final TaskMover taskMover;
private final Tracker tracker; private final Tracker tracker;
private final SyncAdapters syncAdapters;
@Inject @Inject
public ActionModeProvider( public ActionModeProvider(
@ -45,18 +43,16 @@ public class ActionModeProvider {
TaskDeleter taskDeleter, TaskDeleter taskDeleter,
TaskDuplicator taskDuplicator, TaskDuplicator taskDuplicator,
TaskMover taskMover, TaskMover taskMover,
Tracker tracker, Tracker tracker) {
SyncAdapters syncAdapters) {
this.context = context; this.context = context;
this.dialogBuilder = dialogBuilder; this.dialogBuilder = dialogBuilder;
this.taskDeleter = taskDeleter; this.taskDeleter = taskDeleter;
this.taskDuplicator = taskDuplicator; this.taskDuplicator = taskDuplicator;
this.taskMover = taskMover; this.taskMover = taskMover;
this.tracker = tracker; this.tracker = tracker;
this.syncAdapters = syncAdapters;
} }
public ActionMode startActionMode( ActionMode startActionMode(
TaskAdapter adapter, TaskAdapter adapter,
TaskListFragment taskList, TaskListFragment taskList,
TaskListRecyclerAdapter taskListRecyclerAdapter) { TaskListRecyclerAdapter taskListRecyclerAdapter) {
@ -67,9 +63,6 @@ public class ActionModeProvider {
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
MenuInflater inflater = actionMode.getMenuInflater(); MenuInflater inflater = actionMode.getMenuInflater();
inflater.inflate(R.menu.menu_multi_select, menu); inflater.inflate(R.menu.menu_multi_select, menu);
if (!syncAdapters.isSyncEnabled()) {
menu.findItem(R.id.move_tasks).setVisible(false);
}
MenuColorizer.colorMenu(context, menu); MenuColorizer.colorMenu(context, menu);
return true; return true;
} }

Loading…
Cancel
Save