Philipp Hörist pushed to branch mainwindow at gajim / gajim


Commits:
d71682a0 by lovetox at 2021-04-28T10:38:06+02:00
Refactor ChatList

- - - - -


3 changed files:

- gajim/gtk/chat_list_stack.py
- gajim/gtk/chat_page.py
- gajim/gtk/main.py


Changes:

=====================================
gajim/gtk/chat_list_stack.py
=====================================
@@ -44,16 +44,17 @@ class ChatListStack(Gtk.Stack):
         'chat-unselected': (GObject.SignalFlags.RUN_LAST,
                             None,
                             ()),
+        'chat-removed': (GObject.SignalFlags.RUN_LAST,
+                         None,
+                         (str, str, str)),
     }
 
-    def __init__(self, main_window, ui, chat_stack):
+    def __init__(self, main_window, search_entry):
         Gtk.Stack.__init__(self)
         self.set_hexpand(True)
         self.set_vexpand(True)
         self.set_vhomogeneous(False)
 
-        self._ui = ui
-        self._chat_stack = chat_stack
         self._chat_lists = {}
 
         self._last_visible_child_name = 'default'
@@ -61,9 +62,7 @@ def __init__(self, main_window, ui, chat_stack):
         self.add_named(Gtk.Box(), 'default')
 
         self.connect('notify::visible-child-name', self._on_visible_child_name)
-        self._ui.search_entry.connect(
-            'search-changed', self._on_search_changed)
-
+        search_entry.connect('search-changed', self._on_search_changed)
         main_window.connect('notify::is-active', self._on_window_active)
 
         self._add_actions()
@@ -94,7 +93,6 @@ def _on_visible_child_name(self, _stack, _param):
         if self._last_visible_child_name == self.get_visible_child_name():
             return
 
-        self._ui.search_entry.set_text('')
         if self._last_visible_child_name != 'default':
             child = self.get_child_by_name(self._last_visible_child_name)
             child.set_filter_text('')
@@ -157,8 +155,6 @@ def show_chat_list(self, workspace_id):
         if current_workspace_id != 'default':
             self._chat_lists[current_workspace_id].unselect_all()
 
-        self._ui.workspace_label.set_text(
-            app.settings.get_workspace_setting(workspace_id, 'name'))
         self.set_visible_child_name(workspace_id)
 
     def add_chat(self, workspace_id, account, jid, type_, pinned=False):
@@ -204,12 +200,7 @@ def remove_chat(self, workspace_id, account, jid):
         type_ = chat_list.get_chat_type(account, jid)
         chat_list.remove_chat(account, jid)
         self.store_open_chats(workspace_id)
-
-        if not self.contains_chat(account, jid):
-            self._chat_stack.remove_chat(account, jid)
-            if type_ == 'groupchat':
-                client = app.get_client(account)
-                client.get_module('MUC').leave(jid)
+        self.emit('chat-removed', account, jid, type_)
 
     def _find_chat(self, account, jid):
         for chat_list in self._chat_lists.values():


=====================================
gajim/gtk/chat_page.py
=====================================
@@ -59,10 +59,13 @@ def __init__(self):
         self._search_revealer.add(self._search_view)
         self._ui.right_grid_overlay.add_overlay(self._search_revealer)
 
-        self._chat_list_stack = ChatListStack(self, self._ui, self._chat_stack)
+        self._chat_list_stack = ChatListStack(app.window, 
self._ui.search_entry)
         self._chat_list_stack.connect('chat-selected', self._on_chat_selected)
         self._chat_list_stack.connect('chat-unselected',
                                       self._on_chat_unselected)
+        self._chat_list_stack.connect('chat-removed', self._on_chat_removed)
+        self._chat_list_stack.connect('notify::visible-child-name',
+                                      self._on_chat_list_changed)
         self._ui.chat_list_scrolled.add(self._chat_list_stack)
 
         self._ui.start_chat_button.connect('clicked',
@@ -120,6 +123,10 @@ def _on_button_release(paned, event):
     def _on_chat_selected(self, _chat_list_stack, workspace_id, account, jid):
         self._chat_stack.show_chat(account, jid)
         self._search_view.set_context(account, jid)
+
+        self._ui.workspace_label.set_text(
+            app.settings.get_workspace_setting(workspace_id, 'name'))
+
         self.emit('chat-selected', workspace_id, account, jid)
 
     def _on_chat_unselected(self, _chat_list_stack):
@@ -136,6 +143,9 @@ def _on_search_history(self, _action, _param):
     def _on_search_hide(self, *args):
         self._search_revealer.hide()
 
+    def _on_chat_list_changed(self, *args):
+        self._ui.search_entry.set_text('')
+
     def process_event(self, event):
         self._chat_stack.process_event(event)
         self._chat_list_stack.process_event(event)
@@ -219,6 +229,12 @@ def remove_chat(self, account, jid):
                 self._chat_list_stack.remove_chat(workspace_id, account, jid)
                 return
 
+    def _on_chat_removed(self, _chat_list, account, jid, type_):
+        self._chat_stack.remove_chat(account, jid)
+        if type_ == 'groupchat':
+            client = app.get_client(account)
+            client.get_module('MUC').leave(jid)
+
     def get_control(self, account, jid):
         return self._chat_stack.get_control(account, jid)
 
@@ -230,3 +246,7 @@ def get_active_control(self):
 
     def get_controls(self, account=None):
         return self._chat_stack.get_controls(account)
+
+    def hide_search(self):
+        if self._search_revealer.get_reveal_child():
+            self._search_revealer.hide()


=====================================
gajim/gtk/main.py
=====================================
@@ -173,8 +173,7 @@ def _on_action(self, action, _param):
             return res
 
         if action == 'escape':
-            if self._search_revealer.get_reveal_child():
-                self._search_revealer.hide()
+            self._chat_page.hide_search()
 
         # if action == 'escape' and app.settings.get('escape_key_closes'):
         #     self.remove_tab(control, self.CLOSE_ESC)



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/d71682a0e7c4bbf5bb98f5df71a348526007feb9

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/d71682a0e7c4bbf5bb98f5df71a348526007feb9
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to