[geary/wip/714922-multiple-addresses-2] properly save alternate email addresses
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/wip/714922-multiple-addresses-2] properly save alternate email addresses
- Date: Wed, 11 Feb 2015 23:38:04 +0000 (UTC)
commit 941d2677cea0ce4a3fc3e32d3e843db89f91cb2c
Author: Jim Nelson <jim yorba org>
Date: Wed Feb 11 15:37:41 2015 -0800
properly save alternate email addresses
.../account-dialog-edit-alternate-emails-pane.vala | 25 ++++++++++++++-----
src/engine/api/geary-account-information.vala | 17 +++++++++++++
ui/edit_alternate_emails.glade | 7 +++--
3 files changed, 39 insertions(+), 10 deletions(-)
---
diff --git a/src/client/accounts/account-dialog-edit-alternate-emails-pane.vala
b/src/client/accounts/account-dialog-edit-alternate-emails-pane.vala
index 3e4dfd4..56f1c34 100644
--- a/src/client/accounts/account-dialog-edit-alternate-emails-pane.vala
+++ b/src/client/accounts/account-dialog-edit-alternate-emails-pane.vala
@@ -28,7 +28,7 @@ public class AccountDialogEditAlternateEmailsPane : AccountDialogPane {
private Gtk.ListBox address_listbox;
private Gtk.ToolButton delete_button;
private Gtk.Button cancel_button;
- private Gtk.Button save_button;
+ private Gtk.Button update_button;
private ListItem? selected_item = null;
private Geary.AccountInformation? account_info = null;
@@ -52,11 +52,11 @@ public class AccountDialogEditAlternateEmailsPane : AccountDialogPane {
address_listbox = (Gtk.ListBox) builder.get_object("address_listbox");
delete_button = (Gtk.ToolButton) builder.get_object("delete_button");
cancel_button = (Gtk.Button) builder.get_object("cancel_button");
- save_button = (Gtk.Button) builder.get_object("save_button");
+ update_button = (Gtk.Button) builder.get_object("update_button");
email_entry.bind_property("text", add_button, "sensitive", BindingFlags.SYNC_CREATE,
transform_email_to_sensitive);
- bind_property("changed", save_button, "sensitive", BindingFlags.SYNC_CREATE);
+ bind_property("changed", update_button, "sensitive", BindingFlags.SYNC_CREATE);
delete_button.sensitive = false;
@@ -64,7 +64,7 @@ public class AccountDialogEditAlternateEmailsPane : AccountDialogPane {
add_button.clicked.connect(on_add_clicked);
delete_button.clicked.connect(on_delete_clicked);
cancel_button.clicked.connect(() => { done(); });
- save_button.clicked.connect(on_save_clicked);
+ update_button.clicked.connect(on_update_clicked);
}
private bool transform_email_to_sensitive(Binding binding, Value source, ref Value target) {
@@ -94,6 +94,14 @@ public class AccountDialogEditAlternateEmailsPane : AccountDialogPane {
add_email_address(email_address, false);
}
+ public override void present() {
+ base.present();
+
+ // because in a Gtk.Stack, need to do this manually after presenting
+ email_entry.grab_focus();
+ add_button.has_default = true;
+ }
+
private void add_email_address(string email_address, bool is_change) {
if (email_addresses.contains(email_address))
return;
@@ -139,7 +147,11 @@ public class AccountDialogEditAlternateEmailsPane : AccountDialogPane {
private void on_add_clicked() {
add_email_address(email_entry.text, true);
+
+ // reset state for next input
email_entry.text = "";
+ email_entry.grab_focus();
+ add_button.has_default = true;
}
private void on_delete_clicked() {
@@ -147,9 +159,8 @@ public class AccountDialogEditAlternateEmailsPane : AccountDialogPane {
remove_email_address(selected_item.mailbox);
}
- private void on_save_clicked() {
- foreach (string email_address in email_addresses)
- account_info.add_alternate_email(email_address);
+ private void on_update_clicked() {
+ account_info.replace_alternate_emails(email_addresses);
done();
}
diff --git a/src/engine/api/geary-account-information.vala b/src/engine/api/geary-account-information.vala
index cf5a8dd..381ce76 100644
--- a/src/engine/api/geary-account-information.vala
+++ b/src/engine/api/geary-account-information.vala
@@ -309,6 +309,21 @@ public class Geary.AccountInformation : BaseObject {
}
/**
+ * Replaces the list of alternate email addresses with the supplied collection.
+ *
+ * Duplicates will be ignored.
+ */
+ public void replace_alternate_emails(Gee.Collection<string>? emails) {
+ alternate_emails = null;
+
+ if (emails == null || emails.size == 0)
+ return;
+
+ foreach (string email in emails)
+ add_alternate_email(email);
+ }
+
+ /**
* Return whether this account allows setting the save_sent_mail option.
* If not, save_sent_mail will always be true and setting it will be
* ignored.
@@ -762,6 +777,8 @@ public class Geary.AccountInformation : BaseObject {
key_file.set_boolean(GROUP, SAVE_SENT_MAIL_KEY, save_sent_mail);
key_file.set_boolean(GROUP, USE_EMAIL_SIGNATURE_KEY, use_email_signature);
key_file.set_string(GROUP, EMAIL_SIGNATURE_KEY, email_signature);
+ if (alternate_emails != null && alternate_emails.size > 0)
+ key_file.set_string_list(GROUP, ALTERNATE_EMAILS_KEY, alternate_emails.to_array());
if (service_provider == ServiceProvider.OTHER) {
key_file.set_value(GROUP, IMAP_HOST, default_imap_server_host);
diff --git a/ui/edit_alternate_emails.glade b/ui/edit_alternate_emails.glade
index ee563d7..2e26887 100644
--- a/ui/edit_alternate_emails.glade
+++ b/ui/edit_alternate_emails.glade
@@ -47,7 +47,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
- <property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
<child>
@@ -161,6 +160,7 @@
<property name="label" translatable="yes">_Cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
</object>
@@ -171,10 +171,11 @@
</packing>
</child>
<child>
- <object class="GtkButton" id="save_button">
- <property name="label" translatable="yes">_Save</property>
+ <object class="GtkButton" id="update_button">
+ <property name="label" translatable="yes">_Update</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]