From 2932b5afd235c1a7b4544a5c105691de9911f95f Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Wed, 8 May 2024 20:04:28 -0500 Subject: [PATCH] Switch to material components --- .../ui/ConversationFragment.java | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 3dc498e2af453a384cf18c0e5348b4e8cf403063..b70407fa50680af9dcbcbb4fc20ad10827cb4879 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -2023,18 +2023,31 @@ public class ConversationFragment extends XmppFragment } private void scheduleMessage() { - // TODO: upgrade to material you/3 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { - final Calendar now = Calendar.getInstance(); - new DatePickerDialog(activity, (view, year, month, day) -> { - new TimePickerDialog(activity, (view1, hour, minute) -> { - final Calendar c = Calendar.getInstance(); - c.set(year, month, day, hour, minute); - final long timestamp = c.getTimeInMillis(); - sendMessage(timestamp); - Log.d(Config.LOGTAG, conversation.getAccount().getJid().asBareJid() + ": scheduled message for " + timestamp); - }, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), true).show(); - }, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH)).show(); + final var datePicker = com.google.android.material.datepicker.MaterialDatePicker.Builder.datePicker() + .setTitleText("Schedule Message") + .setSelection(com.google.android.material.datepicker.MaterialDatePicker.todayInUtcMilliseconds()) + .setCalendarConstraints( + new com.google.android.material.datepicker.CalendarConstraints.Builder() + .setStart(com.google.android.material.datepicker.MaterialDatePicker.todayInUtcMilliseconds()) + .build() + ) + .build(); + datePicker.addOnPositiveButtonClickListener((date) -> { + final Calendar now = Calendar.getInstance(); + final var timePicker = new com.google.android.material.timepicker.MaterialTimePicker.Builder() + .setTitleText("Schedule Message") + .setHour(now.get(Calendar.HOUR)) + .setMinute(now.get(Calendar.MINUTE)) + .build(); + timePicker.addOnPositiveButtonClickListener((v2) -> { + final long timestamp = date + (timePicker.getHour() * 3600000) + (timePicker.getMinute() * 60000); + sendMessage(timestamp); + Log.d(Config.LOGTAG, conversation.getAccount().getJid().asBareJid() + ": scheduled message for " + timestamp); + }); + timePicker.show(activity.getSupportFragmentManager(), "schedulMessageTime"); + }); + datePicker.show(activity.getSupportFragmentManager(), "schedulMessageDate"); } }