diff --git a/src/lib/common/Settings.cpp b/src/lib/common/Settings.cpp
index 2f38efbd0..e2051873d 100644
--- a/src/lib/common/Settings.cpp
+++ b/src/lib/common/Settings.cpp
@@ -115,8 +115,8 @@ QVariant Settings::defaultValue(const QString &key)
}
if ((key == Core::UseHooks) || (key == Gui::CloseToTray) || (key == Gui::LogExpanded) ||
- (key == Gui::CloseReminder) || (key == Security::TlsEnabled) || (key == Security::CheckPeers) ||
- (key == Client::LanguageSync) || (key == Gui::ShowGenericClientFailureDialog)) {
+ (key == Gui::SymbolicTrayIcon) || (key == Gui::CloseReminder) || (key == Security::TlsEnabled) ||
+ (key == Security::CheckPeers) || (key == Client::LanguageSync) || (key == Gui::ShowGenericClientFailureDialog)) {
return true;
}
diff --git a/src/lib/common/Settings.h b/src/lib/common/Settings.h
index 9e8cf3f8f..1067a0bfb 100644
--- a/src/lib/common/Settings.h
+++ b/src/lib/common/Settings.h
@@ -69,6 +69,7 @@ public:
inline static const auto CloseReminder = QStringLiteral("gui/closeReminder");
inline static const auto CloseToTray = QStringLiteral("gui/closeToTray");
inline static const auto LogExpanded = QStringLiteral("gui/logExpanded");
+ inline static const auto SymbolicTrayIcon = QStringLiteral("gui/symbolicTrayIcon");
inline static const auto WindowGeometry = QStringLiteral("gui/windowGeometry");
inline static const auto ShowGenericClientFailureDialog = QStringLiteral("gui/showGenericClientFailureDialog");
};
@@ -189,6 +190,7 @@ private:
, Settings::Gui::CloseReminder
, Settings::Gui::CloseToTray
, Settings::Gui::LogExpanded
+ , Settings::Gui::SymbolicTrayIcon
, Settings::Gui::WindowGeometry
, Settings::Gui::ShowGenericClientFailureDialog
, Settings::Security::Certificate
diff --git a/src/lib/gui/MainWindow.cpp b/src/lib/gui/MainWindow.cpp
index a9cc0123a..996a350a0 100644
--- a/src/lib/gui/MainWindow.cpp
+++ b/src/lib/gui/MainWindow.cpp
@@ -753,8 +753,16 @@ void MainWindow::saveSettings() const
void MainWindow::setTrayIcon()
{
- static const auto themeIcon = QStringLiteral("%1-symbolic").arg(kRevFqdnName);
static const auto fallbackPath = QStringLiteral(":/icons/%1-%2/apps/64/%3");
+
+ QString themeIcon = kRevFqdnName;
+ if (!Settings::value(Settings::Gui::SymbolicTrayIcon).toBool()) {
+ m_trayIcon->setIcon(QIcon(fallbackPath.arg(kAppId, QStringLiteral("dark"), themeIcon)));
+ return;
+ }
+
+ themeIcon.append(QStringLiteral("-symbolic"));
+
#ifdef Q_OS_WIN
QSettings settings(
QStringLiteral("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"),
diff --git a/src/lib/gui/dialogs/SettingsDialog.cpp b/src/lib/gui/dialogs/SettingsDialog.cpp
index ea5fabeb6..62a2f81e1 100644
--- a/src/lib/gui/dialogs/SettingsDialog.cpp
+++ b/src/lib/gui/dialogs/SettingsDialog.cpp
@@ -44,6 +44,9 @@ SettingsDialog::SettingsDialog(QWidget *parent, const IServerConfig &serverConfi
ui->comboTlsKeyLength->setItemIcon(1, QIcon::fromTheme(QIcon::ThemeIcon::SecurityHigh));
ui->lblTlsCertInfo->setFixedSize(28, 28);
+ ui->rbIconMono->setIcon(QIcon::fromTheme(QStringLiteral("%1-symbolic").arg(kRevFqdnName)));
+ ui->rbIconColorful->setIcon(QIcon::fromTheme(kRevFqdnName));
+
// force the first tab, since qt creator sets the active tab as the last one
// the developer was looking at, and it's easy to accidentally save that.
ui->tabWidget->setCurrentIndex(0);
@@ -170,6 +173,7 @@ void SettingsDialog::accept()
Settings::setValue(Settings::Client::LanguageSync, ui->cbLanguageSync->isChecked());
Settings::setValue(Settings::Client::InvertScrollDirection, ui->cbScrollDirection->isChecked());
Settings::setValue(Settings::Gui::CloseToTray, ui->cbCloseToTray->isChecked());
+ Settings::setValue(Settings::Gui::SymbolicTrayIcon, ui->rbIconMono->isChecked());
Settings::setValue(Settings::Security::CheckPeers, ui->cbRequireClientCert->isChecked());
Settings::setValue(Settings::Client::ScrollSpeed, ui->sbScrollSpeed->value());
Settings::setValue(Settings::Core::Language, ui->comboLanguage->currentText());
@@ -207,6 +211,11 @@ void SettingsDialog::loadFromConfig()
ui->groupService->setVisible(false);
#endif
+ if (Settings::value(Settings::Gui::SymbolicTrayIcon).toBool())
+ ui->rbIconMono->setChecked(true);
+ else
+ ui->rbIconColorful->setChecked(true);
+
ui->lblDebugWarning->setVisible(Settings::value(Settings::Log::Level).toInt() > 4);
qDebug() << "load from config done";
diff --git a/src/lib/gui/dialogs/SettingsDialog.ui b/src/lib/gui/dialogs/SettingsDialog.ui
index 3030c6ca1..bf831c806 100644
--- a/src/lib/gui/dialogs/SettingsDialog.ui
+++ b/src/lib/gui/dialogs/SettingsDialog.ui
@@ -132,6 +132,31 @@
+ -
+
+
-
+
+
+ Tray icon style
+
+
+
+ -
+
+
+ Colorful
+
+
+
+ -
+
+
+ Monocolor
+
+
+
+
+
@@ -668,6 +693,8 @@
cbScrollDirection
cbAutoUpdate
cbCloseToTray
+ rbIconColorful
+ rbIconMono
groupSecurity
lineTlsCertPath
btnTlsCertPath
diff --git a/translations/deskflow_es.ts b/translations/deskflow_es.ts
index d61f79856..e21126957 100644
--- a/translations/deskflow_es.ts
+++ b/translations/deskflow_es.ts
@@ -1079,6 +1079,18 @@ Al habilitar esta opción, se deshabilitará la interfaz gráfica de usuario (GU
Leave app running in notification area when the window is closed
Dejar la aplicación ejecutándose en el área de notificación cuando la ventana esté cerrada
+
+ Tray icon style
+ Estilo de icono de bandeja
+
+
+ Colorful
+ Vistoso
+
+
+ Monocolor
+ Monocolor
+
Enable TLS Encryption
Habilitar el cifrado TLS