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();