summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chaohui Wang <chaohuiw@google.com> 2022-11-23 02:58:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-11-23 02:58:04 +0000
commit88068450164377695e2e196244c5c1980b6bab68 (patch)
treec9b4424801f50f2e708427d25c6c453019ea16a5
parentb79806ed99b9e0c0e5ad4678b13e73d27e02bb8c (diff)
parentfd05e123318bcab362a9682c9ef570fbecad895e (diff)
Merge "Fine tune App Info and App Buttons"
-rw-r--r--packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsDimension.kt3
-rw-r--r--packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTypography.kt4
-rw-r--r--packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/button/ActionButtons.kt8
-rw-r--r--packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Text.kt14
-rw-r--r--packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppInfo.kt2
-rw-r--r--packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppInfoTest.kt115
6 files changed, 136 insertions, 10 deletions
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsDimension.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsDimension.kt
index c2223e684f29..7962e601999a 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsDimension.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsDimension.kt
@@ -40,6 +40,9 @@ object SettingsDimension {
/** The size when app icon is displayed in App info page. */
val appIconInfoSize = 48.dp
+ /** The [PaddingValues] for buttons. */
+ val buttonPadding = PaddingValues(horizontal = itemPaddingEnd, vertical = 12.dp)
+
/** The sizes info of illustration widget. */
val illustrationMaxWidth = 412.dp
val illustrationMaxHeight = 300.dp
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTypography.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTypography.kt
index 03699bf4d4c0..5eaa4956b2e8 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTypography.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsTypography.kt
@@ -142,3 +142,7 @@ internal fun rememberSettingsTypography(): Typography {
val settingsFontFamily = rememberSettingsFontFamily()
return remember { SettingsTypography(settingsFontFamily).typography }
}
+
+/** Creates a new [TextStyle] which font weight set to medium. */
+internal fun TextStyle.toMediumWeight() =
+ copy(fontWeight = FontWeight.Medium, letterSpacing = 0.01.em)
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/button/ActionButtons.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/button/ActionButtons.kt
index a9d1c3735ab7..5e6c61423c24 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/button/ActionButtons.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/button/ActionButtons.kt
@@ -64,7 +64,7 @@ data class ActionButton(
fun ActionButtons(actionButtons: List<ActionButton>) {
Row(
Modifier
- .padding(SettingsDimension.itemPaddingVertical)
+ .padding(SettingsDimension.buttonPadding)
.clip(SettingsShape.CornerLarge)
.height(IntrinsicSize.Min)
) {
@@ -94,9 +94,7 @@ private fun RowScope.ActionButton(actionButton: ActionButton) {
),
contentPadding = PaddingValues(horizontal = 4.dp, vertical = 20.dp),
) {
- Column(
- horizontalAlignment = Alignment.CenterHorizontally,
- ) {
+ Column(horizontalAlignment = Alignment.CenterHorizontally) {
Icon(
imageVector = actionButton.imageVector,
contentDescription = null,
@@ -105,7 +103,7 @@ private fun RowScope.ActionButton(actionButton: ActionButton) {
Spacer(Modifier.height(4.dp))
Text(
text = actionButton.text,
- style = MaterialTheme.typography.labelLarge,
+ style = MaterialTheme.typography.labelMedium,
)
}
}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Text.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Text.kt
index 123354f371f3..5f2344ed97c0 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Text.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Text.kt
@@ -30,18 +30,24 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.android.settingslib.spa.framework.theme.SettingsTheme
+import com.android.settingslib.spa.framework.theme.toMediumWeight
@Composable
-fun SettingsTitle(title: State<String>) {
- SettingsTitle(title.value)
+fun SettingsTitle(title: State<String>, useMediumWeight: Boolean = false) {
+ SettingsTitle(title.value, useMediumWeight)
}
@Composable
-fun SettingsTitle(title: String) {
+fun SettingsTitle(title: String, useMediumWeight: Boolean = false) {
Text(
text = title,
color = MaterialTheme.colorScheme.onSurface,
- style = MaterialTheme.typography.titleMedium,
+ style = MaterialTheme.typography.titleMedium.let {
+ when (useMediumWeight) {
+ true -> it.toMediumWeight()
+ else -> it
+ }
+ },
)
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppInfo.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppInfo.kt
index 9611b136d881..16ca70fe90b9 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppInfo.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppInfo.kt
@@ -101,5 +101,5 @@ internal fun AppIcon(app: ApplicationInfo, size: Dp) {
@Composable
internal fun AppLabel(app: ApplicationInfo) {
val appRepository = rememberAppRepository()
- SettingsTitle(appRepository.produceLabel(app))
+ SettingsTitle(title = appRepository.produceLabel(app), useMediumWeight = true)
}
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppInfoTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppInfoTest.kt
new file mode 100644
index 000000000000..8ca7950905af
--- /dev/null
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppInfoTest.kt
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2022 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.settingslib.spaprivileged.template.app
+
+import android.content.Context
+import android.content.pm.ApplicationInfo
+import android.content.pm.PackageInfo
+import android.content.pm.PackageManager
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.test.assertIsDisplayed
+import androidx.compose.ui.test.junit4.createComposeRule
+import androidx.compose.ui.test.onNodeWithText
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class AppInfoTest {
+ @get:Rule
+ val composeTestRule = createComposeRule()
+
+ private var context: Context = ApplicationProvider.getApplicationContext()
+
+ @Test
+ fun appInfoLabel_isDisplayed() {
+ val packageInfo = PackageInfo().apply {
+ applicationInfo = APP
+ }
+ val appInfoProvider = AppInfoProvider(packageInfo)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) {
+ appInfoProvider.AppInfo()
+ }
+ }
+
+ composeTestRule.onNodeWithText(LABEL).assertIsDisplayed()
+ }
+
+ @Test
+ fun appInfoVersion_whenDisplayVersionIsFalse() {
+ val packageInfo = PackageInfo().apply {
+ applicationInfo = APP
+ versionName = VERSION_NAME
+ }
+ val appInfoProvider = AppInfoProvider(packageInfo)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) {
+ appInfoProvider.AppInfo(displayVersion = false)
+ }
+ }
+
+ composeTestRule.onNodeWithText(VERSION_NAME).assertDoesNotExist()
+ }
+
+ @Test
+ fun appInfoVersion_whenDisplayVersionIsTrue() {
+ val packageInfo = PackageInfo().apply {
+ applicationInfo = APP
+ versionName = VERSION_NAME
+ }
+ val appInfoProvider = AppInfoProvider(packageInfo)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) {
+ appInfoProvider.AppInfo(displayVersion = true)
+ }
+ }
+
+ composeTestRule.onNodeWithText(VERSION_NAME).assertIsDisplayed()
+ }
+
+ @Test
+ fun footerAppVersion_versionIsDisplayed() {
+ val packageInfo = PackageInfo().apply {
+ applicationInfo = APP
+ versionName = VERSION_NAME
+ }
+ val appInfoProvider = AppInfoProvider(packageInfo)
+
+ composeTestRule.setContent {
+ CompositionLocalProvider(LocalContext provides context) {
+ appInfoProvider.FooterAppVersion()
+ }
+ }
+
+ composeTestRule.onNodeWithText("version $VERSION_NAME").assertIsDisplayed()
+ }
+
+ private companion object {
+ const val LABEL = "Label"
+ const val VERSION_NAME = "VersionName"
+ val APP = object : ApplicationInfo() {
+ override fun loadLabel(pm: PackageManager) = LABEL
+ }
+ }
+}