refactor: Allow for colorful tray icon but fall back to symbolic with fallback

This commit is contained in:
sithlord48 2025-10-29 14:31:18 -04:00 committed by Nick Bolton
parent eee4efd59d
commit 14fa29505d
6 changed files with 61 additions and 3 deletions

View file

@ -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;
}

View file

@ -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

View file

@ -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"),

View file

@ -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";

View file

@ -132,6 +132,31 @@
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QLabel" name="lblTrayIconStyle">
<property name="text">
<string>Tray icon style</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbIconColorful">
<property name="text">
<string>Colorful</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="rbIconMono">
<property name="text">
<string>Monocolor</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
@ -668,6 +693,8 @@
<tabstop>cbScrollDirection</tabstop>
<tabstop>cbAutoUpdate</tabstop>
<tabstop>cbCloseToTray</tabstop>
<tabstop>rbIconColorful</tabstop>
<tabstop>rbIconMono</tabstop>
<tabstop>groupSecurity</tabstop>
<tabstop>lineTlsCertPath</tabstop>
<tabstop>btnTlsCertPath</tabstop>

View file

@ -1079,6 +1079,18 @@ Al habilitar esta opción, se deshabilitará la interfaz gráfica de usuario (GU
<source>Leave app running in notification area when the window is closed</source>
<translation type="unfinished">Dejar la aplicación ejecutándose en el área de notificación cuando la ventana esté cerrada</translation>
</message>
<message>
<source>Tray icon style</source>
<translation type="unfinished">Estilo de icono de bandeja</translation>
</message>
<message>
<source>Colorful</source>
<translation type="unfinished">Vistoso</translation>
</message>
<message>
<source>Monocolor</source>
<translation type="unfinished">Monocolor</translation>
</message>
<message>
<source>Enable TLS Encryption</source>
<translation type="unfinished">Habilitar el cifrado TLS</translation>