diff options
author | Janek Bevendorff <janek@jbev.net> | 2020-05-30 23:46:06 +0300 |
---|---|---|
committer | Janek Bevendorff <janek@jbev.net> | 2020-05-31 01:26:14 +0300 |
commit | 4f75432fc6f5a10323641891dd64e9413634a5b4 (patch) | |
tree | 3fbf6436b6b1cce1c70038e3b7e6034af91b6031 /src/core | |
parent | 9d2e066acae0cd7bd3447bf3c5fa8ff0c0c4f073 (diff) |
Add option for monochrome tray icon
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/Config.cpp | 5 | ||||
-rw-r--r-- | src/core/Config.h | 2 | ||||
-rw-r--r-- | src/core/Resources.cpp | 39 | ||||
-rw-r--r-- | src/core/Resources.h | 2 |
4 files changed, 37 insertions, 11 deletions
diff --git a/src/core/Config.cpp b/src/core/Config.cpp index b413d460e..bd4d0a7dd 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -93,7 +93,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = { {Config::GUI_HidePreviewPanel, {QS("GUI/HidePreviewPanel"), Roaming, false}}, {Config::GUI_ToolButtonStyle, {QS("GUI/ToolButtonStyle"), Roaming, Qt::ToolButtonIconOnly}}, {Config::GUI_ShowTrayIcon, {QS("GUI/ShowTrayIcon"), Roaming, false}}, - {Config::GUI_DarkTrayIcon, {QS("GUI/DarkTrayIcon"), Roaming, false}}, + {Config::GUI_TrayIconAppearance, {QS("GUI/TrayIconAppearance"), Roaming, {}}}, {Config::GUI_MinimizeToTray, {QS("GUI/MinimizeToTray"), Roaming, false}}, {Config::GUI_MinimizeOnStartup, {QS("GUI/MinimizeOnStartup"), Roaming, false}}, {Config::GUI_MinimizeOnClose, {QS("GUI/MinimizeOnClose"), Roaming, false}}, @@ -345,7 +345,8 @@ static const QHash<QString, Config::ConfigKey> deprecationMap = { {QS("generator/WordCase"), Config::PasswordGenerator_WordCase}, {QS("generator/Type"), Config::PasswordGenerator_Type}, {QS("QtErrorMessageShown"), Config::Messages_Qt55CompatibilityWarning}, - {QS("GUI/HidePasswords"), Config::Deleted}}; + {QS("GUI/HidePasswords"), Config::Deleted}, + {QS("GUI/DarkTrayIcon"), Config::Deleted}}; /** * Migrate settings from previous versions. diff --git a/src/core/Config.h b/src/core/Config.h index 8d4609a21..b3dc0fb85 100644 --- a/src/core/Config.h +++ b/src/core/Config.h @@ -76,7 +76,7 @@ public: GUI_HidePreviewPanel, GUI_ToolButtonStyle, GUI_ShowTrayIcon, - GUI_DarkTrayIcon, + GUI_TrayIconAppearance, GUI_MinimizeToTray, GUI_MinimizeOnStartup, GUI_MinimizeOnClose, diff --git a/src/core/Resources.cpp b/src/core/Resources.cpp index c4f747232..608e02dcf 100644 --- a/src/core/Resources.cpp +++ b/src/core/Resources.cpp @@ -28,6 +28,7 @@ #include "core/Config.h" #include "core/Global.h" #include "gui/MainWindow.h" +#include "gui/osutils/OSUtils.h" Resources* Resources::m_instance(nullptr); @@ -100,19 +101,48 @@ QIcon Resources::applicationIcon() return icon("keepassxc", false); } +QString Resources::getTrayIconAppearance() const +{ + auto iconAppearance = config()->get(Config::GUI_TrayIconAppearance).toString(); + if (iconAppearance.isNull()) { +#ifdef Q_OS_MACOS + iconAppearance = osUtils->isDarkMode() ? "monochrome-light" : "monochrome-dark"; +#else + iconAppearance = "monochrome-light"; +#endif + } + return iconAppearance; +} + QIcon Resources::trayIcon() { - return useDarkIcon() ? icon("keepassxc-dark", false) : icon("keepassxc", false); + return trayIconUnlocked(); } QIcon Resources::trayIconLocked() { + auto iconApperance = getTrayIconAppearance(); + + if (iconApperance == "monochrome-light") { + return icon("keepassxc-monochrome-light-locked", false); + } + if (iconApperance == "monochrome-dark") { + return icon("keepassxc-monochrome-dark-locked", false); + } return icon("keepassxc-locked", false); } QIcon Resources::trayIconUnlocked() { - return useDarkIcon() ? icon("keepassxc-dark", false) : icon("keepassxc-unlocked", false); + auto iconApperance = getTrayIconAppearance(); + + if (iconApperance == "monochrome-light") { + return icon("keepassxc-monochrome-light", false); + } + if (iconApperance == "monochrome-dark") { + return icon("keepassxc-monochrome-dark", false); + } + return icon("keepassxc", false); } QIcon Resources::icon(const QString& name, bool recolor, const QColor& overrideColor) @@ -223,11 +253,6 @@ bool Resources::testResourceDir(const QString& dir) return false; } -bool Resources::useDarkIcon() -{ - return config()->get(Config::GUI_DarkTrayIcon).toBool(); -} - Resources* Resources::instance() { if (!m_instance) { diff --git a/src/core/Resources.h b/src/core/Resources.h index 97a994aa1..11302a5b6 100644 --- a/src/core/Resources.h +++ b/src/core/Resources.h @@ -40,9 +40,9 @@ public: static Resources* instance(); private: + QString getTrayIconAppearance() const; Resources(); bool testResourceDir(const QString& dir); - bool useDarkIcon(); static Resources* m_instance; |