diff --git a/IconLoader b/IconLoader
index 0c8c408bc2..16c9980433 160000
--- a/IconLoader
+++ b/IconLoader
@@ -1 +1 @@
-Subproject commit 0c8c408bc2fdb4a2fad257e0dfa895996d76c33f
+Subproject commit 16c9980433771560c2eff73913fe8fbc7982e2bf
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index b9329ab171..eda6eaa4b4 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -54,4 +54,7 @@
Item removed.
No apps found matching “%1$s”.
Background Opacity
+ Background Lightness
+ Adaptive Icons
+ Background Lightness only affects generated Adaptive Icons. Use 100% for white.
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/About.kt b/lawnchair/src/app/lawnchair/ui/preferences/About.kt
index bd7fb9b487..2371d14525 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/About.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/About.kt
@@ -2,6 +2,7 @@ package app.lawnchair.ui.preferences
import android.content.Intent
import androidx.annotation.StringRes
+import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
@@ -92,6 +93,7 @@ val teamMembers = listOf(
),
)
+@ExperimentalAnimationApi
@Composable
fun About() {
val context = LocalContext.current
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/AppDrawerPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/AppDrawerPreferences.kt
index ab794d8529..77ce9dcf39 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/AppDrawerPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/AppDrawerPreferences.kt
@@ -1,5 +1,6 @@
package app.lawnchair.ui.preferences
+import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.rememberScrollState
@@ -9,6 +10,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.android.launcher3.R
+@ExperimentalAnimationApi
@Composable
fun AppDrawerPreferences(interactor: PreferenceInteractor) {
Column(
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt
index c5bb050abb..350d3e487a 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/DockPreferences.kt
@@ -1,5 +1,6 @@
package app.lawnchair.ui.preferences
+import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.rememberScrollState
@@ -9,6 +10,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.android.launcher3.R
+@ExperimentalAnimationApi
@Composable
fun DockPreferences(interactor: PreferenceInteractor) {
Column(
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/FolderPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/FolderPreferences.kt
index 5c7b55e814..85dfa57145 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/FolderPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/FolderPreferences.kt
@@ -1,5 +1,6 @@
package app.lawnchair.ui.preferences
+import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.rememberScrollState
@@ -9,6 +10,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.android.launcher3.R
+@ExperimentalAnimationApi
@Composable
fun FolderPreferences(interactor: PreferenceInteractor) {
Column(
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/GeneralPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/GeneralPreferences.kt
index e28b0d4b68..e7eb476f17 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/GeneralPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/GeneralPreferences.kt
@@ -25,32 +25,9 @@ fun GeneralPreferences(navController: NavController, interactor: PreferenceInter
checked = interactor.allowRotation.value,
onCheckedChange = { interactor.setAllowRotation(it) },
label = stringResource(id = R.string.home_screen_rotation_label),
- description = stringResource(id = R.string.home_screen_rotaton_description),
- showDivider = false
+ description = stringResource(id = R.string.home_screen_rotaton_description)
)
- }
- PreferenceGroup(heading = stringResource(id = R.string.icons)) {
NotificationDotsPreference(interactor)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- SwitchPreference(
- checked = interactor.wrapAdaptiveIcons.value,
- onCheckedChange = { interactor.setWrapAdaptiveIcons(it) },
- label = stringResource(id = R.string.make_icon_packs_adaptive_label),
- description = stringResource(id = R.string.make_icon_packs_adaptive_description)
- )
- AnimatedVisibility(
- visible = interactor.wrapAdaptiveIcons.value,
- enter = expandVertically() + fadeIn(),
- exit = shrinkVertically() + fadeOut()
- ) {
- SwitchPreference(
- checked = interactor.makeColoredBackgrounds.value,
- onCheckedChange = { interactor.setMakeColoredBackgrounds(it) },
- label = stringResource(id = R.string.colored_generated_icon_backgrounds_label),
- description = stringResource(id = R.string.colored_generated_icon_backgrounds_description)
- )
- }
- }
NavigationActionPreference(
label = stringResource(id = R.string.icon_pack),
navController = navController,
@@ -58,5 +35,35 @@ fun GeneralPreferences(navController: NavController, interactor: PreferenceInter
showDivider = false
)
}
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ PreferenceGroup(
+ heading = stringResource(id = R.string.adaptive_icons),
+ description = stringResource(id = (R.string.adaptive_icon_background_description)),
+ showDescription = interactor.wrapAdaptiveIcons.value
+ ) {
+ SwitchPreference(
+ checked = interactor.wrapAdaptiveIcons.value,
+ onCheckedChange = { interactor.setWrapAdaptiveIcons(it) },
+ label = stringResource(id = R.string.make_icon_packs_adaptive_label),
+ description = stringResource(id = R.string.make_icon_packs_adaptive_description),
+ showDivider = interactor.wrapAdaptiveIcons.value
+ )
+ AnimatedVisibility(
+ visible = interactor.wrapAdaptiveIcons.value,
+ enter = expandVertically() + fadeIn(),
+ exit = shrinkVertically() + fadeOut()
+ ) {
+ SliderPreference(
+ label = stringResource(id = R.string.background_lightness_label),
+ value = interactor.coloredBackgroundLightness.value,
+ onValueChange = { interactor.setColoredBackgroundLightness(it) },
+ valueRange = 0F..1F,
+ steps = 9,
+ showAsPercentage = true,
+ showDivider = false
+ )
+ }
+ }
+ }
}
}
\ No newline at end of file
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt b/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt
index 4ed26c13aa..9d3aeca0bc 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/HomeScreenPreferences.kt
@@ -1,5 +1,6 @@
package app.lawnchair.ui.preferences
+import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.rememberScrollState
@@ -9,6 +10,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.android.launcher3.R
+@ExperimentalAnimationApi
@Composable
fun HomeScreenPreferences(interactor: PreferenceInteractor) {
Column(
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceGroup.kt b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceGroup.kt
index 6ae608e63b..49e8804696 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceGroup.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceGroup.kt
@@ -1,5 +1,6 @@
package app.lawnchair.ui.preferences
+import androidx.compose.animation.*
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.Composable
@@ -9,8 +10,15 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp
import app.lawnchair.util.smartBorder
+@ExperimentalAnimationApi
@Composable
-fun PreferenceGroup(heading: String? = null, isFirstChild: Boolean = false, content: @Composable () -> Unit) {
+fun PreferenceGroup(
+ heading: String? = null,
+ isFirstChild: Boolean = false,
+ description: String? = null,
+ showDescription: Boolean = true,
+ content: @Composable () -> Unit
+) {
Spacer(
modifier = Modifier.requiredHeight(
if (isFirstChild) {
@@ -54,4 +62,23 @@ fun PreferenceGroup(heading: String? = null, isFirstChild: Boolean = false, cont
content()
}
}
+ description?.let {
+ AnimatedVisibility(
+ visible = showDescription,
+ enter = expandVertically() + fadeIn(),
+ exit = shrinkVertically() + fadeOut()
+ ) {
+ Row(modifier = Modifier.padding(start = 32.dp, end = 32.dp, top = 16.dp)) {
+ CompositionLocalProvider(
+ LocalContentAlpha provides ContentAlpha.medium,
+ LocalContentColor provides MaterialTheme.colors.onBackground
+ ) {
+ Text(
+ text = it,
+ style = MaterialTheme.typography.body2
+ )
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt
index 60e36d51bd..21e2a9cfd9 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceInteractor.kt
@@ -18,9 +18,9 @@ interface PreferenceInteractor {
val allAppsTextSizeFactor: State
val allAppsColumns: State
val allowEmptyPages: State
- val makeColoredBackgrounds: State
val notificationDotsEnabled: State
val drawerOpacity: State
+ val coloredBackgroundLightness: State
fun setIconPackPackage(iconPackPackage: String)
fun setAllowRotation(allowRotation: Boolean)
@@ -37,9 +37,8 @@ interface PreferenceInteractor {
fun setAllAppsTextSizeFactor(allAppsTextSizeFactor: Float)
fun setAllAppsColumns(allAppsColumns: Float)
fun setAllowEmptyPages(allowEmptyPages: Boolean)
- fun setMakeColoredBackgrounds(makeColoredBackgrounds: Boolean)
fun setDrawerOpacity(drawerOpacity: Float)
-
+ fun setColoredBackgroundLightness(coloredBackgroundLightness: Float)
fun getIconPacks(): MutableMap
}
\ No newline at end of file
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt
index b5c728657e..2c0c9a91dc 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/PreferenceViewModel.kt
@@ -7,6 +7,7 @@ import android.content.pm.ResolveInfo
import android.provider.Settings
import androidx.appcompat.content.res.AppCompatResources
import androidx.compose.runtime.MutableState
+import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.AndroidViewModel
import app.lawnchair.util.preferences.PreferenceManager
@@ -38,10 +39,10 @@ class PreferenceViewModel(application: Application) : AndroidViewModel(applicati
override val allAppsTextSizeFactor: MutableState = mutableStateOf(pm.allAppsTextSizeFactor)
override val allAppsColumns: MutableState = mutableStateOf(pm.allAppsColumns)
override val allowEmptyPages: MutableState = mutableStateOf(pm.allowEmptyPages)
- override val makeColoredBackgrounds: MutableState = mutableStateOf(pm.makeColoredBackgrounds)
override val notificationDotsEnabled: MutableState =
mutableStateOf(enabledNotificationListeners?.contains(lawnchairNotificationListener.flattenToString()) == true)
override val drawerOpacity: MutableState = mutableStateOf(pm.drawerOpacity)
+ override val coloredBackgroundLightness: MutableState = mutableStateOf(pm.coloredBackgroundLightness)
override fun setIconPackPackage(iconPackPackage: String) {
pm.iconPackPackage = iconPackPackage
@@ -118,16 +119,16 @@ class PreferenceViewModel(application: Application) : AndroidViewModel(applicati
this.allowEmptyPages.value = allowEmptyPages
}
- override fun setMakeColoredBackgrounds(makeColoredBackgrounds: Boolean) {
- pm.makeColoredBackgrounds = makeColoredBackgrounds
- this.makeColoredBackgrounds.value = makeColoredBackgrounds
- }
-
override fun setDrawerOpacity(drawerOpacity: Float) {
pm.drawerOpacity = drawerOpacity
this.drawerOpacity.value = drawerOpacity
}
+ override fun setColoredBackgroundLightness(coloredBackgroundLightness: Float) {
+ pm.coloredBackgroundLightness = coloredBackgroundLightness
+ this.coloredBackgroundLightness.value = coloredBackgroundLightness
+ }
+
override fun getIconPacks(): MutableMap {
val pm = getApplication().packageManager
val iconPacks: MutableMap = HashMap()
diff --git a/lawnchair/src/app/lawnchair/util/preferences/LawnchairPreferences.kt b/lawnchair/src/app/lawnchair/util/preferences/LawnchairPreferences.kt
index c42d7645e8..a0c70da9f2 100644
--- a/lawnchair/src/app/lawnchair/util/preferences/LawnchairPreferences.kt
+++ b/lawnchair/src/app/lawnchair/util/preferences/LawnchairPreferences.kt
@@ -13,7 +13,7 @@ class LawnchairPreferences(val context: Context) {
SharedPreferences.OnSharedPreferenceChangeListener { prefs: SharedPreferences?, key: String? ->
val las = LauncherAppState.getInstance(context)
when (key) {
- ICON_PACK_PACKAGE, WRAP_ADAPTIVE_ICONS, MAKE_COLORED_BACKGROUNDS -> {
+ ICON_PACK_PACKAGE, WRAP_ADAPTIVE_ICONS, COLORED_BACKGROUND_LIGHTNESS -> {
las.model.clearIconCache()
las.model.forceReload()
}
@@ -83,9 +83,6 @@ class LawnchairPreferences(val context: Context) {
@kotlin.jvm.JvmField
var ALLOW_EMPTY_PAGES: String = "pref_allowEmptyPages"
- @kotlin.jvm.JvmField
- var MAKE_COLORED_BACKGROUNDS: String = "pref_makeColoredBackgrounds"
-
@kotlin.jvm.JvmField
var IGNORE_FEED_WHITELIST: String = "pref_ignoreFeedWhitelist"
@@ -98,6 +95,9 @@ class LawnchairPreferences(val context: Context) {
@kotlin.jvm.JvmField
var DRAWER_OPACITY: String = "pref_drawerOpacity"
+ @kotlin.jvm.JvmField
+ var COLORED_BACKGROUND_LIGHTNESS: String = "pref_coloredBackgroundLightness"
+
fun getInstance(context: Context?): SharedPreferences? = when {
context == null -> null
INSTANCE == null -> Utilities.getPrefs(context)
diff --git a/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt b/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt
index c59783ab17..b82384d1bf 100644
--- a/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt
+++ b/lawnchair/src/app/lawnchair/util/preferences/PreferenceManager.kt
@@ -24,6 +24,6 @@ class PreferenceManager(context: Context) {
var allAppsTextSizeFactor by FloatPreferenceDelegate(lp.ALL_APPS_TEXT_SIZE_FACTOR, 1F)
var allAppsColumns by FloatPreferenceDelegate(lp.ALL_APPS_COLUMNS, idp.numAllAppsColumns.toFloat())
var allowEmptyPages by BooleanPreferenceDelegate(lp.ALLOW_EMPTY_PAGES, false)
- var makeColoredBackgrounds by BooleanPreferenceDelegate(lp.MAKE_COLORED_BACKGROUNDS, false)
var drawerOpacity by FloatPreferenceDelegate(lp.DRAWER_OPACITY, 1F)
+ var coloredBackgroundLightness by FloatPreferenceDelegate(lp.COLORED_BACKGROUND_LIGHTNESS, 0.9F)
}
\ No newline at end of file