display message priority colors
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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__":
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QFrame" name="frame">
|
||||
<property name="frameShape">
|
||||
@@ -41,72 +44,19 @@
|
||||
<property name="sizeConstraint">
|
||||
<enum>QLayout::SetMinimumSize</enum>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="4">
|
||||
<widget class="QPushButton" name="pb_delete">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Maximum</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_title">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>17</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Title</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_image">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="4">
|
||||
<property name="verticalSpacing">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<item row="4" column="3" colspan="4">
|
||||
<widget class="QLabel" name="label_message">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
|
||||
@@ -133,7 +83,49 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<item row="1" column="6">
|
||||
<widget class="QPushButton" name="pb_delete">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="4">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Maximum</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="3" colspan="4">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>2</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="5">
|
||||
<widget class="QLabel" name="label_date">
|
||||
<property name="font">
|
||||
<font>
|
||||
@@ -148,6 +140,52 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="label_title">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>17</pointsize>
|
||||
<weight>50</weight>
|
||||
<bold>false</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Title</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="label_image">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" rowspan="5">
|
||||
<widget class="QLabel" name="label_priority">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>6</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>402</width>
|
||||
<height>369</height>
|
||||
<height>392</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -157,6 +157,17 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cb_priority_colors">
|
||||
<property name="toolTip">
|
||||
<string>4..7 -> orange
|
||||
8..10 -> red</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show message priority colors</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user