From 436d7503133ae750fae72e191fa8fcf744a827ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Sat, 15 Feb 2025 16:40:56 +0100 Subject: [PATCH] health: Format notification's target time according to locale Fixes: 8a7af5a9742863312b3dcef65cfdbd77f2660daf Fixes: https://gitlab.com/LineageOS/issues/android/-/issues/8317 Change-Id: I2c059da77c54c4fea11bdbabd1dde752f74ca6cf --- .../health/ChargingControlController.java | 7 ++++--- .../health/ChargingControlNotification.java | 2 +- .../platform/internal/health/Util.java | 18 +++++++++--------- .../internal/health/ccprovider/Toggle.java | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlController.java b/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlController.java index cc0a9089..69f988df 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlController.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlController.java @@ -319,7 +319,7 @@ public class ChargingControlController extends LineageHealthFeature { private ChargeTime getChargeTime() { // Get duration to target full time final long currentTime = System.currentTimeMillis(); - Log.i(TAG, "Current time is " + msToString(currentTime)); + Log.i(TAG, "Current time is " + msToString(mContext, currentTime)); long targetTime = 0, startTime = currentTime; int mode = getMode(); @@ -362,8 +362,9 @@ public class ChargingControlController extends LineageHealthFeature { return null; } - Log.i(TAG, "Got target time " + msToString(targetTime) + ", start time " + - msToString(startTime) + ", current time " + msToString(currentTime)); + Log.i(TAG, "Got target time " + msToString(mContext, targetTime) + + ", start time " + msToString(mContext, startTime) + + ", current time " + msToString(mContext, currentTime)); Log.i(TAG, "Raw: " + targetTime + ", " + startTime + ", " + currentTime); return new ChargeTime(startTime, targetTime); diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java b/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java index 6762997f..50a07322 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/health/ChargingControlNotification.java @@ -111,7 +111,7 @@ public class ChargingControlNotification { if (targetTime != null) { message = String.format( mContext.getString(R.string.charging_control_notification_content_target), - msToString(targetTime)); + msToString(mContext, targetTime)); } else { message = String.format( mContext.getString(R.string.charging_control_notification_content_limit), diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/health/Util.java b/lineage/lib/main/java/org/lineageos/platform/internal/health/Util.java index 021d7482..38b84ce2 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/health/Util.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/health/Util.java @@ -5,33 +5,33 @@ package org.lineageos.platform.internal.health; -import static java.time.format.FormatStyle.SHORT; +import android.content.Context; +import android.text.format.DateFormat; import java.text.SimpleDateFormat; -import java.time.Instant; import java.time.LocalDate; import java.time.LocalTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.TimeZone; public class Util { - private static final DateTimeFormatter mFormatter = DateTimeFormatter.ofLocalizedTime(SHORT); - /** - * Convert milliseconds to a string in the format "hh:mm:ss a". + * Convert milliseconds to a string in the current locale's format. * * @param ms milliseconds from epoch * @return formatted time string in current time zone */ - static public String msToString(long ms) { - final SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss a"); + static public String msToString(Context context, long ms) { + return DateFormat.getTimeFormat(context).format(msToLocalTime(ms).getTime()); + } + + static private Calendar msToLocalTime(long ms) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(ms); - return dateFormat.format(calendar.getTime()); + return calendar; } /** diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/health/ccprovider/Toggle.java b/lineage/lib/main/java/org/lineageos/platform/internal/health/ccprovider/Toggle.java index c9b7a8ae..1f537fee 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/health/ccprovider/Toggle.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/health/ccprovider/Toggle.java @@ -243,7 +243,7 @@ public class Toggle extends ChargingControlProvider { public void dump(PrintWriter pw) { pw.println("Provider: " + getClass().getName()); pw.println(" mIsLimitSet: " + mIsLimitSet); - pw.println(" mSavedTargetTime: " + msToString(mSavedTargetTime)); + pw.println(" mSavedTargetTime: " + msToString(mContext, mSavedTargetTime)); pw.println(" mEstimatedFullTime: " + msToUTCString(mEstimatedFullTime)); pw.println(" mStage: " + mStage); pw.println(" mChargeLimitMargin: " + mChargingLimitMargin);