Replace ring mode spinner with dialog

pull/996/head
Alex Baker 4 years ago
parent 0aed1202eb
commit e3b16d5a47

@ -16,6 +16,7 @@ import static org.tasks.date.DateTimeUtils.newDateTime;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -26,6 +27,7 @@ import android.widget.LinearLayout;
import android.widget.Spinner; 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 butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.OnItemSelected; import butterknife.OnItemSelected;
@ -42,6 +44,7 @@ import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.activities.DateAndTimePickerActivity; import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.data.Alarm; import org.tasks.data.Alarm;
import org.tasks.dialogs.DialogBuilder;
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;
@ -68,12 +71,13 @@ public class ReminderControlSet extends TaskEditControlFragment {
@Inject AlarmService alarmService; @Inject AlarmService alarmService;
@Inject @ForActivity Context context; @Inject @ForActivity Context context;
@Inject Locale locale; @Inject Locale locale;
@Inject DialogBuilder dialogBuilder;
@BindView(R.id.alert_container) @BindView(R.id.alert_container)
LinearLayout alertContainer; LinearLayout alertContainer;
@BindView(R.id.reminder_alarm) @BindView(R.id.reminder_alarm)
Spinner mode; TextView mode;
@BindView(R.id.alarms_add_spinner) @BindView(R.id.alarms_add_spinner)
Spinner addSpinner; Spinner addSpinner;
@ -87,24 +91,16 @@ public class ReminderControlSet extends TaskEditControlFragment {
private boolean whenOverdue; private boolean whenOverdue;
private ArrayAdapter<String> remindAdapter; private ArrayAdapter<String> remindAdapter;
@OnItemSelected(R.id.reminder_alarm)
void ringModeSelected(int position) {
ringMode = position;
}
@Nullable @Nullable
@Override @Override
public View onCreateView( public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState); View view = super.onCreateView(inflater, container, savedInstanceState);
mode.setPaintFlags(mode.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
remindAdapter = remindAdapter =
new HiddenTopArrayAdapter(context, android.R.layout.simple_spinner_item, spinnerOptions); new HiddenTopArrayAdapter(context, android.R.layout.simple_spinner_item, spinnerOptions);
String[] modes = getResources().getStringArray(R.array.reminder_ring_modes);
ArrayAdapter<String> modeAdapter =
new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, modes);
modeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mode.setAdapter(modeAdapter);
taskId = task.getId(); taskId = task.getId();
if (savedInstanceState == null) { if (savedInstanceState == null) {
@ -128,6 +124,34 @@ public class ReminderControlSet extends TaskEditControlFragment {
: transform(alarmService.getAlarms(taskId), Alarm::getTime); : transform(alarmService.getAlarms(taskId), Alarm::getTime);
} }
@OnClick(R.id.reminder_alarm)
void onClickRingType() {
String[] modes = getResources().getStringArray(R.array.reminder_ring_modes);
dialogBuilder
.newDialog()
.setSingleChoiceItems(modes, ringMode, (dialog, which) -> {
setRingMode(which);
dialog.dismiss();
})
.show();
}
private void setRingMode(int ringMode) {
this.ringMode = ringMode;
mode.setText(getRingModeString(ringMode));
}
private @StringRes int getRingModeString(int ringMode) {
switch (ringMode) {
case 2:
return R.string.ring_nonstop;
case 1:
return R.string.ring_five_times;
default:
return R.string.ring_once;
}
}
@OnItemSelected(R.id.alarms_add_spinner) @OnItemSelected(R.id.alarms_add_spinner)
void addAlarm(int position) { void addAlarm(int position) {
String selected = spinnerOptions.get(position); String selected = spinnerOptions.get(position);
@ -328,11 +352,11 @@ public class ReminderControlSet extends TaskEditControlFragment {
whenOverdue = (flags & Task.NOTIFY_AFTER_DEADLINE) > 0; whenOverdue = (flags & Task.NOTIFY_AFTER_DEADLINE) > 0;
if ((flags & Task.NOTIFY_MODE_NONSTOP) > 0) { if ((flags & Task.NOTIFY_MODE_NONSTOP) > 0) {
mode.setSelection(2); setRingMode(2);
} else if ((flags & Task.NOTIFY_MODE_FIVE) > 0) { } else if ((flags & Task.NOTIFY_MODE_FIVE) > 0) {
mode.setSelection(1); setRingMode(1);
} else { } else {
mode.setSelection(0); setRingMode(0);
} }
} }

@ -2,6 +2,7 @@ package org.tasks.dialogs;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.View; import android.view.View;
import android.widget.ListAdapter; import android.widget.ListAdapter;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
@ -80,10 +81,12 @@ public class AlertDialogBuilder {
public AlertDialogBuilder setSingleChoiceItems( public AlertDialogBuilder setSingleChoiceItems(
List<String> strings, int selectedIndex, DialogInterface.OnClickListener onClickListener) { List<String> strings, int selectedIndex, DialogInterface.OnClickListener onClickListener) {
builder.setSingleChoiceItems( return setSingleChoiceItems(strings.toArray(new String[0]), selectedIndex, onClickListener);
addDirectionality(strings.toArray(new String[0])), }
selectedIndex,
onClickListener); public AlertDialogBuilder setSingleChoiceItems(
String[] strings, int selectedIndex, OnClickListener onClickListener) {
builder.setSingleChoiceItems(addDirectionality(strings), selectedIndex, onClickListener);
return this; return this;
} }

@ -18,14 +18,13 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<Spinner <TextView
android:id="@+id/reminder_alarm" android:id="@+id/reminder_alarm"
style="@style/TaskEditTextPrimary"
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:paddingStart="0dp" android:background="?attr/selectableItemBackgroundBorderless"
android:paddingEnd="10dp"
android:background="@null"
android:gravity="end"/> android:gravity="end"/>
<LinearLayout <LinearLayout

Loading…
Cancel
Save