[android] Make from- and to-time pickers save input mode while picking time

Signed-off-by: lluka <lluka@noreply.codeberg.org>
This commit is contained in:
lluka
2025-10-18 17:07:37 +02:00
committed by jeanbaptisteC
parent 0eaa770b21
commit 7b1ed86a5f

View File

@@ -30,6 +30,7 @@ public class FromToTimePicker
private MaterialTimePicker mToTimePicker; private MaterialTimePicker mToTimePicker;
private MaterialTimePicker mFromTimePicker; private MaterialTimePicker mFromTimePicker;
private boolean mIsFromTimePicked; private boolean mIsFromTimePicked;
private int mInputMode;
public static void pickTime(@NonNull Fragment fragment, public static void pickTime(@NonNull Fragment fragment,
@NonNull FromToTimePicker.OnPickListener listener, @NonNull FromToTimePicker.OnPickListener listener,
@@ -64,6 +65,7 @@ public class FromToTimePicker
mId = id; mId = id;
mIsFromTimePicked = false; mIsFromTimePicked = false;
mInputMode = MaterialTimePicker.INPUT_MODE_CLOCK;
mIs24HourFormat = DateUtils.is24HourFormat(mActivity); mIs24HourFormat = DateUtils.is24HourFormat(mActivity);
mResources = mActivity.getResources(); mResources = mActivity.getResources();
@@ -75,7 +77,7 @@ public class FromToTimePicker
{ {
if (mFromTimePicker != null) if (mFromTimePicker != null)
{ {
mFromTime = getHoursMinutes(mFromTimePicker); saveState(mFromTimePicker, true);
mFromTimePicker.dismiss(); mFromTimePicker.dismiss();
} }
@@ -87,7 +89,7 @@ public class FromToTimePicker
{ {
if (mToTimePicker != null) if (mToTimePicker != null)
{ {
mToTime = getHoursMinutes(mToTimePicker); saveState(mToTimePicker, false);
mToTimePicker.dismiss(); mToTimePicker.dismiss();
} }
@@ -108,7 +110,8 @@ public class FromToTimePicker
timePicker.addOnPositiveButtonClickListener(view -> timePicker.addOnPositiveButtonClickListener(view ->
{ {
mIsFromTimePicked = true; mIsFromTimePicked = true;
mFromTime = getHoursMinutes(timePicker); saveState(timePicker, true);
mFromTimePicker = null;
showToTimePicker(); showToTimePicker();
}); });
@@ -126,6 +129,8 @@ public class FromToTimePicker
timePicker.addOnNegativeButtonClickListener(view -> timePicker.addOnNegativeButtonClickListener(view ->
{ {
saveState(timePicker, false);
mToTimePicker = null;
if (mIsFromTimePicked) if (mIsFromTimePicked)
showFromTimePicker(); showFromTimePicker();
else else
@@ -134,7 +139,7 @@ public class FromToTimePicker
timePicker.addOnPositiveButtonClickListener(view -> timePicker.addOnPositiveButtonClickListener(view ->
{ {
mToTime = getHoursMinutes(timePicker); saveState(timePicker, false);
finishTimePicking(true); finishTimePicking(true);
}); });
@@ -152,7 +157,7 @@ public class FromToTimePicker
MaterialTimePicker.Builder builder = new MaterialTimePicker.Builder() MaterialTimePicker.Builder builder = new MaterialTimePicker.Builder()
.setTitleText(title) .setTitleText(title)
.setTimeFormat(mIs24HourFormat ? TimeFormat.CLOCK_24H : TimeFormat.CLOCK_12H) .setTimeFormat(mIs24HourFormat ? TimeFormat.CLOCK_24H : TimeFormat.CLOCK_12H)
.setInputMode(MaterialTimePicker.INPUT_MODE_CLOCK) .setInputMode(mInputMode)
.setTheme(R.style.MwmMain_MaterialTimePicker) .setTheme(R.style.MwmMain_MaterialTimePicker)
.setHour((int) time.hours) .setHour((int) time.hours)
.setMinute((int) time.minutes); .setMinute((int) time.minutes);
@@ -166,9 +171,18 @@ public class FromToTimePicker
return builder.build(); return builder.build();
} }
private HoursMinutes getHoursMinutes(@NonNull MaterialTimePicker picker) private void saveState(@NonNull MaterialTimePicker timePicker, boolean isFromTime)
{ {
return new HoursMinutes(picker.getHour(), picker.getMinute(), mIs24HourFormat); mInputMode = timePicker.getInputMode();
if (isFromTime)
mFromTime = getHoursMinutes(timePicker);
else
mToTime = getHoursMinutes(timePicker);
}
private HoursMinutes getHoursMinutes(@NonNull MaterialTimePicker timePicker)
{
return new HoursMinutes(timePicker.getHour(), timePicker.getMinute(), mIs24HourFormat);
} }
private void finishTimePicking(boolean isConfirmed) private void finishTimePicking(boolean isConfirmed)