Add setting to enable dynamic Material You colors
This commit is contained in:
parent
3f5b006c0a
commit
219eba1261
7 changed files with 50 additions and 1 deletions
|
|
@ -15,7 +15,9 @@ class Application : Application() {
|
|||
}
|
||||
|
||||
override fun onCreate() {
|
||||
DynamicColors.applyToActivitiesIfAvailable(this)
|
||||
if (repository.getDynamicColorsEnabled()) {
|
||||
DynamicColors.applyToActivitiesIfAvailable(this)
|
||||
}
|
||||
super.onCreate()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,6 +68,9 @@ class Backuper(val context: Context) {
|
|||
if (settings.darkMode != null) {
|
||||
repository.setDarkMode(settings.darkMode)
|
||||
}
|
||||
if (settings.dynamicColors != null) {
|
||||
repository.setDynamicColorsEnabled(settings.dynamicColors)
|
||||
}
|
||||
if (settings.connectionProtocol != null) {
|
||||
repository.setConnectionProtocol(settings.connectionProtocol)
|
||||
}
|
||||
|
|
@ -234,6 +237,7 @@ class Backuper(val context: Context) {
|
|||
autoDownloadMaxSize = repository.getAutoDownloadMaxSize(),
|
||||
autoDeleteSeconds = repository.getAutoDeleteSeconds(),
|
||||
darkMode = repository.getDarkMode(),
|
||||
dynamicColors = repository.getDynamicColorsEnabled(),
|
||||
connectionProtocol = repository.getConnectionProtocol(),
|
||||
broadcastEnabled = repository.getBroadcastEnabled(),
|
||||
recordLogs = repository.getRecordLogs(),
|
||||
|
|
@ -357,6 +361,7 @@ data class Settings(
|
|||
val autoDownloadMaxSize: Long?,
|
||||
val autoDeleteSeconds: Long?,
|
||||
val darkMode: Int?,
|
||||
val dynamicColors: Boolean?,
|
||||
val connectionProtocol: String?,
|
||||
val broadcastEnabled: Boolean?,
|
||||
val recordLogs: Boolean?,
|
||||
|
|
|
|||
|
|
@ -272,6 +272,16 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
|
|||
return sharedPrefs.getInt(SHARED_PREFS_DARK_MODE, AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
||||
}
|
||||
|
||||
fun setDynamicColorsEnabled(enabled: Boolean) {
|
||||
sharedPrefs.edit()
|
||||
.putBoolean(SHARED_PREFS_DYNAMIC_COLORS, enabled)
|
||||
.apply()
|
||||
}
|
||||
|
||||
fun getDynamicColorsEnabled(): Boolean {
|
||||
return sharedPrefs.getBoolean(SHARED_PREFS_DYNAMIC_COLORS, false)
|
||||
}
|
||||
|
||||
fun setConnectionProtocol(connectionProtocol: String) {
|
||||
sharedPrefs.edit()
|
||||
.putString(SHARED_PREFS_CONNECTION_PROTOCOL, connectionProtocol)
|
||||
|
|
@ -496,6 +506,7 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
|
|||
const val SHARED_PREFS_AUTO_DELETE_SECONDS = "AutoDelete"
|
||||
const val SHARED_PREFS_CONNECTION_PROTOCOL = "ConnectionProtocol"
|
||||
const val SHARED_PREFS_DARK_MODE = "DarkMode"
|
||||
const val SHARED_PREFS_DYNAMIC_COLORS = "DynamicColors"
|
||||
const val SHARED_PREFS_BROADCAST_ENABLED = "BroadcastEnabled"
|
||||
const val SHARED_PREFS_UNIFIEDPUSH_ENABLED = "UnifiedPushEnabled"
|
||||
const val SHARED_PREFS_INSISTENT_MAX_PRIORITY_ENABLED = "InsistentMaxPriority"
|
||||
|
|
|
|||
|
|
@ -327,6 +327,29 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
|
|||
}
|
||||
}
|
||||
|
||||
// Dynamic colors
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
val dynamicColorsEnabledPrefId = context?.getString(R.string.settings_general_dynamic_colors_key) ?: return
|
||||
val dynamicColorsEnabled: SwitchPreferenceCompat? = findPreference(dynamicColorsEnabledPrefId)
|
||||
dynamicColorsEnabled?.isChecked = repository.getDynamicColorsEnabled()
|
||||
dynamicColorsEnabled?.preferenceDataStore = object : PreferenceDataStore() {
|
||||
override fun putBoolean(key: String?, value: Boolean) {
|
||||
repository.setDynamicColorsEnabled(value)
|
||||
}
|
||||
override fun getBoolean(key: String?, defValue: Boolean): Boolean {
|
||||
return repository.getDynamicColorsEnabled()
|
||||
}
|
||||
}
|
||||
dynamicColorsEnabled?.summaryProvider = Preference.SummaryProvider<SwitchPreferenceCompat> { pref ->
|
||||
if (pref.isChecked) {
|
||||
getString(R.string.settings_general_dynamic_colors_summary_enabled)
|
||||
} else {
|
||||
getString(R.string.settings_general_dynamic_colors_summary_disabled)
|
||||
}
|
||||
}
|
||||
dynamicColorsEnabled?.isVisible = true
|
||||
}
|
||||
|
||||
// Default Base URL
|
||||
val appBaseUrl = getString(R.string.app_base_url)
|
||||
val defaultBaseUrlPrefId = context?.getString(R.string.settings_general_default_base_url_key) ?: return
|
||||
|
|
|
|||
|
|
@ -310,6 +310,9 @@
|
|||
<string name="settings_general_dark_mode_entry_system">Use system default</string>
|
||||
<string name="settings_general_dark_mode_entry_light">Light mode</string>
|
||||
<string name="settings_general_dark_mode_entry_dark">Dark mode</string>
|
||||
<string name="settings_general_dynamic_colors_title">Dynamic colors</string>
|
||||
<string name="settings_general_dynamic_colors_summary_enabled">Using the dynamic system colors</string>
|
||||
<string name="settings_general_dynamic_colors_summary_disabled">Using the ntfy theme colors</string>
|
||||
<string name="settings_backup_restore_header">Backup & Restore</string>
|
||||
<string name="settings_backup_restore_backup_title">Back up to file</string>
|
||||
<string name="settings_backup_restore_backup_summary">Export config, notifications, and users</string>
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
<string name="settings_general_default_base_url_key" translatable="false">DefaultBaseURL</string>
|
||||
<string name="settings_general_users_key" translatable="false">ManageUsers</string>
|
||||
<string name="settings_general_dark_mode_key" translatable="false">DarkMode</string>
|
||||
<string name="settings_general_dynamic_colors_key" translatable="false">DynamicColors</string>
|
||||
<string name="settings_backup_restore_backup_key" translatable="false">Backup</string>
|
||||
<string name="settings_backup_restore_restore_key" translatable="false">Restore</string>
|
||||
<string name="settings_advanced_broadcast_key" translatable="false">BroadcastEnabled</string>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,10 @@
|
|||
app:entries="@array/settings_general_dark_mode_entries"
|
||||
app:entryValues="@array/settings_general_dark_mode_values"
|
||||
app:defaultValue="-1"/>
|
||||
<SwitchPreferenceCompat
|
||||
app:key="@string/settings_general_dynamic_colors_key"
|
||||
app:title="@string/settings_general_dynamic_colors_title"
|
||||
app:isPreferenceVisible="false"/>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory app:title="@string/settings_backup_restore_header">
|
||||
<ListPreference
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue