diff options
author | 2023-02-13 03:27:38 +0000 | |
---|---|---|
committer | 2023-02-13 03:27:38 +0000 | |
commit | 011451e5fb6a4ea0aab8ab2ad86fa0af6f96d79d (patch) | |
tree | 4d680ce7654980af53975686cf0bd1828e8aebc3 | |
parent | a087b29ea586af9a8e25918ca365a5bf8c52ecdf (diff) | |
parent | 4b877c9591190a087bf78c4385aa36de0218ee9d (diff) |
Merge "Implement Font Scaling Quick Settings Tile (2/n)" into tm-qpr-dev am: 1d10fd5a0b am: 4b877c9591
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21298539
Change-Id: If7eea07902947ca6f49427544d3c206c5a77ca8e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
8 files changed, 136 insertions, 5 deletions
diff --git a/packages/SystemUI/res/drawable/ic_qs_font_scaling.xml b/packages/SystemUI/res/drawable/ic_qs_font_scaling.xml new file mode 100644 index 000000000000..d5b4c9ed5a87 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_qs_font_scaling.xml @@ -0,0 +1,25 @@ +<!-- + Copyright (C) 2023 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> +<path + android:pathData="M7,20L7,7L2,7L2,4h13v3h-5v13ZM16,20v-8h-3L13,9h9v3h-3v8Z" + android:fillColor="#041E49"/> +</vector>
\ No newline at end of file diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index d9e9c5dbbb8b..7716fa9a9cdb 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -81,7 +81,7 @@ <!-- Tiles native to System UI. Order should match "quick_settings_tiles_default" --> <string name="quick_settings_tiles_stock" translatable="false"> - internet,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,cast,screenrecord,mictoggle,cameratoggle,location,hotspot,inversion,saver,dark,work,night,reverse,reduce_brightness,qr_code_scanner,onehanded,color_correction,dream + internet,bt,flashlight,dnd,alarm,airplane,controls,wallet,rotation,battery,cast,screenrecord,mictoggle,cameratoggle,location,hotspot,inversion,saver,dark,work,night,reverse,reduce_brightness,qr_code_scanner,onehanded,color_correction,dream,font_scaling </string> <!-- The tiles to display in QuickSettings --> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index bf894d7d9820..85edbec37285 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -662,6 +662,8 @@ <string name="quick_settings_inversion_label">Color inversion</string> <!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] --> <string name="quick_settings_color_correction_label">Color correction</string> + <!-- QuickSettings: Label for font size scaling. [CHAR LIMIT=NONE] --> + <string name="quick_settings_font_scaling_label">Font size</string> <!-- QuickSettings: Control panel: Label for button that navigates to user settings. [CHAR LIMIT=NONE] --> <string name="quick_settings_more_user_settings">Manage users</string> <!-- QuickSettings: Control panel: Label for button that dismisses control panel. [CHAR LIMIT=NONE] --> diff --git a/packages/SystemUI/res/values/tiles_states_strings.xml b/packages/SystemUI/res/values/tiles_states_strings.xml index c8095510e2c2..7020d548f6b0 100644 --- a/packages/SystemUI/res/values/tiles_states_strings.xml +++ b/packages/SystemUI/res/values/tiles_states_strings.xml @@ -318,4 +318,14 @@ <item>Off</item> <item>On</item> </string-array> + + <!-- State names for font scaling tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_font_scaling"> + <item>Unavailable</item> + <item>Off</item> + <item>On</item> + </string-array> </resources>
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java index 24a4f60b7c00..dec6e7d93fa2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java @@ -40,6 +40,7 @@ import com.android.systemui.qs.tiles.DeviceControlsTile; import com.android.systemui.qs.tiles.DndTile; import com.android.systemui.qs.tiles.DreamTile; import com.android.systemui.qs.tiles.FlashlightTile; +import com.android.systemui.qs.tiles.FontScalingTile; import com.android.systemui.qs.tiles.HotspotTile; import com.android.systemui.qs.tiles.InternetTile; import com.android.systemui.qs.tiles.LocationTile; @@ -94,6 +95,7 @@ public class QSFactoryImpl implements QSFactory { private final Provider<QRCodeScannerTile> mQRCodeScannerTileProvider; private final Provider<OneHandedModeTile> mOneHandedModeTileProvider; private final Provider<DreamTile> mDreamTileProvider; + private final Provider<FontScalingTile> mFontScalingTileProvider; private final Lazy<QSHost> mQsHostLazy; private final Provider<CustomTile.Builder> mCustomTileBuilderProvider; @@ -129,7 +131,8 @@ public class QSFactoryImpl implements QSFactory { Provider<QRCodeScannerTile> qrCodeScannerTileProvider, Provider<OneHandedModeTile> oneHandedModeTileProvider, Provider<ColorCorrectionTile> colorCorrectionTileProvider, - Provider<DreamTile> dreamTileProvider) { + Provider<DreamTile> dreamTileProvider, + Provider<FontScalingTile> fontScalingTileProvider) { mQsHostLazy = qsHostLazy; mCustomTileBuilderProvider = customTileBuilderProvider; @@ -161,6 +164,7 @@ public class QSFactoryImpl implements QSFactory { mOneHandedModeTileProvider = oneHandedModeTileProvider; mColorCorrectionTileProvider = colorCorrectionTileProvider; mDreamTileProvider = dreamTileProvider; + mFontScalingTileProvider = fontScalingTileProvider; } /** Creates a tile with a type based on {@code tileSpec} */ @@ -232,6 +236,8 @@ public class QSFactoryImpl implements QSFactory { return mColorCorrectionTileProvider.get(); case "dream": return mDreamTileProvider.get(); + case "font_scaling": + return mFontScalingTileProvider.get(); } // Custom tiles diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt index 29d7fb02e613..d0b04c93bba0 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt @@ -694,7 +694,8 @@ internal object SubtitleArrayMapping { "alarm" to R.array.tile_states_alarm, "onehanded" to R.array.tile_states_onehanded, "color_correction" to R.array.tile_states_color_correction, - "dream" to R.array.tile_states_dream + "dream" to R.array.tile_states_dream, + "font_scaling" to R.array.tile_states_font_scaling ) fun getSubtitleId(spec: String?): Int { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt new file mode 100644 index 000000000000..4d8f89edd969 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.qs.tiles + +import android.content.Intent +import android.os.Handler +import android.os.Looper +import android.view.View +import com.android.internal.logging.MetricsLogger +import com.android.systemui.R +import com.android.systemui.dagger.qualifiers.Background +import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.plugins.ActivityStarter +import com.android.systemui.plugins.FalsingManager +import com.android.systemui.plugins.qs.QSTile +import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.qs.QSHost +import com.android.systemui.qs.logging.QSLogger +import com.android.systemui.qs.tileimpl.QSTileImpl +import javax.inject.Inject + +class FontScalingTile +@Inject +constructor( + host: QSHost, + @Background backgroundLooper: Looper, + @Main mainHandler: Handler, + falsingManager: FalsingManager, + metricsLogger: MetricsLogger, + statusBarStateController: StatusBarStateController, + activityStarter: ActivityStarter, + qsLogger: QSLogger +) : + QSTileImpl<QSTile.State?>( + host, + backgroundLooper, + mainHandler, + falsingManager, + metricsLogger, + statusBarStateController, + activityStarter, + qsLogger + ) { + private val mIcon = ResourceIcon.get(R.drawable.ic_qs_font_scaling) + + override fun isAvailable(): Boolean { + return false + } + + override fun newTileState(): QSTile.State { + val state = QSTile.State() + state.handlesLongClick = false + return state + } + + override fun handleClick(view: View?) {} + + override fun handleUpdateState(state: QSTile.State?, arg: Any?) { + state?.label = mContext.getString(R.string.quick_settings_font_scaling_label) + state?.icon = mIcon + } + + override fun getLongClickIntent(): Intent? { + return null + } + + override fun getTileLabel(): CharSequence { + return mContext.getString(R.string.quick_settings_font_scaling_label) + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt index 3281fa9bd8a4..4635b4843a91 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSFactoryImplTest.kt @@ -35,6 +35,7 @@ import com.android.systemui.qs.tiles.DeviceControlsTile import com.android.systemui.qs.tiles.DndTile import com.android.systemui.qs.tiles.DreamTile import com.android.systemui.qs.tiles.FlashlightTile +import com.android.systemui.qs.tiles.FontScalingTile import com.android.systemui.qs.tiles.HotspotTile import com.android.systemui.qs.tiles.InternetTile import com.android.systemui.qs.tiles.LocationTile @@ -87,7 +88,8 @@ private val specMap = mapOf( "qr_code_scanner" to QRCodeScannerTile::class.java, "onehanded" to OneHandedModeTile::class.java, "color_correction" to ColorCorrectionTile::class.java, - "dream" to DreamTile::class.java + "dream" to DreamTile::class.java, + "font_scaling" to FontScalingTile::class.java ) @RunWith(AndroidTestingRunner::class) @@ -126,6 +128,7 @@ class QSFactoryImplTest : SysuiTestCase() { @Mock private lateinit var oneHandedModeTile: OneHandedModeTile @Mock private lateinit var colorCorrectionTile: ColorCorrectionTile @Mock private lateinit var dreamTile: DreamTile + @Mock private lateinit var fontScalingTile: FontScalingTile private lateinit var factory: QSFactoryImpl @@ -167,7 +170,8 @@ class QSFactoryImplTest : SysuiTestCase() { { qrCodeScannerTile }, { oneHandedModeTile }, { colorCorrectionTile }, - { dreamTile } + { dreamTile }, + { fontScalingTile } ) // When adding/removing tiles, fix also [specMap] } |