diff --git a/resources/graphics/rssguard_mono.png b/resources/graphics/rssguard_mono.png
index 18f84e0cb..cad2dd806 100755
Binary files a/resources/graphics/rssguard_mono.png and b/resources/graphics/rssguard_mono.png differ
diff --git a/resources/graphics/rssguard_plain_mono.png b/resources/graphics/rssguard_plain_mono.png
index abe1a800b..74da83479 100755
Binary files a/resources/graphics/rssguard_plain_mono.png and b/resources/graphics/rssguard_plain_mono.png differ
diff --git a/resources/rssguard.qrc b/resources/rssguard.qrc
index 0a46e24a5..a3b14fd47 100755
--- a/resources/rssguard.qrc
+++ b/resources/rssguard.qrc
@@ -6,8 +6,13 @@
text/COPYING_GNU_GPL_HTML
graphics/rssguard.ico
+
graphics/rssguard.png
graphics/rssguard_plain.png
+
+ graphics/rssguard_mono.png
+ graphics/rssguard_plain_mono.png
+
graphics/misc/adblock.png
graphics/misc/adblock-disabled.png
graphics/misc/gmail.png
diff --git a/src/librssguard/definitions/definitions.h b/src/librssguard/definitions/definitions.h
index 49506ef54..9146bac84 100755
--- a/src/librssguard/definitions/definitions.h
+++ b/src/librssguard/definitions/definitions.h
@@ -13,7 +13,6 @@
#define ARGUMENTS_LIST_SEPARATOR "\n"
-#define DESKTOP_FILE_NAME "com.github.rssguard.desktop"
#define LOCALHOST_ADDRESS "http://localhost"
#define ADBLOCK_ADBLOCKED_PAGE "adblockedpage"
#define ADBLOCK_HOWTO_FILTERS "http://adblockplus.org/en/filters"
@@ -228,8 +227,13 @@
#define APP_THEME_PATH QSL(":/graphics")
#define APP_SQL_PATH QSL(":/sql")
#define APP_INFO_PATH QSL(":/text")
+
#define APP_ICON_PATH QSL(":/graphics/rssguard.png")
#define APP_ICON_PLAIN_PATH QSL(":/graphics/rssguard_plain.png")
+
+#define APP_ICON_MONO_PATH QSL(":/graphics/rssguard_mono.png")
+#define APP_ICON_MONO_PLAIN_PATH QSL(":/graphics/rssguard_plain_mono.png")
+
#define APP_SKIN_PATH QSL(":/skins")
#define APP_INITIAL_FEEDS_PATH QSL(":/initial_feeds")
#define APP_LANG_PATH QSL(":/localization")
diff --git a/src/librssguard/gui/settings/settingsgui.cpp b/src/librssguard/gui/settings/settingsgui.cpp
index 629a0c424..bfedf1a60 100755
--- a/src/librssguard/gui/settings/settingsgui.cpp
+++ b/src/librssguard/gui/settings/settingsgui.cpp
@@ -42,6 +42,7 @@ SettingsGui::SettingsGui(Settings* settings, QWidget* parent) : SettingsPanel(se
connect(m_ui->m_grpTray, &QGroupBox::toggled, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_checkEnableNotifications, &QCheckBox::toggled, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_checkHidden, &QCheckBox::toggled, this, &SettingsGui::dirtifySettings);
+ connect(m_ui->m_checkMonochromeIcons, &QCheckBox::toggled, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_checkHideWhenMinimized, &QCheckBox::toggled, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_checkHideTabBarIfOneTabVisible, &QCheckBox::toggled, this, &SettingsGui::dirtifySettings);
connect(m_ui->m_checkCloseTabsDoubleClick, &QCheckBox::toggled, this, &SettingsGui::dirtifySettings);
@@ -114,6 +115,8 @@ void SettingsGui::loadSettings() {
}
}
+ m_ui->m_checkMonochromeIcons->setChecked(settings()->value(GROUP(GUI), SETTING(GUI::MonochromeTrayIcon)).toBool());
+
// Mark active theme.
if (current_theme == QSL(APP_NO_THEME)) {
// Because "no icon theme" lies at the index 0.
@@ -204,6 +207,13 @@ void SettingsGui::saveSettings() {
}
}
+ auto old_monochrome = settings()->value(GROUP(GUI), SETTING(GUI::MonochromeTrayIcon)).toBool();
+
+ if (old_monochrome != m_ui->m_checkMonochromeIcons->isChecked()) {
+ requireRestart();
+ settings()->setValue(GROUP(GUI), GUI::MonochromeTrayIcon, m_ui->m_checkMonochromeIcons->isChecked());
+ }
+
settings()->setValue(GROUP(GUI), GUI::MainWindowStartsHidden, m_ui->m_checkHidden->isChecked());
settings()->setValue(GROUP(GUI), GUI::HideMainWindowWhenMinimized, m_ui->m_checkHideWhenMinimized->isChecked());
diff --git a/src/librssguard/gui/settings/settingsgui.ui b/src/librssguard/gui/settings/settingsgui.ui
index f22312776..b7617dc52 100644
--- a/src/librssguard/gui/settings/settingsgui.ui
+++ b/src/librssguard/gui/settings/settingsgui.ui
@@ -152,27 +152,34 @@
QFormLayout::ExpandingFieldsGrow
- -
+
-
Hide main window when it is minimized
- -
+
-
Start application hidden
- -
+
-
Enable popup balloon tooltips
+ -
+
+
+ Use monochrome icon
+
+
+
@@ -359,16 +366,17 @@
m_cmbIconTheme
m_listStyles
m_treeSkins
+ m_grpTray
+ m_checkMonochromeIcons
+ m_checkEnableNotifications
m_checkHideWhenMinimized
m_checkHidden
- m_checkEnableNotifications
- m_checkNewTabDoubleClick
- m_checkHideTabBarIfOneTabVisible
m_checkCloseTabsDoubleClick
m_checkCloseTabsMiddleClick
+ m_checkNewTabDoubleClick
+ m_checkHideTabBarIfOneTabVisible
m_cmbToolbarButtonStyle
m_cmbSelectToolBar
- m_grpTray
diff --git a/src/librssguard/gui/systemtrayicon.cpp b/src/librssguard/gui/systemtrayicon.cpp
index 7933ed1ea..5cfe80916 100644
--- a/src/librssguard/gui/systemtrayicon.cpp
+++ b/src/librssguard/gui/systemtrayicon.cpp
@@ -114,9 +114,16 @@ void SystemTrayIcon::setNumber(int number, bool any_new_message) {
QPainter tray_painter;
tray_painter.begin(&background);
- tray_painter.setPen(Qt::black);
- tray_painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
- tray_painter.setRenderHint(QPainter::TextAntialiasing, true);
+
+ if (qApp->settings()->value(GROUP(GUI), SETTING(GUI::MonochromeTrayIcon)).toBool()) {
+ tray_painter.setPen(Qt::GlobalColor::white);
+ }
+ else {
+ tray_painter.setPen(Qt::GlobalColor::black);
+ }
+
+ tray_painter.setRenderHint(QPainter::RenderHint::SmoothPixmapTransform, true);
+ tray_painter.setRenderHint(QPainter::RenderHint::TextAntialiasing, true);
// Numbers with more than 2 digits won't be readable, display
// infinity symbol in that case.
@@ -140,7 +147,9 @@ void SystemTrayIcon::setNumber(int number, bool any_new_message) {
}
tray_painter.setFont(m_font);
- tray_painter.drawText(QRect(0, 0, 128, 128), Qt::AlignVCenter | Qt::AlignCenter, QString::number(number));
+ tray_painter.drawText(QRect(0, 0, 128, 128),
+ Qt::AlignmentFlag::AlignVCenter | Qt::AlignmentFlag::AlignCenter,
+ QString::number(number));
}
tray_painter.end();
diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp
index fb4e66c89..28f3eec8b 100755
--- a/src/librssguard/miscellaneous/application.cpp
+++ b/src/librssguard/miscellaneous/application.cpp
@@ -353,7 +353,13 @@ void Application::processExecutionMessage(const QString& message) {
SystemTrayIcon* Application::trayIcon() {
if (m_trayIcon == nullptr) {
- m_trayIcon = new SystemTrayIcon(APP_ICON_PATH, APP_ICON_PLAIN_PATH, m_mainForm);
+ if (qApp->settings()->value(GROUP(GUI), SETTING(GUI::MonochromeTrayIcon)).toBool()) {
+ m_trayIcon = new SystemTrayIcon(APP_ICON_MONO_PATH, APP_ICON_MONO_PLAIN_PATH, m_mainForm);
+ }
+ else {
+ m_trayIcon = new SystemTrayIcon(APP_ICON_PATH, APP_ICON_PLAIN_PATH, m_mainForm);
+ }
+
connect(m_trayIcon, &SystemTrayIcon::shown, m_feedReader->feedsModel(), &FeedsModel::notifyWithCounts);
connect(m_feedReader->feedsModel(), &FeedsModel::messageCountsChanged, m_trayIcon, &SystemTrayIcon::setNumber);
}
diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp
index dd1b01772..3c674c4d1 100755
--- a/src/librssguard/miscellaneous/settings.cpp
+++ b/src/librssguard/miscellaneous/settings.cpp
@@ -176,6 +176,10 @@ DKEY GUI::HideMainWindowWhenMinimized = "hide_when_minimized";
DVALUE(bool) GUI::HideMainWindowWhenMinimizedDef = false;
+DKEY GUI::MonochromeTrayIcon = "monochrome_tray_icon";
+
+DVALUE(bool) GUI::MonochromeTrayIconDef = false;
+
DKEY GUI::UseTrayIcon = "use_tray_icon";
DVALUE(bool) GUI::UseTrayIconDef = true;
diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h
index 03fe3f06e..34ba36f5c 100644
--- a/src/librssguard/miscellaneous/settings.h
+++ b/src/librssguard/miscellaneous/settings.h
@@ -196,6 +196,10 @@ namespace GUI {
VALUE(bool) UseTrayIconDef;
+ KEY MonochromeTrayIcon;
+
+ VALUE(bool) MonochromeTrayIconDef;
+
KEY EnableNotifications;
VALUE(bool) EnableNotificationsDef;
diff --git a/src/rssguard/main.cpp b/src/rssguard/main.cpp
index 5e0323284..e95ca09ff 100755
--- a/src/rssguard/main.cpp
+++ b/src/rssguard/main.cpp
@@ -29,7 +29,7 @@ int main(int argc, char* argv[]) {
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#if defined (Q_OS_LINUX)
- QApplication::setDesktopFileName(DESKTOP_FILE_NAME);
+ QApplication::setDesktopFileName(APP_DESKTOP_ENTRY_FILE);
#endif
// Ensure that ini format is used as application settings storage on Mac OS.
@@ -78,8 +78,8 @@ int main(int argc, char* argv[]) {
qApp->loadDynamicShortcuts();
qApp->hideOrShowMainForm();
- qApp->showTrayIcon();
qApp->feedReader()->feedsModel()->loadActivatedServiceAccounts();
+ qApp->showTrayIcon();
qApp->offerChanges();
qApp->showPolls();
qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->loadAllExpandStates();