Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
15d763e0 by wurstsalat at 2021-12-06T23:00:57+01:00
ChatPlaceholderBox: Add button for Start Chat

- - - - -
89558698 by wurstsalat at 2021-12-06T23:22:02+01:00
ChatList: Add 'Mark as read' menu item

- - - - -


5 changed files:

- gajim/gtk/chat_list.py
- gajim/gtk/chat_list_stack.py
- gajim/gtk/chat_stack.py
- gajim/gtk/main.py
- gajim/gui_menu_builder.py


Changes:

=====================================
gajim/gtk/chat_list.py
=====================================
@@ -90,9 +90,15 @@ def workspace_id(self) -> str:
     def get_unread_count(self) -> int:
         return sum([chats.unread_count for chats in self._chats.values()])
 
-    def get_chat_unread_count(self, account: str, jid: JID) -> Optional[int]:
+    def get_chat_unread_count(self,
+                              account: str,
+                              jid: JID,
+                              include_silent: bool = False
+                              ) -> Optional[int]:
         chat = self._chats.get((account, jid))
         if chat is not None:
+            if include_silent:
+                return chat.get_real_unread_count()
             return chat.unread_count
         return None
 
@@ -656,6 +662,9 @@ def _on_chatstate_update(self, contact, _signal_name):
     def _on_nickname_update(self, _contact, _signal_name):
         self.update_name()
 
+    def get_real_unread_count(self) -> int:
+        return self._unread_count
+
     @property
     def unread_count(self) -> int:
         if self.contact.is_groupchat and not self.contact.can_notify():


=====================================
gajim/gtk/chat_list_stack.py
=====================================
@@ -81,6 +81,7 @@ def _add_actions(self):
         actions = [
             ('toggle-chat-pinned', 'as', self._toggle_chat_pinned),
             ('move-chat-to-workspace', 'as', self._move_chat_to_workspace),
+            ('mark-as-read', 'as', self._mark_as_read),
         ]
 
         for action in actions:
@@ -208,6 +209,10 @@ def _move_chat_to_workspace(self, _action, param):
         self.store_open_chats(current_chatlist.workspace_id)
         self.store_open_chats(new_workspace_id)
 
+    def _mark_as_read(self, _action, param):
+        _workspace_id, account, jid = param.unpack()
+        self.mark_as_read(account, JID.from_string(jid))
+
     def remove_chat(self, workspace_id: str, account: str, jid: JID) -> None:
         chat_list = self._chat_lists[workspace_id]
         type_ = chat_list.get_chat_type(account, jid)
@@ -243,9 +248,14 @@ def get_total_unread_count(self) -> int:
             count += chat_list.get_unread_count()
         return count
 
-    def get_chat_unread_count(self, account: str, jid: JID) -> Optional[int]:
+    def get_chat_unread_count(self,
+                              account: str,
+                              jid: JID,
+                              include_silent: bool = False
+                              ) -> Optional[int]:
         for chat_list in self._chat_lists.values():
-            count = chat_list.get_chat_unread_count(account, jid)
+            count = chat_list.get_chat_unread_count(
+                account, jid, include_silent)
             if count is not None:
                 return count
         return None


=====================================
gajim/gtk/chat_stack.py
=====================================
@@ -24,6 +24,7 @@
 
 from nbxmpp import JID
 
+from gajim.common import app
 from gajim.common import ged
 from gajim.common.i18n import _
 
@@ -150,6 +151,10 @@ def __init__(self):
         image.get_style_context().add_class('dim-label')
         self.add(image)
 
-        label = Gtk.Label(label=_('Start a Chat'))
-        label.get_style_context().add_class('dim-label')
-        self.add(label)
+        button = Gtk.Button(label=_('Start Chatting…'))
+        button.set_halign(Gtk.Align.CENTER)
+        button.connect('clicked', self._on_start_chatting)
+        self.add(button)
+
+    def _on_start_chatting(self, _button):
+        app.app.activate_action('start-chat', GLib.Variant('s', ''))


=====================================
gajim/gtk/main.py
=====================================
@@ -509,9 +509,14 @@ def get_total_unread_count(self) -> int:
         chat_list_stack = self._chat_page.get_chat_list_stack()
         return chat_list_stack.get_total_unread_count()
 
-    def get_chat_unread_count(self, account: str, jid: JID) -> int:
+    def get_chat_unread_count(self,
+                              account: str,
+                              jid: JID,
+                              include_silent: bool = False
+                              ) -> int:
         chat_list_stack = self._chat_page.get_chat_list_stack()
-        count = chat_list_stack.get_chat_unread_count(account, jid)
+        count = chat_list_stack.get_chat_unread_count(
+            account, jid, include_silent)
         return count or 0
 
     def mark_as_read(self, account: str, jid: JID,


=====================================
gajim/gui_menu_builder.py
=====================================
@@ -521,6 +521,11 @@ def get_chat_list_row_menu(workspace_id: str, account: str,
         else:
             menu_items.append(('add-to-roster', _('Add to Contact List…')))
 
+    unread_count = app.window.get_chat_unread_count(
+        account, jid, include_silent=True)
+    if unread_count is not None and unread_count > 0:
+        menu_items.append(('mark-as-read', _('Mark as read')))
+
     menu = Gio.Menu()
     for item in menu_items:
         if isinstance(item[1], str):



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/3d10db13f68bae934527169be56616816bde97a3...89558698af668d17da1889076a10a5454d98830f

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/3d10db13f68bae934527169be56616816bde97a3...89558698af668d17da1889076a10a5454d98830f
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to