[gnome-contacts] Window: use a single function for contact deletion.
- From: Niels De Graef <nielsdg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-contacts] Window: use a single function for contact deletion.
- Date: Mon, 22 Jan 2018 12:07:30 +0000 (UTC)
commit d3997352a2c2f7950ec90e640d21cc1e719fc040
Author: Niels De Graef <nielsdegraef gmail com>
Date: Mon Jan 22 12:55:11 2018 +0100
Window: use a single function for contact deletion.
This removes some copy-pasta.
src/contacts-contact-list.vala | 4 +-
src/contacts-window.vala | 57 +++++++++++----------------------------
2 files changed, 18 insertions(+), 43 deletions(-)
---
diff --git a/src/contacts-contact-list.vala b/src/contacts-contact-list.vala
index 3e59e33..6253b8c 100644
--- a/src/contacts-contact-list.vala
+++ b/src/contacts-contact-list.vala
@@ -241,8 +241,8 @@ public class Contacts.ContactList : ListBox {
}
private bool filter_row (ListBoxRow row) {
- var indiv = ((ContactDataRow) row).contact.individual;
- return this.filter_query.is_match (indiv) > 0;
+ var contact = ((ContactDataRow) row).contact;
+ return !contact.is_hidden && this.filter_query.is_match (contact.individual) > 0;
}
public void select_contact (Contact? contact) {
diff --git a/src/contacts-window.vala b/src/contacts-window.vala
index 057d9a0..1739786 100644
--- a/src/contacts-window.vala
+++ b/src/contacts-window.vala
@@ -77,7 +77,9 @@ public class Contacts.Window : Gtk.ApplicationWindow {
this.contact_pane = new ContactPane (this, this.store);
this.contact_pane.visible = true;
this.contact_pane.hexpand = true;
- this.contact_pane.will_delete.connect (contact_pane_delete_contact_cb);
+ this.contact_pane.will_delete.connect ( (contact) => {
+ delete_contacts (new ArrayList<Contact>.wrap ({ contact }));
+ });
this.contact_pane.contacts_linked.connect (contact_pane_contacts_linked_cb);
this.contact_pane_container.add (this.contact_pane);
}
@@ -92,7 +94,7 @@ public class Contacts.Window : Gtk.ApplicationWindow {
bind_property ("state", this.list_pane, "state", BindingFlags.BIDIRECTIONAL | BindingFlags.SYNC_CREATE);
list_pane.selection_changed.connect (list_pane_selection_changed_cb);
list_pane.link_contacts.connect (list_pane_link_contacts_cb);
- list_pane.delete_contacts.connect (list_pane_delete_contacts_cb);
+ list_pane.delete_contacts.connect (delete_contacts);
list_pane.contacts_marked.connect ((nr_contacts) => {
if (nr_contacts != 0)
@@ -309,70 +311,43 @@ public class Contacts.Window : Gtk.ApplicationWindow {
add_notification (notification);
}
- void list_pane_delete_contacts_cb (LinkedList<Contact> contact_list) {
- /* getting out of selection mode */
+ private void delete_contacts (Gee.List<Contact> contacts) {
set_shown_contact (null);
this.state = UiState.NORMAL;
- string msg = ngettext ("%d contact deleted",
- "%d contacts deleted",
- contact_list.size).printf (contact_list.size);
+ var msg = (contacts.size > 1)? _("%d contacts deleted").printf (contacts.size)
+ : _("Deleted contact %s").printf (contacts[0].display_name);
var b = new Button.with_mnemonic (_("_Undo"));
var notification = new InAppNotification (msg, b);
- /* signal handlers */
+ // Don't wrap (default), but ellipsize
+ notification.message_label.wrap = false;
+ notification.message_label.max_width_chars = 45;
+ notification.message_label.ellipsize = Pango.EllipsizeMode.END;
+
+ // signal handlers
bool really_delete = true;
b.clicked.connect ( () => {
really_delete = false;
notification.dismiss ();
- foreach (var c in contact_list)
+ foreach (var c in contacts)
c.show ();
- set_shown_contact (contact_list.last ());
+ set_shown_contact (contacts[0]);
this.state = UiState.SHOWING;
});
notification.dismissed.connect ( () => {
if (really_delete)
- foreach (var c in contact_list)
+ foreach (var c in contacts)
c.remove_personas.begin ();
});
add_notification (notification);
}
- private void contact_pane_delete_contact_cb (Contact contact) {
- set_shown_contact (null);
- this.state = UiState.NORMAL;
-
- var msg = _("Contact deleted: “%sâ€").printf (contact.display_name);
- var b = new Button.with_mnemonic (_("_Undo"));
-
- var notification = new InAppNotification (msg, b);
- // Don't wrap (default), but ellipsize
- notification.message_label.wrap = false;
- notification.message_label.max_width_chars = 45;
- notification.message_label.ellipsize = Pango.EllipsizeMode.END;
-
- bool really_delete = true;
- notification.dismissed.connect ( () => {
- if (really_delete)
- contact.remove_personas.begin ( () => {
- contact.show ();
- });
- });
- add_notification (notification);
- b.clicked.connect ( () => {
- really_delete = false;
- notification.dismiss ();
- contact.show ();
- set_shown_contact (contact);
- this.state = UiState.SHOWING;
- });
- }
-
void contact_pane_contacts_linked_cb (string? main_contact, string linked_contact, LinkOperation
operation) {
string msg;
if (main_contact != null)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]