diff --git a/src/keepass2android/Resources/drawable-hdpi/ic_action_search_holodark.png b/src/keepass2android/Resources/drawable-hdpi/ic_action_search_holodark.png new file mode 100644 index 00000000..02969216 Binary files /dev/null and b/src/keepass2android/Resources/drawable-hdpi/ic_action_search_holodark.png differ diff --git a/src/keepass2android/Resources/drawable-xhdpi/ic_action_search_holodark.png b/src/keepass2android/Resources/drawable-xhdpi/ic_action_search_holodark.png new file mode 100644 index 00000000..d37d6d25 Binary files /dev/null and b/src/keepass2android/Resources/drawable-xhdpi/ic_action_search_holodark.png differ diff --git a/src/keepass2android/Resources/drawable/ic_action_search_holodark.png b/src/keepass2android/Resources/drawable/ic_action_search_holodark.png new file mode 100644 index 00000000..d37d6d25 Binary files /dev/null and b/src/keepass2android/Resources/drawable/ic_action_search_holodark.png differ diff --git a/src/keepass2android/Resources/drawable/navigation_cancel_holodark.png b/src/keepass2android/Resources/drawable/navigation_cancel_holodark.png new file mode 100644 index 00000000..3336760d Binary files /dev/null and b/src/keepass2android/Resources/drawable/navigation_cancel_holodark.png differ diff --git a/src/keepass2android/Resources/values/attrs.xml b/src/keepass2android/Resources/values/attrs.xml new file mode 100644 index 00000000..fa131c5a --- /dev/null +++ b/src/keepass2android/Resources/values/attrs.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/keepass2android/Utils/ActivityDesign.cs b/src/keepass2android/Utils/ActivityDesign.cs new file mode 100644 index 00000000..ced31f94 --- /dev/null +++ b/src/keepass2android/Utils/ActivityDesign.cs @@ -0,0 +1,66 @@ +using Android.App; +using Android.Preferences; + +namespace keepass2android +{ + class ActivityDesign + { + private readonly Activity _activity; + + private int? _currentThemeId; + + public ActivityDesign(Activity activity) + { + _activity = activity; + } + + public void ApplyTheme() + { + if (HasThemes()) + { + var dark = UseDarkTheme; + int newTheme = dark ? Resource.Style.ThemeDark : Resource.Style.ThemeLight; + _activity.SetTheme(newTheme); + _currentThemeId = newTheme; + } + } + + public void ReapplyTheme() + { + int newTheme = UseDarkTheme ? Resource.Style.ThemeDark : Resource.Style.ThemeLight; + if (newTheme != _currentThemeId) + { + Kp2aLog.Log("recreating due to theme change."); + _activity.Recreate(); + } + + } + + private bool UseDarkTheme + { + get + { + var prefs = PreferenceManager.GetDefaultSharedPreferences(_activity); + string design = prefs.GetString(_activity.GetString(Resource.String.design_key), _activity.GetString(Resource.String.design_default)); + bool dark = (design == "Dark"); + return dark; + } + } + + public void ApplyDialogTheme() + { + if (HasThemes()) + { + bool dark = UseDarkTheme; + _activity.SetTheme(dark ? Resource.Style.DialogDark : Resource.Style.DialogLight); + } + + } + + public bool HasThemes() + { + return ((int)Android.OS.Build.VERSION.SdkInt >= 14); + } + + } +} \ No newline at end of file