From 357f51fd5ee5e1cfb13d5f9ea764c1b918deb73e Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Wed, 6 Dec 2017 21:41:42 -0600 Subject: [PATCH] SnoozeDelayPickerActivity: Fix timepicker layout --- .../SnoozeDelayPickerActivity.java | 66 +++++++++---------- .../uhabits/receivers/ReminderController.java | 5 +- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java index ab51a7983..03d26a707 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayPickerActivity.java @@ -1,41 +1,31 @@ package org.isoron.uhabits.notifications; + +import android.app.*; import android.os.*; import android.support.annotation.*; import android.support.v4.app.*; -import android.support.v7.app.*; import android.text.format.*; import android.view.*; import android.widget.*; -import com.android.datetimepicker.time.*; +import com.android.datetimepicker.time.TimePickerDialog; import org.isoron.uhabits.*; -import org.isoron.uhabits.R; import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.receivers.*; import java.util.*; -import butterknife.*; - -import static android.content.ContentUris.*; +import static android.content.ContentUris.parseId; -public class SnoozeDelayPickerActivity extends AppCompatActivity implements AdapterView - .OnItemClickListener +public class SnoozeDelayPickerActivity extends FragmentActivity + implements AdapterView.OnItemClickListener { - public static final String ACTION_ASK_SNOOZE = "org.isoron.uhabits.ACTION_ASK_SNOOZE"; - private Habit habit; private ReminderController reminderController; - @BindArray(R.array.snooze_picker_names) - protected String[] snoozeNames; - - @BindArray(R.array.snooze_picker_values) - protected int[] snoozeValues; - @Override protected void onCreate(@Nullable Bundle bundle) { @@ -49,19 +39,35 @@ public class SnoozeDelayPickerActivity extends AppCompatActivity implements Adap habit = appComponent.getHabitList().getById(parseId(getIntent().getData())); if (habit == null) finish(); - setTheme(R.style.Theme_AppCompat_Light_Dialog_Alert); - ButterKnife.bind(this); + int theme = R.style.Theme_AppCompat_Light_Dialog_Alert; + AlertDialog dialog = new AlertDialog.Builder(new ContextThemeWrapper(this, theme)) + .setTitle(R.string.select_snooze_delay) + .setItems(R.array.snooze_picker_names, null) + .create(); - ListView listView = new ListView(this); - listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, - snoozeNames)); - listView.setOnItemClickListener(this); - setContentView(listView); + dialog.getListView().setOnItemClickListener(this); + dialog.setOnDismissListener(d -> finish()); + dialog.show(); + } + + private void showTimePicker() + { + final Calendar calendar = Calendar.getInstance(); + TimePickerDialog dialog = TimePickerDialog.newInstance( + (view, hour, minute) -> { + reminderController.onSnoozeTimePicked(habit, hour, minute); + finish(); + }, + calendar.get(Calendar.HOUR_OF_DAY), + calendar.get(Calendar.MINUTE), + DateFormat.is24HourFormat(this)); + dialog.show(getSupportFragmentManager(), "timePicker"); } @Override public void onItemClick(AdapterView parent, View view, int position, long id) { + int[] snoozeValues = getResources().getIntArray(R.array.snooze_picker_values); if (snoozeValues[position] >= 0) { reminderController.onSnoozeDelayPicked(habit, snoozeValues[position]); @@ -70,16 +76,10 @@ public class SnoozeDelayPickerActivity extends AppCompatActivity implements Adap else showTimePicker(); } - private void showTimePicker() + @Override + public void finish() { - final Calendar calendar = Calendar.getInstance(); - int defaultHour = calendar.get(Calendar.HOUR_OF_DAY); - int defaultMinute = calendar.get(Calendar.MINUTE); - TimePickerDialog dialog = TimePickerDialog.newInstance( - (view, hour, minute) -> - reminderController.onSnoozeTimePicked(habit, hour, minute), - defaultHour, defaultMinute, DateFormat.is24HourFormat(this)); - - dialog.show(getSupportFragmentManager(), "timePicker"); + super.finish(); + overridePendingTransition(0, 0); } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java index 0d07a1212..c253064f1 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderController.java @@ -104,9 +104,8 @@ public class ReminderController private void showSnoozeDelayPicker(@NonNull Habit habit, Context context) { context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); - Intent intent = new Intent(SnoozeDelayPickerActivity.ACTION_ASK_SNOOZE, - Uri.parse(habit.getUriString()), - context, SnoozeDelayPickerActivity.class); + Intent intent = new Intent(context, SnoozeDelayPickerActivity.class); + intent.setData(Uri.parse(habit.getUriString())); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); }