diff --git a/src/keepass2android-app/Resources/values-v31/styles.xml b/src/keepass2android-app/Resources/values-v31/styles.xml new file mode 100644 index 000000000..8962a0e76 --- /dev/null +++ b/src/keepass2android-app/Resources/values-v31/styles.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/src/keepass2android-app/Resources/values/config.xml b/src/keepass2android-app/Resources/values/config.xml index b84fee880..db42187c2 100644 --- a/src/keepass2android-app/Resources/values/config.xml +++ b/src/keepass2android-app/Resources/values/config.xml @@ -73,6 +73,7 @@ omitbackup list_size design_key + System app_language_pref_key sort_key sort_key_new diff --git a/src/keepass2android-app/Resources/values/strings.xml b/src/keepass2android-app/Resources/values/strings.xml index f583fd3f4..3e82c071e 100644 --- a/src/keepass2android-app/Resources/values/strings.xml +++ b/src/keepass2android-app/Resources/values/strings.xml @@ -1249,9 +1249,17 @@ Light Dark + Material You System settings + + Light + Dark + MaterialYou + System + Design + System No encryption (FTP) Implicit encryption (FTP over TLS, FTPS) diff --git a/src/keepass2android-app/Utils/ActivityDesign.cs b/src/keepass2android-app/Utils/ActivityDesign.cs index 9bd2ffe70..7b2d02dc2 100644 --- a/src/keepass2android-app/Utils/ActivityDesign.cs +++ b/src/keepass2android-app/Utils/ActivityDesign.cs @@ -109,6 +109,7 @@ public int NightModePreference string design = prefs.GetString(_activity.GetString(Resource.String.design_key), _activity.GetString(Resource.String.design_default)); return design switch { + "MaterialYou" => AppCompatDelegate.ModeNightFollowSystem, "System" => AppCompatDelegate.ModeNightFollowSystem, "Light" => AppCompatDelegate.ModeNightNo, "Dark" => AppCompatDelegate.ModeNightYes, @@ -117,6 +118,19 @@ public int NightModePreference } } + public bool IsMaterialYouEnabled + { + get + { + var prefs = PreferenceManager.GetDefaultSharedPreferences(_activity); + string design = prefs.GetString( + _activity.GetString(Resource.String.design_key), + _activity.GetString(Resource.String.design_default) + ); + return design == "MaterialYou"; + } + } + public void ApplyDialogTheme() { diff --git a/src/keepass2android-app/settings/AppSettingsActivity.cs b/src/keepass2android-app/settings/AppSettingsActivity.cs index cc12068e7..adbaf322c 100644 --- a/src/keepass2android-app/settings/AppSettingsActivity.cs +++ b/src/keepass2android-app/settings/AppSettingsActivity.cs @@ -452,7 +452,20 @@ public override void OnCreate(Bundle? savedInstanceState) base.OnCreate(savedInstanceState); FindPreference(GetString(Resource.String.keyfile_key)).PreferenceChange += OnRememberKeyFileHistoryChanged; - + FindPreference(GetString(Resource.String.design_key)).PreferenceChange += (sender, args) => + { + var newDesign = args.NewValue.ToString(); + Kp2aLog.Log($"Design changed to: {newDesign}"); + + if (newDesign == "MaterialYou" && (int)Android.OS.Build.VERSION.SdkInt >= 31) + { + App.Kp2a.ShowMessage(Activity, + GetString(Resource.String.material_you_enabled), + MessageSeverity.Info); + } + // restart to apply theme change. Recreating would be nicer, but that - for some reason - causes GroupActivity to be twice on the backstack afterwards :-( + Activity.Finish(); + }; } } public class DisplayPreferenceFragment : PreferenceFragmentWithResource