From 5137772fa04ef098215a375f0074b48db4f9a5cb Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 29 Jan 2024 10:52:46 +0100 Subject: [PATCH] Show rule relative time in list --- .../java/eu/faircode/email/AdapterRule.java | 13 +++++++++++-- .../java/eu/faircode/email/FragmentRule.java | 17 ++++------------- app/src/main/java/eu/faircode/email/Helper.java | 9 +++++++++ 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterRule.java b/app/src/main/java/eu/faircode/email/AdapterRule.java index 75e7d5ab92..6f27bac674 100644 --- a/app/src/main/java/eu/faircode/email/AdapterRule.java +++ b/app/src/main/java/eu/faircode/email/AdapterRule.java @@ -167,9 +167,18 @@ public class AdapterRule extends RecyclerView.Adapter { if (jcondition.has("date")) conditions.add(new Condition(context.getString(R.string.title_rule_time_abs), null, null)); - if (jcondition.has("schedule")) + if (jcondition.has("schedule")) { + String range = null; + JSONObject jschedule = jcondition.optJSONObject("schedule"); + if (jschedule != null && jschedule.has("start") && jschedule.has("end")) { + int start = jschedule.getInt("start"); + int end = jschedule.getInt("end"); + range = Helper.formatHour(context, start % (24 * 60)) + " - " + + Helper.formatHour(context, end % (24 * 60)); + } conditions.add(new Condition(context.getString(R.string.title_rule_time_rel), - null, null)); + range, null)); + } SpannableStringBuilder ssb = new SpannableStringBuilderEx(); for (Condition condition : conditions) { diff --git a/app/src/main/java/eu/faircode/email/FragmentRule.java b/app/src/main/java/eu/faircode/email/FragmentRule.java index da036fc30c..8ad854f861 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRule.java +++ b/app/src/main/java/eu/faircode/email/FragmentRule.java @@ -1109,14 +1109,14 @@ public class FragmentRule extends FragmentBase { private void onScheduleStart(Bundle args) { int minutes = args.getInt("minutes", 0); tvScheduleHourStart.setTag(minutes); - tvScheduleHourStart.setText(formatHour(getContext(), minutes)); + tvScheduleHourStart.setText(Helper.formatHour(getContext(), minutes)); cbScheduleEnd.setChecked(true); } private void onScheduleEnd(Bundle args) { int minutes = args.getInt("minutes", 0); tvScheduleHourEnd.setTag(minutes); - tvScheduleHourEnd.setText(formatHour(getContext(), minutes)); + tvScheduleHourEnd.setText(Helper.formatHour(getContext(), minutes)); cbScheduleEnd.setChecked(true); } @@ -1280,10 +1280,10 @@ public class FragmentRule extends FragmentBase { spScheduleDayEnd.setSelection(end / (24 * 60)); tvScheduleHourStart.setTag(start % (24 * 60)); - tvScheduleHourStart.setText(formatHour(getContext(), start % (24 * 60))); + tvScheduleHourStart.setText(Helper.formatHour(getContext(), start % (24 * 60))); tvScheduleHourEnd.setTag(end % (24 * 60)); - tvScheduleHourEnd.setText(formatHour(getContext(), end % (24 * 60))); + tvScheduleHourEnd.setText(Helper.formatHour(getContext(), end % (24 * 60))); if (rule == null) { for (int pos = 0; pos < adapterIdentity.getCount(); pos++) @@ -1829,15 +1829,6 @@ public class FragmentRule extends FragmentBase { } } - private String formatHour(Context context, int minutes) { - Calendar cal = Calendar.getInstance(); - cal.set(Calendar.HOUR_OF_DAY, minutes / 60); - cal.set(Calendar.MINUTE, minutes % 60); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); - return Helper.getTimeInstance(context, SimpleDateFormat.SHORT).format(cal.getTime()); - } - public static class TimePickerFragment extends FragmentDialogBase implements TimePickerDialog.OnTimeSetListener { @NonNull @Override diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 3d7d6f297c..db97321c1b 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -2307,6 +2307,15 @@ public class Helper { return DateUtils.getRelativeTimeSpanString(context, millis); } + static String formatHour(Context context, int minutes) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.HOUR_OF_DAY, minutes / 60); + cal.set(Calendar.MINUTE, minutes % 60); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + return Helper.getTimeInstance(context, SimpleDateFormat.SHORT).format(cal.getTime()); + } + static String formatDuration(long ms) { return formatDuration(ms, true); }