Show restart dialog on setting change

This commit is contained in:
Niko Diamadis
2023-02-17 15:40:13 +01:00
parent 544c960bff
commit 9d2622fbc6
2 changed files with 18 additions and 27 deletions

View File

@@ -78,33 +78,15 @@ internal class SettingsActivity : AppCompatActivity(), OnSharedPreferenceChangeL
findPreference(getString(R.string.setting_key_notification_channels)) findPreference(getString(R.string.setting_key_notification_channels))
messageLayout?.onPreferenceChangeListener = messageLayout?.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _, _ -> Preference.OnPreferenceChangeListener { _, _ ->
MaterialAlertDialogBuilder(requireContext()) showRestartDialog()
.setTitle(R.string.setting_message_layout_dialog_title)
.setMessage(R.string.setting_message_layout_dialog_message)
.setPositiveButton(
getString(R.string.setting_message_layout_dialog_button1)
) { _, _ ->
restartApp()
}
.setNegativeButton(
getString(R.string.setting_message_layout_dialog_button2),
null
)
.show()
true true
} }
notificationChannels?.onPreferenceChangeListener = notificationChannels?.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { _, _ -> Preference.OnPreferenceChangeListener { _, _ ->
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
return@OnPreferenceChangeListener true return@OnPreferenceChangeListener false
} }
showRestartDialog()
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.setting_notification_channels_dialog_title)
.setMessage(R.string.setting_notification_channels_dialog_message)
.setPositiveButton(android.R.string.ok, null)
.show()
true true
} }
} }
@@ -127,6 +109,17 @@ internal class SettingsActivity : AppCompatActivity(), OnSharedPreferenceChangeL
) )
} }
private fun showRestartDialog() {
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.setting_restart_dialog_title)
.setMessage(R.string.setting_restart_dialog_message)
.setPositiveButton(getString(R.string.setting_restart_dialog_button1)) { _, _ ->
restartApp()
}
.setNegativeButton(getString(R.string.setting_restart_dialog_button2), null)
.show()
}
private fun restartApp() { private fun restartApp() {
val packageManager = requireContext().packageManager val packageManager = requireContext().packageManager
val packageName = requireContext().packageName val packageName = requireContext().packageName

View File

@@ -74,17 +74,15 @@
<string name="setting_key_theme">theme</string> <string name="setting_key_theme">theme</string>
<string name="setting_message_layout">Message layout</string> <string name="setting_message_layout">Message layout</string>
<string name="setting_key_message_layout">message_layout</string> <string name="setting_key_message_layout">message_layout</string>
<string name="setting_message_layout_dialog_title">Restart App?</string> <string name="setting_restart_dialog_title">Restart App?</string>
<string name="setting_message_layout_dialog_message">The change will be effective on next app start.\n\nDo you want to restart now?</string> <string name="setting_restart_dialog_message">The change will be effective on next app start.\n\nDo you want to restart now?</string>
<string name="setting_message_layout_dialog_button1">Restart</string> <string name="setting_restart_dialog_button1">Restart</string>
<string name="setting_message_layout_dialog_button2">Later</string> <string name="setting_restart_dialog_button2">Later</string>
<string name="setting_time_format">Time format</string> <string name="setting_time_format">Time format</string>
<string name="setting_key_time_format">time_format</string> <string name="setting_key_time_format">time_format</string>
<string name="setting_notifications">Notifications</string> <string name="setting_notifications">Notifications</string>
<string name="setting_notification_channels">Separate app notification channels</string> <string name="setting_notification_channels">Separate app notification channels</string>
<string name="setting_key_notification_channels">notification_channels</string> <string name="setting_key_notification_channels">notification_channels</string>
<string name="setting_notification_channels_dialog_title">Manual refresh required</string>
<string name="setting_notification_channels_dialog_message">For the change to take effect you must manually refresh the apps using the refresh button in the main menu.</string>
<string name="push_message">Push message</string> <string name="push_message">Push message</string>
<string name="appListDescription">App:</string> <string name="appListDescription">App:</string>
<string name="priorityDescription">Priority:</string> <string name="priorityDescription">Priority:</string>