Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 59de4f30 authored by Adrian Roos's avatar Adrian Roos
Browse files

Keyguard: Fix date capitalization context

Fixes an issue where the date on the lockscreen
was not title cased in certain locales.

Change-Id: I90ecb8bac88641c962424477e677d94a16098798
Test: Set language to Spanish, verify that first letter of date on lockscreen is capitalized.
Fixes: 62233491
parent a239ed1c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -25,7 +25,8 @@
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center">
    <TextClock android:id="@+id/date_view"
    <com.android.systemui.statusbar.policy.DateView
        android:id="@+id/date_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/clock_white"
+5 −8
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.widget.TextView;
import com.android.internal.util.ArrayUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.ChargingView;
import com.android.systemui.statusbar.policy.DateView;

import java.util.Locale;

@@ -48,7 +49,7 @@ public class KeyguardStatusView extends GridLayout {
    private final AlarmManager mAlarmManager;

    private TextView mAlarmStatusView;
    private TextClock mDateView;
    private DateView mDateView;
    private TextClock mClockView;
    private TextView mOwnerInfo;
    private ViewGroup mClockContainer;
@@ -118,7 +119,6 @@ public class KeyguardStatusView extends GridLayout {
        mAlarmStatusView = findViewById(R.id.alarm_status);
        mDateView = findViewById(R.id.date_view);
        mClockView = findViewById(R.id.clock_view);
        mDateView.setShowCurrentUserTime(true);
        mClockView.setShowCurrentUserTime(true);
        mClockView.setAccessibilityDelegate(new KeyguardClockAccessibilityDelegate(mContext));
        mOwnerInfo = findViewById(R.id.owner_info);
@@ -152,8 +152,7 @@ public class KeyguardStatusView extends GridLayout {
    }

    public void refreshTime() {
        mDateView.setFormat24Hour(Patterns.dateView);
        mDateView.setFormat12Hour(Patterns.dateView);
        mDateView.setDatePattern(Patterns.dateViewSkel);

        mClockView.setFormat12Hour(Patterns.clockView12);
        mClockView.setFormat24Hour(Patterns.clockView24);
@@ -244,7 +243,7 @@ public class KeyguardStatusView extends GridLayout {
    // DateFormat.getBestDateTimePattern is extremely expensive, and refresh is called often.
    // This is an optimization to ensure we only recompute the patterns when the inputs change.
    private static final class Patterns {
        static String dateView;
        static String dateViewSkel;
        static String clockView12;
        static String clockView24;
        static String cacheKey;
@@ -252,7 +251,7 @@ public class KeyguardStatusView extends GridLayout {
        static void update(Context context, boolean hasAlarm) {
            final Locale locale = Locale.getDefault();
            final Resources res = context.getResources();
            final String dateViewSkel = res.getString(hasAlarm
            dateViewSkel = res.getString(hasAlarm
                    ? R.string.abbrev_wday_month_day_no_year_alarm
                    : R.string.abbrev_wday_month_day_no_year);
            final String clockView12Skel = res.getString(R.string.clock_12hr_format);
@@ -260,8 +259,6 @@ public class KeyguardStatusView extends GridLayout {
            final String key = locale.toString() + dateViewSkel + clockView12Skel + clockView24Skel;
            if (key.equals(cacheKey)) return;

            dateView = DateFormat.getBestDateTimePattern(locale, dateViewSkel);

            clockView12 = DateFormat.getBestDateTimePattern(locale, clockView12Skel);
            // CLDR insists on adding an AM/PM indicator even though it wasn't in the skeleton
            // format.  The following code removes the AM/PM indicator if we didn't want it.
+12 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.IntentFilter;
import android.content.res.TypedArray;
import android.icu.text.DateFormat;
import android.icu.text.DisplayContext;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.TextView;

@@ -115,4 +116,15 @@ public class DateView extends TextView {
            mLastText = text;
        }
    }

    public void setDatePattern(String pattern) {
        if (TextUtils.equals(pattern, mDatePattern)) {
            return;
        }
        mDatePattern = pattern;
        mDateFormat = null;
        if (isAttachedToWindow()) {
            updateClock();
        }
    }
}