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.content.Context;
import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@ -26,6 +27,7 @@ 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;
@ -42,6 +44,7 @@ import javax.inject.Inject;
import org.tasks.R;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.data.Alarm;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.MyTimePickerDialog;
import org.tasks.injection.ForActivity;
import org.tasks.injection.FragmentComponent;
@ -68,12 +71,13 @@ public class ReminderControlSet extends TaskEditControlFragment {
@Inject AlarmService alarmService;
@Inject @ForActivity Context context;
@Inject Locale locale;
@Inject DialogBuilder dialogBuilder;
@BindView(R.id.alert_container)
LinearLayout alertContainer;
@BindView(R.id.reminder_alarm)
Spinner mode;
TextView mode;
@BindView(R.id.alarms_add_spinner)
Spinner addSpinner;
@ -87,24 +91,16 @@ public class ReminderControlSet extends TaskEditControlFragment {
private boolean whenOverdue;
private ArrayAdapter<String> remindAdapter;
@OnItemSelected(R.id.reminder_alarm)
void ringModeSelected(int position) {
ringMode = position;
}
@Nullable
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
mode.setPaintFlags(mode.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
remindAdapter =
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();
if (savedInstanceState == null) {
@ -128,6 +124,34 @@ public class ReminderControlSet extends TaskEditControlFragment {
: 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)
void addAlarm(int position) {
String selected = spinnerOptions.get(position);
@ -328,11 +352,11 @@ public class ReminderControlSet extends TaskEditControlFragment {
whenOverdue = (flags & Task.NOTIFY_AFTER_DEADLINE) > 0;
if ((flags & Task.NOTIFY_MODE_NONSTOP) > 0) {
mode.setSelection(2);
setRingMode(2);
} else if ((flags & Task.NOTIFY_MODE_FIVE) > 0) {
mode.setSelection(1);
setRingMode(1);
} else {
mode.setSelection(0);
setRingMode(0);
}
}

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

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

Loading…
Cancel
Save