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 50a935774..53d2e4d87 100644
Binary files a/tests/test-home/.androidide/init/model.jar and b/tests/test-home/.androidide/init/model.jar differ