From ede1ffe2cd144685d16e3ac051d6833cecdacb0a Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Sat, 8 Apr 2023 20:40:06 +0300 Subject: [PATCH 1/3] Bump --- .../unitto/core/ui/common/UnittoListItem.kt | 20 +++++----- .../unitto/feature/settings/AboutScreen.kt | 18 ++++----- .../unitto/feature/settings/SettingsScreen.kt | 38 +++++++++---------- .../unitto/feature/settings/ThemesScreen.kt | 4 +- .../feature/settings/UnitGroupsScreen.kt | 4 +- gradle/libs.versions.toml | 26 ++++++------- 6 files changed, 55 insertions(+), 55 deletions(-) diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoListItem.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoListItem.kt index 08514aa3..6dcf5ae6 100644 --- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoListItem.kt +++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/UnittoListItem.kt @@ -33,9 +33,9 @@ import androidx.compose.material3.Icon import androidx.compose.material3.ListItem import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.OutlinedTextFieldDefaults import androidx.compose.material3.Switch import androidx.compose.material3.Text -import androidx.compose.material3.TextFieldDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -52,7 +52,7 @@ import com.sadellie.unitto.core.ui.R * Represents one item in list on Settings screen. * * @param label Main text. - * @param supportText Text that is located below label. + * @param supportContent Text that is located below label. * @param switchState Current switch state. * @param onSwitchChange Action to perform when user clicks on this component or just switch. Gives * you new value. @@ -61,7 +61,7 @@ import com.sadellie.unitto.core.ui.R fun UnittoListItem( label: String, leadingContent: @Composable (() -> Unit)?, - supportText: String? = null, + supportContent: String? = null, switchState: Boolean, onSwitchChange: (Boolean) -> Unit ) { @@ -72,8 +72,8 @@ fun UnittoListItem( indication = rememberRipple(), onClick = { onSwitchChange(!switchState) } ), - headlineText = { Text(label) }, - supportingText = { supportText?.let { Text(text = it) } }, + headlineContent = { Text(label) }, + supportingContent = { supportContent?.let { Text(text = it) } }, leadingContent = leadingContent, trailingContent = { Switch( @@ -111,8 +111,8 @@ fun UnittoListItem( ) ListItem( - headlineText = { Text(label) }, - supportingText = { supportText?.let { Text(text = it) } }, + headlineContent = { Text(label) }, + supportingContent = { supportText?.let { Text(text = it) } }, leadingContent = leadingContent, trailingContent = { ExposedDropdownMenuBox( @@ -130,10 +130,10 @@ fun UnittoListItem( singleLine = true, enabled = false, textStyle = MaterialTheme.typography.bodyLarge, - colors = TextFieldDefaults.outlinedTextFieldColors( - disabledBorderColor = MaterialTheme.colorScheme.outline, + colors = OutlinedTextFieldDefaults.colors( disabledTextColor = MaterialTheme.colorScheme.onSurface, - disabledTrailingIconColor = MaterialTheme.colorScheme.onSurfaceVariant + disabledBorderColor = MaterialTheme.colorScheme.outline, + disabledTrailingIconColor = MaterialTheme.colorScheme.onSurfaceVariant, ), trailingIcon = { Icon( diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt index 95d49580..7e9fd9e3 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt @@ -75,7 +75,7 @@ internal fun AboutScreen( stringResource(R.string.currency_rates_note_setting) ) }, - headlineText = { Text(stringResource(R.string.currency_rates_note_setting)) }, + headlineContent = { Text(stringResource(R.string.currency_rates_note_setting)) }, modifier = Modifier.clickable { showDialog = true } ) } @@ -89,7 +89,7 @@ internal fun AboutScreen( stringResource(R.string.terms_and_conditions) ) }, - headlineText = { Text(stringResource(R.string.terms_and_conditions)) }, + headlineContent = { Text(stringResource(R.string.terms_and_conditions)) }, modifier = Modifier.clickable { openLink( mContext, @@ -108,7 +108,7 @@ internal fun AboutScreen( stringResource(R.string.privacy_policy) ) }, - headlineText = { Text(stringResource(R.string.privacy_policy)) }, + headlineContent = { Text(stringResource(R.string.privacy_policy)) }, modifier = Modifier.clickable { openLink( mContext, @@ -127,7 +127,7 @@ internal fun AboutScreen( stringResource(R.string.open_source) ) }, - headlineText = { Text(stringResource(R.string.open_source)) }, + headlineContent = { Text(stringResource(R.string.open_source)) }, modifier = Modifier.clickable { openLink( mContext, @@ -146,8 +146,8 @@ internal fun AboutScreen( stringResource(R.string.translate_app) ) }, - headlineText = { Text(stringResource(R.string.translate_app)) }, - supportingText = { Text(stringResource(R.string.translate_app_support)) }, + headlineContent = { Text(stringResource(R.string.translate_app)) }, + supportingContent = { Text(stringResource(R.string.translate_app_support)) }, modifier = Modifier.clickable { openLink( mContext, @@ -166,7 +166,7 @@ internal fun AboutScreen( stringResource(R.string.third_party_licenses) ) }, - headlineText = { Text(stringResource(R.string.third_party_licenses)) }, + headlineContent = { Text(stringResource(R.string.third_party_licenses)) }, modifier = Modifier.clickable { navigateToThirdParty() } ) } @@ -180,8 +180,8 @@ internal fun AboutScreen( stringResource(R.string.app_version_name_setting) ) }, - headlineText = { Text(stringResource(R.string.app_version_name_setting)) }, - supportingText = { Text("${BuildConfig.APP_NAME} (${BuildConfig.APP_CODE})") }, + headlineContent = { Text(stringResource(R.string.app_version_name_setting)) }, + supportingContent = { Text("${BuildConfig.APP_NAME} (${BuildConfig.APP_CODE})") }, modifier = Modifier.combinedClickable { if (userPrefs.value.enableToolsExperiment) { Toast.makeText(mContext, "Tools already enabled!", Toast.LENGTH_LONG).show() diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt index 4b287ed9..ece6aa4b 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt @@ -88,8 +88,8 @@ internal fun SettingsScreen( stringResource(R.string.theme_setting), ) }, - headlineText = { Text(stringResource(R.string.theme_setting)) }, - supportingText = { Text(stringResource(R.string.theme_setting_support)) }, + headlineContent = { Text(stringResource(R.string.theme_setting)) }, + supportingContent = { Text(stringResource(R.string.theme_setting_support)) }, modifier = Modifier.clickable { navControllerAction(themesRoute) } ) } @@ -103,8 +103,8 @@ internal fun SettingsScreen( stringResource(R.string.starting_screen_setting), ) }, - headlineText = { Text(stringResource(R.string.starting_screen_setting)) }, - supportingText = { Text(stringResource(R.string.starting_screen_setting_support)) }, + headlineContent = { Text(stringResource(R.string.starting_screen_setting)) }, + supportingContent = { Text(stringResource(R.string.starting_screen_setting_support)) }, modifier = Modifier.clickable { dialogState = DialogState.START_SCREEN } ) } @@ -121,8 +121,8 @@ internal fun SettingsScreen( stringResource(R.string.precision_setting), ) }, - headlineText = { Text(stringResource(R.string.precision_setting)) }, - supportingText = { Text(stringResource(R.string.precision_setting_support)) }, + headlineContent = { Text(stringResource(R.string.precision_setting)) }, + supportingContent = { Text(stringResource(R.string.precision_setting_support)) }, modifier = Modifier.clickable { dialogState = DialogState.PRECISION } ) } @@ -130,8 +130,8 @@ internal fun SettingsScreen( // SEPARATOR item { ListItem( - headlineText = { Text(stringResource(R.string.separator_setting)) }, - supportingText = { Text(stringResource(R.string.separator_setting_support)) }, + headlineContent = { Text(stringResource(R.string.separator_setting)) }, + supportingContent = { Text(stringResource(R.string.separator_setting_support)) }, modifier = Modifier .clickable { dialogState = DialogState.SEPARATOR } .padding(start = 40.dp) @@ -141,8 +141,8 @@ internal fun SettingsScreen( // OUTPUT FORMAT item { ListItem( - headlineText = { Text(stringResource(R.string.output_format_setting)) }, - supportingText = { Text(stringResource(R.string.output_format_setting_support)) }, + headlineContent = { Text(stringResource(R.string.output_format_setting)) }, + supportingContent = { Text(stringResource(R.string.output_format_setting_support)) }, modifier = Modifier .clickable { dialogState = DialogState.OUTPUT_FORMAT } .padding(start = 40.dp) @@ -161,8 +161,8 @@ internal fun SettingsScreen( stringResource(R.string.disable_unit_group_description), ) }, - headlineText = { Text(stringResource(R.string.unit_groups_setting)) }, - supportingText = { Text(stringResource(R.string.unit_groups_support)) }, + headlineContent = { Text(stringResource(R.string.unit_groups_setting)) }, + supportingContent = { Text(stringResource(R.string.unit_groups_support)) }, modifier = Modifier.clickable { navControllerAction(unitsGroupRoute) } ) } @@ -176,8 +176,8 @@ internal fun SettingsScreen( stringResource(R.string.units_sorting) ) }, - headlineText = { Text(stringResource(R.string.units_sorting)) }, - supportingText = { Text(stringResource(R.string.units_sorting_support)) }, + headlineContent = { Text(stringResource(R.string.units_sorting)) }, + supportingContent = { Text(stringResource(R.string.units_sorting_support)) }, modifier = Modifier.clickable { dialogState = DialogState.UNIT_LIST_SORTING } ) } @@ -192,7 +192,7 @@ internal fun SettingsScreen( stringResource(R.string.format_time) ) }, - supportText = stringResource(R.string.format_time_support), + supportContent = stringResource(R.string.format_time_support), switchState = userPrefs.value.unitConverterFormatTime, onSwitchChange = viewModel::updateUnitConverterFormatTime ) @@ -211,7 +211,7 @@ internal fun SettingsScreen( stringResource(R.string.enable_vibrations) ) }, - supportText = stringResource(R.string.enable_vibrations_support), + supportContent = stringResource(R.string.enable_vibrations_support), switchState = userPrefs.value.enableVibrations, onSwitchChange = viewModel::updateVibrations ) @@ -227,7 +227,7 @@ internal fun SettingsScreen( stringResource(R.string.rate_this_app), ) }, - headlineText = { Text(stringResource(R.string.rate_this_app)) }, + headlineContent = { Text(stringResource(R.string.rate_this_app)) }, modifier = Modifier.clickable { openLink(mContext, BuildConfig.STORE_LINK) } ) } @@ -242,8 +242,8 @@ internal fun SettingsScreen( stringResource(R.string.about_unitto), ) }, - headlineText = { Text(stringResource(R.string.about_unitto)) }, - supportingText = { Text(stringResource(R.string.about_unitto_support)) }, + headlineContent = { Text(stringResource(R.string.about_unitto)) }, + supportingContent = { Text(stringResource(R.string.about_unitto_support)) }, modifier = Modifier.clickable { navControllerAction(aboutRoute) } ) } diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt index d233f7b1..03c28cd3 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt @@ -82,7 +82,7 @@ internal fun ThemesScreen( ) }, label = stringResource(R.string.enable_dynamic_colors), - supportText = stringResource(R.string.enable_dynamic_colors_support), + supportContent = stringResource(R.string.enable_dynamic_colors_support), switchState = themmoController.isDynamicThemeEnabled, onSwitchChange = { themmoController.enableDynamicTheme(it) @@ -106,7 +106,7 @@ internal fun ThemesScreen( ) }, label = stringResource(R.string.force_amoled_mode), - supportText = stringResource(R.string.force_amoled_mode_support), + supportContent = stringResource(R.string.force_amoled_mode_support), switchState = themmoController.isAmoledThemeEnabled, onSwitchChange = { themmoController.enableAmoledTheme(it) diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt index f2834887..ed93cd2e 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt @@ -100,7 +100,7 @@ internal fun UnitGroupsScreen( } ListItem( - headlineText = { Text(stringResource(item.res)) }, + headlineContent = { Text(stringResource(item.res)) }, modifier = Modifier .padding(horizontal = itemPadding) .clip(CircleShape) @@ -153,7 +153,7 @@ internal fun UnitGroupsScreen( .background(MaterialTheme.colorScheme.surface) .clickable { viewModel.returnUnitGroup(it) } .animateItemPlacement(), - headlineText = { Text(stringResource(it.res)) }, + headlineContent = { Text(stringResource(it.res)) }, trailingContent = { Icon( Icons.Default.AddCircleOutline, diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3bf68e0a..0fe6b065 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,31 +2,31 @@ appCode = "19" appName = "Jazzberry jam" kotlin = "1.8.10" -androidxCore = "1.9.0" -androidGradlePlugin = "7.4.1" +androidxCore = "1.10.0" +androidGradlePlugin = "7.4.2" orgJetbrainsKotlinxCoroutinesTest = "1.6.4" -androidxCompose = "1.4.0-beta01" -androidxComposeCompiler = "1.4.2" -androidxComposeUi = "1.4.0-beta01" -androidxComposeMaterial3 = "1.1.0-alpha06" +androidxCompose = "1.5.0-alpha02" +androidxComposeCompiler = "1.4.4" +androidxComposeUi = "1.5.0-alpha02" +androidxComposeMaterial3 = "1.1.0-beta02" androidxNavigation = "2.5.3" -androidxLifecycleRuntimeCompose = "2.6.0-beta01" +androidxLifecycleRuntimeCompose = "2.6.1" androidxHilt = "1.0.0" -comGoogleDagger = "2.44.2" -androidxComposeMaterialIconsExtended = "1.4.0-alpha04" +comGoogleDagger = "2.45" +androidxComposeMaterialIconsExtended = "1.5.0-alpha02" androidxDatastore = "1.0.0" -comGoogleAccompanist = "0.27.1" -androidxRoom = "2.4.3" +comGoogleAccompanist = "0.30.1" +androidxRoom = "2.5.1" comSquareupMoshi = "1.14.0" comSquareupRetrofit2 = "2.9.0" -comGithubSadellieThemmo = "cf6be7e592" +comGithubSadellieThemmo = "3e34a0dcfe" orgBurnoutcrewComposereorderable = "0.9.6" comGithubSadellieExprk = "e55cba8f41" mxParser = "5.2.1" junit = "4.13.2" androidxTest = "1.5.0" androidxTestExt = "1.1.4" -androidDesugarJdkLibs = "2.0.2" +androidDesugarJdkLibs = "2.0.3" androidxTestRunner = "1.5.1" androidxTestRules = "1.5.0" orgRobolectric = "4.9" From b7127e75a91e62a3449d503ffd32bd89461bf0c0 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Sun, 9 Apr 2023 00:24:30 +0300 Subject: [PATCH 2/3] Better theming options: - Improved UI/UX - Added ability to pick color scheme --- .../java/com/sadellie/unitto/UnittoApp.kt | 3 +- core/base/src/main/res/values/strings.xml | 7 +- .../unitto/core/ui/common/SegmentedButton.kt | 106 +++++++++++ .../unitto/data/userprefs/UserPreferences.kt | 39 ++-- .../feature/settings/SettingsViewModel.kt | 10 ++ .../unitto/feature/settings/ThemesScreen.kt | 170 ++++++++++++++---- .../settings/components/ColorCheckbox.kt | 133 ++++++++++++++ .../settings/navigation/SettingsNavigation.kt | 4 +- 8 files changed, 417 insertions(+), 55 deletions(-) create mode 100644 core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt create mode 100644 feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt diff --git a/app/src/main/java/com/sadellie/unitto/UnittoApp.kt b/app/src/main/java/com/sadellie/unitto/UnittoApp.kt index cc1bb5f9..4bd03aff 100644 --- a/app/src/main/java/com/sadellie/unitto/UnittoApp.kt +++ b/app/src/main/java/com/sadellie/unitto/UnittoApp.kt @@ -63,7 +63,8 @@ internal fun UnittoApp() { // Anything below will not be called if theming mode is still loading from DataStore themingMode = userPrefs.value.themingMode ?: return, dynamicThemeEnabled = userPrefs.value.enableDynamicTheme, - amoledThemeEnabled = userPrefs.value.enableAmoledTheme + amoledThemeEnabled = userPrefs.value.enableAmoledTheme, + customColor = userPrefs.value.customColor ) val navController = rememberNavController() val sysUiController = rememberSystemUiController() diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml index ab3740f5..1665a142 100644 --- a/core/base/src/main/res/values/strings.xml +++ b/core/base/src/main/res/values/strings.xml @@ -1064,9 +1064,9 @@ tf Millinewton mN - attonewton + Attonewton aN - dyne + Dyne dyn Joule/meter J/m @@ -1317,10 +1317,13 @@ Light Dark Color theme + Pick a theming mode AMOLED Dark Use black background for dark themes Dynamic colors Use colors from your wallpaper + Color scheme + Selected color Loading… diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt new file mode 100644 index 00000000..097cd368 --- /dev/null +++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt @@ -0,0 +1,106 @@ +/* + * Unitto is a unit converter for Android + * Copyright (c) 2023 Elshan Agaev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sadellie.unitto.core.ui.common + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.widthIn +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedButton +import androidx.compose.material3.OutlinedCard +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.RectangleShape +import androidx.compose.ui.unit.dp + +private val GroupRowContainerHeight = 40.dp +private val GroupRowItemMinWidth = 58.dp + +@Composable +fun SegmentedButtonRow( + modifier: Modifier = Modifier, + content: @Composable RowScope.() -> Unit +) { + OutlinedCard( + modifier = modifier, + shape = CircleShape + ) { + Row( + modifier = Modifier + .height(GroupRowContainerHeight) + .widthIn(min = GroupRowItemMinWidth), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center + ) { + content() + } + } +} + +@Composable +fun RowScope.SegmentedButton( + onClick: () -> Unit, + selected: Boolean, + modifier: Modifier = Modifier, + enabled: Boolean = true, + content: @Composable () -> Unit, +) { + val containerColor = + if (selected) + MaterialTheme.colorScheme.secondaryContainer + else + MaterialTheme.colorScheme.surface + OutlinedButton( + modifier = modifier.weight(1f), + onClick = onClick, + shape = RectangleShape, + colors = ButtonDefaults.outlinedButtonColors( + containerColor = containerColor, + contentColor = contentColorFor(containerColor) + ), + enabled = enabled, + contentPadding = PaddingValues(horizontal = 12.dp) + ) { + AnimatedVisibility(visible = selected) { + Row { + Icon( + modifier = Modifier.size(18.dp), + imageVector = Icons.Default.Check, + contentDescription = null + ) + Spacer(Modifier.width(8.dp)) + } + } + content() + } +} diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt index 5942b3ff..9511a071 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt @@ -18,12 +18,14 @@ package com.sadellie.unitto.data.userprefs +import androidx.compose.ui.graphics.Color import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.booleanPreferencesKey import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.emptyPreferences import androidx.datastore.preferences.core.intPreferencesKey +import androidx.datastore.preferences.core.longPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import com.sadellie.unitto.core.base.OutputFormat import com.sadellie.unitto.core.base.Separator @@ -47,6 +49,7 @@ import javax.inject.Inject * still loading. * @property enableDynamicTheme Use dynamic color scheme * @property enableAmoledTheme Use amoled color scheme + * @property customColor Generate custom color scheme from this color. * @property digitsPrecision Current [PRECISIONS]. Number of digits in fractional part * @property separator Current [Separator] that used to separate thousands * @property outputFormat Current [OutputFormat] that is applied to converted value (not input) @@ -64,6 +67,7 @@ data class UserPreferences( val themingMode: ThemingMode? = null, val enableDynamicTheme: Boolean = false, val enableAmoledTheme: Boolean = false, + val customColor: Color = Color.Unspecified, val digitsPrecision: Int = 3, val separator: Int = Separator.SPACES, val outputFormat: Int = OutputFormat.PLAIN, @@ -90,6 +94,7 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS val THEMING_MODE = stringPreferencesKey("THEMING_MODE_PREF_KEY") val ENABLE_DYNAMIC_THEME = booleanPreferencesKey("ENABLE_DYNAMIC_THEME_PREF_KEY") val ENABLE_AMOLED_THEME = booleanPreferencesKey("ENABLE_AMOLED_THEME_PREF_KEY") + val CUSTOM_COLOR = longPreferencesKey("CUSTOM_COLOR_PREF_KEY") val DIGITS_PRECISION = intPreferencesKey("DIGITS_PRECISION_PREF_KEY") val SEPARATOR = intPreferencesKey("SEPARATOR_PREF_KEY") val OUTPUT_FORMAT = intPreferencesKey("OUTPUT_FORMAT_PREF_KEY") @@ -117,20 +122,14 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS val themingMode: ThemingMode = preferences[PrefsKeys.THEMING_MODE]?.let { ThemingMode.valueOf(it) } ?: ThemingMode.AUTO - val enableDynamicTheme: Boolean = - preferences[PrefsKeys.ENABLE_DYNAMIC_THEME] ?: false - val enableAmoledTheme: Boolean = - preferences[PrefsKeys.ENABLE_AMOLED_THEME] ?: false - val digitsPrecision: Int = - preferences[PrefsKeys.DIGITS_PRECISION] ?: 3 - val separator: Int = - preferences[PrefsKeys.SEPARATOR] ?: Separator.SPACES - val outputFormat: Int = - preferences[PrefsKeys.OUTPUT_FORMAT] ?: OutputFormat.PLAIN - val latestLeftSideUnit: String = - preferences[PrefsKeys.LATEST_LEFT_SIDE] ?: MyUnitIDS.kilometer - val latestRightSideUnit: String = - preferences[PrefsKeys.LATEST_RIGHT_SIDE] ?: MyUnitIDS.mile + val enableDynamicTheme: Boolean = preferences[PrefsKeys.ENABLE_DYNAMIC_THEME] ?: false + val enableAmoledTheme: Boolean = preferences[PrefsKeys.ENABLE_AMOLED_THEME] ?: false + val customColor: Color = preferences[PrefsKeys.CUSTOM_COLOR]?.let { Color(it.toULong()) } ?: Color.Unspecified + val digitsPrecision: Int = preferences[PrefsKeys.DIGITS_PRECISION] ?: 3 + val separator: Int = preferences[PrefsKeys.SEPARATOR] ?: Separator.SPACES + val outputFormat: Int = preferences[PrefsKeys.OUTPUT_FORMAT] ?: OutputFormat.PLAIN + val latestLeftSideUnit: String = preferences[PrefsKeys.LATEST_LEFT_SIDE] ?: MyUnitIDS.kilometer + val latestRightSideUnit: String = preferences[PrefsKeys.LATEST_RIGHT_SIDE] ?: MyUnitIDS.mile val shownUnitGroups: List = preferences[PrefsKeys.SHOWN_UNIT_GROUPS]?.let { list -> // Everything is in hidden (nothing in shown) @@ -157,6 +156,7 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS themingMode = themingMode, enableDynamicTheme = enableDynamicTheme, enableAmoledTheme = enableAmoledTheme, + customColor = customColor, digitsPrecision = digitsPrecision, separator = separator, outputFormat = outputFormat, @@ -253,6 +253,17 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS } } + /** + * Update preference on custom color scheme. + * + * @param color New custom color value. + */ + suspend fun updateCustomColor(color: Color) { + dataStore.edit { preferences -> + preferences[PrefsKeys.CUSTOM_COLOR] = color.value.toLong() + } + } + /** * Update preference on starting screen route. * diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt index 6f4ebfc4..92cb1f5c 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt @@ -18,6 +18,7 @@ package com.sadellie.unitto.feature.settings +import androidx.compose.ui.graphics.Color import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.sadellie.unitto.core.ui.Formatter @@ -75,6 +76,15 @@ class SettingsViewModel @Inject constructor( } } + /** + * @see UserPreferencesRepository.updateCustomColor + */ + fun updateCustomColor(color: Color) { + viewModelScope.launch { + userPrefsRepository.updateCustomColor(color) + } + } + /** * @see UserPreferencesRepository.updateDigitsPrecision */ diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt index 03c28cd3..8f40a7a0 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt @@ -24,77 +24,123 @@ import androidx.compose.animation.expandVertically import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.shrinkVertically +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Colorize import androidx.compose.material.icons.filled.DarkMode import androidx.compose.material.icons.filled.Palette import androidx.compose.material3.Icon +import androidx.compose.material3.ListItem +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp import com.sadellie.unitto.core.ui.R +import com.sadellie.unitto.core.ui.common.Header import com.sadellie.unitto.core.ui.common.NavigateUpButton import com.sadellie.unitto.core.ui.common.UnittoListItem import com.sadellie.unitto.core.ui.common.UnittoScreenWithLargeTopBar +import com.sadellie.unitto.feature.settings.components.ColorSelector +import com.sadellie.unitto.core.ui.common.SegmentedButton +import com.sadellie.unitto.core.ui.common.SegmentedButtonRow import io.github.sadellie.themmo.ThemingMode import io.github.sadellie.themmo.ThemmoController @Composable -internal fun ThemesScreen( +internal fun ThemesRoute( navigateUpAction: () -> Unit = {}, themmoController: ThemmoController, viewModel: SettingsViewModel ) { + ThemesScreen( + navigateUpAction = navigateUpAction, + currentThemingMode = themmoController.currentThemingMode, + onThemeChange = { + themmoController.setThemingMode(it) + viewModel.updateThemingMode(it) + }, + isDynamicThemeEnabled = themmoController.isDynamicThemeEnabled, + onDynamicThemeChange = { + themmoController.enableDynamicTheme(it) + viewModel.updateDynamicTheme(it) + }, + isAmoledThemeEnabled = themmoController.isAmoledThemeEnabled, + onAmoledThemeChange = { + themmoController.enableAmoledTheme(it) + viewModel.updateAmoledTheme(it) + }, + selectedColor = themmoController.currentCustomColor, + onColorChange = { + themmoController.setCustomColor(it) + viewModel.updateCustomColor(it) + } + ) +} + +@Composable +private fun ThemesScreen( + navigateUpAction: () -> Unit, + currentThemingMode: ThemingMode, + onThemeChange: (ThemingMode) -> Unit, + isDynamicThemeEnabled: Boolean, + onDynamicThemeChange: (Boolean) -> Unit, + isAmoledThemeEnabled: Boolean, + onAmoledThemeChange: (Boolean) -> Unit, + selectedColor: Color, + onColorChange: (Color) -> Unit, +) { + val themingModes by remember { + mutableStateOf( + mapOf( + ThemingMode.AUTO to R.string.force_auto_mode, + ThemingMode.FORCE_LIGHT to R.string.force_light_mode, + ThemingMode.FORCE_DARK to R.string.force_dark_mode + ) + ) + } + UnittoScreenWithLargeTopBar( title = stringResource(R.string.theme_setting), navigationIcon = { NavigateUpButton(navigateUpAction) } ) { paddingValues -> LazyColumn(contentPadding = paddingValues) { item { - UnittoListItem( + ListItem( leadingContent = { Icon( Icons.Default.Palette, stringResource(R.string.color_theme), ) }, - label = stringResource(R.string.color_theme), - allOptions = mapOf( - ThemingMode.AUTO to stringResource(R.string.force_auto_mode), - ThemingMode.FORCE_LIGHT to stringResource(R.string.force_light_mode), - ThemingMode.FORCE_DARK to stringResource(R.string.force_dark_mode) - ), - selected = themmoController.currentThemingMode, - onSelectedChange = { - themmoController.setThemingMode(it) - viewModel.updateThemingMode(it) - } + headlineContent = { Text(stringResource(R.string.color_theme)) }, + supportingContent = { Text(stringResource(R.string.color_theme_support)) }, ) } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { - item { - UnittoListItem( - leadingContent = { - Icon( - Icons.Default.Colorize, - stringResource(R.string.enable_dynamic_colors), - ) - }, - label = stringResource(R.string.enable_dynamic_colors), - supportContent = stringResource(R.string.enable_dynamic_colors_support), - switchState = themmoController.isDynamicThemeEnabled, - onSwitchChange = { - themmoController.enableDynamicTheme(it) - viewModel.updateDynamicTheme(it) - } - ) + item { + SegmentedButtonRow( + modifier = Modifier.padding(56.dp, 8.dp, 24.dp, 2.dp) + ) { + themingModes.forEach { (mode, stringRes) -> + SegmentedButton( + onClick = { onThemeChange(mode) }, + selected = currentThemingMode == mode, + content = { Text(stringResource(stringRes)) } + ) + } } } item { AnimatedVisibility( - visible = (themmoController.currentThemingMode != ThemingMode.FORCE_LIGHT), + visible = currentThemingMode != ThemingMode.FORCE_LIGHT, enter = expandVertically() + fadeIn(), exit = shrinkVertically() + fadeOut(), ) { @@ -107,14 +153,66 @@ internal fun ThemesScreen( }, label = stringResource(R.string.force_amoled_mode), supportContent = stringResource(R.string.force_amoled_mode_support), - switchState = themmoController.isAmoledThemeEnabled, - onSwitchChange = { - themmoController.enableAmoledTheme(it) - viewModel.updateAmoledTheme(it) - } + switchState = isAmoledThemeEnabled, + onSwitchChange = onAmoledThemeChange + ) + } + } + + item { Header(stringResource(R.string.color_scheme)) } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { + item { + UnittoListItem( + leadingContent = { + Icon( + Icons.Default.Colorize, + stringResource(R.string.enable_dynamic_colors), + ) + }, + label = stringResource(R.string.enable_dynamic_colors), + supportContent = stringResource(R.string.enable_dynamic_colors_support), + switchState = isDynamicThemeEnabled, + onSwitchChange = onDynamicThemeChange + ) + } + } + + item { + AnimatedVisibility( + visible = !isDynamicThemeEnabled, + enter = expandVertically() + fadeIn(), + exit = shrinkVertically() + fadeOut(), + ) { + ListItem( + headlineContent = { Text(stringResource(R.string.selected_color)) }, + supportingContent = { + ColorSelector( + modifier = Modifier.padding(top = 12.dp), + selected = selectedColor, + onItemClick = onColorChange + ) + }, + modifier = Modifier.padding(start = 40.dp) ) } } } } } + +@Preview +@Composable +private fun Preview() { + ThemesScreen( + navigateUpAction = {}, + currentThemingMode = ThemingMode.AUTO, + onThemeChange = {}, + isDynamicThemeEnabled = false, + onDynamicThemeChange = {}, + isAmoledThemeEnabled = false, + onAmoledThemeChange = {}, + selectedColor = Color.Unspecified, + onColorChange = {} + ) +} diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt new file mode 100644 index 00000000..d3585466 --- /dev/null +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt @@ -0,0 +1,133 @@ +/* + * Unitto is a unit converter for Android + * Copyright (c) 2023 Elshan Agaev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sadellie.unitto.feature.settings.components + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.unit.dp + +@Composable +internal fun ColorSelector( + modifier: Modifier = Modifier, + selected: Color, + onItemClick: (Color) -> Unit, +) { + val colorSchemes: List by remember { + mutableStateOf( + listOf( + Color(0xFFE91E63), + Color(0xFFFF9800), + Color(0xFF4CAF50), + Color(0xFF2196F3), + Color(0xFF9C27B0), + Color(0xFF5C76AA), + Color(0xFF756FAA), + Color(0xFF9E6C2A), + ) + ) + } + + LazyRow( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + // Default, Unitto colors + item { + ColorCheckbox( + color = Color(0xFF186c31), + selected = Color.Unspecified == selected, + onClick = { onItemClick(Color.Unspecified) } + ) + } + colorSchemes.forEach { + item { + ColorCheckbox( + color = it, + selected = it == selected, + onClick = { onItemClick(it) } + ) + } + } + } +} + +@Composable +private fun ColorCheckbox( + color: Color, + selected: Boolean, + onClick: () -> Unit +) { + Box( + modifier = Modifier + .clickable(onClick = onClick) + .background( + MaterialTheme.colorScheme.surfaceColorAtElevation(2.dp), + RoundedCornerShape(25) + ) + .width(72.dp) + .aspectRatio(1f), + contentAlignment = Alignment.Center + ) { + Box( + modifier = Modifier + .background(color, CircleShape) + .size(54.dp) + .border(1.dp, Color.Black.copy(0.5f), CircleShape) + ) + AnimatedVisibility( + visible = selected, + enter = fadeIn(tween(250)) + scaleIn(tween(150)), + exit = fadeOut(tween(250)) + scaleOut(tween(150)), + ) { + Icon( + imageVector = Icons.Default.Check, + contentDescription = null, + tint = if (color.luminance() > 0.5) Color.Black else Color.White, + ) + } + } +} diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt index 9949afb9..cc2a874e 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt @@ -28,7 +28,7 @@ import com.sadellie.unitto.core.base.TopLevelDestinations import com.sadellie.unitto.feature.settings.AboutScreen import com.sadellie.unitto.feature.settings.SettingsScreen import com.sadellie.unitto.feature.settings.SettingsViewModel -import com.sadellie.unitto.feature.settings.ThemesScreen +import com.sadellie.unitto.feature.settings.ThemesRoute import com.sadellie.unitto.feature.settings.ThirdPartyLicensesScreen import com.sadellie.unitto.feature.settings.UnitGroupsScreen import io.github.sadellie.themmo.ThemmoController @@ -63,7 +63,7 @@ fun NavGraphBuilder.settingGraph( } composable(themesRoute) { - ThemesScreen( + ThemesRoute( navigateUpAction = { navController.navigateUp() }, themmoController = themmoController, viewModel = settingsViewModel From 59ec10017fcd647ccc222cf4f01995f348970fff Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Thu, 20 Apr 2023 10:43:49 +0300 Subject: [PATCH 3/3] Icon and label change option squashed + dummy icons --- app/src/main/AndroidManifest.xml | 113 +++++++++++- .../res/drawable/ic_launcher_foreground.xml | 16 -- .../res/drawable/ic_launcher_monochrome.xml | 16 -- .../res/mipmap-anydpi-v26/ic_launcher.xml | 7 - app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 1187 -> 0 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 883 -> 0 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 1734 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 2695 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 3677 -> 0 bytes .../main/ic_launcher_3_green-playstore.png | Bin 0 -> 17665 bytes .../res/drawable/ic_launcher_1_foreground.xml | 45 +++++ .../res/drawable/ic_launcher_2_foreground.xml | 33 ++++ .../res/drawable/ic_launcher_3_foreground.xml | 45 +++++ .../mipmap-anydpi-v26/ic_launcher_1_green.xml | 24 +++ .../ic_launcher_1_orange.xml | 24 +++ .../mipmap-anydpi-v26/ic_launcher_1_red.xml | 24 +++ .../mipmap-anydpi-v26/ic_launcher_2_green.xml | 24 +++ .../ic_launcher_2_orange.xml | 24 +++ .../mipmap-anydpi-v26/ic_launcher_2_red.xml | 24 +++ .../mipmap-anydpi-v26/ic_launcher_3_green.xml | 24 +++ .../ic_launcher_3_orange.xml | 24 +++ .../mipmap-anydpi-v26/ic_launcher_3_red.xml | 24 +++ .../res/mipmap-hdpi/ic_launcher_1_green.png | Bin 0 -> 1662 bytes .../res/mipmap-hdpi/ic_launcher_1_orange.png | Bin 0 -> 1551 bytes .../res/mipmap-hdpi/ic_launcher_1_red.png | Bin 0 -> 1810 bytes .../res/mipmap-hdpi/ic_launcher_2_green.png | Bin 0 -> 1478 bytes .../res/mipmap-hdpi/ic_launcher_2_orange.png | Bin 0 -> 1376 bytes .../res/mipmap-hdpi/ic_launcher_2_red.png | Bin 0 -> 1508 bytes .../res/mipmap-hdpi/ic_launcher_3_green.png | Bin 0 -> 1703 bytes .../res/mipmap-hdpi/ic_launcher_3_orange.png | Bin 0 -> 1590 bytes .../res/mipmap-hdpi/ic_launcher_3_red.png | Bin 0 -> 1693 bytes .../res/mipmap-mdpi/ic_launcher_1_green.png | Bin 0 -> 1274 bytes .../res/mipmap-mdpi/ic_launcher_1_orange.png | Bin 0 -> 1156 bytes .../res/mipmap-mdpi/ic_launcher_1_red.png | Bin 0 -> 1326 bytes .../res/mipmap-mdpi/ic_launcher_2_green.png | Bin 0 -> 1081 bytes .../res/mipmap-mdpi/ic_launcher_2_orange.png | Bin 0 -> 1015 bytes .../res/mipmap-mdpi/ic_launcher_2_red.png | Bin 0 -> 1071 bytes .../res/mipmap-mdpi/ic_launcher_3_green.png | Bin 0 -> 1221 bytes .../res/mipmap-mdpi/ic_launcher_3_orange.png | Bin 0 -> 1140 bytes .../res/mipmap-mdpi/ic_launcher_3_red.png | Bin 0 -> 1203 bytes .../res/mipmap-xhdpi/ic_launcher_1_green.png | Bin 0 -> 2363 bytes .../res/mipmap-xhdpi/ic_launcher_1_orange.png | Bin 0 -> 2141 bytes .../res/mipmap-xhdpi/ic_launcher_1_red.png | Bin 0 -> 2503 bytes .../res/mipmap-xhdpi/ic_launcher_2_green.png | Bin 0 -> 2269 bytes .../res/mipmap-xhdpi/ic_launcher_2_orange.png | Bin 0 -> 2121 bytes .../res/mipmap-xhdpi/ic_launcher_2_red.png | Bin 0 -> 2263 bytes .../res/mipmap-xhdpi/ic_launcher_3_green.png | Bin 0 -> 2292 bytes .../res/mipmap-xhdpi/ic_launcher_3_orange.png | Bin 0 -> 2159 bytes .../res/mipmap-xhdpi/ic_launcher_3_red.png | Bin 0 -> 2327 bytes .../res/mipmap-xxhdpi/ic_launcher_1_green.png | Bin 0 -> 3694 bytes .../mipmap-xxhdpi/ic_launcher_1_orange.png | Bin 0 -> 3458 bytes .../res/mipmap-xxhdpi/ic_launcher_1_red.png | Bin 0 -> 3760 bytes .../res/mipmap-xxhdpi/ic_launcher_2_green.png | Bin 0 -> 3555 bytes .../mipmap-xxhdpi/ic_launcher_2_orange.png | Bin 0 -> 3371 bytes .../res/mipmap-xxhdpi/ic_launcher_2_red.png | Bin 0 -> 3582 bytes .../res/mipmap-xxhdpi/ic_launcher_3_green.png | Bin 0 -> 3643 bytes .../mipmap-xxhdpi/ic_launcher_3_orange.png | Bin 0 -> 3563 bytes .../res/mipmap-xxhdpi/ic_launcher_3_red.png | Bin 0 -> 3672 bytes .../mipmap-xxxhdpi/ic_launcher_1_green.png | Bin 0 -> 4939 bytes .../mipmap-xxxhdpi/ic_launcher_1_orange.png | Bin 0 -> 4681 bytes .../res/mipmap-xxxhdpi/ic_launcher_1_red.png | Bin 0 -> 5208 bytes .../mipmap-xxxhdpi/ic_launcher_2_green.png | Bin 0 -> 5078 bytes .../mipmap-xxxhdpi/ic_launcher_2_orange.png | Bin 0 -> 4823 bytes .../res/mipmap-xxxhdpi/ic_launcher_2_red.png | Bin 0 -> 5087 bytes .../mipmap-xxxhdpi/ic_launcher_3_green.png | Bin 0 -> 5194 bytes .../mipmap-xxxhdpi/ic_launcher_3_orange.png | Bin 0 -> 4964 bytes .../res/mipmap-xxxhdpi/ic_launcher_3_red.png | Bin 0 -> 5243 bytes core/base/src/main/res/values/colors.xml | 23 +++ core/base/src/main/res/values/strings.xml | 4 + .../com/sadellie/unitto/data/model/AppIcon.kt | 47 +++++ .../unitto/data/userprefs/UserPreferences.kt | 22 ++- .../feature/settings/SettingsViewModel.kt | 16 +- .../unitto/feature/settings/ThemesScreen.kt | 172 +++++++++++++++++- .../settings/components/ColorCheckbox.kt | 59 +++--- .../settings/components/IconSelector.kt | 144 +++++++++++++++ 75 files changed, 892 insertions(+), 86 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml delete mode 100644 app/src/main/res/drawable/ic_launcher_monochrome.xml delete mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 core/base/src/main/ic_launcher_3_green-playstore.png create mode 100644 core/base/src/main/res/drawable/ic_launcher_1_foreground.xml create mode 100644 core/base/src/main/res/drawable/ic_launcher_2_foreground.xml create mode 100644 core/base/src/main/res/drawable/ic_launcher_3_foreground.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_green.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_orange.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_red.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_green.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_orange.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_red.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_green.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_orange.xml create mode 100644 core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_red.xml create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_1_green.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_1_orange.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_1_red.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_2_green.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_2_orange.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_2_red.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_3_green.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_3_orange.png create mode 100644 core/base/src/main/res/mipmap-hdpi/ic_launcher_3_red.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_1_green.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_1_orange.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_1_red.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_2_green.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_2_orange.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_2_red.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_3_green.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_3_orange.png create mode 100644 core/base/src/main/res/mipmap-mdpi/ic_launcher_3_red.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_green.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_orange.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_red.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_2_green.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_2_orange.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_2_red.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_3_green.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_3_orange.png create mode 100644 core/base/src/main/res/mipmap-xhdpi/ic_launcher_3_red.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_1_green.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_1_orange.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_1_red.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_green.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_orange.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_red.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_3_green.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_3_orange.png create mode 100644 core/base/src/main/res/mipmap-xxhdpi/ic_launcher_3_red.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_green.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_orange.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_red.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_2_green.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_2_orange.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_2_red.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_green.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_orange.png create mode 100644 core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_red.png create mode 100644 core/base/src/main/res/values/colors.xml create mode 100644 data/model/src/main/java/com/sadellie/unitto/data/model/AppIcon.kt create mode 100644 feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/IconSelector.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f6be48b..be712480 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,7 +5,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index 6a7128f4..00000000 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml deleted file mode 100644 index 9b58398e..00000000 --- a/app/src/main/res/drawable/ic_launcher_monochrome.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 7b32835e..00000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 2bde775ec3b2cc001e13c0a20d07aa933b73a8ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2V9D}yaSW-5dpkQeCpcB&xTMpf zqQgfQc}$ofu{U6|f^y450r8L$t#Bm?eS?p}F8g>sCMCsOX_;|Aq%ASWZI@16ijV7= z9&J_`gO>|3Z*pWkn;_u!GHrWV?EYhspMLyHpS|UI?&ohZ2J?zP*__m0E`R>_mjCzf z6<=HOa!Y0m2z=91(h@#XAd&iO&N45aS?lW0XqH~SS;X$+w`~5kEmzuSOrmX|6kXptEzw zGnEONLXvixN@-?IjoCtaNfv5C8`C!zeW_>Ntz4A(`0?T^w_nH4oxO9(DU<20iy!vS z)$&-dG{|sQ!NWgtDW=L9RTef|I%@Q_a z5sn{xN~GLN}Trqqedyi_Uy!bdbJJX^n_LXTvDa+m;H)jVO znExkl<#vgC|2ALx_59l&uZtfcPVn+S@^bC8D9s0T=N*Cay0P~?UdQL%a_bBU0ctj7 zX?*s0ZO{Qz-uwWQb@v#5gr&qjPRsmj_x*X$ddD@&84rHVH>p28X-~tB`(@8ITv@&R z@O{tkd-wW8Wj|4hXL-%xwd`0%_Ur0PdKC%3i?UwiESt!5Kfm{=`-!VxO>KYpZQa7R zTqo_-b%`TZO$U}qyaf(RUy=6zYytq5{%cVx$F9*NxUS6@ZQd+n6zvQm+;(zOy zXEe&LoS)B>&B+wIf9|r@t^OVhy;-w&|F=*+Yufphh4H@X{VV%lIPG36vE!M|{_myE z^XGaUnALP(!jFdQ@BTJkGh4IV)q36%*68V8K_4XMIs5Pa&hgh)Y|^tkD%V7(sLt#Q ztlu!-ruO*D-SgyEUVJ=@Y5PZ@s{XpWx`%!>{YyuWlLyl{ivHxA{`t3AFU3?HF#=KX?$2es#0{bet`dslt-gsW2)1TWupEw!D~^OyJr-4jjoQ{0peU%B<_ zR>K;*`T5K4IbU2U*?>D`r_jJ&v~!kPrvm!{>&K}{)c;&nKvm2Zwd_! zy*qLKt%#|iVPW?)`-)kj!t$Gv tDJN1i|1Qc|kZ_x`ps=v;=AwU$%h%ktnYsP5Hn8wv@O1TaS?83{1OR!KM-%`6 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index e808cbff7529f89e2169741b64bec8d43f43dcd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmV-(1C0EMP)YG_%DV_;GjdIrrTEe`fE?-k=~Y z0yqF5n6N-)f@xi|23a&8q36|#Iq8uW0yx3|_*DShN_D`!9bt0XWJ4?<;}W-z<1RA( zAfqY>d%N&q+UJyZKfP4cL6?ZpCwfcl+;4h&Wpc~53-rEi@+FyEj z_obD|OToNYYyS9}$dvG(Bg<4m4LGe9?#Lo?t9%>dm{ z4$XicGy`-)IWz-)&OpVCC zf+ODAtoyl4o<U$3yKkCWj*kkE|qqj34oCwF7*h@*!(c8iFqEW;Eaoc zcmLdNYBH<~)Hk5lm&Hi6`UD7<1~oPM6&&Xn!bPqCx!`cSd9Ye7w*34nYf+=YU|H0wt>;1 zp?*7#N+Ryr-`_WEG}b?kkB`Tn58hkPYyd+j2qCOVOx(FUJ^jRi)YKGJz`b?49Xiy4 znr0O*1{NkKCodu&LkUY&CKR>&vUq9WVKJM{3)N)C1FJ=V#80>nqmepY6e~BdCAa(e%o8`0vh-1YQZ_kK8Wo; z7|fz9CgSUe^*72E>8ttdAk4VsrEA=dIUi#;DS2pesN#xd?|vsbsye{-GguyK0HdZ9 zYdd|B{{6 z%0+Ve2_(|E0;lmHZzkykbM)mwvewz6{yZJdu>%o_;>teb*|)4{eWT`Y{Ftk(zWmYA zrd^v+Z^1xaV$9R98v*Cv%TFj*vURn_8`|63_3?^8Cy{2=cZ-A^b7Jh#--4}dY#3?s z{yI9O;X(I0emVpvpe$l}U}A3Q5BF?5Bfc4{CMb0&1%$OJHk)?{PxUdeF!gQK15dOK z#k&*C;%ta@G^)8u)plNHRppNc_Vz-CxD<|MGtyd9yI1IX5cfHdvKHWxo26WlJ!(e6 z`-_SJrRKoHo}i$7&HLKWfc@|)2P=;_Z)$gZh({L172iEJfOxmDcS4cYHju%J@SmI6 zfUjhJKk$(H@W-1+Pb@x(a!qwDLq^$25j*q42CiY{U8Zt-D-RH~7z$n0gHM_Mzx(1( za01(^4B-t0N)PYMsAmRc(vWYXoe)zQqv4HaC8FKoYPzb~O2>)I7W-fG+h(`D9)SuP z>^)WsZeQ>b^np9l_&x99Qw^V12yU-|{+2Vytkr9=xr2a)mnk&FbK;WDu7|RT%iegiT(XFl;pfGR*L8;?GryNQB)eT4{y?f~Q9(!yHI&+$ zoNs?6oWD13;V1uCPR)gtyWAINeFN6C)xgoK!Tm{&snV_M{{@@z?cY)DvQCB?I*_+H z0l4CwzTXm)LpwkADke?}Tx^`4FOXJDtot8R4Py;n$-=t#+Q2#1Kv*M7BfYEy8Tx9B zQbeharhy}jI$LWJCJqS5n~ z%dHT?B9D)#E__f1=7geoMRn&{jy36}sP~{^@=wGtCRaZyY`?H{0b!evzG>HVYG$og zQv(GUeEqhz9-N@Z9e)1~t-B?pe_TltaPRVoZrtr7(>fYoQU(8e7Pxh415v&ncPm|K z@rA^om3c=Y14)EjMDmm4ge7-7$X$T`$4LfRvhm04bDyIdORDVYW!6FNrj8VIXmQn< zu+^8*y41NR<&y&z?A;tzC{9YG^!Q1U?bnk|*YfY5d7-t{f%^BI|MLMvo!&E?TY>AJ)^I#nckOlZkux}Z;%6U<@p@vWoWxSp;>39AFNx@qkBGn?I2 z-fKFtU}#eW;k;xVM)W+ew6Mr&;)q1PlVI$oe6q;-5cvU{jZYyxg{F*Lyp+3O;|>pV z-qXZnFboAkq5BOM^o`00S8{H*QCIK%hK6HdzbNm*B>}sx%t@xG5G2;6$zXZDyYzZt zbMvt+@Ttq4`8xjIf2>>Q&d$y%7#?R5haX~W?d_BBiRs%d&|gWkrF%q~j8s)qvlWt- zHWRaa*v>B5iTL^Apj4ZADr+r$IW@*t)GmqTGd>YFz7-aZjeYy`%YZ~&c^=<`r@Av5 zTy4M+2wZ+VXzHf)Tc(3k=I)7D>$EDNJ`RUFx#?1(D8ST_Dds(cwUybAFA8U99-7fe z;)`eH*H~C*)K``?@nUB|K?DR*6bvmuP%(xoQltn-5u`00LJ96t48;bB7>P<1 zqy_{cK^`Cq(nAXyN+3asu!I`wLqEMYZ)U&0JLleW@0|breK|A#IZ0+FSA_&%0ssI& z$oLxC;vhfzxxt4H&Y3IBS^z-6#2BrAGtBV^5n?7jB-6GGNx!+>hA`)OZ_y*a+;|dO zXjgPkT8l`+ex`Y12f8$|>WXyF#9{qDb*wTvB}vpUn}&qZlR}bfD)=5Yq0-TOM?m5t z`a+4v{SQmC*LE`)vuh28OKwXcOYYS1tnP)vg&$H>xv@RpCd5gQKJr1T+Jbe}k+!+3lQsIbMyO%uWW>Kp6}kL9u#nW9fZ} zPx@AcpLJ#+Vg@iHU69`Ybrw*A%88tdttXirg>fW_BeJdtmCQg`L9*(TW3~3eQ20)n zm`7Is$didNqL13qp59*MI2LB@;UN`3Sm6VM3kBax%q7a%x=yhQ7+PfQ&$q5!qI~T) zCh+nIF$Qfg7_s6K&^VcFKD8EGRRwAOo#YV|{yc zt=0F#*?`CJ*vW=Em{eIglld5py_^R@cms&^utvsMxISs31)8{oDov4!kvaeze-!;VdSrwmk0MR9 zI*`cZwWme>G#afeF=|^o9z_Xl)DQvksV)NZ@=LP~hz9V9iy?yIhwyPy5a6Hs2QMi2 zIS|NWiGtq|0E2Gu;A79gq38HO!2DR$C-MI*p6uxzX}6Qn&>UL&B(zt-;ZolW%(7re zyS%{nARxbeonv=2HR^Jt^6u;?r^=_p#&yMN7U#4~kSWgfe)z53ro~IjEBBYy3?b%- zdnROyT&_tDcSdHuH$jeDYuD~w?Yn3cue$*#uD3r!^gac>1^^cE;6d<5u>b4pgvFH6 zrF)Fuij+k}zyJPpAN1mTD~wvrq(BvVKyMsa+p4>0Ma=Zx#s1+sC96Izl~k06Pr*c^ z>+`?tdW+h0&J6T%ZvpY3QpV29-OUZb+)DJ7T`xtgfXUn-s%oK6iSyf`Jyd=EHQbzQ z$sYaGEKUiJ0&0xD7`F7&J&}IuybG&&q35ggK|B0Q-aSvT*D*RkCtK&Z2z6TLuKaAD z=IHI=su-NUBIcya?8zFgoF8UpJB}#lQKg^@Ck%;aQPz%O!=uhXj#kbO;Oc0MBR#X}cxJ2dkm#{}Cd9T`C~`&)2n;`f z4Nxrd`n2_%R~xVY9(BC;^bsR^mCQ2imCbU2INN{hnPamT+zcX~vrQ`=l~hv+M|NmM zJ=e|Zn-9YnF>Eij5**UtU)xoPj~$zZ4}|1Ua=F`*JchM~UTqJ{2=J$HmY{D#&9(HR z$LH%3Y+6IxLc}V!M8QE)?^LYIpIbf614hQVze$>xbt_wpd2qx^dLa5OY4Zh0r$kv{ z|Br@%?=sZ+ZyYbSTB3tamX(vv>4tm<6iMrElf|5dSD4?f<@%j&tvWo|eK+Zt;K)af z95=$aiA$A}(>Hm)Yc#5mXy?9zk+jR^!-Qc9my&mp&JU{RO+!S&PX zmb(Z)32)y9`S)j_u_%F_6+{Gk<%^Q3S7545jcO83#UwjNKxxl)ZaKCQk8+A52uaw` z$AXS#p6{RcFd8%XV7#T4lKfzFcwm05ubNi~d^fHGo4H9L6X_6=Q5kL%(}AAprBr5> zb-G5T;z$jh5@kmUQE)jFM5dee%6a6^NL$XfYM=<)yUN1Uum1%1$I{qL!9BfhL%IE- zH;ok!w*+!=r5nNEV9Iam=d!c5NBK4(YC;FI^4|P1$@)Wifuy)8Q3W7KZVKYVNZ;I z%eqhi(fi|+y!;iUbf-ix-Zx1Q#M6CtZn3I6b+GMVSrqW|^OG-c>NIfqmY8jS=jSVh zlfk}$nF)MxfcTBU0eS?HH7$*7r+mDn3D3NEsZxpSO)n-l^Lh<7-O#h)(#4{$L-vy ztJ^OjBqr9T)k~|npe28O=rJ;wVlo%mZO+*m9y^>Ju7Hm-4zIEc20{&GVXp`Tg3a~o z*F}R1LydXKZouC1i*Q9nF9p5S_V#uhcXjq@NnW1uD2$&vaa( zU>mXZIfdqM_wMw$Ig2HlC|)6`EcdJ`u7{+rwxb!*9Pf0RH8VrAx|LDEW?vCadOQn1 zN5a>=d-pPGwYO<&db--X@InK{zX5|`%blS6DCds;g_xY2+~7>vP)VEE?DLmmHYcf5 ze0=*l%f;d$Et+a%#IiMNGf4N`N7^_32? zC*skoDYa$sL8_^Ts`L?zjbX4%rL0ZDa(IDoq2S!K6oMgRZq0*86R}G~hzi{ea>~0p zMYf6X!uFIODrw&QXnB~%7i_?gWP*~l7uAklF+8SE;9GZH6)9(~in}&_a{RCHt>xyP Z;Qg08rUvx5kb?meU~FW9E;YCl_iyph=;Z(a diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index d55a909d307c8a69919e0b47fd3f997b8839ff25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3677 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 o{?)XketQiHpfZr$Xm;UgMUN;t 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 VqI$U;4>lM?`GNZVl6&R>{|7!K;bQ;* literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/drawable/ic_launcher_1_foreground.xml b/core/base/src/main/res/drawable/ic_launcher_1_foreground.xml new file mode 100644 index 00000000..49768b8d --- /dev/null +++ b/core/base/src/main/res/drawable/ic_launcher_1_foreground.xml @@ -0,0 +1,45 @@ + + + + + + + + + + diff --git a/core/base/src/main/res/drawable/ic_launcher_2_foreground.xml b/core/base/src/main/res/drawable/ic_launcher_2_foreground.xml new file mode 100644 index 00000000..8e7f2b97 --- /dev/null +++ b/core/base/src/main/res/drawable/ic_launcher_2_foreground.xml @@ -0,0 +1,33 @@ + + + + + + + diff --git a/core/base/src/main/res/drawable/ic_launcher_3_foreground.xml b/core/base/src/main/res/drawable/ic_launcher_3_foreground.xml new file mode 100644 index 00000000..a85ec69f --- /dev/null +++ b/core/base/src/main/res/drawable/ic_launcher_3_foreground.xml @@ -0,0 +1,45 @@ + + + + + + + + + + diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_green.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_green.xml new file mode 100644 index 00000000..7ab49ade --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_green.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_orange.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_orange.xml new file mode 100644 index 00000000..9dbdd14d --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_orange.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_red.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_red.xml new file mode 100644 index 00000000..f368821a --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_1_red.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_green.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_green.xml new file mode 100644 index 00000000..65cea040 --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_green.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_orange.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_orange.xml new file mode 100644 index 00000000..96547697 --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_orange.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_red.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_red.xml new file mode 100644 index 00000000..6ed087c9 --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_2_red.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_green.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_green.xml new file mode 100644 index 00000000..d56b3738 --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_green.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_orange.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_orange.xml new file mode 100644 index 00000000..b42d62bc --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_orange.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_red.xml b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_red.xml new file mode 100644 index 00000000..866e20de --- /dev/null +++ b/core/base/src/main/res/mipmap-anydpi-v26/ic_launcher_3_red.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/core/base/src/main/res/mipmap-hdpi/ic_launcher_1_green.png b/core/base/src/main/res/mipmap-hdpi/ic_launcher_1_green.png new file mode 100644 index 0000000000000000000000000000000000000000..2a2737fd2376d8129a5656a1be99f98fb6882ec0 GIT binary patch literal 1662 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 B?*;$> literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-hdpi/ic_launcher_1_red.png b/core/base/src/main/res/mipmap-hdpi/ic_launcher_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9697a2f8d51b440671df4fb4d586ae2975417e GIT binary patch literal 1810 zcmV+t2krQYP)=6l_$aB1Zugupn(|DYpo62yzrK735GTwh9!n zmQY)S05%k%T!LEBB9|Z`#nSH8?so6)k)QAPw!7KRo9gfs>f?uNB78C^-z6NSB zs4?<1dnAFHZpu?m5sB2Cpyni;#PC=XH+6)^9D)CYm?1sLULE@$oRTGv^VS?tG*^zg zC7+TLsRp5@n%Jpuw)?m(sI@HyJ@8L#%64}$<^*DgXu1S-C49JWrdgwi0* z*iXQrGlIRY9(2pT1#M=oFthW(eC!V@+*EXu$>T=-%5t#Rs6D1yD{p|Z|7@mSP=wN; zhRkiGXE?$9VBezM>M|-QS{CN^TG2>&(p6jg}O)6nfd_}QiG=FQV}@E@XPq9 zhpnJ>o2qUxWp(kXpq={_ILuaXn5?uO_DmeQcC`*PBeK~xff5M@sa{+Jwi~tJwA#Rs zUq+SuGhP2wB#(S=*uho%M7J!juO~I2xoGxrQ#wiYGFd zvinZh8I+Jt_D+9-(`KjFK1})jChQC%E1Tua6*|#s#;jw@c_{kMq}Nk8kvHOmF2t(6 zP(NV4KkIUrS)`+3YaoJ#=;Y{E}F_O^GT=;!cC@jRvxHcTI~8xz#v@B z@b)bKc7^%yue4r6`c@_{AHx@iXkGofVy4U|p*E;KWfQ$MirWZ$WFusdZs9IE&zQ@8 zZ_&107^E7s0BqN4=v>l>Kb~ihYRD3>{i~)1=@#v7(Y9R}gfwL4g2U28CsOt6D?J9) zzm?;8Qei%NfmwmtjX{cD)4^1Hh6=EpxlD$e%OK;r0Gzy zJ7`ZrF^)!)Yv^U~6?}}`t_(s0v>)uGhM*8PmWsbX*A%q&4`w7Q(xY_}t6-+jY>+`jWV^(_Bs_`aUz6JU$6GgYeOf ze$xT^5K#H_T(+DCnq(k7$@IfHy5b38DmhCwtVN(`WvKcj>*WupsFYnu$ZD)k`Ya2s@~$HdK%{z6?@w~_g%wM_;ck&T+{ zPFBl5frvpZ_)6wY`DDoJl9+{BE4hr0d>>kk<`-NaBy_KgdHVu(MNCM0QUrinP}4El zs4AjSj#`6ysTX4(Hy#b@{A#C!Ar-RZs_XI;z%Gf2#SCh=L9`r|jk=iFDLxT3uH=RW zKD@kRD3{QQ9AXFq)^r)Xv?zL5;r{5Pl9K4*#rva2eD6(3bW)4I`JV%=^MB;TV=4X3 zNhPQOwV)={Hi(ly)KYbD5jBvDd6*n!gr0;xguWsNHK3Mm{kU$AaKR2Op%}<<9Z7HM zOw8&^l17Ue)Zo&>1wJVU5$JX#AcYiCNFj>&4^Yjii*<_PBme*a07*qoM6N<$f&lb* A!2kdN literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-hdpi/ic_launcher_2_green.png b/core/base/src/main/res/mipmap-hdpi/ic_launcher_2_green.png new file mode 100644 index 0000000000000000000000000000000000000000..342ebf2488f148239466319e25bba2c947a9a0f5 GIT binary patch literal 1478 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-hdpi/ic_launcher_3_red.png b/core/base/src/main/res/mipmap-hdpi/ic_launcher_3_red.png new file mode 100644 index 0000000000000000000000000000000000000000..e07823f33d5f58d7cbe44f21f3b2d85e79822b82 GIT binary patch literal 1693 zcmV;O24eY%P)`T)Q=XTNYfy}wuwg5qTxdtfeIqfYp=a)@7n8qHRC*U-E(ht_jd2Z9CPlQJh{D@ zxq0V#?wxmbX741)GRrKp%rdc!NKy`wniggkq#T}ST1Gotz?Wr<{cCQ@4#rBJC?6}T z-!@uOzkRf*?p^x&o=}L5c{@0Oix$U}O#a{%M?)U%^m|uvJpo3F>x2j6LOK2JcqC8B z)wC(+r>m&0mkHynk7N_TY1moaPbo5SQp!n4VtBn&Tw4(rN8_6i88m_-e-=GX`t4O~ zm7Go4eB+$+&d1)$R)N6jQc*4Wp=Prx-jft-&v%blqlh>m%I`Wz4L1=q9$I_+HFB6p^8AUfm- zDtO>iaJ2;DVF_daOCSSS0vRBa0=bqxL%f??iEr1p$+6=b;;G$9TsJkS`=Dj0LmSoS zIKUTt@_i&lrUb%31Kk5;E)*tnb907>`UAwj`w$r^RcwUmHOf%Ox7P&q6*x3NT(@jc zjYk)m63Dx`O;eokMK_u0=p#{&PgNJ0@DcZ#SL1!S?|n_PT~Y+Y#Jj0QH6C4LN+3TC zdDY;<5i+@TAFH4FyiZ*pi4t#PTfC3S7u(5PG^%cA0RIOERpZgcH6;+f-KX}j`svog z>UxUFE&Jkq;F_;D1Ni30ql;@oAR0Lk2f4)4usc@Y+{4NkB9VAoU4hU>Zm$LS5K$oH z984=j4#XL~y^+mG;NZ_BIvdgz2z6*9x7PxE$Sa;u z0wuso(*M8`$N<&*4p&yB2xk}(9I_HQ`j;fpXdQoNf|jjP=_}B=Mq4Dz*oX%*9hX&iQ$PSO)sB}v1l5J_5ZnNNoQ)iSTVQ49_J z#r8{)QEvj7(CLe0y8Q@=Tpo{=nY>X9|KTFu7urbh$01c6AjFNLa;xFp*vxVRzS+q5 zR7{+c7l^y;W!4rV$!(EOGtp9^$-b>#DDu*0%i4qnT*h>3uNrB*tC*?=_co-WCCGI`QF)2 zJUF)1fv`ueOdLf*hDeAcHr-0*6Srb@(-Me*CgUg${(&<0l>XEU z`%-!c0xiBLw{&H%z3TWGXEi}cqGOQ(4reKs!}iJ(Ww|9~;MgRsGC#ePwn{3^r7sSO z+g@LC=hhC}>dy|?%DcL3YrZ;QtLRjs%T}In&A&I>=D+9@ulw1U%e%ka#l!=8|bT@;%17a6w3q$IDkw3aw-2tDb=Z^Wh*3U5sjwBRIEJOsZC^nLyU`L nJ}IYQP&*r7nPrw)CWQSBK@q${sp3C200000NkvXXu0mjfN+TzB literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-mdpi/ic_launcher_1_green.png b/core/base/src/main/res/mipmap-mdpi/ic_launcher_1_green.png new file mode 100644 index 0000000000000000000000000000000000000000..6d28a7d552f629e293ba527472e17a2a941ef449 GIT binary patch literal 1274 zcmV)94P?|&17FG- zM5K3t5h29Dqzo#Bu=gnFRYS~VPyuH$bBy`*{GPp&-F@yX{@A;1y5G!acJKE*zuoWm zcAwpSb`=U=$T^ae{S-yIbV#+l37|__{!vt&eULx%#_XZq; zg*a7_f__?PH(%A*%)=U+$xD!ZqXzP4s;#E;swEM@e67O35l>>mBN0=AZ014EIc|jg zH#`f`Knw(>Mh}f&tdHbt6^0|Jde9K2Niz>zFJ?CAX?Oy3P^!r&Q@>k+tP-d%U| zwF<*$Kq@3OFfn}^OwOJGq1iJ9U{04A$MkoiwNGVo?vcoVK4%uxbi55G`+A`F!mk2) z`p>|z?>~X$U8zjn6jE2*xEqqTtzg<*BY}Zn+f*oNDubpk--p>7m%#M(3kA$5S_B*F zpNFqbcM0mka%V%sXU#A?JPhXs`(g3UmCUwTBrt%dPVI>%$gSGQv^j~&Pk_sR{&D?x zSneDm{#~d$aTq##zoW|^eme;d>|Djv3X#x2PSpmc&57}ud*I5|D|9_1BNh&RdIS!1 zG}1htUXPb&!|GS_sfqc;%b5BRWMDvRw?O{>Ei{L}(ZGtbOtKvdEZ?0D_mwPX>PL`) z0WnSk;=F5o2E-fW4AhYGIdA`Frp-xQ;X)YveTc~;A9Q~V%SzLkylW&dfS1wDhhBuw zPjy1Z8-2pPC8JHI~wQ!F!z_3TXbi z7521L!W?ps5Z8?!i41rS85l6FO{7PwqNR#qFClAR5gk|JIt~vRh%HEh#H}ez9_je$ z3#dF^Psfdz?T7ck&*XXPv9c_tj>AI+^2m+q&11DpKH}+kI6Ke>kz^@uL-2x7dh~VJ z@lH9@#^E6Y&mJg-sf z$pnROz`SlAtSrx=>#{ardu<(gH139kEe}IMZ3#6ntzZGPe0!YS2lmlEvNnLMuiH*d zRJPSq;jLZmP|;cqld`7Mb~My;{>%*x>_P)aDwsTn#0HSUx@~mwa_z5c^twJNlM|2N z^?m5_CGzZJcX_SHt5i!@8|2q)W!gAAU;x19JhldQ{qy;A^;yi+b+|}C)Cm|W`-(YymfOPyH4g9BH?kbmt8Dx6|l0u{S zT7}{GXfS?({!UF=%mplx)d!9zqc4t|r3$On4vlYBMNP z3~v!_V;vgZ1lQ>2uer^rd?>s@y((%T$QpGi$QnJwEj4H4nO3t4#d;P@5Tl& zxDI0plgH@BB?K5%ivkQh^b*707uh$_kce8SrhgRg4D4uB_>;9j!tGurkZSqY;`xDt k#cH|LtGFGozK}=!4bY)3^$fl7C;$Ke07*qoM6N<$g7Fq+zyJUM literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-mdpi/ic_launcher_1_orange.png b/core/base/src/main/res/mipmap-mdpi/ic_launcher_1_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6ecae6911baf5eda0c6342ff51f0789aab003c GIT binary patch literal 1156 zcmV-~1bh35P)H+G6bP+^eqT zdKKMr^Zmxv-NolB2Dzx^E73~byVva@yYBIH&iw9=X685B<{vY6q6J!U&OC1}j-wmktf+i=|~L3}OQ} zq^RA3R&KGqJTutaW(~44TT0+&?R*&G)anYk;-zg|1S9U2L9=Z@t;ElVNhY#^zNy(aVf8q( z&xe2v@ZLMVnD9b1;f4ajb@^`A4<|hQ9^r2d?z)P8ggtsB`>Gf?pF!-PgW+r9c$L7iG~5WXlv)FoctC8J140lx$|YhO;4NkX`*4k zi#FiR`;ax@U7?MA5myo(nr-%J62l1ZG?{tf=Y51bUNZAO1Yw?zqQ3Q1^mM+udB;N_e_N-6Onp_epRDLLwRl z#Q&hBpxUHW{jB^uGbNsSw(oX*yO~=gh_s$+VzTAXN74% zW~3kDX8x;zge_OO9c1>|@Pu$`i85mJg=wH}9?v`#W?qg=>L0;w-pU&2 z#K3pY5pEn!_G#cWQ28)Fti7g|BW+;+6!mCa^%P+fz7Kq%#zfkHP`^N# zXyjSu%5G+lnjTm5RQ+p*syDQMGjLK2d}8LUFboLw@9=}$pM>pq)x5673o^goX;#lZ zesjIdQewPzuGwdWWk9Hzsor({Ugi(Z;un`j^WE9zBH`s7e1ry=byk=L(VF~eRcfCg%dO60b$2wr4B;mLKszOVN^BtR*I0pIWcY zhH&5LLCTwC2m`EY(^z}4v7XZzIh)St%%-RZ;srg4JxWFbK&StJB!W$6P>jr)#f`+; zHE98a$cuXQ7A@UowW=XMq>qB@jdo`7gz4^0m6?;tzobmX3Tr+=ipHAyQ0LnZA zn{FP}~Bf4Y`f@DHzn(0L1Z>ON!oq$Ddqg!e$8{VaIa?F7%79SM2g_!7dG z?cm#al*t*~dJv+~D1}Ct)c#b-3V=pjRa=>MTd@I#zBo?Lg1FteU;{+@y%3EILo^(L zp}i-;HsQ}NCHVoCZDHC`zR%ks(AJgspPRk{f*t1}_`^8}_u3$E>?aE2GD#c&krV?k zu%Q_uHWxT6-+|ECOEBLf?02nX@&zddAb6?=yl;I4_Ip-Q056%ueA!wE zbzcUTeiM@~NPd9odZrzh*P%Tpz<*?94&a34rc~3TEdby+gy8OYp4~=VvI0b`PI^rb z)*qs)OG4XP=qfYV*uvx_0Z42!Rk8xOjGH0w-Omu}G&Az=>yTU~6$S85#FZ{5H$OAD zU-*dWlTzjYN|u5B?p18Ngm6j4@u}@n${2ui$-59bcLn$dRx^G7Mi~Qe88(yhfs_Yj zwM?J=zL#LA=_I{$QWYSJfP2M{o7zWn9HINv9&5IFi{tc*_CM*qAw>HUPiU;5IM6~I}s9>V56a6DNz z0zgV=&#SxWQpruN83AbRB4Aa_HXO6-VgNJOGJPmn0k~<)A=Gsd{D)72d*wC?fcFM0 zr3V`hCB`Wh0Oee?5hBh3@V9hAq_3Yo;Na26nnxI;XaJONM;kLd)xR$<`+>Zcl z2p};B=DZ#Qc!<4gqcQ?OE6g4XHR9Xd&a5bd4d2kZ$-BM@+~kQ(kf-)j@E_+T+nF3e83Vv0NSDdt zG%tlo=^*v?0^e$+&Cz8NKqmcP0sg};cMquNPF3m|c)wuQono&^A$&Aw9AB=nXrJxJ zB&B@duoEvmno4KwO*2Z+<1tk^3xEN!&o_A;>IHi&T0LMQg5Ym9B1T3xNYGRHeD(&v8UIW?AFV%U?Dx4xB8f kRi^8+sk9SzG!znl06-M4XNsqP6#xJL07*qoM6N<$g6>9bcK`qY literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-mdpi/ic_launcher_2_green.png b/core/base/src/main/res/mipmap-mdpi/ic_launcher_2_green.png new file mode 100644 index 0000000000000000000000000000000000000000..07cfdad15f9a13571763516c17c7d374fe20a265 GIT binary patch literal 1081 zcmV-91jhS`P)vQ_YN(Ed-U}MiH$Rtr|VFM@6Nj>Zgs=RbF}JBz6g-Z_##eB67^|DAKb@65T&nJbYD1j~`0 z?jgxb8sb)~2!1O9pyD7Ghe^4T@8i#ITi zET093S2^)IfIQ|57=Jaxiqkm|vNfSwAP@OW8NmCxx!p|9y94r&&zynYf;j^%W)tM! zJOo=W6_N*4J3RmN8q$i_&?A0Uk9p)VX~59j083A9fb?VQpqb46m8vp`%T>emXZL6s>oJc!CJk5!-c-M*%LL1K zuYdTuk}RcWTE=?JBacY~bw&eyjYue51dS#moU6PFW3yFo{>cqm#(K;nk0}HAUf(g} zn=a&m_S_D-Kd5+L1u5hW6pvWO`Yjg=$a3Ouqs;6F`u&dV@1D4($6#ttjOf?@O7t!M zM+5!(&s}L+NEoxffI28rsMS7f9}Py&4j#v8V+`1csSg}$qUwF(1B0m6Bv%G7_|G@P zWLXi{$T9-ng!>_1uLNmk*iE8sxJ_dh!6!XDxe*F!MrfIQRb+#&CerAuiE84HVuBwN zHAvG#Z+ptUart=s+W-bn7)~&LSfEd;mqIqzD@=gkK8A2CGB(jL9kozR-HPuBBq}7H zOpAI6lpZ27dWfi~UV>iA>@~U};X}O?RAPmztI>s$E>?D> z8<9|yNCioxc0=r;#LIfgEOr0>=G*bm*|Te_foDhZhmYBr|C^cbn{(z|_7Dw+!679S zBl~GoRG~CDbwv!-aU|euk5&vwkDVxaG+7F1x_BrdD!|-ILpW_=!y>4Tbp)fVElLkJ1!npaGry1=OWV_UA_j zfw`3iEM|KyH9pxv)9hM<0y`dMRW{A;@lZ>^fF2}dHQWR=1PmOf)*IU?*{(Gxtj4E1 zX^t}BvpPEmbQ^X97q(G~U29M{3>bL?&TXancCA4%Y+#V!o`IqH- zF3uIMdm!9a+kb$Me$KHRaL2%>>%zPUmma@@QpJt zP#9;Rt6linZsD>_b))(z{Iy*8)-qk9j&|h1GtxlE7k#J2P3uRq@atTiuRNjaXh$AA zBMta_gzGExinCvD)Q?wH*{17gM;<&Q4Rki?>;9dU>NNQ#{Nal5h1t499qq`2XQqKh z;k&DZZ>Q_kuRf#izBR?Vj&|h1GtvM~lZIFNG(jDrYj5ikb+jW7o{h;6hrDU~f zeZp@%>MFmpvRE#I0-t2f)Rc#vV63v;K>qjYG2rikLL0C8gqjZr`26edI&anRCl@%F%G ld6`M0qlrE@>~I(ozX4;E7WeWSrThQ@002ovPDHLkV1k~x-UI*u literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-mdpi/ic_launcher_2_red.png b/core/base/src/main/res/mipmap-mdpi/ic_launcher_2_red.png new file mode 100644 index 0000000000000000000000000000000000000000..aa27c24acee7ceec2c3427153cdb47ae75996ecf GIT binary patch literal 1071 zcmV+~1kn45P)-s;RaDeMYnnu@CsrRs!~?~8fG8eFt$0;UYm0*Dg9j>tK6rs5h(*NP2VbgI zJP{QS1Q8E>C<_;jcs$-^pr3jyH8e5M z`qNEPq=kaVZjyV^p|l7dzeQ3@l=oAQrG_R3V)Y(st+SD9#_o1G8LqkPaT$?#J#o$4 z!}xaIPt8+9I|H>1qfq4oe)W+94}4(_I3{f;UwI`tCU0j3 zj*@%9L25j8hg`Gv^1Sc{AUbsUDfzaZ<3{Ww%g8xp=O4bH25jV%=Rkfrc~+fh$CCjb z_(BQ)1LK(oiE;X~I5qBdEzyn`616_r12BdH^1&>rwVBdB2L)A*r zkKf6=<|HpsM?3Q1327ka@bk4E?>Le_M4?Mhcs_jf8Ly)qdGLfZ5SJus`BX7|5s5w_Mxo_^xuQAa!S;0b9U<_hqa zH~0L5Bn840zW$u-qqb1^#!FsDJM!QOWdQH>@)h^*zC!*T7x@05`Be>Hbx@*?_Q2k2 ziAl})!t4jS{fDDn9w>#cEhRlV6t=m;Yy^?-bC zXnB&eqMB*z*QPObv?Vj9W#$$<&Ru@@bKZJit+^!l&AcIiQcK9^{K7Om%w2kKYGw`| zAAGm&*Z`u9(2rr%oUFVBYX^>5R@7e~;M}vbj0>R!n$n7w1H@uOK_)vKz%WQ>41ktS pi&q9F%LhY6Up>*`gzX7I;x|-1DO?<&)sg@J002ovPDHLkV1gu{`|$t( literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-mdpi/ic_launcher_3_green.png b/core/base/src/main/res/mipmap-mdpi/ic_launcher_3_green.png new file mode 100644 index 0000000000000000000000000000000000000000..c564b0ff9e3968ddfa3c60c9125e6eba1088a0a1 GIT binary patch literal 1221 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 RX%GMa002ovPDHLkV1gi)JLdoZ literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_green.png b/core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_green.png new file mode 100644 index 0000000000000000000000000000000000000000..837bd9f220ae042cff8ed1861bf26291487d9def GIT binary patch literal 2363 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_orange.png b/core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..477861cfb5611d03688b57ff0b228a1db2639ab9 GIT binary patch literal 2141 zcmV-j2%`6iP)r4{A13;TL?Z+V8az=-3zj77Z(>7SMrn`Lk(pCr7#MWg*Bi5t<0TTpZ9v5mt2(T)U%Is=^{Ce(q%SX zt(F;{ME~#U$Rb!qu9j(6&Y+euhsG*4$tiS1Ez1>U#?njZ|5<0SNg@-KO<-28m1$M& zq?@8xA#10Q6wFzWhoZRRL+TNjS( z_@tQ>IjQzO5{TpxFuS7^zl@h+&oU_v{h-(wo|12*_+y3?Ut~##n;cM z@s|`rM2D|RilXVx-wo4SOL1_$-uA$kT84EUmq>g8Q=3R}^U)Kc^U%XTBOI;Ia1I6b6nlGjp-tsm+z zv9z{_V%0->zQ25+z0E}uUjV-BYsPZAAg!uGietY?vEn{^zX?Ec2rwz=DaGoCrC9g8 z;)U?wl;W~G^%*W}UkO5T3Ag}Z0da-};L?>(yX*4+PMP0LUmj!aD+;_TAg7@eYqIot z08DXD|LYvAe{{3@V87qqZ-jVPK;eCQR)r}lW=W;rIS1?4R7r8BOrIaH_8kGqF95G( z%y#yEF2#&C_V!R5{#l2({v~~U-+EPDeaz~hz9GM+r@Gj0q!)b!ko*FsHPIp9;;YZ@ zu(t;T)6z5LQk3tLV$K!zb|=hC(*i0F>CX{syF-NP0qGa_$h6McL ziM_{Z1vp#fY%jvrQp`hgt|KllY~)hGR}?M^TSU|*gS05BY#{9F1jEl2qNFtAjA z?^<~7Ga?umws2S(+vjK6+nq2sL+=wq9cE|Nc84Ud0I>1_eQe$w3c&6q&VEa_ce!4F zN4`GEfuOWAiX(%a*QgVt$o1SGcrP$21L47XhrU&y#)&h zOW-@;jM*aYa?Z=~FoNol7)qV0SO zllnn6$f$TM?dX+G9g$tZ@E8Q3a-Z|xq^w2JSjw)+_TQ?h+Q&EXv7xf5MK&isAi3g2 znu*Me>|!gUlV-!NqrUqm(EjSlT7t-?8ocFdCVLxXfZJFh6J)dbH7Xg{)Bge7e9UmV z*qUcF)nIsc{~dukzA}iiipEe$+56f$#ydve#I0Pt@;8m9(oqBGF=REQ3pGb}mMo*L z)N49W8@0?F&^2}7;t`auOz+w^p2|wzqLYeBW9cRQ|MOqtsT^4>c$Vhfo|!rb8D+Nf z-^k6KJLwq(la0Exp$=-9sp#3ERq8Fn`lbwfs(;EOPu!A{X#l^+Nbz#(hRWixl TMu@5700000NkvXXu0mjfdM^pU literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_red.png b/core/base/src/main/res/mipmap-xhdpi/ic_launcher_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..550a7031ed094c3b23c000b1d53c1ce9634ebe4d GIT binary patch literal 2503 zcmV;&2{`tNP)Q0B%(u;HvsEkX3!e`dqXS3Kj2HdR!7+h|`xx zwkIt7o>g5}V${}_8A|JhD-pbQ)Bv@JrID;5xZ6H#!4HgD-Qz}WU8Av7XCm7Uf<64H zB=~El8W1grCa6ucR>v6JKGk;99W*LXz=J^s`pqT&-^#PHb4sdR{RZM)P76! z37pp~fWxXgpN-Zo?GTz*JIZhA*QV7SL5GPEp%{fT2!b|E>bYMoE*hO5tzlXrIC!wQ zYBc8UvT@SrwWOB^eiXMMSFT4l6`X+=2kW!sBy8$;@Ur%;HvUCeaVheb-e-6GwXTbMGOG3PRkAm~nU0}X(MQTP2(?Q2`A3>ni z4E8^~ky_dm$r%GseBa?S&>0FrXJ=TEsvBFa=5{C{c_1Ua*;Cz zxHf;%C8*5_!Sm+iv{|7u5Tt1WEqX9s^IJ*2Vhkhh1Mi-uZU(wPJV5p@l$+_<{KV^!2gW=uY@#%Ex&$Bl2;c)j0x3Ik04bKj^kKnrO<3- z2E+!(Yi#u|f%BD};MsW?yt}_hi2EO(f@9@dsSlzt1F{S;Kh%y+hsi&0qw*6}#XiSqy+(sWJ8u10We+ynLpH_&A= z;=Iy9(FT~OuLR%0Q;{L&9z)Le?mGsiNh$U(VxU|D$i2d|vyrZrKtY2hyL2cc7UVo( zlHUE%XVQFAM6m|oU>(kEVH)qhkAV4?tH3;MMRIQY6Zk$mLDPkNelS!llH{EViZ#GG z|2aAfhG{yU{XlX&5gpI}Gg6*u>LZflsgPR+5OHxR8Yju4_s25;w{h;4&hv`$!hS=@ z%Ma`^1A2(_Z@cJ_wC~VqFkZ7PvOk^y&UIVq`8XOX?$I&>(g2%)^rlI`&X=$>B$ffz z*=rzZ?V$T`GDrNYVFsiDUM#M9#tRRc9ds@i_lpfMjH>6Gm*j60+5U)hDv}wHCidlT zMuhVnI6;Ss#RfRmydRkf!_E_ZQbv>yGayZHDG4?ksQ^S|$5ZchGr&TciL|Xwwu7x^ zu-y8%BoBlckO9~h4}=%bV&}+zq$MH<_E3e+m1FgmxJw9`0hv&$Bj5aY`5^=pTl_!; z8u95@qKNJuNezl%$EqR~!^H5*^2IutP`Fkt!@`u+axGk|EsS5#Rn}l6+Gow++zZ+RkNkwVWVID$B+#Ggila zCM+4alwFR;S99I~d|G7!;Tz!`i{PzgtJW2Wt=p6>+FwB4~!wkqW%z!Mz49GIf zfGood$TG};EW-@QGF=ADbINMK+eJ5xX9grE`WNtI;lxR(oh$}yD4bSFGPeqahzn-$ z2nHN2nQL1)@TU_{y9^DWuixnV^ZX%2XEh7HVy`es3~GZKHK?jijq5*1joNL=!~l#} zxC!`@vVjdlXT5kqTLZ-5K%2IPy~Ibv1x*coiBC((-LSdn=8dRXSi8(3oJszS0cF=V zs^*+))$k_ZtDEpAcR{0UXq8N~Kuu7aJws=;jfZB<)Ogk>G;0gwl&+@5x z+UXkxPk-m*Av2o~tE=rzsyXf^)m#_a_F-?({lp5|uMsGQ5k7rDvv zCcSW=ll?|=gH`0SoG@0^zhKI*^2=sbUs*AyYG6gR62WUn4Tu&~Q4`cAtWm$PX0ish zh^`pU2gi*dj3VIsvXl&JFak9}ZOHZ&9Iw?y33L^2%6V$8V9+owZ%8ROV5o*0 zpi&}u?Wh52ftrN1k^P$=E3go3-(o$7g(?};0JXRz!n0t(f&~i}ELil8_&;?TW&{Eh RXk7pR002ovPDHLkV1gCJtmgm# literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xhdpi/ic_launcher_2_green.png b/core/base/src/main/res/mipmap-xhdpi/ic_launcher_2_green.png new file mode 100644 index 0000000000000000000000000000000000000000..c898a7a21e4663f065ea623ad692db8a30e93539 GIT binary patch literal 2269 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xhdpi/ic_launcher_2_red.png b/core/base/src/main/res/mipmap-xhdpi/ic_launcher_2_red.png new file mode 100644 index 0000000000000000000000000000000000000000..292071f41a103f42e7e361c7cf7145ec7bdd7f80 GIT binary patch literal 2263 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_1_orange.png b/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_1_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..41c4b5605e1f7ded44145572131a3ffbb408fac0 GIT binary patch literal 3458 zcma)9XHXMNw}u!>=p7NINfD{iyP+va2PJ?aEfj@NlujTd6h&GBA_7uG6p_%I^dcox zK}0|$gkFMl2t6OKGvA;0-aB*8%QO|Ha9}qJ8D2AM4EKk=?-C3$ z?&I-vwczcX`SSUX1+mY8C+ir>N*i=vcS_HY$#e*3wQISg|&Ds$%9JJt?UCc}(#u@V>a`%#gy%$^?_UW>DoHu-cO- zVdsQ_l6}H-#)RyPsTYzrc!HlYVX<=>F}=NB7LT(&{m^L9X4|47uXu{eRjlyU8oSvl zG)flKpcThNuKPes=D~qB@p6){!_O-*_TVRLk0;i7rCke!M$MI6_SdS8m;z%jx3Myy ziql$xBK4Y7W639t-4&mSsyE4(ALv7{WkB*S$wd~BLqqlhX)v`tIvY@6k|AJOGt{d5lDjRayh zT?;&#&>sQkp9gmf0!HAE`&|QOn(0Pd!u0Fc{R}nXf21wTu{2X)kFiVe{xN+8gIEgAY!3 z1C4zAwOlre&q$*w=AL{cH+lqKt^e?FbP%=iVEF`IZ3l}etT7mMP?=8$CmSMLCjJ1; zLsD83L9g%xcsEV)$wpXvsoH++?v%c^fghXKRM&siyf2gMSQtVvDQm>t4JO^&q-q3Cs9>rva z92IM7H-?Y(pkxj(Rq12q4)W?BFdkmZoyx5=QSIPczg0A8$nrGwwg4jk zsfz3!HreN-_`5L1vEG$s6n_~x%K4{;Q&E8CVJ?8ww^?fv6b1r5yzH+Trl1a#=xKn7 z&z#SHBilv-m)~lZkAUXuEfKuz*n^TCo?lBx(>@HJO>pa;({$ux)>H?;j3o{5F%63N zu26|oH|lgty`5C*t97A}y9svbf;XT|gimFTuS#7G903BpI_m&&j}JG=8xHAl7o}#I zWxv;!XwMUJ^XLjS`@yaJAQ=Q9KzCfOzu+t8#2^_48tnR;7!!TGrwb@MMT$N_oa7T3E z%#ajHG-Y@plGj5>)ic(43 zVKQ%-z#Id1Xcs}I?#26}T zfuq>gL}`{2#8(wS$x&)+qV{<x{)CyFruf-8c_YZj0ubbn-|yC` zbQ{SUYl!Jz+@JzT1Eo>@ zl%&9!eP~dYF<@rxh&MOO8$)43-$2n~p;$hV1=ZOU_agX4wZdtm z0CM0S90)*rn1{!ei*|JUlwir3tvLFckKY>zd!^Vk`9v3xQ5*~cVl!~fs$cMv#2}SQ zLRNq;r&G3uVU3t_)zi$gZ;=~THB=oCpV?zVGt4-$-;D^ow1Jow5H{DuDq_N%5(hb? zZ+7MS2{xTBz0{E44T_mf)qDUE?&Dcs!JjEL7>ip^k3LT3uX%)2Z)G=CD4{HDTrbj{P9iS3#cDBwmzxKuT_SM4SF zozF;x^$qo|#F!m~05_qKxV5G{W)kx(P;IU=Q|hDG$oY+#(Kc=|yW;8{QtmhuFqq1u z0qE8O@CgSG^?ItgReHUxp=cP}1SBWwKZT5Tzt43Zz$3y-I=KLkAZ;iKSu{@`1^&>Q-zfZZ&u$+tyW)8JL?S`AVYu`8jZycps&a=gzs1MON|(& zSc%x!&L)#yM&UhrWY#w}OuJTFmUOw)7}vitZyta_E4ZJF}JW~TGt{BK2JsBfxQs^f_I50ccW A3;+NC literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_1_red.png b/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7066c61c1567f25ba76f860913b3fd605489a3 GIT binary patch literal 3760 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 ALI3~& literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_green.png b/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_green.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca55d7d7d994732cc20bf922ad2efa039b0a955 GIT binary patch literal 3555 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_orange.png b/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..126b3e38e2dfe5368399ea9c27357a972033e96b GIT binary patch literal 3371 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 bpD}U;rahI|Yj{pO1ksroT-UGDMaKObS<71H literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_red.png b/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_2_red.png new file mode 100644 index 0000000000000000000000000000000000000000..772ee9871e8cfab198388a653a8548916ac87004 GIT binary patch literal 3582 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_3_orange.png b/core/base/src/main/res/mipmap-xxhdpi/ic_launcher_3_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..2025c39cdd33d5b13ef203616f7ab0a34e5bb7d0 GIT binary patch literal 3563 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 CMZRSK literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_green.png b/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_green.png new file mode 100644 index 0000000000000000000000000000000000000000..53c54fa7221b5520c4286504772af34b871a21e0 GIT binary patch literal 4939 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_orange.png b/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..c4dece233f33dea6202c5e503803ffdd917421e1 GIT binary patch literal 4681 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_red.png b/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_1_red.png new file mode 100644 index 0000000000000000000000000000000000000000..f79e98a6f411568e2a61a6622fca44359821cf85 GIT binary patch literal 5208 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_2_red.png b/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_2_red.png new file mode 100644 index 0000000000000000000000000000000000000000..75b5149cec829523d52243b554c8f45b433fae1c GIT binary patch literal 5087 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_green.png b/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_green.png new file mode 100644 index 0000000000000000000000000000000000000000..0e30e949aef5c8a7c31f8c43c1db9700d7fe9a98 GIT binary patch literal 5194 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_orange.png b/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..f074609a3df793318f22d19e3ae09a22722943ce GIT binary patch literal 4964 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 literal 0 HcmV?d00001 diff --git a/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_red.png b/core/base/src/main/res/mipmap-xxxhdpi/ic_launcher_3_red.png new file mode 100644 index 0000000000000000000000000000000000000000..4adf8b57089be1ee4ea608d809e66c409669367f GIT binary patch literal 5243 zcmb`LXHZjLx9}4J0feBT7ZDYtNXJl=p3pl2(g~f=1XP-|fJpBmRUi~8Ql&SgBTWfS zFjQ$GRX}=x8~*S6%>8iZK6CHP{jkoNJ+szcd+)Q(Z>_x|b+nWr*O;#X004-pio#>U zyZuVYz=Y@H85dFjfEKQ*Ag}LZv6V%UOgoX)OJSFgdbjV-HZZXmN=w^qnTH`q5&ejO zQqM-T$8?(;Do&!tQJfo*QOpm?`m-UvWg(2Zy3m>^!D`+_gpkrKpto`0`P>p^d~Q)o zc*{}gHgl$5OKD5#hnCWkouF?!u=o$A4Nn7*69E(aU6w+Ol;Bq#|FhTO9m@P@A$wNd znDq*4e256OB?hQRp~PUorEJix$R=xiaLGui@Jn+SCGzT?|H1r*@(`=Op2yZ2&g%Iv zM+XTrnqEKPCY@3Omj`9lg@t76`XWweWwbf!gk=N%R&xFR2i*Go`|L?x)GF><*L&)O zg4k<;u?1t=s*2AHie&VCbC)%JtMAg)aa0wX0I=6!Z`9Q9LHn61O45+!?<~vetpm$A z6(S0(1H%s-*6tefw%lJm=XhJ_&#J8NJG8F#i@a`-Mv70{=!SKdRSAuL{7_pEZN~m{ z_7VC&0iN6=3yPdAm*5hSDd#V->9=?wpBli5Q=7$iB>Qp);q`A;lg!VkTY>R5rD{qnAz;}bF@*CC!5tX#V*RzFbn5V7z&`>;`8?&Az z+QvJ4^*qFYZSfwK`h$EWB|e-EYXo<`i0o!3kDafU&h^ct_6}l3`w&r9A;iLvZ2mux z1-&of&J!M=PT0#@F4bSP37d(Td369HWh}OA$@=MLG>-I#Xo47DoXo8U{>lQDpN9+2 z$xdJWa)n9shw;cP{iGwPwr6CSba>2wyOL3@f=Tz>Clyq>2~?eRJHg9o!0 z&h0U(p1UWk)`CjM<1}}=fmmu-op0af+N<+#IpFehukPgSFzuJGnmI(q0%p;_e{})e zc_DJGog(dp9W{AJN0~2pY7hIWRHZS}iqVSXg8=F8$;eYWf@jTY;P#f^oH#}l$#gq0 zJzF~!`3y)f<@^DV{VnP7sP>7pt<=j`{#IxkYVg{D{z)x`BVbXqA6&dG=>e`y5kd<# z!yN%hhW>771$z`Ai6IH%u08*}jl6vJ(VsF4Y<6Bxo&v)lp!8HbO9OPHQq>AQM-Dp9 zgIF?Q#36Ef1ZPB$|FtaKsdKo9F3#}}N4@)`0{d#d$p4%^I!wJ(akkr3;cMUht*N*~ z$2*z@u{NkLp5y~Wb|KXxaa$l1;CeCZ^G~R9i+i0xr;$NdQ^p7F za`0+ZP?yV^yKa}hH@vN5A1DljEZmS9_$nC`MPa65?P@jRza_#S^t-)&N?EfAi`m5M zu;u}8j+&g?c9cs0CUe7O8?e_r-Hg54dV+Ah%)32EWmmlV5sL*-p{KCLV**Z8wQjRK zhtl|WsFR;Id0Q*|dF<=0&?w25W8SyM_ew@ztaRnE-yAsxB(P z0n=K#K_lkX+qbkU5B~;HpQX0txu#N_rL-2W=-FLXd*T9ni0zCv>j97jz`j<-Vu(G( zHa_K;fBo}|($bdwj$ao9#rLjToUU!wV=%wOlwmj=B!ThWrrv_D5`B<%%J8|Sa0GLj zwpaIAdcv>y_RsWm?RgYr;PF?7JGsD{2@IfjoRF$g`Drmzot!6Q`X19y`$=Kw04%_m zFwrZpJHa#SzZ;{ofI@wCv40Ble=fGv!km>Xcx76CrsC?eX6oRz<OKamh<0v>dj6WrV`XR*28`-A9MBqbaPR!ytxMRnSjY}l}tKLdx@OB95HLsR~Y?E+eC1$fRhOGG869; zY3GnlCLd6e7Qg^E^J^(Bp>Yv?+e&&yC30@@8JykMgFj50C}bY~{-W9$3*>XBJZP*) zuuE_Z~=Y7C7-P#PxfiI}soWH24n{bGr-*&6f*&C;#7$@s8++(RCE*6lpIC z3nOKYHO#ZTYCqxQQVOrt>mKonX&TDrt<)qCg0o$1;3@r^o}oc@r5NE((94sQL@2FqD=pnLO``tiw zQw}6S9KRhRD3~1ahTU_Ha&<9lvJOU@QWEz<}2o zG~}$herPbpOU%vdKi1wKE={1_Ldu)cAOW+ZNA6q$%7K)5dT(u6lRUZ(~$8)XL3`WQk0?m%W{m61zL^Q#U}KZM1En4 zm{!8!b)4%*)VQf>ymmjj1+VWeg1d+hUb8D)EixkPR*0+X{Do)7DxjpBt82Dmg_mZk z$mjw5YrlK-kOY%J%b!YM*>5aVEBsqJSrNj4<+G?<*LcebJci;JuHp4l8}#R`iuM9; zVtQ99*!}#m|1IwR)WyrshU1zG>bqV))j_s(d{OwI8CUk8X?ANWzwkWKudAf1*5SCi zOFenb4{k4c>oO z9FEG+`>V}85!+_0;5GjHjH9mwm~qtKa(Q5qVYI3{E5>kz4porl`-m5_NomwKe&l8X zKniEKeCKW=b&h}s$R=}z4b$3lzCBlfWyMnZU$|uUW73@2VgkJhv`j7l;u?0S4;TuO z72PoT(Kqe1mx~OeQEc$(w#|E668*HD0MuVG^Mfjv)ESO-&Wlpx^GH?+!msxKt+$5)`6T*Ty4`v&pg3w}3-P0xxiRRWOmf!Cg#^M(qvCQQ2)A>C z@vIshb@eXl%Z|;S>obg)CMQRWRNhc1&Vs<{NhvXiC5v(_P;R<3NUV*lvM`krN8B`X z!au{f5K%d?OzzL1`42dk)`S5{K5RZp<1yo;O-b@yQ~i_HGmN))kd7bI!w7W#qH6_s z{&X1OED|-}xp}vaMOZ7C1$5KsvrLdSkmn*SdPjtdcr?QZ z2sk@-M-FE34mHfQ+Rk?kM;?|-9@ubR(YgSVpo`y&w4CJBQI6Siw?h*ujw$7S=Jv8f z+Z(btV%LpJmubmR@)tjb?!NyA$hY%>oso}%9_{9r(u_rP?LsYTqQ~vuwZBu#`WX-c zXTlIlmF|o88{NTN;!|4R2I&bjR~rSmwq3p{!}%kphr4h743N*9OK_|z^X(XRmF+Vm z1KspL<<~vyQLteW>^3vW@}%Rx%C>~~F?o6(TOS`eOI9gr{my>-hLS#e4*hNb+FfB> z`?Mp`QH^HP@2?^u&aXBDgSa2j;AFDAFZ36+JKxErTGR7%Gn8LyOwZk&2SLNnoo-88HD zSksZo|I=HRp8rS+ifr_n07IRni(TJP(&rlNmyFhXy{ShEv`@vR&N>J@i!Rb1j5kcD z02EKJ5dEtv(UCp*_KvG`g{7>$Y*mj$J-zsBMXk)Yjm+(Y`?HyPSjo3^Ii@_m34eNO z=5}BssJTSj4}zm(gz4>aBP$>7@-i+-RP7mf8hL4K9oZOcSF7YG<&H)VhdwO)S5Fmz}0>Jn4mF67pHA=GYW zqu_lqUD~`8D(nZ}KWr~2sKyP%Nz?6jp9ar=$n@(h7E~=i$hM>G(wt-fOW4<1y?E2+ z!|^tVxp|e9a9w&mo|xc$8K(`OjQB;WIe%YNjMjw3j`54UpECDHm0*n*(!*=sA$a~E zw>59JFH6@d479@%%sx{7nZxq-xSa-h^21WFCX=CuQMU?#pY3Bd*@Fhz*xdUkS`hmR zcpjmhs+aK4sMl666*-ERp$Oub&O zb`nD+Bzjb#Nl+9iGw#tQTh9P66>s3QL5nIgs|RA5u3YtXe@wdNzyu=go5wB&A}c!C zDIg5>BoQ=aAFeym2trN^8<#?N#o?wlF+fmmUFfR69eTT(YP=z5gq`CO|C(!{NV?vx z&$~Mt+u9`r%pvA5<=Y*UWefEDV`uGgNnwc4!_vdR<@aE}C_uM$7!cZ6^7Ghi#PW_x zf7;uXF$?@s0&n*>1y3@r&^P%^5o$>SR0!V2eFR=zJEQfMNl2lV$V&_<8N?C=$=H7j z9Eeenw8V_Cf+aMceQ!I;*;{t52JQ#usS!JvVv4wTU)%=Xn=?Ib;>0eT&*vIO*1fWi z2-iB@d+-=xllwlj5ZfEtOSsU&(B*4oU{x#&thmi%reyCZrnprOr6_g0b; z@Pj3w7z=k14fp!xcNOL>TFu2rRc^z-A2d5@?Tod_7F{R5Yj`BH)x5)c*>fKS%s`7_ zpeT}zU@uH=XbOf0HJIuh#5*JmWWPugQ4WheCXY!fPZ?QJs`OZ~leP-+NMR!5iFWQ7 zS85vBcOe+6{<97Y&-~x>A`07YH<`p_#DUBLYfQ{{PC}Mn_=Y%SqmpAc-2O^AxEl}e zCXsU_#Ds$j=zHNbSS2_+p-lwZ;)tF%l$QN{_Xn|$t<^YHKm#KOLj1dXf4|bqPYGkG zRTcMOFopz0ghMM~=ulw7v8pNIpBQn<1(at(*_sfnR9qy6OT?rs9;r*As{d744d0)L zhqd>o?LZhk9F|7Hp7LwBRJZrP$>(V2KHxEIHnL-jmu462Z${L|T;Q#uBPh za{#Rj;_Dlyh%1dm|1W~RyIjiEP(JtSP!8wCVw%t9MqKJ4kbl>q>k7cj-k&B)f?!jg R5}JwtRYfg@3b + + + #186C31 + #FF9800 + #E91E63 + \ No newline at end of file diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml index 1665a142..4b9d976a 100644 --- a/core/base/src/main/res/values/strings.xml +++ b/core/base/src/main/res/values/strings.xml @@ -1324,6 +1324,7 @@ Use colors from your wallpaper Color scheme Selected color + Selected icon Loading… @@ -1331,6 +1332,9 @@ Copied %1$s! Cancel OK + Apply + Warning! + This feature is unstable. App will be closed to apply changes. Restart your launcher if nothing changes. Reinstall app from phone settings if things go horribly. You have been warned! Search units No results found Open settings diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/AppIcon.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/AppIcon.kt new file mode 100644 index 00000000..5d3b108c --- /dev/null +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/AppIcon.kt @@ -0,0 +1,47 @@ +/* + * Unitto is a unit converter for Android + * Copyright (c) 2023 Elshan Agaev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sadellie.unitto.data.model + +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes + +private const val unitto = 0xFF186c31 +private const val white = 0xFFFFFFFF +private const val red = 0xFFE91E63 +private const val orange = 0xFFFF9800 + +enum class LauncherIcon( + val component: String, + @StringRes val labelString: Int = R.string.app_name, + @DrawableRes val foregroundDrawable: Int, + val foregroundColor: Long, + val backgroundColor: Long, +) { + MAIN_DEFAULT( "com.sadellie.unitto.MainActivity", R.string.app_name, R.drawable.ic_launcher_1_foreground, white, unitto), + MAIN_RED( "com.sadellie.unitto.custom.MainActivity2", R.string.app_name, R.drawable.ic_launcher_1_foreground, white, red), + MAIN_ORANGE( "com.sadellie.unitto.custom.MainActivity3", R.string.app_name, R.drawable.ic_launcher_1_foreground, white, orange), + + CALC1_DEFAULT( "com.sadellie.unitto.custom.MainActivity4", R.string.calculator, R.drawable.ic_launcher_2_foreground, white, unitto), + CALC1_RED( "com.sadellie.unitto.custom.MainActivity5", R.string.calculator, R.drawable.ic_launcher_2_foreground, white, red), + CALC1_ORANGE( "com.sadellie.unitto.custom.MainActivity6", R.string.calculator, R.drawable.ic_launcher_2_foreground, white, orange), + + CALC2_DEFAULT( "com.sadellie.unitto.custom.MainActivity7", R.string.calculator, R.drawable.ic_launcher_3_foreground, white, unitto), + CALC2_RED( "com.sadellie.unitto.custom.MainActivity8", R.string.calculator, R.drawable.ic_launcher_3_foreground, white, red), + CALC2_ORANGE( "com.sadellie.unitto.custom.MainActivity9", R.string.calculator, R.drawable.ic_launcher_3_foreground, white, orange), +} diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt index 9511a071..9b15672b 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt @@ -32,6 +32,7 @@ import com.sadellie.unitto.core.base.Separator import com.sadellie.unitto.core.base.TopLevelDestinations import com.sadellie.unitto.data.model.ALL_UNIT_GROUPS import com.sadellie.unitto.data.model.AbstractUnit +import com.sadellie.unitto.data.model.LauncherIcon import com.sadellie.unitto.data.model.UnitGroup import com.sadellie.unitto.data.model.UnitsListSorting import com.sadellie.unitto.data.units.MyUnitIDS @@ -62,6 +63,7 @@ import javax.inject.Inject * @property unitConverterFavoritesOnly If true will show only units that are marked as favorite. * @property unitConverterFormatTime If true will format time to be more human readable. * @property unitConverterSorting Units list sorting mode. + * @property launcherIcon Current [LauncherIcon]/ */ data class UserPreferences( val themingMode: ThemingMode? = null, @@ -81,6 +83,7 @@ data class UserPreferences( val unitConverterFavoritesOnly: Boolean = false, val unitConverterFormatTime: Boolean = false, val unitConverterSorting: UnitsListSorting = UnitsListSorting.USAGE, + val launcherIcon: LauncherIcon = LauncherIcon.MAIN_DEFAULT ) /** @@ -108,6 +111,7 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS val UNIT_CONVERTER_FAVORITES_ONLY = booleanPreferencesKey("UNIT_CONVERTER_FAVORITES_ONLY_PREF_KEY") val UNIT_CONVERTER_FORMAT_TIME = booleanPreferencesKey("UNIT_CONVERTER_FORMAT_TIME_PREF_KEY") val UNIT_CONVERTER_SORTING = stringPreferencesKey("UNIT_CONVERTER_SORTING_PREF_KEY") + val LAUNCHER_ICON = stringPreferencesKey("LAUNCHER_ICON_PREF_KEY") } val userPreferencesFlow: Flow = dataStore.data @@ -149,8 +153,8 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS val radianMode: Boolean = preferences[PrefsKeys.RADIAN_MODE] ?: true val unitConverterFavoritesOnly: Boolean = preferences[PrefsKeys.UNIT_CONVERTER_FAVORITES_ONLY] ?: false val unitConverterFormatTime: Boolean = preferences[PrefsKeys.UNIT_CONVERTER_FORMAT_TIME] ?: false - val unitConverterSorting: UnitsListSorting = preferences[PrefsKeys.UNIT_CONVERTER_SORTING]?.let { UnitsListSorting.valueOf(it) } - ?: UnitsListSorting.USAGE + val unitConverterSorting: UnitsListSorting = preferences[PrefsKeys.UNIT_CONVERTER_SORTING]?.let { UnitsListSorting.valueOf(it) } ?: UnitsListSorting.USAGE + val launcherIcon: LauncherIcon = preferences[PrefsKeys.LAUNCHER_ICON]?.let { LauncherIcon.valueOf(it) } ?: LauncherIcon.MAIN_DEFAULT UserPreferences( themingMode = themingMode, @@ -169,7 +173,8 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS radianMode = radianMode, unitConverterFavoritesOnly = unitConverterFavoritesOnly, unitConverterFormatTime = unitConverterFormatTime, - unitConverterSorting = unitConverterSorting + unitConverterSorting = unitConverterSorting, + launcherIcon = launcherIcon ) } @@ -346,4 +351,15 @@ class UserPreferencesRepository @Inject constructor(private val dataStore: DataS preferences[PrefsKeys.UNIT_CONVERTER_SORTING] = sorting.name } } + + /** + * Update [UserPreferences.launcherIcon]. + * + * @see UserPreferences.launcherIcon + */ + suspend fun updateLauncherIcon(icon: LauncherIcon) { + dataStore.edit { preferences -> + preferences[PrefsKeys.LAUNCHER_ICON] = icon.name + } + } } diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt index 92cb1f5c..c38fc7fa 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt @@ -22,9 +22,11 @@ import androidx.compose.ui.graphics.Color import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.sadellie.unitto.core.ui.Formatter +import com.sadellie.unitto.data.model.LauncherIcon import com.sadellie.unitto.data.model.UnitGroup import com.sadellie.unitto.data.model.UnitsListSorting import com.sadellie.unitto.data.unitgroups.UnitGroupsRepository +import com.sadellie.unitto.data.userprefs.UserPreferences import com.sadellie.unitto.data.userprefs.UserPreferencesRepository import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sadellie.themmo.ThemingMode @@ -41,10 +43,10 @@ class SettingsViewModel @Inject constructor( private val userPrefsRepository: UserPreferencesRepository, private val unitGroupsRepository: UnitGroupsRepository, ) : ViewModel() { - var userPrefs = userPrefsRepository.userPreferencesFlow + val userPrefs = userPrefsRepository.userPreferencesFlow .onEach { Formatter.setSeparator(it.separator) } .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), - com.sadellie.unitto.data.userprefs.UserPreferences() + UserPreferences() ) val shownUnitGroups = unitGroupsRepository.shownUnitGroups val hiddenUnitGroups = unitGroupsRepository.hiddenUnitGroups @@ -197,6 +199,16 @@ class SettingsViewModel @Inject constructor( } } + /** + * @see UserPreferencesRepository.updateLauncherIcon + */ + fun updateLauncherIcon(icon: LauncherIcon, finished: () -> Unit?) { + viewModelScope.launch { + userPrefsRepository.updateLauncherIcon(icon) + finished() + } + } + /** * Prevent from dragging over non-draggable items (headers and hidden) * diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt index 8f40a7a0..6e693873 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt @@ -18,8 +18,13 @@ package com.sadellie.unitto.feature.settings +import android.app.Activity +import android.content.ComponentName +import android.content.Context +import android.content.pm.PackageManager import android.os.Build import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.animateColorAsState import androidx.compose.animation.expandVertically import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut @@ -29,36 +34,63 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Colorize import androidx.compose.material.icons.filled.DarkMode +import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Palette +import androidx.compose.material.icons.filled.Warning +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.FilledTonalButton import androidx.compose.material3.Icon import androidx.compose.material3.ListItem import androidx.compose.material3.Text +import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.sadellie.unitto.core.ui.R import com.sadellie.unitto.core.ui.common.Header import com.sadellie.unitto.core.ui.common.NavigateUpButton -import com.sadellie.unitto.core.ui.common.UnittoListItem -import com.sadellie.unitto.core.ui.common.UnittoScreenWithLargeTopBar -import com.sadellie.unitto.feature.settings.components.ColorSelector import com.sadellie.unitto.core.ui.common.SegmentedButton import com.sadellie.unitto.core.ui.common.SegmentedButtonRow +import com.sadellie.unitto.core.ui.common.UnittoListItem +import com.sadellie.unitto.core.ui.common.UnittoScreenWithLargeTopBar +import com.sadellie.unitto.data.model.LauncherIcon +import com.sadellie.unitto.feature.settings.components.ColorSelector +import com.sadellie.unitto.feature.settings.components.IconsSelector import io.github.sadellie.themmo.ThemingMode import io.github.sadellie.themmo.ThemmoController +private val colorSchemes: List by lazy { + listOf( + Color(0xFFE91E63), + Color(0xFFFF9800), + Color(0xFF4CAF50), + Color(0xFF2196F3), + Color(0xFF9C27B0), + Color(0xFF5C76AA), + Color(0xFF756FAA), + Color(0xFF9E6C2A), + ) +} + @Composable internal fun ThemesRoute( navigateUpAction: () -> Unit = {}, themmoController: ThemmoController, viewModel: SettingsViewModel ) { + val userPrefs = viewModel.userPrefs.collectAsStateWithLifecycle() + ThemesScreen( navigateUpAction = navigateUpAction, currentThemingMode = themmoController.currentThemingMode, @@ -80,7 +112,11 @@ internal fun ThemesRoute( onColorChange = { themmoController.setCustomColor(it) viewModel.updateCustomColor(it) - } + }, + currentIcon = userPrefs.value.launcherIcon, + onIconChange = { newValue, callback -> + viewModel.updateLauncherIcon(newValue, callback) + }, ) } @@ -95,7 +131,10 @@ private fun ThemesScreen( onAmoledThemeChange: (Boolean) -> Unit, selectedColor: Color, onColorChange: (Color) -> Unit, + currentIcon: LauncherIcon, + onIconChange: (LauncherIcon, () -> Unit) -> Unit ) { + val mContext = LocalContext.current val themingModes by remember { mutableStateOf( mapOf( @@ -105,12 +144,72 @@ private fun ThemesScreen( ) ) } + var showIconChangeWarning: Boolean by rememberSaveable { mutableStateOf(false) } + + var selectedLauncherIcon: LauncherIcon by remember { mutableStateOf(currentIcon) } + var selectedLauncherIconColor: Color by remember { mutableStateOf(Color(currentIcon.backgroundColor)) } + val selectedLauncherIconColorAnim = animateColorAsState(targetValue = selectedLauncherIconColor) + val launcherIcons: List by remember(selectedLauncherIcon) { + derivedStateOf { + LauncherIcon + .values() + .toList() + .filter { Color(it.backgroundColor) == selectedLauncherIconColor } + } + } UnittoScreenWithLargeTopBar( title = stringResource(R.string.theme_setting), navigationIcon = { NavigateUpButton(navigateUpAction) } ) { paddingValues -> LazyColumn(contentPadding = paddingValues) { + + item { + ListItem( + headlineContent = { Text(stringResource(R.string.selected_color)) }, + supportingContent = { + ColorSelector( + modifier = Modifier.padding(top = 12.dp), + selected = selectedLauncherIconColor, + onItemClick = { + selectedLauncherIconColor = it + }, + colorSchemes = remember { + LauncherIcon.values().map { Color(it.backgroundColor) } + .distinct() + }, + ) + }, + modifier = Modifier.padding(start = 40.dp) + ) + } + + item { + ListItem( + headlineContent = { Text(stringResource(R.string.selected_launcher_icon)) }, + supportingContent = { + IconsSelector( + modifier = Modifier.padding(top = 12.dp), + selectedColor = selectedLauncherIconColorAnim.value, + icons = launcherIcons, + selectedIcon = selectedLauncherIcon, + onIconChange = { selectedLauncherIcon = it } + ) + }, + modifier = Modifier.padding(start = 40.dp) + ) + } + + item { + FilledTonalButton( + modifier = Modifier.padding(start = 56.dp), + enabled = currentIcon != selectedLauncherIcon, + onClick = { showIconChangeWarning = true }, + ) { + Text(stringResource(R.string.apply_label)) + } + } + item { ListItem( leadingContent = { @@ -190,7 +289,9 @@ private fun ThemesScreen( ColorSelector( modifier = Modifier.padding(top = 12.dp), selected = selectedColor, - onItemClick = onColorChange + onItemClick = onColorChange, + colorSchemes = colorSchemes, + defaultColor = Color(0xFF186c31) ) }, modifier = Modifier.padding(start = 40.dp) @@ -199,6 +300,63 @@ private fun ThemesScreen( } } } + + if (showIconChangeWarning) { + AlertDialog( + icon = { + Icon(Icons.Default.Warning, stringResource(R.string.warning_label)) + }, + title = { + Text(stringResource(R.string.warning_label)) + }, + text = { + Text( + stringResource(R.string.icon_change_warning) + ) + }, + confirmButton = { + TextButton( + onClick = { + onIconChange(selectedLauncherIcon) { + mContext.changeIcon(selectedLauncherIcon) + (mContext as Activity).finish() + } + showIconChangeWarning = false + } + ) { + Text(stringResource(R.string.apply_label)) + } + }, + dismissButton = { + TextButton( + onClick = { showIconChangeWarning = false } + ) { + Text(stringResource(R.string.cancel_label)) + } + }, + onDismissRequest = { showIconChangeWarning = false } + ) + } +} + +private fun Context.changeIcon(newIcon: LauncherIcon) { + // Enable new icon + packageManager.setComponentEnabledSetting( + ComponentName(this, newIcon.component), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP + ) + + val packages = LauncherIcon.values().toList() - newIcon + + // We make sure that other icons are disabled to avoid bugs. + packages.forEach { + packageManager.setComponentEnabledSetting( + ComponentName(this, it.component), + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP + ) + } } @Preview @@ -213,6 +371,8 @@ private fun Preview() { isAmoledThemeEnabled = false, onAmoledThemeChange = {}, selectedColor = Color.Unspecified, - onColorChange = {} + onColorChange = {}, + currentIcon = LauncherIcon.MAIN_DEFAULT, + onIconChange = {_,_->} ) } diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt index d3585466..4a38d6d3 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorCheckbox.kt @@ -30,7 +30,8 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.aspectRatio -import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.shape.CircleShape @@ -41,11 +42,9 @@ import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.luminance import androidx.compose.ui.unit.dp @@ -55,34 +54,24 @@ internal fun ColorSelector( modifier: Modifier = Modifier, selected: Color, onItemClick: (Color) -> Unit, + colorSchemes: List, + defaultColor: Color? = null ) { - val colorSchemes: List by remember { - mutableStateOf( - listOf( - Color(0xFFE91E63), - Color(0xFFFF9800), - Color(0xFF4CAF50), - Color(0xFF2196F3), - Color(0xFF9C27B0), - Color(0xFF5C76AA), - Color(0xFF756FAA), - Color(0xFF9E6C2A), - ) - ) - } - LazyRow( modifier = modifier, horizontalArrangement = Arrangement.spacedBy(8.dp) ) { - // Default, Unitto colors - item { - ColorCheckbox( - color = Color(0xFF186c31), - selected = Color.Unspecified == selected, - onClick = { onItemClick(Color.Unspecified) } - ) + if (defaultColor != null) { + // Default, Unitto colors + item { + ColorCheckbox( + color = defaultColor, + selected = Color.Unspecified == selected, + onClick = { onItemClick(Color.Unspecified) } + ) + } } + colorSchemes.forEach { item { ColorCheckbox( @@ -103,20 +92,20 @@ private fun ColorCheckbox( ) { Box( modifier = Modifier - .clickable(onClick = onClick) - .background( - MaterialTheme.colorScheme.surfaceColorAtElevation(2.dp), - RoundedCornerShape(25) - ) .width(72.dp) - .aspectRatio(1f), + .clip(RoundedCornerShape(25)) + .clickable(onClick = onClick) + .background(MaterialTheme.colorScheme.surfaceColorAtElevation(2.dp)), contentAlignment = Alignment.Center ) { Box( modifier = Modifier - .background(color, CircleShape) - .size(54.dp) - .border(1.dp, Color.Black.copy(0.5f), CircleShape) + .fillMaxSize() + .aspectRatio(1f) + .padding(8.dp) + .clip(CircleShape) + .background(color) + .border(1.dp, Color.Black.copy(0.5f), CircleShape), ) AnimatedVisibility( visible = selected, diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/IconSelector.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/IconSelector.kt new file mode 100644 index 00000000..24744a47 --- /dev/null +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/IconSelector.kt @@ -0,0 +1,144 @@ +/* + * Unitto is a unit converter for Android + * Copyright (c) 2023 Elshan Agaev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sadellie.unitto.feature.settings.components + +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Check +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.scale +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.sadellie.unitto.data.model.LauncherIcon + + +@Composable +internal fun IconsSelector( + modifier: Modifier, + selectedColor: Color, + icons: List, + selectedIcon: LauncherIcon, + onIconChange: (LauncherIcon) -> Unit +) { + LazyRow( + modifier = modifier, + horizontalArrangement = Arrangement.spacedBy(8.dp)) { + items(icons) { + IconCheckbox( + iconRes = it.foregroundDrawable, + foregroundColor = Color(it.foregroundColor), + backGroundColor = selectedColor, + selected = it == selectedIcon, + onClick = { onIconChange(it) }, + label = it.labelString + ) + } + } +} + +@Composable +private fun IconCheckbox( + @DrawableRes iconRes: Int, + foregroundColor: Color, + backGroundColor: Color, + @StringRes label: Int, + selected: Boolean, + onClick: () -> Unit +) { + Column( + modifier = Modifier + .width(72.dp) + .clip(RoundedCornerShape(25)) + .clickable(onClick = onClick) + .background(MaterialTheme.colorScheme.surfaceColorAtElevation(2.dp)) + .padding(bottom = 8.dp) + , + horizontalAlignment = Alignment.CenterHorizontally + ) { + Box( + modifier = Modifier + .fillMaxSize() + .aspectRatio(1f) + .padding(8.dp) + .clip(CircleShape) + .background(backGroundColor) + .border(1.dp, Color.Black.copy(0.5f), CircleShape), + contentAlignment = Alignment.Center + ) { + Icon( + painter = painterResource(iconRes), + contentDescription = null, + tint = foregroundColor, + modifier = Modifier.scale(1.5f) + ) + + // bug in language, need to call it like this + androidx.compose.animation.AnimatedVisibility( + visible = selected, + enter = fadeIn(tween(250)) + scaleIn(tween(150)), + exit = fadeOut(tween(250)) + scaleOut(tween(150)), + ) { + Box( + modifier = Modifier + .background(MaterialTheme.colorScheme.scrim.copy(0.5f)) + .fillMaxSize(), + contentAlignment = Alignment.Center + ) { + Icon( + imageVector = Icons.Default.Check, + contentDescription = null, + tint = if (backGroundColor.luminance() > 0.5) Color.Black else Color.White, + ) + } + } + } + + Text(stringResource(label), style = MaterialTheme.typography.labelSmall) + } +}