diff --git a/gotify_tray/database/default_settings.py b/gotify_tray/database/default_settings.py
index 80d9190..0dc83b3 100644
--- a/gotify_tray/database/default_settings.py
+++ b/gotify_tray/database/default_settings.py
@@ -16,6 +16,7 @@ DEFAULT_SETTINGS = {
"tray/notifications/duration_ms": 5000,
"tray/notifications/icon/show": True,
"tray/notifications/click": True,
+ "tray/icon/unread": True,
"watchdog/interval/s": 60,
"MessageWidget/image/size": 33,
"MainWindow/label/size": 25,
diff --git a/gotify_tray/gui/MainApplication.py b/gotify_tray/gui/MainApplication.py
index ffdb6dd..a710211 100644
--- a/gotify_tray/gui/MainApplication.py
+++ b/gotify_tray/gui/MainApplication.py
@@ -267,7 +267,10 @@ class MainApplication(QtWidgets.QApplication):
self.add_message_to_model(message)
# Change the tray icon to show there are unread notifications
- if not self.main_window.isActiveWindow():
+ if (
+ settings.value("tray/icon/unread", type=bool)
+ and not self.main_window.isActiveWindow()
+ ):
self.tray.set_icon_unread()
# Show a notification
@@ -340,7 +343,9 @@ class MainApplication(QtWidgets.QApplication):
def settings_callback(self):
settings_dialog = SettingsDialog()
settings_dialog.quit_requested.connect(self.quit)
- settings_dialog.theme_change_requested.connect(lambda theme: set_theme(self, theme))
+ settings_dialog.theme_change_requested.connect(
+ lambda theme: set_theme(self, theme)
+ )
accepted = settings_dialog.exec()
if accepted and settings_dialog.settings_changed:
diff --git a/gotify_tray/gui/designs/widget_settings.py b/gotify_tray/gui/designs/widget_settings.py
index e24d091..f622f6f 100644
--- a/gotify_tray/gui/designs/widget_settings.py
+++ b/gotify_tray/gui/designs/widget_settings.py
@@ -12,7 +12,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
- Dialog.resize(384, 346)
+ Dialog.resize(402, 369)
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
@@ -30,26 +30,9 @@ class Ui_Dialog(object):
self.groupBox_notifications.setObjectName("groupBox_notifications")
self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_notifications)
self.gridLayout_4.setObjectName("gridLayout_4")
- self.cb_notify = QtWidgets.QCheckBox(self.groupBox_notifications)
- self.cb_notify.setObjectName("cb_notify")
- self.gridLayout_4.addWidget(self.cb_notify, 2, 0, 1, 3)
self.label_notification_duration = QtWidgets.QLabel(self.groupBox_notifications)
self.label_notification_duration.setObjectName("label_notification_duration")
self.gridLayout_4.addWidget(self.label_notification_duration, 1, 0, 1, 1)
- self.label_notification_duration_ms = QtWidgets.QLabel(self.groupBox_notifications)
- self.label_notification_duration_ms.setObjectName("label_notification_duration_ms")
- self.gridLayout_4.addWidget(self.label_notification_duration_ms, 1, 2, 1, 1)
- self.spin_priority = QtWidgets.QSpinBox(self.groupBox_notifications)
- self.spin_priority.setMinimum(1)
- self.spin_priority.setMaximum(10)
- self.spin_priority.setProperty("value", 5)
- self.spin_priority.setObjectName("spin_priority")
- self.gridLayout_4.addWidget(self.spin_priority, 0, 1, 1, 1)
- spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
- self.gridLayout_4.addItem(spacerItem, 0, 2, 1, 1)
- self.label_notification_priority = QtWidgets.QLabel(self.groupBox_notifications)
- self.label_notification_priority.setObjectName("label_notification_priority")
- self.gridLayout_4.addWidget(self.label_notification_priority, 0, 0, 1, 1)
self.spin_duration = QtWidgets.QSpinBox(self.groupBox_notifications)
self.spin_duration.setMinimum(500)
self.spin_duration.setMaximum(30000)
@@ -59,6 +42,26 @@ class Ui_Dialog(object):
self.cb_notification_click = QtWidgets.QCheckBox(self.groupBox_notifications)
self.cb_notification_click.setObjectName("cb_notification_click")
self.gridLayout_4.addWidget(self.cb_notification_click, 3, 0, 1, 3)
+ self.label_notification_duration_ms = QtWidgets.QLabel(self.groupBox_notifications)
+ self.label_notification_duration_ms.setObjectName("label_notification_duration_ms")
+ self.gridLayout_4.addWidget(self.label_notification_duration_ms, 1, 2, 1, 1)
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
+ self.gridLayout_4.addItem(spacerItem, 0, 2, 1, 1)
+ self.cb_notify = QtWidgets.QCheckBox(self.groupBox_notifications)
+ self.cb_notify.setObjectName("cb_notify")
+ self.gridLayout_4.addWidget(self.cb_notify, 2, 0, 1, 3)
+ self.spin_priority = QtWidgets.QSpinBox(self.groupBox_notifications)
+ self.spin_priority.setMinimum(1)
+ self.spin_priority.setMaximum(10)
+ self.spin_priority.setProperty("value", 5)
+ self.spin_priority.setObjectName("spin_priority")
+ self.gridLayout_4.addWidget(self.spin_priority, 0, 1, 1, 1)
+ self.label_notification_priority = QtWidgets.QLabel(self.groupBox_notifications)
+ self.label_notification_priority.setObjectName("label_notification_priority")
+ self.gridLayout_4.addWidget(self.label_notification_priority, 0, 0, 1, 1)
+ self.cb_tray_icon_unread = QtWidgets.QCheckBox(self.groupBox_notifications)
+ self.cb_tray_icon_unread.setObjectName("cb_tray_icon_unread")
+ self.gridLayout_4.addWidget(self.cb_tray_icon_unread, 4, 0, 1, 3)
self.verticalLayout_4.addWidget(self.groupBox_notifications)
self.groupBox_2 = QtWidgets.QGroupBox(self.tab_general)
self.groupBox_2.setObjectName("groupBox_2")
@@ -201,11 +204,12 @@ class Ui_Dialog(object):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.groupBox_notifications.setTitle(_translate("Dialog", "Notifications"))
- self.cb_notify.setText(_translate("Dialog", "Show a notification for missed messages after reconnecting"))
self.label_notification_duration.setText(_translate("Dialog", "Notification duration:"))
- self.label_notification_duration_ms.setText(_translate("Dialog", "ms"))
- self.label_notification_priority.setText(_translate("Dialog", "Minimum priority to show notifications:"))
self.cb_notification_click.setText(_translate("Dialog", "Clicking the notification pop-up opens the main window"))
+ self.label_notification_duration_ms.setText(_translate("Dialog", "ms"))
+ self.cb_notify.setText(_translate("Dialog", "Show a notification for missed messages after reconnecting"))
+ self.label_notification_priority.setText(_translate("Dialog", "Minimum priority to show notifications:"))
+ self.cb_tray_icon_unread.setText(_translate("Dialog", "Change the tray icon color when there are unread notifications"))
self.groupBox_2.setTitle(_translate("Dialog", "Interface"))
self.label_theme.setText(_translate("Dialog", "Theme:"))
self.groupBox_server_info.setTitle(_translate("Dialog", "Server info"))
diff --git a/gotify_tray/gui/designs/widget_settings.ui b/gotify_tray/gui/designs/widget_settings.ui
index f06b655..34d540b 100644
--- a/gotify_tray/gui/designs/widget_settings.ui
+++ b/gotify_tray/gui/designs/widget_settings.ui
@@ -6,8 +6,8 @@
0
0
- 384
- 346
+ 402
+ 369
@@ -40,13 +40,6 @@
Notifications
- -
-
-
- Show a notification for missed messages after reconnecting
-
-
-
-
@@ -54,46 +47,6 @@
- -
-
-
- ms
-
-
-
- -
-
-
- 1
-
-
- 10
-
-
- 5
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- Minimum priority to show notifications:
-
-
-
-
@@ -114,6 +67,60 @@
+ -
+
+
+ ms
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Show a notification for missed messages after reconnecting
+
+
+
+ -
+
+
+ 1
+
+
+ 10
+
+
+ 5
+
+
+
+ -
+
+
+ Minimum priority to show notifications:
+
+
+
+ -
+
+
+ Change the tray icon color when there are unread notifications
+
+
+
diff --git a/gotify_tray/gui/widgets/SettingsDialog.py b/gotify_tray/gui/widgets/SettingsDialog.py
index 6a2a64f..371a84d 100644
--- a/gotify_tray/gui/widgets/SettingsDialog.py
+++ b/gotify_tray/gui/widgets/SettingsDialog.py
@@ -62,6 +62,10 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
settings.value("tray/notifications/click", type=bool)
)
+ self.cb_tray_icon_unread.setChecked(
+ settings.value("tray/icon/unread", type=bool)
+ )
+
# Theme
self.combo_theme.addItems(get_themes())
self.combo_theme.setCurrentText(settings.value("theme", type=str))
@@ -168,6 +172,7 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
self.spin_duration.valueChanged.connect(self.settings_changed_callback)
self.cb_notify.stateChanged.connect(self.settings_changed_callback)
self.cb_notification_click.stateChanged.connect(self.settings_changed_callback)
+ self.cb_tray_icon_unread.stateChanged.connect(self.settings_changed_callback)
# Theme
self.combo_theme.currentTextChanged.connect(self.settings_changed_callback)
@@ -208,6 +213,7 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
settings.setValue(
"tray/notifications/click", self.cb_notification_click.isChecked()
)
+ settings.setValue("tray/icon/unread", self.cb_tray_icon_unread.isChecked())
# Theme
current_theme = settings.value("theme", type=str)