diff --git a/briar-gtk/briar_gtk/containers/main_window.py b/briar-gtk/briar_gtk/containers/main_window.py index c6f8e6ce2f8598b0deea7c9a8e6e4fcc0b7990b8..d96b4f1e93f02a578aa4f0a926ab958860f85af0 100644 --- a/briar-gtk/briar_gtk/containers/main_window.py +++ b/briar-gtk/briar_gtk/containers/main_window.py @@ -167,15 +167,9 @@ class MainWindowContainer(Container): self._contacts = Contacts(APP().api) self._load_contacts() socket_listener = APP().api.socket_listener - signal_id = socket_listener.connect("ContactAddedEvent", - self._refresh_contacts_async) - self._signals.append(signal_id) - 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) + self._setup_contact_added_listeners(socket_listener) + self._setup_message_received_listeners(socket_listener) + self._setup_contact_connection_listener(socket_listener) def _load_contacts(self): self.contacts_list = self._contacts.get() @@ -190,17 +184,48 @@ class MainWindowContainer(Container): if contact["contactId"] == selected_contact: 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 - def _refresh_contacts_async(self, message, urgent=True): - GLib.idle_add(self._refresh_contacts, urgent) + def _refresh_contact_connection_state(self, contact_id, connected): + self._refresh_contacts_async(None) # pylint: disable=unused-argument - def _refresh_contact_state(self, contact_id, connected): - self._refresh_contacts_async(None, False) + def _notify_contact_added(self, message): + self._notify() + + # pylint: disable=unused-argument + def _notify_message_received(self, message): + self._notify() + + @staticmethod + def _notify(): + APP().window.set_urgency_hint(True) - def _refresh_contacts(self, urgent): - if urgent: - APP().window.set_urgency_hint(True) + def _refresh_contacts(self): self._save_selected_row() self._clear_contact_list() self._load_contacts()