Initial unified commit for Android 13, with TrebleDroid GSI target, syncing up to 20221111

This commit is contained in:
Andy CrossGate Yan
2022-11-11 12:27:50 +00:00
commit cd68e3dcbc
197 changed files with 127907 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
From 2e7478c72aa7c3b6585ec64bd61d9df6366e1c48 Mon Sep 17 00:00:00 2001
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
Date: Sun, 5 Sep 2021 00:30:33 +0000
Subject: [PATCH 1/3] DeskClock: Remove night mode
Change-Id: I885f39027e78fcda397f1be59d17bc24bc66671a
---
res/xml/screensaver_settings.xml | 8 +-------
src/com/android/deskclock/Screensaver.java | 5 ++---
src/com/android/deskclock/ScreensaverActivity.java | 2 +-
3 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/res/xml/screensaver_settings.xml b/res/xml/screensaver_settings.xml
index 1680aab83..73375dcfa 100644
--- a/res/xml/screensaver_settings.xml
+++ b/res/xml/screensaver_settings.xml
@@ -24,10 +24,4 @@
android:key="screensaver_clock_style"
android:title="@string/clock_style" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:key="screensaver_night_mode"
- android:summary="@string/night_mode_summary"
- android:title="@string/night_mode_title" />
-
-</PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
diff --git a/src/com/android/deskclock/Screensaver.java b/src/com/android/deskclock/Screensaver.java
index 29cc13ff9..8def22b30 100644
--- a/src/com/android/deskclock/Screensaver.java
+++ b/src/com/android/deskclock/Screensaver.java
@@ -141,9 +141,8 @@ public final class Screensaver extends DreamService {
private void setClockStyle() {
Utils.setScreensaverClockStyle(mDigitalClock, mAnalogClock);
- final boolean dimNightMode = DataModel.getDataModel().getScreensaverNightModeOn();
- Utils.dimClockView(dimNightMode, mMainClockView);
- setScreenBright(!dimNightMode);
+ Utils.dimClockView(false, mMainClockView);
+ setScreenBright(true);
}
/**
diff --git a/src/com/android/deskclock/ScreensaverActivity.java b/src/com/android/deskclock/ScreensaverActivity.java
index cf770086b..7a756df7d 100644
--- a/src/com/android/deskclock/ScreensaverActivity.java
+++ b/src/com/android/deskclock/ScreensaverActivity.java
@@ -107,7 +107,7 @@ public class ScreensaverActivity extends BaseActivity {
Utils.setClockIconTypeface(mMainClockView);
Utils.setTimeFormat((TextClock) digitalClock, false);
Utils.setClockStyle(digitalClock, analogClock);
- Utils.dimClockView(true, mMainClockView);
+ Utils.dimClockView(false, mMainClockView);
analogClock.enableSeconds(false);
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
--
2.25.1

View File

@@ -0,0 +1,587 @@
From e72a06f095a0363085f32d631597611b96e6c160 Mon Sep 17 00:00:00 2001
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
Date: Wed, 19 Jan 2022 18:04:36 +0000
Subject: [PATCH 2/3] DeskClock: Adapt digital clocks to S style
Lollipop is so yesterday...
Bring the layouts of various digital clocks (app, widget, daydream)
in-line, and adjust their styles to match the custom keyguard on S
Caveats/TODO:
- Widget swallows all touch events, even when touching an empty area
- World clocks in widgets are left untouched
Change-Id: I10c6fa213c89ac2f6e342be13fdd6390f7f787b0
---
res/layout-land/main_clock_frame.xml | 19 ++---
res/layout/date_and_next_alarm_time.xml | 57 +++++++-------
res/layout/desk_clock_saver.xml | 12 +--
res/layout/digital_widget.xml | 71 ++++++++---------
res/layout/digital_widget_sizer.xml | 77 ++++++++-----------
res/layout/main_clock_frame.xml | 23 +++---
res/values/dimens.xml | 12 ++-
res/values/styles.xml | 19 +++++
.../alarmclock/DigitalAppWidgetProvider.java | 31 ++++----
src/com/android/deskclock/AlarmUtils.java | 2 +-
10 files changed, 167 insertions(+), 156 deletions(-)
diff --git a/res/layout-land/main_clock_frame.xml b/res/layout-land/main_clock_frame.xml
index 6abfdddd6..8ad98c0cf 100644
--- a/res/layout-land/main_clock_frame.xml
+++ b/res/layout-land/main_clock_frame.xml
@@ -21,10 +21,11 @@
android:gravity="center_horizontal"
android:orientation="vertical">
- <FrameLayout
+ <LinearLayout
android:layout_width="wrap_content"
- android:layout_height="0dp"
- android:layout_weight="1">
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical|start"
+ android:orientation="vertical">
<com.android.deskclock.AnalogClock
android:id="@+id/analog_clock"
@@ -38,19 +39,13 @@
<com.android.deskclock.widget.AutoSizingTextClock
android:id="@+id/digital_clock"
- style="@style/display_time"
+ style="@style/sc_keyguard_clock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:ellipsize="none"
- android:singleLine="true"
- android:textSize="@dimen/main_clock_digital_font_size"
tools:text="01:23" />
- </FrameLayout>
+ <include layout="@layout/date_and_next_alarm_time" />
- <include layout="@layout/date_and_next_alarm_time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"/>
+ </LinearLayout>
</LinearLayout>
diff --git a/res/layout/date_and_next_alarm_time.xml b/res/layout/date_and_next_alarm_time.xml
index 23df1cd3b..b29ffedcf 100644
--- a/res/layout/date_and_next_alarm_time.xml
+++ b/res/layout/date_and_next_alarm_time.xml
@@ -18,36 +18,41 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
- android:layout_gravity="center_vertical"
- android:gravity="center">
+ android:gravity="center_vertical|start"
+ android:orientation="vertical">
<TextView
android:id="@+id/date"
- style="@style/body"
+ style="@style/sc_keyguard_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAllCaps="true"
+ android:paddingTop="@dimen/sc_keyguard_status_area_top_padding"
+ android:paddingStart="@dimen/sc_keyguard_row_date_start_padding"
tools:text="Sa., 01.01."/>
- <TextView
- android:id="@+id/nextAlarmIcon"
- style="@style/body"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginEnd="@dimen/alarm_icon_padding"
- android:layout_marginStart="@dimen/alarm_icon_padding"
- android:ellipsize="none"
- android:includeFontPadding="false"
- android:maxLines="1"
- android:text="@string/clock_emoji" />
-
- <TextView
- android:id="@+id/nextAlarm"
- style="@style/body"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAllCaps="true"
- tools:text="Mo., 07:00"/>
-
-</LinearLayout>
\ No newline at end of file
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingTop="@dimen/sc_keyguard_row_top_padding"
+ android:paddingStart="@dimen/sc_keyguard_row_alarm_start_padding">
+
+ <TextView
+ android:id="@+id/nextAlarmIcon"
+ style="@style/sc_keyguard_row"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_marginEnd="@dimen/alarm_icon_padding"
+ android:text="@string/clock_emoji"
+ android:textSize="@dimen/sc_keyguard_alarm_icon_size" />
+
+ <TextView
+ android:id="@+id/nextAlarm"
+ style="@style/sc_keyguard_row"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ tools:text="Mo., 07:00"/>
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/desk_clock_saver.xml b/res/layout/desk_clock_saver.xml
index dafabfddf..d24219dbb 100644
--- a/res/layout/desk_clock_saver.xml
+++ b/res/layout/desk_clock_saver.xml
@@ -42,19 +42,13 @@
<TextClock
android:id="@+id/digital_clock"
- style="@style/big_thin"
+ style="@style/sc_keyguard_clock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginBottom="@dimen/bottom_text_spacing_digital"
- android:ellipsize="none"
- android:gravity="center"
- android:singleLine="true"
- android:textColor="@color/white"
- android:textSize="@dimen/main_clock_font_size" />
+ android:fontFamily="sans-serif-thin" />
<include layout="@layout/date_and_next_alarm_time" />
</LinearLayout>
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/res/layout/digital_widget.xml b/res/layout/digital_widget.xml
index c5b4837a6..e376a5a7a 100644
--- a/res/layout/digital_widget.xml
+++ b/res/layout/digital_widget.xml
@@ -19,58 +19,53 @@
android:id="@+id/digital_widget"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:gravity="top|center_horizontal"
+ android:gravity="center"
android:orientation="vertical">
- <TextClock
- android:id="@+id/clock"
- style="@style/widget_big_thin"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|top"
- android:ellipsize="none"
- android:format12Hour="@string/lock_screen_12_hour_format"
- android:format24Hour="@string/lock_screen_24_hour_format"
- android:includeFontPadding="false"
- android:singleLine="true"
- android:textColor="@color/white" />
-
<LinearLayout
+ android:id="@+id/digital_widget_actual"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|top">
+ android:gravity="center_vertical|start"
+ android:orientation="vertical">
<TextClock
- android:id="@+id/date"
- style="@style/widget_label"
+ android:id="@+id/clock"
+ style="@style/sc_keyguard_clock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:ellipsize="none"
- android:includeFontPadding="false"
- android:singleLine="true"
- android:textAllCaps="true"
- android:textColor="@color/white" />
+ android:format12Hour="@string/lock_screen_12_hour_format"
+ android:format24Hour="@string/lock_screen_24_hour_format" />
- <ImageView
- android:id="@+id/nextAlarmIcon"
+ <TextClock
+ android:id="@+id/date"
+ style="@style/sc_keyguard_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:contentDescription="@null"
- android:scaleType="center" />
+ android:paddingTop="@dimen/sc_keyguard_status_area_top_padding"
+ android:paddingStart="@dimen/sc_keyguard_row_date_start_padding" />
- <TextView
- android:id="@+id/nextAlarm"
- style="@style/widget_label"
+ <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:ellipsize="none"
- android:includeFontPadding="false"
- android:singleLine="true"
- android:textAllCaps="true"
- android:textColor="@color/white" />
+ android:paddingTop="@dimen/sc_keyguard_row_top_padding"
+ android:paddingStart="@dimen/sc_keyguard_row_alarm_start_padding">
+
+ <ImageView
+ android:id="@+id/nextAlarmIcon"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:contentDescription="@null"
+ android:scaleType="center" />
+
+ <TextView
+ android:id="@+id/nextAlarm"
+ style="@style/sc_keyguard_row"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ </LinearLayout>
</LinearLayout>
@@ -82,4 +77,4 @@
android:layout_marginTop="20dp"
android:divider="@null" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/layout/digital_widget_sizer.xml b/res/layout/digital_widget_sizer.xml
index f524cf536..b9a28c79f 100644
--- a/res/layout/digital_widget_sizer.xml
+++ b/res/layout/digital_widget_sizer.xml
@@ -15,64 +15,55 @@
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
android:orientation="vertical">
- <TextClock
- android:id="@+id/clock"
- style="@style/widget_big_thin"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|top"
- android:includeFontPadding="false"
- android:ellipsize="none"
- android:format12Hour="@string/lock_screen_12_hour_format"
- android:format24Hour="@string/lock_screen_24_hour_format"
- android:singleLine="true"
- android:textColor="@color/white" />
-
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|top">
+ android:gravity="center_vertical|start"
+ android:orientation="vertical">
<TextClock
- android:id="@+id/date"
- style="@style/widget_label"
+ android:id="@+id/clock"
+ style="@style/sc_keyguard_clock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:includeFontPadding="false"
- android:ellipsize="none"
- android:singleLine="true"
- android:textAllCaps="true"
- android:textColor="@color/white" />
+ android:format12Hour="@string/lock_screen_12_hour_format"
+ android:format24Hour="@string/lock_screen_24_hour_format" />
- <!-- This view is drawn to a Bitmap and sent to the widget as an icon. -->
- <TextView
- android:id="@+id/nextAlarmIcon"
- style="@style/widget_label"
+ <TextClock
+ android:id="@+id/date"
+ style="@style/sc_keyguard_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:includeFontPadding="false"
- android:ellipsize="none"
- android:singleLine="true"
- android:text="@string/clock_emoji"
- android:textColor="@color/white" />
+ android:paddingTop="@dimen/sc_keyguard_status_area_top_padding"
+ android:paddingStart="@dimen/sc_keyguard_row_date_start_padding" />
- <TextView
- android:id="@+id/nextAlarm"
- style="@style/widget_label"
+ <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:includeFontPadding="false"
- android:ellipsize="none"
- android:singleLine="true"
- android:textAllCaps="true"
- android:textColor="@color/white" />
+ android:paddingTop="@dimen/sc_keyguard_row_top_padding"
+ android:paddingStart="@dimen/sc_keyguard_row_alarm_start_padding">
+
+ <!-- This view is drawn to a Bitmap and sent to the widget as an icon. -->
+ <TextView
+ android:id="@+id/nextAlarmIcon"
+ style="@style/sc_keyguard_row"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:text="@string/clock_emoji" />
+
+ <TextView
+ android:id="@+id/nextAlarm"
+ style="@style/sc_keyguard_row"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
+ </LinearLayout>
</LinearLayout>
diff --git a/res/layout/main_clock_frame.xml b/res/layout/main_clock_frame.xml
index 159956f19..d0701eaf0 100644
--- a/res/layout/main_clock_frame.xml
+++ b/res/layout/main_clock_frame.xml
@@ -24,11 +24,11 @@
android:layout_marginEnd="24dp"
android:orientation="vertical">
- <FrameLayout
+ <LinearLayout
android:layout_width="wrap_content"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:layout_gravity="start">
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical|start"
+ android:orientation="vertical">
<com.android.deskclock.AnalogClock
android:id="@+id/analog_clock"
@@ -42,17 +42,14 @@
<com.android.deskclock.widget.AutoSizingTextClock
android:id="@+id/digital_clock"
- style="@style/display_time"
- android:layout_width="match_parent"
+ style="@style/sc_keyguard_clock"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:ellipsize="none"
- android:includeFontPadding="false"
android:paddingTop="@dimen/main_clock_digital_padding"
- android:singleLine="true"
- android:textSize="@dimen/main_clock_digital_font_size"
tools:text="01:23" />
- </FrameLayout>
+ <include layout="@layout/date_and_next_alarm_time" />
+
+ </LinearLayout>
- <include layout="@layout/date_and_next_alarm_time" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 856ef8241..3061e27f6 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -61,7 +61,7 @@
<dimen name="body_font_padding">4dp</dimen>
<dimen name="alarm_label_size">14sp</dimen>
- <dimen name="alarm_icon_padding">6dp</dimen>
+ <dimen name="alarm_icon_padding">7dp</dimen>
<dimen name="backspace_icon_size">24dp</dimen>
<dimen name="no_alarms_size">90dp</dimen>
@@ -140,4 +140,14 @@
<dimen name="alarm_clock_expanded_vertical_margin">8dp</dimen>
<dimen name="settings_padding">4dp</dimen>
+
+ <!-- Keyguard dimens, taken from S fwb -->
+ <dimen name="sc_keyguard_clock_text_size">86dp</dimen>
+ <dimen name="sc_keyguard_row_text_size">16dp</dimen>
+ <dimen name="sc_keyguard_alarm_icon_size">21dp</dimen>
+ <!-- Padding correction values, measured from S fwb -->
+ <dimen name="sc_keyguard_status_area_top_padding">9dp</dimen>
+ <dimen name="sc_keyguard_row_top_padding">11dp</dimen>
+ <dimen name="sc_keyguard_row_date_start_padding">6dp</dimen>
+ <dimen name="sc_keyguard_row_alarm_start_padding">5.5dp</dimen>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 7ae54c97c..73a800383 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -187,4 +187,23 @@
<style name="TextAppearance.Title" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textSize">22.0sp</item>
</style>
+
+ <style name="sc_keyguard_clock">
+ <item name="android:fontFamily">sans-serif-light</item>
+ <item name="android:fontFeatureSettings">tnum</item>
+ <item name="android:textSize">@dimen/sc_keyguard_clock_text_size</item>
+ <item name="android:textColor">@color/white</item>
+ <item name="android:ellipsize">none</item>
+ <item name="android:includeFontPadding">false</item>
+ <item name="android:maxLines">1</item>
+ </style>
+
+ <style name="sc_keyguard_row">
+ <item name="android:textSize">@dimen/sc_keyguard_row_text_size</item>
+ <item name="android:textColor">@color/white</item>
+ <item name="android:ellipsize">none</item>
+ <item name="android:includeFontPadding">false</item>
+ <item name="android:maxLines">1</item>
+ </style>
+
</resources>
diff --git a/src/com/android/alarmclock/DigitalAppWidgetProvider.java b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
index 1005f0ac0..e97bb474a 100644
--- a/src/com/android/alarmclock/DigitalAppWidgetProvider.java
+++ b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
@@ -224,7 +224,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
if (Utils.isWidgetClickable(wm, widgetId)) {
final Intent openApp = new Intent(context, DeskClock.class);
final PendingIntent pi = PendingIntent.getActivity(context, 0, openApp, FLAG_IMMUTABLE);
- rv.setOnClickPendingIntent(R.id.digital_widget, pi);
+ rv.setOnClickPendingIntent(R.id.digital_widget_actual, pi);
}
// Configure child views of the remote view.
@@ -256,7 +256,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
final int targetWidthPx = portrait ? minWidthPx : maxWidthPx;
final int targetHeightPx = portrait ? maxHeightPx : minHeightPx;
final int largestClockFontSizePx =
- resources.getDimensionPixelSize(R.dimen.widget_max_clock_font_size);
+ resources.getDimensionPixelSize(R.dimen.sc_keyguard_clock_text_size);
// Create a size template that describes the widget bounds.
final Sizes template = new Sizes(targetWidthPx, targetHeightPx, largestClockFontSizePx);
@@ -328,13 +328,13 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
}
// Measure the widget at the largest possible size.
- Sizes high = measure(template, template.getLargestClockFontSizePx(), sizer);
+ Sizes high = measure(context, template, template.getLargestClockFontSizePx(), sizer);
if (!high.hasViolations()) {
return high;
}
// Measure the widget at the smallest possible size.
- Sizes low = measure(template, template.getSmallestClockFontSizePx(), sizer);
+ Sizes low = measure(context, template, template.getSmallestClockFontSizePx(), sizer);
if (low.hasViolations()) {
return low;
}
@@ -346,7 +346,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
return low;
}
- final Sizes midSize = measure(template, midFontSize, sizer);
+ final Sizes midSize = measure(context, template, midFontSize, sizer);
if (midSize.hasViolations()) {
high = midSize;
} else {
@@ -409,7 +409,7 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
* the offscreen {@code sizer} view. Measure the {@code sizer} view and return the resulting
* size measurements.
*/
- private static Sizes measure(Sizes template, int clockFontSize, View sizer) {
+ private static Sizes measure(Context context, Sizes template, int clockFontSize, View sizer) {
// Create a copy of the given template sizes.
final Sizes measuredSizes = template.newSize();
@@ -420,13 +420,13 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
final TextView nextAlarmIcon = (TextView) sizer.findViewById(R.id.nextAlarmIcon);
// Adjust the font sizes.
- measuredSizes.setClockFontSizePx(clockFontSize);
+ measuredSizes.setClockFontSizePx(context, clockFontSize);
clock.setText(getLongestTimeString(clock));
clock.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mClockFontSizePx);
date.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mFontSizePx);
nextAlarm.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mFontSizePx);
nextAlarmIcon.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mIconFontSizePx);
- nextAlarmIcon.setPadding(measuredSizes.mIconPaddingPx, 0, measuredSizes.mIconPaddingPx, 0);
+ nextAlarmIcon.setPadding(0, 0, measuredSizes.mIconPaddingPx, 0);
// Measure and layout the sizer.
final int widthSize = View.MeasureSpec.getSize(measuredSizes.mTargetWidthPx);
@@ -507,12 +507,17 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
private int getLargestClockFontSizePx() { return mLargestClockFontSizePx; }
private int getSmallestClockFontSizePx() { return mSmallestClockFontSizePx; }
private int getClockFontSizePx() { return mClockFontSizePx; }
- private void setClockFontSizePx(int clockFontSizePx) {
+ private void setClockFontSizePx(Context context, int clockFontSizePx) {
+ final Resources resources = context.getResources();
+ int keyguardClockTextSizePx = resources.getDimensionPixelSize(R.dimen.sc_keyguard_clock_text_size);
+ int keyguardRowTextSizePx = resources.getDimensionPixelSize(R.dimen.sc_keyguard_row_text_size);
+ int keyguardAlarmIconSizePx = resources.getDimensionPixelSize(R.dimen.sc_keyguard_alarm_icon_size);
+ int alarmIconPaddingPx = resources.getDimensionPixelSize(R.dimen.alarm_icon_padding);
mClockFontSizePx = clockFontSizePx;
- mFontSizePx = max(1, round(clockFontSizePx / 7.5f));
- mIconFontSizePx = (int) (mFontSizePx * 1.4f);
- mIconPaddingPx = mFontSizePx / 3;
- }
+ mFontSizePx = max(1, round(clockFontSizePx / (float) keyguardClockTextSizePx * (float) keyguardRowTextSizePx));
+ mIconFontSizePx = max(1, round(clockFontSizePx / (float) keyguardClockTextSizePx * (float) keyguardAlarmIconSizePx));
+ mIconPaddingPx = max(1, round(clockFontSizePx / (float) keyguardClockTextSizePx * (float) alarmIconPaddingPx));
+ }
/**
* @return the amount of widget height available to the world cities list
diff --git a/src/com/android/deskclock/AlarmUtils.java b/src/com/android/deskclock/AlarmUtils.java
index db60ace95..43767d313 100644
--- a/src/com/android/deskclock/AlarmUtils.java
+++ b/src/com/android/deskclock/AlarmUtils.java
@@ -37,7 +37,7 @@ import java.util.Locale;
public class AlarmUtils {
public static String getFormattedTime(Context context, Calendar time) {
- final String skeleton = DateFormat.is24HourFormat(context) ? "EHm" : "Ehma";
+ final String skeleton = DateFormat.is24HourFormat(context) ? "Hm" : "hma";
final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton);
return (String) DateFormat.format(pattern, time);
}
--
2.25.1

View File

@@ -0,0 +1,118 @@
From 87509b89725d9b7439e4c14a19175a085e10b784 Mon Sep 17 00:00:00 2001
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
Date: Thu, 20 Jan 2022 04:42:03 +0000
Subject: [PATCH 3/3] DeskClock: Wallpaper-based text coloring for digital
clock widget
RemoteViews is such a restrictive PITA
Change-Id: Ie22c4980526575f73ebb4e56780d4c2193cc45d3
---
.../alarmclock/DigitalAppWidgetProvider.java | 57 +++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/src/com/android/alarmclock/DigitalAppWidgetProvider.java b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
index e97bb474a..d52693a1b 100644
--- a/src/com/android/alarmclock/DigitalAppWidgetProvider.java
+++ b/src/com/android/alarmclock/DigitalAppWidgetProvider.java
@@ -19,6 +19,8 @@ package com.android.alarmclock;
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.PendingIntent;
+import android.app.WallpaperColors;
+import android.app.WallpaperManager;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.BroadcastReceiver;
@@ -112,12 +114,40 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
/** Intent used to deliver the {@link #ACTION_ON_DAY_CHANGE} callback. */
private static final Intent DAY_CHANGE_INTENT = new Intent(ACTION_ON_DAY_CHANGE);
+ private static WallpaperManager mWallpaperManager;
+ private static boolean mDarkText;
+
+ private static void relayoutAllWidgets(Context context) {
+ final AppWidgetManager wm = AppWidgetManager.getInstance(context);
+ final ComponentName provider = new ComponentName(context, DigitalAppWidgetProvider.class);
+ final int[] widgetIds = wm.getAppWidgetIds(provider);
+ for (int widgetId : widgetIds) {
+ relayoutWidget(context, wm, widgetId, wm.getAppWidgetOptions(widgetId));
+ }
+ }
+
+ private static void addOnColorsChangedListener(Context context) {
+ mWallpaperManager.addOnColorsChangedListener(new WallpaperManager.OnColorsChangedListener() {
+ @Override
+ public void onColorsChanged(WallpaperColors colors, int which) {
+ relayoutAllWidgets(context);
+ }
+ }, null);
+ }
+
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
// Schedule the day-change callback if necessary.
updateDayChangeCallback(context);
+
+ // Listen for wallpaper color changes
+ mWallpaperManager = WallpaperManager.getInstance(context);
+ addOnColorsChangedListener(context);
+
+ // Force a relayout to pick up initial colors
+ relayoutAllWidgets(context);
}
@Override
@@ -216,6 +246,19 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
*/
private static RemoteViews relayoutWidget(Context context, AppWidgetManager wm, int widgetId,
Bundle options, boolean portrait) {
+ // Determine text colors.
+ if (mWallpaperManager == null) {
+ mWallpaperManager = WallpaperManager.getInstance(context);
+ addOnColorsChangedListener(context);
+ }
+ WallpaperColors wallpaperColors = mWallpaperManager.getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
+ // Live wallpapers might not implement the WallpaperColors API.
+ if (wallpaperColors == null) {
+ mDarkText = false;
+ } else {
+ mDarkText = (wallpaperColors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0;
+ }
+
// Create a remote view for the digital clock.
final String packageName = context.getPackageName();
final RemoteViews rv = new RemoteViews(packageName, R.layout.digital_widget);
@@ -273,6 +316,17 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
rv.setTextViewTextSize(R.id.nextAlarm, COMPLEX_UNIT_PX, sizes.mFontSizePx);
rv.setTextViewTextSize(R.id.clock, COMPLEX_UNIT_PX, sizes.mClockFontSizePx);
+ // Apply the text color to the remote views.
+ if (mDarkText) {
+ rv.setTextColor(R.id.clock, resources.getColor(R.color.black));
+ rv.setTextColor(R.id.date, resources.getColor(R.color.black));
+ rv.setTextColor(R.id.nextAlarm, resources.getColor(R.color.black));
+ } else {
+ rv.setTextColor(R.id.clock, resources.getColor(R.color.white));
+ rv.setTextColor(R.id.date, resources.getColor(R.color.white));
+ rv.setTextColor(R.id.nextAlarm, resources.getColor(R.color.white));
+ }
+
final int smallestWorldCityListSizePx =
resources.getDimensionPixelSize(R.dimen.widget_min_world_city_list_size);
if (sizes.getListHeight() <= smallestWorldCityListSizePx) {
@@ -428,6 +482,9 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
nextAlarmIcon.setTextSize(COMPLEX_UNIT_PX, measuredSizes.mIconFontSizePx);
nextAlarmIcon.setPadding(0, 0, measuredSizes.mIconPaddingPx, 0);
+ // Adjust the alarm icon text color before generating its bitmap.
+ nextAlarmIcon.setTextColor(context.getResources().getColor(mDarkText ? R.color.black : R.color.white));
+
// Measure and layout the sizer.
final int widthSize = View.MeasureSpec.getSize(measuredSizes.mTargetWidthPx);
final int heightSize = View.MeasureSpec.getSize(measuredSizes.mTargetHeightPx);
--
2.25.1