Philipp Hörist pushed to branch master at gajim / gajim
Commits:
-
1e127c7f
by wurstsalat at 2022-10-19T22:32:16+02:00
4 changed files:
Changes:
| ... | ... | @@ -248,6 +248,7 @@ def __str__(self): |
| 248 | 248 | ('edit-workspace', 's', True),
|
| 249 | 249 | ('remove-workspace', 's', True),
|
| 250 | 250 | ('activate-workspace', 's', True),
|
| 251 | + ('mark-workspace-as-read', 's', True),
|
|
| 251 | 252 | ('add-chat', 'a{sv}', True),
|
| 252 | 253 | ('add-group-chat', 'as', True),
|
| 253 | 254 | ('add-to-roster', 'a{sv}', True),
|
| ... | ... | @@ -186,6 +186,22 @@ def unminimize(self) -> None: |
| 186 | 186 | self.deiconify()
|
| 187 | 187 | self.present_with_time(Gtk.get_current_event_time())
|
| 188 | 188 | |
| 189 | + def mark_workspace_as_read(self, workspace: str) -> None:
|
|
| 190 | + chat_list_stack = self._chat_page.get_chat_list_stack()
|
|
| 191 | + chat_list = chat_list_stack.get_chatlist(workspace)
|
|
| 192 | + open_chats = chat_list.get_open_chats()
|
|
| 193 | + for chat in open_chats:
|
|
| 194 | + self.mark_as_read(chat['account'], chat['jid'])
|
|
| 195 | + |
|
| 196 | + def _mark_workspace_as_read(self,
|
|
| 197 | + _action: Gio.SimpleAction,
|
|
| 198 | + param: GLib.Variant
|
|
| 199 | + ) -> None:
|
|
| 200 | + |
|
| 201 | + workspace_id = param.get_string() or None
|
|
| 202 | + if workspace_id is not None:
|
|
| 203 | + self.mark_workspace_as_read(workspace_id)
|
|
| 204 | + |
|
| 189 | 205 | def _prepare_window(self) -> None:
|
| 190 | 206 | window_width = app.settings.get('mainwin_width')
|
| 191 | 207 | window_height = app.settings.get('mainwin_height')
|
| ... | ... | @@ -370,6 +386,7 @@ def _connect_actions(self) -> None: |
| 370 | 386 | ('edit-workspace', self._edit_workspace),
|
| 371 | 387 | ('remove-workspace', self._remove_workspace),
|
| 372 | 388 | ('activate-workspace', self._activate_workspace),
|
| 389 | + ('mark-workspace-as-read', self._mark_workspace_as_read),
|
|
| 373 | 390 | ('add-chat', self._add_chat),
|
| 374 | 391 | ('add-group-chat', self._add_group_chat),
|
| 375 | 392 | ('add-to-roster', self._add_to_roster),
|
| ... | ... | @@ -586,7 +586,7 @@ def get_format_menu() -> GajimMenu: |
| 586 | 586 | return GajimMenu.from_list(menuitems)
|
| 587 | 587 | |
| 588 | 588 | |
| 589 | -def get_workspace_menu(workspace_id: str) -> GajimMenu:
|
|
| 589 | +def get_workspace_menu(workspace_id: str, has_unread: bool) -> GajimMenu:
|
|
| 590 | 590 | remove_action = 'win.dummy'
|
| 591 | 591 | if app.settings.get_workspace_count() > 1:
|
| 592 | 592 | remove_action = 'win.remove-workspace'
|
| ... | ... | @@ -596,6 +596,13 @@ def get_workspace_menu(workspace_id: str) -> GajimMenu: |
| 596 | 596 | (_('Remove'), remove_action, f'"{workspace_id}"'),
|
| 597 | 597 | ]
|
| 598 | 598 | |
| 599 | + if has_unread:
|
|
| 600 | + menuitems.insert(
|
|
| 601 | + 0,
|
|
| 602 | + (_('Mark as read'),
|
|
| 603 | + 'win.mark-workspace-as-read',
|
|
| 604 | + f'"{workspace_id}"'))
|
|
| 605 | + |
|
| 599 | 606 | return GajimMenu.from_list(menuitems)
|
| 600 | 607 | |
| 601 | 608 |
| ... | ... | @@ -333,7 +333,8 @@ def _popup_menu(self, _widget: Gtk.Widget, event: Gdk.EventButton) -> None: |
| 333 | 333 | if event.button != 3: # right click
|
| 334 | 334 | return
|
| 335 | 335 | |
| 336 | - menu = get_workspace_menu(self.workspace_id)
|
|
| 336 | + menu = get_workspace_menu(
|
|
| 337 | + self.workspace_id, self._unread_label.get_visible())
|
|
| 337 | 338 | |
| 338 | 339 | popover = GajimPopover(menu, relative_to=self, event=event)
|
| 339 | 340 | popover.popup()
|