Replace alarm spinner with dialog

pull/996/head
Alex Baker 5 years ago
parent e3b16d5a47
commit 53f2f8be4b

@ -22,15 +22,12 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.OnItemSelected;
import com.google.common.primitives.Longs; import com.google.common.primitives.Longs;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.alarms.AlarmService; import com.todoroo.astrid.alarms.AlarmService;
@ -49,7 +46,6 @@ 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;
import org.tasks.locale.Locale; import org.tasks.locale.Locale;
import org.tasks.ui.HiddenTopArrayAdapter;
import org.tasks.ui.TaskEditControlFragment; import org.tasks.ui.TaskEditControlFragment;
/** /**
@ -66,7 +62,6 @@ public class ReminderControlSet extends TaskEditControlFragment {
private static final String EXTRA_FLAGS = "extra_flags"; private static final String EXTRA_FLAGS = "extra_flags";
private static final String EXTRA_RANDOM_REMINDER = "extra_random_reminder"; private static final String EXTRA_RANDOM_REMINDER = "extra_random_reminder";
private static final String EXTRA_ALARMS = "extra_alarms"; private static final String EXTRA_ALARMS = "extra_alarms";
private final List<String> spinnerOptions = new ArrayList<>();
private final Set<Long> alarms = new LinkedHashSet<>(); private final Set<Long> alarms = new LinkedHashSet<>();
@Inject AlarmService alarmService; @Inject AlarmService alarmService;
@Inject @ForActivity Context context; @Inject @ForActivity Context context;
@ -79,9 +74,6 @@ public class ReminderControlSet extends TaskEditControlFragment {
@BindView(R.id.reminder_alarm) @BindView(R.id.reminder_alarm)
TextView mode; TextView mode;
@BindView(R.id.alarms_add_spinner)
Spinner addSpinner;
private long taskId; private long taskId;
private int flags; private int flags;
private long randomReminder; private long randomReminder;
@ -89,7 +81,6 @@ public class ReminderControlSet extends TaskEditControlFragment {
private RandomReminderControlSet randomControlSet; private RandomReminderControlSet randomControlSet;
private boolean whenDue; private boolean whenDue;
private boolean whenOverdue; private boolean whenOverdue;
private ArrayAdapter<String> remindAdapter;
@Nullable @Nullable
@Override @Override
@ -99,9 +90,6 @@ public class ReminderControlSet extends TaskEditControlFragment {
mode.setPaintFlags(mode.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); mode.setPaintFlags(mode.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
remindAdapter =
new HiddenTopArrayAdapter(context, android.R.layout.simple_spinner_item, spinnerOptions);
taskId = task.getId(); taskId = task.getId();
if (savedInstanceState == null) { if (savedInstanceState == null) {
flags = task.getReminderFlags(); flags = task.getReminderFlags();
@ -113,8 +101,6 @@ public class ReminderControlSet extends TaskEditControlFragment {
setup(Longs.asList(savedInstanceState.getLongArray(EXTRA_ALARMS))); setup(Longs.asList(savedInstanceState.getLongArray(EXTRA_ALARMS)));
} }
addSpinner.setAdapter(remindAdapter);
return view; return view;
} }
@ -152,9 +138,7 @@ public class ReminderControlSet extends TaskEditControlFragment {
} }
} }
@OnItemSelected(R.id.alarms_add_spinner) void addAlarm(String selected) {
void addAlarm(int position) {
String selected = spinnerOptions.get(position);
if (selected.equals(getString(R.string.when_due))) { if (selected.equals(getString(R.string.when_due))) {
addDue(); addDue();
} else if (selected.equals(getString(R.string.when_overdue))) { } else if (selected.equals(getString(R.string.when_overdue))) {
@ -164,17 +148,23 @@ public class ReminderControlSet extends TaskEditControlFragment {
} else if (selected.equals(getString(R.string.pick_a_date_and_time))) { } else if (selected.equals(getString(R.string.pick_a_date_and_time))) {
addNewAlarm(); addNewAlarm();
} }
if (position != 0) {
updateSpinner();
}
} }
@OnClick(R.id.alarms_add) @OnClick(R.id.alarms_add)
void addAlarm(View view) { void addAlarm(View view) {
if (spinnerOptions.size() == 2) { List<String> options = getOptions();
if (options.size() == 1) {
addNewAlarm(); addNewAlarm();
} else { } else {
addSpinner.performClick(); dialogBuilder
.newDialog()
.setItems(
options,
(dialog, which) -> {
addAlarm(options.get(which));
dialog.dismiss();
})
.show();
} }
} }
@ -209,7 +199,6 @@ public class ReminderControlSet extends TaskEditControlFragment {
for (long timestamp : alarms) { for (long timestamp : alarms) {
addAlarmRow(timestamp); addAlarmRow(timestamp);
} }
updateSpinner();
} }
@Override @Override
@ -309,26 +298,22 @@ public class ReminderControlSet extends TaskEditControlFragment {
if (onRemove != null) { if (onRemove != null) {
onRemove.onClick(v); onRemove.onClick(v);
} }
updateSpinner();
}); });
updateSpinner();
} }
private void updateSpinner() { private List<String> getOptions() {
addSpinner.setSelection(0); List<String> options = new ArrayList<>();
spinnerOptions.clear();
spinnerOptions.add("");
if (!whenDue) { if (!whenDue) {
spinnerOptions.add(getString(R.string.when_due)); options.add(getString(R.string.when_due));
} }
if (!whenOverdue) { if (!whenOverdue) {
spinnerOptions.add(getString(R.string.when_overdue)); options.add(getString(R.string.when_overdue));
} }
if (randomControlSet == null) { if (randomControlSet == null) {
spinnerOptions.add(getString(R.string.randomly)); options.add(getString(R.string.randomly));
} }
spinnerOptions.add(getString(R.string.pick_a_date_and_time)); options.add(getString(R.string.pick_a_date_and_time));
remindAdapter.notifyDataSetChanged(); return options;
} }
private void addDue() { private void addDue() {

@ -1,22 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><!-- <?xml version="1.0" encoding="utf-8"?>
** Copyright (c) 2012 Todoroo Inc <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:orientation="vertical">
<LinearLayout <LinearLayout
android:id="@+id/alert_container" android:id="@+id/alert_container"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"/> android:orientation="vertical" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView <TextView
android:id="@+id/reminder_alarm" android:id="@+id/reminder_alarm"
@ -24,32 +15,20 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_below="@id/alert_container"
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:gravity="end"/> android:gravity="end" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_gravity="start"
android:layout_toStartOf="@id/reminder_alarm"
android:gravity="start"
android:orientation="horizontal">
<TextView <TextView
android:id="@+id/alarms_add" android:id="@+id/alarms_add"
style="@style/TaskEditTextPrimary" style="@style/TaskEditTextPrimary"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_alignParentStart="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:layout_gravity="start"
android:layout_alignBaseline="@id/reminder_alarm"
android:layout_toStartOf="@id/reminder_alarm"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/add_reminder"/> android:hint="@string/add_reminder" />
<Spinner
android:id="@+id/alarms_add_spinner"
android:layout_width="0dip"
android:layout_height="0dip"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout> </RelativeLayout>

Loading…
Cancel
Save