Remove CalendarSelectionActivity

pull/935/head
Alex Baker 6 years ago
parent d046790271
commit c420ca733f

@ -317,10 +317,6 @@
android:name=".caldav.CaldavCalendarSettingsActivity" android:name=".caldav.CaldavCalendarSettingsActivity"
android:theme="@style/Tasks"/> android:theme="@style/Tasks"/>
<activity
android:name=".activities.CalendarSelectionActivity"
android:theme="@style/TranslucentDialog"/>
<activity <activity
android:name="com.todoroo.astrid.gcal.CalendarReminderActivity" android:name="com.todoroo.astrid.gcal.CalendarReminderActivity"
android:theme="@style/TasksDialog"/> android:theme="@style/TasksDialog"/>

@ -1,57 +0,0 @@
package org.tasks.activities;
import static org.tasks.activities.CalendarSelectionDialog.newCalendarSelectionDialog;
import android.content.Intent;
import android.os.Bundle;
import androidx.fragment.app.FragmentManager;
import org.tasks.calendars.AndroidCalendar;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
public class CalendarSelectionActivity extends InjectingAppCompatActivity
implements CalendarSelectionDialog.CalendarSelectionHandler {
public static final String EXTRA_CALENDAR_ID = "extra_calendar_id";
public static final String EXTRA_CALENDAR_NAME = "extra_calendar_name";
private static final String FRAG_TAG_CALENDAR_PREFERENCE_SELECTION =
"frag_tag_calendar_preference_selection";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager fragmentManager = getSupportFragmentManager();
if (fragmentManager.findFragmentByTag(FRAG_TAG_CALENDAR_PREFERENCE_SELECTION) == null) {
Intent intent = getIntent();
newCalendarSelectionDialog(intent.getStringExtra(EXTRA_CALENDAR_NAME))
.show(fragmentManager, FRAG_TAG_CALENDAR_PREFERENCE_SELECTION);
}
}
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override
public void selectedCalendar(final AndroidCalendar androidCalendar) {
Intent data = new Intent();
data.putExtra(EXTRA_CALENDAR_ID, androidCalendar.getId());
data.putExtra(EXTRA_CALENDAR_NAME, androidCalendar.getName());
setResult(RESULT_OK, data);
finish();
}
@Override
public void cancel() {
finish();
}
@Override
public void finish() {
super.finish();
overridePendingTransition(0, 0);
}
}

@ -1,23 +1,22 @@
package org.tasks.activities; package org.tasks.calendars;
import static com.google.common.collect.Lists.transform; import static com.google.common.collect.Lists.transform;
import static org.tasks.PermissionUtil.verifyPermissions; import static org.tasks.PermissionUtil.verifyPermissions;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.calendars.AndroidCalendar;
import org.tasks.calendars.CalendarProvider;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.DialogFragmentComponent; import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.InjectingDialogFragment; import org.tasks.injection.InjectingDialogFragment;
@ -27,8 +26,10 @@ import org.tasks.preferences.PermissionRequestor;
import org.tasks.themes.Theme; import org.tasks.themes.Theme;
import org.tasks.ui.SingleCheckedArrayAdapter; import org.tasks.ui.SingleCheckedArrayAdapter;
public class CalendarSelectionDialog extends InjectingDialogFragment { public class CalendarPicker extends InjectingDialogFragment {
public static final String EXTRA_CALENDAR_ID = "extra_calendar_id";
public static final String EXTRA_CALENDAR_NAME = "extra_calendar_name";
private static final String EXTRA_SELECTED = "extra_selected"; private static final String EXTRA_SELECTED = "extra_selected";
private final List<String> calendarNames = new ArrayList<>(); private final List<String> calendarNames = new ArrayList<>();
private final List<AndroidCalendar> calendars = new ArrayList<>(); private final List<AndroidCalendar> calendars = new ArrayList<>();
@ -37,16 +38,16 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
@Inject PermissionChecker permissionChecker; @Inject PermissionChecker permissionChecker;
@Inject FragmentPermissionRequestor permissionRequestor; @Inject FragmentPermissionRequestor permissionRequestor;
@Inject Theme theme; @Inject Theme theme;
private CalendarSelectionHandler handler;
private SingleCheckedArrayAdapter adapter; private SingleCheckedArrayAdapter adapter;
private ListView listView; private ListView listView;
public static CalendarSelectionDialog newCalendarSelectionDialog(String selected) { public static CalendarPicker newCalendarPicker(Fragment target, int rc, String selected) {
CalendarSelectionDialog dialog = new CalendarSelectionDialog();
Bundle arguments = new Bundle(); Bundle arguments = new Bundle();
arguments.putString(EXTRA_SELECTED, selected); arguments.putString(EXTRA_SELECTED, selected);
dialog.setArguments(arguments); CalendarPicker fragment = new CalendarPicker();
return dialog; fragment.setArguments(arguments);
fragment.setTargetFragment(target, rc);
return fragment;
} }
@NonNull @NonNull
@ -71,8 +72,15 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
dialogBuilder dialogBuilder
.newDialog() .newDialog()
.setSingleChoiceItems( .setSingleChoiceItems(
adapter, -1, (d, which) -> handler.selectedCalendar(calendars.get(which))) adapter, -1, (d, which) -> {
.setOnDismissListener(dialogInterface -> handler.cancel()) dismiss();
AndroidCalendar calendar = calendars.get(which);
Intent data = new Intent();
data.putExtra(EXTRA_CALENDAR_ID, calendar.getId());
data.putExtra(EXTRA_CALENDAR_NAME, calendar.getName());
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, data);
})
.setNegativeButton(android.R.string.cancel, null)
.show(); .show();
listView = dialog.getListView(); listView = dialog.getListView();
if (permissionChecker.canAccessCalendars()) { if (permissionChecker.canAccessCalendars()) {
@ -90,7 +98,7 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
calendars.addAll(calendarProvider.getCalendars()); calendars.addAll(calendarProvider.getCalendars());
if (calendars.isEmpty()) { if (calendars.isEmpty()) {
Toast.makeText(getActivity(), R.string.no_calendars_found, Toast.LENGTH_LONG).show(); Toast.makeText(getActivity(), R.string.no_calendars_found, Toast.LENGTH_LONG).show();
handler.cancel(); dismiss();
} else { } else {
calendars.add(0, new AndroidCalendar(null, getString(R.string.dont_add_to_calendar), -1)); calendars.add(0, new AndroidCalendar(null, getString(R.string.dont_add_to_calendar), -1));
calendarNames.addAll(transform(calendars, AndroidCalendar::getName)); calendarNames.addAll(transform(calendars, AndroidCalendar::getName));
@ -103,20 +111,6 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
} }
} }
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
handler = (CalendarSelectionHandler) activity;
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
handler.cancel();
}
@Override @Override
public void onRequestPermissionsResult( public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
@ -124,7 +118,7 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
if (verifyPermissions(grantResults)) { if (verifyPermissions(grantResults)) {
loadCalendars(); loadCalendars();
} else { } else {
handler.cancel(); dismiss();
} }
} else { } else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@ -135,11 +129,4 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
protected void inject(DialogFragmentComponent component) { protected void inject(DialogFragmentComponent component) {
component.inject(this); component.inject(this);
} }
public interface CalendarSelectionHandler {
void selectedCalendar(AndroidCalendar calendar);
void cancel();
}
} }

@ -8,7 +8,6 @@ import com.todoroo.astrid.core.CustomFilterActivity;
import com.todoroo.astrid.gcal.CalendarReminderActivity; import com.todoroo.astrid.gcal.CalendarReminderActivity;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity; import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import dagger.Subcomponent; import dagger.Subcomponent;
import org.tasks.activities.CalendarSelectionActivity;
import org.tasks.activities.CameraActivity; import org.tasks.activities.CameraActivity;
import org.tasks.activities.DateAndTimePickerActivity; import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.DatePickerActivity; import org.tasks.activities.DatePickerActivity;
@ -83,8 +82,6 @@ public interface ActivityComponent {
void inject(FileExplore fileExplore); void inject(FileExplore fileExplore);
void inject(CalendarSelectionActivity calendarSelectionActivity);
void inject(FilterSelectionActivity filterSelectionActivity); void inject(FilterSelectionActivity filterSelectionActivity);
void inject(DateAndTimePickerActivity dateAndTimePickerActivity); void inject(DateAndTimePickerActivity dateAndTimePickerActivity);

@ -1,7 +1,7 @@
package org.tasks.injection; package org.tasks.injection;
import dagger.Subcomponent; import dagger.Subcomponent;
import org.tasks.activities.CalendarSelectionDialog; import org.tasks.calendars.CalendarPicker;
import org.tasks.activities.RemoteListPicker; import org.tasks.activities.RemoteListPicker;
import org.tasks.billing.NameYourPriceDialog; import org.tasks.billing.NameYourPriceDialog;
import org.tasks.billing.PurchaseDialog; import org.tasks.billing.PurchaseDialog;
@ -29,7 +29,7 @@ public interface DialogFragmentComponent {
void inject(NotificationDialog notificationDialog); void inject(NotificationDialog notificationDialog);
void inject(CalendarSelectionDialog calendarSelectionDialog); void inject(CalendarPicker calendarPicker);
void inject(AddAttachmentDialog addAttachmentDialog); void inject(AddAttachmentDialog addAttachmentDialog);

@ -7,26 +7,24 @@ import androidx.preference.Preference
import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.GtasksFilter
import org.tasks.PermissionUtil
import org.tasks.R import org.tasks.R
import org.tasks.activities.CalendarSelectionActivity
import org.tasks.activities.RemoteListPicker import org.tasks.activities.RemoteListPicker
import org.tasks.calendars.CalendarPicker
import org.tasks.calendars.CalendarPicker.newCalendarPicker
import org.tasks.calendars.CalendarProvider import org.tasks.calendars.CalendarProvider
import org.tasks.injection.FragmentComponent import org.tasks.injection.FragmentComponent
import org.tasks.injection.InjectingPreferenceFragment import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.FragmentPermissionRequestor
import org.tasks.preferences.PermissionRequestor
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Inject import javax.inject.Inject
private const val FRAG_TAG_REMOTE_LIST_SELECTION = "frag_tag_remote_list_selection" private const val FRAG_TAG_REMOTE_LIST_SELECTION = "frag_tag_remote_list_selection"
private const val FRAG_TAG_CALENDAR_PICKER = "frag_tag_calendar_picker"
private const val REQUEST_REMOTE_LIST = 10010 private const val REQUEST_REMOTE_LIST = 10010
private const val REQUEST_CALENDAR_SELECTION = 10011 private const val REQUEST_CALENDAR_SELECTION = 10011
class TaskDefaults : InjectingPreferenceFragment() { class TaskDefaults : InjectingPreferenceFragment() {
@Inject lateinit var permissionRequester: FragmentPermissionRequestor
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider @Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@Inject lateinit var calendarProvider: CalendarProvider @Inject lateinit var calendarProvider: CalendarProvider
@ -38,9 +36,8 @@ class TaskDefaults : InjectingPreferenceFragment() {
override fun setupPreferences(savedInstanceState: Bundle?) { override fun setupPreferences(savedInstanceState: Bundle?) {
defaultCalendarPref = findPreference(R.string.gcal_p_default) defaultCalendarPref = findPreference(R.string.gcal_p_default)
defaultCalendarPref.onPreferenceClickListener = Preference.OnPreferenceClickListener { defaultCalendarPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
if (permissionRequester.requestCalendarPermissions()) { newCalendarPicker(this, REQUEST_CALENDAR_SELECTION, getDefaultCalendarName())
startCalendarSelectionActivity() .show(parentFragmentManager, FRAG_TAG_CALENDAR_PICKER)
}
false false
} }
val defaultCalendarName: String? = getDefaultCalendarName() val defaultCalendarName: String? = getDefaultCalendarName()
@ -62,20 +59,6 @@ class TaskDefaults : InjectingPreferenceFragment() {
requires(device.supportsGeofences(), R.string.p_default_location_reminder_key, R.string.p_default_location_radius) requires(device.supportsGeofences(), R.string.p_default_location_reminder_key, R.string.p_default_location_radius)
} }
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
if (requestCode == PermissionRequestor.REQUEST_CALENDAR) {
if (PermissionUtil.verifyPermissions(grantResults)) {
startCalendarSelectionActivity()
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_REMOTE_LIST) { if (requestCode == REQUEST_REMOTE_LIST) {
val list: Filter? = data!!.getParcelableExtra(RemoteListPicker.EXTRA_SELECTED_FILTER) val list: Filter? = data!!.getParcelableExtra(RemoteListPicker.EXTRA_SELECTED_FILTER)
@ -91,10 +74,10 @@ class TaskDefaults : InjectingPreferenceFragment() {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
preferences.setString( preferences.setString(
R.string.gcal_p_default, R.string.gcal_p_default,
data!!.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_ID) data!!.getStringExtra(CalendarPicker.EXTRA_CALENDAR_ID)
) )
defaultCalendarPref.summary = defaultCalendarPref.summary =
data.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME) data.getStringExtra(CalendarPicker.EXTRA_CALENDAR_NAME)
} }
} else { } else {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
@ -106,12 +89,6 @@ class TaskDefaults : InjectingPreferenceFragment() {
return calendarProvider.getCalendar(calendarId)?.name return calendarProvider.getCalendar(calendarId)?.name
} }
private fun startCalendarSelectionActivity() {
val intent = Intent(context, CalendarSelectionActivity::class.java)
intent.putExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME, getDefaultCalendarName())
startActivityForResult(intent, REQUEST_CALENDAR_SELECTION)
}
private fun updateRemoteListSummary() { private fun updateRemoteListSummary() {
val defaultFilter = defaultFilterProvider.defaultRemoteList val defaultFilter = defaultFilterProvider.defaultRemoteList
findPreference(R.string.p_default_remote_list).summary = findPreference(R.string.p_default_remote_list).summary =

@ -2,6 +2,7 @@ package org.tasks.ui;
import static com.google.common.base.Strings.isNullOrEmpty; import static com.google.common.base.Strings.isNullOrEmpty;
import static org.tasks.PermissionUtil.verifyPermissions; import static org.tasks.PermissionUtil.verifyPermissions;
import static org.tasks.calendars.CalendarPicker.newCalendarPicker;
import android.app.Activity; import android.app.Activity;
import android.content.ContentResolver; import android.content.ContentResolver;
@ -26,7 +27,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper; import com.todoroo.astrid.gcal.GCalHelper;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.activities.CalendarSelectionActivity; import org.tasks.calendars.CalendarPicker;
import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracker;
import org.tasks.calendars.AndroidCalendar; import org.tasks.calendars.AndroidCalendar;
import org.tasks.calendars.CalendarEventProvider; import org.tasks.calendars.CalendarEventProvider;
@ -44,6 +45,7 @@ public class CalendarControlSet extends TaskEditControlFragment {
public static final int TAG = R.string.TEA_ctrl_gcal; public static final int TAG = R.string.TEA_ctrl_gcal;
private static final String FRAG_TAG_CALENDAR_PICKER = "frag_tag_calendar_picker";
private static final int REQUEST_CODE_PICK_CALENDAR = 70; private static final int REQUEST_CODE_PICK_CALENDAR = 70;
private static final int REQUEST_CODE_OPEN_EVENT = 71; private static final int REQUEST_CODE_OPEN_EVENT = 71;
private static final int REQUEST_CODE_CLEAR_EVENT = 72; private static final int REQUEST_CODE_CLEAR_EVENT = 72;
@ -227,9 +229,8 @@ public class CalendarControlSet extends TaskEditControlFragment {
@OnClick(R.id.calendar_display_which) @OnClick(R.id.calendar_display_which)
void clickCalendar(View view) { void clickCalendar(View view) {
if (Strings.isNullOrEmpty(eventUri)) { if (Strings.isNullOrEmpty(eventUri)) {
Intent intent = new Intent(context, CalendarSelectionActivity.class); newCalendarPicker(this, REQUEST_CODE_PICK_CALENDAR, getCalendarName())
intent.putExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME, getCalendarName()); .show(getParentFragmentManager(), FRAG_TAG_CALENDAR_PICKER);
startActivityForResult(intent, REQUEST_CODE_PICK_CALENDAR);
} else { } else {
if (permissionRequestor.requestCalendarPermissions(REQUEST_CODE_OPEN_EVENT)) { if (permissionRequestor.requestCalendarPermissions(REQUEST_CODE_OPEN_EVENT)) {
openCalendarEvent(); openCalendarEvent();
@ -272,7 +273,7 @@ public class CalendarControlSet extends TaskEditControlFragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_PICK_CALENDAR) { if (requestCode == REQUEST_CODE_PICK_CALENDAR) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
calendarId = data.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_ID); calendarId = data.getStringExtra(CalendarPicker.EXTRA_CALENDAR_ID);
refreshDisplayView(); refreshDisplayView();
} }
} else { } else {

Loading…
Cancel
Save