diff --git a/app/src/main/java/com/github/gotify/settings/SettingsActivity.java b/app/src/main/java/com/github/gotify/settings/SettingsActivity.java index b734079..6ad24c8 100644 --- a/app/src/main/java/com/github/gotify/settings/SettingsActivity.java +++ b/app/src/main/java/com/github/gotify/settings/SettingsActivity.java @@ -1,11 +1,18 @@ package com.github.gotify.settings; +import android.app.AlertDialog; +import android.content.ComponentName; +import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.os.Bundle; import android.view.MenuItem; +import android.view.View; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; +import androidx.preference.ListPreference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceManager; import com.github.gotify.R; @@ -52,5 +59,38 @@ public class SettingsActivity extends AppCompatActivity public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.root_preferences, rootKey); } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ListPreference message_layout = + findPreference(getString(R.string.setting_key_message_layout)); + message_layout.setOnPreferenceChangeListener( + (ignored, ignored2) -> { + new AlertDialog.Builder(getContext()) + .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), + (ignored3, ignored4) -> { + restartApp(); + }) + .setNegativeButton( + getString(R.string.setting_message_layout_dialog_button2), + (ignore3, ignored4) -> {}) + .show(); + return true; + }); + } + + private void restartApp() { + PackageManager packageManager = getContext().getPackageManager(); + String packageName = getContext().getPackageName(); + Intent intent = packageManager.getLaunchIntentForPackage(packageName); + ComponentName componentName = intent.getComponent(); + Intent mainIntent = Intent.makeRestartActivityTask(componentName); + startActivity(mainIntent); + Runtime.getRuntime().exit(0); + } } } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 3a9d936..a4ef6f8 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -8,6 +8,19 @@ Light Dark System Default + + + @string/message_layout_entry_normal + @string/message_layout_entry_compact + + Normal + Compact + + @string/message_layout_value_normal + @string/message_layout_value_compact + + message_layout_normal + message_layout_compact @string/time_format_entry_absolute diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9f1ed7e..4c2ae7c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -70,6 +70,12 @@ Appearance Theme theme + Message layout + message_layout + Restart App? + The change will be effective on next app start.\n\nDo you want to restart now? + Restart + Later Time format time_format Push message diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index ec2273d..0971135 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -9,12 +9,19 @@ android:key="@string/setting_key_theme" android:title="@string/setting_theme" /> + + + android:title="@string/setting_time_format" />