diff --git a/gotify_tray/database/default_settings.py b/gotify_tray/database/default_settings.py index 6ce350d..db8d6dc 100644 --- a/gotify_tray/database/default_settings.py +++ b/gotify_tray/database/default_settings.py @@ -14,6 +14,7 @@ DEFAULT_SETTINGS = { "tray/notifications/priority": 5, "tray/notifications/duration_ms": 5000, "tray/notifications/icon/show": True, + "tray/notifications/click": 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 a3107c9..1d16eb5 100644 --- a/gotify_tray/gui/MainApplication.py +++ b/gotify_tray/gui/MainApplication.py @@ -335,6 +335,10 @@ class MainApplication(QtWidgets.QApplication): closed_callback=self.listener_closed_callback, ) + def tray_notification_clicked_callback(self): + if settings.value("tray/notifications/click", type=bool): + self.main_window.bring_to_front() + def tray_activated_callback( self, reason: QtWidgets.QSystemTrayIcon.ActivationReason ): @@ -349,7 +353,7 @@ class MainApplication(QtWidgets.QApplication): self.tray.actionSettings.triggered.connect(self.settings_callback) self.tray.actionShowWindow.triggered.connect(self.main_window.bring_to_front) self.tray.actionReconnect.triggered.connect(self.reconnect_callback) - self.tray.messageClicked.connect(self.main_window.bring_to_front) + self.tray.messageClicked.connect(self.tray_notification_clicked_callback) self.tray.activated.connect(self.tray_activated_callback) self.main_window.refresh.connect(self.refresh_callback) diff --git a/gotify_tray/gui/designs/widget_settings.py b/gotify_tray/gui/designs/widget_settings.py index 3a0f95c..530e3e3 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, 274) + Dialog.resize(384, 285) self.gridLayout = QtWidgets.QGridLayout(Dialog) self.gridLayout.setObjectName("gridLayout") self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) @@ -30,32 +30,35 @@ class Ui_Dialog(object): self.groupBox_notifications.setObjectName("groupBox_notifications") self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_notifications) self.gridLayout_4.setObjectName("gridLayout_4") - 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_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.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_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.spin_duration = QtWidgets.QSpinBox(self.groupBox_notifications) - self.spin_duration.setMinimum(500) - self.spin_duration.setMaximum(30000) - self.spin_duration.setSingleStep(100) - self.spin_duration.setObjectName("spin_duration") - self.gridLayout_4.addWidget(self.spin_duration, 1, 1, 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) - 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) + 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) + self.spin_duration.setSingleStep(100) + self.spin_duration.setObjectName("spin_duration") + self.gridLayout_4.addWidget(self.spin_duration, 1, 1, 1, 1) + 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.verticalLayout_4.addWidget(self.groupBox_notifications) self.groupBox_server_info = QtWidgets.QGroupBox(self.tab_general) self.groupBox_server_info.setObjectName("groupBox_server_info") @@ -153,10 +156,11 @@ 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.label_notification_duration.setText(_translate("Dialog", "Notification duration:")) - self.cb_notify.setText(_translate("Dialog", "Show a notification for missed messages after reconnecting")) + self.cb_notification_click.setText(_translate("Dialog", "Clicking the notification pop-up opens the main window")) self.groupBox_server_info.setTitle(_translate("Dialog", "Server info")) self.pb_change_server_info.setText(_translate("Dialog", "Change server info")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_general), _translate("Dialog", "General")) diff --git a/gotify_tray/gui/designs/widget_settings.ui b/gotify_tray/gui/designs/widget_settings.ui index 3f3579b..3abaad3 100644 --- a/gotify_tray/gui/designs/widget_settings.ui +++ b/gotify_tray/gui/designs/widget_settings.ui @@ -7,7 +7,7 @@ 0 0 384 - 274 + 285 @@ -40,30 +40,10 @@ Notifications - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - + + - ms - - - - - - - Minimum priority to show notifications: + Show a notification for missed messages after reconnecting @@ -74,16 +54,10 @@ - - - - 500 - - - 30000 - - - 100 + + + + ms @@ -100,10 +74,43 @@ - - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + - Show a notification for missed messages after reconnecting + Minimum priority to show notifications: + + + + + + + 500 + + + 30000 + + + 100 + + + + + + + Clicking the notification pop-up opens the main window diff --git a/gotify_tray/gui/widgets/SettingsDialog.py b/gotify_tray/gui/widgets/SettingsDialog.py index b4024c5..45fb368 100644 --- a/gotify_tray/gui/widgets/SettingsDialog.py +++ b/gotify_tray/gui/widgets/SettingsDialog.py @@ -56,6 +56,10 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog): settings.value("message/check_missed/notify", type=bool) ) + self.cb_notification_click.setChecked( + settings.value("tray/notifications/click", type=bool) + ) + # Logging self.combo_logging.addItems( [ @@ -149,6 +153,7 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog): self.spin_priority.valueChanged.connect(self.settings_changed_callback) 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) # Server info self.pb_change_server_info.clicked.connect(self.change_server_info_callback) @@ -180,6 +185,9 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog): settings.setValue("tray/notifications/priority", self.spin_priority.value()) settings.setValue("tray/notifications/duration_ms", self.spin_duration.value()) settings.setValue("message/check_missed/notify", self.cb_notify.isChecked()) + settings.setValue( + "tray/notifications/click", self.cb_notification_click.isChecked() + ) # Logging selected_level = self.combo_logging.currentText()