render images

This commit is contained in:
dries.k
2022-12-01 18:52:05 +01:00
parent e49787424e
commit 5ef258da4f
6 changed files with 142 additions and 50 deletions

View File

@@ -16,6 +16,8 @@ from gotify_tray.tasks import (
GetApplicationsTask,
GetApplicationMessagesTask,
GetMessagesTask,
ProcessMessageTask,
ProcessMessagesTask,
ServerConnectionWatchdogTask,
)
from gotify_tray.gui.themes import set_theme
@@ -74,6 +76,8 @@ class MainApplication(QtWidgets.QApplication):
self.application_model = ApplicationModel()
self.main_window = MainWindow(self.application_model, self.messages_model)
self.main_window.show() # The initial .show() is necessary to get the correct sizes when adding MessageWigets
self.main_window.hide()
self.refresh_applications()
@@ -195,43 +199,39 @@ class MainApplication(QtWidgets.QApplication):
),
)
def get_messages_finished_callback(self, page: gotify.GotifyPagedMessagesModel):
"""Process messages before inserting them into the main window
"""
def insert_helper(row: int, message: gotify.GotifyMessageModel):
if item := self.application_model.itemFromId(message.appid):
self.insert_message(
row, message, item.data(ApplicationItemDataRole.ApplicationRole),
)
self.processEvents()
self.process_messages_task = ProcessMessagesTask(page)
self.process_messages_task.message_processed.connect(insert_helper)
self.process_messages_task.start()
def application_selection_changed_callback(
self, item: Union[ApplicationModelItem, ApplicationAllMessagesItem]
):
self.messages_model.clear()
if isinstance(item, ApplicationModelItem):
def get_application_messages_callback(
page: gotify.GotifyPagedMessagesModel,
):
for i, message in enumerate(page.messages):
self.insert_message(
i, message, item.data(ApplicationItemDataRole.ApplicationRole),
)
self.get_application_messages_task = GetApplicationMessagesTask(
item.data(ApplicationItemDataRole.ApplicationRole).id,
self.gotify_client,
)
self.get_application_messages_task.success.connect(
get_application_messages_callback
self.get_messages_finished_callback
)
self.get_application_messages_task.start()
elif isinstance(item, ApplicationAllMessagesItem):
def get_messages_callback(page: gotify.GotifyPagedMessagesModel):
for i, message in enumerate(page.messages):
if item := self.application_model.itemFromId(message.appid):
self.insert_message(
i,
message,
item.data(ApplicationItemDataRole.ApplicationRole),
)
self.get_messages_task = GetMessagesTask(self.gotify_client)
self.get_messages_task.success.connect(get_messages_callback)
self.get_messages_task.success.connect(self.get_messages_finished_callback)
self.get_messages_task.start()
def add_message_to_model(self, message: gotify.GotifyMessageModel):
@@ -240,14 +240,27 @@ class MainApplication(QtWidgets.QApplication):
if selected_application_item := self.application_model.itemFromIndex(
application_index
):
if isinstance(selected_application_item, ApplicationModelItem):
# A single application is selected
if (
message.appid
== selected_application_item.data(
ApplicationItemDataRole.ApplicationRole
).id
def insert_message_helper():
if isinstance(selected_application_item, ApplicationModelItem):
# A single application is selected
if (
message.appid
== selected_application_item.data(
ApplicationItemDataRole.ApplicationRole
).id
):
self.insert_message(
0,
message,
application_item.data(
ApplicationItemDataRole.ApplicationRole
),
)
elif isinstance(
selected_application_item, ApplicationAllMessagesItem
):
# "All messages' is selected
self.insert_message(
0,
message,
@@ -255,13 +268,15 @@ class MainApplication(QtWidgets.QApplication):
ApplicationItemDataRole.ApplicationRole
),
)
elif isinstance(selected_application_item, ApplicationAllMessagesItem):
# "All messages' is selected
self.insert_message(
0,
message,
application_item.data(ApplicationItemDataRole.ApplicationRole),
)
self.process_message_task = ProcessMessageTask(message)
self.process_message_task.finished.connect(insert_message_helper)
self.process_message_task.start()
else:
logger.error(
f"App id {message.appid} could not be found. Refreshing applications."
)
self.refresh_applications()
def new_message_callback(self, message: gotify.GotifyMessageModel):
self.add_message_to_model(message)
@@ -346,7 +361,7 @@ class MainApplication(QtWidgets.QApplication):
# Update the main window icons
self.main_window.set_icons()
# Update the message widget icons
for r in range(self.messages_model.rowCount()):
message_widget: MessageWidget = self.main_window.listView_messages.indexWidget(