Skip to content
Snippets Groups Projects
Commit 04bb71bd authored by Nico's avatar Nico
Browse files

Implement "Delete all messages of a chat"

Fixes #11
parent d3e6e7e4
No related branches found
No related tags found
Loading
Pipeline #5057 passed
...@@ -23,6 +23,7 @@ class WindowActions(Actions): ...@@ -23,6 +23,7 @@ class WindowActions(Actions):
def _setup_actions(self): def _setup_actions(self):
self._setup_back_to_sidebar_action() self._setup_back_to_sidebar_action()
self._setup_delete_all_messages_action()
self._setup_delete_contact_action() self._setup_delete_contact_action()
self._setup_change_alias_contact_action() self._setup_change_alias_contact_action()
self._setup_open_about_page_action() self._setup_open_about_page_action()
...@@ -36,6 +37,10 @@ class WindowActions(Actions): ...@@ -36,6 +37,10 @@ class WindowActions(Actions):
f"{WINDOW_PREFIX}.back-to-sidebar", ["<Ctrl>w"] f"{WINDOW_PREFIX}.back-to-sidebar", ["<Ctrl>w"]
) )
def _setup_delete_all_messages_action(self):
self._setup_action("delete-all-messages-dialog", None,
self._delete_all_messages_dialog)
def _setup_delete_contact_action(self): def _setup_delete_contact_action(self):
self._setup_action("delete-contact-dialog", None, self._setup_action("delete-contact-dialog", None,
self._delete_contact_dialog) self._delete_contact_dialog)
...@@ -62,6 +67,10 @@ class WindowActions(Actions): ...@@ -62,6 +67,10 @@ class WindowActions(Actions):
if isinstance(self.widget.current_container, MainWindowContainer): if isinstance(self.widget.current_container, MainWindowContainer):
self.widget.current_container.show_sidebar() self.widget.current_container.show_sidebar()
# pylint: disable=unused-argument
def _delete_all_messages_dialog(self, action, parameter):
self.widget.current_container.open_delete_all_messages_dialog()
# pylint: disable=unused-argument # pylint: disable=unused-argument
def _delete_contact_dialog(self, action, parameter): def _delete_contact_dialog(self, action, parameter):
self.widget.current_container.open_delete_contact_dialog() self.widget.current_container.open_delete_contact_dialog()
......
...@@ -9,6 +9,7 @@ from gettext import gettext as _ ...@@ -9,6 +9,7 @@ from gettext import gettext as _
from gi.repository import Gio, GLib, Gtk from gi.repository import Gio, GLib, Gtk
from briar_wrapper.models.contacts import Contacts from briar_wrapper.models.contacts import Contacts
from briar_wrapper.models.private_chat import PrivateChat
from briar_gtk.container import Container from briar_gtk.container import Container
from briar_gtk.containers.private_chat import PrivateChatContainer from briar_gtk.containers.private_chat import PrivateChatContainer
...@@ -112,6 +113,24 @@ class MainWindowContainer(Container): ...@@ -112,6 +113,24 @@ class MainWindowContainer(Container):
self.contact_name_label.set_text(user_alias) self.contact_name_label.set_text(user_alias)
self._refresh_contacts() self._refresh_contacts()
def open_delete_all_messages_dialog(self):
if self._current_contact_id == 0:
raise Exception("Can't delete all messages with contact ID 0")
confirmation_dialog = Gtk.MessageDialog(
transient_for=APP().window,
flags=Gtk.DialogFlags.MODAL,
message_type=Gtk.MessageType.WARNING,
buttons=Gtk.ButtonsType.OK_CANCEL,
text=_("Confirm Message Deletion"),
)
confirmation_dialog.format_secondary_text(
_("Are you sure that you want to delete all messages?")
)
confirmation_dialog.connect("response", self._delete_all_messages)
confirmation_dialog.show_all()
def open_delete_contact_dialog(self): def open_delete_contact_dialog(self):
if self._current_contact_id == 0: if self._current_contact_id == 0:
raise Exception("Can't delete contact with ID 0") raise Exception("Can't delete contact with ID 0")
...@@ -131,6 +150,14 @@ class MainWindowContainer(Container): ...@@ -131,6 +150,14 @@ class MainWindowContainer(Container):
confirmation_dialog.connect("response", self._delete_contact) confirmation_dialog.connect("response", self._delete_contact)
confirmation_dialog.show_all() confirmation_dialog.show_all()
def _delete_all_messages(self, widget, response_id):
if response_id == Gtk.ResponseType.OK:
private_chat = PrivateChat(APP().api, self._current_contact_id)
private_chat.delete_all_messages()
self._refresh_contacts()
self.show_sidebar()
widget.destroy()
def _delete_contact(self, widget, response_id): def _delete_contact(self, widget, response_id):
if response_id == Gtk.ResponseType.OK: if response_id == Gtk.ResponseType.OK:
Contacts(APP().api).delete(self._current_contact_id) Contacts(APP().api).delete(self._current_contact_id)
......
...@@ -35,6 +35,20 @@ ...@@ -35,6 +35,20 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkModelButton" id="delete-all-messages-menu-entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="action_name">win.delete-all-messages-dialog</property>
<property name="text" translatable="yes">Delete all messages</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkModelButton" id="delete-menu-entry"> <object class="GtkModelButton" id="delete-menu-entry">
<property name="visible">True</property> <property name="visible">True</property>
...@@ -46,7 +60,7 @@ ...@@ -46,7 +60,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">2</property>
</packing> </packing>
</child> </child>
</object> </object>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment