diff --git a/gotify_tray/database/default_settings.py b/gotify_tray/database/default_settings.py
index 500ffd8..fa980e2 100644
--- a/gotify_tray/database/default_settings.py
+++ b/gotify_tray/database/default_settings.py
@@ -21,6 +21,7 @@ DEFAULT_SETTINGS = {
"MessageWidget/image/size": 33,
"MessageWidget/content_image/W_percentage": 1.0,
"MessageWidget/content_image/H_percentage": 0.5,
+ "MessageWidget/priority_color": True,
"MainWindow/label/size": 25,
"MainWindow/button/size": 33,
"MainWindow/application/icon/size": 40,
diff --git a/gotify_tray/gui/designs/widget_message.py b/gotify_tray/gui/designs/widget_message.py
index ce845fc..4509bd8 100644
--- a/gotify_tray/gui/designs/widget_message.py
+++ b/gotify_tray/gui/designs/widget_message.py
@@ -1,6 +1,6 @@
# Form implementation generated from reading ui file 'gotify_tray/gui/designs\widget_message.ui'
#
-# Created by: PyQt6 UI code generator 6.3.1
+# Created by: PyQt6 UI code generator 6.4.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
@@ -16,6 +16,7 @@ class Ui_Form(object):
self.gridLayout = QtWidgets.QGridLayout(Form)
self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetMinimumSize)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
+ self.gridLayout.setHorizontalSpacing(0)
self.gridLayout.setObjectName("gridLayout")
self.frame = QtWidgets.QFrame(Form)
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
@@ -23,15 +24,39 @@ class Ui_Form(object):
self.frame.setObjectName("frame")
self.gridLayout_frame = QtWidgets.QGridLayout(self.frame)
self.gridLayout_frame.setSizeConstraint(QtWidgets.QLayout.SizeConstraint.SetMinimumSize)
- self.gridLayout_frame.setContentsMargins(-1, 0, -1, 0)
+ self.gridLayout_frame.setContentsMargins(0, 0, -1, 0)
+ self.gridLayout_frame.setVerticalSpacing(3)
self.gridLayout_frame.setObjectName("gridLayout_frame")
+ self.label_message = QtWidgets.QLabel(self.frame)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_message.sizePolicy().hasHeightForWidth())
+ self.label_message.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ self.label_message.setFont(font)
+ self.label_message.setWordWrap(True)
+ self.label_message.setOpenExternalLinks(True)
+ self.label_message.setTextInteractionFlags(QtCore.Qt.TextInteractionFlag.LinksAccessibleByMouse|QtCore.Qt.TextInteractionFlag.TextSelectableByMouse)
+ self.label_message.setObjectName("label_message")
+ self.gridLayout_frame.addWidget(self.label_message, 4, 3, 1, 4)
self.pb_delete = QtWidgets.QPushButton(self.frame)
self.pb_delete.setText("")
self.pb_delete.setFlat(True)
self.pb_delete.setObjectName("pb_delete")
- self.gridLayout_frame.addWidget(self.pb_delete, 0, 4, 1, 1)
+ self.gridLayout_frame.addWidget(self.pb_delete, 1, 6, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Maximum, QtWidgets.QSizePolicy.Policy.Minimum)
- self.gridLayout_frame.addItem(spacerItem, 0, 2, 1, 1)
+ self.gridLayout_frame.addItem(spacerItem, 1, 4, 1, 1)
+ spacerItem1 = QtWidgets.QSpacerItem(0, 2, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Fixed)
+ self.gridLayout_frame.addItem(spacerItem1, 0, 3, 1, 4)
+ self.label_date = QtWidgets.QLabel(self.frame)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ self.label_date.setFont(font)
+ self.label_date.setTextInteractionFlags(QtCore.Qt.TextInteractionFlag.LinksAccessibleByMouse|QtCore.Qt.TextInteractionFlag.TextSelectableByMouse)
+ self.label_date.setObjectName("label_date")
+ self.gridLayout_frame.addWidget(self.label_date, 1, 5, 1, 1)
self.label_title = QtWidgets.QLabel(self.frame)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
sizePolicy.setHorizontalStretch(0)
@@ -46,32 +71,16 @@ class Ui_Form(object):
self.label_title.setWordWrap(True)
self.label_title.setTextInteractionFlags(QtCore.Qt.TextInteractionFlag.LinksAccessibleByMouse|QtCore.Qt.TextInteractionFlag.TextSelectableByMouse)
self.label_title.setObjectName("label_title")
- self.gridLayout_frame.addWidget(self.label_title, 0, 1, 1, 1)
+ self.gridLayout_frame.addWidget(self.label_title, 1, 3, 1, 1)
self.label_image = QtWidgets.QLabel(self.frame)
self.label_image.setText("")
self.label_image.setObjectName("label_image")
- self.gridLayout_frame.addWidget(self.label_image, 0, 0, 1, 1)
- self.label_message = QtWidgets.QLabel(self.frame)
- sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.MinimumExpanding)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_message.sizePolicy().hasHeightForWidth())
- self.label_message.setSizePolicy(sizePolicy)
- font = QtGui.QFont()
- font.setPointSize(11)
- self.label_message.setFont(font)
- self.label_message.setWordWrap(True)
- self.label_message.setOpenExternalLinks(True)
- self.label_message.setTextInteractionFlags(QtCore.Qt.TextInteractionFlag.LinksAccessibleByMouse|QtCore.Qt.TextInteractionFlag.TextSelectableByMouse)
- self.label_message.setObjectName("label_message")
- self.gridLayout_frame.addWidget(self.label_message, 3, 1, 1, 4)
- self.label_date = QtWidgets.QLabel(self.frame)
- font = QtGui.QFont()
- font.setPointSize(11)
- self.label_date.setFont(font)
- self.label_date.setTextInteractionFlags(QtCore.Qt.TextInteractionFlag.LinksAccessibleByMouse|QtCore.Qt.TextInteractionFlag.TextSelectableByMouse)
- self.label_date.setObjectName("label_date")
- self.gridLayout_frame.addWidget(self.label_date, 0, 3, 1, 1)
+ self.gridLayout_frame.addWidget(self.label_image, 1, 2, 1, 1)
+ self.label_priority = QtWidgets.QLabel(self.frame)
+ self.label_priority.setMaximumSize(QtCore.QSize(6, 16777215))
+ self.label_priority.setText("")
+ self.label_priority.setObjectName("label_priority")
+ self.gridLayout_frame.addWidget(self.label_priority, 0, 1, 5, 1)
self.gridLayout.addWidget(self.frame, 0, 0, 1, 1)
self.retranslateUi(Form)
@@ -80,9 +89,9 @@ class Ui_Form(object):
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
- self.label_title.setText(_translate("Form", "Title"))
self.label_message.setText(_translate("Form", "TextLabel"))
self.label_date.setText(_translate("Form", "Date"))
+ self.label_title.setText(_translate("Form", "Title"))
if __name__ == "__main__":
diff --git a/gotify_tray/gui/designs/widget_message.ui b/gotify_tray/gui/designs/widget_message.ui
index 74d453b..9f3f440 100644
--- a/gotify_tray/gui/designs/widget_message.ui
+++ b/gotify_tray/gui/designs/widget_message.ui
@@ -29,6 +29,9 @@
0
+
+ 0
+
-
@@ -41,72 +44,19 @@
QLayout::SetMinimumSize
+
+ 0
+
0
0
-
-
-
-
-
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Maximum
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 17
- 50
- false
-
-
-
- Title
-
-
- true
-
-
- Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
-
-
-
- -
-
-
-
-
-
-
- -
+
+ 3
+
+
-
@@ -133,7 +83,49 @@
- -
+
-
+
+
+
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Maximum
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 0
+ 2
+
+
+
+
+ -
@@ -148,6 +140,52 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 17
+ 50
+ false
+
+
+
+ Title
+
+
+ true
+
+
+ Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+ 6
+ 16777215
+
+
+
+
+
+
+
diff --git a/gotify_tray/gui/designs/widget_settings.py b/gotify_tray/gui/designs/widget_settings.py
index 97e7ac8..2869581 100644
--- a/gotify_tray/gui/designs/widget_settings.py
+++ b/gotify_tray/gui/designs/widget_settings.py
@@ -1,6 +1,6 @@
# Form implementation generated from reading ui file 'gotify_tray/gui/designs\widget_settings.ui'
#
-# Created by: PyQt6 UI code generator 6.3.0
+# Created by: PyQt6 UI code generator 6.4.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
@@ -12,7 +12,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
- Dialog.resize(402, 369)
+ Dialog.resize(402, 392)
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
@@ -78,6 +78,9 @@ class Ui_Dialog(object):
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(spacerItem1)
self.verticalLayout_2.addLayout(self.horizontalLayout_3)
+ self.cb_priority_colors = QtWidgets.QCheckBox(self.groupBox_2)
+ self.cb_priority_colors.setObjectName("cb_priority_colors")
+ self.verticalLayout_2.addWidget(self.cb_priority_colors)
self.verticalLayout_4.addWidget(self.groupBox_2)
self.groupBox_server_info = QtWidgets.QGroupBox(self.tab_general)
self.groupBox_server_info.setObjectName("groupBox_server_info")
@@ -234,6 +237,9 @@ class Ui_Dialog(object):
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.cb_priority_colors.setToolTip(_translate("Dialog", "4..7 -> orange\n"
+"8..10 -> red"))
+ self.cb_priority_colors.setText(_translate("Dialog", "Show message priority colors"))
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 fc75ed8..b21fa5c 100644
--- a/gotify_tray/gui/designs/widget_settings.ui
+++ b/gotify_tray/gui/designs/widget_settings.ui
@@ -7,7 +7,7 @@
0
0
402
- 369
+ 392
@@ -157,6 +157,17 @@
+ -
+
+
+ 4..7 -> orange
+8..10 -> red
+
+
+ Show message priority colors
+
+
+
diff --git a/gotify_tray/gui/widgets/MessageWidget.py b/gotify_tray/gui/widgets/MessageWidget.py
index 8916f28..4147e6f 100644
--- a/gotify_tray/gui/widgets/MessageWidget.py
+++ b/gotify_tray/gui/widgets/MessageWidget.py
@@ -34,6 +34,9 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
# Fonts
self.set_fonts()
+ # Display the message priority as a color
+ self.set_priority_color(message.priority)
+
# Display message contents
self.label_title.setText(message.title)
self.label_date.setText(message.date.strftime("%Y-%m-%d, %H:%M"))
@@ -68,7 +71,7 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
self.label_image.hide()
# Set MessagesModelItem's size hint based on the size of this widget
- self.gridLayout_frame.setContentsMargins(5, 5, 5, 5)
+ self.gridLayout_frame.setContentsMargins(0, 0, 5, 0)
self.gridLayout.setContentsMargins(4, 5, 4, 0)
self.adjustSize()
size_hint = self.message_item.sizeHint()
@@ -125,6 +128,16 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form):
self.label_message.setPixmap(pixmap)
+ def set_priority_color(self, priority: int):
+ if not settings.value("MessageWidget/priority_color", type=bool):
+ self.label_priority.setFixedWidth(0) # set width to 0 instead of hiding, so we still get the content margins
+ return
+
+ if priority >= 4 and priority <= 7:
+ self.label_priority.setStyleSheet("background-color: rgba(230, 126, 34, 0.7);")
+ elif priority > 7:
+ self.label_priority.setStyleSheet("background-color: #e74c3c;")
+
def link_hovered_callback(self, link: str):
if not settings.value("ImagePopup/enabled", type=bool):
return
diff --git a/gotify_tray/gui/widgets/SettingsDialog.py b/gotify_tray/gui/widgets/SettingsDialog.py
index 97a005c..7dded76 100644
--- a/gotify_tray/gui/widgets/SettingsDialog.py
+++ b/gotify_tray/gui/widgets/SettingsDialog.py
@@ -71,9 +71,12 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
settings.value("tray/icon/unread", type=bool)
)
- # Theme
+ # Interface
self.combo_theme.addItems(get_themes())
self.combo_theme.setCurrentText(settings.value("theme", type=str))
+ self.cb_priority_colors.setChecked(
+ settings.value("MessageWidget/priority_color", type=bool)
+ )
# Logging
self.combo_logging.addItems(
@@ -108,6 +111,7 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
"date": "2021-01-01T11:11:00.928224+01:00",
"message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin luctus.",
"title": "Title",
+ "priority": 4,
}
)
),
@@ -209,8 +213,9 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
self.cb_notification_click.stateChanged.connect(self.settings_changed_callback)
self.cb_tray_icon_unread.stateChanged.connect(self.settings_changed_callback)
- # Theme
+ # Interface
self.combo_theme.currentTextChanged.connect(self.settings_changed_callback)
+ self.cb_priority_colors.stateChanged.connect(self.settings_changed_callback)
# Server info
self.pb_change_server_info.clicked.connect(self.change_server_info_callback)
@@ -254,13 +259,17 @@ class SettingsDialog(QtWidgets.QDialog, Ui_Dialog):
)
settings.setValue("tray/icon/unread", self.cb_tray_icon_unread.isChecked())
- # Theme
+ # Interface
current_theme = settings.value("theme", type=str)
selected_theme = self.combo_theme.currentText()
if current_theme != selected_theme:
settings.setValue("theme", selected_theme)
self.theme_change_requested.emit(selected_theme)
+ settings.setValue(
+ "MessageWidget/priority_color", self.cb_priority_colors.isChecked()
+ )
+
# Logging
selected_level = self.combo_logging.currentText()
settings.setValue("logging/level", selected_level)