From c1323fefedfb2a6c348b0f950fa2523b9d195564 Mon Sep 17 00:00:00 2001 From: "dries.k" Date: Wed, 31 May 2023 21:11:45 +0200 Subject: [PATCH] set message priority color in stylesheet --- gotify_tray/gui/themes/base.qss | 8 +++++ gotify_tray/gui/widgets/MessageWidget.py | 6 ++-- gotify_tray/gui/widgets/ServerInfoDialog.py | 33 +++++++++------------ gotify_tray/utils.py | 7 +++++ 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/gotify_tray/gui/themes/base.qss b/gotify_tray/gui/themes/base.qss index 119a62d..71d5776 100644 --- a/gotify_tray/gui/themes/base.qss +++ b/gotify_tray/gui/themes/base.qss @@ -5,3 +5,11 @@ MessageWidget QPushButton[objectName^="pb_delete"] { MessageWidget QLabel[objectName^="label_date"] { margin-right: 1px; } + +MessageWidget QLabel[priority="medium"] { + background-color: #b3e67e22; +} + +MessageWidget QLabel[priority="high"] { + background-color: #e74c3c; +} diff --git a/gotify_tray/gui/widgets/MessageWidget.py b/gotify_tray/gui/widgets/MessageWidget.py index ee8424d..02e9043 100644 --- a/gotify_tray/gui/widgets/MessageWidget.py +++ b/gotify_tray/gui/widgets/MessageWidget.py @@ -6,7 +6,7 @@ from ..models.MessagesModel import MessageItemDataRole, MessagesModelItem from ..designs.widget_message import Ui_Form from gotify_tray.database import Downloader from gotify_tray.database import Settings -from gotify_tray.utils import convert_links, get_image +from gotify_tray.utils import convert_links, get_image, update_widget_property from gotify_tray.gui.themes import get_theme_file from gotify_tray.gotify.models import GotifyMessageModel @@ -126,9 +126,9 @@ class MessageWidget(QtWidgets.QWidget, Ui_Form): return if priority >= 4 and priority <= 7: - self.label_priority.setStyleSheet("background-color: rgba(230, 126, 34, 0.7);") + update_widget_property(self.label_priority, "priority", "medium") elif priority > 7: - self.label_priority.setStyleSheet("background-color: #e74c3c;") + update_widget_property(self.label_priority, "priority", "high") def link_hovered_callback(self, link: str): if not settings.value("ImagePopup/enabled", type=bool): diff --git a/gotify_tray/gui/widgets/ServerInfoDialog.py b/gotify_tray/gui/widgets/ServerInfoDialog.py index c8a6171..89e147f 100644 --- a/gotify_tray/gui/widgets/ServerInfoDialog.py +++ b/gotify_tray/gui/widgets/ServerInfoDialog.py @@ -3,6 +3,7 @@ import os from gotify_tray.database import Settings from gotify_tray.gotify.models import GotifyVersionModel from gotify_tray.tasks import ImportSettingsTask, VerifyServerInfoTask +from gotify_tray.utils import update_widget_property from PyQt6 import QtWidgets from ..designs.widget_server import Ui_Dialog @@ -24,9 +25,9 @@ class ServerInfoDialog(QtWidgets.QDialog, Ui_Dialog): self.link_callbacks() def test_server_info(self): - self.pb_test.setStyleSheet("") - self.line_url.setStyleSheet("") - self.line_token.setStyleSheet("") + update_widget_property(self.pb_test, "state", "") + update_widget_property(self.line_url, "state", "") + update_widget_property(self.line_token, "state", "") self.label_server_info.clear() url = self.line_url.text() @@ -43,40 +44,34 @@ class ServerInfoDialog(QtWidgets.QDialog, Ui_Dialog): self.task.incorrect_url.connect(self.incorrect_url_callback) self.task.start() - def update_widget_state(self, widget: QtWidgets.QWidget, state: str): - widget.setProperty("state", state) - widget.style().unpolish(widget) - widget.style().polish(widget) - widget.update() - def server_info_success(self, version: GotifyVersionModel): self.pb_test.setEnabled(True) self.label_server_info.setText(f"Version: {version.version}") - self.update_widget_state(self.pb_test, "success") - self.update_widget_state(self.line_token, "success") - self.update_widget_state(self.line_url, "success") + update_widget_property(self.pb_test, "state", "success") + update_widget_property(self.line_token, "state", "success") + update_widget_property(self.line_url, "state", "success") self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setEnabled(True) self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setFocus() def incorrect_token_callback(self, version: GotifyVersionModel): self.pb_test.setEnabled(True) self.label_server_info.setText(f"Version: {version.version}") - self.update_widget_state(self.pb_test, "failed") - self.update_widget_state(self.line_token, "failed") - self.update_widget_state(self.line_url, "success") + update_widget_property(self.pb_test, "state", "failed") + update_widget_property(self.line_token, "state", "failed") + update_widget_property(self.line_url, "state", "success") self.line_token.setFocus() def incorrect_url_callback(self): self.pb_test.setEnabled(True) self.label_server_info.clear() - self.update_widget_state(self.pb_test, "failed") - self.update_widget_state(self.line_token, "success") - self.update_widget_state(self.line_url, "failed") + update_widget_property(self.pb_test, "state", "failed") + update_widget_property(self.line_token, "state", "success") + update_widget_property(self.line_url, "state", "failed") self.line_url.setFocus() def input_changed_callback(self): self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setDisabled(True) - self.update_widget_state(self.pb_test, "") + update_widget_property(self.pb_test, "state", "") def import_success_callback(self): self.line_url.setText(settings.value("Server/url", type=str)) diff --git a/gotify_tray/utils.py b/gotify_tray/utils.py index 94ab5fb..9a6e7d7 100644 --- a/gotify_tray/utils.py +++ b/gotify_tray/utils.py @@ -5,6 +5,7 @@ import subprocess from pathlib import Path from typing import Iterator +from PyQt6 import QtWidgets from gotify_tray import gotify from gotify_tray.database import Downloader @@ -95,3 +96,9 @@ def get_icon(name: str) -> str: name += "-macos" return get_abs_path(f"gotify_tray/gui/images/{name}.png") + +def update_widget_property(widget: QtWidgets.QWidget, property: str, value: str): + widget.setProperty(property, value) + widget.style().unpolish(widget) + widget.style().polish(widget) + widget.update()