summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNiels De Graef <nielsdegraef@gmail.com>2023-02-11 10:55:00 +0100
committerNiels De Graef <nielsdegraef@gmail.com>2023-02-12 09:29:32 +0000
commit8d9624e25e20e573d5e320ce377c9a171671c164 (patch)
tree62a81b401a91411b5a0453499562f809c05b91c4 /src
parentcf0987c7dab429c86f3295c440dbfd0ad957c406 (diff)
downloadgnome-contacts-8d9624e25e20e573d5e320ce377c9a171671c164.tar.gz
main-window: Add a menu item to export all contacts
Fixes: https://gitlab.gnome.org/GNOME/gnome-contacts/-/issues/285
Diffstat (limited to 'src')
-rw-r--r--src/contacts-app.vala11
-rw-r--r--src/contacts-main-window.vala10
2 files changed, 17 insertions, 4 deletions
diff --git a/src/contacts-app.vala b/src/contacts-app.vala
index 3a2cb11..12d2dc5 100644
--- a/src/contacts-app.vala
+++ b/src/contacts-app.vala
@@ -38,7 +38,8 @@ public class Contacts.App : Adw.Application {
{ "about", show_about },
{ "show-preferences", show_preferences },
{ "show-contact", on_show_contact, "s" },
- { "import", on_import }
+ { "import", on_import },
+ { "export-all", on_export_all }
};
private const OptionEntry[] options = {
@@ -420,4 +421,12 @@ public class Contacts.App : Adw.Application {
});
dialog.present ();
}
+
+ private void on_export_all (SimpleAction action, Variant? param) {
+ var model = this.contacts_store.filter_model;
+ var individuals = new Gee.ArrayList<Individual> ();
+ for (uint i = 0; i < model.get_n_items (); i++)
+ individuals.add ((Individual) model.get_item (i));
+ this.window.export_individuals (individuals);
+ }
}
diff --git a/src/contacts-main-window.vala b/src/contacts-main-window.vala
index 8d46b6b..24a8a8d 100644
--- a/src/contacts-main-window.vala
+++ b/src/contacts-main-window.vala
@@ -592,6 +592,13 @@ public class Contacts.MainWindow : Adw.ApplicationWindow {
this.marked_contacts.unselect_all ();
this.state = UiState.NORMAL;
+ var individuals = bitset_to_individuals (this.store.filter_model,
+ selection);
+ export_individuals (individuals);
+ }
+
+
+ public void export_individuals (Gee.List<Individual> individuals) {
// Open up a file chooser
var chooser = new Gtk.FileChooserNative (_("Export to file"),
this,
@@ -607,9 +614,6 @@ public class Contacts.MainWindow : Adw.ApplicationWindow {
}
// Do the actual export
- var individuals = bitset_to_individuals (this.store.filter_model,
- selection);
-
OutputStream filestream = null;
try {
filestream = chooser.get_file ().replace (null, false, FileCreateFlags.NONE);