Add message layout setting to SettingsPage (incl. restart dialog)

This commit is contained in:
Niko Diamadis
2022-10-09 11:25:48 +02:00
committed by Jannis Mattheis
parent 9a39296c64
commit cc8f78ded5
4 changed files with 67 additions and 1 deletions

View File

@@ -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);
}
}
}

View File

@@ -8,6 +8,19 @@
<string name="theme_light">Light</string>
<string name="theme_dark">Dark</string>
<string name="theme_default">System Default</string>
<!-- Message Layout -->
<string-array name="message_layout_entries">
<item>@string/message_layout_entry_normal</item>
<item>@string/message_layout_entry_compact</item>
</string-array>
<string name="message_layout_entry_normal">Normal</string>
<string name="message_layout_entry_compact">Compact</string>
<string-array name="message_layout_values">
<item>@string/message_layout_value_normal</item>
<item>@string/message_layout_value_compact</item>
</string-array>
<string name="message_layout_value_normal">message_layout_normal</string>
<string name="message_layout_value_compact">message_layout_compact</string>
<!-- Time Format -->
<string-array name="time_format_entries">
<item>@string/time_format_entry_absolute</item>

View File

@@ -70,6 +70,12 @@
<string name="settings_appearance">Appearance</string>
<string name="setting_theme">Theme</string>
<string name="setting_key_theme">theme</string>
<string name="setting_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_message_layout_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_message_layout_dialog_button2">Later</string>
<string name="setting_time_format">Time format</string>
<string name="setting_key_time_format">time_format</string>
<string name="push_message">Push message</string>

View File

@@ -9,6 +9,13 @@
android:key="@string/setting_key_theme"
android:title="@string/setting_theme" />
<ListPreference
android:defaultValue="@string/message_layout_value_normal"
android:entries="@array/message_layout_entries"
android:entryValues="@array/message_layout_values"
android:key="@string/setting_key_message_layout"
android:title="@string/setting_message_layout" />
<ListPreference
android:defaultValue="@string/time_format_value_relative"
android:entries="@array/time_format_entries"