From f316f0e25aeb41165d4d8a4dab561015781614c9 Mon Sep 17 00:00:00 2001 From: MrMirDan <58086007+MrMirDan@users.noreply.github.com> Date: Fri, 30 Jan 2026 06:19:50 +0200 Subject: [PATCH] feat: news notifications switch (#2126) * feat: news notifications switch * update: text changes * fix: notifications enabled by default --- client/settings.h | 9 ++++++++ client/ui/controllers/settingsController.cpp | 9 ++++++++ client/ui/controllers/settingsController.h | 3 +++ client/ui/qml/Pages2/PageSettings.qml | 2 +- .../ui/qml/Pages2/PageSettingsApplication.qml | 23 +++++++++++++++++++ client/ui/qml/Pages2/PageStart.qml | 2 +- 6 files changed, 46 insertions(+), 2 deletions(-) diff --git a/client/settings.h b/client/settings.h index bbe6f939c..e8277304e 100644 --- a/client/settings.h +++ b/client/settings.h @@ -94,6 +94,15 @@ public: setValue("Conf/startMinimized", enabled); } + bool isNewsNotifications() const + { + return value("Conf/newsNotifications", true).toBool(); + } + void setNewsNotifications(bool enabled) + { + setValue("Conf/newsNotifications", enabled); + } + bool isSaveLogs() const { return value("Conf/saveLogs", false).toBool(); diff --git a/client/ui/controllers/settingsController.cpp b/client/ui/controllers/settingsController.cpp index b32408c07..6a3726828 100644 --- a/client/ui/controllers/settingsController.cpp +++ b/client/ui/controllers/settingsController.cpp @@ -308,6 +308,15 @@ void SettingsController::toggleStartMinimized(bool enable) emit startMinimizedChanged(); } +bool SettingsController::isNewsNotificationsEnabled() +{ + return m_settings->isNewsNotifications(); +} +void SettingsController::toggleNewsNotificationsEnabled(bool enable) +{ + m_settings->setNewsNotifications(enable); +} + bool SettingsController::isScreenshotsEnabled() { return m_settings->isScreenshotsEnabled(); diff --git a/client/ui/controllers/settingsController.h b/client/ui/controllers/settingsController.h index 6ee5c6310..fa50bc23c 100644 --- a/client/ui/controllers/settingsController.h +++ b/client/ui/controllers/settingsController.h @@ -73,6 +73,9 @@ public slots: bool isStartMinimizedEnabled(); void toggleStartMinimized(bool enable); + bool isNewsNotificationsEnabled(); + void toggleNewsNotificationsEnabled(bool enable); + bool isScreenshotsEnabled(); void toggleScreenshotsEnabled(bool enable); diff --git a/client/ui/qml/Pages2/PageSettings.qml b/client/ui/qml/Pages2/PageSettings.qml index 3ebbc7980..456b622ae 100644 --- a/client/ui/qml/Pages2/PageSettings.qml +++ b/client/ui/qml/Pages2/PageSettings.qml @@ -148,7 +148,7 @@ PageType { id: news property string title: qsTr("News & Notifications") - readonly property string leftImagePath: NewsModel.hasUnread ? "qrc:/images/controls/news-unread.svg" : "qrc:/images/controls/news.svg" + readonly property string leftImagePath: NewsModel.hasUnread && SettingsController.isNewsNotificationsEnabled() ? "qrc:/images/controls/news-unread.svg" : "qrc:/images/controls/news.svg" property bool isVisible: ServersModel.hasServersFromGatewayApi readonly property var clickedHandler: function() { if (!ServersModel.hasServersFromGatewayApi) { diff --git a/client/ui/qml/Pages2/PageSettingsApplication.qml b/client/ui/qml/Pages2/PageSettingsApplication.qml index f40b6432e..b7e27b887 100644 --- a/client/ui/qml/Pages2/PageSettingsApplication.qml +++ b/client/ui/qml/Pages2/PageSettingsApplication.qml @@ -168,6 +168,29 @@ PageType { DividerType { visible: !GC.isMobile() } + + SwitcherType { + id: switcherNewsNotificationEnabled + + visible: ServersModel.hasServersFromGatewayApi + + Layout.fillWidth: true + Layout.margins: 16 + + text: qsTr("News Notification") + descriptionText: qsTr("Show notification icon when has unread news") + + checked: SettingsController.isNewsNotificationsEnabled() + onToggled: function() { + if (checked !== SettingsController.isNewsNotificationsEnabled()) { + SettingsController.toggleNewsNotificationsEnabled(checked) + } + } + } + + DividerType { + visible: !GC.isMobile() + } } footer: ColumnLayout { diff --git a/client/ui/qml/Pages2/PageStart.qml b/client/ui/qml/Pages2/PageStart.qml index ab4224fda..e32381ee8 100644 --- a/client/ui/qml/Pages2/PageStart.qml +++ b/client/ui/qml/Pages2/PageStart.qml @@ -383,7 +383,7 @@ PageType { objectName: "settingsTabButton" isSelected: tabBar.currentIndex === 2 - image: (ServersModel.hasServersFromGatewayApi && NewsModel.hasUnread) ? "qrc:/images/controls/settings-news.svg" : "qrc:/images/controls/settings.svg" + image: (ServersModel.hasServersFromGatewayApi && NewsModel.hasUnread && SettingsController.isNewsNotificationsEnabled()) ? "qrc:/images/controls/settings-news.svg" : "qrc:/images/controls/settings.svg" Binding { target: settingsTabButton property: "defaultColor"