Remove DatePickerActivity

pull/935/head
Alex Baker 6 years ago
parent abc9e7bfd0
commit 32b3f15901

@ -137,10 +137,6 @@
<!-- ====================================================== Activities = --> <!-- ====================================================== Activities = -->
<activity
android:name=".activities.DatePickerActivity"
android:theme="@style/TranslucentDialog"/>
<activity <activity
android:name=".activities.DateAndTimePickerActivity" android:name=".activities.DateAndTimePickerActivity"
android:taskAffinity="" android:taskAffinity=""

@ -1,14 +1,13 @@
package org.tasks.activities; package org.tasks.activities;
import static org.tasks.dialogs.MyDatePickerDialog.newDatePicker;
import static org.tasks.dialogs.MyTimePickerDialog.newTimePicker; import static org.tasks.dialogs.MyTimePickerDialog.newTimePicker;
import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R;
import org.tasks.dialogs.MyDatePickerDialog; import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.dialogs.MyTimePickerDialog; import org.tasks.dialogs.MyTimePickerDialog;
import org.tasks.injection.ActivityComponent; import org.tasks.injection.ActivityComponent;
@ -18,8 +17,7 @@ import org.tasks.themes.ThemeAccent;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
public class DateAndTimePickerActivity extends InjectingAppCompatActivity public class DateAndTimePickerActivity extends InjectingAppCompatActivity
implements DatePickerDialog.OnDateSetListener, implements MyDatePickerDialog.DatePickerCallback, MyTimePickerDialog.TimePickerCallback {
DialogInterface.OnCancelListener, MyTimePickerDialog.TimePickerCallback {
public static final String EXTRA_TIMESTAMP = "extra_timestamp"; public static final String EXTRA_TIMESTAMP = "extra_timestamp";
private static final String FRAG_TAG_DATE_PICKER = "frag_tag_date_picker"; private static final String FRAG_TAG_DATE_PICKER = "frag_tag_date_picker";
@ -47,21 +45,10 @@ public class DateAndTimePickerActivity extends InjectingAppCompatActivity
themeAccent.applyStyle(getTheme()); themeAccent.applyStyle(getTheme());
androidx.fragment.app.FragmentManager fragmentManager = getSupportFragmentManager(); androidx.fragment.app.FragmentManager fragmentManager = getSupportFragmentManager();
MyDatePickerDialog datePickerDialog = if (fragmentManager.findFragmentByTag(FRAG_TAG_DATE_PICKER) == null) {
(MyDatePickerDialog) fragmentManager.findFragmentByTag(FRAG_TAG_DATE_PICKER); newDatePicker(null, 0, initial.getMillis())
if (datePickerDialog == null) { .show(getSupportFragmentManager(), FRAG_TAG_DATE_PICKER);
datePickerDialog = new MyDatePickerDialog();
datePickerDialog.initialize(
null, initial.getYear(), initial.getMonthOfYear() - 1, initial.getDayOfMonth());
datePickerDialog.setThemeDark(getResources().getBoolean(R.bool.is_dark));
int firstDayOfWeek = preferences.getFirstDayOfWeek();
if (firstDayOfWeek >= 1 && firstDayOfWeek <= 7) {
datePickerDialog.setFirstDayOfWeek(firstDayOfWeek);
} }
datePickerDialog.show(fragmentManager, FRAG_TAG_DATE_PICKER);
}
datePickerDialog.setOnCancelListener(this);
datePickerDialog.setOnDateSetListener(this);
} }
@Override @Override
@ -76,18 +63,18 @@ public class DateAndTimePickerActivity extends InjectingAppCompatActivity
} }
@Override @Override
public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) { public void onDatePicked(DialogInterface dialog, long timestamp) {
datePickerDialog.dismiss(); if (timestamp == MyDatePickerDialog.NO_DATE) {
finish();
} else {
dialog.dismiss();
dateSelected = true; dateSelected = true;
final long timestamp = newTimePicker(
new DateTime(year, month + 1, day).withMillisOfDay(initial.getMillisOfDay()).getMillis(); null,
newTimePicker(null, 0, timestamp) 0,
new DateTime(timestamp).withMillisOfDay(initial.getMillisOfDay()).getMillis())
.show(getSupportFragmentManager(), FRAG_TAG_TIME_PICKER); .show(getSupportFragmentManager(), FRAG_TAG_TIME_PICKER);
} }
@Override
public void onCancel(DialogInterface dialog) {
finish();
} }
@Override @Override

@ -1,66 +0,0 @@
package org.tasks.activities;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.content.Intent;
import android.os.Bundle;
import androidx.fragment.app.FragmentManager;
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import javax.inject.Inject;
import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import org.tasks.themes.ThemeAccent;
import org.tasks.themes.ThemeBase;
import org.tasks.time.DateTime;
public class DatePickerActivity extends InjectingAppCompatActivity
implements DatePickerDialog.OnDateSetListener {
public static final String EXTRA_TIMESTAMP = "extra_timestamp";
private static final String FRAG_TAG_DATE_PICKER = "frag_tag_date_picker";
@Inject ThemeBase themeBase;
@Inject ThemeAccent themeAccent;
@Inject Preferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
long timestamp = getIntent().getLongExtra(EXTRA_TIMESTAMP, currentTimeMillis());
DateTime initial = (timestamp > 0 ? new DateTime(timestamp) : new DateTime()).startOfDay();
FragmentManager fragmentManager = getSupportFragmentManager();
MyDatePickerDialog dialog =
(MyDatePickerDialog) fragmentManager.findFragmentByTag(FRAG_TAG_DATE_PICKER);
if (dialog == null) {
dialog = new MyDatePickerDialog();
dialog.initialize(
null, initial.getYear(), initial.getMonthOfYear() - 1, initial.getDayOfMonth());
dialog.setVersion(DatePickerDialog.Version.VERSION_2);
dialog.setThemeDark(themeBase.isDarkTheme(this));
dialog.setAccentColor(themeAccent.getAccentColor());
int firstDayOfWeek = preferences.getFirstDayOfWeek();
if (firstDayOfWeek >= 1 && firstDayOfWeek <= 7) {
dialog.setFirstDayOfWeek(firstDayOfWeek);
}
dialog.show(fragmentManager, FRAG_TAG_DATE_PICKER);
}
dialog.setOnCancelListener(dialogInterface -> finish());
dialog.setOnDateSetListener(this);
}
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override
public void onDateSet(
DatePickerDialog view, final int year, final int monthOfYear, final int dayOfMonth) {
Intent data = new Intent();
data.putExtra(EXTRA_TIMESTAMP, new DateTime(year, monthOfYear + 1, dayOfMonth).getMillis());
setResult(RESULT_OK, data);
finish();
}
}

@ -1,23 +1,90 @@
package org.tasks.dialogs; package org.tasks.dialogs;
import static android.app.Activity.RESULT_OK;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog.OnDateSetListener;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import org.tasks.time.DateTime;
public class MyDatePickerDialog extends DatePickerDialog implements OnDateSetListener {
public static final String EXTRA_TIMESTAMP = "extra_timestamp";
public static final int NO_DATE = -1;
public static MyDatePickerDialog newDatePicker(Fragment target, int rc, long initial) {
Bundle arguments = new Bundle();
arguments.putLong(EXTRA_TIMESTAMP, initial);
MyDatePickerDialog dialog = new MyDatePickerDialog();
dialog.setArguments(arguments);
dialog.setTargetFragment(target, rc);
return dialog;
}
public class MyDatePickerDialog extends DatePickerDialog { public interface DatePickerCallback{ // TODO: remove this after removing DateAndTimePickerActivity
void onDatePicked(DialogInterface dialog, long timestamp);
}
private DialogInterface.OnCancelListener listener; private DatePickerCallback callback;
@Override @Override
public void setOnCancelListener(DialogInterface.OnCancelListener listener) { public void onCreate(Bundle savedInstanceState) {
this.listener = listener; if (savedInstanceState == null) {
long timestamp = getArguments().getLong(EXTRA_TIMESTAMP, currentTimeMillis());
DateTime initial = (timestamp > 0 ? new DateTime(timestamp) : new DateTime()).startOfDay();
initialize(
null,
initial.getYear(),
initial.getMonthOfYear() - 1,
initial.getDayOfMonth());
setVersion(DatePickerDialog.Version.VERSION_2);
int firstDayOfWeek = new Preferences(getContext()).getFirstDayOfWeek();
if (firstDayOfWeek >= 1 && firstDayOfWeek <= 7) {
setFirstDayOfWeek(firstDayOfWeek);
}
setThemeDark(getResources().getBoolean(R.bool.is_dark)); // TODO: remove this after removing DateAndTimePickerActivity
}
setOnDateSetListener(this);
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
if (context instanceof DatePickerCallback) {
callback = (DatePickerCallback) context;
}
} }
@Override @Override
public void onCancel(DialogInterface dialog) { public void onCancel(DialogInterface dialog) {
super.onCancel(dialog); super.onCancel(dialog);
if (listener != null) { if (getTargetFragment() == null) {
listener.onCancel(dialog); callback.onDatePicked(dialog, NO_DATE);
}
}
@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
long result = new DateTime(year, monthOfYear + 1, dayOfMonth).getMillis();
if (getTargetFragment() == null) {
callback.onDatePicked(getDialog(), result);
} else {
Intent data = new Intent();
data.putExtra(EXTRA_TIMESTAMP, result);
getTargetFragment().onActivityResult(getTargetRequestCode(), RESULT_OK, data);
} }
} }
} }

@ -10,7 +10,6 @@ import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import dagger.Subcomponent; import dagger.Subcomponent;
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.FilterSelectionActivity; import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.FilterSettingsActivity; import org.tasks.activities.FilterSettingsActivity;
import org.tasks.activities.GoogleTaskListSettingsActivity; import org.tasks.activities.GoogleTaskListSettingsActivity;
@ -85,8 +84,6 @@ public interface ActivityComponent {
void inject(DateAndTimePickerActivity dateAndTimePickerActivity); void inject(DateAndTimePickerActivity dateAndTimePickerActivity);
void inject(DatePickerActivity datePickerActivity);
void inject(CameraActivity cameraActivity); void inject(CameraActivity cameraActivity);
void inject(VoiceCommandActivity voiceCommandActivity); void inject(VoiceCommandActivity voiceCommandActivity);

@ -10,6 +10,7 @@ import static com.google.ical.values.Frequency.WEEKLY;
import static com.google.ical.values.Frequency.YEARLY; import static com.google.ical.values.Frequency.YEARLY;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.dialogs.MyDatePickerDialog.newDatePicker;
import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.app.Activity; import android.app.Activity;
@ -59,8 +60,8 @@ import java.util.Collections;
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.activities.DatePickerActivity;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.injection.DialogFragmentComponent; import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
import org.tasks.injection.InjectingDialogFragment; import org.tasks.injection.InjectingDialogFragment;
@ -75,6 +76,7 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
asList(MINUTELY, HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY); asList(MINUTELY, HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY);
private static final String EXTRA_RRULE = "extra_rrule"; private static final String EXTRA_RRULE = "extra_rrule";
private static final String EXTRA_DATE = "extra_date"; private static final String EXTRA_DATE = "extra_date";
private static final String FRAG_TAG_DATE_PICKER = "frag_tag_date_picker";
private static final int REQUEST_PICK_DATE = 505; private static final int REQUEST_PICK_DATE = 505;
private final List<String> repeatUntilOptions = new ArrayList<>(); private final List<String> repeatUntilOptions = new ArrayList<>();
@Inject @ForActivity Context context; @Inject @ForActivity Context context;
@ -517,10 +519,9 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
} }
private void repeatUntilClick() { private void repeatUntilClick() {
Intent intent = new Intent(context, DatePickerActivity.class);
long repeatUntil = DateTime.from(rrule.getUntil()).getMillis(); long repeatUntil = DateTime.from(rrule.getUntil()).getMillis();
intent.putExtra(DatePickerActivity.EXTRA_TIMESTAMP, repeatUntil > 0 ? repeatUntil : 0L); newDatePicker(this, REQUEST_PICK_DATE, repeatUntil > 0 ? repeatUntil : 0L)
startActivityForResult(intent, REQUEST_PICK_DATE); .show(getParentFragmentManager(), FRAG_TAG_DATE_PICKER);
} }
private void updateRepeatUntilOptions() { private void updateRepeatUntilOptions() {
@ -554,7 +555,7 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
if (requestCode == REQUEST_PICK_DATE) { if (requestCode == REQUEST_PICK_DATE) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
rrule.setUntil( rrule.setUntil(
new DateTime(data.getLongExtra(DatePickerActivity.EXTRA_TIMESTAMP, 0L)).toDateValue()); new DateTime(data.getLongExtra(MyDatePickerDialog.EXTRA_TIMESTAMP, 0L)).toDateValue());
rrule.setCount(0); rrule.setCount(0);
} }
updateRepeatUntilOptions(); updateRepeatUntilOptions();

@ -4,6 +4,7 @@ import static androidx.core.content.ContextCompat.getColor;
import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Lists.newArrayList;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.dialogs.MyDatePickerDialog.newDatePicker;
import static org.tasks.dialogs.MyTimePickerDialog.newTimePicker; import static org.tasks.dialogs.MyTimePickerDialog.newTimePicker;
import android.app.Activity; import android.app.Activity;
@ -33,7 +34,7 @@ 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.activities.DatePickerActivity; import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.dialogs.MyTimePickerDialog; import org.tasks.dialogs.MyTimePickerDialog;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
import org.tasks.injection.FragmentComponent; import org.tasks.injection.FragmentComponent;
@ -48,6 +49,7 @@ public class DeadlineControlSet extends TaskEditControlFragment {
private static final int REQUEST_TIME = 505; private static final int REQUEST_TIME = 505;
private static final String EXTRA_DATE = "extra_date"; private static final String EXTRA_DATE = "extra_date";
private static final String EXTRA_TIME = "extra_time"; private static final String EXTRA_TIME = "extra_time";
private static final String FRAG_TAG_DATE_PICKER = "frag_tag_date_picker";
private static final String FRAG_TAG_TIME_PICKER = "frag_tag_time_picker"; private static final String FRAG_TAG_TIME_PICKER = "frag_tag_time_picker";
@Inject Preferences preferences; @Inject Preferences preferences;
@ -236,9 +238,8 @@ public class DeadlineControlSet extends TaskEditControlFragment {
setDate(today.plusWeeks(1).getMillis()); setDate(today.plusWeeks(1).getMillis());
break; break;
case 4: case 4:
Intent intent = new Intent(context, DatePickerActivity.class); newDatePicker(this, REQUEST_DATE, date)
intent.putExtra(DatePickerActivity.EXTRA_TIMESTAMP, date); .show(getParentFragmentManager(), FRAG_TAG_DATE_PICKER);
startActivityForResult(intent, REQUEST_DATE);
updateDueDateOptions(); updateDueDateOptions();
break; break;
} }
@ -305,7 +306,7 @@ public class DeadlineControlSet extends TaskEditControlFragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_DATE) { if (requestCode == REQUEST_DATE) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
long timestamp = data.getLongExtra(DatePickerActivity.EXTRA_TIMESTAMP, 0L); long timestamp = data.getLongExtra(MyDatePickerDialog.EXTRA_TIMESTAMP, 0L);
DateTime dateTime = new DateTime(timestamp); DateTime dateTime = new DateTime(timestamp);
setDate(dateTime.getMillis()); setDate(dateTime.getMillis());
} else { } else {

Loading…
Cancel
Save