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


Commits:
08f9b39a by wurstsalat at 2023-02-21T20:28:27+01:00
imprv: Add message menu entry for deleting messages locally

- - - - -


6 changed files:

- gajim/common/storage/archive.py
- gajim/gtk/const.py
- gajim/gtk/control.py
- gajim/gtk/conversation/view.py
- gajim/gtk/main.py
- gajim/gtk/menus.py


Changes:

=====================================
gajim/common/storage/archive.py
=====================================
@@ -1197,6 +1197,19 @@ def insert_into_logs(self,
 
         return lastrowid
 
+    @timeit
+    def delete_message_from_logs(self, log_line_id: int) -> None:
+        '''
+        Delete a message from the `logs` table
+
+        :param log_line_id: The message's log_line_id
+        '''
+        sql = 'DELETE FROM logs WHERE log_line_id = ?'
+        self._con.execute(sql, (log_line_id, ))
+
+        self._delayed_commit()
+        log.info('Deleted message with log_line_id %s', log_line_id)
+
     @timeit
     def set_message_error(self,
                           account_jid: str,


=====================================
gajim/gtk/const.py
=====================================
@@ -194,6 +194,7 @@ def __str__(self):
     ('input-clear', None, True),
     ('show-emoji-chooser', None, True),
     ('activate-message-selection', 'u', True),
+    ('delete-message-locally', 'u', True),
     ('correct-message', None, False),
     ('copy-message', 's', True),
     ('retract-message', 'a{sv}', False),


=====================================
gajim/gtk/control.py
=====================================
@@ -570,6 +570,9 @@ def _add_message(self,
         else:
             self._jump_to_end_button.add_unread_count()
 
+    def remove_message(self, log_line_id: int) -> None:
+        self._scrolled_view.remove_message(log_line_id)
+
     def reset_view(self) -> None:
         self._scrolled_view.reset()
 


=====================================
gajim/gtk/conversation/view.py
=====================================
@@ -664,6 +664,11 @@ def _reduce_messages_after(self) -> None:
         row = self._get_row_at_index(len(self._list_box.get_children()) - 1)
         row.destroy()
 
+    def remove_message(self, log_line_id: int) -> None:
+        row = self.get_row_by_log_line_id(log_line_id)
+        if row is not None:
+            row.destroy()
+
     def scroll_to_message_and_highlight(self, log_line_id: int) -> None:
         highlight_row = None
         for row in cast(list[BaseRow], self._list_box.get_children()):


=====================================
gajim/gtk/main.py
=====================================
@@ -424,6 +424,7 @@ def _connect_actions(self) -> None:
             ('preview-open-link', self._on_preview_action),
             ('copy-message', self._on_copy_message),
             ('retract-message', self._on_retract_message),
+            ('delete-message-locally', self._on_delete_message_locally),
             ('add-workspace', self._add_workspace),
             ('edit-workspace', self._edit_workspace),
             ('remove-workspace', self._remove_workspace),
@@ -649,6 +650,26 @@ def _on_retract(reason: str) -> None:
             input_str=_('Spam'),
             transient_for=app.window).show()
 
+    def _on_delete_message_locally(self,
+                                   _action: Gio.SimpleAction,
+                                   param: GLib.Variant
+                                   ) -> None:
+
+        def _on_delete() -> None:
+            log_line_id = param.get_uint32()
+            app.storage.archive.delete_message_from_logs(log_line_id)
+            control = self.get_control()
+            control.remove_message(log_line_id)
+
+        ConfirmationDialog(
+            _('Delete Message'),
+            _('Delete message locally?'),
+            _('This message will be deleted from your local chat history'),
+            [DialogButton.make('Cancel'),
+             DialogButton.make('Delete',
+                               callback=_on_delete)],
+            transient_for=app.window).show()
+
     def _on_window_motion_notify(self,
                                  _widget: Gtk.ApplicationWindow,
                                  _event: Gdk.EventMotion


=====================================
gajim/gtk/menus.py
=====================================
@@ -726,6 +726,12 @@ def get_chat_row_menu(contact: types.ChatContactT,
             'win.retract-message',
             param))
 
+    if log_line_id is not None:
+        menu_items.append(
+            (p_('Message row action', 'Delete Message Locally…'),
+            'win.delete-message-locally',
+            GLib.Variant('u', log_line_id or 0)))
+
     return GajimMenu.from_list(menu_items)
 
 



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

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/08f9b39aaf96af1fefeebc443de5149bed6de036
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