Bug 794465 - [Automatic Contacts] Option to File under as "First Last"

This commit is contained in:
Milan Crha
2018-03-23 11:19:59 +01:00
parent 5a3a5980c6
commit 6127b49fb8
3 changed files with 40 additions and 1 deletions

View File

@ -15,6 +15,11 @@
<_summary>Enable autocontacts</_summary>
<_description>Whether contacts should be automatically added to the users address book.</_description>
</key>
<key name="file-under-as-first-last" type="b">
<default>false</default>
<_summary>Whether to set “File under” field as “First Last” </_summary>
<_description>Set File under as “First Last”, instead of “Last, First”.</_description>
</key>
<key name="gaim-addressbook-source" type="s">
<default>''</default>
<_summary>Pidgin address book source</_summary>

View File

@ -306,6 +306,7 @@ bbdb_do_it (EBookClient *client,
EClientCache *client_cache;
GList *addressbooks;
GList *aux_addressbooks;
GSettings *settings;
EBookClient *client_addressbook;
ESourceAutocomplete *autocomplete_extension;
gboolean on_autocomplete, has_autocomplete;
@ -319,7 +320,7 @@ bbdb_do_it (EBookClient *client,
return;
/* don't miss the entry if the mail has only e-mail id and no name */
if (name == NULL || !strcmp (name, "")) {
if (!name || !*name) {
temp_name = g_strndup (email, delim - email);
name = temp_name;
}
@ -453,6 +454,26 @@ bbdb_do_it (EBookClient *client,
/* Otherwise, create a new contact. */
contact = e_contact_new ();
e_contact_set (contact, E_CONTACT_FULL_NAME, (gpointer) name);
settings = e_util_ref_settings (CONF_SCHEMA);
if (g_settings_get_boolean (settings, CONF_KEY_FILE_UNDER_AS_FIRST_LAST)) {
EContactName *cnt_name = e_contact_name_from_string (name);
if (cnt_name) {
if (cnt_name->family && *cnt_name->family &&
cnt_name->given && *cnt_name->given) {
gchar *str;
str = g_strconcat (cnt_name->given, " ", cnt_name->family, NULL);
e_contact_set (contact, E_CONTACT_FILE_AS, str);
g_free (str);
}
e_contact_name_free (cnt_name);
}
}
g_clear_object (&settings);
add_email_to_contact (contact, email);
g_free (temp_name);
@ -757,6 +778,18 @@ bbdb_create_config_widget (void)
G_CALLBACK (enable_toggled_cb), stuff);
gtk_box_pack_start (GTK_BOX (inner_vbox), check, FALSE, FALSE, 0);
/* File Under setting */
check = gtk_check_button_new_with_mnemonic (_("Set File _under as “First Last”, instead of “Last, First”"));
g_settings_bind (
settings, CONF_KEY_FILE_UNDER_AS_FIRST_LAST,
check, "active",
G_SETTINGS_BIND_DEFAULT);
g_settings_bind (
settings, CONF_KEY_ENABLE,
check, "sensitive",
G_SETTINGS_BIND_GET);
gtk_box_pack_start (GTK_BOX (inner_vbox), check, FALSE, FALSE, 0);
label = gtk_label_new (_("Select Address book for Automatic Contacts"));
gtk_box_pack_start (GTK_BOX (inner_vbox), label, FALSE, FALSE, 0);

View File

@ -29,6 +29,7 @@
#define CONF_KEY_GAIM_LAST_SYNC_TIME "gaim-last-sync-time"
#define CONF_KEY_GAIM_LAST_SYNC_MD5 "gaim-last-sync-md5"
#define CONF_KEY_GAIM_CHECK_INTERVAL "gaim-check-interval"
#define CONF_KEY_FILE_UNDER_AS_FIRST_LAST "file-under-as-first-last"
/* How often to poll the buddy list for changes (every two minutes is default) */
#define BBDB_BLIST_DEFAULT_CHECK_INTERVAL (2 * 60)