Remove CalendarSelectionActivity

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

@ -317,10 +317,6 @@
android:name=".caldav.CaldavCalendarSettingsActivity"
android:theme="@style/Tasks"/>
<activity
android:name=".activities.CalendarSelectionActivity"
android:theme="@style/TranslucentDialog"/>
<activity
android:name="com.todoroo.astrid.gcal.CalendarReminderActivity"
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 org.tasks.PermissionUtil.verifyPermissions;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import com.google.common.base.Strings;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.calendars.AndroidCalendar;
import org.tasks.calendars.CalendarProvider;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.InjectingDialogFragment;
@ -27,8 +26,10 @@ import org.tasks.preferences.PermissionRequestor;
import org.tasks.themes.Theme;
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 final List<String> calendarNames = new ArrayList<>();
private final List<AndroidCalendar> calendars = new ArrayList<>();
@ -37,16 +38,16 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
@Inject PermissionChecker permissionChecker;
@Inject FragmentPermissionRequestor permissionRequestor;
@Inject Theme theme;
private CalendarSelectionHandler handler;
private SingleCheckedArrayAdapter adapter;
private ListView listView;
public static CalendarSelectionDialog newCalendarSelectionDialog(String selected) {
CalendarSelectionDialog dialog = new CalendarSelectionDialog();
public static CalendarPicker newCalendarPicker(Fragment target, int rc, String selected) {
Bundle arguments = new Bundle();
arguments.putString(EXTRA_SELECTED, selected);
dialog.setArguments(arguments);
return dialog;
CalendarPicker fragment = new CalendarPicker();
fragment.setArguments(arguments);
fragment.setTargetFragment(target, rc);
return fragment;
}
@NonNull
@ -71,8 +72,15 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
dialogBuilder
.newDialog()
.setSingleChoiceItems(
adapter, -1, (d, which) -> handler.selectedCalendar(calendars.get(which)))
.setOnDismissListener(dialogInterface -> handler.cancel())
adapter, -1, (d, which) -> {
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();
listView = dialog.getListView();
if (permissionChecker.canAccessCalendars()) {
@ -90,7 +98,7 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
calendars.addAll(calendarProvider.getCalendars());
if (calendars.isEmpty()) {
Toast.makeText(getActivity(), R.string.no_calendars_found, Toast.LENGTH_LONG).show();
handler.cancel();
dismiss();
} else {
calendars.add(0, new AndroidCalendar(null, getString(R.string.dont_add_to_calendar), -1));
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
public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
@ -124,7 +118,7 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
if (verifyPermissions(grantResults)) {
loadCalendars();
} else {
handler.cancel();
dismiss();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@ -135,11 +129,4 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
protected void inject(DialogFragmentComponent component) {
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.gtasks.auth.GtasksLoginActivity;
import dagger.Subcomponent;
import org.tasks.activities.CalendarSelectionActivity;
import org.tasks.activities.CameraActivity;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.DatePickerActivity;
@ -83,8 +82,6 @@ public interface ActivityComponent {
void inject(FileExplore fileExplore);
void inject(CalendarSelectionActivity calendarSelectionActivity);
void inject(FilterSelectionActivity filterSelectionActivity);
void inject(DateAndTimePickerActivity dateAndTimePickerActivity);

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

@ -7,26 +7,24 @@ import androidx.preference.Preference
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.GtasksFilter
import org.tasks.PermissionUtil
import org.tasks.R
import org.tasks.activities.CalendarSelectionActivity
import org.tasks.activities.RemoteListPicker
import org.tasks.calendars.CalendarPicker
import org.tasks.calendars.CalendarPicker.newCalendarPicker
import org.tasks.calendars.CalendarProvider
import org.tasks.injection.FragmentComponent
import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.FragmentPermissionRequestor
import org.tasks.preferences.PermissionRequestor
import org.tasks.preferences.Preferences
import javax.inject.Inject
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_CALENDAR_SELECTION = 10011
class TaskDefaults : InjectingPreferenceFragment() {
@Inject lateinit var permissionRequester: FragmentPermissionRequestor
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var preferences: Preferences
@Inject lateinit var calendarProvider: CalendarProvider
@ -38,9 +36,8 @@ class TaskDefaults : InjectingPreferenceFragment() {
override fun setupPreferences(savedInstanceState: Bundle?) {
defaultCalendarPref = findPreference(R.string.gcal_p_default)
defaultCalendarPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
if (permissionRequester.requestCalendarPermissions()) {
startCalendarSelectionActivity()
}
newCalendarPicker(this, REQUEST_CALENDAR_SELECTION, getDefaultCalendarName())
.show(parentFragmentManager, FRAG_TAG_CALENDAR_PICKER)
false
}
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)
}
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?) {
if (requestCode == REQUEST_REMOTE_LIST) {
val list: Filter? = data!!.getParcelableExtra(RemoteListPicker.EXTRA_SELECTED_FILTER)
@ -91,10 +74,10 @@ class TaskDefaults : InjectingPreferenceFragment() {
if (resultCode == RESULT_OK) {
preferences.setString(
R.string.gcal_p_default,
data!!.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_ID)
data!!.getStringExtra(CalendarPicker.EXTRA_CALENDAR_ID)
)
defaultCalendarPref.summary =
data.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME)
data.getStringExtra(CalendarPicker.EXTRA_CALENDAR_NAME)
}
} else {
super.onActivityResult(requestCode, resultCode, data)
@ -106,12 +89,6 @@ class TaskDefaults : InjectingPreferenceFragment() {
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() {
val defaultFilter = defaultFilterProvider.defaultRemoteList
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 org.tasks.PermissionUtil.verifyPermissions;
import static org.tasks.calendars.CalendarPicker.newCalendarPicker;
import android.app.Activity;
import android.content.ContentResolver;
@ -26,7 +27,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.activities.CalendarSelectionActivity;
import org.tasks.calendars.CalendarPicker;
import org.tasks.analytics.Tracker;
import org.tasks.calendars.AndroidCalendar;
import org.tasks.calendars.CalendarEventProvider;
@ -44,6 +45,7 @@ public class CalendarControlSet extends TaskEditControlFragment {
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_OPEN_EVENT = 71;
private static final int REQUEST_CODE_CLEAR_EVENT = 72;
@ -227,9 +229,8 @@ public class CalendarControlSet extends TaskEditControlFragment {
@OnClick(R.id.calendar_display_which)
void clickCalendar(View view) {
if (Strings.isNullOrEmpty(eventUri)) {
Intent intent = new Intent(context, CalendarSelectionActivity.class);
intent.putExtra(CalendarSelectionActivity.EXTRA_CALENDAR_NAME, getCalendarName());
startActivityForResult(intent, REQUEST_CODE_PICK_CALENDAR);
newCalendarPicker(this, REQUEST_CODE_PICK_CALENDAR, getCalendarName())
.show(getParentFragmentManager(), FRAG_TAG_CALENDAR_PICKER);
} else {
if (permissionRequestor.requestCalendarPermissions(REQUEST_CODE_OPEN_EVENT)) {
openCalendarEvent();
@ -272,7 +273,7 @@ public class CalendarControlSet extends TaskEditControlFragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_PICK_CALENDAR) {
if (resultCode == Activity.RESULT_OK) {
calendarId = data.getStringExtra(CalendarSelectionActivity.EXTRA_CALENDAR_ID);
calendarId = data.getStringExtra(CalendarPicker.EXTRA_CALENDAR_ID);
refreshDisplayView();
}
} else {

Loading…
Cancel
Save