Skip to content
Snippets Groups Projects
Commit 42329da9 authored by Nico's avatar Nico
Browse files

Refactor urgency notification logic

In preparation to future notification logic, the urgency hint should
already get their own logic.

Related to ff4e91e4 and #57.
parent ff4e91e4
No related tags found
No related merge requests found
Pipeline #4734 canceled
...@@ -167,15 +167,9 @@ class MainWindowContainer(Container): ...@@ -167,15 +167,9 @@ class MainWindowContainer(Container):
self._contacts = Contacts(APP().api) self._contacts = Contacts(APP().api)
self._load_contacts() self._load_contacts()
socket_listener = APP().api.socket_listener socket_listener = APP().api.socket_listener
signal_id = socket_listener.connect("ContactAddedEvent", self._setup_contact_added_listeners(socket_listener)
self._refresh_contacts_async) self._setup_message_received_listeners(socket_listener)
self._signals.append(signal_id) self._setup_contact_connection_listener(socket_listener)
signal_id = socket_listener.connect("ConversationMessageReceivedEvent",
self._refresh_contacts_async)
self._signals.append(signal_id)
callback = self._refresh_contact_state
signal_ids = self._contacts.watch_connections(callback)
self._signals.extend(signal_ids)
def _load_contacts(self): def _load_contacts(self):
self.contacts_list = self._contacts.get() self.contacts_list = self._contacts.get()
...@@ -190,17 +184,47 @@ class MainWindowContainer(Container): ...@@ -190,17 +184,47 @@ class MainWindowContainer(Container):
if contact["contactId"] == selected_contact: if contact["contactId"] == selected_contact:
self.contacts_list_box.select_row(contact_row) self.contacts_list_box.select_row(contact_row)
def _setup_contact_added_listeners(self, socket_listener):
signal_id = socket_listener.connect("ContactAddedEvent",
self._refresh_contacts_async)
self._signals.append(signal_id)
signal_id = socket_listener.connect("ContactAddedEvent",
self._notify_contact_added)
self._signals.append(signal_id)
def _setup_message_received_listeners(self, socket_listener):
signal_id = socket_listener.connect("ConversationMessageReceivedEvent",
self._refresh_contacts_async)
self._signals.append(signal_id)
signal_id = socket_listener.connect("ConversationMessageReceivedEvent",
self._notify_message_received)
self._signals.append(signal_id)
def _setup_contact_connection_listener(self, socket_listener):
callback = self._refresh_contact_connection_state
signal_ids = self._contacts.watch_connections(callback)
self._signals.extend(signal_ids)
# pylint: disable=unused-argument
def _refresh_contacts_async(self, message):
GLib.idle_add(self._refresh_contacts)
# pylint: disable=unused-argument # pylint: disable=unused-argument
def _refresh_contacts_async(self, message, urgent=True): def _refresh_contact_connection_state(self, contact_id, connected):
GLib.idle_add(self._refresh_contacts, urgent) self._refresh_contacts_async(None)
# pylint: disable=unused-argument # pylint: disable=unused-argument
def _refresh_contact_state(self, contact_id, connected): def _notify_contact_added(self, message):
self._refresh_contacts_async(None, False) self._notify()
# pylint: disable=unused-argument
def _notify_message_received(self, message):
self._notify()
def _notify(self):
APP().window.set_urgency_hint(True)
def _refresh_contacts(self, urgent): def _refresh_contacts(self):
if urgent:
APP().window.set_urgency_hint(True)
self._save_selected_row() self._save_selected_row()
self._clear_contact_list() self._clear_contact_list()
self._load_contacts() self._load_contacts()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment