diff --git a/share/keepassxc.ini b/share/keepassxc.ini index c6f0654fe..54920224a 100644 --- a/share/keepassxc.ini +++ b/share/keepassxc.ini @@ -16,6 +16,7 @@ LastOpenedDatabases=@Invalid() [GUI] Language=system ShowTrayIcon=false +DarkTrayIcon=false MinimizeToTray=false MinimizeOnClose=false MinimizeOnStartup=false diff --git a/src/core/FilePath.cpp b/src/core/FilePath.cpp index b5c9d1020..89b0e4643 100644 --- a/src/core/FilePath.cpp +++ b/src/core/FilePath.cpp @@ -98,6 +98,15 @@ QIcon FilePath::applicationIcon() #endif } +QIcon FilePath::applicationIconDark() +{ +#ifdef KEEPASSXC_DIST_SNAP + return icon("apps", "keepassxc-dark", false); +#else + return icon("apps", "keepassxc-dark"); +#endif +} + QIcon FilePath::trayIconLocked() { #ifdef KEEPASSXC_DIST_SNAP @@ -116,6 +125,15 @@ QIcon FilePath::trayIconUnlocked() #endif } +QIcon FilePath::trayIconUnlockedDark() +{ +#ifdef KEEPASSXC_DIST_SNAP + return icon("apps", "keepassxc-dark", false); +#else + return icon("apps", "keepassxc-dark"); +#endif +} + QIcon FilePath::icon(const QString& category, const QString& name, bool fromTheme) { QString combinedName = category + "/" + name; diff --git a/src/core/FilePath.h b/src/core/FilePath.h index 34edcbc93..fdadee79e 100644 --- a/src/core/FilePath.h +++ b/src/core/FilePath.h @@ -28,8 +28,10 @@ public: QString dataPath(const QString& name); QString pluginPath(const QString& name); QIcon applicationIcon(); + QIcon applicationIconDark(); QIcon trayIconLocked(); QIcon trayIconUnlocked(); + QIcon trayIconUnlockedDark(); QIcon icon(const QString& category, const QString& name, bool fromTheme = true); QIcon onOffIcon(const QString& category, const QString& name); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index fa16adb80..044cb736b 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -773,9 +773,10 @@ bool MainWindow::saveLastDatabases() void MainWindow::updateTrayIcon() { if (isTrayIconEnabled()) { + bool darkIcon = config()->get("GUI/DarkTrayIcon").toBool(); + if (!m_trayIcon) { m_trayIcon = new QSystemTrayIcon(this); - QMenu* menu = new QMenu(this); QAction* actionToggle = new QAction(tr("Toggle window"), menu); @@ -795,11 +796,21 @@ void MainWindow::updateTrayIcon() connect(actionToggle, SIGNAL(triggered()), SLOT(toggleWindow())); m_trayIcon->setContextMenu(menu); - m_trayIcon->setIcon(filePath()->applicationIcon()); + + if(darkIcon){ + m_trayIcon->setIcon(filePath()->applicationIconDark()); + } else { + m_trayIcon->setIcon(filePath()->applicationIcon()); + } + m_trayIcon->show(); } if (m_ui->tabWidget->hasLockableDatabases()) { - m_trayIcon->setIcon(filePath()->trayIconUnlocked()); + if(darkIcon){ + m_trayIcon->setIcon(filePath()->trayIconUnlockedDark()); + } else { + m_trayIcon->setIcon(filePath()->trayIconUnlocked()); + } } else { m_trayIcon->setIcon(filePath()->trayIconLocked()); diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index 4ba81c6f7..ce3df3338 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -136,6 +136,7 @@ void SettingsWidget::loadSettings() m_generalUi->detailsHideCheckBox->setChecked(config()->get("GUI/HideDetailsView").toBool()); m_generalUi->systrayShowCheckBox->setChecked(config()->get("GUI/ShowTrayIcon").toBool()); + m_generalUi->systrayDarkIconCheckBox->setChecked(config()->get("GUI/DarkTrayIcon").toBool()); m_generalUi->systrayMinimizeToTrayCheckBox->setChecked(config()->get("GUI/MinimizeToTray").toBool()); m_generalUi->systrayMinimizeOnCloseCheckBox->setChecked(config()->get("GUI/MinimizeOnClose").toBool()); m_generalUi->systrayMinimizeOnStartup->setChecked(config()->get("GUI/MinimizeOnStartup").toBool()); @@ -208,6 +209,7 @@ void SettingsWidget::saveSettings() config()->set("GUI/HideDetailsView", m_generalUi->detailsHideCheckBox->isChecked()); config()->set("GUI/ShowTrayIcon", m_generalUi->systrayShowCheckBox->isChecked()); + config()->set("GUI/DarkTrayIcon", m_generalUi->systrayDarkIconCheckBox->isChecked()); config()->set("GUI/MinimizeToTray", m_generalUi->systrayMinimizeToTrayCheckBox->isChecked()); config()->set("GUI/MinimizeOnClose", m_generalUi->systrayMinimizeOnCloseCheckBox->isChecked()); config()->set("GUI/MinimizeOnStartup", m_generalUi->systrayMinimizeOnStartup->isChecked()); @@ -265,6 +267,7 @@ void SettingsWidget::enableAutoSaveOnExit(bool checked) void SettingsWidget::enableSystray(bool checked) { + m_generalUi->systrayDarkIconCheckBox->setEnabled(checked); m_generalUi->systrayMinimizeToTrayCheckBox->setEnabled(checked); m_generalUi->systrayMinimizeOnCloseCheckBox->setEnabled(checked); } diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui index 7dc4487cf..684cb4353 100644 --- a/src/gui/SettingsWidgetGeneral.ui +++ b/src/gui/SettingsWidgetGeneral.ui @@ -245,6 +245,42 @@ + + + + 0 + + + QLayout::SetMaximumSize + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + false + + + Dark system tray icon + + + + +