Remove DatePickerActivity

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

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

@ -1,14 +1,13 @@
package org.tasks.activities;
import static org.tasks.dialogs.MyDatePickerDialog.newDatePicker;
import static org.tasks.dialogs.MyTimePickerDialog.newTimePicker;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.dialogs.MyTimePickerDialog;
import org.tasks.injection.ActivityComponent;
@ -18,8 +17,7 @@ import org.tasks.themes.ThemeAccent;
import org.tasks.time.DateTime;
public class DateAndTimePickerActivity extends InjectingAppCompatActivity
implements DatePickerDialog.OnDateSetListener,
DialogInterface.OnCancelListener, MyTimePickerDialog.TimePickerCallback {
implements MyDatePickerDialog.DatePickerCallback, MyTimePickerDialog.TimePickerCallback {
public static final String EXTRA_TIMESTAMP = "extra_timestamp";
private static final String FRAG_TAG_DATE_PICKER = "frag_tag_date_picker";
@ -47,21 +45,10 @@ public class DateAndTimePickerActivity extends InjectingAppCompatActivity
themeAccent.applyStyle(getTheme());
androidx.fragment.app.FragmentManager fragmentManager = getSupportFragmentManager();
MyDatePickerDialog datePickerDialog =
(MyDatePickerDialog) fragmentManager.findFragmentByTag(FRAG_TAG_DATE_PICKER);
if (datePickerDialog == null) {
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);
if (fragmentManager.findFragmentByTag(FRAG_TAG_DATE_PICKER) == null) {
newDatePicker(null, 0, initial.getMillis())
.show(getSupportFragmentManager(), FRAG_TAG_DATE_PICKER);
}
datePickerDialog.setOnCancelListener(this);
datePickerDialog.setOnDateSetListener(this);
}
@Override
@ -76,18 +63,18 @@ public class DateAndTimePickerActivity extends InjectingAppCompatActivity
}
@Override
public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {
datePickerDialog.dismiss();
dateSelected = true;
final long timestamp =
new DateTime(year, month + 1, day).withMillisOfDay(initial.getMillisOfDay()).getMillis();
newTimePicker(null, 0, timestamp)
.show(getSupportFragmentManager(), FRAG_TAG_TIME_PICKER);
}
@Override
public void onCancel(DialogInterface dialog) {
finish();
public void onDatePicked(DialogInterface dialog, long timestamp) {
if (timestamp == MyDatePickerDialog.NO_DATE) {
finish();
} else {
dialog.dismiss();
dateSelected = true;
newTimePicker(
null,
0,
new DateTime(timestamp).withMillisOfDay(initial.getMillisOfDay()).getMillis())
.show(getSupportFragmentManager(), FRAG_TAG_TIME_PICKER);
}
}
@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;
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.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.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 interface DatePickerCallback{ // TODO: remove this after removing DateAndTimePickerActivity
void onDatePicked(DialogInterface dialog, long timestamp);
}
private DatePickerCallback callback;
@Override
public void onCreate(Bundle savedInstanceState) {
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
}
public class MyDatePickerDialog extends DatePickerDialog {
setOnDateSetListener(this);
private DialogInterface.OnCancelListener listener;
super.onCreate(savedInstanceState);
}
@Override
public void setOnCancelListener(DialogInterface.OnCancelListener listener) {
this.listener = listener;
public void onAttach(@NonNull Context context) {
super.onAttach(context);
if (context instanceof DatePickerCallback) {
callback = (DatePickerCallback) context;
}
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
if (listener != null) {
listener.onCancel(dialog);
if (getTargetFragment() == null) {
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 org.tasks.activities.CameraActivity;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.DatePickerActivity;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.FilterSettingsActivity;
import org.tasks.activities.GoogleTaskListSettingsActivity;
@ -85,8 +84,6 @@ public interface ActivityComponent {
void inject(DateAndTimePickerActivity dateAndTimePickerActivity);
void inject(DatePickerActivity datePickerActivity);
void inject(CameraActivity cameraActivity);
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 java.util.Arrays.asList;
import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.dialogs.MyDatePickerDialog.newDatePicker;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.app.Activity;
@ -59,8 +60,8 @@ import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.activities.DatePickerActivity;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.injection.DialogFragmentComponent;
import org.tasks.injection.ForActivity;
import org.tasks.injection.InjectingDialogFragment;
@ -75,6 +76,7 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
asList(MINUTELY, HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY);
private static final String EXTRA_RRULE = "extra_rrule";
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 final List<String> repeatUntilOptions = new ArrayList<>();
@Inject @ForActivity Context context;
@ -517,10 +519,9 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
}
private void repeatUntilClick() {
Intent intent = new Intent(context, DatePickerActivity.class);
long repeatUntil = DateTime.from(rrule.getUntil()).getMillis();
intent.putExtra(DatePickerActivity.EXTRA_TIMESTAMP, repeatUntil > 0 ? repeatUntil : 0L);
startActivityForResult(intent, REQUEST_PICK_DATE);
newDatePicker(this, REQUEST_PICK_DATE, repeatUntil > 0 ? repeatUntil : 0L)
.show(getParentFragmentManager(), FRAG_TAG_DATE_PICKER);
}
private void updateRepeatUntilOptions() {
@ -554,7 +555,7 @@ public class CustomRecurrenceDialog extends InjectingDialogFragment {
if (requestCode == REQUEST_PICK_DATE) {
if (resultCode == Activity.RESULT_OK) {
rrule.setUntil(
new DateTime(data.getLongExtra(DatePickerActivity.EXTRA_TIMESTAMP, 0L)).toDateValue());
new DateTime(data.getLongExtra(MyDatePickerDialog.EXTRA_TIMESTAMP, 0L)).toDateValue());
rrule.setCount(0);
}
updateRepeatUntilOptions();

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

Loading…
Cancel
Save