Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorJanek Bevendorff <janek@jbev.net>2020-05-30 23:46:06 +0300
committerJanek Bevendorff <janek@jbev.net>2020-05-31 01:26:14 +0300
commit4f75432fc6f5a10323641891dd64e9413634a5b4 (patch)
tree3fbf6436b6b1cce1c70038e3b7e6034af91b6031 /src/core
parent9d2e066acae0cd7bd3447bf3c5fa8ff0c0c4f073 (diff)
Add option for monochrome tray icon
Diffstat (limited to 'src/core')
-rw-r--r--src/core/Config.cpp5
-rw-r--r--src/core/Config.h2
-rw-r--r--src/core/Resources.cpp39
-rw-r--r--src/core/Resources.h2
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;