Replace alarm spinner with dialog

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

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

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

Loading…
Cancel
Save