feat: add preference to toggle dynamic colors

This commit is contained in:
Akash Yadav
2022-12-29 16:59:11 +05:30
parent b676ceb607
commit 2eb05af11a
5 changed files with 25 additions and 1 deletions
@@ -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() }
}
@@ -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,
@@ -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) {
@@ -527,4 +527,6 @@
<string name="uiMode_light">Light</string>
<string name="uiMode_dark">Dark</string>
<string name="uiMode_system">Follow system</string>
<string name="idepref_general_materialYou">Material You</string>
<string name="idepref_general_materialYou_summary">Enjoy an experience closer to your device (requires restart).</string>
</resources>
Binary file not shown.