From aee9394f9858b9285904618f1167b1aad240127f Mon Sep 17 00:00:00 2001 From: igrekster Date: Tue, 22 Feb 2022 18:27:43 +1100 Subject: [PATCH] Add option to control the display of the unread message count on task bar (#649) In a news reading style with many sources and leaving messages unread the unread message count becomes irrelevant. We already have an option to disable the count in the icon tray, but not on the task bar. Added a checkbox to enable/disable the message count on apps task bar icon / entry. Chose to put it into a new tab page as we might add more task bar functionality (progress update, recent articles, etc..). --- src/librssguard/gui/settings/settingsgui.cpp | 13 +++++++++++++ src/librssguard/gui/settings/settingsgui.ui | 18 ++++++++++++++++++ src/librssguard/miscellaneous/application.cpp | 4 +++- src/librssguard/miscellaneous/settings.cpp | 5 +++++ src/librssguard/miscellaneous/settings.h | 5 +++++ 5 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/librssguard/gui/settings/settingsgui.cpp b/src/librssguard/gui/settings/settingsgui.cpp index 7a9963a29..d5c81fb56 100644 --- a/src/librssguard/gui/settings/settingsgui.cpp +++ b/src/librssguard/gui/settings/settingsgui.cpp @@ -34,6 +34,10 @@ SettingsGui::SettingsGui(Settings* settings, QWidget* parent) : SettingsPanel(se << /*: Version column of skin list. */ tr("Version") << tr("Author")); +#if !defined(Q_OS_UNIX) || defined(Q_OS_MACOS) + m_ui->m_tabUi->setTabVisible(m_ui->m_tabUi->indexOf(m_ui->m_taskBar), false); +#endif + m_ui->m_helpCustomSkinColors->setHelpText(tr("You can override some colors defined by your skin here. " "Some colors are used dynamically throughout the application."), false); @@ -73,6 +77,7 @@ SettingsGui::SettingsGui(Settings* settings, QWidget* parent) : SettingsPanel(se &QStackedWidget::setCurrentIndex); connect(m_ui->m_gbCustomSkinColors, &QGroupBox::toggled, this, &SettingsGui::dirtifySettings); connect(m_ui->m_spinToolbarIconSize, QOverload::of(&QSpinBox::valueChanged), this, &SettingsGui::dirtifySettings); + connect(m_ui->m_displayUnreadMessageCountOnTaskBar, &QCheckBox::toggled, this, &SettingsGui::dirtifySettings); connect(m_ui->m_spinToolbarIconSize, QOverload::of(&QSpinBox::valueChanged), this, [=](int value) { if (value <= 0) { @@ -146,6 +151,10 @@ void SettingsGui::loadSettings() { m_ui->m_checkMonochromeIcons->setChecked(settings()->value(GROUP(GUI), SETTING(GUI::MonochromeTrayIcon)).toBool()); m_ui->m_checkCountUnreadMessages->setChecked(settings()->value(GROUP(GUI), SETTING(GUI::UnreadNumbersInTrayIcon)).toBool()); +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) + m_ui->m_displayUnreadMessageCountOnTaskBar->setChecked(settings()->value(GROUP(GUI), SETTING(GUI::UnreadNumbersOnTaskBar)).toBool()); +#endif + // Mark active theme. if (current_theme == QL1S(APP_NO_THEME)) { // Because "no icon theme" lies at the index 0. @@ -326,6 +335,10 @@ void SettingsGui::saveSettings() { settings()->setValue(GROUP(GUI), GUI::ForceDarkFusion, m_ui->m_checkForceDarkFusion->isChecked()); +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) + settings()->setValue(GROUP(GUI), GUI::UnreadNumbersOnTaskBar, m_ui->m_displayUnreadMessageCountOnTaskBar->isChecked()); +#endif + // Make sure that number of unread messages is shown in tray icon as requested. qApp->feedReader()->feedsModel()->notifyWithCounts(); diff --git a/src/librssguard/gui/settings/settingsgui.ui b/src/librssguard/gui/settings/settingsgui.ui index 39624963a..8271a06c7 100644 --- a/src/librssguard/gui/settings/settingsgui.ui +++ b/src/librssguard/gui/settings/settingsgui.ui @@ -410,6 +410,24 @@ + + + Task bar + + + + + 10 + 10 + 321 + 25 + + + + Display count of unread messages + + + diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index d0c420a3b..5e06db68a 100644 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -643,7 +643,9 @@ void Application::showMessagesNumber(int unread_messages, bool any_feed_has_unre QVariantMap setProperty; setProperty.insert("count", qint64(unread_messages)); - setProperty.insert("count-visible", unread_messages > 0); + bool task_bar_count_enabled = settings()->value(GROUP(GUI), + SETTING(GUI::UnreadNumbersOnTaskBar)).toBool(); + setProperty.insert("count-visible", task_bar_count_enabled && unread_messages > 0); signal << setProperty; diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index 98037cadf..eafa4f06f 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -260,6 +260,11 @@ DVALUE(bool) GUI::ForceDarkFusionDef = false; DKEY GUI::UnreadNumbersInTrayIcon = "show_unread_numbers_in_tray_icon"; DVALUE(bool) GUI::UnreadNumbersInTrayIconDef = true; +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) +DKEY GUI::UnreadNumbersOnTaskBar = "show_unread_numbers_on_task_bar"; +DVALUE(bool) GUI::UnreadNumbersOnTaskBarDef = true; +#endif + 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 72fb1d76a..abdfca435 100644 --- a/src/librssguard/miscellaneous/settings.h +++ b/src/librssguard/miscellaneous/settings.h @@ -267,6 +267,11 @@ namespace GUI { KEY UnreadNumbersInTrayIcon; VALUE(bool) UnreadNumbersInTrayIconDef; +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) + KEY UnreadNumbersOnTaskBar; + VALUE(bool) UnreadNumbersOnTaskBarDef; +#endif + KEY TabCloseMiddleClick; VALUE(bool) TabCloseMiddleClickDef;