From 2eb05af11aea0719c5154e30baef12fbfc2e4196 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Thu, 29 Dec 2022 16:59:11 +0530 Subject: [PATCH] feat: add preference to toggle dynamic colors --- .../itsaky/androidide/app/IDEApplication.kt | 6 +++++- .../itsaky/androidide/preferences/general.kt | 11 +++++++++++ .../internal/generalPreferences.kt | 7 +++++++ resources/src/main/res/values/strings.xml | 2 ++ tests/test-home/.androidide/init/model.jar | Bin 65261 -> 65261 bytes 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/itsaky/androidide/app/IDEApplication.kt b/app/src/main/java/com/itsaky/androidide/app/IDEApplication.kt index 7345fb6b2..851f6b9fb 100755 --- a/app/src/main/java/com/itsaky/androidide/app/IDEApplication.kt +++ b/app/src/main/java/com/itsaky/androidide/app/IDEApplication.kt @@ -29,6 +29,7 @@ import com.itsaky.androidide.events.AppEventsIndex import com.itsaky.androidide.events.LspApiEventsIndex import com.itsaky.androidide.events.LspJavaEventsIndex import com.itsaky.androidide.events.ProjectsApiEventsIndex +import com.itsaky.androidide.preferences.internal.enableMaterialYou import com.itsaky.androidide.preferences.internal.uiMode import com.itsaky.androidide.tasks.executeAsync import com.itsaky.androidide.utils.ILogger @@ -63,7 +64,10 @@ class IDEApplication : BaseApplication() { .installDefaultEventBus() AppCompatDelegate.setDefaultNightMode(uiMode) -// DynamicColors.applyToActivitiesIfAvailable(this) + + if (enableMaterialYou) { + DynamicColors.applyToActivitiesIfAvailable(this) + } executeAsync { IDEColorSchemeProvider.init() } } diff --git a/app/src/main/java/com/itsaky/androidide/preferences/general.kt b/app/src/main/java/com/itsaky/androidide/preferences/general.kt index 3d474865d..4e7c8fa7c 100644 --- a/app/src/main/java/com/itsaky/androidide/preferences/general.kt +++ b/app/src/main/java/com/itsaky/androidide/preferences/general.kt @@ -25,9 +25,11 @@ import com.itsaky.androidide.preferences.internal.CONFIRM_PROJECT_OPEN import com.itsaky.androidide.preferences.internal.OPEN_PROJECTS import com.itsaky.androidide.preferences.internal.TERMINAL_USE_SYSTEM_SHELL import com.itsaky.androidide.preferences.internal.UI_MODE +import com.itsaky.androidide.preferences.internal.ENABLE_MATERIAL_YOU import com.itsaky.androidide.preferences.internal.autoOpenProjects import com.itsaky.androidide.preferences.internal.confirmProjectOpen import com.itsaky.androidide.preferences.internal.uiMode +import com.itsaky.androidide.preferences.internal.enableMaterialYou import com.itsaky.androidide.preferences.internal.useSystemShell import com.itsaky.androidide.resources.R.drawable import com.itsaky.androidide.resources.R.string @@ -42,6 +44,7 @@ class GeneralPreferences( ) : IPreferenceScreen() { init { addPreference(UiMode()) + addPreference(EnableMaterialYou()) addPreference(OpenLastProject()) addPreference(ConfirmProjectOpen()) addPreference(UseSytemShell()) @@ -84,6 +87,14 @@ class UiMode( } } +@Parcelize +class EnableMaterialYou( + override val key: String = ENABLE_MATERIAL_YOU, + override val title: Int = R.string.idepref_general_materialYou, + override val summary: Int? = R.string.idepref_general_materialYou_summary, + override val icon: Int? = R.drawable.ic_color_scheme +) : SwitchPreference(setValue = ::enableMaterialYou::set, getValue = ::enableMaterialYou::get) + @Parcelize class OpenLastProject( override val key: String = OPEN_PROJECTS, diff --git a/preferences/src/main/java/com/itsaky/androidide/preferences/internal/generalPreferences.kt b/preferences/src/main/java/com/itsaky/androidide/preferences/internal/generalPreferences.kt index a3e66791f..e17de5b80 100644 --- a/preferences/src/main/java/com/itsaky/androidide/preferences/internal/generalPreferences.kt +++ b/preferences/src/main/java/com/itsaky/androidide/preferences/internal/generalPreferences.kt @@ -21,6 +21,7 @@ import androidx.appcompat.app.AppCompatDelegate const val IS_FIRST_PROJECT_BUILD = "project_isFirstBuild" const val UI_MODE = "idepref_general_uiMode" +const val ENABLE_MATERIAL_YOU = "idpref_general_enableMaterialYou" const val OPEN_PROJECTS = "idepref_general_autoOpenProjects" const val CONFIRM_PROJECT_OPEN = "idepref_general_confirmProjectOpen" const val TERMINAL_USE_SYSTEM_SHELL = "idepref_general_terminalShell" @@ -34,6 +35,12 @@ var uiMode: Int prefManager.putInt(UI_MODE, value) } +var enableMaterialYou: Boolean + get() = prefManager.getBoolean(ENABLE_MATERIAL_YOU, true) + set(value) { + prefManager.putBoolean(ENABLE_MATERIAL_YOU, value) + } + var isFirstBuild: Boolean get() = prefManager.getBoolean(IS_FIRST_PROJECT_BUILD, true) set(value) { diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index 91eafe220..d7e71bded 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -527,4 +527,6 @@ Light Dark Follow system + Material You + Enjoy an experience closer to your device (requires restart). diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index 50a935774ed852d8af721e7aa7be078ab2a1adb9..53d2e4d8769203d862c16d0e988384b73855e08a 100644 GIT binary patch delta 31 ncmaF+m-+2qW}X0VW)?061`ZAej`oc_e(#w$+Be6%pU4jYsdNfk delta 31 ncmaF+m-+2qW}X0VW)?061`ZB}b*&qD{N6LIYuz04ej+~rw(JX|