From 7d20b8fd5fd28a90852c737f35cef7ba03a2c116 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 1 Nov 2010 14:44:23 -0400 Subject: Utilize the new ESourceSelector:primary-selection property. --- addressbook/gui/widgets/e-addressbook-selector.c | 74 +++++------------------- addressbook/gui/widgets/eab-gui-util.c | 4 +- 2 files changed, 16 insertions(+), 62 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index d746964364..2402b00e84 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -29,9 +29,6 @@ (G_TYPE_INSTANCE_GET_PRIVATE \ ((obj), E_TYPE_ADDRESSBOOK_SELECTOR, EAddressbookSelectorPrivate)) -#define PRIMARY_ADDRESSBOOK_KEY \ - "/apps/evolution/addressbook/display/primary_addressbook" - typedef struct _MergeContext MergeContext; struct _EAddressbookSelectorPrivate { @@ -149,45 +146,26 @@ addressbook_selector_merge_next_cb (EBook *book, static void addressbook_selector_load_primary_source (ESourceSelector *selector) { - GConfClient *client; ESourceList *source_list; ESource *source = NULL; - const gchar *key; - gchar *uid; - - /* XXX If ESourceSelector had a "primary-uid" property, - * we could just bind the GConf key to it. */ + GSList *groups; source_list = e_source_selector_get_source_list (selector); - client = gconf_client_get_default (); - key = PRIMARY_ADDRESSBOOK_KEY; - uid = gconf_client_get_string (client, key, NULL); - g_object_unref (client); - - if (uid != NULL) { - source = e_source_list_peek_source_by_uid (source_list, uid); - g_free (uid); - } - - if (source == NULL) { - GSList *groups; - - /* Dig up the first source in the source list. - * XXX libedataserver should provide API for this. */ - groups = e_source_list_peek_groups (source_list); - while (groups != NULL) { - ESourceGroup *source_group = groups->data; - GSList *sources; - - sources = e_source_group_peek_sources (source_group); - if (sources != NULL) { - source = sources->data; - break; - } - - groups = g_slist_next (groups); + /* Dig up the first source in the source list. + * XXX libedataserver should provide API for this. */ + groups = e_source_list_peek_groups (source_list); + while (groups != NULL) { + ESourceGroup *source_group = groups->data; + GSList *sources; + + sources = e_source_group_peek_sources (source_group); + if (sources != NULL) { + source = sources->data; + break; } + + groups = g_slist_next (groups); } if (source != NULL) @@ -254,28 +232,6 @@ addressbook_selector_constructed (GObject *object) addressbook_selector_load_primary_source (selector); } -static void -addressbook_selector_primary_selection_changed (ESourceSelector *selector) -{ - ESource *source; - GConfClient *client; - const gchar *key; - const gchar *string; - - /* XXX If ESourceSelector had a "primary-uid" property, - * we could just bind the GConf key to it. */ - - source = e_source_selector_peek_primary_selection (selector); - if (source == NULL) - return; - - client = gconf_client_get_default (); - key = PRIMARY_ADDRESSBOOK_KEY; - string = e_source_peek_uid (source); - gconf_client_set_string (client, key, string, NULL); - g_object_unref (client); -} - static gboolean addressbook_selector_data_dropped (ESourceSelector *selector, GtkSelectionData *selection_data, @@ -341,8 +297,6 @@ addressbook_selector_class_init (EAddressbookSelectorClass *class) object_class->constructed = addressbook_selector_constructed; selector_class = E_SOURCE_SELECTOR_CLASS (class); - selector_class->primary_selection_changed = - addressbook_selector_primary_selection_changed; selector_class->data_dropped = addressbook_selector_data_dropped; g_object_class_install_property ( diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index ebf4558f50..51e00fd17d 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -218,7 +218,7 @@ source_selection_changed_cb (ESourceSelector *selector, GtkWidget *ok_button) ESource *except_source = NULL, *selected; except_source = g_object_get_data (G_OBJECT (ok_button), "except-source"); - selected = e_source_selector_peek_primary_selection (selector); + selected = e_source_selector_get_primary_selection (selector); gtk_widget_set_sensitive (ok_button, selected && selected != except_source); } @@ -274,7 +274,7 @@ eab_select_source (ESource *except_source, const gchar *title, const gchar *mess response = gtk_dialog_run (GTK_DIALOG (dialog)); if (response == GTK_RESPONSE_ACCEPT) - source = e_source_selector_peek_primary_selection (E_SOURCE_SELECTOR (selector)); + source = e_source_selector_get_primary_selection (E_SOURCE_SELECTOR (selector)); else source = NULL; -- cgit v1.2.3 From b4651e66b17164b460c89514de44344c12e92aba Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 9 Nov 2010 10:23:01 +0100 Subject: Bug #632671 - "Search interrupted" status message forever --- addressbook/gui/widgets/e-addressbook-model.c | 27 +++++++++++++++++++++++++++ addressbook/gui/widgets/e-addressbook-view.c | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 7fa827aa39..e6b24abe75 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -49,6 +49,7 @@ struct _EAddressbookModelPrivate { gulong writable_status_id; gulong view_complete_id; gulong backend_died_id; + guint remove_status_id; guint search_in_progress : 1; guint editable : 1; @@ -114,12 +115,15 @@ remove_book_view (EAddressbookModel *model) g_signal_handler_disconnect ( model->priv->book_view, model->priv->view_complete_id); + if (model->priv->remove_status_id) + g_source_remove (model->priv->remove_status_id); model->priv->create_contact_id = 0; model->priv->remove_contact_id = 0; model->priv->modify_contact_id = 0; model->priv->status_message_id = 0; model->priv->view_complete_id = 0; + model->priv->remove_status_id = 0; model->priv->search_in_progress = FALSE; @@ -127,6 +131,8 @@ remove_book_view (EAddressbookModel *model) e_book_view_stop (model->priv->book_view); g_object_unref (model->priv->book_view); model->priv->book_view = NULL; + + g_signal_emit (model, signals[STATUS_MESSAGE], 0, NULL); } } @@ -271,6 +277,10 @@ status_message (EBookView *book_view, gchar * status, EAddressbookModel *model) { + if (model->priv->remove_status_id) + g_source_remove (model->priv->remove_status_id); + model->priv->remove_status_id = 0; + g_signal_emit (model, signals[STATUS_MESSAGE], 0, status); } @@ -394,6 +404,20 @@ addressbook_model_idle_cb (EAddressbookModel *model) return FALSE; } +static gboolean +remove_status_cb (gpointer data) +{ + EAddressbookModel *model = data; + + g_return_val_if_fail (model != NULL, FALSE); + g_return_val_if_fail (E_IS_ADDRESSBOOK_MODEL (model), FALSE); + + g_signal_emit (model, signals[STATUS_MESSAGE], 0, NULL); + model->priv->remove_status_id = 0; + + return FALSE; +} + static void addressbook_model_set_property (GObject *object, guint property_id, @@ -716,6 +740,9 @@ e_addressbook_model_stop (EAddressbookModel *model) message = _("Search Interrupted"); g_signal_emit (model, signals[STOP_STATE_CHANGED], 0); g_signal_emit (model, signals[STATUS_MESSAGE], 0, message); + + if (!model->priv->remove_status_id) + model->priv->remove_status_id = g_timeout_add_seconds (3, remove_status_cb, model); } gboolean diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index fcf4dd3f7c..bb5fc15bb8 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1075,9 +1075,9 @@ status_message (EAddressbookView *view, if (status == NULL || *status == '\0') { if (activity != NULL) { + view->priv->activity = NULL; e_activity_set_state (activity, E_ACTIVITY_COMPLETED); g_object_unref (activity); - view->priv->activity = NULL; } } else if (activity == NULL) { -- cgit v1.2.3 From b09b3e9ccacea345fee998ff20ef01ae043eaeac Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 18 Nov 2010 13:35:36 +0100 Subject: Bug #633779 - GtkComboBoxText issues --- addressbook/gui/contact-editor/contact-editor.ui | 8 +++---- addressbook/gui/contact-editor/e-contact-editor.c | 28 ++++++++++++++++++++--- 2 files changed, 29 insertions(+), 7 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/contact-editor.ui b/addressbook/gui/contact-editor/contact-editor.ui index 1c0dcca2ac..88c90c1c31 100644 --- a/addressbook/gui/contact-editor/contact-editor.ui +++ b/addressbook/gui/contact-editor/contact-editor.ui @@ -376,7 +376,7 @@ - + True model2 @@ -392,7 +392,7 @@ - + True model3 @@ -410,7 +410,7 @@ - + True model4 @@ -428,7 +428,7 @@ - + True model5 diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index e67305bb80..e1794572a5 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -722,6 +722,8 @@ init_email_record_location (EContactEditor *editor, gint record) GtkWidget *email_entry; gchar *widget_name; gint i; + GtkTreeIter iter; + GtkListStore *store; widget_name = g_strdup_printf ("entry-email-%d", record); email_entry = e_builder_get_widget (editor->builder, widget_name); @@ -731,10 +733,14 @@ init_email_record_location (EContactEditor *editor, gint record) location_combo_box = GTK_COMBO_BOX (e_builder_get_widget (editor->builder, widget_name)); g_free (widget_name); - gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (location_combo_box))); + store = GTK_LIST_STORE (gtk_combo_box_get_model (location_combo_box)); + gtk_list_store_clear (store); for (i = 0; i < G_N_ELEMENTS (common_location); i++) { - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (location_combo_box), _(common_location[i].pretty_name)); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, _(common_location[i].pretty_name), + -1); } g_signal_connect_swapped (location_combo_box, "changed", G_CALLBACK (gtk_widget_grab_focus), email_entry); @@ -2371,13 +2377,29 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) const gchar *text = gtk_entry_get_text (GTK_ENTRY (widget)); e_contact_set (contact, field_id, (gchar *) text); } - else if (GTK_IS_COMBO_BOX (widget)) { + else if (GTK_IS_COMBO_BOX_TEXT (widget)) { gchar *text = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (widget)); e_contact_set (contact, field_id, text); g_free (text); } + else if (GTK_IS_COMBO_BOX (widget)) { + GtkTreeIter iter; + gchar *text = NULL; + + if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter)) { + GtkListStore *store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (widget))); + + gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, + 0, &text, + -1); + } + + e_contact_set (contact, field_id, text); + + g_free (text); + } else if (GTK_IS_TEXT_VIEW (widget)) { GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget)); GtkTextIter start, end; -- cgit v1.2.3 From ce02a16bd15a1911038d31861b788d38025e2e65 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 29 Nov 2010 21:31:43 +0100 Subject: Added few translator comments As requested in bug #635414 --- addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui index 4ee84acbf1..84b4ac6c11 100644 --- a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui +++ b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui @@ -93,7 +93,7 @@ True - Conflicting Contact: + Conflicting Contact: False False GTK_JUSTIFY_CENTER -- cgit v1.2.3 From 081ee1af21e55ceda819a8a075c1bc25a3417f52 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 2 Dec 2010 16:24:42 +0100 Subject: Localize few strings with ngettext Per request of bug #635414 --- addressbook/gui/widgets/e-addressbook-view.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index bb5fc15bb8..ecb6ea7ed5 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1469,9 +1469,13 @@ e_addressbook_view_view (EAddressbookView *view) /* XXX Provide a parent window. */ dialog = gtk_message_dialog_new ( NULL, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, - _("Opening %d contacts will open %d new windows as " - "well.\nDo you really want to display all of these " - "contacts?"), length, length); + ngettext ( + /* Translators: This is shown for more than 5 contacts. */ + "Opening %d contacts will open %d new windows as well.\nDo you really want to display all of these contacts?", + "Opening %d contacts will open %d new windows as well.\nDo you really want to display all of these contacts?", + length + ), + length, length); gtk_dialog_add_buttons ( GTK_DIALOG (dialog), _("_Don't Display"), GTK_RESPONSE_NO, -- cgit v1.2.3 From 22b2d26d048476d4909bfcf348ce6567e0d006a0 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 6 Dec 2010 14:23:20 +0100 Subject: Free/busy meeting view doesn't work due to non-working extension --- addressbook/gui/widgets/e-addressbook-selector.c | 3 +++ addressbook/gui/widgets/e-addressbook-view.c | 3 +++ 2 files changed, 6 insertions(+) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index 2402b00e84..402fcf9295 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -230,6 +230,9 @@ addressbook_selector_constructed (GObject *object) selector = E_SOURCE_SELECTOR (object); addressbook_selector_load_primary_source (selector); + + if (G_OBJECT_CLASS (parent_class)->constructed) + G_OBJECT_CLASS (parent_class)->constructed (object); } static gboolean diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index ecb6ea7ed5..0f7bacd781 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -584,6 +584,9 @@ addressbook_view_constructed (GObject *object) * view in GalViewInstance::loaded signal handlers. */ g_free (uri); + + if (G_OBJECT_CLASS (parent_class)->constructed) + G_OBJECT_CLASS (parent_class)->constructed (object); } static void -- cgit v1.2.3 From a6bce7b74b99cd8ade8280ca52fb968438e6bf78 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 14 Dec 2010 17:44:16 +0100 Subject: Show common addressbook and calendar errors in an alert sink --- addressbook/gui/contact-editor/e-contact-editor.c | 8 ++-- .../contact-list-editor/e-contact-list-editor.c | 8 ++-- addressbook/gui/widgets/e-addressbook-model.c | 2 +- .../gui/widgets/e-addressbook-table-adapter.c | 2 +- addressbook/gui/widgets/e-addressbook-view.c | 28 +++++++------ addressbook/gui/widgets/eab-gui-util.c | 47 ++++++++++++++-------- addressbook/gui/widgets/eab-gui-util.h | 9 +++-- 7 files changed, 62 insertions(+), 42 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index e1794572a5..d071e9bab6 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -208,7 +208,7 @@ e_contact_editor_contact_added (EABEditor *editor, if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) return; - eab_error_dialog (_("Error adding contact"), error); + eab_error_dialog (NULL, _("Error adding contact"), error); } static void @@ -222,7 +222,7 @@ e_contact_editor_contact_modified (EABEditor *editor, if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) return; - eab_error_dialog (_("Error modifying contact"), error); + eab_error_dialog (NULL, _("Error modifying contact"), error); } static void @@ -236,7 +236,7 @@ e_contact_editor_contact_deleted (EABEditor *editor, if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) return; - eab_error_dialog (_("Error removing contact"), error); + eab_error_dialog (NULL, _("Error removing contact"), error); } static void @@ -2735,7 +2735,7 @@ contact_editor_book_loaded_cb (ESource *source, g_warn_if_fail (book == NULL); parent = eab_editor_get_window (EAB_EDITOR (editor)); - eab_load_error_dialog (GTK_WIDGET (parent), source, error); + eab_load_error_dialog (GTK_WIDGET (parent), NULL, source, error); source_combo_box = e_builder_get_widget ( editor->builder, "source-combo-box-source"); diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 2ffee04b91..7c5d9a9c98 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -221,7 +221,7 @@ contact_list_editor_book_loaded_cb (ESource *source, GtkWindow *parent; parent = eab_editor_get_window (EAB_EDITOR (editor)); - eab_load_error_dialog (GTK_WIDGET (parent), source, error); + eab_load_error_dialog (GTK_WIDGET (parent), NULL, source, error); e_source_combo_box_set_active ( E_SOURCE_COMBO_BOX (WIDGET (SOURCE_MENU)), @@ -1157,7 +1157,7 @@ contact_list_editor_contact_added (EABEditor *editor, if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) return; - eab_error_dialog (_("Error adding list"), error); + eab_error_dialog (NULL, _("Error adding list"), error); } static void @@ -1171,7 +1171,7 @@ contact_list_editor_contact_modified (EABEditor *editor, if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) return; - eab_error_dialog (_("Error modifying list"), error); + eab_error_dialog (NULL, _("Error modifying list"), error); } static void @@ -1185,7 +1185,7 @@ contact_list_editor_contact_deleted (EABEditor *editor, if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) return; - eab_error_dialog (_("Error removing list"), error); + eab_error_dialog (NULL, _("Error removing list"), error); } static void diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index e6b24abe75..e64848f527 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -324,7 +324,7 @@ book_view_loaded (EBook *book, EAddressbookModel *model = closure; if (error) { - eab_error_dialog (_("Error getting book view"), error); + eab_error_dialog (NULL, _("Error getting book view"), error); return; } diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index 156f30753e..aa12810b84 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -147,7 +147,7 @@ contact_modified_cb (EBook* book, const GError *error, gpointer user_data) { if (error) - eab_error_dialog (_("Error modifying card"), error); + eab_error_dialog (NULL, _("Error modifying card"), error); } static void diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 0f7bacd781..5879d9970d 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1099,11 +1099,12 @@ search_result (EAddressbookView *view, const gchar *error_msg) { EShellView *shell_view; - EShellWindow *shell_window; + EAlertSink *alert_sink; shell_view = e_addressbook_view_get_shell_view (view); - shell_window = e_shell_view_get_shell_window (shell_view); - eab_search_result_dialog (GTK_WIDGET (shell_window), status, error_msg); + alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); + + eab_search_result_dialog (alert_sink, status, error_msg); } static void @@ -1141,18 +1142,17 @@ static void backend_died (EAddressbookView *view) { EShellView *shell_view; - EShellWindow *shell_window; + EAlertSink *alert_sink; EAddressbookModel *model; EBook *book; shell_view = e_addressbook_view_get_shell_view (view); - shell_window = e_shell_view_get_shell_window (shell_view); + alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); model = e_addressbook_view_get_model (view); book = e_addressbook_model_get_book (model); - e_alert_run_dialog_for_args ( - GTK_WINDOW (shell_window), + e_alert_submit (alert_sink, "addressbook:backend-died", e_book_get_uri (book), NULL); } @@ -1277,7 +1277,7 @@ delete_contacts_cb (EBook *book, const GError *error, gpointer closure) break; default : /* Unknown error */ - eab_error_dialog (_("Failed to delete contact"), error); + eab_error_dialog (NULL, _("Failed to delete contact"), error); break; } } @@ -1520,10 +1520,12 @@ view_transfer_contacts (EAddressbookView *view, { EBook *book; GList *contacts = NULL; - GtkWindow *parent; + EShellView *shell_view; + EAlertSink *alert_sink; book = e_addressbook_model_get_book (view->priv->model); - parent = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))); + shell_view = e_addressbook_view_get_shell_view (view); + alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); if (all) { EBookQuery *query; @@ -1534,8 +1536,8 @@ view_transfer_contacts (EAddressbookView *view, e_book_query_unref (query); if (error) { - e_alert_run_dialog_for_args ( - parent, "addressbook:search-error", + e_alert_submit ( + alert_sink, "addressbook:search-error", error->message, NULL); g_error_free (error); return; @@ -1544,7 +1546,7 @@ view_transfer_contacts (EAddressbookView *view, contacts = e_addressbook_view_get_selected (view); } - eab_transfer_contacts (book, contacts, delete_from_source, parent); + eab_transfer_contacts (book, contacts, delete_from_source, alert_sink); g_object_unref (book); } diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 51e00fd17d..280758f26d 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -47,19 +47,25 @@ #include void -eab_error_dialog (const gchar *msg, const GError *error) +eab_error_dialog (EAlertSink *alert_sink, const gchar *msg, const GError *error) { - if (error && error->message) - e_alert_run_dialog_for_args (e_shell_get_active_window (NULL), - "addressbook:generic-error", - msg, error->message, NULL); + if (error && error->message) { + if (alert_sink) + e_alert_submit (alert_sink, + "addressbook:generic-error", + msg, error->message, NULL); + else + e_alert_run_dialog_for_args ( + e_shell_get_active_window (NULL), + "addressbook:generic-error", + msg, error->message, NULL); + } } void -eab_load_error_dialog (GtkWidget *parent, ESource *source, const GError *error) +eab_load_error_dialog (GtkWidget *parent, EAlertSink *alert_sink, ESource *source, const GError *error) { gchar *label_string, *label = NULL, *uri; - GtkWidget *dialog; gboolean can_detail_error = TRUE; g_return_if_fail (source != NULL); @@ -130,16 +136,22 @@ eab_load_error_dialog (GtkWidget *parent, ESource *source, const GError *error) } } - dialog = e_alert_dialog_new_for_args ((GtkWindow *) parent, "addressbook:load-error", label_string, NULL); - g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); + if (alert_sink) { + e_alert_submit (alert_sink, "addressbook:load-error", label_string, NULL); + } else { + GtkWidget *dialog; + + dialog = e_alert_dialog_new_for_args ((GtkWindow *) parent, "addressbook:load-error", label_string, NULL); + g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); + gtk_widget_show (dialog); + } - gtk_widget_show (dialog); g_free (label); g_free (uri); } void -eab_search_result_dialog (GtkWidget *parent, +eab_search_result_dialog (EAlertSink *alert_sink, EBookViewStatus status, const gchar *error_msg) { @@ -181,7 +193,7 @@ eab_search_result_dialog (GtkWidget *parent, g_return_if_reached (); } - e_alert_run_dialog_for_args ((GtkWindow *) parent, "addressbook:search-error", str, NULL); + e_alert_submit (alert_sink, "addressbook:search-error", str, NULL); g_free (str); } @@ -318,6 +330,7 @@ struct ContactCopyProcess_ { EBook *source; EBook *destination; ContactCopyDone done_cb; + EAlertSink *alert_sink; }; static void @@ -365,7 +378,7 @@ contact_added_cb (EBook* book, const GError *error, const gchar *id, gpointer us if (error && !g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) { process->book_status = FALSE; - eab_error_dialog (_("Error adding contact"), error); + eab_error_dialog (process->alert_sink, _("Error adding contact"), error); } else if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) { process->book_status = FALSE; @@ -421,12 +434,13 @@ void eab_transfer_contacts (EBook *source_book, GList *contacts /* adopted */, gboolean delete_from_source, - GtkWindow *parent_window) + EAlertSink *alert_sink) { ESource *destination; static gchar *last_uid = NULL; ContactCopyProcess *process; gchar *desc; + GtkWindow *window = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (alert_sink))); g_return_if_fail (E_IS_BOOK (source_book)); @@ -450,7 +464,7 @@ eab_transfer_contacts (EBook *source_book, destination = eab_select_source ( e_book_get_source (source_book), - desc, NULL, last_uid, parent_window); + desc, NULL, last_uid, window); if (!destination) return; @@ -466,6 +480,7 @@ eab_transfer_contacts (EBook *source_book, process->source = g_object_ref (source_book); process->contacts = contacts; process->destination = NULL; + process->alert_sink = alert_sink; if (delete_from_source) process->done_cb = delete_contacts; @@ -473,7 +488,7 @@ eab_transfer_contacts (EBook *source_book, process->done_cb = NULL; e_load_book_source_async ( - destination, parent_window, NULL, + destination, window, NULL, (GAsyncReadyCallback) book_loaded_cb, process); } diff --git a/addressbook/gui/widgets/eab-gui-util.h b/addressbook/gui/widgets/eab-gui-util.h index e1fd43fdf3..45c7d40b79 100644 --- a/addressbook/gui/widgets/eab-gui-util.h +++ b/addressbook/gui/widgets/eab-gui-util.h @@ -26,22 +26,25 @@ #include #include +#include "e-util/e-alert-sink.h" G_BEGIN_DECLS -void eab_error_dialog (const gchar *msg, +void eab_error_dialog (EAlertSink *alert_sink, + const gchar *msg, const GError *error); void eab_load_error_dialog (GtkWidget *parent, + EAlertSink *alert_sink, ESource *source, const GError *error); -void eab_search_result_dialog (GtkWidget *parent, +void eab_search_result_dialog (EAlertSink *alert_sink, EBookViewStatus status, const gchar *error_msg); gint eab_prompt_save_dialog (GtkWindow *parent); void eab_transfer_contacts (EBook *source_book, GList *contacts, /* adopted */ gboolean delete_from_source, - GtkWindow *parent_window); + EAlertSink *alert_sink); gchar * eab_suggest_filename (GList *contact_list); ESource * eab_select_source (ESource *except_source, const gchar *title, -- cgit v1.2.3 From 886b3ac072e2d7dde15b4ad3d0abf879b82f849d Mon Sep 17 00:00:00 2001 From: Vibha Yadav Date: Tue, 11 Jan 2011 18:16:03 +0530 Subject: Bug #638087 - Crash at merging duplicate contact Using 'comments' instead of 'comment'. --- addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui index 84b4ac6c11..3bb61184b6 100644 --- a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui +++ b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui @@ -93,7 +93,7 @@ True - Conflicting Contact: + Conflicting Contact: False False GTK_JUSTIFY_CENTER -- cgit v1.2.3 From 098a7abf652e5a1596801c466f0de0fb656b69c9 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 11 Jan 2011 13:57:35 +0100 Subject: Bug #634305 - Crash on move of contacts between books --- addressbook/gui/widgets/e-addressbook-selector.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index 402fcf9295..110343ce80 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -42,6 +42,7 @@ struct _MergeContext { EContact *current_contact; GList *remaining_contacts; guint pending_removals; + gboolean pending_adds; gint remove_from_source : 1; gint copy_done : 1; @@ -63,6 +64,10 @@ merge_context_next (MergeContext *merge_context) { GList *list; + merge_context->current_contact = NULL; + if (!merge_context->remaining_contacts) + return; + list = merge_context->remaining_contacts; merge_context->current_contact = list->data; list = g_list_delete_link (list, list); @@ -104,7 +109,7 @@ addressbook_selector_removed_cb (EBook *book, { merge_context->pending_removals--; - if (merge_context->remaining_contacts != NULL) + if (merge_context->pending_adds) return; if (merge_context->pending_removals > 0) @@ -139,8 +144,10 @@ addressbook_selector_merge_next_cb (EBook *book, (EBookIdAsyncCallback) addressbook_selector_merge_next_cb, merge_context); - } else if (merge_context->pending_removals == 0) + } else if (merge_context->pending_removals == 0) { merge_context_free (merge_context); + } else + merge_context->pending_adds = FALSE; } static void @@ -275,6 +282,7 @@ addressbook_selector_data_dropped (ESourceSelector *selector, merge_context = merge_context_new (source_book, target_book, list); merge_context->remove_from_source = remove_from_source; + merge_context->pending_adds = TRUE; eab_merging_book_add_contact ( target_book, merge_context->current_contact, -- cgit v1.2.3 From 0af3ff804c0d71c76fd63f0a2a152cac7de64863 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 13 Jan 2011 10:54:58 -0500 Subject: Fudge gtk_widget_get_preferred_size() for gtk2. Easy enough to fake gtk_widget_get_preferred_size() in gtk2 using gtk_widget_size_request(). Reduces diff noise with gtk3 branch. --- addressbook/gui/contact-editor/e-contact-editor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index d071e9bab6..4ca2dd624b 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -2706,8 +2706,8 @@ init_all (EContactEditor *editor) /* with so many scrolled windows, we need to do some manual sizing */ - gtk_widget_size_request ( - e_builder_get_widget (editor->builder, "vbox-size-leader"), &tab_req); + gtk_widget_get_preferred_size ( + e_builder_get_widget (editor->builder, "vbox-size-leader"), &tab_req, NULL); gtk_widget_set_size_request ( e_builder_get_widget (editor->builder, "scrolledwindow-size-leader"), tab_req.width, tab_req.height + 8); -- cgit v1.2.3 From b1565f53d797fe4dbbf7256eca060eb4d8ee9ee4 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 21 Jan 2011 16:31:09 -0500 Subject: Use e_load_book_source_async() for all EBook loading. --- .../gui/contact-editor/e-contact-quick-add.c | 130 +++++++++++---------- addressbook/gui/merging/eab-contact-compare.c | 66 +++++++---- 2 files changed, 110 insertions(+), 86 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 032f4ac475..ca4fb6f01b 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -27,8 +27,8 @@ #include #include #include +#include #include -#include #include #include "e-contact-editor.h" #include "e-contact-quick-add.h" @@ -41,7 +41,9 @@ struct _QuickAdd { gchar *email; gchar *vcard; EContact *contact; - EBook *book; + GCancellable *cancellable; + ESourceList *source_list; + ESource *source; EContactQuickAddCallback cb; gpointer closure; @@ -60,27 +62,22 @@ quick_add_new (void) { QuickAdd *qa = g_new0 (QuickAdd, 1); qa->contact = e_contact_new (); - qa->book = NULL; qa->refs = 1; return qa; } -#if 0 -static void -quick_add_ref (QuickAdd *qa) -{ - if (qa) { - ++qa->refs; - } -} -#endif - static void quick_add_unref (QuickAdd *qa) { if (qa) { --qa->refs; if (qa->refs == 0) { + if (qa->cancellable != NULL) { + g_cancellable_cancel (qa->cancellable); + g_object_unref (qa->cancellable); + } + if (qa->source_list != NULL) + g_object_unref (qa->source_list); g_free (qa->name); g_free (qa->email); g_free (qa->vcard); @@ -121,9 +118,18 @@ quick_add_set_vcard (QuickAdd *qa, const gchar *vcard) } static void -merge_cb (EBook *book, const GError *error, gpointer closure) +merge_cb (ESource *source, + GAsyncResult *result, + QuickAdd *qa) { - QuickAdd *qa = (QuickAdd *) closure; + EBook *book; + GError *error = NULL; + + book = e_load_book_source_finish (source, result, &error); + + /* Ignore cancellations. */ + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + return; if (!error) { if (e_book_is_writable (book)) @@ -151,7 +157,16 @@ merge_cb (EBook *book, const GError *error, gpointer closure) static void quick_add_merge_contact (QuickAdd *qa) { - addressbook_load (qa->book, merge_cb, qa); + if (qa->cancellable != NULL) { + g_cancellable_cancel (qa->cancellable); + g_object_unref (qa->cancellable); + } + + qa->cancellable = g_cancellable_new (); + + e_load_book_source_async ( + qa->source, NULL, qa->cancellable, + (GAsyncReadyCallback) merge_cb, qa); } /* @@ -235,9 +250,18 @@ ce_have_contact (EBook *book, const GError *error, EContact *contact, gpointer c } static void -ce_have_book (EBook *book, const GError *error, gpointer closure) +ce_have_book (ESource *source, + GAsyncResult *result, + QuickAdd *qa) { - QuickAdd *qa = (QuickAdd *) closure; + EBook *book; + GError *error = NULL; + + book = e_load_book_source_finish (source, result, &error); + + /* Ignore cancellations. */ + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + return; if (error) { if (book) @@ -252,7 +276,16 @@ ce_have_book (EBook *book, const GError *error, gpointer closure) static void edit_contact (QuickAdd *qa) { - addressbook_load (qa->book, ce_have_book, qa); + if (qa->cancellable != NULL) { + g_cancellable_cancel (qa->cancellable); + g_object_unref (qa->cancellable); + } + + qa->cancellable = g_cancellable_new (); + + e_load_book_source_async ( + qa->source, NULL, qa->cancellable, + (GAsyncReadyCallback) ce_have_book, qa); } #define QUICK_ADD_RESPONSE_EDIT_FULL 2 @@ -313,11 +346,14 @@ sanitize_widgets (QuickAdd *qa) g_return_if_fail (qa != NULL); g_return_if_fail (qa->dialog != NULL); - /* do not call here e_book_is_writable (qa->book), because it requires opened book, which takes time for remote books */ - enabled = qa->book != NULL && e_source_combo_box_get_active_uid (E_SOURCE_COMBO_BOX (qa->combo_box)); + enabled = (e_source_combo_box_get_active_uid ( + E_SOURCE_COMBO_BOX (qa->combo_box)) != NULL); - gtk_dialog_set_response_sensitive (GTK_DIALOG (qa->dialog), QUICK_ADD_RESPONSE_EDIT_FULL, enabled); - gtk_dialog_set_response_sensitive (GTK_DIALOG (qa->dialog), GTK_RESPONSE_OK, enabled); + gtk_dialog_set_response_sensitive ( + GTK_DIALOG (qa->dialog), + QUICK_ADD_RESPONSE_EDIT_FULL, enabled); + gtk_dialog_set_response_sensitive ( + GTK_DIALOG (qa->dialog), GTK_RESPONSE_OK, enabled); } static void @@ -327,11 +363,9 @@ source_changed (ESourceComboBox *source_combo_box, QuickAdd *qa) source = e_source_combo_box_get_active (source_combo_box); if (source != NULL) { - if (qa->book) { - g_object_unref (qa->book); - qa->book = NULL; - } - qa->book = e_book_new (source, NULL); + if (qa->source != NULL) + g_object_unref (qa->source); + qa->source = g_object_ref (source); } sanitize_widgets (qa); @@ -340,13 +374,12 @@ source_changed (ESourceComboBox *source_combo_box, QuickAdd *qa) static GtkWidget * build_quick_add_dialog (QuickAdd *qa) { - ESourceList *source_list; GConfClient *gconf_client; GtkWidget *container; GtkWidget *dialog; GtkWidget *label; GtkTable *table; - EBook *book; + ESource *source; const gint xpad=0, ypad=0; g_return_val_if_fail (qa != NULL, NULL); @@ -386,46 +419,19 @@ build_quick_add_dialog (QuickAdd *qa) } gconf_client = gconf_client_get_default (); - source_list = e_source_list_new_for_gconf (gconf_client, "/apps/evolution/addressbook/sources"); + qa->source_list = e_source_list_new_for_gconf ( + gconf_client, "/apps/evolution/addressbook/sources"); + source = e_source_list_peek_default_source (qa->source_list); g_object_unref (gconf_client); - qa->combo_box = e_source_combo_box_new (source_list); - book = e_book_new_default_addressbook (NULL); + qa->combo_box = e_source_combo_box_new (qa->source_list); e_source_combo_box_set_active ( - E_SOURCE_COMBO_BOX (qa->combo_box), - e_book_get_source (book)); - - if (!e_source_combo_box_get_active_uid (E_SOURCE_COMBO_BOX (qa->combo_box))) { - /* this means the e_book_new_default_addressbook didn't find any "default" nor "system" source, - and created new one for us. That is wrong, choose one from combo instead. */ + E_SOURCE_COMBO_BOX (qa->combo_box), source); - if (book) { - g_object_unref (book); - book = NULL; - } - - book = e_book_new (e_source_list_peek_source_any (source_list), NULL); - e_source_combo_box_set_active (E_SOURCE_COMBO_BOX (qa->combo_box), e_book_get_source (book)); - - if (!e_source_combo_box_get_active_uid (E_SOURCE_COMBO_BOX (qa->combo_box))) { - /* Does it failed again? What is going on? */ - if (book) - g_object_unref (book); - book = NULL; - } - } - - if (qa->book) { - g_object_unref (qa->book); - qa->book = NULL; - } - qa->book = book; source_changed (E_SOURCE_COMBO_BOX (qa->combo_box), qa); g_signal_connect ( qa->combo_box, "changed", G_CALLBACK (source_changed), qa); - g_object_unref (source_list); - table = GTK_TABLE (gtk_table_new (3, 2, FALSE)); gtk_table_set_row_spacings (table, 6); gtk_table_set_col_spacings (table, 12); diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index d5ba1a5f84..db92649f6d 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -24,7 +24,7 @@ #include #include #include -#include "addressbook/util/addressbook.h" +#include #include "addressbook/util/eab-book-util.h" #include "eab-contact-compare.h" @@ -541,6 +541,7 @@ eab_contact_compare (EContact *contact1, EContact *contact2) typedef struct _MatchSearchInfo MatchSearchInfo; struct _MatchSearchInfo { + ESourceList *source_list; EContact *contact; GList *avoid; EABContactMatchQueryCallback cb; @@ -551,6 +552,9 @@ static void match_search_info_free (MatchSearchInfo *info) { if (info) { + if (info->source_list != NULL) + g_object_unref (info->source_list); + g_object_unref (info->contact); /* This should already have been deallocated, but just in case... */ @@ -626,9 +630,9 @@ query_cb (EBook *book, const GError *error, GList *contacts, gpointer closure) #define MAX_QUERY_PARTS 10 static void -use_common_book_cb (EBook *book, const GError *error, gpointer closure) +use_common_book (EBook *book, + MatchSearchInfo *info) { - MatchSearchInfo *info = (MatchSearchInfo *) closure; EContact *contact = info->contact; EContactName *contact_name; GList *contact_email; @@ -716,22 +720,23 @@ use_common_book_cb (EBook *book, const GError *error, gpointer closure) e_book_query_unref (query); } -void -eab_contact_locate_match (EContact *contact, EABContactMatchQueryCallback cb, gpointer closure) +static void +book_loaded_cb (ESource *source, + GAsyncResult *result, + MatchSearchInfo *info) { - MatchSearchInfo *info; + EBook *book; - g_return_if_fail (contact && E_IS_CONTACT (contact)); - g_return_if_fail (cb != NULL); - - info = g_new (MatchSearchInfo, 1); - info->contact = contact; - g_object_ref (contact); - info->cb = cb; - info->closure = closure; - info->avoid = NULL; + book = e_load_book_source_finish (source, result, NULL); + use_common_book (book, info); +} - addressbook_load_default_book ((EBookAsyncCallback) use_common_book_cb, info); +void +eab_contact_locate_match (EContact *contact, + EABContactMatchQueryCallback cb, + gpointer closure) +{ + eab_contact_locate_match_full (NULL, contact, NULL, cb, closure); } /** @@ -746,24 +751,37 @@ eab_contact_locate_match (EContact *contact, EABContactMatchQueryCallback cb, gp * Look for the best match and return it using the EABContactMatchQueryCallback. **/ void -eab_contact_locate_match_full (EBook *book, EContact *contact, GList *avoid, EABContactMatchQueryCallback cb, gpointer closure) +eab_contact_locate_match_full (EBook *book, + EContact *contact, + GList *avoid, + EABContactMatchQueryCallback cb, + gpointer closure) { MatchSearchInfo *info; + ESource *source; - g_return_if_fail (contact && E_IS_CONTACT (contact)); + g_return_if_fail (E_IS_CONTACT (contact)); g_return_if_fail (cb != NULL); info = g_new (MatchSearchInfo, 1); - info->contact = contact; - g_object_ref (contact); + info->contact = g_object_ref (contact); info->cb = cb; info->closure = closure; info->avoid = g_list_copy (avoid); g_list_foreach (info->avoid, (GFunc) g_object_ref, NULL); - if (book) - use_common_book_cb (book, NULL, info); - else - addressbook_load_default_book ((EBookAsyncCallback) use_common_book_cb, info); + if (book) { + use_common_book (book, info); + return; + } + + if (!e_book_get_addressbooks (&info->source_list, NULL)) + return; + + source = e_source_list_peek_default_source (info->source_list); + + e_load_book_source_async ( + source, NULL, NULL, (GAsyncReadyCallback) + book_loaded_cb, info); } -- cgit v1.2.3 From 753c60fc67a0a56a5f119c14ffa54ea9af95c208 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 9 Nov 2010 08:48:33 -0500 Subject: Drop backward-compatibility cruft. --- addressbook/gui/contact-editor/e-contact-editor-fullname.c | 6 ------ addressbook/gui/contact-editor/e-contact-editor.c | 3 --- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 3 --- addressbook/gui/merging/eab-contact-merging.c | 3 --- addressbook/gui/widgets/e-minicard-label.c | 3 --- addressbook/gui/widgets/e-minicard-view.c | 3 --- addressbook/gui/widgets/e-minicard.c | 3 --- 7 files changed, 24 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index c26b6e5e96..ce9092c411 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -28,9 +28,6 @@ #include "e-contact-editor-fullname.h" -/* backward-compatibility cruft */ -#include "e-util/gtk-compat.h" - static void fill_in_info (EContactEditorFullname *editor); static void extract_info (EContactEditorFullname *editor); @@ -200,9 +197,6 @@ e_contact_editor_fullname_init (EContactEditorFullname *e_contact_editor_fullnam content_area = gtk_dialog_get_content_area (dialog); gtk_widget_realize (GTK_WIDGET (e_contact_editor_fullname)); -#if !GTK_CHECK_VERSION(2,90,7) - g_object_set (dialog, "has-separator", FALSE, NULL); -#endif gtk_container_set_border_width (GTK_CONTAINER (action_area), 12); gtk_container_set_border_width (GTK_CONTAINER (content_area), 0); diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 4ca2dd624b..44a272f3a3 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -53,9 +53,6 @@ #include "e-contact-editor-fullname.h" -/* backward-compatibility cruft */ -#include "e-util/gtk-compat.h" - #define EMAIL_SLOTS 4 #define PHONE_SLOTS 8 #define IM_SLOTS 4 diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 7c5d9a9c98..67c9c88c6f 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -47,9 +47,6 @@ #include "e-contact-list-model.h" #include "eab-contact-merging.h" -/* backward-compatibility cruft */ -#include - #define E_CONTACT_LIST_EDITOR_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE \ ((obj), E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate)) diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index b97fb8e1f3..dd99a12dce 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -34,9 +34,6 @@ #include "e-util/e-util-private.h" #include -/* backend-compatibility cruft */ -#include "e-util/gtk-compat.h" - typedef struct dropdown_data dropdown_data; typedef enum { E_CONTACT_MERGING_ADD, diff --git a/addressbook/gui/widgets/e-minicard-label.c b/addressbook/gui/widgets/e-minicard-label.c index 21cb6154a0..fd4e692c69 100644 --- a/addressbook/gui/widgets/e-minicard-label.c +++ b/addressbook/gui/widgets/e-minicard-label.c @@ -33,9 +33,6 @@ #include #include -/* backward-compatibility cruft */ -#include "e-util/gtk-compat.h" - static void e_minicard_label_init (EMinicardLabel *card); static void e_minicard_label_class_init (EMinicardLabelClass *klass); static void e_minicard_label_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index d3a05e53a6..0e36bd6b9b 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -36,9 +36,6 @@ #include "e-util/e-util.h" #include "ea-addressbook.h" -/* backward-compatibility cruft */ -#include "e-util/gtk-compat.h" - static void e_minicard_view_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 27d8c8843d..07eacac291 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -39,9 +39,6 @@ #include #include "ea-addressbook.h" -/* backward-compatibility cruft */ -#include "e-util/gtk-compat.h" - static void e_minicard_init (EMinicard *card); static void e_minicard_class_init (EMinicardClass *class); static void e_minicard_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -- cgit v1.2.3 From ba05584de52f5f953eee7e458ebf4d45da5a3319 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 13 Jan 2011 22:55:52 -0500 Subject: Dialogs no longer have separators. --- addressbook/gui/contact-editor/contact-editor.ui | 1 - addressbook/gui/contact-editor/e-contact-quick-add.c | 2 +- addressbook/gui/contact-editor/fullname.ui | 1 - addressbook/gui/contact-list-editor/contact-list-editor.ui | 1 - addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui | 1 - addressbook/gui/merging/eab-contact-duplicate-detected.ui | 1 - addressbook/gui/merging/eab-contact-merging.c | 2 +- 7 files changed, 2 insertions(+), 7 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/contact-editor.ui b/addressbook/gui/contact-editor/contact-editor.ui index 88c90c1c31..668fa63ab6 100644 --- a/addressbook/gui/contact-editor/contact-editor.ui +++ b/addressbook/gui/contact-editor/contact-editor.ui @@ -69,7 +69,6 @@ Contact Editor center dialog - False True diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index ca4fb6f01b..4ddca1b003 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -387,7 +387,7 @@ build_quick_add_dialog (QuickAdd *qa) dialog = gtk_dialog_new_with_buttons ( _("Contact Quick-Add"), e_shell_get_active_window (NULL), - GTK_DIALOG_NO_SEPARATOR, + 0, _("_Edit Full"), QUICK_ADD_RESPONSE_EDIT_FULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, diff --git a/addressbook/gui/contact-editor/fullname.ui b/addressbook/gui/contact-editor/fullname.ui index 62e45250e2..47cfde5d2e 100644 --- a/addressbook/gui/contact-editor/fullname.ui +++ b/addressbook/gui/contact-editor/fullname.ui @@ -68,7 +68,6 @@ GDK_GRAVITY_NORTH_WEST True False - False True diff --git a/addressbook/gui/contact-list-editor/contact-list-editor.ui b/addressbook/gui/contact-list-editor/contact-list-editor.ui index f8c94e6b1b..31bc2fc1a6 100644 --- a/addressbook/gui/contact-list-editor/contact-list-editor.ui +++ b/addressbook/gui/contact-list-editor/contact-list-editor.ui @@ -8,7 +8,6 @@ GTK_WIN_POS_CENTER stock_contact-list GDK_WINDOW_TYPE_HINT_NORMAL - False diff --git a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui index 3bb61184b6..aefd3de172 100644 --- a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui +++ b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui @@ -10,7 +10,6 @@ False True False - True True diff --git a/addressbook/gui/merging/eab-contact-duplicate-detected.ui b/addressbook/gui/merging/eab-contact-duplicate-detected.ui index 38d8f0e1d8..124b9c2787 100644 --- a/addressbook/gui/merging/eab-contact-duplicate-detected.ui +++ b/addressbook/gui/merging/eab-contact-duplicate-detected.ui @@ -14,7 +14,6 @@ False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST - False 400 500 diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index dd99a12dce..1aababe57a 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -221,7 +221,7 @@ mergeit (EContactMergingLookup *lookup) gint row = -1; gint value = 0, result; - dialog = (GtkDialog *)(gtk_dialog_new_with_buttons (_("Merge Contact"), NULL, GTK_DIALOG_NO_SEPARATOR, NULL)); + dialog = (GtkDialog *)(gtk_dialog_new_with_buttons (_("Merge Contact"), NULL, 0, NULL)); gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); content_area = gtk_dialog_get_content_area (dialog); -- cgit v1.2.3 From adc0e71ea6d243e815a7fed8fdd37b69bbf352db Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 13 Jan 2011 23:22:29 -0500 Subject: Adapt to GtkComboBox class reorg. --- addressbook/gui/contact-editor/contact-editor.ui | 4 +++- .../gui/contact-editor/e-contact-editor-fullname.c | 5 ---- addressbook/gui/contact-editor/e-contact-editor.c | 27 +++++++++++++++++----- addressbook/gui/contact-editor/fullname.ui | 8 +++++-- 4 files changed, 30 insertions(+), 14 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/contact-editor.ui b/addressbook/gui/contact-editor/contact-editor.ui index 668fa63ab6..428b17a600 100644 --- a/addressbook/gui/contact-editor/contact-editor.ui +++ b/addressbook/gui/contact-editor/contact-editor.ui @@ -255,8 +255,10 @@ - + True + True + 0 model1 diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index ce9092c411..15eddbd53f 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -227,11 +227,6 @@ e_contact_editor_fullname_init (EContactEditorFullname *e_contact_editor_fullnam gtk_window_set_icon_name ( GTK_WINDOW (e_contact_editor_fullname), "contact-new"); - - widget = e_builder_get_widget (builder, "comboentry-title"); - gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX_ENTRY (widget), 0); - widget = e_builder_get_widget (builder, "comboentry-suffix"); - gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX_ENTRY (widget), 0); } GtkWidget* diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 44a272f3a3..2ef0fd0ee9 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -537,8 +537,13 @@ file_as_set_style (EContactEditor *editor, gint style) company = gtk_entry_get_text (GTK_ENTRY (company_w)); if (style == -1) { - string = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (combo_file_as)); - strings = g_list_append (strings, string); + GtkWidget *entry; + + entry = gtk_bin_get_child (GTK_BIN (combo_file_as)); + if (entry) { + string = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry))); + strings = g_list_append (strings, string); + } } for (i = 0; i < 6; i++) { @@ -554,11 +559,16 @@ file_as_set_style (EContactEditor *editor, gint style) if (combo_file_as) { GList *l; + GtkListStore *list_store; + GtkTreeIter iter; - gtk_list_store_clear (GTK_LIST_STORE (gtk_combo_box_get_model (combo_file_as))); + list_store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_file_as)); + + gtk_list_store_clear (list_store); for (l = strings; l; l = l->next) { - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_file_as), l->data); + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, 0, l->data, -1); } } @@ -592,7 +602,12 @@ name_entry_changed (GtkWidget *widget, EContactEditor *editor) static void file_as_combo_changed (GtkWidget *widget, EContactEditor *editor) { - gchar *string = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (widget)); + GtkWidget *entry; + gchar *string = NULL; + + entry = gtk_bin_get_child (GTK_BIN (widget)); + if (entry) + string = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry))); if (string && *string) { gchar *title; @@ -2550,7 +2565,7 @@ init_simple (EContactEditor *editor) widget = e_builder_get_widget (editor->builder, "entry-fullname"); g_signal_connect (widget, "changed", G_CALLBACK (name_entry_changed), editor); widget = e_builder_get_widget (editor->builder, "combo-file-as"); - gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX_ENTRY (widget), 0); + gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (widget), 0); g_signal_connect (widget, "changed", G_CALLBACK (file_as_combo_changed), editor); widget = e_builder_get_widget (editor->builder, "entry-company"); g_signal_connect (widget, "changed", G_CALLBACK (company_entry_changed), editor); diff --git a/addressbook/gui/contact-editor/fullname.ui b/addressbook/gui/contact-editor/fullname.ui index 47cfde5d2e..227bec9d31 100644 --- a/addressbook/gui/contact-editor/fullname.ui +++ b/addressbook/gui/contact-editor/fullname.ui @@ -312,8 +312,10 @@ - + True + True + 0 False True True @@ -329,8 +331,10 @@ - + True + True + 0 False True True -- cgit v1.2.3 From 72341218cf303a7bb1151804d26e56d6b7f1e403 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 26 Jan 2011 08:43:26 -0500 Subject: Bug #640526 - Default column width in address card view is small --- addressbook/gui/widgets/e-minicard-view-widget.c | 4 ++-- addressbook/gui/widgets/gal-view-minicard.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index 6751fc99fd..855b5c2058 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -139,7 +139,7 @@ e_minicard_view_widget_class_init (EMinicardViewWidgetClass *class) g_param_spec_double ("column_width", "Column Width", NULL, - 0.0, G_MAXDOUBLE, 150.0, + 0.0, G_MAXDOUBLE, 225.0, G_PARAM_READWRITE)); signals[CREATE_CONTACT] = @@ -196,7 +196,7 @@ e_minicard_view_widget_init (EMinicardViewWidget *view) view->book = NULL; view->query = NULL; view->editable = FALSE; - view->column_width = 150; + view->column_width = 225; } GtkWidget * diff --git a/addressbook/gui/widgets/gal-view-minicard.c b/addressbook/gui/widgets/gal-view-minicard.c index baf62eca4e..383a5620d9 100644 --- a/addressbook/gui/widgets/gal-view-minicard.c +++ b/addressbook/gui/widgets/gal-view-minicard.c @@ -82,7 +82,7 @@ view_minicard_load (GalView *view, root = xmlDocGetRootElement (doc); view_minicard->column_width = e_xml_get_double_prop_by_name_with_default ( - root, (guchar *) "column_width", 150); + root, (guchar *) "column_width", 225); xmlFreeDoc (doc); } @@ -175,7 +175,7 @@ static void gal_view_minicard_init (GalViewMinicard *gvm) { gvm->title = NULL; - gvm->column_width = 150.0; + gvm->column_width = 225.0; gvm->emvw = NULL; gvm->emvw_column_width_changed_id = 0; -- cgit v1.2.3 From 56bec26a07bc1041f5a01726b875ac1f40baaa49 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 27 Jan 2011 19:20:24 +0100 Subject: Bug #640707 - Crash on 'Add to address book'->'Edit full' click --- addressbook/gui/contact-editor/e-contact-quick-add.c | 2 -- addressbook/gui/merging/eab-contact-compare.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 4ddca1b003..c0c424cc23 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -196,8 +196,6 @@ editor_closed_cb (GtkWidget *w, gpointer closure) if (qa) /* We don't need to unref qa because we set_data_full below */ g_object_set_data (G_OBJECT (w), "quick_add", NULL); - - g_object_unref (w); } static void diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index db92649f6d..398a94832b 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -763,7 +763,7 @@ eab_contact_locate_match_full (EBook *book, g_return_if_fail (E_IS_CONTACT (contact)); g_return_if_fail (cb != NULL); - info = g_new (MatchSearchInfo, 1); + info = g_new0 (MatchSearchInfo, 1); info->contact = g_object_ref (contact); info->cb = cb; info->closure = closure; -- cgit v1.2.3 From 21ab8044dab93b6367463593628ec42befda4f67 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 29 Jan 2011 10:50:53 -0500 Subject: Coding style and whitespace cleanup. --- .../gui/contact-editor/e-contact-quick-add.c | 41 ++++++++++++++-------- .../gui/widgets/e-addressbook-reflow-adapter.c | 18 +++++++--- addressbook/gui/widgets/e-addressbook-view.c | 17 ++++----- 3 files changed, 49 insertions(+), 27 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index c0c424cc23..30f0068035 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -169,12 +169,14 @@ quick_add_merge_contact (QuickAdd *qa) (GAsyncReadyCallback) merge_cb, qa); } -/* - * Raise a contact editor with all fields editable, and hook up all signals accordingly. - */ +/* Raise a contact editor with all fields editable, + * and hook up all signals accordingly. */ static void -contact_added_cb (EContactEditor *ce, EBookStatus status, EContact *contact, gpointer closure) +contact_added_cb (EContactEditor *ce, + EBookStatus status, + EContact *contact, + gpointer closure) { QuickAdd *qa = (QuickAdd *) g_object_get_data (G_OBJECT (ce), "quick_add"); @@ -228,11 +230,14 @@ ce_have_contact (EBook *book, const GError *error, EContact *contact, gpointer c "changed", contact != NULL, NULL); - /* We pass this via object data, so that we don't get a dangling pointer referenced if both - the "contact_added" and "editor_closed" get emitted. (Which, based on a backtrace in bugzilla, - I think can happen and cause a crash. */ - g_object_set_data_full (G_OBJECT (contact_editor), "quick_add", qa, - (GDestroyNotify) quick_add_unref); + /* We pass this via object data, so that we don't get a + * dangling pointer referenced if both the "contact_added" + * and "editor_closed" get emitted. (Which, based on a + * backtrace in bugzilla, I think can happen and cause a + * crash. */ + g_object_set_data_full ( + G_OBJECT (contact_editor), "quick_add", qa, + (GDestroyNotify) quick_add_unref); g_signal_connect (contact_editor, "contact_added", @@ -294,7 +299,8 @@ clicked_cb (GtkWidget *w, gint button, gpointer closure) QuickAdd *qa = (QuickAdd *) closure; /* Get data out of entries. */ - if (!qa->vcard && (button == GTK_RESPONSE_OK || button == QUICK_ADD_RESPONSE_EDIT_FULL)) { + if (!qa->vcard && (button == GTK_RESPONSE_OK || + button == QUICK_ADD_RESPONSE_EDIT_FULL)) { gchar *name = NULL; gchar *email = NULL; @@ -498,7 +504,8 @@ e_contact_quick_add (const gchar *in_name, const gchar *email, /* Remove extra whitespace and the quotes some mailers put around names. */ g_strstrip (name); len = strlen (name); - if ((name[0] == '\'' && name[len-1] == '\'') || (name[0] == '"' && name[len-1] == '"')) { + if ((name[0] == '\'' && name[len-1] == '\'') || + (name[0] == '"' && name[len-1] == '"')) { name[0] = ' '; name[len-1] = ' '; } @@ -520,7 +527,9 @@ e_contact_quick_add (const gchar *in_name, const gchar *email, } void -e_contact_quick_add_free_form (const gchar *text, EContactQuickAddCallback cb, gpointer closure) +e_contact_quick_add_free_form (const gchar *text, + EContactQuickAddCallback cb, + gpointer closure) { gchar *name=NULL, *email=NULL; const gchar *last_at, *s; @@ -595,7 +604,9 @@ e_contact_quick_add_free_form (const gchar *text, EContactQuickAddCallback cb, g } void -e_contact_quick_add_email (const gchar *email, EContactQuickAddCallback cb, gpointer closure) +e_contact_quick_add_email (const gchar *email, + EContactQuickAddCallback cb, + gpointer closure) { gchar *name = NULL; gchar *addr = NULL; @@ -622,7 +633,9 @@ e_contact_quick_add_email (const gchar *email, EContactQuickAddCallback cb, gpoi } void -e_contact_quick_add_vcard (const gchar *vcard, EContactQuickAddCallback cb, gpointer closure) +e_contact_quick_add_vcard (const gchar *vcard, + EContactQuickAddCallback cb, + gpointer closure) { QuickAdd *qa; GtkWidget *dialog; diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index f1a7939cb7..cb1adcfe25 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -197,11 +197,19 @@ addressbook_create_cmp_cache (EReflowModel *erm) cmp_cache = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free); for (ii = 0; ii < count; ii++) { - EContact *contact = (EContact*) e_addressbook_model_contact_at (priv->model, ii); - if (contact) { - const gchar *file_as = e_contact_get_const (contact, E_CONTACT_FILE_AS); - if (file_as) - g_hash_table_insert (cmp_cache, GINT_TO_POINTER (ii), g_utf8_collate_key (file_as, -1)); + EContact *contact; + + contact = (EContact *) + e_addressbook_model_contact_at (priv->model, ii); + if (contact != NULL) { + const gchar *file_as; + + file_as = e_contact_get_const ( + contact, E_CONTACT_FILE_AS); + if (file_as != NULL) + g_hash_table_insert ( + cmp_cache, GINT_TO_POINTER (ii), + g_utf8_collate_key (file_as, -1)); } } diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 5879d9970d..f85bcfe6d3 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1471,14 +1471,15 @@ e_addressbook_view_view (EAddressbookView *view) /* XXX Use e_alert_new(). */ /* XXX Provide a parent window. */ dialog = gtk_message_dialog_new ( - NULL, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, - ngettext ( - /* Translators: This is shown for more than 5 contacts. */ - "Opening %d contacts will open %d new windows as well.\nDo you really want to display all of these contacts?", - "Opening %d contacts will open %d new windows as well.\nDo you really want to display all of these contacts?", - length - ), - length, length); + NULL, 0, + GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, ngettext ( + /* Translators: This is shown for > 5 contacts. */ + "Opening %d contacts will open %d new windows " + "as well.\nDo you really want to display all of " + "these contacts?", + "Opening %d contacts will open %d new windows " + "as well.\nDo you really want to display all of " + "these contacts?", length), length, length); gtk_dialog_add_buttons ( GTK_DIALOG (dialog), _("_Don't Display"), GTK_RESPONSE_NO, -- cgit v1.2.3 From 0109aa3a92b484ebb85c6481e5a8e39819b1f011 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 30 Jan 2011 11:32:55 -0500 Subject: More whitespace cleanup. --- addressbook/gui/contact-editor/e-contact-editor.c | 489 ++++++++++++--------- .../gui/widgets/e-addressbook-table-adapter.c | 66 +-- addressbook/gui/widgets/ea-addressbook.c | 2 +- addressbook/gui/widgets/ea-minicard-view.c | 2 +- 4 files changed, 306 insertions(+), 253 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 2ef0fd0ee9..55709ed081 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -71,17 +71,17 @@ enum { NUM_IM_COLUMNS }; -static void e_contact_editor_init (EContactEditor *editor); -static void e_contact_editor_class_init (EContactEditorClass *klass); +static void e_contact_editor_init (EContactEditor *editor); +static void e_contact_editor_class_init (EContactEditorClass *klass); static void e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void e_contact_editor_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void e_contact_editor_dispose (GObject *object); -static void e_contact_editor_raise (EABEditor *editor); -static void e_contact_editor_show (EABEditor *editor); -static void e_contact_editor_save_contact (EABEditor *editor, gboolean should_close); -static void e_contact_editor_close (EABEditor *editor); -static gboolean e_contact_editor_is_valid (EABEditor *editor); +static void e_contact_editor_raise (EABEditor *editor); +static void e_contact_editor_show (EABEditor *editor); +static void e_contact_editor_save_contact (EABEditor *editor, gboolean should_close); +static void e_contact_editor_close (EABEditor *editor); +static gboolean e_contact_editor_is_valid (EABEditor *editor); static gboolean e_contact_editor_is_changed (EABEditor *editor); static GtkWindow* e_contact_editor_get_window (EABEditor *editor); @@ -290,61 +290,85 @@ e_contact_editor_class_init (EContactEditorClass *klass) editor_class->contact_deleted = e_contact_editor_contact_deleted; editor_class->editor_closed = e_contact_editor_closed; - g_object_class_install_property (object_class, PROP_SOURCE_BOOK, - g_param_spec_object ("source_book", - "Source Book", - NULL, - E_TYPE_BOOK, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_TARGET_BOOK, - g_param_spec_object ("target_book", - "Target Book", - NULL, - E_TYPE_BOOK, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_CONTACT, - g_param_spec_object ("contact", - "Contact", - NULL, - E_TYPE_CONTACT, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_IS_NEW_CONTACT, - g_param_spec_boolean ("is_new_contact", - "Is New Contact", - NULL, - FALSE, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_WRITABLE_FIELDS, - g_param_spec_object ("writable_fields", - "Writable Fields", - NULL, - E_TYPE_LIST, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_REQUIRED_FIELDS, - g_param_spec_object ("required_fields", - "Required Fields", - NULL, - E_TYPE_LIST, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_EDITABLE, - g_param_spec_boolean ("editable", - "Editable", - NULL, - FALSE, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_CHANGED, - g_param_spec_boolean ("changed", - "Changed", - NULL, - FALSE, - G_PARAM_READWRITE)); + g_object_class_install_property ( + object_class, + PROP_SOURCE_BOOK, + g_param_spec_object ( + "source_book", + "Source Book", + NULL, + E_TYPE_BOOK, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_TARGET_BOOK, + g_param_spec_object ( + "target_book", + "Target Book", + NULL, + E_TYPE_BOOK, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_CONTACT, + g_param_spec_object ( + "contact", + "Contact", + NULL, + E_TYPE_CONTACT, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_IS_NEW_CONTACT, + g_param_spec_boolean ( + "is_new_contact", + "Is New Contact", + NULL, + FALSE, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_WRITABLE_FIELDS, + g_param_spec_object ( + "writable_fields", + "Writable Fields", + NULL, + E_TYPE_LIST, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_REQUIRED_FIELDS, + g_param_spec_object ( + "required_fields", + "Required Fields", + NULL, + E_TYPE_LIST, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_EDITABLE, + g_param_spec_boolean ( + "editable", + "Editable", + NULL, + FALSE, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_CHANGED, + g_param_spec_boolean ( + "changed", + "Changed", + NULL, + FALSE, + G_PARAM_READWRITE)); } static void @@ -392,13 +416,13 @@ style_makes_sense (const EContactName *name, const gchar *company, gint style) case 0: /* Fall Through */ case 1: return TRUE; - case 2: - if (name) { - if (name->additional && *name->additional) - return TRUE; - else - return FALSE; - } + case 2: + if (name) { + if (name->additional && *name->additional) + return TRUE; + else + return FALSE; + } case 3: if (company && *company) return TRUE; @@ -420,7 +444,7 @@ name_to_style (const EContactName *name, const gchar *company, gint style) { gchar *string; gchar *strings[4], **stringptr; - gchar *midstring[4], **midstrptr; + gchar *midstring[4], **midstrptr; gchar *substring; switch (style) { case 0: @@ -445,17 +469,17 @@ name_to_style (const EContactName *name, const gchar *company, gint style) *stringptr = NULL; string = g_strjoinv(" ", strings); break; - case 2: - midstrptr=midstring; - if (name) { - if (name->family && *name->family) + case 2: + midstrptr=midstring; + if (name) { + if (name->family && *name->family) *(midstrptr++) = name->family; - if (name->given && *name->given) + if (name->given && *name->given) *(midstrptr++) = name->given; - } - *midstrptr = NULL; - stringptr = strings; - *(stringptr++) = g_strjoinv(", ", midstring); + } + *midstrptr = NULL; + stringptr = strings; + *(stringptr++) = g_strjoinv(", ", midstring); if (name) { if (name->additional && *name->additional) *(stringptr++) = name->additional; @@ -709,22 +733,22 @@ set_entry_text (EContactEditor *editor, GtkEntry *entry, const gchar *string) string = ""; if (strcmp (string, oldstring)) { - g_signal_handlers_block_matched (entry, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, editor); + g_signal_handlers_block_matched ( + entry, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, editor); gtk_entry_set_text (entry, string); - g_signal_handlers_unblock_matched (entry, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, editor); + g_signal_handlers_unblock_matched ( + entry, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, editor); } } static void set_combo_box_active (EContactEditor *editor, GtkComboBox *combo_box, gint active) { - g_signal_handlers_block_matched (combo_box, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, editor); + g_signal_handlers_block_matched ( + combo_box, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, editor); gtk_combo_box_set_active (combo_box, active); - g_signal_handlers_unblock_matched (combo_box, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, editor); + g_signal_handlers_unblock_matched ( + combo_box, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, editor); } static void @@ -776,8 +800,9 @@ fill_in_email_record (EContactEditor *editor, gint record, const gchar *address, email_entry = e_builder_get_widget (editor->builder, widget_name); g_free (widget_name); - set_combo_box_active (editor, GTK_COMBO_BOX (location_combo_box), - location >= 0 ? location : email_default[2]); + set_combo_box_active ( + editor, GTK_COMBO_BOX (location_combo_box), + location >= 0 ? location : email_default[2]); set_entry_text (editor, GTK_ENTRY (email_entry), address ? address : ""); } @@ -854,7 +879,8 @@ get_phone_type (EVCardAttribute *attr) for (i = 0; i < G_N_ELEMENTS (phones); i++) { if (e_vcard_attribute_has_type (attr, phones[i].type_1) && - (phones[i].type_2 == NULL || e_vcard_attribute_has_type (attr, phones[i].type_2))) + (phones[i].type_2 == NULL || + e_vcard_attribute_has_type (attr, phones[i].type_2))) return i; } @@ -997,8 +1023,9 @@ fill_in_email (EContactEditor *editor) if (slot < 1) break; - fill_in_email_record (editor, slot, email_address, - get_email_location (attr)); + fill_in_email_record ( + editor, slot, email_address, + get_email_location (attr)); record_n++; } @@ -1109,10 +1136,9 @@ init_item_sensitiveable_combo_box (GtkComboBox *combo) cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE); - gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), cell, - "text", 0, - "sensitive", 1, - NULL); + gtk_cell_layout_set_attributes ( + GTK_CELL_LAYOUT (combo), cell, + "text", 0, "sensitive", 1, NULL); } /* EContact can get attributes by field ID only, and there is none for TEL, so we need this */ @@ -1156,8 +1182,8 @@ set_attributes_named (EVCard *vcard, const gchar *attr_name, GList *attr_list) static void set_arrow_image (EContactEditor *editor, - const gchar *arrow_widget, - gboolean expanded) + const gchar *arrow_widget, + gboolean expanded) { GtkWidget *arrow; @@ -1170,8 +1196,8 @@ set_arrow_image (EContactEditor *editor, static void expand_widget_list (EContactEditor *editor, - const gchar **widget_names, - gboolean expanded) + const gchar **widget_names, + gboolean expanded) { gint i; for (i = 0; widget_names[i]; i++) @@ -1261,9 +1287,9 @@ fill_in_phone_record (EContactEditor *editor, gint record, const gchar *phone, g phone_entry = e_builder_get_widget (editor->builder, widget_name); g_free (widget_name); - set_combo_box_active (editor, GTK_COMBO_BOX (phone_type_combo_box), - phone_type >= 0 ? phone_type : - phones_default[record - 1]); + set_combo_box_active ( + editor, GTK_COMBO_BOX (phone_type_combo_box), + phone_type >= 0 ? phone_type : phones_default[record - 1]); set_entry_text (editor, GTK_ENTRY (phone_entry), phone ? phone : ""); if (phone && *phone && record >= 5) @@ -1316,8 +1342,8 @@ fill_in_phone (EContactEditor *editor) if (slot < 1) break; - fill_in_phone_record (editor, slot, phone, - get_phone_type (attr)); + fill_in_phone_record ( + editor, slot, phone, get_phone_type (attr)); record_n++; } @@ -1604,11 +1630,13 @@ fill_in_im_record (EContactEditor *editor, gint record, gint service, const gcha g_free (widget_name); #ifdef ENABLE_IM_LOCATION - set_combo_box_active (editor, GTK_COMBO_BOX (location_combo_box), - location >= 0 ? location : 0); + set_combo_box_active ( + editor, GTK_COMBO_BOX (location_combo_box), + location >= 0 ? location : 0); #endif - set_combo_box_active (editor, GTK_COMBO_BOX (service_combo_box), - service >= 0 ? service : im_service_default[record - 1]); + set_combo_box_active ( + editor, GTK_COMBO_BOX (service_combo_box), + service >= 0 ? service : im_service_default[record - 1]); set_entry_text (editor, GTK_ENTRY (name_entry), name ? name : ""); } @@ -1641,8 +1669,9 @@ fill_in_im (EContactEditor *editor) if (slot < 1) break; - fill_in_im_record (editor, slot, i, im_name, - get_im_location (attr)); + fill_in_im_record ( + editor, slot, i, im_name, + get_im_location (attr)); record_n++; } @@ -1738,8 +1767,10 @@ extract_im (EContactEditor *editor) old_service_attr_list = l; service_attr_list[i] = g_list_concat (service_attr_list[i], old_service_attr_list); - e_contact_set_attributes (editor->contact, im_service[i].field, - service_attr_list[i]); + e_contact_set_attributes ( + editor->contact, + im_service[i].field, + service_attr_list[i]); free_attr_list (service_attr_list[i]); } @@ -1832,8 +1863,8 @@ static void init_personal (EContactEditor *editor) { gtk_expander_set_expanded ( - GTK_EXPANDER (e_builder_get_widget (editor->builder, - "expander-personal-misc")), + GTK_EXPANDER (e_builder_get_widget ( + editor->builder, "expander-personal-misc")), !editor->compress_ui); expand_web (editor, !editor->compress_ui); @@ -1888,8 +1919,8 @@ init_address (EContactEditor *editor) init_address_record (editor, i); gtk_expander_set_expanded ( - GTK_EXPANDER (e_builder_get_widget (editor->builder, - "expander-address-other")), + GTK_EXPANDER (e_builder_get_widget ( + editor->builder, "expander-address-other")), !editor->compress_ui); } @@ -1935,8 +1966,10 @@ fill_in_address_label_textview (EContactEditor *editor, gint record, const gchar } static void -fill_in_address_field (EContactEditor *editor, gint record, const gchar *widget_field_name, - const gchar *string) +fill_in_address_field (EContactEditor *editor, + gint record, + const gchar *widget_field_name, + const gchar *string) { gchar *entry_name; GtkWidget *entry; @@ -2140,8 +2173,10 @@ sensitize_address_textview (EContactEditor *editor, gint record, gboolean enable } static void -sensitize_address_field (EContactEditor *editor, gint record, const gchar *widget_field_name, - gboolean enabled) +sensitize_address_field (EContactEditor *editor, + gint record, + const gchar *widget_field_name, + gboolean enabled) { gchar *widget_name; GtkWidget *entry; @@ -2286,8 +2321,9 @@ init_simple_field (EContactEditor *editor, GtkWidget *widget) } else if (E_IS_URL_ENTRY (widget)) { changed_object = G_OBJECT (e_url_entry_get_entry (E_URL_ENTRY (widget))); - g_signal_connect_swapped (GTK_WIDGET (changed_object), "activate", - G_CALLBACK (entry_activated), editor); + g_signal_connect_swapped ( + changed_object, "activate", + G_CALLBACK (entry_activated), editor); } else if (E_IS_DATE_EDIT (widget)) { changed_object = G_OBJECT (widget); @@ -2311,8 +2347,8 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) contact = editor->contact; - g_signal_handlers_block_matched (widget, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, editor); + g_signal_handlers_block_matched ( + widget, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, editor); if (GTK_IS_ENTRY (widget)) { gchar *text = e_contact_get (contact, field_id); @@ -2339,10 +2375,9 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) else if (E_IS_DATE_EDIT (widget)) { EContactDate *date = e_contact_get (contact, field_id); if (date) - e_date_edit_set_date (E_DATE_EDIT (widget), - date->year, - date->month, - date->day); + e_date_edit_set_date ( + E_DATE_EDIT (widget), + date->year, date->month, date->day); else e_date_edit_set_time (E_DATE_EDIT (widget), -1); @@ -2374,8 +2409,8 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) g_warning (G_STRLOC ": Unhandled widget class in mappings!"); } - g_signal_handlers_unblock_matched (widget, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, editor); + g_signal_handlers_unblock_matched ( + widget, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, editor); } static void @@ -2430,10 +2465,11 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) } else if (E_IS_DATE_EDIT (widget)) { EContactDate date; - if (e_date_edit_get_date (E_DATE_EDIT (widget), - (gint *)&date.year, - (gint *)&date.month, - (gint *)&date.day)) + if (e_date_edit_get_date ( + E_DATE_EDIT (widget), + (gint *)&date.year, + (gint *)&date.month, + (gint *)&date.day)) e_contact_set (contact, field_id, &date); else e_contact_set (contact, field_id, NULL); @@ -2446,8 +2482,9 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) { gchar *img_buff = NULL; if (editor->image_set && - e_image_chooser_get_image_data (E_IMAGE_CHOOSER (widget), - &img_buff, &photo.data.inlined.length)) { + e_image_chooser_get_image_data ( + E_IMAGE_CHOOSER (widget), + &img_buff, &photo.data.inlined.length)) { GdkPixbuf *pixbuf, *new; GdkPixbufLoader *loader = gdk_pixbuf_loader_new (); @@ -2596,9 +2633,7 @@ fill_in_simple (EContactEditor *editor) /* Update broken-up name */ - g_object_get (editor->contact, - "name", &name, - NULL); + g_object_get (editor->contact, "name", &name, NULL); if (editor->name) e_contact_name_free (editor->name); @@ -2717,7 +2752,7 @@ init_all (EContactEditor *editor) init_address (editor); /* with so many scrolled windows, we need to - do some manual sizing */ + * do some manual sizing */ gtk_widget_get_preferred_size ( e_builder_get_widget (editor->builder, "vbox-size-leader"), &tab_req, NULL); gtk_widget_set_size_request ( @@ -2808,14 +2843,10 @@ full_name_response (GtkDialog *dialog, gint response, EContactEditor *editor) gint style = 0; gboolean editable = FALSE; - g_object_get (dialog, - "editable", &editable, - NULL); + g_object_get (dialog, "editable", &editable, NULL); if (editable && response == GTK_RESPONSE_OK) { - g_object_get (dialog, - "name", &name, - NULL); + g_object_get (dialog, "name", &name, NULL); style = file_as_get_style (editor); @@ -2862,16 +2893,17 @@ full_name_clicked (GtkWidget *button, EContactEditor *editor) dialog = GTK_DIALOG (e_contact_editor_fullname_new (editor->name)); fullname_supported = is_field_supported (editor, E_CONTACT_FULL_NAME); - g_object_set (dialog, - "editable", fullname_supported & editor->target_editable, - NULL); + g_object_set ( + dialog, "editable", + fullname_supported & editor->target_editable, NULL); g_signal_connect(dialog, "response", G_CALLBACK (full_name_response), editor); /* Close the fullname dialog if the editor is closed */ - g_signal_connect_swapped (EAB_EDITOR (editor), "editor_closed", - G_CALLBACK (full_name_editor_delete_event_cb), GTK_WIDGET (dialog)); + g_signal_connect_swapped ( + editor, "editor_closed", + G_CALLBACK (full_name_editor_delete_event_cb), dialog); gtk_widget_show (GTK_WIDGET (dialog)); editor->fullname_dialog = GTK_WIDGET (dialog); @@ -2921,9 +2953,9 @@ categories_clicked (GtkWidget *button, EContactEditor *editor) g_free (categories); return; }else if (!(dialog = GTK_DIALOG (e_categories_dialog_new (categories)))) { - e_alert_run_dialog_for_args (GTK_WINDOW (editor->app), - "addressbook:edit-categories", - NULL); + e_alert_run_dialog_for_args ( + GTK_WINDOW (editor->app), + "addressbook:edit-categories", NULL); g_free (categories); return; } @@ -2932,8 +2964,9 @@ categories_clicked (GtkWidget *button, EContactEditor *editor) G_CALLBACK (categories_response), editor); /* Close the category dialog if the editor is closed*/ - g_signal_connect_swapped (EAB_EDITOR (editor), "editor_closed", - G_CALLBACK (categories_editor_delete_event_cb), GTK_WIDGET (dialog)); + g_signal_connect_swapped ( + editor, "editor_closed", + G_CALLBACK (categories_editor_delete_event_cb), dialog); gtk_widget_show (GTK_WIDGET (dialog)); g_free (categories); @@ -3039,27 +3072,30 @@ image_clicked (GtkWidget *button, EContactEditor *editor) GtkImage *preview; if (!editor->file_selector) { - editor->file_selector = gtk_file_chooser_dialog_new (title, - GTK_WINDOW (editor->app), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - no_image, GTK_RESPONSE_NO, - NULL); + editor->file_selector = gtk_file_chooser_dialog_new ( + title, GTK_WINDOW (editor->app), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + no_image, GTK_RESPONSE_NO, + NULL); preview = GTK_IMAGE (gtk_image_new ()); gtk_file_chooser_set_preview_widget ((GtkFileChooser *)editor->file_selector, GTK_WIDGET (preview)); - g_signal_connect (editor->file_selector, "update-preview", - G_CALLBACK (update_preview_cb), preview); + g_signal_connect ( + editor->file_selector, "update-preview", + G_CALLBACK (update_preview_cb), preview); gtk_dialog_set_default_response (GTK_DIALOG (editor->file_selector), GTK_RESPONSE_ACCEPT); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (editor->file_selector), g_get_home_dir ()); - g_signal_connect (editor->file_selector, "response", - G_CALLBACK (file_chooser_response), editor); + g_signal_connect ( + editor->file_selector, "response", + G_CALLBACK (file_chooser_response), editor); - g_signal_connect_after (editor->file_selector, - "delete-event", G_CALLBACK (file_selector_deleted), - editor->file_selector); + g_signal_connect_after ( + editor->file_selector, "delete-event", + G_CALLBACK (file_selector_deleted), + editor->file_selector); } /* Display the dialog */ @@ -3116,8 +3152,9 @@ contact_added_cb (EBook *book, const GError *error, const gchar *id, EditorClose if (ce->source_book != ce->target_book && e_book_is_writable (ce->source_book) && !error && ce->is_new_contact == FALSE) { ecs->new_id = g_strdup (id); - e_book_remove_contact_async (ce->source_book, ce->contact, - (EBookAsyncCallback) contact_moved_cb, ecs); + e_book_remove_contact_async ( + ce->source_book, ce->contact, + (EBookAsyncCallback) contact_moved_cb, ecs); return; } @@ -3186,15 +3223,18 @@ real_save_contact (EContactEditor *ce, gboolean should_close) if (ce->source_book != ce->target_book) { /* Two-step move; add to target, then remove from source */ - eab_merging_book_add_contact (ce->target_book, ce->contact, - (EBookIdAsyncCallback) contact_added_cb, ecs); + eab_merging_book_add_contact ( + ce->target_book, ce->contact, + (EBookIdAsyncCallback) contact_added_cb, ecs); } else { if (ce->is_new_contact) - eab_merging_book_add_contact (ce->target_book, ce->contact, - (EBookIdAsyncCallback) contact_added_cb, ecs); + eab_merging_book_add_contact ( + ce->target_book, ce->contact, + (EBookIdAsyncCallback) contact_added_cb, ecs); else - eab_merging_book_commit_contact (ce->target_book, ce->contact, - (EBookAsyncCallback) contact_modified_cb, ecs); + eab_merging_book_commit_contact ( + ce->target_book, ce->contact, + (EBookAsyncCallback) contact_modified_cb, ecs); } } @@ -3209,9 +3249,10 @@ save_contact (EContactEditor *ce, gboolean should_close) return; if (ce->target_editable && !e_book_is_writable (ce->source_book)) { - if (e_alert_run_dialog_for_args (GTK_WINDOW (ce->app), - "addressbook:prompt-move", - NULL) == GTK_RESPONSE_NO) + if (e_alert_run_dialog_for_args ( + GTK_WINDOW (ce->app), + "addressbook:prompt-move", + NULL) == GTK_RESPONSE_NO) return; } @@ -3357,10 +3398,10 @@ e_contact_editor_is_valid (EABEditor *editor) if (validation_error) { g_string_append (errmsg, "."); - e_alert_run_dialog_for_args (GTK_WINDOW (ce->app), - "addressbook:generic-error", - _("Invalid contact."), errmsg->str, - NULL); + e_alert_run_dialog_for_args ( + GTK_WINDOW (ce->app), + "addressbook:generic-error", + _("Invalid contact."), errmsg->str, NULL); g_string_free (errmsg, TRUE); return FALSE; } @@ -3625,8 +3666,9 @@ e_contact_editor_init (EContactEditor *e_contact_editor) /* Connect to the deletion of the dialog */ - g_signal_connect (e_contact_editor->app, "delete_event", - G_CALLBACK (app_delete_event_cb), e_contact_editor); + g_signal_connect ( + e_contact_editor->app, "delete_event", + G_CALLBACK (app_delete_event_cb), e_contact_editor); /* set the icon */ gtk_window_set_icon_name (GTK_WINDOW (e_contact_editor->app), "contact-editor"); @@ -3691,17 +3733,17 @@ e_contact_editor_dispose (GObject *object) } static void -supported_fields_cb (EBook *book, const GError *error, - EList *fields, EContactEditor *ce) +supported_fields_cb (EBook *book, + const GError *error, + EList *fields, + EContactEditor *ce) { if (!g_slist_find (eab_editor_get_all_editors (), ce)) { g_warning ("supported_fields_cb called for book that's still around, but contact editor that's been destroyed."); return; } - g_object_set (ce, - "writable_fields", fields, - NULL); + g_object_set (ce, "writable_fields", fields, NULL); eab_editor_show (EAB_EDITOR (ce)); @@ -3709,8 +3751,10 @@ supported_fields_cb (EBook *book, const GError *error, } static void -required_fields_cb (EBook *book, const GError *error, - EList *fields, EContactEditor *ce) +required_fields_cb (EBook *book, + const GError *error, + EList *fields, + EContactEditor *ce) { if (!g_slist_find (eab_editor_get_all_editors (), ce)) { @@ -3718,9 +3762,7 @@ required_fields_cb (EBook *book, const GError *error, return; } - g_object_set (ce, - "required_fields", fields, - NULL); + g_object_set (ce, "required_fields", fields, NULL); } @@ -3739,12 +3781,13 @@ e_contact_editor_new (EShell *shell, editor = g_object_new (E_TYPE_CONTACT_EDITOR, "shell", shell, NULL); - g_object_set (editor, - "source_book", book, - "contact", contact, - "is_new_contact", is_new_contact, - "editable", editable, - NULL); + g_object_set ( + editor, + "source_book", book, + "contact", contact, + "is_new_contact", is_new_contact, + "editable", editable, + NULL); if (book) e_book_get_supported_fields_async ( @@ -3798,13 +3841,18 @@ e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *val editor->target_book = editor->source_book; g_object_ref (editor->target_book); - editor->target_editable_id = g_signal_connect (editor->target_book, "writable_status", - G_CALLBACK (writable_changed), editor); - - e_book_get_supported_fields_async (editor->target_book, - (EBookEListAsyncCallback) supported_fields_cb, editor); - e_book_get_required_fields_async (editor->target_book, - (EBookEListAsyncCallback) required_fields_cb, editor); + editor->target_editable_id = g_signal_connect ( + editor->target_book, "writable_status", + G_CALLBACK (writable_changed), editor); + + e_book_get_supported_fields_async ( + editor->target_book, + (EBookEListAsyncCallback) + supported_fields_cb, editor); + e_book_get_required_fields_async ( + editor->target_book, + (EBookEListAsyncCallback) + required_fields_cb, editor); } writable = e_book_is_writable (editor->target_book); @@ -3837,14 +3885,19 @@ e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *val editor->target_book = target_book; g_object_ref (editor->target_book); - editor->target_editable_id = g_signal_connect (editor->target_book, "writable_status", - G_CALLBACK (writable_changed), editor); - - e_book_get_supported_fields_async (editor->target_book, - (EBookEListAsyncCallback) supported_fields_cb, editor); + editor->target_editable_id = g_signal_connect ( + editor->target_book, "writable_status", + G_CALLBACK (writable_changed), editor); - e_book_get_required_fields_async (editor->target_book, - (EBookEListAsyncCallback) required_fields_cb, editor); + e_book_get_supported_fields_async ( + editor->target_book, + (EBookEListAsyncCallback) + supported_fields_cb, editor); + + e_book_get_required_fields_async ( + editor->target_book, + (EBookEListAsyncCallback) + required_fields_cb, editor); if (!editor->is_new_contact) editor->changed = TRUE; diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index aa12810b84..1e88b50209 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -48,14 +48,10 @@ unlink_model (EAddressbookTableAdapter *adapter) { EAddressbookTableAdapterPrivate *priv = adapter->priv; - g_signal_handler_disconnect (priv->model, - priv->create_contact_id); - g_signal_handler_disconnect (priv->model, - priv->remove_contact_id); - g_signal_handler_disconnect (priv->model, - priv->modify_contact_id); - g_signal_handler_disconnect (priv->model, - priv->model_changed_id); + g_signal_handler_disconnect (priv->model, priv->create_contact_id); + g_signal_handler_disconnect (priv->model, priv->remove_contact_id); + g_signal_handler_disconnect (priv->model, priv->modify_contact_id); + g_signal_handler_disconnect (priv->model, priv->model_changed_id); priv->create_contact_id = 0; priv->remove_contact_id = 0; @@ -143,8 +139,9 @@ addressbook_value_at (ETableModel *etc, gint col, gint row) /* This function sets the value at a particular point in our ETableModel. */ static void -contact_modified_cb (EBook* book, const GError *error, - gpointer user_data) +contact_modified_cb (EBook* book, + const GError *error, + gpointer user_data) { if (error) eab_error_dialog (NULL, _("Error modifying card"), error); @@ -177,8 +174,9 @@ addressbook_set_value_at (ETableModel *etc, gint col, gint row, gconstpointer va } e_contact_set (contact, col, (gpointer) val); - eab_merging_book_commit_contact (e_addressbook_model_get_book (priv->model), - contact, contact_modified_cb, etc); + eab_merging_book_commit_contact ( + e_addressbook_model_get_book (priv->model), + contact, contact_modified_cb, etc); g_object_unref (contact); @@ -205,7 +203,7 @@ addressbook_is_cell_editable (ETableModel *etc, gint col, gint row) return FALSE; else if (contact && e_contact_get ((EContact *) contact, E_CONTACT_IS_LIST)) /* we only allow editing of the name and file as for - lists */ + * lists */ return col == E_CONTACT_FULL_NAME || col == E_CONTACT_FILE_AS; else return col < E_CONTACT_LAST_SIMPLE_STRING; @@ -343,7 +341,7 @@ modify_contact (EAddressbookModel *model, static void model_changed (EAddressbookModel *model, - EAddressbookTableAdapter *adapter) + EAddressbookTableAdapter *adapter) { /* clear whole cache */ g_hash_table_remove_all (adapter->priv->emails); @@ -378,31 +376,33 @@ eab_table_adapter_get_type (void) void eab_table_adapter_construct (EAddressbookTableAdapter *adapter, - EAddressbookModel *model) + EAddressbookModel *model) { EAddressbookTableAdapterPrivate *priv = adapter->priv; priv->model = model; g_object_ref (priv->model); - priv->create_contact_id = g_signal_connect (priv->model, - "contact_added", - G_CALLBACK (create_contact), - adapter); - priv->remove_contact_id = g_signal_connect (priv->model, - "contacts_removed", - G_CALLBACK (remove_contacts), - adapter); - priv->modify_contact_id = g_signal_connect (priv->model, - "contact_changed", - G_CALLBACK (modify_contact), - adapter); - priv->model_changed_id = g_signal_connect (priv->model, - "model_changed", - G_CALLBACK (model_changed), - adapter); - - priv->emails = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_free); + priv->create_contact_id = g_signal_connect ( + priv->model, "contact_added", + G_CALLBACK (create_contact), adapter); + + priv->remove_contact_id = g_signal_connect ( + priv->model, "contacts_removed", + G_CALLBACK (remove_contacts), adapter); + + priv->modify_contact_id = g_signal_connect ( + priv->model, "contact_changed", + G_CALLBACK (modify_contact), adapter); + + priv->model_changed_id = g_signal_connect ( + priv->model, "model_changed", + G_CALLBACK (model_changed), adapter); + + priv->emails = g_hash_table_new_full ( + g_str_hash, g_str_equal, + (GDestroyNotify) g_free, + (GDestroyNotify) g_free); } ETableModel * diff --git a/addressbook/gui/widgets/ea-addressbook.c b/addressbook/gui/widgets/ea-addressbook.c index 797d76d956..8ac2607232 100644 --- a/addressbook/gui/widgets/ea-addressbook.c +++ b/addressbook/gui/widgets/ea-addressbook.c @@ -72,7 +72,7 @@ ea_addressbook_focus_watcher (GSignalInvocationHint *ihint, event = g_value_get_boxed (param_values + 1); if (E_IS_MINICARD (object)) { - GnomeCanvasItem *item = GNOME_CANVAS_ITEM (object); + GnomeCanvasItem *item = GNOME_CANVAS_ITEM (object); ea_event = atk_gobject_accessible_for_object (object); if (event->type == GDK_FOCUS_CHANGE) { if ((event->focus_change.in) && (E_IS_MINICARD (item->canvas->focused_item))) diff --git a/addressbook/gui/widgets/ea-minicard-view.c b/addressbook/gui/widgets/ea-minicard-view.c index bb38b64ecc..cc35d577b0 100644 --- a/addressbook/gui/widgets/ea-minicard-view.c +++ b/addressbook/gui/widgets/ea-minicard-view.c @@ -371,7 +371,7 @@ static gboolean atk_action_interface_do_action (AtkAction *action, gint i) EMinicardView *card_view; AtkGObjectAccessible *atk_gobj= NULL; - EReflow *reflow = NULL; + EReflow *reflow = NULL; atk_gobj = ATK_GOBJECT_ACCESSIBLE (action); reflow = E_REFLOW (atk_gobject_accessible_get_object (atk_gobj)); -- cgit v1.2.3 From 7a1677520d439aee68c5ab0268a951d0b411e3a0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 12 Feb 2011 11:37:05 -0500 Subject: Remove NULL checks for GObject methods. As of GLib 2.28 all GObject virtual methods, including constructed(), are safe to chain up to unconditionally. Remove unnecessary checks. --- addressbook/gui/contact-editor/e-contact-editor.c | 4 ++-- addressbook/gui/widgets/e-addressbook-selector.c | 4 ++-- addressbook/gui/widgets/e-addressbook-table-adapter.c | 4 ++-- addressbook/gui/widgets/e-addressbook-view.c | 4 ++-- addressbook/gui/widgets/e-minicard-view-widget.c | 4 ++-- addressbook/gui/widgets/e-minicard-view.c | 4 ++-- addressbook/gui/widgets/e-minicard.c | 8 ++++---- 7 files changed, 16 insertions(+), 16 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 55709ed081..4c0bf2e905 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -3728,8 +3728,8 @@ e_contact_editor_dispose (GObject *object) e_contact_editor->cancellable = NULL; } - if (G_OBJECT_CLASS (parent_class)->dispose) - (* G_OBJECT_CLASS (parent_class)->dispose) (object); + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (parent_class)->dispose (object); } static void diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index 110343ce80..018205e09f 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -238,8 +238,8 @@ addressbook_selector_constructed (GObject *object) selector = E_SOURCE_SELECTOR (object); addressbook_selector_load_primary_source (selector); - if (G_OBJECT_CLASS (parent_class)->constructed) - G_OBJECT_CLASS (parent_class)->constructed (object); + /* Chain up to parent's constructed() method. */ + G_OBJECT_CLASS (parent_class)->constructed (object); } static gboolean diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index 1e88b50209..6dfa981463 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -78,8 +78,8 @@ addressbook_dispose (GObject *object) adapter->priv = NULL; } - if (G_OBJECT_CLASS (parent_class)->dispose) - (* G_OBJECT_CLASS (parent_class)->dispose) (object); + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (parent_class)->dispose (object); } /* This function returns the number of columns in our ETableModel. */ diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index f85bcfe6d3..5d2636a413 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -585,8 +585,8 @@ addressbook_view_constructed (GObject *object) g_free (uri); - if (G_OBJECT_CLASS (parent_class)->constructed) - G_OBJECT_CLASS (parent_class)->constructed (object); + /* Chain up to parent's constructed() method. */ + G_OBJECT_CLASS (parent_class)->constructed (object); } static void diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index 855b5c2058..945639f70b 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -311,8 +311,8 @@ e_minicard_view_widget_dispose (GObject *object) view->adapter = NULL; } - if (G_OBJECT_CLASS (parent_class)->dispose) - G_OBJECT_CLASS (parent_class)->dispose (object); + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (parent_class)->dispose (object); } static void diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index 0e36bd6b9b..31e2d35306 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -364,8 +364,8 @@ e_minicard_view_dispose (GObject *object) view->stop_state_id = 0; view->adapter = NULL; - if (G_OBJECT_CLASS (parent_class)->dispose) - G_OBJECT_CLASS (parent_class)->dispose (object); + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (parent_class)->dispose (object); } static guint diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 07eacac291..ea91b57be1 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -435,8 +435,8 @@ e_minicard_dispose (GObject *object) e_minicard->list_icon_pixbuf = NULL; } - if (G_OBJECT_CLASS (parent_class)->dispose) - (* G_OBJECT_CLASS (parent_class)->dispose) (object); + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (parent_class)->dispose (object); } static void @@ -459,8 +459,8 @@ e_minicard_finalize (GObject *object) e_minicard->list_icon_pixbuf = NULL; } - if (G_OBJECT_CLASS (parent_class)->finalize) - (* G_OBJECT_CLASS (parent_class)->finalize) (object); + /* Chain up to parent's finalize() method. */ + G_OBJECT_CLASS (parent_class)->finalize (object); } static void -- cgit v1.2.3 From 005bb4e64093f3f18bc09dbc54381f6413ec1754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Wed, 16 Feb 2011 08:21:01 +0100 Subject: Bug #255973 - Contact preview waste space and cosmetic correction --- addressbook/gui/widgets/eab-contact-display.c | 391 ++++++++++++++++---------- addressbook/gui/widgets/eab-contact-display.h | 3 + 2 files changed, 246 insertions(+), 148 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index a5a71814d3..0012f8ae56 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -47,12 +47,14 @@ struct _EABContactDisplayPrivate { EContact *contact; EABContactDisplayMode mode; + GtkOrientation orientation; }; enum { PROP_0, PROP_CONTACT, - PROP_MODE + PROP_MODE, + PROP_ORIENTATION }; enum { @@ -184,61 +186,6 @@ static GtkActionEntry internal_mailto_entries[] = { G_CALLBACK (action_contact_send_message_cb) } }; -static void -render_name_value (GString *buffer, - const gchar *label, - const gchar *str, - const gchar *icon, - guint html_flags) -{ - gchar *value = e_text_to_html (str, html_flags); - - if (TEXT_IS_RIGHT_TO_LEFT) { - g_string_append_printf ( - buffer, "" - "%s " - "" - "%s:", - value, label); - g_string_append ( - buffer, ""); - if (icon != NULL) - g_string_append_printf ( - buffer, "", icon); - g_string_append (buffer, ""); - } else { - g_string_append ( - buffer, ""); - if (icon != NULL) - g_string_append_printf ( - buffer, "", icon); - g_string_append_printf ( - buffer, "" - "%s: " - "%s", label, value); - } - - g_free (value); -} - -static void -render_attribute (GString *buffer, - EContact *contact, - const gchar *html_label, - EContactField field, - const gchar *icon, - guint html_flags) -{ - const gchar *str; - - str = e_contact_get_const (contact, field); - - if (str != NULL && *str != '\0') - render_name_value (buffer, html_label, str, icon, html_flags); -} - static void accum_address (GString *buffer, EContact *contact, @@ -253,17 +200,10 @@ accum_address (GString *buffer, if (label) { gchar *html = e_text_to_html (label, E_TEXT_TO_HTML_CONVERT_NL); -#ifdef mapping_works - if (TEXT_IS_RIGHT_TO_LEFT) - g_string_append_printf (buffer, "%s%s:
%s", html, html_label, _("(map)")); - else - g_string_append_printf (buffer, "%s:
%s%s", html_label, _("(map)"), html); -#else if (TEXT_IS_RIGHT_TO_LEFT) - g_string_append_printf (buffer, "%s%s:", html, html_label); + g_string_append_printf (buffer, "%s%s:", html, html_label); else - g_string_append_printf (buffer, "%s:%s", html_label, html); -#endif + g_string_append_printf (buffer, "%s:%s", html_label, html); g_free (html); return; @@ -273,9 +213,9 @@ accum_address (GString *buffer, if (adr && (adr->po || adr->ext || adr->street || adr->locality || adr->region || adr->code || adr->country)) { if (TEXT_IS_RIGHT_TO_LEFT) - g_string_append_printf (buffer, ""); + g_string_append_printf (buffer, ""); else - g_string_append_printf (buffer, "%s:
%s", html_label, _("map")); + g_string_append_printf (buffer, "%s:", html_label); if (adr->po && *adr->po) g_string_append_printf (buffer, "%s
", adr->po); if (adr->ext && *adr->ext) g_string_append_printf (buffer, "%s
", adr->ext); @@ -286,7 +226,7 @@ accum_address (GString *buffer, if (adr->country && *adr->country) g_string_append_printf (buffer, "%s
", adr->country); if (TEXT_IS_RIGHT_TO_LEFT) - g_string_append_printf (buffer, "%s:
%s", html_label, _("map")); + g_string_append_printf (buffer, "%s:", html_label); else g_string_append_printf (buffer, ""); } @@ -394,6 +334,77 @@ accum_multival_attribute (GString *buffer, g_list_free (val_list); } +static void +start_block (GString *buffer, + const gchar *label) +{ + g_string_append_printf ( + buffer, "" + "%s" + "", label); +} + +static void +end_block (GString *buffer) +{ + g_string_append (buffer, " "); +} + +static const gchar * +get_email_location (EVCardAttribute *attr) +{ + gint i; + + for (i = 0; i < G_N_ELEMENTS (common_location); i++) { + if (e_vcard_attribute_has_type (attr, common_location[i].name)) + return _(common_location[i].pretty_name); + } + + return _("Other"); +} + +static void +render_title_block (GString *buffer, EContact *contact) +{ + const gchar *str; + gchar *html; + EContactPhoto *photo; + + g_string_append_printf ( + buffer, "" + "
", TEXT_IS_RIGHT_TO_LEFT ? + "align=\"right\"" : ""); + photo = e_contact_get (contact, E_CONTACT_PHOTO); + if (!photo) + photo = e_contact_get (contact, E_CONTACT_LOGO); + /* Only handle inlined photos for now */ + if (photo && photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { + g_string_append (buffer, ""); + } + if (photo) + e_contact_photo_free (photo); + + g_string_append_printf ( + buffer, "\n", + TEXT_IS_RIGHT_TO_LEFT ? "align=\"right\"" : ""); + + str = e_contact_get_const (contact, E_CONTACT_FILE_AS); + if (!str) + str = e_contact_get_const (contact, E_CONTACT_FULL_NAME); + + if (str) { + html = e_text_to_html (str, 0); + if (e_contact_get (contact, E_CONTACT_IS_LIST)) + g_string_append_printf (buffer, "

%s

", html); + else + g_string_append_printf (buffer, "

%s

", html); + g_free (html); + } + + g_string_append (buffer, "
"); + +} + static void render_contact_list (GString *buffer, EContact *contact) @@ -401,8 +412,10 @@ render_contact_list (GString *buffer, GList *email_list; GList *l; + render_title_block (buffer, contact); + g_string_append ( - buffer, "
"); g_string_append ( buffer, "
"); @@ -429,40 +442,11 @@ render_contact_list (GString *buffer, } g_string_append (buffer, "
"); + g_list_free (email_list); } static void -start_block (GString *buffer, - const gchar *label) -{ - g_string_append_printf ( - buffer, "" - "%s" - "", label); -} - -static void -end_block (GString *buffer) -{ - g_string_append (buffer, " "); -} - -static const gchar * -get_email_location (EVCardAttribute *attr) -{ - gint i; - - for (i = 0; i < G_N_ELEMENTS (common_location); i++) { - if (e_vcard_attribute_has_type (attr, common_location[i].name)) - return _(common_location[i].pretty_name); - } - - return _("Other"); -} - -static void -render_contact (GString *buffer, - EContact *contact) +render_contact_block (GString *buffer, EContact *contact) { GString *accum; GList *email_list, *l, *email_attr_list, *al; @@ -470,7 +454,6 @@ render_contact (GString *buffer, const gchar *nl; gchar *nick=NULL; - g_string_append (buffer, ""); accum = g_string_new (""); nl = ""; @@ -481,7 +464,7 @@ render_contact (GString *buffer, email_attr_list = e_contact_get_attributes (contact, E_CONTACT_EMAIL); for (l = email_list, al=email_attr_list; l && al; l = l->next, al = al->next) { - gchar *html = NULL, *name = NULL, *mail = NULL; + gchar *name = NULL, *mail = NULL; gchar *attr_str = (gchar *)get_email_location ((EVCardAttribute *) al->data); if (!eab_parse_qp_email (l->data, &name, &mail)) @@ -498,7 +481,6 @@ render_contact (GString *buffer, email_num++; nl = "
"; - g_free (html); g_free (name); g_free (mail); } @@ -521,7 +503,7 @@ render_contact (GString *buffer, g_string_append_printf ( buffer, " " - "", + "", _("Email"), accum->str); } } @@ -550,7 +532,15 @@ render_contact (GString *buffer, end_block (buffer); - g_string_assign (accum, ""); + g_string_free (accum, TRUE); + g_free (nick); + +} + +static void +render_work_block (GString *buffer, EContact *contact) +{ + GString *accum = g_string_new (""); accum_attribute (accum, contact, _("Company"), E_CONTACT_ORG, NULL, 0); accum_attribute (accum, contact, _("Department"), E_CONTACT_ORG_UNIT, NULL, 0); @@ -571,7 +561,13 @@ render_contact (GString *buffer, end_block (buffer); } - g_string_assign (accum, ""); + g_string_free (accum, TRUE); +} + +static void +render_personal_block (GString *buffer, EContact *contact) +{ + GString *accum = g_string_new (""); accum_attribute (accum, contact, _("Home Page"), E_CONTACT_HOMEPAGE_URL, NULL, E_TEXT_TO_HTML_CONVERT_URLS); accum_attribute (accum, contact, _("Web Log"), E_CONTACT_BLOG_URL, NULL, E_TEXT_TO_HTML_CONVERT_URLS); @@ -588,18 +584,92 @@ render_contact (GString *buffer, end_block (buffer); } - start_block (buffer, ""); + g_string_free (accum, TRUE); +} - render_attribute ( - buffer, contact, _("Note"), E_CONTACT_NOTE, NULL, - E_TEXT_TO_HTML_CONVERT_ADDRESSES | - E_TEXT_TO_HTML_CONVERT_URLS | - E_TEXT_TO_HTML_CONVERT_NL); +static void +render_note_block (GString *buffer, EContact *contact) +{ + const gchar *str; + gchar *html; + + str = e_contact_get_const (contact, E_CONTACT_NOTE); + if (!str || !*str) + return; + + html = e_text_to_html (str, E_TEXT_TO_HTML_CONVERT_ADDRESSES | E_TEXT_TO_HTML_CONVERT_URLS | E_TEXT_TO_HTML_CONVERT_NL); + + start_block (buffer, _("Note")); + g_string_append_printf (buffer, "", html); end_block (buffer); + g_free (html); +} + +static void +render_contact_horizontal (GString *buffer, EContact *contact) +{ + g_string_append (buffer, "
" "%s:%s
%s
%s
"); + render_title_block (buffer, contact); + g_string_append (buffer, "
"); + + g_string_append (buffer, ""); + render_contact_block (buffer, contact); + render_work_block (buffer, contact); + render_personal_block (buffer, contact); + g_string_append (buffer, "
"); + + g_string_append (buffer, ""); + render_note_block (buffer, contact); g_string_append (buffer, "
"); } +static void +render_contact_vertical (GString *buffer, EContact *contact) +{ + /* First row: photo & name */ + g_string_append (buffer, ""); + render_title_block (buffer, contact); + g_string_append (buffer, ""); + + /* Second row: addresses etc. */ + g_string_append (buffer, ""); + + /* First column: email, IM */ + g_string_append (buffer, ""); + g_string_append (buffer, ""); + render_contact_block (buffer, contact); + g_string_append (buffer, "
"); + + /* Second column: Work */ + g_string_append (buffer, ""); + render_work_block (buffer, contact); + g_string_append (buffer, "
"); + g_string_append (buffer, ""); + + /* Third column: Personal */ + g_string_append (buffer, ""); + render_personal_block (buffer, contact); + g_string_append (buffer, "
"); + g_string_append (buffer, ""); + + /* Third row: note */ + g_string_append (buffer, ""); + + g_string_append (buffer, "
\n"); +} + +static void +render_contact (GString *buffer, EContact *contact, GtkOrientation orientation) +{ + if (orientation == GTK_ORIENTATION_VERTICAL) + render_contact_vertical (buffer, contact); + else + render_contact_horizontal (buffer, contact); +} + static void eab_contact_display_render_normal (EABContactDisplay *display, EContact *contact) @@ -611,50 +681,18 @@ eab_contact_display_render_normal (EABContactDisplay *display, buffer = g_string_sized_new (4096); g_string_append (buffer, HTML_HEADER); g_string_append_printf ( - buffer, "" + buffer, "
" "
\n", TEXT_IS_RIGHT_TO_LEFT ? "align=\"right\"" : ""); if (contact) { - const gchar *str; - gchar *html; - EContactPhoto *photo; - - g_string_append_printf ( - buffer, "" - "
", TEXT_IS_RIGHT_TO_LEFT ? - "align=\"right\"" : ""); - photo = e_contact_get (contact, E_CONTACT_PHOTO); - if (!photo) - photo = e_contact_get (contact, E_CONTACT_LOGO); - /* Only handle inlined photos for now */ - if (photo && photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { - g_string_append (buffer, ""); - e_contact_photo_free (photo); - } - - g_string_append_printf ( - buffer, "\n", - TEXT_IS_RIGHT_TO_LEFT ? "align=\"right\"" : ""); - - str = e_contact_get_const (contact, E_CONTACT_FILE_AS); - if (!str) - str = e_contact_get_const (contact, E_CONTACT_FULL_NAME); - - if (str) { - html = e_text_to_html (str, 0); - if (e_contact_get (contact, E_CONTACT_IS_LIST)) - g_string_append_printf (buffer, "

%s

", html); - else - g_string_append_printf (buffer, "

%s

", html); - g_free (html); - } + GtkOrientation orientation; + orientation = display->priv->orientation; if (e_contact_get (contact, E_CONTACT_IS_LIST)) render_contact_list (buffer, contact); else - render_contact (buffer, contact); + render_contact (buffer, contact, orientation); - g_string_append (buffer, "
\n"); } g_string_append (buffer, "
\n"); @@ -871,6 +909,12 @@ contact_display_set_property (GObject *object, EAB_CONTACT_DISPLAY (object), g_value_get_int (value)); return; + + case PROP_ORIENTATION: + eab_contact_display_set_orientation ( + EAB_CONTACT_DISPLAY (object), + g_value_get_int (value)); + return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -894,6 +938,11 @@ contact_display_get_property (GObject *object, value, eab_contact_display_get_mode ( EAB_CONTACT_DISPLAY (object))); return; + case PROP_ORIENTATION: + g_value_set_int ( + value, eab_contact_display_get_orientation ( + EAB_CONTACT_DISPLAY (object))); + return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -1118,6 +1167,18 @@ eab_contact_display_class_init (EABContactDisplayClass *class) EAB_CONTACT_DISPLAY_RENDER_NORMAL, G_PARAM_READWRITE)); + g_object_class_install_property ( + object_class, + PROP_ORIENTATION, + g_param_spec_int( + "orientation", + NULL, + NULL, + GTK_ORIENTATION_HORIZONTAL, + GTK_ORIENTATION_VERTICAL, + GTK_ORIENTATION_HORIZONTAL, + G_PARAM_READWRITE)); + signals[SEND_MESSAGE] = g_signal_new ( "send-message", G_OBJECT_CLASS_TYPE (class), @@ -1140,6 +1201,7 @@ eab_contact_display_init (EABContactDisplay *display) display->priv = EAB_CONTACT_DISPLAY_GET_PRIVATE (display); display->priv->mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL; + display->priv->orientation = GTK_ORIENTATION_HORIZONTAL; web_view = E_WEB_VIEW (display); ui_manager = e_web_view_get_ui_manager (web_view); @@ -1261,3 +1323,36 @@ eab_contact_display_set_mode (EABContactDisplay *display, g_object_notify (G_OBJECT (display), "mode"); } + +GtkOrientation +eab_contact_display_get_orientation (EABContactDisplay *display) +{ + g_return_val_if_fail (EAB_IS_CONTACT_DISPLAY (display), 0); + + return display->priv->orientation; +} + +void +eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation orientation) +{ + EABContactDisplayMode mode; + EContact *contact; + + g_return_if_fail (EAB_IS_CONTACT_DISPLAY (display)); + + display->priv->orientation = orientation; + contact = eab_contact_display_get_contact (display); + mode = eab_contact_display_get_mode (display); + + switch (mode) { + case EAB_CONTACT_DISPLAY_RENDER_NORMAL: + eab_contact_display_render_normal (display, contact); + break; + + case EAB_CONTACT_DISPLAY_RENDER_COMPACT: + eab_contact_display_render_compact (display, contact); + break; + } + + g_object_notify (G_OBJECT (display), "orientation"); +} diff --git a/addressbook/gui/widgets/eab-contact-display.h b/addressbook/gui/widgets/eab-contact-display.h index fde3bc6d76..4c8c8ef177 100644 --- a/addressbook/gui/widgets/eab-contact-display.h +++ b/addressbook/gui/widgets/eab-contact-display.h @@ -88,6 +88,9 @@ EABContactDisplayMode void eab_contact_display_set_mode (EABContactDisplay *display, EABContactDisplayMode mode); +GtkOrientation eab_contact_display_get_orientation (EABContactDisplay *display); +void eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation orientation); + G_END_DECLS #endif /* EAB_CONTACT_DISPLAY_H */ -- cgit v1.2.3 From fcb29478f605deb787c62fc7567c5c7f897585bb Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 18 Feb 2011 19:35:59 -0500 Subject: Coding style and whitespace cleanup. --- addressbook/gui/widgets/e-addressbook-table-adapter.c | 19 ++++++++++++++----- addressbook/gui/widgets/eab-contact-display.c | 3 +-- addressbook/gui/widgets/eab-contact-display.h | 8 +++++--- 3 files changed, 20 insertions(+), 10 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index 6dfa981463..84224178b5 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -105,14 +105,17 @@ addressbook_value_at (ETableModel *etc, gint col, gint row) { EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etc); EAddressbookTableAdapterPrivate *priv = adapter->priv; + EContact *contact; const gchar *value; if (col >= COLS || row >= e_addressbook_model_contact_count (priv->model)) return NULL; - value = e_contact_get_const ((EContact*)e_addressbook_model_contact_at (priv->model, row), col); + contact = e_addressbook_model_contact_at (priv->model, row); + value = e_contact_get_const (contact, col); - if (value && *value && (col == E_CONTACT_EMAIL_1 || col == E_CONTACT_EMAIL_2 || col == E_CONTACT_EMAIL_3)) { + if (value && *value && (col == E_CONTACT_EMAIL_1 || + col == E_CONTACT_EMAIL_2 || col == E_CONTACT_EMAIL_3)) { gchar *val = g_hash_table_lookup (priv->emails, value); if (val) { @@ -165,7 +168,9 @@ addressbook_set_value_at (ETableModel *etc, gint col, gint row, gconstpointer va e_table_model_pre_change (etc); - if (col == E_CONTACT_EMAIL_1 || col == E_CONTACT_EMAIL_2 || col == E_CONTACT_EMAIL_3) { + if (col == E_CONTACT_EMAIL_1 || + col == E_CONTACT_EMAIL_2 || + col == E_CONTACT_EMAIL_3) { const gchar *old_value = e_contact_get_const (contact, col); /* remove old value from cache and use new one */ @@ -218,6 +223,7 @@ addressbook_append_row (ETableModel *etm, ETableModel *source, gint row) EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etm); EAddressbookTableAdapterPrivate *priv = adapter->priv; EContact *contact; + EBook *book; gint col; contact = e_contact_new (); @@ -227,7 +233,8 @@ addressbook_append_row (ETableModel *etm, ETableModel *source, gint row) e_contact_set (contact, col, (gpointer) val); } - eab_merging_book_add_contact (e_addressbook_model_get_book (priv->model), contact, NULL, NULL); + book = e_addressbook_model_get_book (priv->model); + eab_merging_book_add_contact (book, contact, NULL, NULL); g_object_unref (contact); } @@ -322,7 +329,9 @@ remove_contacts (EAddressbookModel *model, e_table_model_pre_change (E_TABLE_MODEL (adapter)); if (count == 1) - e_table_model_rows_deleted (E_TABLE_MODEL (adapter), g_array_index (indices, gint, 0), 1); + e_table_model_rows_deleted ( + E_TABLE_MODEL (adapter), + g_array_index (indices, gint, 0), 1); else e_table_model_changed (E_TABLE_MODEL (adapter)); } diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index 0012f8ae56..47052f443a 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -454,7 +454,6 @@ render_contact_block (GString *buffer, EContact *contact) const gchar *nl; gchar *nick=NULL; - accum = g_string_new (""); nl = ""; @@ -1170,7 +1169,7 @@ eab_contact_display_class_init (EABContactDisplayClass *class) g_object_class_install_property ( object_class, PROP_ORIENTATION, - g_param_spec_int( + g_param_spec_int ( "orientation", NULL, NULL, diff --git a/addressbook/gui/widgets/eab-contact-display.h b/addressbook/gui/widgets/eab-contact-display.h index 4c8c8ef177..e74a65cb38 100644 --- a/addressbook/gui/widgets/eab-contact-display.h +++ b/addressbook/gui/widgets/eab-contact-display.h @@ -87,9 +87,11 @@ EABContactDisplayMode eab_contact_display_get_mode (EABContactDisplay *display); void eab_contact_display_set_mode (EABContactDisplay *display, EABContactDisplayMode mode); - -GtkOrientation eab_contact_display_get_orientation (EABContactDisplay *display); -void eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation orientation); +GtkOrientation eab_contact_display_get_orientation + (EABContactDisplay *display); +void eab_contact_display_set_orientation + (EABContactDisplay *display, + GtkOrientation orientation); G_END_DECLS -- cgit v1.2.3 From e1e00c0587fd7c659850776206d2f6bef3e117fa Mon Sep 17 00:00:00 2001 From: Pacho Ramos Date: Thu, 24 Feb 2011 10:07:22 +0100 Subject: Bug #635002 - Fix invalid use of .la file in contact-editor --- addressbook/gui/contact-editor/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/Makefile.am b/addressbook/gui/contact-editor/Makefile.am index 486d71e223..eb457da7fa 100644 --- a/addressbook/gui/contact-editor/Makefile.am +++ b/addressbook/gui/contact-editor/Makefile.am @@ -33,7 +33,7 @@ libecontacteditor_la_LIBADD = \ $(top_builddir)/addressbook/gui/widgets/libeabwidgets.la \ $(top_builddir)/addressbook/gui/merging/libeabbookmerging.la \ $(top_builddir)/addressbook/printing/libecontactprint.la \ - $(top_builddir)/widgets/menus/.libs/libmenus.la \ + $(top_builddir)/widgets/menus/libmenus.la \ $(EVOLUTION_ADDRESSBOOK_LIBS) \ $(GNOME_PLATFORM_LIBS) -- cgit v1.2.3 From 1301cf02efdacd20fb5ce3e2554ae15b8f146e8a Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 25 Feb 2011 16:20:41 +0100 Subject: Bug #614480 - Avoid using G_TYPE_INSTANCE_GET_PRIVATE repeatedly --- addressbook/gui/contact-editor/eab-editor.c | 8 ++------ .../gui/contact-list-editor/e-contact-list-editor.c | 16 +++++----------- addressbook/gui/widgets/e-addressbook-model.c | 8 ++------ addressbook/gui/widgets/e-addressbook-selector.c | 10 +++------- addressbook/gui/widgets/e-addressbook-view.c | 8 ++------ addressbook/gui/widgets/eab-config.c | 9 ++++----- addressbook/gui/widgets/eab-config.h | 7 +++++++ addressbook/gui/widgets/eab-contact-display.c | 8 ++------ 8 files changed, 27 insertions(+), 47 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/eab-editor.c b/addressbook/gui/contact-editor/eab-editor.c index b5e5232e00..dcce405470 100644 --- a/addressbook/gui/contact-editor/eab-editor.c +++ b/addressbook/gui/contact-editor/eab-editor.c @@ -31,10 +31,6 @@ #include "e-util/e-util.h" #include "addressbook/gui/widgets/eab-gui-util.h" -#define EAB_EDITOR_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), EAB_TYPE_EDITOR, EABEditorPrivate)) - struct _EABEditorPrivate { EShell *shell; }; @@ -127,7 +123,7 @@ eab_editor_dispose (GObject *object) { EABEditorPrivate *priv; - priv = EAB_EDITOR_GET_PRIVATE (object); + priv = EAB_EDITOR (object)->priv; if (priv->shell != NULL) { g_signal_handlers_disconnect_matched ( @@ -218,7 +214,7 @@ eab_editor_class_init (EABEditorClass *class) static void eab_editor_init (EABEditor *editor) { - editor->priv = EAB_EDITOR_GET_PRIVATE (editor); + editor->priv = G_TYPE_INSTANCE_GET_PRIVATE (editor, EAB_TYPE_EDITOR, EABEditorPrivate); all_editors = g_slist_prepend (all_editors, editor); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 67c9c88c6f..547e172bca 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -47,13 +47,9 @@ #include "e-contact-list-model.h" #include "eab-contact-merging.h" -#define E_CONTACT_LIST_EDITOR_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate)) - #define CONTACT_LIST_EDITOR_WIDGET(editor, name) \ (e_builder_get_widget \ - (E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor)->builder, name)) + (E_CONTACT_LIST_EDITOR (editor)->priv->builder, name)) /* More macros, less typos. */ #define CONTACT_LIST_EDITOR_WIDGET_ADD_BUTTON(editor) \ @@ -63,7 +59,7 @@ #define CONTACT_LIST_EDITOR_WIDGET_DIALOG(editor) \ CONTACT_LIST_EDITOR_WIDGET ((editor), "dialog") #define CONTACT_LIST_EDITOR_WIDGET_EMAIL_ENTRY(editor) \ - E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor)->email_entry + editor->priv->email_entry #define CONTACT_LIST_EDITOR_WIDGET_LIST_NAME_ENTRY(editor) \ CONTACT_LIST_EDITOR_WIDGET ((editor), "list-name-entry") #define CONTACT_LIST_EDITOR_WIDGET_MEMBERS_VBOX(editor) \ @@ -881,7 +877,7 @@ setup_custom_widgets (EContactListEditor *editor) g_return_if_fail (editor != NULL); - priv = E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor); + priv = editor->priv; combo_box = WIDGET (SOURCE_MENU); client = gconf_client_get_default (); @@ -1134,7 +1130,7 @@ contact_list_editor_is_valid (EABEditor *editor) static gboolean contact_list_editor_is_changed (EABEditor *editor) { - return E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor)->changed; + return E_CONTACT_LIST_EDITOR (editor)->priv->changed; } static GtkWindow * @@ -1270,7 +1266,7 @@ contact_list_editor_init (EContactListEditor *editor) GtkCellRenderer *renderer; GtkTreeView *view; - priv = E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor); + editor->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (editor, E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate); priv->editable = TRUE; priv->allows_contact_lists = TRUE; @@ -1328,8 +1324,6 @@ contact_list_editor_init (EContactListEditor *editor) gtk_widget_show_all (WIDGET (DIALOG)); setup_custom_widgets (editor); - - editor->priv = priv; } /***************************** Public Interface ******************************/ diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index e64848f527..b4afd76e74 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -28,10 +28,6 @@ #include #include "eab-gui-util.h" -#define E_ADDRESSBOOK_MODEL_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_ADDRESSBOOK_MODEL, EAddressbookModelPrivate)) - struct _EAddressbookModelPrivate { EBook *book; EBookQuery *query; @@ -516,7 +512,7 @@ addressbook_model_finalize (GObject *object) { EAddressbookModelPrivate *priv; - priv = E_ADDRESSBOOK_MODEL_GET_PRIVATE (object); + priv = E_ADDRESSBOOK_MODEL (object)->priv; g_ptr_array_free (priv->contacts, TRUE); @@ -674,7 +670,7 @@ addressbook_model_class_init (EAddressbookModelClass *class) static void addressbook_model_init (EAddressbookModel *model) { - model->priv = E_ADDRESSBOOK_MODEL_GET_PRIVATE (model); + model->priv = G_TYPE_INSTANCE_GET_PRIVATE (model, E_TYPE_ADDRESSBOOK_MODEL, EAddressbookModelPrivate); model->priv->contacts = g_ptr_array_new (); model->priv->first_get_view = TRUE; diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index 018205e09f..727bf3c402 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -25,10 +25,6 @@ #include #include -#define E_ADDRESSBOOK_SELECTOR_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_ADDRESSBOOK_SELECTOR, EAddressbookSelectorPrivate)) - typedef struct _MergeContext MergeContext; struct _EAddressbookSelectorPrivate { @@ -219,7 +215,7 @@ addressbook_selector_dispose (GObject *object) { EAddressbookSelectorPrivate *priv; - priv = E_ADDRESSBOOK_SELECTOR_GET_PRIVATE (object); + priv = E_ADDRESSBOOK_SELECTOR (object)->priv; if (priv->current_view != NULL) { g_object_unref (priv->current_view); @@ -258,7 +254,7 @@ addressbook_selector_data_dropped (ESourceSelector *selector, const gchar *string; gboolean remove_from_source; - priv = E_ADDRESSBOOK_SELECTOR_GET_PRIVATE (selector); + priv = E_ADDRESSBOOK_SELECTOR (selector)->priv; g_return_val_if_fail (priv->current_view != NULL, FALSE); string = (const gchar *) gtk_selection_data_get_data (selection_data); @@ -324,7 +320,7 @@ addressbook_selector_class_init (EAddressbookSelectorClass *class) static void addressbook_selector_init (EAddressbookSelector *selector) { - selector->priv = E_ADDRESSBOOK_SELECTOR_GET_PRIVATE (selector); + selector->priv = G_TYPE_INSTANCE_GET_PRIVATE (selector, E_TYPE_ADDRESSBOOK_SELECTOR, EAddressbookSelectorPrivate); gtk_drag_dest_set ( GTK_WIDGET (selector), GTK_DEST_DEFAULT_ALL, diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 5d2636a413..4e759f9dcc 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -59,10 +59,6 @@ #include #include -#define E_ADDRESSBOOK_VIEW_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_ADDRESSBOOK_VIEW, EAddressbookViewPrivate)) - #define d(x) static void status_message (EAddressbookView *view, @@ -498,7 +494,7 @@ addressbook_view_dispose (GObject *object) { EAddressbookViewPrivate *priv; - priv = E_ADDRESSBOOK_VIEW_GET_PRIVATE (object); + priv = E_ADDRESSBOOK_VIEW (object)->priv; if (priv->shell_view != NULL) { g_object_remove_weak_pointer ( @@ -848,7 +844,7 @@ addressbook_view_init (EAddressbookView *view) { GtkTargetList *target_list; - view->priv = E_ADDRESSBOOK_VIEW_GET_PRIVATE (view); + view->priv = G_TYPE_INSTANCE_GET_PRIVATE (view, E_TYPE_ADDRESSBOOK_VIEW, EAddressbookViewPrivate); view->priv->model = e_addressbook_model_new (); diff --git a/addressbook/gui/widgets/eab-config.c b/addressbook/gui/widgets/eab-config.c index 79ba6c8445..e1f841af3f 100644 --- a/addressbook/gui/widgets/eab-config.c +++ b/addressbook/gui/widgets/eab-config.c @@ -32,17 +32,16 @@ struct _EABConfigPrivate { guint source_changed_id; }; -#define _PRIVATE(o) (g_type_instance_get_private((GTypeInstance *)o, eab_config_get_type())) - static void -ecp_init (GObject *o) +ecp_init (EABConfig *cfg) { + cfg->priv = G_TYPE_INSTANCE_GET_PRIVATE (cfg, EAB_TYPE_CONFIG, EABConfigPrivate); } static void ecp_target_free (EConfig *ec, EConfigTarget *t) { - struct _EABConfigPrivate *p = _PRIVATE (ec); + struct _EABConfigPrivate *p = EAB_CONFIG (ec)->priv; if (ec->target == t) { switch (t->type) { @@ -78,7 +77,7 @@ ecp_source_changed (struct _ESource *source, EConfig *ec) static void ecp_set_target (EConfig *ec, EConfigTarget *t) { - struct _EABConfigPrivate *p = _PRIVATE (ec); + struct _EABConfigPrivate *p = EAB_CONFIG (ec)->priv; ((EConfigClass *)ecp_parent_class)->set_target (ec, t); diff --git a/addressbook/gui/widgets/eab-config.h b/addressbook/gui/widgets/eab-config.h index fcf6b76f00..ef9bc0752c 100644 --- a/addressbook/gui/widgets/eab-config.h +++ b/addressbook/gui/widgets/eab-config.h @@ -28,13 +28,20 @@ #include "e-util/e-config.h" +#define EAB_TYPE_CONFIG (eab_config_get_type ()) +#define EAB_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EAB_TYPE_CONFIG, EABConfig)) + + G_BEGIN_DECLS typedef struct _EABConfig EABConfig; typedef struct _EABConfigClass EABConfigClass; +typedef struct _EABConfigPrivate EABConfigPrivate; struct _EABConfig { EConfig config; + + EABConfigPrivate *priv; }; struct _EABConfigClass { diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index 47052f443a..449d112da4 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -37,10 +37,6 @@ #include #include -#define EAB_CONTACT_DISPLAY_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), EAB_TYPE_CONTACT_DISPLAY, EABContactDisplayPrivate)) - #define TEXT_IS_RIGHT_TO_LEFT \ (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) @@ -952,7 +948,7 @@ contact_display_dispose (GObject *object) { EABContactDisplayPrivate *priv; - priv = EAB_CONTACT_DISPLAY_GET_PRIVATE (object); + priv = EAB_CONTACT_DISPLAY (object)->priv; if (priv->contact != NULL) { g_object_unref (priv->contact); @@ -1198,7 +1194,7 @@ eab_contact_display_init (EABContactDisplay *display) const gchar *domain = GETTEXT_PACKAGE; GError *error = NULL; - display->priv = EAB_CONTACT_DISPLAY_GET_PRIVATE (display); + display->priv = G_TYPE_INSTANCE_GET_PRIVATE (display, EAB_TYPE_CONTACT_DISPLAY, EABContactDisplayPrivate); display->priv->mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL; display->priv->orientation = GTK_ORIENTATION_HORIZONTAL; -- cgit v1.2.3 From 1ad58c54c071f63c123985c11e16bbcc1605abe4 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 4 Mar 2011 23:12:09 -0500 Subject: Whitespace cleanup. --- addressbook/gui/widgets/eab-config.h | 1 - 1 file changed, 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/eab-config.h b/addressbook/gui/widgets/eab-config.h index ef9bc0752c..3c2dabdced 100644 --- a/addressbook/gui/widgets/eab-config.h +++ b/addressbook/gui/widgets/eab-config.h @@ -31,7 +31,6 @@ #define EAB_TYPE_CONFIG (eab_config_get_type ()) #define EAB_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EAB_TYPE_CONFIG, EABConfig)) - G_BEGIN_DECLS typedef struct _EABConfig EABConfig; -- cgit v1.2.3 From c6fd77460f5baf88528f5da2ffb99e86a2885ff0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 5 Mar 2011 12:33:49 -0500 Subject: Coding style and whitespace cleanup. --- addressbook/gui/contact-editor/eab-editor.c | 3 ++- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 3 ++- addressbook/gui/widgets/e-addressbook-model.c | 3 ++- addressbook/gui/widgets/e-addressbook-selector.c | 4 +++- addressbook/gui/widgets/e-addressbook-view.c | 3 ++- addressbook/gui/widgets/eab-config.c | 10 +++++++--- addressbook/gui/widgets/eab-contact-display.c | 3 ++- 7 files changed, 20 insertions(+), 9 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/eab-editor.c b/addressbook/gui/contact-editor/eab-editor.c index dcce405470..c5f55edad2 100644 --- a/addressbook/gui/contact-editor/eab-editor.c +++ b/addressbook/gui/contact-editor/eab-editor.c @@ -214,7 +214,8 @@ eab_editor_class_init (EABEditorClass *class) static void eab_editor_init (EABEditor *editor) { - editor->priv = G_TYPE_INSTANCE_GET_PRIVATE (editor, EAB_TYPE_EDITOR, EABEditorPrivate); + editor->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + editor, EAB_TYPE_EDITOR, EABEditorPrivate); all_editors = g_slist_prepend (all_editors, editor); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 547e172bca..08ddac7942 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -1266,7 +1266,8 @@ contact_list_editor_init (EContactListEditor *editor) GtkCellRenderer *renderer; GtkTreeView *view; - editor->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE (editor, E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate); + editor->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE ( + editor, E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate); priv->editable = TRUE; priv->allows_contact_lists = TRUE; diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index b4afd76e74..785be1c49e 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -670,7 +670,8 @@ addressbook_model_class_init (EAddressbookModelClass *class) static void addressbook_model_init (EAddressbookModel *model) { - model->priv = G_TYPE_INSTANCE_GET_PRIVATE (model, E_TYPE_ADDRESSBOOK_MODEL, EAddressbookModelPrivate); + model->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + model, E_TYPE_ADDRESSBOOK_MODEL, EAddressbookModelPrivate); model->priv->contacts = g_ptr_array_new (); model->priv->first_get_view = TRUE; diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index 727bf3c402..a39750c805 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -320,7 +320,9 @@ addressbook_selector_class_init (EAddressbookSelectorClass *class) static void addressbook_selector_init (EAddressbookSelector *selector) { - selector->priv = G_TYPE_INSTANCE_GET_PRIVATE (selector, E_TYPE_ADDRESSBOOK_SELECTOR, EAddressbookSelectorPrivate); + selector->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + selector, E_TYPE_ADDRESSBOOK_SELECTOR, + EAddressbookSelectorPrivate); gtk_drag_dest_set ( GTK_WIDGET (selector), GTK_DEST_DEFAULT_ALL, diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 4e759f9dcc..804fa10ccc 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -844,7 +844,8 @@ addressbook_view_init (EAddressbookView *view) { GtkTargetList *target_list; - view->priv = G_TYPE_INSTANCE_GET_PRIVATE (view, E_TYPE_ADDRESSBOOK_VIEW, EAddressbookViewPrivate); + view->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + view, E_TYPE_ADDRESSBOOK_VIEW, EAddressbookViewPrivate); view->priv->model = e_addressbook_model_new (); diff --git a/addressbook/gui/widgets/eab-config.c b/addressbook/gui/widgets/eab-config.c index e1f841af3f..218ad80685 100644 --- a/addressbook/gui/widgets/eab-config.c +++ b/addressbook/gui/widgets/eab-config.c @@ -35,7 +35,8 @@ struct _EABConfigPrivate { static void ecp_init (EABConfig *cfg) { - cfg->priv = G_TYPE_INSTANCE_GET_PRIVATE (cfg, EAB_TYPE_CONFIG, EABConfigPrivate); + cfg->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + cfg, EAB_TYPE_CONFIG, EABConfigPrivate); } static void @@ -86,7 +87,9 @@ ecp_set_target (EConfig *ec, EConfigTarget *t) case EAB_CONFIG_TARGET_SOURCE: { EABConfigTargetSource *s = (EABConfigTargetSource *)t; - p->source_changed_id = g_signal_connect(s->source, "changed", G_CALLBACK(ecp_source_changed), ec); + p->source_changed_id = g_signal_connect ( + s->source, "changed", + G_CALLBACK (ecp_source_changed), ec); break; } } } @@ -134,7 +137,8 @@ eab_config_new (gint type, const gchar *menuid) EABConfigTargetSource * eab_config_target_new_source (EABConfig *ecp, struct _ESource *source) { - EABConfigTargetSource *t = e_config_target_new (&ecp->config, EAB_CONFIG_TARGET_SOURCE, sizeof (*t)); + EABConfigTargetSource *t = e_config_target_new ( + &ecp->config, EAB_CONFIG_TARGET_SOURCE, sizeof (*t)); t->source = source; g_object_ref (source); diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index 449d112da4..e457486f4c 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -1194,7 +1194,8 @@ eab_contact_display_init (EABContactDisplay *display) const gchar *domain = GETTEXT_PACKAGE; GError *error = NULL; - display->priv = G_TYPE_INSTANCE_GET_PRIVATE (display, EAB_TYPE_CONTACT_DISPLAY, EABContactDisplayPrivate); + display->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + display, EAB_TYPE_CONTACT_DISPLAY, EABContactDisplayPrivate); display->priv->mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL; display->priv->orientation = GTK_ORIENTATION_HORIZONTAL; -- cgit v1.2.3 From a654e38eca0d6cead861e1d78285d3ecfb4925a0 Mon Sep 17 00:00:00 2001 From: Jari Urpalainen Date: Tue, 8 Mar 2011 08:51:24 -0500 Subject: Bug 644194 - EAddressbookModel: Logic error in remove_contact() --- addressbook/gui/widgets/e-addressbook-model.c | 33 +++++++++++++++++++++------ 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 785be1c49e..6f679a4233 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -179,10 +179,20 @@ create_contact (EBookView *book_view, update_folder_bar_message (model); } +static gint +sort_descending (gconstpointer ca, + gconstpointer cb) +{ + gint a = *((gint *) ca); + gint b = *((gint *) cb); + + return (a == b) ? 0 : (a < b) ? 1 : -1; +} + static void remove_contact (EBookView *book_view, - GList *ids, - EAddressbookModel *model) + GList *ids, + EAddressbookModel *model) { /* XXX we should keep a hash around instead of this O(n*m) loop */ GList *iter; @@ -217,6 +227,11 @@ remove_contact (EBookView *book_view, } } + /* Sort the 'indices' array in descending order, since + * g_ptr_array_remove_index() shifts subsequent elements + * down one position to fill the gap. */ + g_array_sort (indices, sort_descending); + for (ii = 0; ii < indices->len; ii++) { gint index; @@ -232,8 +247,8 @@ remove_contact (EBookView *book_view, static void modify_contact (EBookView *book_view, - const GList *contact_list, - EAddressbookModel *model) + const GList *contact_list, + EAddressbookModel *model) { GPtrArray *array; @@ -247,15 +262,19 @@ modify_contact (EBookView *book_view, target_uid = e_contact_get_const (contact, E_CONTACT_UID); for (ii = 0; ii < array->len; ii++) { + EContact *contact; const gchar *uid; - uid = e_contact_get_const ( - array->pdata[ii], E_CONTACT_UID); + contact = array->pdata[ii]; + g_return_if_fail (contact != NULL); + + uid = e_contact_get_const (contact, E_CONTACT_UID); + g_return_if_fail (uid != NULL); if (strcmp (uid, target_uid) != 0) continue; - g_object_unref (array->pdata[ii]); + g_object_unref (contact); contact = e_contact_duplicate (contact); array->pdata[ii] = contact; -- cgit v1.2.3 From cfe983a286308665243727b960ccd6f19deee6f2 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 19 Apr 2011 09:39:57 +0200 Subject: Bug #645610 - [regression] Editing contact doesn't refresh view --- addressbook/gui/widgets/e-addressbook-model.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 6f679a4233..8e62e40d28 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -255,28 +255,27 @@ modify_contact (EBookView *book_view, array = model->priv->contacts; while (contact_list != NULL) { - EContact *contact = contact_list->data; + EContact *new_contact = contact_list->data; const gchar *target_uid; gint ii; - target_uid = e_contact_get_const (contact, E_CONTACT_UID); + target_uid = e_contact_get_const (new_contact, E_CONTACT_UID); for (ii = 0; ii < array->len; ii++) { - EContact *contact; + EContact *old_contact; const gchar *uid; - contact = array->pdata[ii]; - g_return_if_fail (contact != NULL); + old_contact = array->pdata[ii]; + g_return_if_fail (old_contact != NULL); - uid = e_contact_get_const (contact, E_CONTACT_UID); + uid = e_contact_get_const (old_contact, E_CONTACT_UID); g_return_if_fail (uid != NULL); if (strcmp (uid, target_uid) != 0) continue; - g_object_unref (contact); - contact = e_contact_duplicate (contact); - array->pdata[ii] = contact; + g_object_unref (old_contact); + array->pdata[ii] = e_contact_duplicate (new_contact); g_signal_emit ( model, signals[CONTACT_CHANGED], 0, ii); -- cgit v1.2.3 From db35e41399743917106625476ba12b6a5776c056 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 19 Apr 2011 14:16:34 +0200 Subject: Bug #647116 - Crash in g_error_matches, e_contact_editor_contact_modified --- addressbook/gui/contact-editor/eab-editor.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/eab-editor.c b/addressbook/gui/contact-editor/eab-editor.c index c5f55edad2..bea34db512 100644 --- a/addressbook/gui/contact-editor/eab-editor.c +++ b/addressbook/gui/contact-editor/eab-editor.c @@ -179,7 +179,7 @@ eab_editor_class_init (EABEditorClass *class) NULL, NULL, e_marshal_NONE__POINTER_OBJECT, G_TYPE_NONE, 2, - G_TYPE_INT, G_TYPE_OBJECT); + G_TYPE_POINTER, G_TYPE_OBJECT); signals[CONTACT_MODIFIED] = g_signal_new ("contact_modified", @@ -189,7 +189,7 @@ eab_editor_class_init (EABEditorClass *class) NULL, NULL, e_marshal_NONE__POINTER_OBJECT, G_TYPE_NONE, 2, - G_TYPE_INT, G_TYPE_OBJECT); + G_TYPE_POINTER, G_TYPE_OBJECT); signals[CONTACT_DELETED] = g_signal_new ("contact_deleted", @@ -199,7 +199,7 @@ eab_editor_class_init (EABEditorClass *class) NULL, NULL, e_marshal_NONE__POINTER_OBJECT, G_TYPE_NONE, 2, - G_TYPE_INT, G_TYPE_OBJECT); + G_TYPE_POINTER, G_TYPE_OBJECT); signals[EDITOR_CLOSED] = g_signal_new ("editor_closed", -- cgit v1.2.3 From 04f5c83b068bc67b49929f630721f8f869c4515a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 22 Apr 2011 15:27:24 -0400 Subject: Bug 619782 - Characters override in contact editor express mode --- addressbook/gui/contact-editor/contact-editor.ui | 3 --- 1 file changed, 3 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/contact-editor.ui b/addressbook/gui/contact-editor/contact-editor.ui index 428b17a600..b30e716a2f 100644 --- a/addressbook/gui/contact-editor/contact-editor.ui +++ b/addressbook/gui/contact-editor/contact-editor.ui @@ -1584,7 +1584,6 @@ 10 - 50 True @@ -1827,7 +1826,6 @@ 10 - 50 True @@ -2069,7 +2067,6 @@ 10 - 50 True -- cgit v1.2.3 From aae601b3bae2a66da4e50cd772c519847cf9ebfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Thu, 5 May 2011 10:40:41 -0400 Subject: Bug 649381 - Memory leaks in contact editor --- addressbook/gui/contact-editor/e-contact-editor.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 4c0bf2e905..1e3e0b5bcc 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -1028,6 +1028,8 @@ fill_in_email (EContactEditor *editor) get_email_location (attr)); record_n++; + + g_free (email_address); } } @@ -1346,6 +1348,8 @@ fill_in_phone (EContactEditor *editor) editor, slot, phone, get_phone_type (attr)); record_n++; + + g_free (phone); } } @@ -1674,6 +1678,8 @@ fill_in_im (EContactEditor *editor) get_im_location (attr)); record_n++; + + g_free (im_name); } } } @@ -2649,6 +2655,7 @@ fill_in_simple (EContactEditor *editor) title = g_strdup_printf (_("Contact Editor - %s"), filename); gtk_window_set_title (GTK_WINDOW (editor->app), title); g_free (title); + g_free (filename); } else gtk_window_set_title (GTK_WINDOW (editor->app), _("Contact Editor")); -- cgit v1.2.3 From 4cfb84c573f21ca7519e24cff1c5742b715355c4 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 7 May 2011 12:22:36 -0400 Subject: Whitespace and coding style cleanups. --- addressbook/gui/contact-editor/e-contact-editor-fullname.c | 4 +++- addressbook/gui/contact-editor/e-contact-quick-add.c | 8 ++++---- addressbook/gui/widgets/e-addressbook-view.c | 4 +++- addressbook/gui/widgets/e-minicard-view.c | 3 ++- 4 files changed, 12 insertions(+), 7 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index 15eddbd53f..dee1bd2630 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -58,7 +58,9 @@ e_contact_editor_fullname_set_property (GObject *object, e_contact_name_free (e_contact_editor_fullname->name); if (g_value_get_pointer (value) != NULL) { - e_contact_editor_fullname->name = e_contact_name_copy (g_value_get_pointer (value)); + e_contact_editor_fullname->name = + e_contact_name_copy ( + g_value_get_pointer (value)); fill_in_info (e_contact_editor_fullname); } else { diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 30f0068035..5de52f30a7 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -225,10 +225,10 @@ ce_have_contact (EBook *book, const GError *error, EContact *contact, gpointer c contact_editor = e_contact_editor_new ( shell, book, qa->contact, TRUE, TRUE /* XXX */); - /* mark it as changed so the Save buttons are enabled when we bring up the dialog. */ - g_object_set (contact_editor, - "changed", contact != NULL, - NULL); + /* Mark it as changed so the Save buttons are + * enabled when we bring up the dialog. */ + g_object_set ( + contact_editor, "changed", contact != NULL, NULL); /* We pass this via object data, so that we don't get a * dangling pointer referenced if both the "contact_added" diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 804fa10ccc..2ef59d17c0 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1396,7 +1396,9 @@ e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) for (l=list;l;l=g_list_next (l)) { contact = l->data; - ids = g_list_prepend (ids, (gchar *)e_contact_get_const (contact, E_CONTACT_UID)); + ids = g_list_prepend ( + ids, (gchar *) e_contact_get_const ( + contact, E_CONTACT_UID)); } /* Remove the cards all at once. */ diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index 31e2d35306..f6ac130a2f 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -616,7 +616,8 @@ e_minicard_view_get_type (void) (GInstanceInitFunc) e_minicard_view_init, }; - reflow_type = g_type_register_static (PARENT_TYPE, "EMinicardView", &reflow_info, 0); + reflow_type = g_type_register_static ( + PARENT_TYPE, "EMinicardView", &reflow_info, 0); } return reflow_type; -- cgit v1.2.3 From 8a186c3588d3598857c36e2122fa68d01eba30fd Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 8 May 2011 13:24:42 -0400 Subject: Coding style cleanups. --- addressbook/gui/contact-editor/e-contact-editor.c | 14 +++---- .../gui/contact-editor/e-contact-quick-add.c | 8 ++-- addressbook/gui/merging/eab-contact-compare.c | 12 +++--- addressbook/gui/merging/eab-contact-merging.c | 44 +++++++++++----------- .../gui/widgets/e-addressbook-reflow-adapter.c | 6 +-- .../gui/widgets/e-addressbook-table-adapter.c | 2 +- addressbook/gui/widgets/e-addressbook-view.c | 4 +- addressbook/gui/widgets/e-minicard-view.c | 4 +- addressbook/gui/widgets/eab-config.c | 12 +++--- addressbook/gui/widgets/eab-contact-display.c | 8 ++-- 10 files changed, 57 insertions(+), 57 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 1e3e0b5bcc..4b259e098b 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -2393,7 +2393,7 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) EContactPhoto *photo = e_contact_get (contact, field_id); if (photo && photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { e_image_chooser_set_image_data (E_IMAGE_CHOOSER (widget), - (gchar *)photo->data.inlined.data, + (gchar *) photo->data.inlined.data, photo->data.inlined.length); editor->image_set = TRUE; } @@ -2494,7 +2494,7 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) GdkPixbuf *pixbuf, *new; GdkPixbufLoader *loader = gdk_pixbuf_loader_new (); - photo.data.inlined.data = (guchar *)img_buff; + photo.data.inlined.data = (guchar *) img_buff; img_buff = NULL; gdk_pixbuf_loader_write (loader, photo.data.inlined.data, photo.data.inlined.length, NULL); gdk_pixbuf_loader_close (loader, NULL); @@ -2532,7 +2532,7 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) gdk_pixbuf_save_to_buffer (new, &img_buff, &photo.data.inlined.length, format_name, NULL, NULL); - photo.data.inlined.data = (guchar *)img_buff; + photo.data.inlined.data = (guchar *) img_buff; img_buff = NULL; g_free (format_name); g_object_unref (new); @@ -2563,7 +2563,7 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) else if (GTK_IS_TOGGLE_BUTTON (widget)) { gboolean val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - e_contact_set (contact, field_id, val?(gpointer)1:NULL); + e_contact_set (contact, field_id, val?(gpointer) 1:NULL); } else { g_warning (G_STRLOC ": Unhandled widget class in mappings!"); @@ -2927,7 +2927,7 @@ categories_response (GtkDialog *dialog, gint response, EContactEditor *editor) if (entry && GTK_IS_ENTRY (entry)) gtk_entry_set_text (GTK_ENTRY (entry), categories); else - e_contact_set (editor->contact, E_CONTACT_CATEGORIES, (gchar *)categories); + e_contact_set (editor->contact, E_CONTACT_CATEGORIES, (gchar *) categories); } gtk_widget_destroy (GTK_WIDGET (dialog)); editor->categories_dialog = NULL; @@ -3087,7 +3087,7 @@ image_clicked (GtkWidget *button, EContactEditor *editor) no_image, GTK_RESPONSE_NO, NULL); preview = GTK_IMAGE (gtk_image_new ()); - gtk_file_chooser_set_preview_widget ((GtkFileChooser *)editor->file_selector, GTK_WIDGET (preview)); + gtk_file_chooser_set_preview_widget ((GtkFileChooser *) editor->file_selector, GTK_WIDGET (preview)); g_signal_connect ( editor->file_selector, "update-preview", G_CALLBACK (update_preview_cb), preview); @@ -3798,7 +3798,7 @@ e_contact_editor_new (EShell *shell, if (book) e_book_get_supported_fields_async ( - book, (EBookEListAsyncCallback)supported_fields_cb, editor); + book, (EBookEListAsyncCallback) supported_fields_cb, editor); return editor; } diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 5de52f30a7..76a7e5f0cb 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -441,7 +441,7 @@ build_quick_add_dialog (QuickAdd *qa) gtk_table_set_col_spacings (table, 12); label = gtk_label_new_with_mnemonic (_("_Full name")); - gtk_label_set_mnemonic_widget ((GtkLabel*)label, qa->name_entry); + gtk_label_set_mnemonic_widget ((GtkLabel*) label, qa->name_entry); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (table, label, @@ -452,7 +452,7 @@ build_quick_add_dialog (QuickAdd *qa) GTK_EXPAND | GTK_FILL, 0, xpad, ypad); label = gtk_label_new_with_mnemonic (_("E_mail")); - gtk_label_set_mnemonic_widget ((GtkLabel *)label, qa->email_entry); + gtk_label_set_mnemonic_widget ((GtkLabel *) label, qa->email_entry); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (table, label, @@ -463,7 +463,7 @@ build_quick_add_dialog (QuickAdd *qa) GTK_EXPAND | GTK_FILL, 0, xpad, ypad); label = gtk_label_new_with_mnemonic (_("_Select Address Book")); - gtk_label_set_mnemonic_widget ((GtkLabel *)label, qa->combo_box); + gtk_label_set_mnemonic_widget ((GtkLabel *) label, qa->combo_box); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (table, label, @@ -673,7 +673,7 @@ e_contact_quick_add_vcard (const gchar *vcard, if (emails) { quick_add_set_email (qa, emails->data); - g_list_foreach (emails, (GFunc)g_free, NULL); + g_list_foreach (emails, (GFunc) g_free, NULL); g_list_free (emails); } } else { diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index 398a94832b..82dcf6e8ce 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -458,10 +458,10 @@ eab_contact_compare_email (EContact *contact1, EContact *contact2) contact2_email = e_contact_get (contact2, E_CONTACT_EMAIL); if (contact1_email == NULL || contact2_email == NULL) { - g_list_foreach (contact1_email, (GFunc)g_free, NULL); + g_list_foreach (contact1_email, (GFunc) g_free, NULL); g_list_free (contact1_email); - g_list_foreach (contact2_email, (GFunc)g_free, NULL); + g_list_foreach (contact2_email, (GFunc) g_free, NULL); g_list_free (contact2_email); return EAB_CONTACT_MATCH_NOT_APPLICABLE; } @@ -486,10 +486,10 @@ eab_contact_compare_email (EContact *contact1, EContact *contact2) i1 = i1->next; } - g_list_foreach (contact1_email, (GFunc)g_free, NULL); + g_list_foreach (contact1_email, (GFunc) g_free, NULL); g_list_free (contact1_email); - g_list_foreach (contact2_email, (GFunc)g_free, NULL); + g_list_foreach (contact2_email, (GFunc) g_free, NULL); g_list_free (contact2_email); return match; @@ -616,7 +616,7 @@ query_cb (EBook *book, const GError *error, GList *contacts, gpointer closure) for (i = remaining_contacts; i != NULL; i = g_list_next (i)) { EContact *this_contact = E_CONTACT (i->data); EABContactMatchType this_match = eab_contact_compare (info->contact, this_contact); - if ((gint)this_match > (gint)best_match) { + if ((gint) this_match > (gint) best_match) { best_match = this_match; best_contact = this_contact; } @@ -688,7 +688,7 @@ use_common_book (EBook *book, } } } - g_list_foreach (contact_email, (GFunc)g_free, NULL); + g_list_foreach (contact_email, (GFunc) g_free, NULL); g_list_free (contact_email); } diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index 1aababe57a..25a4a47634 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -247,8 +247,8 @@ mergeit (EContactMergingLookup *lookup) /*we match all the string fields of the already existing contact and the new contact.*/ for (field = E_CONTACT_FULL_NAME; field != (E_CONTACT_LAST_SIMPLE_STRING -1); field++) { dropdown_data *data = NULL; - string = (gchar *)e_contact_get_const (lookup->contact, field); - string1 = (gchar *)e_contact_get_const (lookup->match, field); + string = (gchar *) e_contact_get_const (lookup->contact, field); + string1 = (gchar *) e_contact_get_const (lookup->match, field); /*the field must exist in the new as well as the duplicate contact*/ if (string && *string) { @@ -258,7 +258,7 @@ mergeit (EContactMergingLookup *lookup) || field == E_CONTACT_EMAIL_3 || field == E_CONTACT_EMAIL_4) && (num_of_email < 4)) { EContactField use_field = field; row++; - str = (gchar *)e_contact_get_const (lookup->contact, use_field); + str = (gchar *) e_contact_get_const (lookup->contact, use_field); switch (num_of_email) { case 0: @@ -294,8 +294,8 @@ mergeit (EContactMergingLookup *lookup) } label = gtk_label_new (_("Email")); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*)label, FALSE, FALSE, 0); - gtk_table_attach_defaults (table, (GtkWidget *)hbox, 0, 1, row, row + 1); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); + gtk_table_attach_defaults (table, (GtkWidget *) hbox, 0, 1, row, row + 1); dropdown = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (dropdown), string); @@ -311,22 +311,22 @@ mergeit (EContactMergingLookup *lookup) g_signal_connect (dropdown, "changed", G_CALLBACK(dropdown_changed), data); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*)dropdown, FALSE, FALSE, 0); - gtk_table_attach_defaults (table, (GtkWidget *)hbox, 1, 2, row, row + 1); - gtk_widget_show ((GtkWidget *)dropdown); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) dropdown, FALSE, FALSE, 0); + gtk_table_attach_defaults (table, (GtkWidget *) hbox, 1, 2, row, row + 1); + gtk_widget_show ((GtkWidget *) dropdown); continue; } if (((field == E_CONTACT_FULL_NAME) && (!g_ascii_strcasecmp (string, string1)))) { row++; label = gtk_label_new (e_contact_pretty_name (field)); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*)label, FALSE, FALSE, 0); - gtk_table_attach_defaults (table, (GtkWidget *)hbox, 0, 1, row, row + 1); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); + gtk_table_attach_defaults (table, (GtkWidget *) hbox, 0, 1, row, row + 1); label = gtk_label_new (string); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*)label, FALSE, FALSE, 0); - gtk_table_attach_defaults (table, (GtkWidget*)hbox, 1, 2, row, row + 1); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); + gtk_table_attach_defaults (table, (GtkWidget*) hbox, 1, 2, row, row + 1); continue; } @@ -335,8 +335,8 @@ mergeit (EContactMergingLookup *lookup) row++; label = gtk_label_new (e_contact_pretty_name (field)); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*)label, FALSE, FALSE, 0); - gtk_table_attach_defaults (table, (GtkWidget *)hbox, 0, 1, row, row + 1); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); + gtk_table_attach_defaults (table, (GtkWidget *) hbox, 0, 1, row, row + 1); data = g_new0 (dropdown_data, 1); dropdown = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (dropdown), string); @@ -352,13 +352,13 @@ mergeit (EContactMergingLookup *lookup) data->match = lookup->match; if (field == E_CONTACT_NICKNAME || field == E_CONTACT_GIVEN_NAME) - gtk_widget_set_sensitive ((GtkWidget *)dropdown, FALSE); + gtk_widget_set_sensitive ((GtkWidget *) dropdown, FALSE); g_signal_connect (dropdown, "changed", G_CALLBACK(dropdown_changed), data); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*)dropdown, FALSE, FALSE, 0); - gtk_table_attach_defaults (table, (GtkWidget *)hbox, 1, 2, row, row + 1); - gtk_widget_show_all ((GtkWidget *)dropdown); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) dropdown, FALSE, FALSE, 0); + gtk_table_attach_defaults (table, (GtkWidget *) hbox, 1, 2, row, row + 1); + gtk_widget_show_all ((GtkWidget *) dropdown); } } } @@ -368,7 +368,7 @@ mergeit (EContactMergingLookup *lookup) gtk_box_pack_start (GTK_BOX (content_area), GTK_WIDGET (scrolled_window), TRUE, TRUE, 0); gtk_widget_show (scrolled_window); g_signal_connect (dialog, "map-event", G_CALLBACK (dialog_map), table); - gtk_widget_show_all ((GtkWidget *)table); + gtk_widget_show_all ((GtkWidget *) table); result = gtk_dialog_run (dialog); switch (result) @@ -403,7 +403,7 @@ check_if_same (EContact *contact, EContact *match) if ((field == E_CONTACT_EMAIL_1 || field == E_CONTACT_EMAIL_2 || field == E_CONTACT_EMAIL_3 || field == E_CONTACT_EMAIL_4) && (num_of_email<4)) { - str = (gchar *)e_contact_get_const (contact, field); + str = (gchar *) e_contact_get_const (contact, field); switch (num_of_email) { case 0: @@ -423,8 +423,8 @@ check_if_same (EContact *contact, EContact *match) } } else { - string = (gchar *)e_contact_get_const (contact, field); - string1 = (gchar *)e_contact_get_const (match, field); + string = (gchar *) e_contact_get_const (contact, field); + string1 = (gchar *) e_contact_get_const (match, field); if ((string && *string) && (string1 && *string1) && (g_ascii_strcasecmp (string1,string))) return FALSE; /*if the field entry exist in either of the contacts,we'll have to give the choice and thus merge button should be sensitive*/ diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index cb1adcfe25..017b14ac19 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -139,7 +139,7 @@ addressbook_height (EReflowModel *erm, gint i, GnomeCanvasGroup *parent) EContactField field; gint count = 0; gchar *string; - EContact *contact = (EContact*)e_addressbook_model_contact_at (priv->model, i); + EContact *contact = (EContact*) e_addressbook_model_contact_at (priv->model, i); PangoLayout *layout; gint height; @@ -227,8 +227,8 @@ addressbook_compare (EReflowModel *erm, gint n1, gint n2, GHashTable *cmp_cache) return n1-n2; } else { - contact1 = (EContact*)e_addressbook_model_contact_at (priv->model, n1); - contact2 = (EContact*)e_addressbook_model_contact_at (priv->model, n2); + contact1 = (EContact*) e_addressbook_model_contact_at (priv->model, n1); + contact2 = (EContact*) e_addressbook_model_contact_at (priv->model, n2); if (contact1 && contact2) { const gchar *file_as1, *file_as2; diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index 84224178b5..83f90a0573 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -262,7 +262,7 @@ addressbook_initialize_value (ETableModel *etc, gint col) static gboolean addressbook_value_is_empty (ETableModel *etc, gint col, gconstpointer value) { - return !(value && *(gchar *)value); + return !(value && *(gchar *) value); } static gchar * diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 2ef59d17c0..8deca495be 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -258,7 +258,7 @@ table_drag_data_get (ETable *table, gtk_selection_data_set ( selection_data, target, 8, - (guchar *)value, strlen (value)); + (guchar *) value, strlen (value)); g_free (value); break; @@ -269,7 +269,7 @@ table_drag_data_get (ETable *table, gtk_selection_data_set ( selection_data, target, 8, - (guchar *)value, strlen (value)); + (guchar *) value, strlen (value)); g_free (value); break; diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index f6ac130a2f..9be446d818 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -121,7 +121,7 @@ e_minicard_view_drag_data_get (GtkWidget *widget, static void clear_drag_data (EMinicardView *view) { - g_list_foreach (view->drag_list, (GFunc)g_object_unref, NULL); + g_list_foreach (view->drag_list, (GFunc) g_object_unref, NULL); g_list_free (view->drag_list); view->drag_list = NULL; } @@ -386,7 +386,7 @@ e_minicard_view_event (GnomeCanvasItem *item, GdkEvent *event) switch (event->type) { case GDK_2BUTTON_PRESS: - if (((GdkEventButton *)event)->button == 1) { + if (((GdkEventButton *) event)->button == 1) { gboolean editable; g_object_get(view->adapter, "editable", &editable, NULL); diff --git a/addressbook/gui/widgets/eab-config.c b/addressbook/gui/widgets/eab-config.c index 218ad80685..dbbb8cefc2 100644 --- a/addressbook/gui/widgets/eab-config.c +++ b/addressbook/gui/widgets/eab-config.c @@ -47,7 +47,7 @@ ecp_target_free (EConfig *ec, EConfigTarget *t) if (ec->target == t) { switch (t->type) { case EAB_CONFIG_TARGET_SOURCE: { - EABConfigTargetSource *s = (EABConfigTargetSource *)t; + EABConfigTargetSource *s = (EABConfigTargetSource *) t; if (p->source_changed_id) { g_signal_handler_disconnect (s->source, p->source_changed_id); @@ -59,7 +59,7 @@ ecp_target_free (EConfig *ec, EConfigTarget *t) switch (t->type) { case EAB_CONFIG_TARGET_SOURCE: { - EABConfigTargetSource *s = (EABConfigTargetSource *)t; + EABConfigTargetSource *s = (EABConfigTargetSource *) t; if (s->source) g_object_unref (s->source); @@ -80,12 +80,12 @@ ecp_set_target (EConfig *ec, EConfigTarget *t) { struct _EABConfigPrivate *p = EAB_CONFIG (ec)->priv; - ((EConfigClass *)ecp_parent_class)->set_target (ec, t); + ((EConfigClass *) ecp_parent_class)->set_target (ec, t); if (t) { switch (t->type) { case EAB_CONFIG_TARGET_SOURCE: { - EABConfigTargetSource *s = (EABConfigTargetSource *)t; + EABConfigTargetSource *s = (EABConfigTargetSource *) t; p->source_changed_id = g_signal_connect ( s->source, "changed", @@ -98,8 +98,8 @@ ecp_set_target (EConfig *ec, EConfigTarget *t) static void ecp_class_init (GObjectClass *klass) { - ((EConfigClass *)klass)->set_target = ecp_set_target; - ((EConfigClass *)klass)->target_free = ecp_target_free; + ((EConfigClass *) klass)->set_target = ecp_set_target; + ((EConfigClass *) klass)->target_free = ecp_target_free; g_type_class_add_private (klass, sizeof (struct _EABConfigPrivate)); } diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index e457486f4c..c970afe968 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -460,7 +460,7 @@ render_contact_block (GString *buffer, EContact *contact) for (l = email_list, al=email_attr_list; l && al; l = l->next, al = al->next) { gchar *name = NULL, *mail = NULL; - gchar *attr_str = (gchar *)get_email_location ((EVCardAttribute *) al->data); + gchar *attr_str = (gchar *) get_email_location ((EVCardAttribute *) al->data); if (!eab_parse_qp_email (l->data, &name, &mail)) mail = e_text_to_html (l->data, 0); @@ -479,7 +479,7 @@ render_contact_block (GString *buffer, EContact *contact) g_free (name); g_free (mail); } - g_list_foreach (email_list, (GFunc)g_free, NULL); + g_list_foreach (email_list, (GFunc) g_free, NULL); g_list_free (email_list); if (accum->len) { @@ -771,8 +771,8 @@ eab_contact_display_render_compact (EABContactDisplay *display, max_dimension = calced_height; if (max_dimension > MAX_COMPACT_IMAGE_DIMENSION) { - calced_width *= ((gfloat)MAX_COMPACT_IMAGE_DIMENSION / max_dimension); - calced_height *= ((gfloat)MAX_COMPACT_IMAGE_DIMENSION / max_dimension); + calced_width *= ((gfloat) MAX_COMPACT_IMAGE_DIMENSION / max_dimension); + calced_height *= ((gfloat) MAX_COMPACT_IMAGE_DIMENSION / max_dimension); } } -- cgit v1.2.3 From 8807321506d4bed40c15e738679de995a5f98d86 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 13 May 2011 09:56:11 +0200 Subject: Bug #619347 - Decode QP in email in Contact List Editor --- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 08ddac7942..2616b84004 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -316,11 +316,21 @@ contact_list_editor_render_destination (GtkTreeViewColumn *column, EDestination *destination; const gchar *textrep; + gchar *name = NULL, *email = NULL, *tofree = NULL; gtk_tree_model_get (model, iter, 0, &destination, -1); textrep = e_destination_get_textrep (destination, TRUE); + + if (eab_parse_qp_email (textrep, &name, &email)) { + tofree = g_strdup_printf ("%s <%s>", name, email); + textrep = tofree; + g_free (name); + g_free (email); + } + g_object_set (renderer, "text", textrep, NULL); g_object_unref (destination); + g_free (tofree); } static void -- cgit v1.2.3 From cb97c2dc8fd97b381af048f206333d5e557892ae Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 21 May 2011 10:02:58 -0400 Subject: Coding style and whitespace cleanup. --- .../gui/contact-editor/e-contact-editor-fullname.c | 7 +- addressbook/gui/contact-editor/e-contact-editor.c | 641 ++++++++++++++------- .../gui/contact-editor/e-contact-quick-add.c | 34 +- addressbook/gui/contact-editor/test-editor.c | 23 +- addressbook/gui/widgets/e-addressbook-model.c | 3 +- .../gui/widgets/e-addressbook-reflow-adapter.c | 3 +- .../gui/widgets/e-addressbook-table-adapter.c | 6 +- addressbook/gui/widgets/e-minicard-view-widget.c | 68 ++- addressbook/gui/widgets/e-minicard-view.c | 7 +- addressbook/gui/widgets/e-minicard.h | 60 +- 10 files changed, 568 insertions(+), 284 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index dee1bd2630..1ca6014707 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -121,10 +121,13 @@ e_contact_editor_fullname_get_property (GObject *object, switch (property_id) { case PROP_NAME: extract_info (e_contact_editor_fullname); - g_value_set_pointer (value, e_contact_name_copy (e_contact_editor_fullname->name)); + g_value_set_pointer ( + value, e_contact_name_copy ( + e_contact_editor_fullname->name)); break; case PROP_EDITABLE: - g_value_set_boolean (value, e_contact_editor_fullname->editable ? TRUE : FALSE); + g_value_set_boolean ( + value, e_contact_editor_fullname->editable); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 4b259e098b..f6e7f0ff71 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -71,25 +71,34 @@ enum { NUM_IM_COLUMNS }; -static void e_contact_editor_init (EContactEditor *editor); -static void e_contact_editor_class_init (EContactEditorClass *klass); -static void e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void e_contact_editor_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void e_contact_editor_dispose (GObject *object); - -static void e_contact_editor_raise (EABEditor *editor); -static void e_contact_editor_show (EABEditor *editor); -static void e_contact_editor_save_contact (EABEditor *editor, gboolean should_close); -static void e_contact_editor_close (EABEditor *editor); -static gboolean e_contact_editor_is_valid (EABEditor *editor); -static gboolean e_contact_editor_is_changed (EABEditor *editor); -static GtkWindow* e_contact_editor_get_window (EABEditor *editor); - -static void save_contact (EContactEditor *ce, gboolean should_close); -static void entry_activated (EContactEditor *editor); - -static void set_entry_text (EContactEditor *editor, GtkEntry *entry, const gchar *string); -static void sensitize_ok (EContactEditor *ce); +static void e_contact_editor_init (EContactEditor *editor); +static void e_contact_editor_class_init (EContactEditorClass *klass); +static void e_contact_editor_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void e_contact_editor_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void e_contact_editor_dispose (GObject *object); +static void e_contact_editor_raise (EABEditor *editor); +static void e_contact_editor_show (EABEditor *editor); +static void e_contact_editor_save_contact (EABEditor *editor, + gboolean should_close); +static void e_contact_editor_close (EABEditor *editor); +static gboolean e_contact_editor_is_valid (EABEditor *editor); +static gboolean e_contact_editor_is_changed (EABEditor *editor); +static GtkWindow * + e_contact_editor_get_window (EABEditor *editor); +static void save_contact (EContactEditor *ce, + gboolean should_close); +static void entry_activated (EContactEditor *editor); + +static void set_entry_text (EContactEditor *editor, + GtkEntry *entry, + const gchar *string); +static void sensitize_ok (EContactEditor *ce); static EABEditorClass *parent_class = NULL; @@ -260,7 +269,9 @@ e_contact_editor_get_type (void) (GInstanceInitFunc) e_contact_editor_init, }; - contact_editor_type = g_type_register_static (EAB_TYPE_EDITOR, "EContactEditor", &contact_editor_info, 0); + contact_editor_type = g_type_register_static ( + EAB_TYPE_EDITOR, "EContactEditor", + &contact_editor_info, 0); } return contact_editor_type; @@ -430,7 +441,9 @@ style_makes_sense (const EContactName *name, const gchar *company, gint style) return FALSE; case 4: /* Fall Through */ case 5: - if (company && *company && name && ((name->given && *name->given) || (name->family && *name->family))) + if (company && *company && name && + ((name->given && *name->given) || + (name->family && *name->family))) return TRUE; else return FALSE; @@ -518,8 +531,11 @@ name_to_style (const EContactName *name, const gchar *company, gint style) static gint file_as_get_style (EContactEditor *editor) { - GtkEntry *file_as = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (e_builder_get_widget(editor->builder, "combo-file-as")))); - GtkEntry *company_w = GTK_ENTRY (e_builder_get_widget (editor->builder, "entry-company")); + GtkEntry *file_as = GTK_ENTRY ( + gtk_bin_get_child (GTK_BIN ( + e_builder_get_widget(editor->builder, "combo-file-as")))); + GtkEntry *company_w = GTK_ENTRY ( + e_builder_get_widget (editor->builder, "entry-company")); gchar *filestring; gchar *trystring; EContactName *name = editor->name; @@ -551,8 +567,10 @@ file_as_set_style (EContactEditor *editor, gint style) gchar *string; gint i; GList *strings = NULL; - GtkComboBox *combo_file_as = GTK_COMBO_BOX (e_builder_get_widget (editor->builder, "combo-file-as")); - GtkEntry *company_w = GTK_ENTRY (e_builder_get_widget (editor->builder, "entry-company")); + GtkComboBox *combo_file_as = GTK_COMBO_BOX ( + e_builder_get_widget (editor->builder, "combo-file-as")); + GtkEntry *company_w = GTK_ENTRY ( + e_builder_get_widget (editor->builder, "entry-company")); const gchar *company; if (!(combo_file_as && GTK_IS_COMBO_BOX (combo_file_as))) @@ -586,7 +604,8 @@ file_as_set_style (EContactEditor *editor, gint style) GtkListStore *list_store; GtkTreeIter iter; - list_store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_file_as)); + list_store = GTK_LIST_STORE ( + gtk_combo_box_get_model (combo_file_as)); gtk_list_store_clear (list_store); @@ -601,7 +620,9 @@ file_as_set_style (EContactEditor *editor, gint style) if (style != -1) { string = name_to_style (editor->name, company, style); - set_entry_text (editor, GTK_ENTRY (gtk_bin_get_child (GTK_BIN (combo_file_as))), string); + set_entry_text ( + editor, GTK_ENTRY (gtk_bin_get_child ( + GTK_BIN (combo_file_as))), string); g_free (string); } } @@ -683,16 +704,24 @@ sensitize_ok (EContactEditor *ce) { GtkWidget *widget; gboolean allow_save; - GtkWidget *entry_fullname = e_builder_get_widget (ce->builder, "entry-fullname" ); - GtkWidget *entry_file_as = gtk_bin_get_child (GTK_BIN (e_builder_get_widget (ce->builder, "combo-file-as"))); - GtkWidget *company_name = e_builder_get_widget (ce->builder, "entry-company"); - const gchar *name_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_fullname)); - const gchar *file_as_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_file_as)); - const gchar *company_name_string = gtk_entry_get_text (GTK_ENTRY (company_name)); - - allow_save = ce->target_editable && ce->changed ? TRUE : FALSE; - - if (!strcmp (name_entry_string, "") || !strcmp (file_as_entry_string, "")) { + GtkWidget *entry_fullname = + e_builder_get_widget (ce->builder, "entry-fullname" ); + GtkWidget *entry_file_as = + gtk_bin_get_child (GTK_BIN ( + e_builder_get_widget (ce->builder, "combo-file-as"))); + GtkWidget *company_name = + e_builder_get_widget (ce->builder, "entry-company"); + const gchar *name_entry_string = + gtk_entry_get_text (GTK_ENTRY (entry_fullname)); + const gchar *file_as_entry_string = + gtk_entry_get_text (GTK_ENTRY (entry_file_as)); + const gchar *company_name_string = + gtk_entry_get_text (GTK_ENTRY (company_name)); + + allow_save = ce->target_editable && ce->changed; + + if (!strcmp (name_entry_string, "") || + !strcmp (file_as_entry_string, "")) { if (strcmp (company_name_string , "")) { allow_save = TRUE; } @@ -766,7 +795,8 @@ init_email_record_location (EContactEditor *editor, gint record) g_free (widget_name); widget_name = g_strdup_printf ("combobox-email-%d", record); - location_combo_box = GTK_COMBO_BOX (e_builder_get_widget (editor->builder, widget_name)); + location_combo_box = GTK_COMBO_BOX ( + e_builder_get_widget (editor->builder, widget_name)); g_free (widget_name); store = GTK_LIST_STORE (gtk_combo_box_get_model (location_combo_box)); @@ -779,14 +809,25 @@ init_email_record_location (EContactEditor *editor, gint record) -1); } - g_signal_connect_swapped (location_combo_box, "changed", G_CALLBACK (gtk_widget_grab_focus), email_entry); - g_signal_connect (location_combo_box, "changed", G_CALLBACK (object_changed), editor); - g_signal_connect (email_entry, "changed", G_CALLBACK (object_changed), editor); - g_signal_connect_swapped (email_entry, "activate", G_CALLBACK (entry_activated), editor); + g_signal_connect_swapped ( + location_combo_box, "changed", + G_CALLBACK (gtk_widget_grab_focus), email_entry); + g_signal_connect ( + location_combo_box, "changed", + G_CALLBACK (object_changed), editor); + g_signal_connect ( + email_entry, "changed", + G_CALLBACK (object_changed), editor); + g_signal_connect_swapped ( + email_entry, "activate", + G_CALLBACK (entry_activated), editor); } static void -fill_in_email_record (EContactEditor *editor, gint record, const gchar *address, gint location) +fill_in_email_record (EContactEditor *editor, + gint record, + const gchar *address, + gint location) { GtkWidget *location_combo_box; GtkWidget *email_entry; @@ -807,7 +848,10 @@ fill_in_email_record (EContactEditor *editor, gint record, const gchar *address, } static void -extract_email_record (EContactEditor *editor, gint record, gchar **address, gint *location) +extract_email_record (EContactEditor *editor, + gint record, + gchar **address, + gint *location) { GtkWidget *location_combo_box; GtkWidget *email_entry; @@ -949,7 +993,10 @@ set_ui_slot (EVCardAttribute *attr, gint slot) } static gint -alloc_ui_slot (EContactEditor *editor, const gchar *widget_base, gint preferred_slot, gint num_slots) +alloc_ui_slot (EContactEditor *editor, + const gchar *widget_base, + gint preferred_slot, + gint num_slots) { gchar *widget_name; GtkWidget *widget; @@ -1006,20 +1053,25 @@ fill_in_email (EContactEditor *editor) /* Clear */ for (record_n = 1; record_n <= EMAIL_SLOTS; record_n++) { - fill_in_email_record (editor, record_n, NULL, email_default[record_n - 1]); + fill_in_email_record ( + editor, record_n, NULL, email_default[record_n - 1]); } /* Fill in */ - email_attr_list = e_contact_get_attributes (editor->contact, E_CONTACT_EMAIL); + email_attr_list = e_contact_get_attributes ( + editor->contact, E_CONTACT_EMAIL); - for (record_n = 1, l = email_attr_list; l && record_n <= EMAIL_SLOTS; l = g_list_next (l)) { + for (record_n = 1, l = email_attr_list; + l && record_n <= EMAIL_SLOTS; l = g_list_next (l)) { EVCardAttribute *attr = l->data; gchar *email_address; gint slot; email_address = e_vcard_attribute_get_value (attr); - slot = alloc_ui_slot (editor, "entry-email", get_ui_slot (attr), EMAIL_SLOTS); + slot = alloc_ui_slot ( + editor, "entry-email", + get_ui_slot (attr), EMAIL_SLOTS); if (slot < 1) break; @@ -1049,12 +1101,14 @@ extract_email (EContactEditor *editor) if (!STRING_IS_EMPTY (address)) { EVCardAttribute *attr; - attr = e_vcard_attribute_new ("", e_contact_vcard_attribute (E_CONTACT_EMAIL)); + attr = e_vcard_attribute_new ( + "", e_contact_vcard_attribute (E_CONTACT_EMAIL)); if (location >= 0) - e_vcard_attribute_add_param_with_value (attr, - e_vcard_attribute_param_new (EVC_TYPE), - email_index_to_location (location)); + e_vcard_attribute_add_param_with_value ( + attr, + e_vcard_attribute_param_new (EVC_TYPE), + email_index_to_location (location)); e_vcard_attribute_add_value (attr, address); set_ui_slot (attr, i); @@ -1143,9 +1197,11 @@ init_item_sensitiveable_combo_box (GtkComboBox *combo) "text", 0, "sensitive", 1, NULL); } -/* EContact can get attributes by field ID only, and there is none for TEL, so we need this */ +/* EContact can get attributes by field ID only, + * and there is none for TEL, so we need this */ static GList * -get_attributes_named (EVCard *vcard, const gchar *attr_name) +get_attributes_named (EVCard *vcard, + const gchar *attr_name) { GList *attr_list_in; GList *attr_list_out = NULL; @@ -1160,16 +1216,21 @@ get_attributes_named (EVCard *vcard, const gchar *attr_name) name = e_vcard_attribute_get_name (attr); if (!g_ascii_strcasecmp (attr_name, name)) { - attr_list_out = g_list_append (attr_list_out, e_vcard_attribute_copy (attr)); + attr_list_out = g_list_append ( + attr_list_out, + e_vcard_attribute_copy (attr)); } } return attr_list_out; } -/* EContact can set attributes by field ID only, and there is none for TEL, so we need this */ +/* EContact can set attributes by field ID only, + * and there is none for TEL, so we need this */ static void -set_attributes_named (EVCard *vcard, const gchar *attr_name, GList *attr_list) +set_attributes_named (EVCard *vcard, + const gchar *attr_name, + GList *attr_list) { GList *l; @@ -1191,9 +1252,11 @@ set_arrow_image (EContactEditor *editor, arrow = e_builder_get_widget (editor->builder, arrow_widget); if (expanded) - gtk_arrow_set (GTK_ARROW (arrow), GTK_ARROW_DOWN, GTK_SHADOW_NONE); + gtk_arrow_set ( + GTK_ARROW (arrow), GTK_ARROW_DOWN, GTK_SHADOW_NONE); else - gtk_arrow_set (GTK_ARROW (arrow), GTK_ARROW_RIGHT, GTK_SHADOW_NONE); + gtk_arrow_set ( + GTK_ARROW (arrow), GTK_ARROW_RIGHT, GTK_SHADOW_NONE); } static void @@ -1275,7 +1338,10 @@ init_email (EContactEditor *editor) } static void -fill_in_phone_record (EContactEditor *editor, gint record, const gchar *phone, gint phone_type) +fill_in_phone_record (EContactEditor *editor, + gint record, + const gchar *phone, + gint phone_type) { GtkWidget *phone_type_combo_box; GtkWidget *phone_entry; @@ -1299,7 +1365,10 @@ fill_in_phone_record (EContactEditor *editor, gint record, const gchar *phone, g } static void -extract_phone_record (EContactEditor *editor, gint record, gchar **phone, gint *phone_type) +extract_phone_record (EContactEditor *editor, + gint record, + gchar **phone, + gint *phone_type) { GtkWidget *phone_type_combo_box; GtkWidget *phone_entry; @@ -1334,7 +1403,8 @@ fill_in_phone (EContactEditor *editor) phone_attr_list = get_attributes_named (E_VCARD (editor->contact), "TEL"); - for (record_n = 1, l = phone_attr_list; l && record_n <= PHONE_SLOTS; l = g_list_next (l)) { + for (record_n = 1, l = phone_attr_list; + l && record_n <= PHONE_SLOTS; l = g_list_next (l)) { EVCardAttribute *attr = l->data; gchar *phone; gint slot; @@ -1433,7 +1503,10 @@ init_phone_record_type (EContactEditor *editor, gint record) init_item_sensitiveable_combo_box (GTK_COMBO_BOX (phone_type_combo_box)); - store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (phone_type_combo_box))); + store = GTK_LIST_STORE ( + gtk_combo_box_get_model ( + GTK_COMBO_BOX (phone_type_combo_box))); + for (i = 0; i < G_N_ELEMENTS (phones); i++) { GtkTreeIter iter; @@ -1445,10 +1518,18 @@ init_phone_record_type (EContactEditor *editor, gint record) -1); } - g_signal_connect_swapped (phone_type_combo_box, "changed", G_CALLBACK (gtk_widget_grab_focus), phone_entry); - g_signal_connect (phone_type_combo_box, "changed", G_CALLBACK (object_changed), editor); - g_signal_connect (phone_entry, "changed", G_CALLBACK (object_changed), editor); - g_signal_connect_swapped (phone_entry, "activate", G_CALLBACK (entry_activated), editor); + g_signal_connect_swapped ( + phone_type_combo_box, "changed", + G_CALLBACK (gtk_widget_grab_focus), phone_entry); + g_signal_connect ( + phone_type_combo_box, "changed", + G_CALLBACK (object_changed), editor); + g_signal_connect ( + phone_entry, "changed", + G_CALLBACK (object_changed), editor); + g_signal_connect_swapped ( + phone_entry, "activate", + G_CALLBACK (entry_activated), editor); } static void @@ -1540,7 +1621,10 @@ init_im_record_location (EContactEditor *editor, gint record) init_item_sensitiveable_combo_box (GTK_COMBO_BOX (location_combo_box)); - store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (location_combo_box))); + store = GTK_LIST_STORE ( + gtk_combo_box_get_model ( + GTK_COMBO_BOX (location_combo_box))); + for (i = 0; i < G_N_ELEMENTS (common_location); i++) { GtkTreeIter iter; @@ -1552,7 +1636,9 @@ init_im_record_location (EContactEditor *editor, gint record) -1); } - g_signal_connect (location_combo_box, "changed", G_CALLBACK (object_changed), editor); + g_signal_connect ( + location_combo_box, "changed", + G_CALLBACK (object_changed), editor); #endif } @@ -1580,7 +1666,10 @@ init_im_record_service (EContactEditor *editor, gint record) init_item_sensitiveable_combo_box (GTK_COMBO_BOX (service_combo_box)); - store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (service_combo_box))); + store = GTK_LIST_STORE ( + gtk_combo_box_get_model ( + GTK_COMBO_BOX (service_combo_box))); + for (i = 0; i < G_N_ELEMENTS (im_service); i++) { GtkTreeIter iter; @@ -1592,10 +1681,18 @@ init_im_record_service (EContactEditor *editor, gint record) -1); } - g_signal_connect_swapped (service_combo_box, "changed", G_CALLBACK (gtk_widget_grab_focus), name_entry); - g_signal_connect (service_combo_box, "changed", G_CALLBACK (object_changed), editor); - g_signal_connect (name_entry, "changed", G_CALLBACK (object_changed), editor); - g_signal_connect_swapped (name_entry, "activate", G_CALLBACK (entry_activated), editor); + g_signal_connect_swapped ( + service_combo_box, "changed", + G_CALLBACK (gtk_widget_grab_focus), name_entry); + g_signal_connect ( + service_combo_box, "changed", + G_CALLBACK (object_changed), editor); + g_signal_connect ( + name_entry, "changed", + G_CALLBACK (object_changed), editor); + g_signal_connect_swapped ( + name_entry, "activate", + G_CALLBACK (entry_activated), editor); } static void @@ -1610,7 +1707,11 @@ init_im (EContactEditor *editor) } static void -fill_in_im_record (EContactEditor *editor, gint record, gint service, const gchar *name, gint location) +fill_in_im_record (EContactEditor *editor, + gint record, + gint service, + const gchar *name, + gint location) { GtkWidget *service_combo_box; #ifdef ENABLE_IM_LOCATION @@ -1685,7 +1786,11 @@ fill_in_im (EContactEditor *editor) } static void -extract_im_record (EContactEditor *editor, gint record, gint *service, gchar **name, gint *location) +extract_im_record (EContactEditor *editor, + gint record, + gint *service, + gchar **name, + gint *location) { GtkWidget *service_combo_box; #ifdef ENABLE_IM_LOCATION @@ -1735,12 +1840,15 @@ extract_im (EContactEditor *editor) extract_im_record (editor, i, &service, &name, &location); if (!STRING_IS_EMPTY (name)) { - attr = e_vcard_attribute_new ("", e_contact_vcard_attribute (im_service [service].field)); + attr = e_vcard_attribute_new ( + "", e_contact_vcard_attribute ( + im_service[service].field)); if (location >= 0) - e_vcard_attribute_add_param_with_value (attr, - e_vcard_attribute_param_new (EVC_TYPE), - im_index_to_location (location)); + e_vcard_attribute_add_param_with_value ( + attr, + e_vcard_attribute_param_new (EVC_TYPE), + im_index_to_location (location)); e_vcard_attribute_add_value (attr, name); set_ui_slot (attr, i); @@ -1759,11 +1867,15 @@ extract_im (EContactEditor *editor) /* Splice in the old attributes, minus the filled_in_slots first */ - old_service_attr_list = e_contact_get_attributes (editor->contact, im_service[i].field); - filled_in_slots = MIN (remaining_slots, g_list_length (old_service_attr_list)); + old_service_attr_list = e_contact_get_attributes ( + editor->contact, im_service[i].field); + filled_in_slots = + MIN (remaining_slots, + g_list_length (old_service_attr_list)); remaining_slots -= filled_in_slots; - for (l = old_service_attr_list, j = 0; l && j < filled_in_slots; l = l_next, j++) { + for (l = old_service_attr_list, j = 0; + l && j < filled_in_slots; l = l_next, j++) { l_next = g_list_next (l); e_vcard_attribute_free (l->data); @@ -1771,7 +1883,8 @@ extract_im (EContactEditor *editor) } old_service_attr_list = l; - service_attr_list[i] = g_list_concat (service_attr_list[i], old_service_attr_list); + service_attr_list[i] = g_list_concat ( + service_attr_list[i], old_service_attr_list); e_contact_set_attributes ( editor->contact, @@ -1879,30 +1992,41 @@ init_personal (EContactEditor *editor) static void init_address_textview (EContactEditor *editor, gint record) { - gchar *textview_name; - GtkWidget *textview; + gchar *textview_name; + GtkWidget *textview; GtkTextBuffer *text_buffer; - textview_name = g_strdup_printf ("textview-%s-address", address_name [record]); + textview_name = g_strdup_printf ( + "textview-%s-address", address_name [record]); textview = e_builder_get_widget (editor->builder, textview_name); g_free (textview_name); text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)); - g_signal_connect (text_buffer, "changed", G_CALLBACK (object_changed), editor); + + g_signal_connect ( + text_buffer, "changed", + G_CALLBACK (object_changed), editor); } static void -init_address_field (EContactEditor *editor, gint record, const gchar *widget_field_name) +init_address_field (EContactEditor *editor, + gint record, + const gchar *widget_field_name) { - gchar *entry_name; + gchar *entry_name; GtkWidget *entry; - entry_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name); + entry_name = g_strdup_printf ( + "entry-%s-%s", address_name [record], widget_field_name); entry = e_builder_get_widget (editor->builder, entry_name); g_free (entry_name); - g_signal_connect (entry, "changed", G_CALLBACK (object_changed), editor); - g_signal_connect_swapped (entry, "activate", G_CALLBACK (entry_activated), editor); + g_signal_connect ( + entry, "changed", + G_CALLBACK (object_changed), editor); + g_signal_connect_swapped ( + entry, "activate", + G_CALLBACK (entry_activated), editor); } static void @@ -1931,7 +2055,9 @@ init_address (EContactEditor *editor) } static void -fill_in_address_textview (EContactEditor *editor, gint record, EContactAddress *address) +fill_in_address_textview (EContactEditor *editor, + gint record, + EContactAddress *address) { gchar *textview_name; GtkWidget *textview; @@ -1957,7 +2083,9 @@ fill_in_address_textview (EContactEditor *editor, gint record, EContactAddress * } static void -fill_in_address_label_textview (EContactEditor *editor, gint record, const gchar *label) +fill_in_address_label_textview (EContactEditor *editor, + gint record, + const gchar *label) { gchar *textview_name; GtkWidget *textview; @@ -1980,7 +2108,8 @@ fill_in_address_field (EContactEditor *editor, gchar *entry_name; GtkWidget *entry; - entry_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name); + entry_name = g_strdup_printf ( + "entry-%s-%s", address_name [record], widget_field_name); entry = e_builder_get_widget (editor->builder, entry_name); g_free (entry_name); @@ -1988,7 +2117,8 @@ fill_in_address_field (EContactEditor *editor, } static void -fill_in_address_record (EContactEditor *editor, gint record) +fill_in_address_record (EContactEditor *editor, + gint record) { EContactAddress *address; gchar *address_label; @@ -2029,7 +2159,9 @@ fill_in_address (EContactEditor *editor) } static void -extract_address_textview (EContactEditor *editor, gint record, EContactAddress *address) +extract_address_textview (EContactEditor *editor, + gint record, + EContactAddress *address) { gchar *textview_name; GtkWidget *textview; @@ -2070,12 +2202,15 @@ extract_address_textview (EContactEditor *editor, gint record, EContactAddress * } static gchar * -extract_address_field (EContactEditor *editor, gint record, const gchar *widget_field_name) +extract_address_field (EContactEditor *editor, + gint record, + const gchar *widget_field_name) { gchar *entry_name; GtkWidget *entry; - entry_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name); + entry_name = g_strdup_printf ( + "entry-%s-%s", address_name [record], widget_field_name); entry = e_builder_get_widget (editor->builder, entry_name); g_free (entry_name); @@ -2083,7 +2218,9 @@ extract_address_field (EContactEditor *editor, gint record, const gchar *widget_ } static gchar * -append_to_address_label (gchar *address_label, const gchar *part, gboolean newline) +append_to_address_label (gchar *address_label, + const gchar *part, + gboolean newline) { gchar *new_address_label; @@ -2091,7 +2228,9 @@ append_to_address_label (gchar *address_label, const gchar *part, gboolean newli return address_label; if (address_label) - new_address_label = g_strjoin (newline ? "\n" : ", ", address_label, part, NULL); + new_address_label = g_strjoin ( + newline ? "\n" : ", ", + address_label, part, NULL); else new_address_label = g_strdup (part); @@ -2100,18 +2239,27 @@ append_to_address_label (gchar *address_label, const gchar *part, gboolean newli } static void -set_address_label (EContact *contact, EContactField field, EContactAddress *address) +set_address_label (EContact *contact, + EContactField field, + EContactAddress *address) { gchar *address_label = NULL; if (address) { - address_label = append_to_address_label (address_label, address->street, TRUE); - address_label = append_to_address_label (address_label, address->ext, TRUE); - address_label = append_to_address_label (address_label, address->locality, TRUE); - address_label = append_to_address_label (address_label, address->region, FALSE); - address_label = append_to_address_label (address_label, address->code, TRUE); - address_label = append_to_address_label (address_label, address->po, TRUE); - address_label = append_to_address_label (address_label, address->country, TRUE); + address_label = append_to_address_label ( + address_label, address->street, TRUE); + address_label = append_to_address_label ( + address_label, address->ext, TRUE); + address_label = append_to_address_label ( + address_label, address->locality, TRUE); + address_label = append_to_address_label ( + address_label, address->region, FALSE); + address_label = append_to_address_label ( + address_label, address->code, TRUE); + address_label = append_to_address_label ( + address_label, address->po, TRUE); + address_label = append_to_address_label ( + address_label, address->country, TRUE); } e_contact_set (contact, field, address_label); @@ -2160,7 +2308,9 @@ extract_address (EContactEditor *editor) } static void -sensitize_address_textview (EContactEditor *editor, gint record, gboolean enabled) +sensitize_address_textview (EContactEditor *editor, + gint record, + gboolean enabled) { gchar *widget_name; GtkWidget *textview; @@ -2188,11 +2338,13 @@ sensitize_address_field (EContactEditor *editor, GtkWidget *entry; GtkWidget *label; - widget_name = g_strdup_printf ("entry-%s-%s", address_name [record], widget_field_name); + widget_name = g_strdup_printf ( + "entry-%s-%s", address_name [record], widget_field_name); entry = e_builder_get_widget (editor->builder, widget_name); g_free (widget_name); - widget_name = g_strdup_printf ("label-%s-%s", address_name [record], widget_field_name); + widget_name = g_strdup_printf ( + "label-%s-%s", address_name [record], widget_field_name); label = e_builder_get_widget (editor->builder, widget_name); g_free (widget_name); @@ -2316,34 +2468,40 @@ init_simple_field (EContactEditor *editor, GtkWidget *widget) if (GTK_IS_ENTRY (widget)) { changed_object = G_OBJECT (widget); - g_signal_connect_swapped (widget, "activate", G_CALLBACK (entry_activated), editor); - } - else if (GTK_IS_COMBO_BOX (widget)) { - changed_object = G_OBJECT (/*gtk_bin_get_child (GTK_BIN*/ (widget)/*)*/); - g_signal_connect_swapped (gtk_bin_get_child (GTK_BIN (widget)), "activate", G_CALLBACK (entry_activated), editor); - } - else if (GTK_IS_TEXT_VIEW (widget)) { - changed_object = G_OBJECT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget))); - } - else if (E_IS_URL_ENTRY (widget)) { - changed_object = G_OBJECT (e_url_entry_get_entry (E_URL_ENTRY (widget))); + g_signal_connect_swapped ( + widget, "activate", + G_CALLBACK (entry_activated), editor); + } else if (GTK_IS_COMBO_BOX (widget)) { + changed_object = G_OBJECT (widget); + g_signal_connect_swapped ( + gtk_bin_get_child (GTK_BIN (widget)), "activate", + G_CALLBACK (entry_activated), editor); + } else if (GTK_IS_TEXT_VIEW (widget)) { + changed_object = G_OBJECT ( + gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget))); + } else if (E_IS_URL_ENTRY (widget)) { + changed_object = G_OBJECT ( + e_url_entry_get_entry (E_URL_ENTRY (widget))); g_signal_connect_swapped ( changed_object, "activate", G_CALLBACK (entry_activated), editor); - } - else if (E_IS_DATE_EDIT (widget)) { + } else if (E_IS_DATE_EDIT (widget)) { changed_object = G_OBJECT (widget); - } - else if (E_IS_IMAGE_CHOOSER (widget)) { + } else if (E_IS_IMAGE_CHOOSER (widget)) { changed_object = G_OBJECT (widget); - g_signal_connect (widget, "changed", G_CALLBACK (image_chooser_changed), editor); - } - else if (GTK_IS_TOGGLE_BUTTON (widget)) { - g_signal_connect (widget, "toggled", G_CALLBACK (object_changed), editor); + g_signal_connect ( + widget, "changed", + G_CALLBACK (image_chooser_changed), editor); + } else if (GTK_IS_TOGGLE_BUTTON (widget)) { + g_signal_connect ( + widget, "toggled", + G_CALLBACK (object_changed), editor); } if (changed_object) - g_signal_connect (changed_object, "changed", G_CALLBACK (object_changed), editor); + g_signal_connect ( + changed_object, "changed", + G_CALLBACK (object_changed), editor); } static void @@ -2363,7 +2521,9 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) } else if (GTK_IS_COMBO_BOX (widget)) { gchar *text = e_contact_get (contact, field_id); - gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (widget))), STRING_MAKE_NON_NULL (text)); + gtk_entry_set_text ( + GTK_ENTRY (gtk_bin_get_child (GTK_BIN (widget))), + STRING_MAKE_NON_NULL (text)); g_free (text); } else if (GTK_IS_TEXT_VIEW (widget)) { @@ -2392,14 +2552,19 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) else if (E_IS_IMAGE_CHOOSER (widget)) { EContactPhoto *photo = e_contact_get (contact, field_id); if (photo && photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { - e_image_chooser_set_image_data (E_IMAGE_CHOOSER (widget), - (gchar *) photo->data.inlined.data, - photo->data.inlined.length); + e_image_chooser_set_image_data ( + E_IMAGE_CHOOSER (widget), + (gchar *) photo->data.inlined.data, + photo->data.inlined.length); editor->image_set = TRUE; } else { - gchar *file_name = e_icon_factory_get_icon_filename ("avatar-default", GTK_ICON_SIZE_DIALOG); - e_image_chooser_set_from_file (E_IMAGE_CHOOSER (widget), file_name); + gchar *file_name; + + file_name = e_icon_factory_get_icon_filename ( + "avatar-default", GTK_ICON_SIZE_DIALOG); + e_image_chooser_set_from_file ( + E_IMAGE_CHOOSER (widget), file_name); editor->image_set = FALSE; g_free (file_name); } @@ -2442,7 +2607,11 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) gchar *text = NULL; if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter)) { - GtkListStore *store = GTK_LIST_STORE (gtk_combo_box_get_model (GTK_COMBO_BOX (widget))); + GtkListStore *store; + + store = GTK_LIST_STORE ( + gtk_combo_box_get_model ( + GTK_COMBO_BOX (widget))); gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &text, @@ -2496,7 +2665,10 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) photo.data.inlined.data = (guchar *) img_buff; img_buff = NULL; - gdk_pixbuf_loader_write (loader, photo.data.inlined.data, photo.data.inlined.length, NULL); + gdk_pixbuf_loader_write ( + loader, + photo.data.inlined.data, + photo.data.inlined.length, NULL); gdk_pixbuf_loader_close (loader, NULL); pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); @@ -2526,12 +2698,15 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) new = e_icon_factory_pixbuf_scale (pixbuf, width, height); if (new) { - GdkPixbufFormat *format = gdk_pixbuf_loader_get_format (loader); - gchar *format_name = gdk_pixbuf_format_get_name (format); + GdkPixbufFormat *format = + gdk_pixbuf_loader_get_format (loader); + gchar *format_name = + gdk_pixbuf_format_get_name (format); g_free (photo.data.inlined.data); - gdk_pixbuf_save_to_buffer (new, &img_buff, - &photo.data.inlined.length, - format_name, NULL, NULL); + gdk_pixbuf_save_to_buffer ( + new, &img_buff, + &photo.data.inlined.length, + format_name, NULL, NULL); photo.data.inlined.data = (guchar *) img_buff; img_buff = NULL; g_free (format_name); @@ -2987,7 +3162,8 @@ image_selected (EContactEditor *editor) gchar *file_name; GtkWidget *image_chooser; - file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (editor->file_selector)); + file_name = gtk_file_chooser_get_filename ( + GTK_FILE_CHOOSER (editor->file_selector)); if (!file_name) return; @@ -3009,13 +3185,18 @@ image_cleared (EContactEditor *editor) GtkWidget *image_chooser; gchar *file_name; - image_chooser = e_builder_get_widget (editor->builder, "image-chooser"); + image_chooser = e_builder_get_widget ( + editor->builder, "image-chooser"); - file_name = e_icon_factory_get_icon_filename ("avatar-default", GTK_ICON_SIZE_DIALOG); + file_name = e_icon_factory_get_icon_filename ( + "avatar-default", GTK_ICON_SIZE_DIALOG); - g_signal_handlers_block_by_func (image_chooser, image_chooser_changed, editor); - e_image_chooser_set_from_file (E_IMAGE_CHOOSER (image_chooser), file_name); - g_signal_handlers_unblock_by_func (image_chooser, image_chooser_changed, editor); + g_signal_handlers_block_by_func ( + image_chooser, image_chooser_changed, editor); + e_image_chooser_set_from_file ( + E_IMAGE_CHOOSER (image_chooser), file_name); + g_signal_handlers_unblock_by_func ( + image_chooser, image_chooser_changed, editor); g_free (file_name); @@ -3058,9 +3239,11 @@ update_preview_cb (GtkFileChooser *file_chooser, gpointer data) pixbuf = gdk_pixbuf_new_from_file_at_size (filename, 128, 128, NULL); if (!pixbuf) { gchar *alternate_file; - alternate_file = e_icon_factory_get_icon_filename ("avatar-default", GTK_ICON_SIZE_DIALOG); + alternate_file = e_icon_factory_get_icon_filename ( + "avatar-default", GTK_ICON_SIZE_DIALOG); if (alternate_file) { - pixbuf = gdk_pixbuf_new_from_file_at_size (alternate_file, 128, 128, NULL); + pixbuf = gdk_pixbuf_new_from_file_at_size ( + alternate_file, 128, 128, NULL); g_free (alternate_file); } } @@ -3087,13 +3270,19 @@ image_clicked (GtkWidget *button, EContactEditor *editor) no_image, GTK_RESPONSE_NO, NULL); preview = GTK_IMAGE (gtk_image_new ()); - gtk_file_chooser_set_preview_widget ((GtkFileChooser *) editor->file_selector, GTK_WIDGET (preview)); + gtk_file_chooser_set_preview_widget ( + GTK_FILE_CHOOSER (editor->file_selector), + GTK_WIDGET (preview)); g_signal_connect ( editor->file_selector, "update-preview", G_CALLBACK (update_preview_cb), preview); - gtk_dialog_set_default_response (GTK_DIALOG (editor->file_selector), GTK_RESPONSE_ACCEPT); + gtk_dialog_set_default_response ( + GTK_DIALOG (editor->file_selector), + GTK_RESPONSE_ACCEPT); - gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (editor->file_selector), g_get_home_dir ()); + gtk_file_chooser_set_current_folder ( + GTK_FILE_CHOOSER (editor->file_selector), + g_get_home_dir ()); g_signal_connect ( editor->file_selector, "response", @@ -3151,7 +3340,10 @@ contact_moved_cb (EBook *book, const GError *error, EditorCloseStruct *ecs) } static void -contact_added_cb (EBook *book, const GError *error, const gchar *id, EditorCloseStruct *ecs) +contact_added_cb (EBook *book, + const GError *error, + const gchar *id, + EditorCloseStruct *ecs) { EContactEditor *ce = ecs->ce; gboolean should_close = ecs->should_close; @@ -3264,7 +3456,8 @@ save_contact (EContactEditor *ce, gboolean should_close) } entry_fullname = e_builder_get_widget (ce->builder, "entry-fullname" ); - entry_file_as = gtk_bin_get_child (GTK_BIN (e_builder_get_widget (ce->builder, "combo-file-as"))); + entry_file_as = gtk_bin_get_child ( + GTK_BIN (e_builder_get_widget (ce->builder, "combo-file-as"))); company_name = e_builder_get_widget (ce->builder, "entry-company"); name_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_fullname)); file_as_entry_string = gtk_entry_get_text (GTK_ENTRY (entry_file_as)); @@ -3629,7 +3822,8 @@ e_contact_editor_init (EContactEditor *e_contact_editor) widget = e_contact_editor->app; gtk_widget_ensure_style (widget); - gtk_window_set_type_hint (GTK_WINDOW (widget), GDK_WINDOW_TYPE_HINT_NORMAL); + gtk_window_set_type_hint ( + GTK_WINDOW (widget), GDK_WINDOW_TYPE_HINT_NORMAL); container = gtk_dialog_get_action_area (GTK_DIALOG (widget)); gtk_container_set_border_width (GTK_CONTAINER (container), 12); container = gtk_dialog_get_content_area (GTK_DIALOG (widget)); @@ -3637,30 +3831,61 @@ e_contact_editor_init (EContactEditor *e_contact_editor) init_all (e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "button-image"); - g_signal_connect (widget, "clicked", G_CALLBACK (image_clicked), e_contact_editor); - - widget = e_builder_get_widget(e_contact_editor->builder, "button-fullname"); - g_signal_connect (widget, "clicked", G_CALLBACK (full_name_clicked), e_contact_editor); - widget = e_builder_get_widget(e_contact_editor->builder, "button-categories"); - g_signal_connect (widget, "clicked", G_CALLBACK (categories_clicked), e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "source-combo-box-source"); - e_util_set_source_combo_box_list (widget, "/apps/evolution/addressbook/sources"); - g_signal_connect (widget, "changed", G_CALLBACK (source_changed), e_contact_editor); - label = e_builder_get_widget (e_contact_editor->builder, "where-label"); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-image"); + g_signal_connect ( + widget, "clicked", + G_CALLBACK (image_clicked), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-fullname"); + g_signal_connect ( + widget, "clicked", + G_CALLBACK (full_name_clicked), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-categories"); + g_signal_connect ( + widget, "clicked", + G_CALLBACK (categories_clicked), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "source-combo-box-source"); + e_util_set_source_combo_box_list ( + widget, "/apps/evolution/addressbook/sources"); + g_signal_connect ( + widget, "changed", + G_CALLBACK (source_changed), e_contact_editor); + label = e_builder_get_widget ( + e_contact_editor->builder, "where-label"); gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); - widget = e_builder_get_widget (e_contact_editor->builder, "button-ok"); - g_signal_connect (widget, "clicked", G_CALLBACK (file_save_and_close_cb), e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "button-cancel"); - g_signal_connect (widget, "clicked", G_CALLBACK (file_cancel_cb), e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "button-help"); - g_signal_connect (widget, "clicked", G_CALLBACK (show_help_cb), e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "button-web-expand"); - g_signal_connect_swapped (widget, "clicked", G_CALLBACK (expand_web_toggle), e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "button-phone-expand"); - g_signal_connect_swapped (widget, "clicked", G_CALLBACK (expand_phone_toggle), e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "button-mail-expand"); - g_signal_connect_swapped (widget, "clicked", G_CALLBACK (expand_mail_toggle), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-ok"); + g_signal_connect ( + widget, "clicked", + G_CALLBACK (file_save_and_close_cb), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-cancel"); + g_signal_connect ( + widget, "clicked", + G_CALLBACK (file_cancel_cb), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-help"); + g_signal_connect ( + widget, "clicked", + G_CALLBACK (show_help_cb), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-web-expand"); + g_signal_connect_swapped ( + widget, "clicked", + G_CALLBACK (expand_web_toggle), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-phone-expand"); + g_signal_connect_swapped ( + widget, "clicked", + G_CALLBACK (expand_phone_toggle), e_contact_editor); + widget = e_builder_get_widget ( + e_contact_editor->builder, "button-mail-expand"); + g_signal_connect_swapped ( + widget, "clicked", + G_CALLBACK (expand_mail_toggle), e_contact_editor); widget = e_builder_get_widget (e_contact_editor->builder, "entry-fullname"); if (widget) @@ -3715,7 +3940,9 @@ e_contact_editor_dispose (GObject *object) } if (e_contact_editor->target_book) { - g_signal_handler_disconnect (e_contact_editor->target_book, e_contact_editor->target_editable_id); + g_signal_handler_disconnect ( + e_contact_editor->target_book, + e_contact_editor->target_editable_id); g_object_unref (e_contact_editor->target_book); e_contact_editor->target_book = NULL; } @@ -3746,7 +3973,9 @@ supported_fields_cb (EBook *book, EContactEditor *ce) { if (!g_slist_find (eab_editor_get_all_editors (), ce)) { - g_warning ("supported_fields_cb called for book that's still around, but contact editor that's been destroyed."); + g_warning ( + "supported_fields_cb called for book that's still " + "around, but contact editor that's been destroyed."); return; } @@ -3765,7 +3994,9 @@ required_fields_cb (EBook *book, { if (!g_slist_find (eab_editor_get_all_editors (), ce)) { - g_warning ("supported_fields_cb called for book that's still around, but contact editor that's been destroyed."); + g_warning ( + "supported_fields_cb called for book that's still " + "around, but contact editor that's been destroyed."); return; } @@ -3798,7 +4029,8 @@ e_contact_editor_new (EShell *shell, if (book) e_book_get_supported_fields_async ( - book, (EBookEListAsyncCallback) supported_fields_cb, editor); + book, (EBookEListAsyncCallback) + supported_fields_cb, editor); return editor; } @@ -3821,7 +4053,10 @@ writable_changed (EBook *book, gboolean writable, EContactEditor *ce) } static void -e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) +e_contact_editor_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { EContactEditor *editor; @@ -3930,11 +4165,11 @@ e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *val break; case PROP_IS_NEW_CONTACT: - editor->is_new_contact = g_value_get_boolean (value) ? TRUE : FALSE; + editor->is_new_contact = g_value_get_boolean (value); break; case PROP_EDITABLE: { - gboolean new_value = g_value_get_boolean (value) ? TRUE : FALSE; + gboolean new_value = g_value_get_boolean (value); gboolean changed = (editor->target_editable != new_value); editor->target_editable = new_value; @@ -3945,7 +4180,7 @@ e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *val } case PROP_CHANGED: { - gboolean new_value = g_value_get_boolean (value) ? TRUE : FALSE; + gboolean new_value = g_value_get_boolean (value); gboolean changed = (editor->changed != new_value); editor->changed = new_value; @@ -3982,7 +4217,10 @@ e_contact_editor_set_property (GObject *object, guint prop_id, const GValue *val } static void -e_contact_editor_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +e_contact_editor_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { EContactEditor *e_contact_editor; @@ -4003,26 +4241,33 @@ e_contact_editor_get_property (GObject *object, guint prop_id, GValue *value, GP break; case PROP_IS_NEW_CONTACT: - g_value_set_boolean (value, e_contact_editor->is_new_contact ? TRUE : FALSE); + g_value_set_boolean ( + value, e_contact_editor->is_new_contact); break; case PROP_EDITABLE: - g_value_set_boolean (value, e_contact_editor->target_editable ? TRUE : FALSE); + g_value_set_boolean ( + value, e_contact_editor->target_editable); break; case PROP_CHANGED: - g_value_set_boolean (value, e_contact_editor->changed ? TRUE : FALSE); + g_value_set_boolean ( + value, e_contact_editor->changed); break; case PROP_WRITABLE_FIELDS: if (e_contact_editor->writable_fields) - g_value_set_object (value, e_list_duplicate (e_contact_editor->writable_fields)); + g_value_set_object ( + value, e_list_duplicate ( + e_contact_editor->writable_fields)); else g_value_set_object (value, NULL); break; case PROP_REQUIRED_FIELDS: if (e_contact_editor->required_fields) - g_value_set_object (value, e_list_duplicate (e_contact_editor->required_fields)); + g_value_set_object ( + value, e_list_duplicate ( + e_contact_editor->required_fields)); else g_value_set_object (value, NULL); break; diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 76a7e5f0cb..cc74968509 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -201,14 +201,19 @@ editor_closed_cb (GtkWidget *w, gpointer closure) } static void -ce_have_contact (EBook *book, const GError *error, EContact *contact, gpointer closure) +ce_have_contact (EBook *book, + const GError *error, + EContact *contact, + gpointer closure) { QuickAdd *qa = (QuickAdd *) closure; if (error) { if (book) g_object_unref (book); - g_warning ("Failed to find contact, status %d (%s).", error->code, error->message); + g_warning ( + "Failed to find contact, status %d (%s).", + error->code, error->message); quick_add_unref (qa); } else { EShell *shell; @@ -304,20 +309,21 @@ clicked_cb (GtkWidget *w, gint button, gpointer closure) gchar *name = NULL; gchar *email = NULL; - if (qa->name_entry) { - gchar *tmp; - tmp = gtk_editable_get_chars (GTK_EDITABLE (qa->name_entry), 0, -1); - name = tmp; - } + if (qa->name_entry) + name = gtk_editable_get_chars ( + GTK_EDITABLE (qa->name_entry), 0, -1); - if (qa->email_entry) { - gchar *tmp; - tmp = gtk_editable_get_chars (GTK_EDITABLE (qa->email_entry), 0, -1); - email = tmp; - } + if (qa->email_entry) + email = gtk_editable_get_chars ( + GTK_EDITABLE (qa->email_entry), 0, -1); + + e_contact_set ( + qa->contact, E_CONTACT_FULL_NAME, + (gpointer) (name != NULL) ? name : ""); - e_contact_set (qa->contact, E_CONTACT_FULL_NAME, (gpointer) (name ? name : "")); - e_contact_set (qa->contact, E_CONTACT_EMAIL_1, (gpointer) (email ? email : "")); + e_contact_set ( + qa->contact, E_CONTACT_EMAIL_1, + (gpointer) (email != NULL) ? email : ""); g_free (name); g_free (email); diff --git a/addressbook/gui/contact-editor/test-editor.c b/addressbook/gui/contact-editor/test-editor.c index 3078aaaaec..857d6ff291 100644 --- a/addressbook/gui/contact-editor/test-editor.c +++ b/addressbook/gui/contact-editor/test-editor.c @@ -76,7 +76,8 @@ editor_closed_cb (EContactEditor *ce, gpointer data) exit (0); } -gint main ( gint argc, gchar *argv[] ) +gint +main (gint argc, gchar *argv[]) { gchar *cardstr; EContactEditor *ce; @@ -90,13 +91,19 @@ gint main ( gint argc, gchar *argv[] ) if (cardstr == NULL) cardstr = TEST_VCARD; - ce = e_contact_editor_new (NULL, e_card_new_with_default_charset (cardstr, "ISO-8859-1"), TRUE, FALSE); - g_signal_connect (ce, "editor_closed", - G_CALLBACK (editor_closed_cb), NULL); - - ce = e_contact_editor_new (NULL, e_card_new_with_default_charset (cardstr, "ISO-8859-1"), TRUE, FALSE); - g_signal_connect (ce, "editor_closed", - G_CALLBACK (editor_closed_cb), NULL); + ce = e_contact_editor_new ( + NULL, e_card_new_with_default_charset ( + cardstr, "ISO-8859-1"), TRUE, FALSE); + g_signal_connect ( + ce, "editor_closed", + G_CALLBACK (editor_closed_cb), NULL); + + ce = e_contact_editor_new ( + NULL, e_card_new_with_default_charset ( + cardstr, "ISO-8859-1"), TRUE, FALSE); + g_signal_connect ( + ce, "editor_closed", + G_CALLBACK (editor_closed_cb), NULL); gtk_main (); diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 8e62e40d28..3be37f26f0 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -757,7 +757,8 @@ e_addressbook_model_stop (EAddressbookModel *model) g_signal_emit (model, signals[STATUS_MESSAGE], 0, message); if (!model->priv->remove_status_id) - model->priv->remove_status_id = g_timeout_add_seconds (3, remove_status_cb, model); + model->priv->remove_status_id = + g_timeout_add_seconds (3, remove_status_cb, model); } gboolean diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index 017b14ac19..48daaaaf6b 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -557,7 +557,8 @@ e_addressbook_reflow_adapter_get_type (void) (GInstanceInitFunc) e_addressbook_reflow_adapter_init, }; - type = g_type_register_static (PARENT_TYPE, "EAddressbookReflowAdapter", &info, 0); + type = g_type_register_static ( + PARENT_TYPE, "EAddressbookReflowAdapter", &info, 0); } return type; diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index 83f90a0573..e60ae924e7 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -185,7 +185,8 @@ addressbook_set_value_at (ETableModel *etc, gint col, gint row, gconstpointer va g_object_unref (contact); - /* XXX do we need this? shouldn't the commit_contact generate a changed signal? */ + /* XXX Do we need this? Shouldn't the commit_contact + * generate a changed signal? */ e_table_model_cell_changed (etc, col, row); } } @@ -377,7 +378,8 @@ eab_table_adapter_get_type (void) (GInstanceInitFunc) eab_table_adapter_init, }; - type = g_type_register_static (PARENT_TYPE, "EAddressbookTableAdapter", &info, 0); + type = g_type_register_static ( + PARENT_TYPE, "EAddressbookTableAdapter", &info, 0); } return type; diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index 945639f70b..3f8dd1ff28 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -30,16 +30,31 @@ #include "e-util/e-util.h" #include "e-minicard-view-widget.h" -static void e_minicard_view_widget_init (EMinicardViewWidget *widget); -static void e_minicard_view_widget_class_init (EMinicardViewWidgetClass *class); -static void e_minicard_view_widget_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void e_minicard_view_widget_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void e_minicard_view_widget_dispose (GObject *object); -static void e_minicard_view_widget_reflow (ECanvas *canvas); -static void e_minicard_view_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static void e_minicard_view_widget_style_set (GtkWidget *widget, GtkStyle *previous_style); -static void e_minicard_view_widget_realize (GtkWidget *widget); -static gboolean e_minicard_view_widget_real_focus_in_event (GtkWidget *widget, GdkEventFocus *event); +static void e_minicard_view_widget_init (EMinicardViewWidget *widget); +static void e_minicard_view_widget_class_init + (EMinicardViewWidgetClass *class); +static void e_minicard_view_widget_set_property + (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void e_minicard_view_widget_get_property + (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void e_minicard_view_widget_dispose (GObject *object); +static void e_minicard_view_widget_reflow (ECanvas *canvas); +static void e_minicard_view_widget_size_allocate + (GtkWidget *widget, + GtkAllocation *allocation); +static void e_minicard_view_widget_style_set + (GtkWidget *widget, + GtkStyle *previous_style); +static void e_minicard_view_widget_realize (GtkWidget *widget); +static gboolean e_minicard_view_widget_real_focus_in_event + (GtkWidget *widget, + GdkEventFocus *event); static gpointer parent_class; @@ -81,7 +96,8 @@ e_minicard_view_widget_get_type (void) (GInstanceInitFunc) e_minicard_view_widget_init, }; - type = g_type_register_static (e_canvas_get_type (), "EMinicardViewWidget", &info, 0); + type = g_type_register_static ( + E_TYPE_CANVAS, "EMinicardViewWidget", &info, 0); } return type; @@ -202,10 +218,11 @@ e_minicard_view_widget_init (EMinicardViewWidget *view) GtkWidget * e_minicard_view_widget_new (EAddressbookReflowAdapter *adapter) { - EMinicardViewWidget *widget = E_MINICARD_VIEW_WIDGET (g_object_new (e_minicard_view_widget_get_type (), NULL)); + EMinicardViewWidget *widget; - widget->adapter = adapter; - g_object_ref (widget->adapter); + widget = g_object_new (E_TYPE_MINICARD_VIEW_WIDGET, NULL); + + widget->adapter = g_object_ref (adapter); return GTK_WIDGET (widget); } @@ -418,7 +435,8 @@ e_minicard_view_widget_realize (GtkWidget *widget) } static void -e_minicard_view_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation) +e_minicard_view_widget_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) { if (GTK_WIDGET_CLASS (parent_class)->size_allocate) GTK_WIDGET_CLASS (parent_class)->size_allocate (widget, allocation); @@ -427,17 +445,17 @@ e_minicard_view_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocati gdouble width; EMinicardViewWidget *view = E_MINICARD_VIEW_WIDGET (widget); - gnome_canvas_item_set ( view->emv, - "height", (double) allocation->height, - NULL ); - gnome_canvas_item_set ( view->emv, - "minimum_width", (double) allocation->width, - NULL ); - g_object_get (view->emv, - "width", &width, - NULL); + gnome_canvas_item_set ( + view->emv, "height", + (gdouble) allocation->height, NULL); + gnome_canvas_item_set ( + view->emv, "minimum_width", + (gdouble) allocation->width, NULL); + g_object_get (view->emv, "width", &width, NULL); width = MAX (width, allocation->width); - gnome_canvas_set_scroll_region (GNOME_CANVAS (view), 0, 0, width - 1, allocation->height - 1); + gnome_canvas_set_scroll_region ( + GNOME_CANVAS (view), 0, 0, + width - 1, allocation->height - 1); } } diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index 9be446d818..880bf92dcb 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -147,10 +147,9 @@ e_minicard_view_drag_begin (EAddressbookReflowAdapter *adapter, target_list, actions, 1/*XXX*/, event); if (!view->canvas_drag_data_get_id) - view->canvas_drag_data_get_id = g_signal_connect (GNOME_CANVAS_ITEM (view)->canvas, - "drag_data_get", - G_CALLBACK (e_minicard_view_drag_data_get), - view); + view->canvas_drag_data_get_id = g_signal_connect ( + GNOME_CANVAS_ITEM (view)->canvas, "drag_data_get", + G_CALLBACK (e_minicard_view_drag_data_get), view); gtk_drag_set_icon_default (context); diff --git a/addressbook/gui/widgets/e-minicard.h b/addressbook/gui/widgets/e-minicard.h index 0fffe444ea..7fa5519cbb 100644 --- a/addressbook/gui/widgets/e-minicard.h +++ b/addressbook/gui/widgets/e-minicard.h @@ -20,34 +20,37 @@ * */ -#ifndef __E_MINICARD_H__ -#define __E_MINICARD_H__ +#ifndef E_MINICARD_H +#define E_MINICARD_H #include #include #include -G_BEGIN_DECLS +/* Standard GObject macros */ +#define E_TYPE_MINICARD \ + (e_minicard_get_type ()) +#define E_MINICARD(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST \ + ((obj), E_TYPE_MINICARD, EMinicard)) +#define E_MINICARD_CLASS(cls) \ + (G_TYPE_CHECK_CLASS_CAST \ + ((cls), E_TYPE_MINICARD, EMinicardClass)) +#define E_IS_MINICARD(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE \ + ((obj), E_TYPE_MINICARD)) +#define E_IS_MINICARD_CLASS(cls) \ + (G_TYPE_CHECK_CLASS_TYPE \ + ((obj), E_TYPE_MINICARD)) +#define E_MINICARD_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS \ + ((obj), E_TYPE_MINICARD, EMinicardClass)) -/* EMinicard - A small card displaying information about a contact. - * - * The following arguments are available: - * - * name type read/write description - * -------------------------------------------------------------------------------- - * width double RW width of the card - * height double R height of the card - * card ECard* RW Pointer to the ECard - */ +G_BEGIN_DECLS -#define E_TYPE_MINICARD (e_minicard_get_type ()) -#define E_MINICARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_MINICARD, EMinicard)) -#define E_MINICARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_MINICARD, EMinicardClass)) -#define E_IS_MINICARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_MINICARD)) -#define E_IS_MINICARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), E_TYPE_MINICARD)) +typedef struct _EMinicard EMinicard; +typedef struct _EMinicardClass EMinicardClass; -typedef struct _EMinicard EMinicard; -typedef struct _EMinicardClass EMinicardClass; typedef enum _EMinicardFocusType EMinicardFocusType; enum _EMinicardFocusType { @@ -112,15 +115,14 @@ struct _EMinicardField { #define E_MINICARD_FIELD(field) ((EMinicardField *)(field)) -GType e_minicard_get_type (void); -const gchar *e_minicard_get_card_id (EMinicard *minicard); -gint e_minicard_compare (EMinicard *minicard1, - EMinicard *minicard2); - -gint e_minicard_selected (EMinicard *minicard, - GdkEvent *event); -void e_minicard_activate_editor (EMinicard *minicard); +GType e_minicard_get_type (void); +const gchar * e_minicard_get_card_id (EMinicard *minicard); +gint e_minicard_compare (EMinicard *minicard1, + EMinicard *minicard2); +gint e_minicard_selected (EMinicard *minicard, + GdkEvent *event); +void e_minicard_activate_editor (EMinicard *minicard); G_END_DECLS -#endif /* __E_MINICARD_H__ */ +#endif /* E_MINICARD_H */ -- cgit v1.2.3 From 1993a293b1704a09d501c92b938608b115676c0c Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 26 May 2011 13:47:45 +0200 Subject: Bug #651135 - Crash using saved search with an empty expression --- addressbook/gui/widgets/e-addressbook-model.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 3be37f26f0..73d6776b11 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -905,6 +905,9 @@ e_addressbook_model_get_query (EAddressbookModel *model) { g_return_val_if_fail (E_IS_ADDRESSBOOK_MODEL (model), NULL); + if (!model->priv->query) + return NULL; + return e_book_query_to_string (model->priv->query); } @@ -921,6 +924,9 @@ e_addressbook_model_set_query (EAddressbookModel *model, else book_query = e_book_query_from_string (query); + if (!book_query) + return; + if (model->priv->query != NULL) { gchar *old_query, *new_query; -- cgit v1.2.3 From 756c8abcb840b8da588031f4a0d7e1fc979fab70 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 27 May 2011 15:23:07 +0200 Subject: Bug #646109 - Fix use of include to make sure translations work --- addressbook/gui/contact-editor/e-contact-editor-fullname.c | 3 +++ addressbook/gui/contact-editor/e-contact-editor.c | 2 ++ addressbook/gui/contact-editor/e-contact-quick-add.c | 3 +++ addressbook/gui/contact-editor/test-editor.c | 4 +++- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 2 ++ addressbook/gui/contact-list-editor/e-contact-list-model.c | 3 +++ addressbook/gui/merging/eab-contact-compare.c | 3 +++ addressbook/gui/merging/eab-contact-merging.c | 2 ++ addressbook/gui/widgets/e-addressbook-model.c | 3 +++ addressbook/gui/widgets/e-addressbook-reflow-adapter.c | 3 +++ addressbook/gui/widgets/e-addressbook-selector.c | 4 ++++ addressbook/gui/widgets/e-addressbook-table-adapter.c | 3 +++ addressbook/gui/widgets/e-addressbook-view.c | 2 ++ addressbook/gui/widgets/e-minicard-label.c | 2 ++ addressbook/gui/widgets/e-minicard-view-widget.c | 2 ++ addressbook/gui/widgets/e-minicard-view.c | 2 ++ addressbook/gui/widgets/e-minicard.c | 3 +++ addressbook/gui/widgets/ea-addressbook-view.c | 2 ++ addressbook/gui/widgets/ea-addressbook.c | 4 ++++ addressbook/gui/widgets/ea-minicard-view.c | 3 +++ addressbook/gui/widgets/ea-minicard.c | 3 +++ addressbook/gui/widgets/eab-gui-util.c | 2 ++ addressbook/gui/widgets/gal-view-minicard.c | 2 ++ 23 files changed, 61 insertions(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index 1ca6014707..21eddb14d2 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -20,7 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include "e-util/e-util.h" diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index f6e7f0ff71..4cdf1e2185 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -20,7 +20,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include "eab-editor.h" #include "e-contact-editor.h" diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index cc74968509..44f6354162 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -20,7 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include #include diff --git a/addressbook/gui/contact-editor/test-editor.c b/addressbook/gui/contact-editor/test-editor.c index 857d6ff291..2f54bd57b1 100644 --- a/addressbook/gui/contact-editor/test-editor.c +++ b/addressbook/gui/contact-editor/test-editor.c @@ -20,7 +20,9 @@ * */ -#include "config.h" +#ifdef HAVE_CONFIG_H +#include +#endif #include #include diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 2616b84004..212b87f891 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -20,7 +20,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include "e-contact-list-editor.h" #include diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c index 723ce1d093..1a0cc6d0b6 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c @@ -19,7 +19,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include "e-contact-list-model.h" diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index 82dcf6e8ce..4e226e798c 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -21,7 +21,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include #include diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index 25a4a47634..49e9968074 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -23,7 +23,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include "eab-contact-merging.h" #include "eab-contact-compare.h" diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 73d6776b11..c2c21bdd78 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -20,7 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include #include "e-addressbook-model.h" diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index 48daaaaf6b..0561b766b6 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -16,7 +16,10 @@ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index a39750c805..76b0e98f74 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -18,6 +18,10 @@ * Boston, MA 02110-1301, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include "e-addressbook-selector.h" #include diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index e60ae924e7..e246118d3a 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -19,7 +19,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include #include "e-addressbook-model.h" diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 8deca495be..321a9fd949 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -21,7 +21,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include #include diff --git a/addressbook/gui/widgets/e-minicard-label.c b/addressbook/gui/widgets/e-minicard-label.c index fd4e692c69..967853d7b6 100644 --- a/addressbook/gui/widgets/e-minicard-label.c +++ b/addressbook/gui/widgets/e-minicard-label.c @@ -20,7 +20,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include "e-minicard-label.h" diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index 3f8dd1ff28..1508e0690f 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -20,7 +20,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include #include diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index 880bf92dcb..a00b03816c 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -20,7 +20,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include "e-minicard-view.h" diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index ea91b57be1..98cf1c2f98 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -20,7 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include #include diff --git a/addressbook/gui/widgets/ea-addressbook-view.c b/addressbook/gui/widgets/ea-addressbook-view.c index f0096e6489..46a54a4154 100644 --- a/addressbook/gui/widgets/ea-addressbook-view.c +++ b/addressbook/gui/widgets/ea-addressbook-view.c @@ -20,7 +20,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include #include "ea-addressbook-view.h" diff --git a/addressbook/gui/widgets/ea-addressbook.c b/addressbook/gui/widgets/ea-addressbook.c index 8ac2607232..20bca97948 100644 --- a/addressbook/gui/widgets/ea-addressbook.c +++ b/addressbook/gui/widgets/ea-addressbook.c @@ -20,6 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include "a11y/ea-factory.h" #include "ea-addressbook.h" diff --git a/addressbook/gui/widgets/ea-minicard-view.c b/addressbook/gui/widgets/ea-minicard-view.c index cc35d577b0..a6cd1f799c 100644 --- a/addressbook/gui/widgets/ea-minicard-view.c +++ b/addressbook/gui/widgets/ea-minicard-view.c @@ -20,7 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include #include diff --git a/addressbook/gui/widgets/ea-minicard.c b/addressbook/gui/widgets/ea-minicard.c index 9bf6742247..e218286411 100644 --- a/addressbook/gui/widgets/ea-minicard.c +++ b/addressbook/gui/widgets/ea-minicard.c @@ -20,7 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif + #include #include #include "ea-minicard.h" diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 280758f26d..ae6467bf87 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -20,7 +20,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include #include diff --git a/addressbook/gui/widgets/gal-view-minicard.c b/addressbook/gui/widgets/gal-view-minicard.c index 383a5620d9..6033b34758 100644 --- a/addressbook/gui/widgets/gal-view-minicard.c +++ b/addressbook/gui/widgets/gal-view-minicard.c @@ -23,7 +23,9 @@ * */ +#ifdef HAVE_CONFIG_H #include +#endif #include #include -- cgit v1.2.3 From bb20ede8bcb6343b1d339f1d17394e903a5270c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Fri, 27 May 2011 19:13:45 +0200 Subject: Bug #229244 - Re-ordering email addresses in contact list editor --- .../gui/contact-list-editor/contact-list-editor.ui | 70 +++++++ .../contact-list-editor/e-contact-list-editor.c | 232 ++++++++++++++++++++- 2 files changed, 293 insertions(+), 9 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/contact-list-editor.ui b/addressbook/gui/contact-list-editor/contact-list-editor.ui index 31bc2fc1a6..6cef3e2551 100644 --- a/addressbook/gui/contact-list-editor/contact-list-editor.ui +++ b/addressbook/gui/contact-list-editor/contact-list-editor.ui @@ -257,6 +257,76 @@ 2 + + + True + True + True + True + True + gtk-goto-top + True + False + + + + False + False + 3 + + + + + True + True + True + True + True + gtk-go-up + True + False + + + + False + False + 4 + + + + + True + True + True + True + gtk-go-down + True + False + + + + False + False + 5 + + + + + True + True + True + True + gtk-goto-bottom + True + False + + + + False + False + 6 + + True diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 212b87f891..31709bcf06 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -74,6 +74,14 @@ CONTACT_LIST_EDITOR_WIDGET ((editor), "source-combo-box") #define CONTACT_LIST_EDITOR_WIDGET_TREE_VIEW(editor) \ CONTACT_LIST_EDITOR_WIDGET ((editor), "tree-view") +#define CONTACT_LIST_EDITOR_WIDGET_TOP_BUTTON(editor) \ + CONTACT_LIST_EDITOR_WIDGET ((editor), "top-button") +#define CONTACT_LIST_EDITOR_WIDGET_UP_BUTTON(editor) \ + CONTACT_LIST_EDITOR_WIDGET ((editor), "up-button") +#define CONTACT_LIST_EDITOR_WIDGET_DOWN_BUTTON(editor) \ + CONTACT_LIST_EDITOR_WIDGET ((editor), "down-button") +#define CONTACT_LIST_EDITOR_WIDGET_BOTTOM_BUTTON(editor) \ + CONTACT_LIST_EDITOR_WIDGET ((editor), "bottom-button") /* Shorthand, requires a variable named "editor". */ #define WIDGET(name) (CONTACT_LIST_EDITOR_WIDGET_##name (editor)) @@ -355,6 +363,53 @@ contact_list_editor_row_inserted_cb (GtkTreeModel *model, gtk_widget_set_sensitive (WIDGET (REMOVE_BUTTON), TRUE); } +static void +contact_list_editor_selection_changed_cb (GtkTreeSelection *selection, + gpointer user_data) +{ + EContactListEditor *editor = user_data; + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *first_item; + GList *selected; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + + /* Is selected anything at all? */ + if (gtk_tree_selection_count_selected_rows (selection) == 0) { + gtk_widget_set_sensitive (WIDGET (TOP_BUTTON), FALSE); + gtk_widget_set_sensitive (WIDGET (UP_BUTTON), FALSE); + gtk_widget_set_sensitive (WIDGET (DOWN_BUTTON), FALSE); + gtk_widget_set_sensitive (WIDGET (BOTTOM_BUTTON), FALSE); + return; + } + + /* Item before selected item exists => enable Top/Up buttons */ + selected = gtk_tree_selection_get_selected_rows (selection, &model); + first_item = gtk_tree_path_copy (selected->data); /* Don't update path in the list! */ + if (gtk_tree_path_prev (first_item)) { + gtk_widget_set_sensitive (WIDGET (TOP_BUTTON), TRUE); + gtk_widget_set_sensitive (WIDGET (UP_BUTTON), TRUE); + } else { + gtk_widget_set_sensitive (WIDGET (TOP_BUTTON), FALSE); + gtk_widget_set_sensitive (WIDGET (UP_BUTTON), FALSE); + } + + gtk_tree_model_get_iter (model, &iter, g_list_last (selected)->data); + /* Item below last selected exists => enable Down/Bottom buttons */ + if (gtk_tree_model_iter_next (model, &iter)) { + gtk_widget_set_sensitive (WIDGET (DOWN_BUTTON), TRUE); + gtk_widget_set_sensitive (WIDGET (BOTTOM_BUTTON), TRUE); + } else { + gtk_widget_set_sensitive (WIDGET (DOWN_BUTTON), FALSE); + gtk_widget_set_sensitive (WIDGET (BOTTOM_BUTTON), FALSE); + } + + g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); + g_list_free (selected); + gtk_tree_path_free (first_item); +} + /*********************** Autoconnected Signal Handlers ***********************/ void @@ -698,9 +753,11 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget) { EContactListEditor *editor; GtkTreeSelection *selection; + GtkTreeRowReference *new_selection; GtkTreeModel *model; GtkTreeView *view; - GList *list, *iter; + GtkTreePath *path; + GList *list, *liter; editor = contact_list_editor_extract (widget); @@ -709,17 +766,23 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget) list = gtk_tree_selection_get_selected_rows (selection, &model); /* Convert the GtkTreePaths to GtkTreeRowReferences. */ - for (iter = list; iter != NULL; iter = iter->next) { - GtkTreePath *path = iter->data; + for (liter = list; liter != NULL; liter = liter->next) { + path = liter->data; + + liter->data = gtk_tree_row_reference_new (model, path); + + /* Store reference to next item below current selection */ + if (!liter->next) { + gtk_tree_path_next (path); + new_selection = gtk_tree_row_reference_new (model, path); + } - iter->data = gtk_tree_row_reference_new (model, path); gtk_tree_path_free (path); } /* Delete each row in the list. */ - for (iter = list; iter != NULL; iter = iter->next) { - GtkTreeRowReference *reference = iter->data; - GtkTreePath *path; + for (liter = list; liter != NULL; liter = liter->next) { + GtkTreeRowReference *reference = liter->data; GtkTreeIter iter; gboolean valid; @@ -732,6 +795,29 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget) gtk_tree_row_reference_free (reference); } + /* new_selection != NULL when there is at least one item below the + removed selection */ + if (new_selection) { + path = gtk_tree_row_reference_get_path (new_selection); + gtk_tree_selection_select_path (selection, path); + gtk_tree_path_free (path); + gtk_tree_row_reference_free (new_selection); + } else { + /* If selection was including the last item in the list, then + find and select the new last item */ + GtkTreeIter iter, iter2; + + /* When FALSE is returned, there are no items in the list to be selected */ + if (gtk_tree_model_get_iter_first (model, &iter)) { + iter2 = iter; + + while (gtk_tree_model_iter_next (model, &iter)) + iter2 = iter; + + gtk_tree_selection_select_iter (selection, &iter2); + } + } + g_list_free (list); editor->priv->changed = TRUE; @@ -842,6 +928,131 @@ contact_list_editor_tree_view_key_press_event_cb (GtkWidget *widget, return FALSE; } +void +contact_list_editor_top_button_clicked_cb (GtkButton *button); + +void +contact_list_editor_top_button_clicked_cb (GtkButton *button) +{ + EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeIter iter; + GtkTreePath *path; + GList *references = NULL; + + GList *l, *selected = gtk_tree_selection_get_selected_rows (selection, &model); + for (l = selected; l; l = l->next) + references = g_list_prepend (references, gtk_tree_row_reference_new (model, l->data)); + + for (l = references; l; l = l->next) { + path = gtk_tree_row_reference_get_path (l->data); + gtk_tree_model_get_iter (model, &iter, path); + gtk_list_store_move_after (GTK_LIST_STORE (model), &iter, NULL); + gtk_tree_path_free (path); + } + + g_list_foreach (references, (GFunc) gtk_tree_row_reference_free, NULL); + g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); + g_list_free (references); + g_list_free (selected); + + contact_list_editor_selection_changed_cb (selection, editor); +} + +void +contact_list_editor_up_button_clicked_cb (GtkButton *button); + +void +contact_list_editor_up_button_clicked_cb (GtkButton *button) +{ + EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeIter iter, iter2; + GtkTreePath *path; + + GList *selected = gtk_tree_selection_get_selected_rows (selection, &model); + + /* Get iter of item above the first selected item */ + path = gtk_tree_path_copy (selected->data); + gtk_tree_path_prev (path); + gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_path_free (path); + + /* Get iter of the last selected item */ + gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data); + + gtk_list_store_move_after (GTK_LIST_STORE (model), &iter, &iter2); + + g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); + g_list_free (selected); + + contact_list_editor_selection_changed_cb (selection, editor); +} + +void +contact_list_editor_down_button_clicked_cb (GtkButton *button); + +void +contact_list_editor_down_button_clicked_cb (GtkButton *button) +{ + EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeIter iter, iter2; + + GList *selected = gtk_tree_selection_get_selected_rows (selection, &model); + + /* Iter of the first selected item */ + gtk_tree_model_get_iter (model, &iter, selected->data); + + /* Iter of item below the last selected item */ + gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data); + gtk_tree_model_iter_next (model, &iter2); + + gtk_list_store_move_before (GTK_LIST_STORE (model), &iter2, &iter); + + g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); + g_list_free (selected); + + contact_list_editor_selection_changed_cb (selection, editor); +} + +void +contact_list_editor_bottom_button_clicked_cb (GtkButton *button); + +void +contact_list_editor_bottom_button_clicked_cb (GtkButton *button) +{ + EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); + GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + GtkTreeIter iter; + GtkTreePath *path; + GList *references = NULL; + + GList *l, *selected = gtk_tree_selection_get_selected_rows (selection, &model); + for (l = selected; l; l = l->next) + references = g_list_prepend (references, gtk_tree_row_reference_new (model, l->data)); + references = g_list_reverse (references); + + for (l = references; l; l = l->next) { + path = gtk_tree_row_reference_get_path (l->data); + gtk_tree_model_get_iter (model, &iter, path); + gtk_list_store_move_before (GTK_LIST_STORE (model), &iter, NULL); + gtk_tree_path_free (path); + } + + g_list_foreach (references, (GFunc) gtk_tree_row_reference_free, NULL); + g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); + g_list_free (references); + g_list_free (selected); + + contact_list_editor_selection_changed_cb (selection, editor); +} + + /******************** GtkBuilder Custom Widgets Functions ********************/ static gpointer @@ -1277,6 +1488,7 @@ contact_list_editor_init (EContactListEditor *editor) GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkTreeView *view; + GtkTreeSelection *selection; editor->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE ( editor, E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate); @@ -1297,8 +1509,10 @@ contact_list_editor_init (EContactListEditor *editor) priv->model = e_contact_list_model_new (); gtk_tree_view_set_model (view, priv->model); - gtk_tree_selection_set_mode ( - gtk_tree_view_get_selection (view), GTK_SELECTION_MULTIPLE); + selection = gtk_tree_view_get_selection (view); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); + g_signal_connect (selection, "changed", + G_CALLBACK (contact_list_editor_selection_changed_cb), editor); gtk_tree_view_enable_model_drag_dest (view, NULL, 0, GDK_ACTION_LINK); e_drag_dest_add_directory_targets (WIDGET (TREE_VIEW)); -- cgit v1.2.3 From 394e580dfdb04342c2e457ced400908e4dd5c88e Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 28 May 2011 10:18:56 -0400 Subject: Including directly is rarely needed. --- addressbook/gui/widgets/e-minicard-label.h | 1 - addressbook/gui/widgets/gal-view-factory-minicard.c | 1 - 2 files changed, 2 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-minicard-label.h b/addressbook/gui/widgets/e-minicard-label.h index 6b0205c493..0cd9183e5f 100644 --- a/addressbook/gui/widgets/e-minicard-label.h +++ b/addressbook/gui/widgets/e-minicard-label.h @@ -23,7 +23,6 @@ #ifndef __E_MINICARD_LABEL_H__ #define __E_MINICARD_LABEL_H__ -#include #include G_BEGIN_DECLS diff --git a/addressbook/gui/widgets/gal-view-factory-minicard.c b/addressbook/gui/widgets/gal-view-factory-minicard.c index d5804b18d9..a4700db480 100644 --- a/addressbook/gui/widgets/gal-view-factory-minicard.c +++ b/addressbook/gui/widgets/gal-view-factory-minicard.c @@ -24,7 +24,6 @@ #include #endif -#include #include #include "gal-view-factory-minicard.h" #include "gal-view-minicard.h" -- cgit v1.2.3 From de752b010fb47177e91b0fdaba86b8bed0953a23 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 28 May 2011 11:12:08 -0400 Subject: Including directly is rarely needed. --- addressbook/gui/widgets/eab-config.h | 2 -- addressbook/gui/widgets/gal-view-factory-minicard.h | 1 - 2 files changed, 3 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/eab-config.h b/addressbook/gui/widgets/eab-config.h index 3c2dabdced..5aa822ea62 100644 --- a/addressbook/gui/widgets/eab-config.h +++ b/addressbook/gui/widgets/eab-config.h @@ -24,8 +24,6 @@ #ifndef __EAB_CONFIG_H__ #define __EAB_CONFIG_H__ -#include - #include "e-util/e-config.h" #define EAB_TYPE_CONFIG (eab_config_get_type ()) diff --git a/addressbook/gui/widgets/gal-view-factory-minicard.h b/addressbook/gui/widgets/gal-view-factory-minicard.h index aa27bf9a27..e96c4e455c 100644 --- a/addressbook/gui/widgets/gal-view-factory-minicard.h +++ b/addressbook/gui/widgets/gal-view-factory-minicard.h @@ -26,7 +26,6 @@ #ifndef GAL_VIEW_FACTORY_MINICARD_H #define GAL_VIEW_FACTORY_MINICARD_H -#include #include /* Standard GObject macros */ -- cgit v1.2.3 From 6dc3c692264a04470d842400e909034c3633bdae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Thu, 2 Jun 2011 16:57:23 +0200 Subject: Bug #642557 - Display maps in contact preview --- addressbook/gui/widgets/Makefile.am | 6 +- addressbook/gui/widgets/eab-contact-display.c | 198 ++++++++++++++++++++++++-- addressbook/gui/widgets/eab-contact-display.h | 3 + 3 files changed, 194 insertions(+), 13 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/Makefile.am b/addressbook/gui/widgets/Makefile.am index 511876ad0f..99bbc3af02 100644 --- a/addressbook/gui/widgets/Makefile.am +++ b/addressbook/gui/widgets/Makefile.am @@ -18,7 +18,8 @@ libeabwidgets_la_CPPFLAGS = \ -I$(top_srcdir)/widgets/misc \ -I$(top_builddir)/shell \ $(GNOME_PLATFORM_CFLAGS) \ - $(EVOLUTION_ADDRESSBOOK_CFLAGS) + $(EVOLUTION_ADDRESSBOOK_CFLAGS) \ + $(CHAMPLAIN_CFLAGS) eabincludedir = $(privincludedir)/addressbook/gui/widgets @@ -68,7 +69,8 @@ libeabwidgets_la_LIBADD = \ $(top_builddir)/widgets/table/libetable.la \ $(top_builddir)/widgets/menus/libmenus.la \ $(top_builddir)/a11y/libevolution-a11y.la \ - $(GNOME_PLATFORM_LIBS) + $(GNOME_PLATFORM_LIBS) \ + $(CHAMPLAIN_LIBS) dist-hook: cd $(distdir); rm -f $(BUILT_SOURCES) diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index c970afe968..361988010b 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -32,10 +32,15 @@ #include "e-util/e-icon-factory.h" #include "e-util/e-plugin-ui.h" +#ifdef WITH_CONTACT_MAPS +#include "widgets/misc/e-contact-map.h" +#endif + #include #include #include #include +#include #define TEXT_IS_RIGHT_TO_LEFT \ (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) @@ -44,13 +49,15 @@ struct _EABContactDisplayPrivate { EContact *contact; EABContactDisplayMode mode; GtkOrientation orientation; + gboolean show_maps; }; enum { PROP_0, PROP_CONTACT, PROP_MODE, - PROP_ORIENTATION + PROP_ORIENTATION, + PROP_SHOW_MAPS }; enum { @@ -182,6 +189,34 @@ static GtkActionEntry internal_mailto_entries[] = { G_CALLBACK (action_contact_send_message_cb) } }; +static void +render_address_link (GString *buffer, EContact *contact, int map_type) +{ + EContactAddress *adr; + GString *link = g_string_new (""); + + adr = e_contact_get (contact, map_type); + if (adr && + (adr->street || adr->locality || adr->region || adr->country)) { + + if (adr->street && *adr->street) g_string_append_printf (link, "%s, ", adr->street); + if (adr->locality && *adr->locality) g_string_append_printf (link, "%s, ", adr->locality); + if (adr->region && *adr->region) g_string_append_printf (link, "%s, ", adr->region); + if (adr->country && *adr->country) g_string_append_printf (link, "%s", adr->country); + + g_string_assign (link, g_uri_escape_string (link->str, NULL, TRUE)); + + g_string_prepend (link, "%s", _("Open map")); + } + + if (adr) + e_contact_address_free (adr); + + g_string_append (buffer, link->str); + g_string_free (link, TRUE); +} + static void accum_address (GString *buffer, EContact *contact, @@ -191,17 +226,21 @@ accum_address (GString *buffer, { EContactAddress *adr; const gchar *label; + GString *map_link = g_string_new ("
"); + + render_address_link (map_link, contact, adr_field); label = e_contact_get_const (contact, label_field); if (label) { gchar *html = e_text_to_html (label, E_TEXT_TO_HTML_CONVERT_NL); if (TEXT_IS_RIGHT_TO_LEFT) - g_string_append_printf (buffer, "
", html, html_label); + g_string_append_printf (buffer, "", html, html_label, map_link->str); else - g_string_append_printf (buffer, "", html_label, html); + g_string_append_printf (buffer, "", html_label, map_link->str, html); g_free (html); + g_string_free (map_link, TRUE); return; } @@ -211,7 +250,7 @@ accum_address (GString *buffer, if (TEXT_IS_RIGHT_TO_LEFT) g_string_append_printf (buffer, "", html_label); + g_string_append_printf (buffer, "", html_label, map_link->str); else g_string_append_printf (buffer, ""); } if (adr) e_contact_address_free (adr); + + g_string_free (map_link, TRUE); } static void @@ -602,7 +643,19 @@ render_note_block (GString *buffer, EContact *contact) } static void -render_contact_horizontal (GString *buffer, EContact *contact) +render_address_map (GString *buffer, EContact *contact, int map_type) +{ +#ifdef WITH_CONTACT_MAPS + if (map_type == E_CONTACT_ADDRESS_WORK) { + g_string_append (buffer, ""); + } else { + g_string_append (buffer, ""); + } +#endif +} + +static void +render_contact_horizontal (GString *buffer, EContact *contact, gboolean show_maps) { g_string_append (buffer, "
%s%s:
%s%s:%s
%s:%s
%s:%s%s
"); else - g_string_append_printf (buffer, "
%s:", html_label); + g_string_append_printf (buffer, "
%s:%s", html_label, map_link->str); if (adr->po && *adr->po) g_string_append_printf (buffer, "%s
", adr->po); if (adr->ext && *adr->ext) g_string_append_printf (buffer, "%s
", adr->ext); @@ -222,12 +261,14 @@ accum_address (GString *buffer, if (adr->country && *adr->country) g_string_append_printf (buffer, "%s
", adr->country); if (TEXT_IS_RIGHT_TO_LEFT) - g_string_append_printf (buffer, "
%s:
%s:%s
"); render_title_block (buffer, contact); @@ -611,7 +664,15 @@ render_contact_horizontal (GString *buffer, EContact *contact) g_string_append (buffer, "
"); render_contact_block (buffer, contact); render_work_block (buffer, contact); + g_string_append (buffer, ""); render_personal_block (buffer, contact); + g_string_append (buffer, ""); g_string_append (buffer, "
"); + if (show_maps) + render_address_map (buffer, contact, E_CONTACT_ADDRESS_WORK); + g_string_append (buffer, "
"); + if (show_maps) + render_address_map (buffer, contact, E_CONTACT_ADDRESS_HOME); + g_string_append (buffer, "
"); g_string_append (buffer, ""); @@ -620,7 +681,7 @@ render_contact_horizontal (GString *buffer, EContact *contact) } static void -render_contact_vertical (GString *buffer, EContact *contact) +render_contact_vertical (GString *buffer, EContact *contact, gboolean show_maps) { /* First row: photo & name */ g_string_append (buffer, ""); /* Third column: Personal */ g_string_append (buffer, ""); /* Third row: note */ @@ -657,12 +722,12 @@ render_contact_vertical (GString *buffer, EContact *contact) } static void -render_contact (GString *buffer, EContact *contact, GtkOrientation orientation) +render_contact (GString *buffer, EContact *contact, GtkOrientation orientation, gboolean show_maps) { if (orientation == GTK_ORIENTATION_VERTICAL) - render_contact_vertical (buffer, contact); + render_contact_vertical (buffer, contact, show_maps); else - render_contact_horizontal (buffer, contact); + render_contact_horizontal (buffer, contact, show_maps); } static void @@ -686,7 +751,7 @@ eab_contact_display_render_normal (EABContactDisplay *display, if (e_contact_get (contact, E_CONTACT_IS_LIST)) render_contact_list (buffer, contact); else - render_contact (buffer, contact, orientation); + render_contact (buffer, contact, orientation, display->priv->show_maps); } @@ -910,6 +975,12 @@ contact_display_set_property (GObject *object, EAB_CONTACT_DISPLAY (object), g_value_get_int (value)); return; + + case PROP_SHOW_MAPS: + eab_contact_display_set_show_maps ( + EAB_CONTACT_DISPLAY (object), + g_value_get_boolean (value)); + return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -933,11 +1004,18 @@ contact_display_get_property (GObject *object, value, eab_contact_display_get_mode ( EAB_CONTACT_DISPLAY (object))); return; + case PROP_ORIENTATION: g_value_set_int ( value, eab_contact_display_get_orientation ( EAB_CONTACT_DISPLAY (object))); return; + + case PROP_SHOW_MAPS: + g_value_set_boolean ( + value, eab_contact_display_get_show_maps ( + EAB_CONTACT_DISPLAY (object))); + return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -1086,6 +1164,55 @@ contact_display_link_clicked (EWebView *web_view, E_WEB_VIEW_CLASS (parent_class)->link_clicked (web_view, uri); } +#ifdef WITH_CONTACT_MAPS +/** + * Clutter event handling workaround. Clutter-gtk propagates events down to parent widgets. + * In this case it leads to GtkHTML scrolling up and down while user's trying to zoom in the + * champlain widget. This workaround stops the propagation from map widget down to GtkHTML + */ +static gboolean +handle_map_scroll_event (GtkWidget *widget, GdkEvent *event) +{ + return TRUE; +} + +static void +contact_display_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, EABContactDisplay *display) +{ + EContact *contact = display->priv->contact; + const gchar *name = e_contact_get_const (contact, E_CONTACT_FILE_AS); + const gchar *contact_uid = e_contact_get_const (contact, E_CONTACT_UID); + gchar *full_name; + EContactAddress *address; + + if (g_ascii_strcasecmp (eb->classid, "address-map-work") == 0) { + address = e_contact_get (contact, E_CONTACT_ADDRESS_WORK); + full_name = g_strconcat (name, " (", _("Work"), ")", NULL); + } else { + address = e_contact_get (contact, E_CONTACT_ADDRESS_HOME); + full_name = g_strconcat (name, " (", _("Home"), ")", NULL); + } + + if (address) { + GtkWidget *map = e_contact_map_new (); + gtk_container_add (GTK_CONTAINER (eb), map); + gtk_widget_set_size_request (map, 250, 250); + g_signal_connect (E_CONTACT_MAP (map), "contact-added", + G_CALLBACK (e_contact_map_zoom_on_marker), NULL); + g_signal_connect_swapped (E_CONTACT_MAP (map), "contact-added", + G_CALLBACK (gtk_widget_show_all), map); + g_signal_connect (GTK_CHAMPLAIN_EMBED (map), "scroll-event", + G_CALLBACK (handle_map_scroll_event), NULL); + + /* No need to display photo in contact preview ------------------v */ + e_contact_map_add_marker (E_CONTACT_MAP (map), full_name, contact_uid, address, NULL); + } + + g_free (full_name); + e_contact_address_free (address); +} +#endif + static void contact_display_update_actions (EWebView *web_view) { @@ -1174,6 +1301,16 @@ eab_contact_display_class_init (EABContactDisplayClass *class) GTK_ORIENTATION_HORIZONTAL, G_PARAM_READWRITE)); + g_object_class_install_property ( + object_class, + PROP_SHOW_MAPS, + g_param_spec_boolean ( + "show-maps", + NULL, + NULL, + FALSE, + G_PARAM_READWRITE)); + signals[SEND_MESSAGE] = g_signal_new ( "send-message", G_OBJECT_CLASS_TYPE (class), @@ -1198,10 +1335,16 @@ eab_contact_display_init (EABContactDisplay *display) display, EAB_TYPE_CONTACT_DISPLAY, EABContactDisplayPrivate); display->priv->mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL; display->priv->orientation = GTK_ORIENTATION_HORIZONTAL; + display->priv->show_maps = FALSE; web_view = E_WEB_VIEW (display); ui_manager = e_web_view_get_ui_manager (web_view); +#ifdef WITH_CONTACT_MAPS + g_signal_connect (web_view, "object-requested", + G_CALLBACK (contact_display_object_requested), display); +#endif + action_group = gtk_action_group_new ("internal-mailto"); gtk_action_group_set_translation_domain (action_group, domain); gtk_ui_manager_insert_action_group (ui_manager, action_group, 0); @@ -1352,3 +1495,36 @@ eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation g_object_notify (G_OBJECT (display), "orientation"); } + +gboolean +eab_contact_display_get_show_maps (EABContactDisplay *display) +{ + g_return_val_if_fail (EAB_IS_CONTACT_DISPLAY (display), FALSE); + + return display->priv->show_maps; +} + +void +eab_contact_display_set_show_maps (EABContactDisplay *display, gboolean show_maps) +{ + EABContactDisplayMode mode; + EContact *contact; + + g_return_if_fail (EAB_IS_CONTACT_DISPLAY (display)); + + display->priv->show_maps = show_maps; + contact = eab_contact_display_get_contact (display); + mode = eab_contact_display_get_mode (display); + + switch (mode) { + case EAB_CONTACT_DISPLAY_RENDER_NORMAL: + eab_contact_display_render_normal (display, contact); + break; + + case EAB_CONTACT_DISPLAY_RENDER_COMPACT: + eab_contact_display_render_compact (display, contact); + break; + } + + g_object_notify (G_OBJECT (display), "show-maps"); +} diff --git a/addressbook/gui/widgets/eab-contact-display.h b/addressbook/gui/widgets/eab-contact-display.h index e74a65cb38..f7561f8779 100644 --- a/addressbook/gui/widgets/eab-contact-display.h +++ b/addressbook/gui/widgets/eab-contact-display.h @@ -93,6 +93,9 @@ void eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation orientation); +gboolean eab_contact_display_get_show_maps (EABContactDisplay *display); +void eab_contact_display_set_show_maps (EABContactDisplay *display, gboolean display_maps); + G_END_DECLS #endif /* EAB_CONTACT_DISPLAY_H */ -- cgit v1.2.3 From 171b6f61495d43e672077ac2f8d5478d18fb6f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Thu, 2 Jun 2011 18:45:23 +0200 Subject: Bug #636809 - Address labels formatting improvements Address labels should be formated according to country specific standards. --- addressbook/gui/contact-editor/e-contact-editor.c | 11 +- addressbook/gui/widgets/Makefile.am | 2 +- addressbook/gui/widgets/address_formats.dat | 214 + addressbook/gui/widgets/countrytransl.map | 11370 ++++++++++++++++++++ addressbook/gui/widgets/eab-contact-display.c | 2 + addressbook/gui/widgets/eab-gui-util.c | 517 + addressbook/gui/widgets/eab-gui-util.h | 4 + 7 files changed, 12118 insertions(+), 2 deletions(-) create mode 100644 addressbook/gui/widgets/address_formats.dat create mode 100644 addressbook/gui/widgets/countrytransl.map (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 4cdf1e2185..f545594039 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -2247,7 +2247,16 @@ set_address_label (EContact *contact, { gchar *address_label = NULL; - if (address) { + if (!address) { + e_contact_set (contact, field, NULL); + return; + } + + address_label = eab_format_address (contact, + (field == E_CONTACT_ADDRESS_LABEL_WORK) ? E_CONTACT_ADDRESS_WORK : + E_CONTACT_ADDRESS_HOME); + + if (!address_label) { address_label = append_to_address_label ( address_label, address->street, TRUE); address_label = append_to_address_label ( diff --git a/addressbook/gui/widgets/Makefile.am b/addressbook/gui/widgets/Makefile.am index 99bbc3af02..64777ee332 100644 --- a/addressbook/gui/widgets/Makefile.am +++ b/addressbook/gui/widgets/Makefile.am @@ -1,5 +1,5 @@ ruledir = $(privdatadir) -rule_DATA = addresstypes.xml +rule_DATA = addresstypes.xml address_formats.dat countrytransl.map noinst_LTLIBRARIES = libeabwidgets.la diff --git a/addressbook/gui/widgets/address_formats.dat b/addressbook/gui/widgets/address_formats.dat new file mode 100644 index 0000000000..307831a94c --- /dev/null +++ b/addressbook/gui/widgets/address_formats.dat @@ -0,0 +1,214 @@ +[at] +AddressFormat=%0(%n\n)%0(%m\n)%0(Postfach %p\n)%0(%s\n)%0(%z)%w%l +BusinessAddressFormat=%0(%m\n)%0(z.Hd. %n\n)%0(Postfach %p\n)%0(%s\n)%0(%z)%w%l +CountryPosition=below + +[au] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(PO BOX %p\n)%0(%L%w%w%R%w%w)%z +CountryPosition=BELOW + +[ax] +AddressFormat=%0(%m\n)%0(%n\n)%0(PB %p\n)%0(%s\n)%z%w%L +CountryPosition=BELOW + +[ca] +AddressFormat=%0(%N\n)%0(%M\n)%0(%S\n)%0(PO BOX %p\n)%0(%L%w%R)%,%z +CountryPosition=BELOW + +[ch] +AddressFormat=%0(%m\n)%0(%n\n)%0(P.O. Box %p\n)%0(%s\n)%z%w%l +CountryPosition=BELOW + +[ch_de] +AddressFormat=%0(%m\n)%0(%n\n)%0(Postfach %p\n)%0(%s\n)%z%w%l + +[ch_fr] +AddressFormat=%0(%m\n)%0(%n\n)%0(Case postale %p\n)%0(%s\n)%z%w%l + +[ch_it] +AddressFormat=%0(%m\n)%0(%n\n)%0(Casella postale %p\n)%0(%s\n)%z%w%l + +[cz] +AddressFormat=%0(%m\n)%0(%n\n)%0(p. p. %p\n)%0(%s\n)%z%w%w%l +CountryPosition=below + +[de] +AddressFormat=%0(%m\n)%0(%n\n)%0(Postfach %p\n)%0(%s\n)%z%w%l +CountryPosition=BELOW + +[de_nds] +AddressFormat=%0(%n\n)%0(- %m -\n)%0(Postfach %p\n)%0(%s\n)%z%w%l + +[dk] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(Postboks %p\n)%z%w%l +CountryPosition=below + +[fi] +AddressFormat=%0(%m\n)%0(%n\n)%0(PB %p\n)%0(%s\n)%z%w%L +CountryPosition=BELOW + +[fr] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(BP %p\n)%z%w%L +CountryPosition=BELOW + +[gl] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(Postboks %p\n)%z%w%l +CountryPosition=below + +[hu] +AddressFormat=%0(%n\n)%0(\n%l)%0(\n%s)%0(\nPF. %p)%0(\n%z)%0(\n%r) +BusinessAddressFormat=%0(%n\n)%m\n%z%w%l%0(\n%s)%0(\nPF. %p)%0(\n%r) +CountryPosition=below + +[il] +AddressFormat=%0(%n\n)%0(%m\n)%0(ת.ד. %p\n)%0(%s\n)%0(%l%w%z) +CountryPosition=BELOW + +[jp] +AddressFormat=%0(%z%w%r)%w%l%0(\n%s)%0(\n%m)%0(\n%n) +CountryPosition=ABOVE + +[kh] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(P.O. Box %p\n)%z%w%L%0(\n%r) +CountryPosition=BELOW + +[me] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(poštanski fah %p\n)%z%w%l +CountryPosition=BELOW + +[me_sr] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(поштански фах %p\n)%z%w%l + +[na] +AddressFormat=%0(%m\n)%0(%n\n)%0(P.O. Box %p\n)%l + +[nl] +AddressFormat=%n\n%0(%m\n)%0(Postbus %p\n)%0(%s\n)%z%w%l +CountryPosition=below + +[no] +AddressFormat=%0(%m\n)%0(%n\n)%0(Postboks %p\n)%0(%s\n)%z%w%w%L +CountryPosition=BELOW + +[rs] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(поштански фах %p\n)%z%w%l +CountryPosition=BELOW + +[rs_sr] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(poštanski fah %p\n)%z%w%l + +[se] +AddressFormat=%n\n%0(%m\n)%0(Box %p\n)%0(%s\n)%z%w%w%L +CountryPosition=below + +[us] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(PO BOX %p\n)%0(%l%,%w%r)%w%z +CountryPosition=BELOW + +[at] +AddressFormat=%0(%n\n)%0(%m\n)%0(Postfach %p\n)%0(%s\n)%0(%z)%w%l +BusinessAddressFormat=%0(%m\n)%0(z.Hd. %n\n)%0(Postfach %p\n)%0(%s\n)%0(%z)%w%l +CountryPosition=below + +[au] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(PO BOX %p\n)%0(%L%w%w%R%w%w)%z +CountryPosition=BELOW + +[ax] +AddressFormat=%0(%m\n)%0(%n\n)%0(PB %p\n)%0(%s\n)%z%w%L +CountryPosition=BELOW + +[ca] +AddressFormat=%0(%N\n)%0(%M\n)%0(%S\n)%0(PO BOX %p\n)%0(%L%w%R)%,%z +CountryPosition=BELOW + +[ch] +AddressFormat=%0(%m\n)%0(%n\n)%0(P.O. Box %p\n)%0(%s\n)%z%w%l +CountryPosition=BELOW + +[ch_de] +AddressFormat=%0(%m\n)%0(%n\n)%0(Postfach %p\n)%0(%s\n)%z%w%l + +[ch_fr] +AddressFormat=%0(%m\n)%0(%n\n)%0(Case postale %p\n)%0(%s\n)%z%w%l + +[ch_it] +AddressFormat=%0(%m\n)%0(%n\n)%0(Casella postale %p\n)%0(%s\n)%z%w%l + +[cz] +AddressFormat=%0(%m\n)%0(%n\n)%0(p. p. %p\n)%0(%s\n)%z%w%w%l +CountryPosition=below + +[de] +AddressFormat=%0(%m\n)%0(%n\n)%0(Postfach %p\n)%0(%s\n)%z%w%l +CountryPosition=BELOW + +[de_nds] +AddressFormat=%0(%n\n)%0(- %m -\n)%0(Postfach %p\n)%0(%s\n)%z%w%l + +[dk] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(Postboks %p\n)%z%w%l +CountryPosition=below + +[fi] +AddressFormat=%0(%m\n)%0(%n\n)%0(PB %p\n)%0(%s\n)%z%w%L +CountryPosition=BELOW + +[fr] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(BP %p\n)%z%w%L +CountryPosition=BELOW + +[gl] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(Postboks %p\n)%z%w%l +CountryPosition=below + +[hu] +AddressFormat=%0(%n\n)%0(\n%l)%0(\n%s)%0(\nPF. %p)%0(\n%z)%0(\n%r) +BusinessAddressFormat=%0(%n\n)%m\n%z%w%l%0(\n%s)%0(\nPF. %p)%0(\n%r) +CountryPosition=below + +[il] +AddressFormat=%0(%n\n)%0(%m\n)%0(ת.ד. %p\n)%0(%s\n)%0(%l%w%z) +CountryPosition=BELOW + +[jp] +AddressFormat=%0(%z%w%r)%w%l%0(\n%s)%0(\n%m)%0(\n%n) +CountryPosition=ABOVE + +[kh] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(P.O. Box %p\n)%z%w%L%0(\n%r) +CountryPosition=BELOW + +[me] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(poštanski fah %p\n)%z%w%l +CountryPosition=BELOW + +[me_sr] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(поштански фах %p\n)%z%w%l + +[na] +AddressFormat=%0(%m\n)%0(%n\n)%0(P.O. Box %p\n)%l + +[nl] +AddressFormat=%n\n%0(%m\n)%0(Postbus %p\n)%0(%s\n)%z%w%l +CountryPosition=below + +[no] +AddressFormat=%0(%m\n)%0(%n\n)%0(Postboks %p\n)%0(%s\n)%z%w%w%L +CountryPosition=BELOW + +[rs] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(поштански фах %p\n)%z%w%l +CountryPosition=BELOW + +[rs_sr] +AddressFormat=%0(%m\n)%0(%n\n)%0(%s\n)%0(poštanski fah %p\n)%z%w%l + +[se] +AddressFormat=%n\n%0(%m\n)%0(Box %p\n)%0(%s\n)%z%w%w%L +CountryPosition=below + +[us] +AddressFormat=%0(%n\n)%0(%m\n)%0(%s\n)%0(PO BOX %p\n)%0(%l%,%w%r)%w%z +CountryPosition=BELOW + diff --git a/addressbook/gui/widgets/countrytransl.map b/addressbook/gui/widgets/countrytransl.map new file mode 100644 index 0000000000..1f6757f72f --- /dev/null +++ b/addressbook/gui/widgets/countrytransl.map @@ -0,0 +1,11370 @@ +Andorra ad +Андора ad +Андора ad +Andora ad +ອີນເດີຍ ad +Andora ad +Андорра ad +安道尔 ad +United Arab Emirates ae +Vereenigde Arabiese Emirate ae +الإمارات العربية المتحدة ae +Злучаныя Арабскія Эміраты ae +Обединени Арабски Емирства ae +Ujedinjeni arapski emirati ae +Emirats Àrabs Units ae +Spojené arabské emiráty ae +Forenende Arabiske Emirater ae +Vereinigte Arabische Emirate ae +Ενωμένα Αραβικά Εμιράτα ae +Emiratos árabes unidos ae +Araabia Ühendemiraadid ae +Arabiar Emirato Batuak ae +امارات متحده عربی ae +Yhdistyneet Arabiemiraatit ae +Émirats Arabes Unis ae +איחוד האמירויות הערביות ae +Ujedinjeni arapski emirati ae +Egyesült Arab Emirátusok ae +Emirati arabi uniti ae +アラブ首長国連邦 ae +아랍 에미레이트 연합 ae +ສະຫະລັດ ae +Jungtiniai Arabų Emiratai ae +Emirati Għarab Magħquda ae +De forente arabiske emirater ae +Verenigde Arabische Emiraten ae +Dei sameinte arabiske emirata ae +Di-Emirate tseo di Kopanego tsa Arab ae +Zjednoczone Emiraty Arabskie ae +Emiratos Árabes Unidos ae +Emirados Árabes ae +Emiratele Arabe Unite ae +Объединенные Арабские Эмираты ae +Spojené arabské emiráty ae +Združeni arabski Emirati ae +Förenade arabemiraten ae +³ì¸¢Â «ÃÒ ¿¡Î¸û ae +Birleşik Arap Emirlikleri ae +Об'єднані Арабські Емірати ae +Mashango o tangananaho a Emirates ae +阿拉伯联合酋长国 ae +阿拉伯聯合大公國 ae +Izindawo zezinduna zase-United Arab ae +Afghanistan af +Афганістан af +Афганистан af +Afganistan af +Afghanistán af +Afganisztán af +ລີທົ່ວເນີຍ af +Afeganistão af +Afganistan af +Afganistan af +Afganistan af +Афганістан af +阿富汗 af +Antigua and Barbuda ag +Antigue en Barbuda ag +أنتيغوا و باربودا ag +Antigua və Barbuda ag +Антыгуа і Барбуда ag +Антигуа и Барбадос ag +Antigua ha Barbuda ag +Antigua i Barbuda ag +Antigua i Barbuda ag +Antigua a Barbuda ag +Antigua og Barbuda ag +Antigua und Barbuda ag +Antigua και Barbuda ag +Antigvo kaj Barbudo ag +Antigua y Barbuda ag +Antigua ja Barbuda ag +Antigua eta Barbuda ag +آنتیگوا و باربودا ag +Antigua ja Barbados ag +Antigua og Barbuda ag +Antigua et Barbuda ag +Antiga e Barbuda ag +אנטיגואה וברבודה ag +Antigua i Barbuda ag +Antigua és Barbuda ag +Antigua dan Barbuda ag +Antigúa og Barbúda ag +Antigua e Barbuda ag +アンティグアバーブーダ ag +앤티가 바부다 ag +Antikva ir Barbuda ag +Antigva un Barbudas ag +Antigwa u Barbuda ag +Antigua og Barbuda ag +Antigua en Barbuda ag +Antigua og Barbuda ag +Antigua le Barbuda ag +Antigua e Barbuda ag +Antigua i Barbuda ag +Antigua e Barbuda ag +Antigua e Barbuda ag +Antigua şi Barbuda ag +Антигуа и Барбадос ag +Antigua a Barbuda ag +Antigva in Barbuda ag +Antigua i Barbuda ag +I-Antigua kanye ne Barbuda ag +Antigua och Barbuda ag +¬ýÊÌÅ¡ & À¡÷Ò¼¡ ag +Antigua ve Barbuda ag +Трінідад та Тобаго ag +Antigua và Barbuda ag +Antigua eyet Barbuda ag +Antigua ne Barbuda ag +安地瓜岛和巴布达岛 ag +安地瓜島和巴布達島 ag +Antigua kanye ne-Barbuda ag +Anguilla ai +Ангуила ai +ແພນວິນ ai +Angvila ai +Ангілья ai +安圭拉 ai +Albania al +Альбанія al +Албания al +Albanija al +Albanien al +Albánia al +ແອດແລນຕິກ al +Albânia al +Albánsko al +Albanija al +Albanien al +Албанія al +阿尔巴尼亚 al +Armenia am +Армэнія am +Армения am +Armenija am +Armenien am +Örményország am +ອາເຈນຕິນາ am +Armênia am +Arménsko am +Armenija am +Armenien am +Арменія am +亚美尼亚 am +Netherlands Antilles an +Холандски Антили an +Nizozemski Antili an +Nederlandske antiller an +Antillas holandesas an +Antilla Holandarrak an +Holland-Antillák an +ເນເທີແລນ an +Antilhas an +Holandské Antily an +Nizozemski Antili an +Nederländska Antillerna an +Голландські Антилли an +荷属安的列斯群岛 an +Angola ao +Ангола ao +Ангола ao +ບັນແກເລີຍ ao +Ангола ao +安哥拉 ao +Argentina ar +Argentinië ar +الأرجنتين ar +Аргентына ar +Аржентина ar +Arc'hantina ar +Argentinien ar +Αργεντινή ar +Argentino ar +Argentiina ar +آرژانتین ar +Agentiina ar +Argentine ar +Arxentina ar +ארגנטינה ar +Argentína ar +Argentína ar +アルゼンチン ar +아르헨티나 ar +ອາເຈນຕິນາ ar +Argentīna ar +Arġentina ar +Argentinië ar +Argentyna ar +Аргентина ar +Argentína ar +I-Argentina ar +¬÷¦ºƒýÊÉ¡ ar +อาร์เจนตินา ar +Arjantin ar +Аргентина ar +Agenthina ar +Årdjintene ar +阿根廷 ar +阿根廷 ar +American Samoa as +Амэрыканскае Самоа as +Американска Самоа as +Američka Samoa as +Samoa (USA) as +Samoa americana as +Amerikako Samoa as +Amerikai Szamoa as +ອາເມລິກາເຫນືອ as +Samoa Americana as +Americká Samoa as +Ameriška Samoa as +Amerikanska Samoa as +Американське Самоа as +美属萨摩亚群岛 as +Austria at +Oostenryk at +النمسا at +Avstriya at +Аўстрыя at +Австрия at +Aostria at +Austrija at +Àustria at +Rakousko at +Østrig at +Österreich at +Αυστρία at +Aŭstrio at +اتریش at +Itävalta at +Eysturríki at +Autriche at +אוסטריה at +Austrija at +Ausztria at +Austurríki at +オーストリア at +오스트리아 at +ອອດສະເຕເລີຍ at +Austrija at +Austrija at +Awtrija at +Østerrike at +Oostenrijk at +Austerrike at +Áustria at +Áustria at +Австрия at +Rakúsko at +Avstrija at +Austrija at +I-Austria at +Österrike at +¬Íò¾¢Ã¢Â¡ at +ออสเตรีย at +Avusturya at +Австрія at +Ositiria at +A'o at +Ôtriche at +奥地利 at +奧地利 at +Australia au +Australië au +أستراليا au +Avustralya au +Аўстралія au +Австралия au +Aostralia au +Australija au +Austràlia au +Austrálie au +Australien au +Australien au +Αυστραλία au +Aŭstralio au +Austraalia au +استرالیا au +Australie au +אוסטרליה au +Australija au +Ausztrália au +Ástralía au +オーストラリア au +오스트레일리아 au +ອອດສະເຕເລີຍ au +Australija au +Austrālija au +Awstralja au +Australië au +Austrália au +Austrália au +Австралия au +Austrália au +Avstralija au +Australija au +I-Australia au +Australien au +¬ŠÍò¾¢§ÃĢ¡ au +ออสเตรเลีย au +Avusturalya au +Австралія au +Ositiralia au +U'c au +Ôstraleye au +澳大利亚 au +澳大利亞 au +Aruba aw +Аруба aw +ເກມໄັພ່ aw +Аруба aw +阿鲁巴岛 aw +Azerbaijan az +أذربيجان az +Azərbaycan az +Азэрбайджан az +Азарбайджан az +Azerbejdžan az +Azerbaitjan az +Ázerbajdžánský az +Azerbajdjan az +Aserbaidschan az +Αζερμπαϊτζάν az +Azerbajĝana az +Azerbaiján az +Aserbaidžaan az +آذربایجان az +Azerbaidzan az +Aserbadsjan az +אזרביג'ן az +Azerbejdžan az +Azerbajdzsán az +Azerbaigian az +アゼルバイジャン az +아제르바이잔 az +ອາເຊີໄບຈັນ az +Azerbaidžanas az +Azerbaidžāņu az +Ażerbajġan az +Aserbajdsjan az +Azerbeidjan az +Aserbajdsjan az +Azerbejdżan az +Azerbaijão az +Turco az +Azerbadjan az +Азербайджан az +Ázerbajdžánsky az +Azerbajdžan az +Azerbejdžan az +I-Azerbaijan az +«º÷¨Àº¡ý az +อาร์เซอร์ไบจัน az +Azerice az +Азербайджан az +Azerbaydjan az +阿塞拜疆 az +亞塞拜然 az +Bosnia and Herzegovina ba +Bosnië en Herzegovina ba +البوسنا و الهرسك ba +Босьнія і Герцагавіна ba +Боснена и Херцеговина ba +Bosna i Hercegovina ba +Bòsnia i Hercegovina ba +Bosna a Herzegovina ba +Bosnien-Herzegovina ba +Bosnien und Herzegowina ba +Βοσνία και Ερζεγοβίνη ba +Bosnio kaj Hercegovino ba +Bosnia y Herzegovina ba +Bosnia ja Hertsegovina ba +Bosnia eta Herzegovina ba +بوسنی و هرزگوین ba +Bosnia ja Herzegovina ba +Bosnia-Herzegovina ba +Bosnie herzégovine ba +בוסניה הרצגובינה ba +Bosna i Hercegovina ba +Bosznia-Hercegovina ba +Bosnia e Erzegovina ba +ボスニアヘルツェゴビナ ba +보스니아어와 헤르체고비나 ba +ບອສເນີຍ ແລະ ເຫີເຊີໂກວິນາ ba +Bosnija ir Hercegovina ba +Bosnija un Hercogovina ba +Bożnia u Ħerżegovina ba +Bosnia-Hercegovina ba +Bosnië en Herzegovina ba +Bosnia-Hercegovina ba +Bosnia le Herzegovina ba +Bośnia i Hercegowina ba +Bósnia e Herzegovina ba +Bósnia Herzegóvina ba +Bosnia şi Herţegovina ba +Босния и Герцеговина ba +Bosna a Hercegovina ba +Bosna in Hercegovina ba +I-Bosnia kanye ne Herzegovina ba +Bosnien och Herzegovina ba +¦À¡Íɢ¡ ba +บอสเนีย และ เฮอร์เซโกวินา ba +Bosna Hersek ba +Боснія та Герцеговина ba +Mubosinia na Muhezegovina ba +Bosneye ba +Bosnia ne Herzegovina ba +波斯尼亚和黑塞哥维那 ba +波士尼亞與赫塞哥維納 ba +Bosnia kanye ne-Herzegovina ba +Barbados bb +بربادوس bb +Барбадос bb +Барбадос bb +Μπαρμπάντος bb +Babadoso bb +باربادوس bb +Barbade bb +ברבדוס bb +バルバドス bb +바르바도스 bb +ບາລບາດອດສ bb +Barbadosas bb +Barbadosa bb +Барбадос bb +I-Barbados bb +À¡÷§À¼¡Í bb +บาร์บาดอส bb +Барбадос bb +Barbades bb +巴巴多斯 bb +巴貝多 bb +Bangladesh bd +بنغلاديش bd +Banqladeş bd +Банглядэш bd +Бангладеш bd +Bangladeš bd +Bangladéš bd +Bangladesch bd +Μπαγκλαντές bd +Bangladeŝo bd +بنگلادش bd +בנגלדש bd +Bangladeš bd +Banglades bd +バングラデシュ bd +방글라데시 bd +ບັງຄະລາເທດ bd +Bangladešas bd +Bangladeša bd +Bangladexx bd +Bangladesz bd +Banglade bd +Бангладеш bd +Bangladéš bd +Bangladeš bd +I-Bangladesh bd +Àí¸Ç¡§¾Í bd +บังคลาเทศ bd +Bangladeş bd +Бангладеш bd +孟加拉 bd +孟加拉 bd +Belgium be +België be +بلجيكا be +Belçika be +Бэльгія be +Белгия be +Belgia be +Belgija be +Bèlgica be +Belgie be +Belgien be +Belgien be +Βέλγιο be +Belgio be +Bélgica be +Belgia be +Belgika be +بلژیک be +Belgia be +Belgia be +Belgique be +Bélxica be +בלגיה be +Belgija be +Belgia be +Belgía be +Belgio be +ベルギー be +벨기에 be +ເບລຢ່ງມ be +Belgija be +Beļģija be +Belġju be +Belgia be +België be +Belgia be +Bèlgica be +Belgia be +Bélgica be +Bélgica be +Belgia be +Бельгия be +Belgicko be +Belgija be +Belgija be +I-Belgium be +Belgien be +¦Àøº¢Âõ be +เบลเยียม be +Belçika be +Бельгія be +Beljike be +比利时 be +比利時 be +Burkina Faso bf +Буркіна Фасо bf +Буркина Фаско bf +ຕຸລະກີ bf +Буркіна Фасо bf +布基纳法索 bf +Bulgaria bg +Bulgarye bg +بلغاريا bg +Bolgarıstan bg +Баўгарыя bg +България bg +Bugarska bg +Bulgària bg +Bulharsko bg +Bulgarien bg +Bulgarien bg +Βουλγαρία bg +Bulgario bg +Bulgaaria bg +بلغارستان bg +Bulgarie bg +בולגריה bg +Bugarska bg +Bulgária bg +Búlgaría bg +ブルガリア bg +불가리아 bg +ບັນແກເລີຍ bg +Bulgarija bg +Bulgārija bg +Bulgarija bg +Bulgarije bg +Bułgaria bg +Bulgária bg +Bulgária bg +Болгария bg +Bulharsko bg +Bolgarija bg +Bugarska bg +I-Bulgaria bg +Bulgarien bg +Àø§¸Ã¢Â¡ bg +บัลแกเรีย bg +Bulgaristan bg +Болгарія bg +Baligaria bg +Bulgåreye bg +保加利亚 bg +保加利亞 bg +Bahrain bh +البحرين bh +Бахрэйн bh +Бахрейн bh +Bahrein bh +Bahrajn bh +Μπαχρέιν bh +Bahrein bh +Bahrein bh +بحرین bh +בחריין bh +バーレーン bh +바레인 bh +ຖັກກ່ງວ bh +Bahreinas bh +Baħrain bh +Baghrein bh +Bahrajn bh +Bahamas bh +Bahrein bh +Бахрейн bh +Bahrajn bh +Bahrajn bh +I-Bahrain bh +Bahrein bh +À‹¨Ãý bh +Bahreyn bh +Бахрейн bh +巴林 bh +巴林 bh +Burundi bi +Бурундзі bi +Бурунди bi +ເຄອຣດ bi +Бурунді bi +布隆迪 bi +Benin bj +Бэнін bj +Бенин bj +ບອສເນີຍ bj +Бенін bj +贝宁 bj +Bermuda bm +Бэрмуды bm +Бермуда bm +ເຍລລະມັນ bm +Bermudy bm +Bermudi bm +Бермуди bm +百慕大 bm +Brunei Darussalam bn +Брунэй bn +Бруней bn +Brunei bn +Brunei Szultánság bn +ເບລາລັສເຊີຍ bn +Brunei bn +Brunei Darusalam bn +Бруней Даруссалам bn +Bolivia bo +Bolivië bo +بوليفيا bo +Boliviya bo +Балівія bo +Боливия bo +Bolivija bo +Bolívia bo +Bolívie bo +Bolivien bo +Βολιβία bo +Bolivio bo +Boliivia bo +بولیوی bo +Bolivie bo +בוליביה bo +Bolivija bo +Bolívia bo +Bólivía bo +ボリビア bo +볼리비아 bo +ໂບລີເວີຍ bo +Bolivija bo +Bolīvija bo +Bolivja bo +Boliwia bo +Bolívia bo +Bolívia bo +Боливия bo +Bolívia bo +Bolivija bo +Bolivija bo +I-Bolivia bo +¦À¡Ä¢Å¢Â¡ bo +โบลิเวีย bo +Bolivya bo +Болівія bo +Boliveye bo +波利维亚 bo +玻利維亞 bo +Brazil br +Brazilië br +البرازيل br +Braziliya br +Бразылія br +Бразилия br +Brasil br +Brazílie br +Brasilien br +Brasilien br +Βραζιλία br +Brazilo br +Brasil br +Brasiilia br +Brasil br +برزیل br +Brasilia br +Brésil br +Brasil br +ברזיל br +Brazília br +Brasilía br +Brasile br +ブラジル br +브라질 br +ບາຊີລ br +Brazilija br +Brazīlija br +Brażil br +Brasil br +Brazilië br +Brasil br +Brasil br +Brazylia br +Brasil br +Brasil br +Brazilia br +Бразилия br +Brazília br +Brazilija br +I-Brazil br +Brasilien br +À¢§Ãº¢ø br +บราซิล br +Brezilya br +Бразилія br +Burazili br +Braezi br +巴西 br +巴西 br +Bahamas bs +Багамы bs +Бахами bs +Bahami bs +Bahamák bs +ປານາມາ bs +Bahamy bs +Bahami bs +Багами bs +巴哈马 bs +Bhutan bt +Бутан bt +Бутан bt +Butan bt +Bhután bt +Bhután bt +ຖັກກ່ງວ bt +Butan bt +Бутан bt +不丹 bt +Botswana bw +Батсвана bw +Боцвана bw +Bocvana bw +ບອດສເນີຍ bw +Botsvana bw +Ботсвана bw +博茨瓦纳 bw +Belarus by +روسيا البيضاء by +Беларусь by +Беларус by +Bjelorusija by +Bělorusko by +Hviderusland by +Weißrussland by +Bjelorusio by +Valgevene by +بلاروس by +Valkovenäjä by +Hvítarusland by +Bélarus by +בלרוס by +Bjelorusija by +Fehéroroszország by +Hvíta-Rússland by +Bielorussia by +ベラルーシ by +벨라루스 by +ເບລາລັສ by +Baltarusija by +Baltkrievu by +Hviterussland by +Wit-Rusland by +Kviterussland by +Białoruś by +Bielorússia by +Bielorusso by +Беларусь by +Bielorusko by +Belorusija by +I-Belarus by +Vitryssland by +¦ÀÄ¡åÍ by +เบลารัส by +Білорусія by +Belaruss by +白俄罗斯 by +白俄羅斯 by +Belize bz +Бэлізе bz +Белиз bz +ເບລຍ່ງມ bz +Беліз bz +伯利兹 bz +Default C +Verstek C +افتراضي C +Əsas C +Па ўмаўчаньні C +По подразбиране C +Dre ziouer C +Omissió C +Výchozí C +Standard C +Standard C +Προκαθορισμένο C +Apriora C +Predeterminado C +Vaikimisi C +Aurremugatua C +پیش‌فرض C +Oletus C +Forsettur C +Par défaut C +Por Omisión C +ברירת מחדל C +Uobičajeno C +Alapértelmezett C +Standar C +Sjálfgefið C +Predefinito C +標準 C +기본 C +ຄ່າປະລິຍາຍ C +Nutylima C +Noklusētais C +Normali C +Standard C +Standaard C +Standard C +Thuso ya Tshoganetso C +Omission C +Domyślnie C +Por Omissão C +Padrão C +Implicit C +По умолчанию C +Štandardný C +Privzeto C +Predefinisano C +Förval C +¦¸¡¼¡¿¢¨Ä C +ค่าปริยาย C +Öntanımlı C +Типовий C +Mặc định C +Prémetou C +Okwendalo C +默认 C +預設 C +Okwendalo C +Canada ca +Kanada ca +كندا ca +Kanada ca +Канада ca +Канада ca +Kanada ca +Kanada ca +Canadà ca +Kanada ca +Kanada ca +Καναδάς ca +Kanado ca +Canadá ca +Kanada ca +Kanada ca +کانادا ca +Kanada ca +Kanada ca +Canadá ca +קנדה ca +Kanada ca +Kanada ca +Kanada ca +Kanada ca +カナダ ca +캐나다 ca +ແຄນາດາ ca +Kanada ca +Kanāda ca +Kanada ca +Kanada ca +Canadá ca +Canadá ca +Канада ca +Kanada ca +Kanada ca +Kanada ca +I-Canada ca +Kanada ca +¸É¼¡ ca +แคนาดา ca +Kanada ca +Канада ca +加拿大 ca +加拿大 ca +Cocos (Keeling) Islands cc +Кокосови Острови cc +Kokosovo (Keeling) ostrvo cc +Islas Cocos (Keeling) cc +Koko Irlak cc +Kókusz-szigetek (Keeling) cc +Ilhas Cocos cc +Kokosove Ostrovy cc +Kokosovi (Keelingovi) otoki cc +Kokosöarna cc +Кокосові острови cc +Congo, the democratic republic of the cd +Дэмакратычная Рэспубліка Конга cd +Конго cd +Kongo, demokratska republika cd +Congo, den demokratiske republik cd +Congo, república democrática del cd +Kongo, errepublika demokratikoa cd +Kongói Demokratikus Köztársaság cd +República Democrática do Congo cd +Demokratická Republika Kongo cd +Kongo, demokratična republika cd +Demokratiska republiken Kongo cd +刚果民主共和国 cd +Central African Republic cf +ЦАР cf +Centralnoafrička Republika cf +Central-afrikanske Republik cf +República Centroafricana cf +Afrika Erdiko Errepublika cf +Közép-Afrikai Köztársaság cf +ໂດມິນິກັນ cf +República da África Central cf +Stredoafrická Republika cf +Centralnoafriška republika cf +Centralafrikanska Republiken cf +Центральноафриканська республіка cf +中非共和国 cf +Congo cg +Конга cg +Конго cg +Kongo cg +Kongo cg +Kongó cg +ຄອນໂໍຊລ cg +Kongo cg +Kongo cg +Kongo cg +Конго cg +刚果 cg +Switzerland ch +Switserland ch +سويسرا ch +İsveçrə ch +Швэйцарыя ch +Швейцария ch +Suis ch +Švicarska ch +Suïssa ch +Švýcarsko ch +Schweiz ch +Schweiz ch +Ελβετία ch +Svislando ch +Suiza ch +Šveits ch +Suitza ch +سوییس ch +Sveitsi ch +Suisse ch +Suíza ch +שוייץ ch +Švicarska ch +Svájc ch +Swiss ch +Sviss ch +Svizzera ch +スイス ch +스위스 ch +ສະວິສເຊີແລນ ch +Šveicarija ch +Šveice ch +Svizzera ch +Sveits ch +Zwitserland ch +Sveits ch +Suissa ch +Szwajcaria ch +Suíça ch +Suíça ch +Elveţia ch +Швейцария ch +Švajčiarsko ch +Švica ch +Švajcarska ch +I-Switzerland ch +Schweiz ch +ÍÅ¢ðº÷Ä¡óÐ ch +สวิสเซอร์แลนด์ ch +İsviçre ch +Швейцарія ch +Thuỵ Sĩ ch +Swisse ch +瑞士 ch +瑞士 ch +Cote d'ivoire ci +Бераг Слановай Косьці ci +Кот'Дивоар ci +Obala Slonovače ci +Elfenbenskysten ci +Costa de Marfil ci +Elefántcsontpart ci +ປ່ອຍຫມາກກະລອກ ci +Slonokoščena obala ci +Elfenbenskusten ci +Кот д'Івуар ci +Cook islands ck +Kukova ostrva ck +Cook-øerne ck +Islas Cook ck +Cook Irlak ck +Cook-szigetek ck +ຄຸກກີ້ ck +Ilhas Cook ck +Cookove ostrovy ck +Cookovi otoki ck +Cooköarna ck +Острови Кука ck +库克群岛 ck +Chile cl +Chilië cl +تشيلي cl +Şili cl +Чылі cl +Чили cl +Čile cl +Xile cl +Χιλή cl +Ĉilio cl +Tšiili cl +Txile cl +شیلی cl +Chili cl +צ'ילה cl +Čile cl +Chili cl +Cile cl +チリ cl +칠레 cl +ຊີລີ cl +Čilė cl +Čīle cl +Ċile cl +Chili cl +Cile cl +Чили cl +Čile cl +Čile cl +Čile cl +I-Chile cl +º¢Ä¢ cl +ชิลี cl +Şili cl +Чилі cl +Chi lê cl +Tchili cl +智利 cl +智利 cl +Cameroon cm +Камэрун cm +Камерун cm +Kamerun cm +Cameroun cm +Camerún cm +Kamerun cm +Kamerun cm +ຕາລາງງານ - K cm +Camarões cm +Komerun cm +Kamerun cm +Kamerun cm +Камерун cm +喀麦隆 cm +China cn +Sjina cn +الصين cn +Çin cn +Кітай cn +Китай cn +Sina cn +Kina cn +Xina cn +Čína cn +Kina cn +Κίνα cn +Ĉinujo cn +Hiina cn +Txina cn +چین cn +Kiina cn +Kina cn +Chine cn +סין cn +Kina cn +Kína cn +Cina cn +Kína cn +Cina cn +中国 cn +중국 cn +ຈີນ cn +Kinija cn +Ķīna cn +Ċina cn +Kina cn +Kina cn +Xina cn +Chiny cn +Китай cn +Čína cn +Kitajska cn +Kina cn +I-China cn +Kina cn +º£É¡ cn +จีน cn +Çin cn +Китай cn +Trung Quốc cn +Chine cn +中国 cn +中國 cn +Colombia co +Colombië co +كولمبيا co +Калюмбія co +Колумбия co +Kolumbija co +Colòmbia co +Kolumbie co +Kolumbien co +Κολομβία co +Kolumbio co +Kolumbia co +Kolonbia co +کلمبیا co +Kolumbia co +Colombie co +קולומביה co +Kolumbija co +Kolumbia co +コロンビア co +콜롬비아 co +ໂຄລຳເບີຍ co +Kolumbija co +Kolumbija co +Kolumbja co +Columbia co +Kolumbia co +Colômbia co +Colômbia co +Columbia co +Колумбия co +Kolumbia co +Kolumbija co +I-Colombia co +¦¸¡ÄõÀ¢Â¡ co +โคลัมเบีย co +Kolombiya co +Колумбія co +Colombeye co +Columbia co +哥伦比亚 co +哥倫比亞 co +Costa Rica cr +كوستاريكا cr +Коста Рыка cr +Коста Рика cr +Kostarika cr +Kostarika cr +Κόστα Ρίκα cr +کاستاریکا cr +Kosta Rika cr +קוסטה ריקה cr +Costa rica cr +コスタリカ cr +코스타 리카 cr +ໂຄເອເທີຍ cr +Kosta Rika cr +Kostaryka cr +Коста-Рика cr +Kostarika cr +Kostarika cr +I-Costa Rica cr +§¸¡Š¼¡ ⸡ cr +Kosta Rika cr +Коста-Ріка cr +哥斯达黎加 cr +哥斯大黎加 cr +Cuba cu +Kuba cu +كوبا cu +Куба cu +Куба cu +Kuba cu +Kuba cu +Kuba cu +Κούβα cu +Kuuba cu +Kuba cu +کوبا cu +Kuuba cu +Kuba cu +קובה cu +Kuba cu +キューバ cu +쿠바 cu +ເກມໄພ່ cu +Kuba cu +Kuba cu +Kuba cu +Куба cu +Kuba cu +Kuba cu +I-Cuba cu +Kuba cu +¸¢ÔÀ¡ cu +Küba cu +Куба cu +古巴 cu +古巴 cu +Cape Verde cv +Капе Верде cv +Zelenortska ostrva cv +Kapverdiske øer cv +Cabo Verde cv +Cabo Verde cv +Zöldfoki-szigetek cv +ເກມໄພ່ cv +Cabo Verde cv +Kap Verde cv +佛得角 cv +Christmas Island cx +Božično ostrvo cx +Juleøen cx +Islas Christmas cx +Eguberri Irla cx +Karácsony-szigetek cx +ຄິດສະຕອລ cx +Ilhas do Natal cx +Vianočné Ostrovy cx +Božični otok cx +Julön cx +Острів Різдва cx +圣诞岛 cx +Cyprus cy +Кіпр cy +Кипър cy +Kipar cy +Cypern cy +Chipre cy +Txipre cy +Ciprus cy +ບີບອັດ cy +Chipre cy +Ciper cy +Cypern cy +Кипр cy +塞浦路斯 cy +Czechia cz +Czechië cz +التشيك cz +Çex Respublikası cz +Чэхія cz +Чехия cz +Tchekia cz +Češka cz +Txèquia cz +Česko cz +Tjekkiet cz +Tschechien cz +Τσεχία cz +Ĉeĥio cz +República Checa cz +Tšehhi cz +Txekia cz +چک cz +Tsekki cz +République tchèque cz +Chequia cz +צ'כיה cz +Češka cz +Csehország cz +Tékkland cz +Repubblica Ceca cz +チェコ cz +체코 cz +Čekija cz +Čehija cz +Cżekia cz +Tsjekkia cz +Tsjechië cz +Tsjekkia cz +Chèquia cz +Czechy cz +República Checa cz +República Tcheca cz +Cehia cz +Чехия cz +Česko cz +Češka cz +Češka cz +I-Czechia cz +Tjeckien cz +¦ºì¡ cz +Çek Cumhuriyeti cz +Чехія cz +Séc cz +Tchekeye cz +捷克 cz +捷克 cz +Germany de +Duitsland de +ألمانيا de +Almaniya de +Нямеччына de +Германия de +Alamagn de +Njemačka de +Alemanya de +Německo de +Tyskland de +Deutschland de +Γερμανία de +Germanio de +Alemania de +Saksamaa de +Alemania de + آلمان de +Saksa de +Týskland de +Allemagne de +Alemaña de +גרמניה de +Njemačka de +Németország de +Jerman de +Þýskaland de +Germania de +ドイツ de +독일 de +ເຍລລະມັນນີ de +Vokietija de +Vācija de +Ġermanja de +Tyskland de +Duitsland de +Tyskland de +Alemanya de +Niemcy de +Alemanha de +Alemanha de +Germania de +Германия de +Nemecko de +Nemčija de +Nemačka de +I-Germany de +Tyskland de +§º÷ÁÉ¢ de +เยอรมันนี de +Almanya de +Німеччина de +Đức de +Almagne de +德国 de +德國 de +IJalimani de +Djibouti dj +جيبوتي dj +Джыбуці dj +Джибути dj +Đibuti dj +Džibuti dj +Dschibuti dj +Τζιμπουτί dj +جیبوتی dj +ג'יבוטי dj +Džibuti dj +Dzsibuti dj +ジブティ dj +지부티 dj +ພັດພາ dj +Džibuti dj +Dġibuti dj +Dżibuti dj +Djibuti dj +Djibuti dj +Джибути dj +Džibuty dj +Džibuti dj +I-Djibouti dj +Ê¢ƒ¢¦À¡Ê dj +Cibuti dj +Джібуті dj +吉布提 dj +吉布地 dj +Denmark dk +Denemarke dk +الدنمارك dk +Danimarka dk +Данія dk +Дания dk +Danmark dk +Danska dk +Dinamarca dk +Dánsko dk +Danmark dk +Dänemark dk +Δανία dk +Danlando dk +Dinamarca dk +Taani dk +Danimarka dk +دانمارک dk +Tanska dk +Danmark dk +Danemark dk +Dinamarca dk +דנמרק dk +Danska dk +Dánia dk +Danmörk dk +Danimarca dk +デンマーク dk +덴마크 dk +ເດນມາກ dk +Danija dk +Dānija dk +Danimarka dk +Danmark dk +Denemarken dk +Danmark dk +Dinamarca dk +Dania dk +Dinamarca dk +Dinamarca dk +Danemarca dk +Дания dk +Dánsko dk +Danska dk +Danska dk +I-Denmark dk +Danmark dk +¦¼ýÁ¡÷ì dk +เดนมาร์ก dk +Danimarka dk +Данія dk +Đan Mạch dk +Daenmåtche dk +丹麦 dk +丹麥 dk +Dominica dm +Дамініка dm +Доминика dm +Dominika dm +Dominika dm +ໂລມາເນີຍ dm +Dominicana dm +Dominikánsko dm +Dominikanska republika dm +Домініка dm +多米尼加 dm +Dominican Republic do +Dominikiese Republiek do +جمهورية الدومينيكان do +Dominik Respublikası do +Дамініканская Рэспубліка do +Доминиканска република do +Republik Dominikan do +Dominikanska Republika do +República Dominicana do +Dominikánská republika do +Dominikanske Republik do +Dominikanische Republik do +Δομινικανή Δημοκρατία do +Dominika Respubliko do +República Dominicana do +Dominikaani Vabariik do +Dominikar Errepublika do +جمهوری دامینیکن do +Dominikaaninen tasavalta do +République dominicaine do +República Dominicana do +הרפובליקה הדומיניקנית do +Dominikanska Republika do +Dominikai Köztársaság do +Republik Dominika do +Dóminíska Lýðveldið do +Repubblica Dominicana do +ドミニカ共和国 do +도미니카 공화국 do +ໂດມິນີກັນ do +Dominikos Respublika do +Dominikas Republika do +Repubblika Dominikana do +Den dominikanske republikk do +Dominicaanse Republiek do +Den dominikanske republikken do +Republica Dominicana do +Dominikana do +República Dominicana do +República Dominicana do +Republica Dominicană do +Доминиканская республика do +Dominikánska republika do +Dominikanska republika do +Dominikanska republika do +I-Dominican Republic do +Dominikanska republiken do +¦¼¡Á¢É¢ì¸ý ÌÊÂÃÍ do +โดมินิกัน do +Dominik Cumhuriyeti do +Домініканська республіка do +Muvhuso wa Dominican do +Cộng hoà Dominican do +Republike Dominikinne do +IRepublic yeDominican do +多米尼加共和国 do +多明尼加共和國 do +Algeria dz +Algerië dz +الجزائر dz +Альжыр dz +Алжир dz +Alžir dz +Algèria dz +Alžírsko dz +Algeriet dz +Algerien dz +Αλγερία dz +Algerio dz +Argelia dz +Alžeeria dz + الجزیره dz +Algérie dz +אלג'יריה dz +Alžir dz +Algéria dz +アルジェリア dz +알제리 dz +ບັນກາເລີຍ dz +Alžyras dz +Alġerija dz +Algerie dz +Algerije dz +Algerie dz +Algieria dz +Argélia dz +Argélia dz +Алжир dz +Alžírsko dz +Alžirija dz +I-Algeria dz +Algeriet dz +«øƒ¢Ã¢Â¡ dz +Алжир dz +Aldjereye dz +阿尔及利亚 dz +阿爾及利亞 dz +Equador ec +Ewenaar ec +الإكوادور ec +Ekvator ec +Эквадор ec +Еквадор ec +Ecuador ec +Ekvador ec +Ekvádor ec +Ecuador ec +Ισημερινός ec +Ekvadoro ec +Ecuador ec +Ekvador ec +Ekuador ec +اکوادور ec +Équateur ec +Ecuador ec +אקוודור ec +Ekvador ec +Ecuador ec +Ekvador ec +Ecuador ec +エクアドル ec +에콰도르 ec +ເອກໍດໍ ec +Ekvadoras ec +Ekvadora ec +Ekwador ec +Ecuador ec +Ecuador ec +Ekwador ec +Ecuador ec +Эквадор ec +Ekvádor ec +Ekvador ec +Ekvador ec +I-Equador ec +®ì¦Å§¼¡÷ ec +เอกวาดอร์ ec +Ekvator ec +Еквадор ec +Ecwåteur ec +厄瓜多尔 ec +厄瓜多 ec +Estonia ee +Estlandies ee +استونيا ee +Estoniya ee +Эстонія ee +Естония ee +Estonija ee +Estònia ee +Estonsko ee +Estland ee +Estland ee +Εσθονία ee +Estlando ee +Eesti ee +استونی ee +Eesti ee +Estonie ee +אסטוניה ee +Estonija ee +Észtország ee +Eistland ee +エストニア ee +에스토니아 ee +ເອໂທເນີຍ ee +Estija ee +Igaunija ee +Estonja ee +Estland ee +Estland ee +Estland ee +Estònia ee +Estónia ee +Estônia ee +Эстония ee +Estónsko ee +Estonija ee +Estonija ee +I-Estonia ee +Estland ee +±Í§¼¡É¢Â¡ ee +เอสโธเนีย ee +Estonya ee +Естонія ee +Estoneye ee +爱沙尼亚 ee +愛沙尼亞 ee +Egypt eg +Egipte eg +مصر eg +Misir eg +Эгіпэт eg +Египет eg +Egipat eg +Egipte eg +Egypten eg +Ägypten eg +Αίγυπτος eg +Egiptujo eg +Egipto eg +Egiptus eg +Egypto eg +مصر eg +Egypti eg +Egyptaland eg +Égypte eg +מצרים eg +Egipat eg +Egyiptom eg +Egyptaland eg +Egitto eg +エジプト eg +이집트 eg +ອີຢີບ eg +Egiptas eg +Ēģipte eg +Eġittu eg +Egypte eg +Egepeta eg +Egipt eg +Egipto eg +Egito eg +Egipt eg +Египет eg +Egipt eg +I-Egypt eg +Egypten eg +±¸¢ôÐ eg +อียิปต์ eg +Mısır eg +Єгипет eg +Edjipe eg +埃及 eg +埃及 eg +Igibhithe eg +Western Sahara eh +Западна Сахара eh +Zapadna Sahara eh +Vestsahara eh +Sahara occidental eh +Mendebaldeko Sahara eh +Nyugat-Szahara eh +ພື້ນທີ່ທຳງານ eh +Sahara eh +Západna Sahara eh +Zahodna Sahara eh +Västsahara eh +Західна Сахара eh +西撒哈拉 eh +Eritrea er +Эрытрэя er +Еритрея er +Eritreja er +ແກ້ໄຂແຟ້ມທຳງານ er +Eritreja er +Еритрея er +厄立特里亚 er +Spain es +Spanje es +أسبانيا es +İspaniya es +Гішпанія es +Испания es +Spagn es +Španija es +Espanya es +Španělsko es +Spanien es +Spanien es +Ισπανία es +Hispanio es +España es +Hispaania es +Espainia es +اسپانیا es +Espanja es +Spania es +Espagne es +España es +ספרד es +Španjolska es +Spanyolország es +Spanyol es +Spánn es +Spagna es +スペイン es +스페인 es +ສະເປັນ es +Ispanija es +Spānija es +Spanja es +Spania es +Spanje es +Spania es +Espanha es +Hiszpania es +Espanha es +Espanha es +Spania es +Испания es +Španielsko es +Španija es +Španija es +I-Spain es +Spanien es +ͦÀ¢ý es +สเปน es +İspanya es +Іспанія es +Tây Ban Nha es +Sipagne es +西班牙 es +西班牙 es +Ethiopia et +Этыёпія et +Етиопия et +Etiopija et +Ethiopien et +Etiopía et +Etiopia et +Etiópia et +ເອໂທເນີຍ et +Etiópia et +Etiópia et +Etiopija et +Etiopien et +Ефіопія et +埃塞俄比亚 et +Finland fi +فنلندا fi +Finlandiya fi +Фінляндыя fi +Финландия fi +Finska fi +Finlàndia fi +Finsko fi +Finnland fi +Φινλανδία fi +Finlando fi +Finlandia fi +Soome fi +Finlandia fi +فنلاند fi +Suomi fi +Finnland fi +Finlande fi +Finlandia fi +פינלנד fi +Finska fi +Finnország fi +Finlandia fi +Finnland fi +Finlandia fi +フィンランド fi +핀란드 fi +ຟີນແລນ fi +Suomija fi +Somija fi +Finlandja fi +Finlandia fi +Finlandia fi +Finlândia fi +Finlândia fi +Finlanda fi +Финляндия fi +Fínsko fi +Finska fi +Finska fi +I-Finland fi +À¢ýÄ¡óÐ fi +ฟินแลนด์ fi +Finlandiya fi +Фінляндія fi +Phần Lan fi +Finlande fi +芬兰 fi +芬蘭 fi +Fiji fj +Фіджы fj +Фиджи fj +Fidži fj +Fidzsi fj +ມີດີ fj +Ilhas Fiji fj +Fidži fj +Fidži fj +Фіджі fj +斐济 fj +Falkland Islands (Malvinas) fk +Фолклендски Острови fk +Foklandska ostrva (Malvini) fk +Falkland-øerne fk +Islas Falkland (Malvinas) fk +Falkland Irlak (Malvinak) fk +Falkland-szigetek fk +Ilhas Malvinas fk +Falklandské Ostrovy (Malviny) fk +Falklandski otoki (Malvini) fk +Falklandsöarna fk +福克兰岛 (马尔维纳斯) fk +Micronesia, Federated states of fm +Федэрацыя Мiкранэзіі fm +Микронезия fm +Mikronezija, Federalne države fm +Mikronesien, de forenede stater af fm +Micronesia, Estados federados de fm +Mikronesia, Estatu Federatuak fm +Mikronézia fm +Estados Federados da Micronésia fm +Spjoené štáty Mikronézie fm +Mikronezija, Združene države fm +Mikronesiska federationen fm +密克罗尼西亚联邦 fm +Faroe Islands fo +Фареорски Острови fo +Farska ostrva fo +Færøerne fo +islas Faroe fo +Faroe Irlak fo +Faroe-szigetek fo +ໄອແລນ fo +Ilhas Faroe fo +Ostrovy Faroe fo +Otoki Faroe fo +Färöarna fo +Фарерські острови fo +France fr +Frankryk fr +فرنسا fr +Fransa fr +Францыя fr +Франция fr +Frañs fr +Francuska fr +França fr +Francie fr +Frankrig fr +Frankreich fr +Γαλλία fr +Francio fr +Francia fr +Prantsusmaa fr +Frantzia fr +فرانسه fr +Ranska fr +Frakland fr +Francia fr +צרפת fr +Francuska fr +Franciaország fr +Prancis fr +Frakkland fr +Francia fr +フランス fr +프랑스 fr +ຝຣັ່ງ fr +Prancūzija fr +Francija fr +Franza fr +Frankrike fr +Frankrijk fr +Frankrike fr +Fora fr +França fr +Francja fr +França fr +França fr +Franţa fr +Франция fr +Francúzsko fr +Francija fr +Francuska fr +I-France fr +Frankrike fr +À¢Ã¡ýÍ fr +ฝรั่งเศส fr +Fransa fr +Франція fr +Fura fr +Pháp fr +Fransi fr +法国 fr +法國 fr +Gabon ga +Габон ga +Габон ga +Gabón ga +ແກລ່ງນ ga +Gabão ga +Габон ga +加蓬 ga +United Kingdom gb +Vereenigde Koninkryk gb +المملكة المتحدة gb +Birləşmiş Krallıq gb +Злучанае Каралеўства gb +Великобритания gb +Rouantelezh Unanet gb +Velika Britanija gb +Regne Unit gb +Spojené království gb +Storbritannien gb +Großbritannien gb +Ηνωμένο Βασίλειο gb +Britio gb +Reino Unido gb +Ühendatud Kuningriigid gb +Erreinu Batua gb +بریتانیا gb +Iso-Britannia gb +Stórabretland gb +Royaume Uni gb +Reino Unido gb +בריטניה gb +Ujedinjeno Kraljevstvo gb +Egyesült Királyság gb +Inggris gb +Stóra Bretland gb +Regno Unito gb +イギリス gb +영국 gb +ສະຫະລາດສະອານາຈັກ gb +Jungtinė Karalystė gb +Apvienotā Karaliste gb +Renju Unit gb +Storbritannia gb +Verenigd Koninkrijk gb +Storbritannia gb +Regne Unit gb +Wielka Brytania gb +Reino Unido gb +Reino Unido gb +Anglia gb +Великобритания gb +Anglicko gb +Združeno kraljestvo gb +Velika Britanija gb +I-United Kingdom gb +Storbritannien gb +³ì¸¢Â ­Ã¡îº¢Âõ gb +สหราชอาณาจักร gb +Birleşik Krallık gb +Великобританія gb +Anh gb +United Kingdom gb +联合王国 gb +聯合王國 gb +United Kingdom gb +Grenada gd +غرينادا gd +Qrenada gd +Грэнада gd +Гренада gd +Granada gd +Γρενάδα gd +Grenado gd +Granada gd +گرانادا gd +Grenade gd +Granada gd +גרנדה gd +Grænhöfðaeyjar gd +Granada gd +グラナダ gd +그러네이다 gd +ເກນາດາ gd +Grenāda gd +Granada gd +Granada gd +Granada gd +Гренада gd +I-Grenada gd +¸¢¦Ãɼ¡ gd +เกรนาดา gd +Гренада gd +格林纳达 gd +格瑞那達 gd +Georgia ge +Грузія ge +Грузия ge +Gruzija ge +Georgien ge +Grúzia ge +ເຊີເບີຍ ge +Geórgia ge +Gruzija ge +Georgien ge +Грузія ge +格鲁吉亚 ge +Ghana gh +غانا gh +Гана gh +Гана gh +Gana gh +Γκάνα gh +غنا gh +גאנה gh +ガーナ gh +ຈີນ gh +Gana gh +Gana gh +Gana gh +Гана gh +Gana gh +I-Ghana gh +¸¡É¡ gh +Гана gh +加纳 gh +迦納 gh +Gibraltar gi +Гибралтар gi +Gibraltár gi +ມອລຕາ gi +Гібралтар gi +直布罗陀 gi +Gambia gm +Гамбія gm +Гамбия gm +Gambija gm +ແກມມາ gm +Gâmbia gm +Gambija gm +Гамбія gm +冈比亚 gm +Guinea gn +Гвінэя gn +Гвинея gn +Gvineja gn +ເຖາວັນ gn +Guiné gn +Gvineja gn +Гвінея gn +几内亚 gn +Guadeloupe gp +Гвадалупа gp +Gvadalupe gp +Guadalupe gp +ເດີລຸກ gp +Guadalupe gp +Гваделупа gp +瓜德罗普岛 gp +Equatorial Guinea gq +Экватарыяльная Гвінэя gq +Екваториялна Гвинея gq +Ekvatorijalna Gvineja gq +Ækvatorial Guinea gq +Guinea equatorial gq +Ginea Ekuatoriala gq +Egyenlítői Guinea gq +ການສອນ gq +Guiné Equatorial gq +Rovníkova Guinea gq +Ekvatorialna Gvineja gq +Ekvatorialguinea gq +Екваторіальна Гвінея gq +赤道几内亚 gq +Greece gr +Griekeland gr +اليونان gr +Yunanıstan gr +Грэцыя gr +Гърция gr +Gres gr +Grčka gr +Grècia gr +Řecko gr +Grækenland gr +Griechenland gr +Ελλάδα gr +Grekujo gr +Grecia gr +Kreeka gr +Grezia gr +یونان gr +Kreikka gr +Grikkaland gr +Grèce gr +Grecia gr +יוון gr +Grčka gr +Görögország gr +Grikkland gr +Grecia gr +ギリシャ gr +그리스 gr +ກີຊ gr +Graikija gr +Grieķija gr +Greċja gr +Hellas gr +Griekenland gr +Hellas gr +Grèça gr +Grecja gr +Grécia gr +Grécia gr +Grecia gr +Греция gr +Grécko gr +Grčija gr +Grčka gr +I-Greece gr +Grekland gr +¸¢Ã£Í gr +กรีซ gr +Yunanistan gr +Греція gr +Hy Lạp gr +Grece gr +希腊 gr +希臘 gr +Guatemala gt +Gautemala gt +غواتيمالا gt +Quatemala gt +Гватэмала gt +Гватемала gt +Gvatemala gt +Γουατεμάλα gt +Gvatemalo gt +Guatemaala gt +گواتمالا gt +גואטמלה gt +Gvatemala gt +カタロニア gt +과테말라 gt +ກັວເຕມາລາ gt +Gvatemala gt +Gvatemala gt +Gwatemala gt +Gwatemala gt +Гватемала gt +Gvatemala gt +Gvatemala gt +I-Guatemala gt +ÌÅ¡ò¾Á¡Ä¡ gt +กัวเตมาลา gt +Гватемала gt +Gwatemala gt +瓜地马拉 gt +瓜地馬拉 gt +Guam gu +Гуам gu +ແກມມາ gu +Гуам gu +关岛 gu +Guinea-Bissau gw +Гвінэя-Бісаў gw +Гвинея-Бисау gw +Gvineja-Bisau gw +Ginea-Bissau gw +Bissau-Guinea gw +ລັດເຊີຍ gw +Guiné-Bissau gw +Гвінея-Біссау gw +几内亚比绍 gw +Guyana gy +Гвіяна gy +Гуана gy +Gvajana gy +ຈີນ gy +Guiana gy +Gvajana gy +Гаяна gy +圭亚那 gy +Hong Kong hk +Ганконг hk +Хонг Конг hk +Hongkong hk +ບໍ່ຮູ້ຈັກ hk +Гонконг hk +香港 hk +Honduras hn +هندوراس hn +Гандурас hn +Хондурас hn +Hondures hn +Ονδούρα hn +Honduraso hn +Honduuras hn +هندوراس hn +הונדורס hn +ホンデュラス hn +온두라스 hn +ຫອນດູລັດ hn +Hondūras hn +Hondurasa hn +Ħonduras hn +Hondures hn +Гондурас hn +I-Honduras hn +¬ñÎáŠÍ hn +ฮอนดูรัส hn +Гондурас hn +洪都拉斯 hn +宏都拉斯 hn +Croatia hr +Kroatië hr +كرواتيا hr +Xırvatıstan hr +Харватыя hr +Хърватска hr +Kroatia hr +Hrvatska hr +Croàcia hr +Chorvatsko hr +Kroatien hr +Kroatien hr +Κροατία hr +Kroatio hr +Croacia hr +Horvaatia hr +Kroazia hr +کرواسی hr +Kroatia hr +Kroatia hr +Croatie hr +Croacia hr +קרואטיה hr +Hrvatska hr +Horvátország hr +Kroasia hr +Króatía hr +Croazia hr +クロアチア hr +크로아티아 hr +ໂຄເອເທີຍ hr +Kroatija hr +Horvātija hr +Kroazja hr +Kroatia hr +Kroatië hr +Kroatia hr +Croacia hr +Chorwacja hr +Croácia hr +Croácia hr +Croaţia hr +Хорватия hr +Chorvátsko hr +Hrvaška hr +Hrvatska hr +I-Croatia hr +Kroatien hr +̦á§Åº¢Â¡ hr +โครเอเธีย hr +Hırvatistan hr +Хорватія hr +Crowåceye hr +克罗地亚 hr +克羅埃西亞 hr +Haiti ht +Гаіці ht +Хаити ht +Haití ht +ວາດຮູບ - K ht +Гаїті ht +海地岛 ht +Hungary hu +Hongarye hu +هنغاريا hu +Macarıstan hu +Вугоршчына hu +Унгария hu +Hungaria hu +Mađarska hu +Hongria hu +Maďarsko hu +Ungarn hu +Ungarn hu +Ουγγαρία hu +Hungario hu +Hungría hu +Ungari hu +Hungaria hu +مجارستان hu +Unkari hu +Ungarn hu +Hongrie hu +Hungría hu +הונגריה hu +Mađjarska hu +Magyarország hu +Hungaria hu +Ungverjaland hu +Ungheria hu +ハンガリー hu +헝가리 hu +ຫັງກາລີ hu +Vengrija hu +Ungārija hu +Ungerija hu +Ungarn hu +Hongarije hu +Ungarn hu +Hongria hu +Węgry hu +Hungria hu +Hungria hu +Ungaria hu +Венгрия hu +Maďarsko hu +Madžarska hu +Mađarska hu +I-Hungary hu +Ungern hu +¬í§¸Ã¢ hu +ฮังการี hu +Macaristan hu +Угорщина hu +Hongreye hu +匈牙利 hu +匈牙利 hu +Indonesia id +Indonesië id +إندونيسيا id +İndoneziya id +Інданэзія id +Индонезия id +Indonezija id +Indonèsia id +Indonésie id +Indonesien id +Indonesien id +Ινδονησία id +Indonezio id +Indoneesia id +اندونزی id +Indonésie id +אינדונזיה id +Indonezija id +Indonézia id +Indónesía id +インドネシア id +인도네시아 id +ອີຍໂດນີເຊີຍ id +Indonezija id +Indonēzija id +Indoneżja id +Indonesië id +Indonezja id +Indonésia id +Indonésia id +Indonezia id +Индонезия id +Indonézia id +Indonezija id +I-Indonesia id +Indonesien id +­ó§¾¡É£º¢Â¡ id +อินโดนีเซีย id +İndonezya id +Індонезія id +Indoneseye id +印度尼西亚 id +印尼 id +Ireland ie +Ierland ie +أيرلندا ie +İrlandiya ie +Ірляндыя ie +Ирландия ie +Iwerzhon ie +Irska ie +Irlanda ie +Irsko ie +Irland ie +Irland ie +Ιρλανδία ie +Islando ie +Irlanda ie +Island ie +Irlanda ie +ایرلند ie +Irlanti ie +Írland ie +Irlande ie +Irlanda ie +אירלנד ie +Irska ie +Írország ie +Irlandia ie +Írland ie +Irlanda ie +アイスランド ie +아일랜드 ie +ໄອແລນ ie +Airija ie +Īrija ie +Irlanda ie +Irland ie +Ierland ie +Irland ie +Irlanda ie +Irlandia ie +Irlanda ie +Irlanda ie +Irlanda ie +Ирландия ie +Írsko ie +Irska ie +Irska ie +I-Ireland ie +Irland ie +«Â÷Ä¡óÐ ie +ไอร์แลนด์ ie +İrlanda ie +Ірландія ie +Irlande ie +爱尔兰 ie +愛爾蘭 ie +Israel il +اسرائيل il +İzrail il +Ізраіль il +Израел il +Izrael il +Izrael il +Ισραήλ il +Israelo il +Iisrael il +اسراییل il +Ísrael il +Israël il +ישראל il +Izrael il +Izrael il +Ísrael il +Israele il +イスラエル il +이스라엘 il +ອິດສະລະເອລ il +Izraelis il +Izraēla il +Iżrael il +Izrael il +Израиль il +Izrael il +Izrael il +Izrael il +I-Israel il +­Í§Ãø il +อิสราเอล il +İsrail il +Ізраїль il +Israyel il +USirayeli il +以色列 il +以色列 il +India in +Indië in +الهند in +Hindistan in +Індыя in +Индия in +Indija in +Índia in +Indie in +Indien in +Indien in +Ινδία in +Hindujo in +هندوستان in +Intia in +Inde in +הודו in +Indija in +Indland in +インド in +인도 in +ອິນເດີຍ in +Indija in +Indija in +Indja in +Indie in +Índia in +Índia in +Индия in +Indija in +I-India in +Indien in +­ó¾¢Â¡ in +อินเดีย in +Hindistan in +Індія in +Inde in +印度 in +印度 in +Endiya in +Iraq iq +Irak iq +العراق iq +İraq iq +Ірак iq +Ирак iq +Irak iq +Irák iq +Irak iq +Irak iq +Ιράκ iq +Irako iq +Irak iq +Iraak iq +عراق iq +Irak iq +Irak iq +Irak iq +עירק iq +Irak iq +Irak iq +Írak iq +Irak iq +イラク iq +이라크 iq +ອີລັກ iq +Irakas iq +Irāka iq +Irak iq +Irak iq +Irak iq +Irak iq +Iraque iq +Iraque iq +Irak iq +Ирак iq +Irák iq +Irak iq +I-Iraq iq +Irak iq +®Ã¡ì iq +อิรัค iq +Irak iq +Ірак iq +Irak iq +伊拉克 iq +伊拉克 iq +Iran ir +أيران ir +Іран ir +Иран ir +Írán ir +Ιράν ir +Iraan ir +ایران ir +אירן ir +Irán ir +イラン ir +이란 ir +ອີລັກ ir +Iranas ir +Irão ir +Irã ir +Иран ir +Irán ir +I-Iran ir +®Ã¡ý ir +İran ir +Іран ir +伊朗 ir +伊朗 ir +Iceland is +Ysland is +أيسلندا is +İslandiya is +Ісьляндыя is +Исландия is +Island is +Island is +Islàndia is +Island is +Island is +Island is +Ισλανδία is +Islando is +Islandia is +Island is +Islandia is +ایسلند is +Islanti is +Ísland is +Islande is +Islandia is +איסלנד is +Island is +Izland is +Islandia is +Ísland is +Islanda is +アイスランド is +아이슬란드 is +ໄອຊແລນ is +Islandija is +Islande is +Islandja is +Island is +IJsland is +Island is +Islandia is +Islandia is +Islândia is +Islândia is +Islanda is +Исландия is +Island is +Islandija is +Island is +I-Iceland is +Island is +³ÍÄ¡óÐ is +ไอซ์แลนด์ is +İzlanda is +Ісландія is +Izlande is +冰岛 is +冰島 is +Icelandi is +Italy it +Italië it +ايطاليا it +İtalyia it +Італія it +Италия it +Italia it +Italija it +Itàlia it +Itálie it +Italien it +Italien it +Ιταλία it +Italio it +Italia it +Itaalia it +Italia it +ایتالیا it +Italia it +Italia it +Italie it +Italia it +איטליה it +Italija it +Olaszország it +Italia it +Ítalía it +Italia it +イタリア it +이탈리아 it +ອີຕາລີ it +Italija it +Itālija it +Italja it +Italia it +Italië it +Italia it +Italia it +Włochy it +Itália it +Itália it +Italia it +Италия it +Taliansko it +Italija it +Italija it +I-Italy it +Italien it +­ò¾¡Ä¢ it +อิตาลี it +İtalya it +Італія it +Itåleye it +Ithali it +意大利 it +義大利 it +Jamaica jm +Jamaika jm +جامايكا jm +Yamayka jm +Ямайка jm +Ямайка jm +Jamaika jm +Jamajka jm +Jamajka jm +Jamaika jm +Τζαμάικα jm +Ĵamaiko jm +Jamaika jm +Jamaika jm +جاماییکا jm +Jamaika jm +Jamaïque jm +Xamaica jm +ג'מייקה jm +Jamajka jm +Jamaika jm +Jamaika jm +Giamaica jm +ジャマイカ jm +자메이카 jm +ຈາໄມກາ jm +Jamaika jm +Jamaika jm +Ġamajka jm +Jamajka jm +Ямайка jm +Jamajka jm +Jamajka jm +Jamajka jm +I-Jamaica jm +ƒº¦Áö측 jm +จาไมกา jm +Jamaika jm +Ямайка jm +Djamayike jm +牙买加 jm +牙買加 jm +Jordan jo +Jordaan jo +الأردن jo +İordaniya jo +Ярданія jo +Йордания jo +Jordania jo +Jordán jo +Jordanien jo +Ιορδανία jo +Jordanio jo +Jordania jo +اردن jo +Jordania jo +Jordanie jo +ירדן jo +Jordánia jo +Jórdanía jo +Giordania jo +ヨルダン jo +요르단 jo +ຈໍແດນ jo +Jordanija jo +Jordāna jo +Ġordan jo +Jordanië jo +Jordania jo +Jordânia jo +Jordânia jo +Iordania jo +Иордания jo +Jordánsko jo +Jordanija jo +I-Jordan jo +Jordanien jo +§Â¡÷¾¡ý jo +จอร์แดน jo +Ürdün jo +Йорданія jo +Djordaneye jo +约旦 jo +約旦 jo +Ijolidani jo +Japan jp +اليابان jp +Yaponiya jp +Японія jp +Япония jp +Japó jp +Japonsko jp +Ιαπωνία jp +Japanio jp +Japón jp +Jaapan jp +Japonia jp +ژاپن jp +Japani jp +Japon jp +Xapón jp +יפן jp +Japán jp +Jepang jp +Giappone jp +日本 jp +일본 jp +ຍີ່ປຸ່ນ jp +Japonija jp +Japāna jp +Ġappun jp +Japon jp +Japonia jp +Japão jp +Japão jp +Japonia jp +Япония jp +Japonsko jp +Japonska jp +I-Japan jp +ºôÀ¡ý jp +ญี่ปุ่น jp +Japonya jp +Японія jp +Nhật bản jp +Djapon jp +日本 jp +日本 jp +Kenya ke +Кенія ke +Кения ke +Kenija ke +Kenia ke +ເວນດາ ke +Quênia ke +Keňa ke +Kenija ke +Кенія ke +肯尼亚 ke +Kyrgyzstan kg +Кыргызстан kg +Киргистан kg +Kirgistan kg +Kirgizistan kg +Kyrgyzstán kg +Kirgizisztán kg +ຄສິຕັລ kg +Kirgizstan kg +Kirgizistan kg +Киргизстан kg +吉尔吉斯坦 kg +Cambodia kh +Камбоджа kh +Камбоджа kh +Kambođa kh +Kambodzsa kh +ໂຄລຳເບີຍ kh +Cambodja kh +Kambodža kh +Kambodža kh +Kambodja kh +Камбоджа kh +柬埔寨 kh +Kiribati ki +Кiрыбацi ki +Кирибати ki +ແຟຄທັລ - K ki +Кірібаті ki +基里巴斯 ki +Comoros km +Каморы km +Коморски km +Komori km +Comorerne km +ສີ km +Komori km +Komorerna km +Комори km +科摩罗群岛 km +St. Kitts and Nevis kn +St. Kitts en Nevis kn +سانت كيتس و نيفيس kn +St. Kitts və Nevis kn +Св. Кристоф и Невис kn +S. Kitts ha Nevis kn +St. Kitts i Nevis kn +Sv. Kitts a Nevis kn +St. Kitts-Nevis kn +St. Kitts und Nevis kn +St. Kitts και Nevis kn +St. Kitts kaj Nevis kn +St. Kitts y Nevis kn +St. Kitts ja Nevis kn +St. Kitts eta Nevis kn +سن کیتس و نویس kn +St. Kitts ja Nevis kn +St Kitts et Nevis kn +Saint Kitts e Nevis kn +סנט קיטס ונביס kn +St. Kitts és Nevis kn +St. Kitts dan Nevis kn +Ss. Kitts e Nevis kn +セントキッツネヴィス kn +세인트 키츠 네비스 kn +Šv. Kitts ir Nevis kn +St. Kitts un Nevis kn +St. Kitts u Nevis kn +St. Kitts og Nevis kn +St. Kitts en Nevis kn +St. Kitts og Nevis kn +St. Kitts le Nevis kn +St. Kitts e Nevis kn +St. Kitts e Nevis kn +St Kitts e Nevis kn +Sf. Kitts şi Nevis kn +о. Св. Кристофа и Невиса kn +St. Kitts a Nevis kn +St. Kitts in Nevis kn +St. Kitts i Nevis kn +I-St. Kitts and Nevis kn +St. Kitts och Nevis kn +¦ºÂ¢ý𠸢ðÍ & ¦¿Å¢Í kn +St. Kitts ve Nevis kn +Федерація Сент-Кітс і Невіс kn +St. Kitts na Nevis kn +St. Kitts neNevis kn +圣基特和里维斯 kn +聖克理斯多福及尼維斯 kn +St. Kitts kanye no-Nevis kn +North Korea kp +Noord Korea kp +كوريا الشمالية kp +Şimali Koreya kp +Паўночная Карэя kp +Северна Корея kp +Norzh-Korea kp +Sjeverna Koreja kp +Corea del Nord kp +Severní Korea kp +Nordkorea kp +Nord-Korea kp +Βόρεια Κορέα kp +Nordkoreo kp +Corea del Norte kp +Põhja-Korea kp +Ipar Korea kp +کره شمالی kp +Pohjois-Korea kp +Norðurkorea kp +Corée du nord kp +Corea do Norte kp +צפון קוריאה kp +Sjeverna Koreja kp +Észak-Korea kp +Korea Utara kp +Kórea - Norðurkórea kp +Corea del Nord kp +北朝鮮 kp +조선민주주의 인민공화국 kp +ເກົາລີເຫນືອ kp +Šiaurės Korėja kp +ZiemeļKoreja kp +Korea ta' Fuq kp +Nord-Korea kp +Noord-Korea kp +Nord-Korea kp +Lebowa la Korea kp +Corea dèu Nord kp +Korea Północna kp +Coreia do Norte kp +Coréia do Norte kp +Coreea de Nord kp +Северная Корея kp +severná Kórea kp +Severna Koreja kp +Severna Koreja kp +I-North Korea kp +Nordkorea kp +ż ¦¸¡Ã¢Â¡ kp +เกาหลีเหนือ kp +Kuzey Kore kp +Північна Корея kp +Devhula ha Korea kp +Bắc Triều Tiên kp +Bijhe Coreye kp +Umntla Korea kp +朝鲜 kp +北韓 kp +Enyakatho ne-Korea kp +South Korea kr +Suid Korea kr +كوريا الجنوبية kr +Cənubi Koreya kr +Паўднёвая Карэя kr +Южна Корея kr +Su-Korea kr +Južna Koreja kr +Corea del Sud kr +Jižní Korea kr +Sydkorea kr +Süd-Korea kr +Νότια Κορέα kr +Sudkoreo kr +Corea del Sur kr +Lõuna-Korea kr +Hego Korea kr +کره جنوبی kr +Etelä-Korea kr +Suðurkorea kr +Corée du sud kr +Corea do Sur kr +דרום קוריאה kr +Južna Koreja kr +Dél-Korea kr +Korea Selatan kr +Kórea - Suðurkórea kr +Corea del Sud kr +韓国 kr +대한민국 kr +ເກົາລີໃຕ້ kr +Pietų Korėja kr +DievidKoreja kr +Korea t'Isfel kr +Sør-Korea kr +Zuid-Korea kr +Sør-Korea kr +Borwa bja Korea kr +Corea dèu Sud kr +Korea Południowa kr +Coreia do Sul kr +Coréia do Sul kr +Coreea de Sud kr +Южная Корея kr +Južná Kórea kr +Južna Koreja kr +Južna Koreja kr +I-South Korea kr +Sydkorea kr +¦¾ý ¦¸¡Ã¢Â¡ kr +เกาหลีใต้ kr +Güney Kore kr +Південна Корея kr +Korea tshipembe kr +Hàn Quốc kr +Nonne Coreye kr +Umzantsi Korea kr +韩国 kr +南韓 kr +Emzansi Korea kr +Kuwait kw +Kuwaït kw +الكويت kw +Кувэйт kw +Кувейт kw +Kuvajt kw +Kuvajt kw +Κουβέιτ kw +Kuveit kw +کویت kw +Kuvait kw +Kowait kw +כווית kw +Kuvajt kw +Kuvait kw +クェート kw +쿠웨이트 kw +ແຕ້ມຮູບ- K kw +Kuveitas kw +Koeweit kw +Koweit kw +Kuveit kw +Кувейт kw +Kuvajt kw +Kuvajt kw +I-Kuwait kw +̨Åò kw +KКувейт kw +科威特 kw +科威特 kw +Cayman Islands ky +Кайманови Острови ky +Kajmanska ostrva ky +Cayman-øerne ky +Islas Caimán ky +Kaiman Irlak ky +Kajmán-szigetek ky +ຄາຕາລັນ ky +Ilhas Cayman ky +Kajmanske Ostrovy ky +Kajmanski otoki ky +Caymanöarna ky +Кайманські острови ky +开曼群岛 ky +Kazakhstan kz +Казахстан kz +Казахстан kz +Kazahstan kz +Kazakhstán kz +Kazahsztán kz +ແກແລກຕິກ - K kz +Kazaquistão kz +Kazachstan kz +Kazahstan kz +Kazakstan kz +Казахстан kz +哈萨克斯坦 kz +Laos la +Лаос la +Лаос la +Laosz la +ລາວ la +老挝 la +Lebanon lb +Libanon lb +لبنان lb +Ліван lb +Ливан lb +Liban lb +Libanon lb +Libanon lb +Libanon lb +Λίβανος lb +Lebanono lb +Líbano lb +Liibanon lb +لبنان lb +Libanon lb +Libanon lb +Liban lb +לבנון lb +Libanon lb +Libanon lb +Libano lb +レバノン lb +레바논 lb +ເດນ່ງນ lb +Libanas lb +Libanu lb +Libanon lb +Libanon lb +Libanon lb +Liban lb +Líbano lb +Líbano lb +Liban lb +Ливан lb +Libanon lb +Libanon lb +I-Lebanon lb +Libanon lb +¦ÄÀÉ¡ý lb +Ліван lb +Liban lb +黎巴嫩 lb +黎巴嫩 lb +St. Lucia lc +سانت لوسيا lc +Св. Люсиа lc +S. Lucia lc +Svatá Lucie lc +Σάντα Λουτσία lc +St. Lucio lc +Santa Lucía lc +سن لوسیا lc +Sankta Lusia lc +Sainte Lucie lc +Santa Lucía lc +סנטה לוסיה lc +Santa Lucia lc +セントルキア lc +세인트 루시아 lc +ເຊັນລູເຊີຍ lc +Šv Liucija lc +Sv. Lūcija lc +St. Luċija lc +Santa Lúcia lc +Santa Lúcia lc +Sf. Lucia lc +о. Св. Люсии lc +Sv. Júlia lc +Sv. Lucija lc +I-St. Lucia lc +¦ºýð 溢¡ lc +เซนต์ลูเซีย lc +Санта Лучія lc +圣路西亚 lc +聖露西亞 lc +Liechtenstein li +Ліхтэнштэйн li +Лихтенщайн li +Lihtenštajn li +Liechtestein li +ຟ້າແມບ li +列支敦士登 li +Sri Lanka lk +Шры-Ланка lk +Шри Ланка lk +Šri Lanka lk +ເຊີເບີຍ lk +Šri Lanka lk +斯里兰卡 lk +Liberia lr +Лібэрыя lr +Либеря lr +Liberija lr +Libéria lr +ລິຊາ lr +Libéria lr +Lýbia lr +Liberija lr +利比里亚 lr +Lesotho ls +Лесота ls +Лесото ls +Lesoto ls +Lesoto ls +ທົດສອບ ls +Lesoto ls +莱索托 ls +Lithuania lt +Lithuanië lt +ليتوانيا lt +Litvaniya lt +Літва lt +Литва lt +Litvanija lt +Lituània lt +Litva lt +Litauen lt +Litauen lt +Λιθουανία lt +Litovio lt +Lituania lt +Leedu lt +Lituania lt +لیتوانی lt +Liettua lt +Lituanie lt +ליטא lt +Litva lt +Litvánia lt +Litháenska lt +Lituania lt +リトアニア lt +리 투아니아 lt +ລິທົ່ວເນີຍ lt +Lietuva lt +Lietuva lt +Litwanja lt +Litauen lt +Litouwen lt +Litauen lt +Litwa lt +Lituânia lt +Lituânia lt +Lituania lt +Литва lt +Litva lt +Litva lt +Litvanija lt +I-Lithuania lt +Litauen lt +Ä¢òЧÅɢ¡ lt +ลิธัวเนีย lt +Litvanya lt +Литва lt +立陶宛 lt +立陶宛 lt +Luxembourg lu +Luxenburg lu +لوكسمبورغ lu +Lüksemburq lu +Люксэмбург lu +Люксембург lu +Luksemburg lu +Luxemburg lu +Lucembursko lu +Luxemburg lu +Λουξεμβούργο lu +Luksemburgo lu +Luxemburgo lu +Luksemburg lu +Luxemburg lu +لوگزامبورگ lu +Luxemburg lu +Luksemborg lu +לוקסמבורג lu +Luksemburg lu +Luxemburg lu +Lúxemborg lu +Lussemburgo lu +ルクセンブルグ lu +룩셈부르크 lu +ລັກແຊມເບີກ lu +Liuksemburgas lu +Luksemburga lu +Lussemburgu lu +Luxemburg lu +Luksemburg lu +Luxemburgo lu +Luxemburgo lu +Luxemburg lu +Люксембург lu +Luxemburg lu +Luksemburg lu +Luksemburg lu +I-Luxembourg lu +Luxemburg lu +Äìºõ§À¡÷ì lu +ลักเซมเบอร์ก lu +Lüksemburg lu +Люксембург lu +Lucsimbork lu +卢森堡 lu +盧森堡 lu +Latvia lv +لاتفيا lv +Latviya lv +Латвія lv +Латвия lv +Latvija lv +Lotyšsko lv +Letland lv +Lettland lv +Λιθουανία lv +Latvio lv +Letonia lv +Läti lv +لاتویا lv +Lettonie lv +לטביה lv +Latvija lv +Lettország lv +Léttland lv +Lettonia lv +ラトビア lv +라트비아 lv +ລັດເວີຍ lv +Latvija lv +Latvija lv +Latvja lv +Letland lv +Łotwa lv +Letónia lv +Латвия lv +Lotyšsko lv +Latvija lv +Latvija lv +I-Latvia lv +Lettland lv +ÄðŢ¡ lv +ลัธเวีย lv +Litvanya lv +Латвія lv +Lativia lv +拉脱维亚 lv +拉脫維亞 lv +Libya ly +Libië ly +ليبيا ly +Лівія ly +Либия ly +Libija ly +Líbia ly +Lýbie ly +Libyen ly +Libyen ly +Λιβύη ly +Libia ly +Liibüa ly +Libia ly +لیبی ly +Lybie ly +לוב ly +Líbia ly +Libia ly +リビア ly +ລິຊາ ly +Libija ly +Libië ly +Libia ly +Líbia ly +Líbia ly +Ливия ly +Lýbia ly +Libija ly +I-Libya ly +Libyen ly +Ä¢À¢Â¡ ly +Лівія ly +利比亚 ly +利比亞 ly +Morocco ma +Morokko ma +المغرب ma +Марока ma +Мароко ma +Maroko ma +Marroc ma +Maroko ma +Marokko ma +Marokko ma +Μαρόκο ma +Moroko ma +Marruecos ma +Maroko ma +Maroko ma +مراکش ma +Marokko ma +Marokko ma +Maroc ma +מרוקו ma +Maroko ma +Marokkó ma +Marocco ma +モロッコ ma +모로코 ma +ເມົາລິ ma +Marokas ma +Marokk ma +Marokko ma +Marokko ma +Marokko ma +Maroko ma +Marrocos ma +Marrocos ma +Maroc ma +Марокко ma +Maroko ma +Maroko ma +I-Morocco ma +Marocko ma +§Á¡Ã¡§¸¡ ma +Марокко ma +Marok ma +摩洛哥 ma +摩洛哥 ma +Monaco mc +Манака mc +Монако mc +Monako mc +Mónaco mc +ເມົາລິ mc +Mônaco mc +Monako mc +Monako mc +摩纳哥 mc +Moldova md +Малдова md +Молдова md +Moldavia md +Moldavia md +ສະໂລວັກ md +Moldávsko md +Moldavien md +摩尔多瓦 md +Madagascar mg +Мадагаскар mg +Мадагаскар mg +Madagaskar mg +Madagaszkár mg +ຄາສະບາລ - K mg +Madagaskar mg +Madagaskar mg +Madagaskar mg +马达加斯加 mg +Marshall Islands mh +Маршаллавы астравы mh +Маршалови Острови mh +Maršalova ostrva mh +Marshall-øerne mh +Islas Marshall mh +Marshall Irlak mh +Marshall-szigetek mh +ລາດສະອານາຈັກໄທຍ mh +Ilhas Marshall mh +Maršálove ostrovy mh +Marshallovi otoki mh +Marshallöarna mh +马绍尔群岛 mh +Macedonia mk +Makedoniese mk +مقدونيا mk +Makedonya mk +Македонія mk +Македония mk +Makedonia mk +Makedonija mk +Macedònia mk +Makedonie mk +Makedonien mk +Makedonien mk +Μακεδονία mk +Macedonio mk +Makedoonia mk +Mazedonia mk +مقدونیه mk +Makedonia mk +Macédoine mk +מקדוניה mk +Makedonija mk +Macedónia mk +Masedonia mk +Makedónía mk +マケドニア語 mk +마케도니아 mk +ມາເຊໂດເນີຍ mk +Makedonija mk +Maķedonija mk +Maċedonja mk +Makedonia mk +Macedonië mk +Makedonia mk +Macedònian mk +Macedónia mk +Macedônia mk +Македония mk +Macedónsky mk +Makedonija mk +Makedonija mk +I-Macedonia mk +Makedonien mk +Á¡º¢§¼¡É¢Â¡ mk +มาเซโดเนีย mk +Makedonya mk +Македонія mk +Masedonia mk +马其顿 mk +馬其頓 mk +Mali ml +Малі ml +Мали ml +ຈົດຫມາຍ ml +马里 ml +Myanmar mm +М'янма mm +Майнмар mm +Mjanmar mm +Burma mm +Birmania mm +ຕົວຮງກພີື້ນທີ່ທຳງານ - K mm +Mjanmar mm +缅甸 mm +Mongolia mn +Манголія mn +Монголия mn +Mongolija mn +Mongoliet mn +Mongólia mn +ລອກອິນ mn +Mongólia mn +Mongolsko mn +Mongolija mn +Mongoliet mn +蒙古 mn +Macau mo +Макао mo +Makau mo +Macao mo +Makaó mo +ມອລຕາ mo +Makao mo +Macao mo +澳门 mo +Martinique mq +Мартиника mq +Martinik mq +Martinica mq +ເມົາລິ mq +Martinik mq +马提尼克岛 mq +Mauritania mr +Маўрытанія mr +Мавритания mr +Mauritanija mr +Mauretanien mr +Mauritánia mr +ລິທົວເນີຍ mr +Mauritânia mr +Mavretanija mr +Mauretanien mr +毛里塔尼亚 mr +Montserrat ms +Монсерат ms +Monsera ms +ຈໍພາບ ms +蒙特塞拉特岛 ms +Malta mt +مالطة mt +Мальта mt +Малта mt +Μάλτα mt +Malto mt +مالت mt +Malte mt +מלטה mt +Málta mt +マルタ mt +왈타 mt +ມອລຕາ mt +Мальта mt +I-Malta mt +Á¡ø¼¡ mt +มอลตา mt +Мальта mt +Male mt +马耳他 mt +馬爾他 mt +Mauritius mu +Маўрыцы mu +Маурици mu +Mauricijus mu +Mauricio mu +ພາທິຊັ້ນ mu +Maurícius mu +Mavricij mu +毛里求斯 mu +Maldives mv +Мальдывы mv +Малдиви mv +Maldivi mv +Maldiverne mv +Maldivas mv +Maldív-szigetek mv +ມັລດິສ mv +Maldivas mv +Maldiv mv +Maldiverna mv +马尔代夫 mv +Malawi mw +Малаві mw +Малави mw +Malavi mw +ມອລຕາ mw +马拉维 mw +Mexico mx +Meksiko mx +المكسيك mx +Meksika mx +Мэксыка mx +Мексико mx +Mec'hiko mx +Meksiko mx +Mèxic mx +Mexiko mx +Mexiko mx +Μεξικό mx +Meksikujo mx +México mx +Mehhiko mx +Mexiko mx +مکزیک mx +Meksiko mx +Meksiko mx +Mexique mx +México mx +מקסיקו mx +Meksiko mx +Mexikó mx +Meksiko mx +Mexíkó mx +Messico mx +メキシコ mx +멕시코 mx +ເມັກຊີໂກ mx +Meksika mx +Meksika mx +Messiku mx +Mèxic mx +Meksyk mx +México mx +México mx +Mexic mx +Мексика mx +Mexiko mx +Mehika mx +Meksiko mx +I-Mexico mx +¦Á캢§¸¡ mx +เม็กซิโก mx +Meksika mx +Мексика mx +Mê hi cô mx +Mecsike mx +墨西哥 mx +墨西哥 mx +Malaysia my +Малайзыя my +Малайзия my +Malezija my +Malasia my +Malasia my +Malajzia my +ມອລຕາ my +Malásia my +Malajzia my +Malezija my +马来西亚 my +Mozambique mz +Мазамбік mz +Мозамбик mz +Mozambik mz +Mozambik mz +ຫນ່ວຍຄວາມຈຳ mz +Moçambique mz +Mozambik mz +Mozambik mz +Moçambique mz +莫桑比克 mz +Namibia na +Намібія na +Намибия na +Namibija na +Namíbia na +ຈາໄມກາ na +Namíbia na +Namíbia na +Namibija na +纳米比亚 na +New Caledonia nc +Нова Каледония nc +Nova Kaledonija nc +Ny Caledonien nc +Nueva Caledonia nc +Kaledonia Berria nc +Új-Kaledónia nc +ມາເຊໂດເນີຍ nc +Nova Caledônia nc +Nová Kaledónia nc +Nova Kaledonija nc +Nya Caledonien nc +新喀里多尼亚 nc +Niger ne +Нігер ne +Нигер ne +ຕົວຮງກພື້ນທີ່ທຳງານ ne +Nigéria ne +Nigéria ne +尼日尔 ne +Norfolk Island nf +Остров Норфолк nf +Norfolk ostrvo nf +Norfolk-øerne (Australien) nf +Isla Norfolk nf +Norfok Irla nf +Norfolk-szigetek nf +ໂປແລນ nf +Ilhas Norfolk nf +Ostrov Norfolk nf +Otok Norfolk nf +Norfolkön nf +诺福克岛 nf +Nigeria ng +Нігерыя ng +Нигерия ng +Nigerija ng +Nigéria ng +ບັນແກເລີຍ ng +Nigéria ng +Nigéria ng +Nigerija ng +尼日利亚 ng +Nicaragua ni +Nikaragua ni +نيكاراغوا ni +Нікарагуа ni +Никарагуа ni +Nikaragva ni +Nikaragua ni +Νικαράγουα ni +Nikaraagua ni +نیکاراگویه ni +Nikaragua ni +Nikaragua ni +ניקרגווה ni +ニカラグア ni +니카라과 ni +ປາລາກກວຍ ni +Nikaragua ni +Nikaragwa ni +Nikaragua ni +Nicarágua ni +Nicarágua ni +Никарагуа ni +Nikaragua ni +Nikaragva ni +I-Nicaragua ni +¿¢¸Ã¡Ì§Å ni +Nikaragua ni +Нікарагуа ni +尼加拉瓜 ni +尼加拉瓜 ni +Netherlands nl +Nederland nl +هولندا nl +Hollandiya nl +Галяндыя nl +Холандия nl +Izelvroioù nl +Nizozemska nl +Holanda nl +Nizozemí nl +Holland nl +Niederlande nl +Κάτω Χώρες nl +Nederlando nl +Países Bajos nl +Holland nl +Holanda nl +هلند nl +Alankomaat nl +Háland nl +Pays bas nl +Países Baixos nl +הולנד nl +Nizozemska nl +Hollandia nl +Belanda nl +Holland nl +Paesi Bassi nl +オランダ nl +네덜란드 nl +ເນເທີແລນ์ nl +Olandija nl +Nīderlande nl +Nederland nl +Nederland nl +Nederland nl +Holanda nl +Holandia nl +Países Baixos nl +Holanda nl +Olanda nl +Нидерланды nl +Holandsko nl +Nizozemska nl +Holandija nl +I-Netherlands nl +Nederländerna nl +¦¿¾÷Ä¡óÐ nl +เนเธอร์แลนด์ nl +Hollanda nl +Голландія nl +Hà Lan nl +荷兰 nl +荷蘭 nl +Norway no +Noorweë no +النرويج no +Norveç no +Нарвэгія no +Норвегия no +Norvegia no +Norveška no +Noruega no +Norsko no +Norge no +Norwegen no +Νορβηγία no +Norvegio no +Noruega no +Norra no +Norvegia no +نروژ no +Norja no +Norra no +Norvège no +Noruega no +נורבגיה no +Norveška no +Norvégia no +Norwegia no +Noregur no +Norvegia no +ノルウェー no +노르웨이 no +ນໍເວ no +Norvegija no +Norvēģija no +Norveġja no +Norge no +Noorwegen no +Noreg no +Noruega no +Norwegia no +Noruega no +Noruega no +Norvegia no +Норвегия no +Nórsko no +Norveška no +Norveška no +I-Norway no +Norge no +¿¡÷§Å no +นอร์เวย์ no +Norveç no +Норвегія no +Na uy no +挪威 no +挪威 no +Nepal np +Нэпал np +Непал np +Nepál np +ເວນດາ np +尼泊尔 np +Nauru nr +Науру nr +Науру nr +Naurú nr +ປາລາກກວຍ nr +瑙鲁 nr +Niue nu +Ниуе nu +ເນ໊ຕ nu +纽埃岛 nu +New Zealand nz +Nuwe Seeland nz +نيوزيلاندا nz +Yeni Zellandiya nz +Новая Зэляндыя nz +Нова Зеландия nz +Zeland nevez nz +Novi Zeland nz +Nova Zelanda nz +Nový Zéland nz +Neuseeland nz +Νέα Ζηλανδία nz +Novzelando nz +Nueva Zelanda nz +Uus-Meremaa nz +Zelanda Berria nz +زلاندنو nz +Uusi-Seelanti nz +Nýsæland nz +Nouvelle Zélande nz +Nova Celandia nz +ניו זילנד nz +Novi Zeland nz +Új-Zéland nz +Selandia Baru nz +Nýja Sjáland nz +Nuova Zelanda nz +ニュージーランド nz +뉴질랜드 nz +ນີວຊີແລນ nz +Naujoji Zelandija nz +JaunZēlande nz +Nieuw Zeeland nz +Navera Zelanda nz +Nowa Zelandia nz +Nova Zelândia nz +Nova Zelândia nz +Noua Zeelandă nz +Новая Зеландия nz +Nový Zéland nz +Nova Zelandija nz +Novi Zeland nz +I-New Zealand nz +Nya Zeeland nz +¿¢äº¢Ä¡óÐ nz +นิวซีแลนด์ nz +Yeni Zelanda nz +Нова Зеландія nz +Nouve Zelande nz +新西兰 nz +紐西蘭 nz +Oman om +عُمان om +Аман om +Оман om +Omán om +Ομάν om +Omano om +Omán om +Omaan om +عمان om +עומן om +Omán om +オマーン om +오만 om +ເຍີຍລະມັນ om +Omanas om +Omã om +Оман om +Omán om +I-Oman om +µÁý om +Umman om +Оман om + Oman om +阿曼 om +阿曼 om +Panama pa +بنما pa +Панама pa +Панама pa +Panamà pa +Παναμάς pa +Panamo pa +Panamá pa +پاناما pa +Panamá pa +פנמה pa +パナマ pa +파나마 pa +ປານາມາ pa +Panamá pa +Panamá pa +Панама pa +I-Panama pa +ÀÉ¡Á¡ pa +ปานามา pa +Панама pa +巴拿马 pa +巴拿馬 pa +Peru pe +البيرو pe +Пэру pe +Перу pe +Perou pe +Perú pe +Περού pe +Peruo pe +Perú pe +Peruu pe +پرو pe +Pérou pe +Perú pe +פרו pe +Perú pe +Perù pe +ペルー pe +페루 pe +ເປລູ pe +Perū pe +Pero pe +Perú pe +Перу pe +I-Peru pe +¦ÀÕ pe +เปรู pe +Перу pe +Perou pe +秘鲁 pe +秘魯 pe +French Polynesia pf +Француская Палінэзія pf +Френска Полинезия pf +Francuska Polinezija pf +Fransk Polynesien pf +Polinesia francesa pf +Polinesia Frantziarra pf +Francia-Polinézia pf +ຝຣັ່ງເສດ pf +Polinésia Francesa pf +Francúzska Polynézia pf +Francoska Polinezija pf +Franska Polynesien pf +法属波利尼西亚 pf +Papua New Guinea pg +Папуа–Новая Гвінэя pg +Папуа и Нова Гвинея pg +Papua Nova Gvineja pg +Papua Nueva Guinea pg +Papua Ginea Berria pg +Pápua Új-Guinea pg +ເທົາອ່ອນ pg +Nova Guiné Papua pg +Papua Nová Guinea pg +Papua Nova Gvineja pg +Papua Nya Guinea pg +巴布亚新几内亚 pg +Philippines ph +Філіпіны ph +Филипини ph +Filipini ph +Filippinerne ph +Filipinas ph +Filipinak ph +Fülöp-szigetek ph +ອາລະປະໂຫຍດ ph +Filipinas ph +Filipíny ph +Filipini ph +Filippinerna ph +菲律宾 ph +Pakistan pk +Пакістан pk +Пакистан pk +Pakisztán pk +ລງບ pk +Paquistão pk +巴基斯坦 pk +Poland pl +Poolland pl +بولندا pl +Polşa pl +Польшча pl +Полша pl +Polonia pl +Poljska pl +Polònia pl +Polsko pl +Polen pl +Polen pl +Πολωνία pl +Pollando pl +Polonia pl +Poola pl +Polonia pl +لهستان pl +Puola pl +Pólland pl +Pologne pl +Polonia pl +פולין pl +Poljska pl +Lengyelország pl +Polandia pl +Pólland pl +Polonia pl +ポーランド pl +폴란드 pl +ໂປແລນ pl +Lenkija pl +Polija pl +Polonja pl +Polen pl +Polen pl +Polen pl +Polònia pl +Polska pl +Polónia pl +Polônia pl +Polonia pl +Польша pl +Poľsko pl +Poljska pl +Poljska pl +I-Poland pl +Polen pl +§À¡Ä¡óÐ pl +โปแลนด์ pl +Polonya pl +Польща pl +Pholandi pl +Ba Lan pl +Pologne pl +波兰 pl +波蘭 pl +Saint Pierre and Miquelon pm +Sveti Pjer i Migelon pm +Saint Pierre og Miquelon pm +Saint Pierre y Miquelon pm +Saint Pierre eta Miquelon pm +Saint Pierre és Miquelon pm +Saint Pierre e Miquelon pm +Saint Pierre a Miquelon pm +Sveti Pierre in Miquelon pm +Saint Pierre och Miquelon pm +圣皮埃尔和密克隆岛 pm +Pitcairn pn +Pitkern pn +ລງບ pn +Puerto Rico pr +Пуерто Рико pr +Portoriko pr +ໂປຣໂຕຄອນ pr +Porto Rico pr +Portoriko pr +波多尼各 pr +Palestinian Territory ps +Palesteinse Gebied ps +السلطة الفلسطينية ps +Палестынская тэрыторыя ps +Палестина ps +Palestinska teritorija ps +Territori Palestí ps +Palestinské území ps +Palæstinensiske selvstyreområder ps +Palästinensisches Gebiet ps +Παλαιστίνη ps +Palestinaj teritorioj ps +Territorio palestino ps +Palestiina territoorium ps +Palestina ps +فلسطین ps +Palestiinalaisalue ps +Palestinensiska økið ps +Territoire palestinien ps +השטחים הפלסטיניים ps +Palestinski teritorij ps +Palesztin területek ps +Territori palestinesi ps +パレスチナ自治区 ps +팔레스타인 자치구 ps +ການພິມຜິດພາດ ps +Palestinos teritorija ps +Palestina ps +Palestinske territorier ps +Palestijns territorium ps +Palestinske territorium ps +Bohwa bja Palestina ps +Palestyna ps +Território Palestiniano ps +Território Palestino ps +Teritoriul Palestinian ps +Палестинские территории ps +Palestínske územia ps +Palestinski teritorij ps +I-Palestinian Territory ps +Palestina ps +À¡ÄŠ¾£É ¬¨½Âõ ps +Filistin Bölgesi ps +Палестинська територія ps +Mukano wa maphalesitina ps +Palestene ps +Umhlaba wePalestina ps +巴勒斯坦地区 ps +巴勒斯坦領地 ps +Indawo yama-Phalesitina ps +Portugal pt +البرتغال pt +Portuqaliya pt +Партугалія pt +Португалия pt +Portugalsko pt +Πορτογαλία pt +Portugalo pt +پرتغال pt +Portugali pt +פורטוגל pt +Portugália pt +Portúgal pt +Portogallo pt +ポルトガル pt +포르투갈 pt +ໂປຣຕຸເກສ pt +Portugalija pt +Portugāle pt +Portugall pt +Portugalia pt +Portugalia pt +Португалия pt +Portugalsko pt +Portugalska pt +I-Portugal pt +§À¡÷òиø pt +โปรตุเกส pt +Portekiz pt +Португалія pt +BềEĐào Nha pt +葡萄牙 pt +葡萄牙 pt +Palau pw +Палау pw +Палау pw +ມອລຕາ pw +帕劳群岛 pw +Paraguay py +Paraguaai py +باراغواي py +Paraqvay py +Парагвай py +Парагвай py +Paragvaj py +Paraguai py +Παραγουάη py +Paragvajo py +Paraguai py +پاراگویه py +Paraguai py +פרגואי py +Paragvaj py +パラグアイ py +파라과이 py +ປາລາກກວຍ py +Paragvajus py +Paragvaja py +Paragwaj py +Paraguai py +Paragwaj py +Paraguai py +Paraguai py +Paraguai py +Парагвай py +Portugalsko py +Paragvaj py +Paragvaj py +I-Paraguay py +Àá̧Špy +ปารากวัย py +Парагвай py +Paragway py +巴拉圭 py +巴拉圭 py +Qatar qa +قطر qa +Катар qa +Катар qa +Katar qa +Katar qa +Katar qa +Κατάρ qa +Kataro qa +Katar qa +قطر qa +Katar qa +קטר qa +Katar qa +Katar qa +カタール qa +카타르 qa +ມອລຕາ qa +Katar qa +Катар qa +Katar qa +Katar qa +I-Qatar qa +¸¾¡÷ qa +Katar qa +Катар qa +卡塔尔 qa +卡達 qa +Romania ro +Romenië ro +رومانيا ro +Rumıniya ro +Румынія ro +Румъния ro +Roumania ro +Rumunija ro +Rumunsko ro +Rumænien ro +Rumänien ro +Ρουμανία ro +Rumanio ro +Rumanía ro +Rumeenia ro +Errumania ro +رومانی ro +Rumenia ro +Roumanie ro +Romanía ro +רומניה ro +Rumunjska ro +Románia ro +Rumania ro +Rúmenía ro +ルーマニア ro +루마니아 ro +ໂລມາເນີຍ ro +Rumunija ro +Rumānija ro +Rumanija ro +Roemenië ro +Rumunia ro +Roménia ro +Romênia ro +Румыния ro +Rumunsko ro +Romunija ro +Rumunija ro +I-Romania ro +Rumänien ro +Õ§Áɢ¡ ro +โรมาเนีย ro +Romanya ro +Румунія ro +Ru ma ni ro +Roumaneye ro +罗马尼亚 ro +羅馬尼亞 ro +Russia ru +Rusland ru +روسيا ru +Rusiya ru +Расея ru +Русия ru +Rusia ru +Rusija ru +Rússia ru +Rusko ru +Rusland ru +Russland ru +Ρωσία ru +Ruslando ru +Rusia ru +Venemaa ru +Errusia ru +روسیه ru +Venäjä ru +Russland ru +Russie ru +Rusia ru +רוסיה ru +Rusija ru +Oroszország ru +Rusia ru +Rússland ru +ロシア ru +러시아 ru +ລັດເຊີຍ ru +Rusija ru +Krievija ru +Russja ru +Russland ru +Rusland ru +Russland ru +Rosja ru +Rússia ru +Rússia ru +Rusia ru +Россия ru +Rusko ru +Rusija ru +Rusija ru +I-Russia ru +Ryssland ru +ú¢Â¡ ru +รัสเซีย ru +Rusya ru +Росія ru +Rashia ru +Nga ru +Russeye ru +Rashiya ru +俄罗斯 ru +俄羅斯 ru +Rwanda rw +Руанда rw +Руанда rw +Ruanda rw +Ruanda rw +Ruanda rw +ແພນດ້າ rw +Ruanda rw +Ruanda rw +卢旺达 rw +Saudi Arabia sa +Saudi Arabië sa +السعودية sa +Саудаўская Арабія sa +Саудитска Арабия sa +Saudijska Arabija sa +Aràbia Saudí sa +Saúdská Arábie sa +Saudi Arabien sa +Saudi-Arabien sa +Σαουδική Αραβία sa +Saŭdi-Arabio sa +Arabia Saudí sa +Saudi Araabia sa +عربستان سعودی sa +Saudi-Arabia sa +Arabie Saoudite sa +ערב הסעודית sa +Saudijska Arabija sa +Szaúd-Arábia sa +Arabia saudita sa +サウジアラビア sa +사우디 아라비아 sa +ອາລະບິກ sa +Saudi Arabija sa +Għarabja Sawdita sa +Saudi-Arabia sa +Saudi-Arabië sa +Saudi-Arabia sa +Arabia Saudyjska sa +Arábia Saudita sa +Arábia Saudita sa +Arabia Saudită sa +Саудовская Аравия sa +Saudská arábia sa +Saudova Arabija sa +I-Saudi Arabia sa +Saudiarabien sa +º×¾¢ «§ÃÀ¢Â¡ sa +Suudi Arabistan sa +Саудівська Аравія sa +沙特阿拉伯 sa +沙烏地阿拉伯 sa +Solomon Islands sb +Саламонавы астравы sb +Соломонови Острови sb +Solomonska ostrva sb +Salomon-øerne sb +Islas Salomón sb +Solomon Irlak sb +Salamon-szigetek sb +ສະໂລວະເນີຍ sb +Ilhas Salomão sb +Šalamúnove ostrovy sb +Solomonovi otoki sb +Salomonöarna sb +所罗门群岛 sb +Seychelles sc +Сэйшэлы sc +Сейшелски острови sc +Sejšeli sc +Seychellerne sc +ເຊລ sc +Sejšeli sc +Seychellerna sc +塞舌尔 sc +Sudan sd +السودان sd +Судан sd +Судан sd +Sudán sd +Σουδάν sd +Sudano sd +Sudán sd +Sudaan sd +سودان sd +Sudania sd +Soudan sd +סודן sd +Szudán sd +Súdan sd +スーダン sd +수단 sd +ຊູດານ sd +Sudanas sd +Sudāna sd +Sudão sd +Sudão sd +Судан sd +Sudán sd +I-Sudan sd +ݼ¡ý sd +ซูดาน sd +Судан sd +Sudani sd +Soudan sd +苏丹 sd +蘇丹 sd +Sweden se +Swede se +السويد se +İsveç se +Швэцыя se +Швеция se +Sveden se +Švedska se +Suècia se +Švédsko se +Sverige se +Schweden se +Σουηδία se +Svedio se +Suecia se +Rootsi se +Suedia se +سوید se +Ruotsi se +Svøriki se +Suède se +Suecia se +שבדיה se +Švedska se +Svédország se +Swedia se +Svíþjóð se +Svezia se +スウェーデン se +스웨덴 se +ສະວີເດນ se +Švedija se +Zviedrija se +Svezja se +Sverige se +Zweden se +Sverige se +Suècia se +Szwecja se +Suécia se +Suécia se +Suedia se +Швеция se +Švédsko se +Švedska se +Švedska se +I-Sweden se +Sverige se +ÍÅ£¼ý se +สวีเดน se +İsveç se +Швеція se +Swidene se +Thuỵ Điển se +瑞典 se +瑞典 se +Singapore sg +Сынгапур sg +Сингапур sg +Singapur sg +Singapur sg +Szingapúr sg +ໂຊນາ sg +Singapura sg +Singapur sg +Singapur sg +新加坡 sg +Saint Helena sh +Свети Елена sh +Sveta Helena sh +St. Helena sh +Santa Helena sh +Szent Heléna sh +ຫົວເລື່ອງ sh +Santa Helena sh +Svätá Helena sh +Sveta Helena sh +圣赫勒拿岛 sh +Slovenia si +Slovenië si +سلوفينيا si +Sloveniya si +Славенія si +Словения si +Slovenija si +Eslovenia si +Slovinsko si +Slovenien si +Slowenien si +Σλοβενία si +Slovenio si +Eslovenia si +Sloveenia si +Eslovenia si +اسلوانی si +Slovénie si +Eslovenia si +סלובניה si +Slovenija si +Szlovénia si +Slóvenía si +スロベニア si +슬로베니아 si +ສະໂລວະເນີຍ si +Slovėnija si +Slovēnija si +Slovenja si +Slovenië si +Eslovenia si +Słowenia si +Eslovénia si +Eslovênia si +Словения si +Slovinsko si +Slovenija si +Slovenija si +I-Slovenia si +Slovenien si +ͧġŢɢ¡ si +สโลเวเนีย si +Slovenya si +Словенія si +斯洛文尼亚 si +斯洛維尼亞 si +Slovakia sk +Slovakië sk +سلوفاكيا sk +Slovakiya sk +Славакія sk +Словакия sk +Slovačka sk +Eslovaquia sk +Slovensko sk +Slovakiet sk +Slowakien sk +Σλοβακία sk +Slovakujo sk +Eslovaquia sk +Slovakkia sk +Eslovakia sk +اسلواکی sk +Slovaquie sk +סלובקיה sk +Slovačka sk +Szlovákia sk +Slóvakía sk +Slovacchia sk +スロバキア sk +슬로바키아 sk +ສະໂລວັກ sk +Slovakija sk +Slovākija sk +Slovakja sk +Slovakije sk +Słowacja sk +Eslováquia sk +Eslováquia sk +Slovacia sk +Словакия sk +Slovensko sk +Slovaška sk +I-Slovakia sk +Slovakien sk +ͧġš츢 sk +สโลวัค sk +Slovakya sk +Словакія sk +斯洛伐克 sk +斯洛伐克 sk +San Marino sm +Сан-Марына sm +Сан Марино sm +ໂຊນາ sm +圣马力诺 sm +Senegal sn +Сэнэгал sn +Сенегал sn +Szenegál sn +ທົ່ວໄປ sn +塞内加尔 sn +Somalia so +Somalië so +صومال so +Самалі so +Сомалия so +Somalija so +Somàlia so +Somálsko so +Σομαλία so +Somalio so +Somaalia so +سومالی so +Somalie so +סומליה so +Somalija so +Szomália so +ソマリア so +소말리아 so +ໂລມາເນີຍ so +Somalis so +Somalija so +Somalie so +Somália so +Somália so +Сомали so +Somálsko so +Somalija so +I-Somalia so +§º¡Á¡Ä¢Â¡ so +Somali so +Сомалі so +Somaleye so +索马里 so +索馬利亞 so +Suriname sr +Сурынам sr +Суринам sr +Surinam sr +ເຊີເບີຍ sr +Surinam sr +Surinam sr +Surinam sr +Sao Tome and Principe st +Сан Томе и Приницпе st +Sao Tome i Principe st +Sao Tomé og Principe st +Sao Tome y Príncipe st +Sao Tome eta Principe st +Sao Tome és Principe st +ບໍລິການ st +São Tome e Príncipe st +Sao Tome a Principe st +Sao Tome in Principe st +São Tomé och Príncipe st +El Salvador sv +السلفادور sv +Сальвадор sv +Ел Салвадор sv +Salvador sv +Salvador sv +Ελ Σαλβαντόρ sv +Elsalvadoro sv +Salvador sv +السالوادور sv +Salvador sv +O Salvador sv +אל סלבדור sv +Salvador sv +エルサルバドル sv +엘살바도르 sv +ເອລຊັນວາດດໍ sv +Salvadoras sv +Salvadora sv +Salwador sv +Salvador sv +Сальвадор sv +Salvádor sv +Salvador sv +I-El Salvador sv +±ø º¡øŧ¼¡÷ sv +เอลซัลวาดอร์ sv +Ель-Сальвадор sv +萨尔瓦多 sv +薩爾瓦多 sv +Syria sy +Sirië sy +سوريا sy +Сырыя sy +Сирия sy +Sirija sy +Síria sy +Sýrie sy +Syrien sy +Syrien sy +Συρία sy +Sirio sy +Siria sy +Süüria sy +Siria sy +سوریه sy +Syyria sy +Syrie sy +סוריה sy +Sirija sy +Szíria sy +Siria sy +シリア sy +시리아 sy +ເຊີເບີຍ sy +Sirija sy +Siria sy +Syrië sy +Síria sy +Síria sy +Siria sy +Сирия sy +Sýria sy +Sirija sy +I-Syria sy +Syrien sy +º¢Ã¢Â¡ sy +Suriye sy +Сирія sy +叙利亚 sy +敘利亞 sy +Swaziland sz +Свазылэнд sz +Свазиленд sz +Svazilend sz +Swazilandia sz +Swazilandia sz +Szváziföld sz +ລາດສະນາຈັກໄທຍ sz +Suécia sz +Swazijsko sz +Svazi sz +斯威士兰 sz +Turks and Caicos Islands tc +Turks i Kaikos ostrva tc +Turks- og Caicosøerne tc +Islas Turcos y Caicos tc +Turks eta Caicos Irlak tc +Turks- és Caicos-szigetek tc +Ilhas Caicos e Turca tc +Turks a Caicos ostrovy tc +Otoka Turks in Caicos tc +Turks- och Caicosöarna tc +特克斯和凯科斯群岛 tc +Chad td +Чад td +Чад td +Čad td +Tchad td +Txad td +Csád td +ເກມໄພ່ td +Čad td +Čad td +Tchad td +乍得 td +Togo tg +Тога tg +Того tg +ຂອງເລ່ນສະນຸກ tg +多哥 tg +Thailand th +تايلاند th +Tayland th +Тайлянд th +Тайланд th +Tajland th +Tailàndia th +Thajsko th +Ταϊλάνδη th +Tajlando th +Tailandia th +Tai th +Thailandia th +تایلند th +Thaimaa th +Tailand th +Thaïlande th +Tailandia th +תאילנד th +Tajland th +Thaiföld th +Tæland th +Tailandia th +タイ th +태국 (타이) th +ລາດສະນາຈັກໄທຍ th +Tailandas th +Taivāna th +Tajlandja th +Tailandia th +Tajlandia th +Tailândia th +Tailândia th +Tailanda th +Таиланд th +Thajsko th +Tajska th +Tajland th +I-Thailand th +¾¡öÄ¡óÐ th +ราชอาณาจักรไทย th +Tayland th +Таїланд th +Thái Lan th +Taylande th +泰国 th +泰國 th +Tajikistan tj +Таджыкістан tj +Таджикистан tj +Tadžikistan tj +Tajikistán tj +Tadzsikisztán tj +ໃຕ້ຫວັນ tj +Tajiquistão tj +Tadžikistan tj +Tadžikistan tj +Tadzjikistan tj +塔吉克斯坦 tj +Tokelau tk +Токелао tk +ເບລາລັສ tk +Turkmenistan tm +Туркмэністан tm +Туркменистан tm +Turkmenistán tm +Türkmenisztán tm +ຕຸລະກີ tm +Turquia tm +土库曼斯坦 tm +Tunisia tn +Tunisië tn +تونس tn +Туніс tn +Тунис tn +Tunis tn +Tuníssia tn +Tunisko tn +Tunesien tn +Tunesien tn +Τυνησία tn +Tunisio tn +Túnez tn +Tuneesia tn +تونس tn +Tunesia tn +Tunisie tn +תוניסיה tn +Tunis tn +Tunézia tn +チュニジア tn +튀니지 tn +ລັດເຊີຍ tn +Tunisas tn +Tuneżija tn +Tunisie tn +Tunezja tn +Tunísia tn +Tunísia tn +Тунис tn +Tunisko tn +Tunizija tn +I-Tunisia tn +Tunisien tn +ÐÉ¢º¢Â¡ tn +Tunus tn +Туніс tn +突尼斯 tn +突尼西亞 tn +Tonga to +Тонга to +Тонга to +ໂຊນາ to +汤加 to +East Timor tp +Источен Тимур tp +Istočni Timor tp +Østtimor tp +Timor oriental tp +Ekialdeko Timor tp +Kelet-Timor tp +ວັນແລະເວລາ tp +Timor Leste tp +Východný Timor tp +Vzhodni Timor tp +Östtimor tp +东帝汶 tp +Turkey tr +Turkeye tr +تركيا tr +Türkiyə tr +Турцыя tr +Турция tr +Turkia tr +Turska tr +Turquia tr +Turecko tr +Tyrkiet tr +Türkei tr +Τουρκία tr +Turkujo tr +Turquía tr +Türgi tr +Turkia tr +ترکیه tr +Turkki tr +Turkaland tr +Turquie tr +Turquía tr +טורקיה tr +Turska tr +Törökország tr +Turki tr +Tyrkland tr +Turchia tr +トルコ tr +터키 tr +ຕຸລະກີ tr +Turkija tr +Turcija tr +Turkija tr +Tyrkia tr +Turkije tr +Tyrkia tr +Turquia tr +Turcja tr +Turquia tr +Turquia tr +Turcia tr +Турция tr +Turecko tr +Turčija tr +Turska tr +I-Turkey tr +Turkiet tr +ÐÕ츢 tr +ตุรกี tr +Türkiye tr +Туреччина tr +ThềENhĩ Kì tr +土耳其 tr +土耳其 tr +Trinidad and Tobago tt +Trinidad en Tobago tt +ترينيداد و توباغو tt +Trinidad və Tabaqo tt +Трынідад і Табага tt +Тринидад и Тобаго tt +Trinidad ha Tobago tt +Trinidad i Tobago tt +Trinidad i Tobago tt +Trinidad a Tobago tt +Trinidad og Tobago tt +Trinidad und Tobago tt +Τρίνινταντ και Τομπάγκο tt +Trinidado kaj Tobago tt +Trinidad y Tobago tt +Trinidad ja Tobago tt +Trinidad eta Tobago tt +ترینیداد و تُباگو tt +Trinidad ja Tobago tt +Trinidad og Tobago tt +Trinidad et Tobago tt +Trindade e Tobago tt +טרינידד וטובגו tt +Trinidad i Tobago tt +Trinidad és Tobago tt +Trinidad dan Tobago tt +Trinidad og Tobago tt +Trinidad e Tobago tt +トリニダードトバコ tt +트리니다드토바고 tt +ຕີນິແດດແລະໂທບາໂກ tt +Trinidadas ir Tobagas tt +Trinidada un Tobago tt +Trinidad u Tobago tt +Trinidad og Tobago tt +Trinidad en Tobago tt +Trinidad og Tobago tt +Trinidad le Tobago tt +Trinidad e Tobago tt +Trinidad i Tobago tt +Trinidade e Tobago tt +Trinidad e Tobago tt +Trinidad şi Tobago tt +Тринидад и Тобаго tt +Trinidad a Tobago tt +Trinidad in Tabago tt +Trinidad i Tobago tt +I-Trinidad kanye neTobago tt +Trinidad och Tobago tt +ðâɢ¼¡ð & ¦¼¡À¡§¸¡ tt +ตรีนิแดดและโทบาโก tt +Trinidad veTabago tt +Республіка Трінідад та Тобаго tt +Trinidad na Tobago tt +Trinidad và Tobago tt +Trinidad ne Tobago tt +特里尼达和多巴哥 tt +千里達及托貝哥 tt +Trinidad knaye ne-Tobago tt +Tuvalu tv +Тувалу tv +Тували tv +ຊູລູ tv +图瓦卢 tv +Taiwan tw +تايوان tw +Tayvan tw +Тайвань tw +Тайван tw +Tajvan tw +Ταϊβάν tw +Tajvano tw +Taiwán tw +Taivan tw +تایوان tw +Taivan tw +Taïwan tw +Taiwán tw +טיוואן tw +Tajvan tw +Tajvan tw +台湾 tw +대만 tw +ໃຕ້ຫວັນ tw +Taivanis tw +Taivāna tw +Tajwan tw +Tajwan tw +Formosa tw +Тайвань tw +Tajvan tw +Tajvan tw +I-Taiwan tw +¾¡öÅ¡ý tw +ได้หวัน tw +Tayvan tw +Тайвань tw +Đài Loan tw +中国台湾 tw +台灣 tw +Tanzania, United Republic of tz +Злучаная Рэспубліка Танзанія tz +Танзания tz +Tanzanija, Ujedinjena Republika tz +Tanzania tz +Tanzania, Republica de tz +Tanazia, Errepublika Batua tz +Tanzánia tz +ໂດມິນິກັນ tz +República da Tanzânia tz +Tanzánia, Spojená republika tz +Tanzanija, Združena republika tz +Förenade republiken Tanzania tz +坦桑尼亚 tz +Ukraine ua +Ukraïne ua +أوكرانيا ua +Ukrayna ua +Украіна ua +Украйна ua +Ukraina ua +Ukrajina ua +Ucraïna ua +Ukrajina ua +Ουκρανία ua +Ukrainio ua +Ucrania ua +Ukraina ua +Ukrania ua +اکراین ua +Ukraina ua +Ukraina ua +Ucraína ua +אוקראינה ua +Ukrajina ua +Ukrajna ua +Ukraina ua +Úkraína ua +Ucraina ua +ウクライナ ua +우크라이나 ua +ຍູເຄຣນ ua +Ukraina ua +Ukraina ua +Ukranja ua +Ukraina ua +Oekraïne ua +Ukraina ua +Ucraina ua +Ukraina ua +Ucrânia ua +Ucrânia ua +Ucraina ua +Украина ua +Ukrajina ua +Ukrajina ua +Ukrajna ua +I-Ukraine ua +Ukraina ua +¯ì¦Ãöý ua +ยูเครน ua +Ukrayna ua +Україна ua +Ukraina ua +Ucrinne ua +乌克兰 ua +烏克蘭 ua +Uganda ug +Уганда ug +Уганда ug +ແພນດ້າ ug +乌干达 ug +United States of America us +Vereenigde State van Amerika us +الولايات المتحدة الأمريكية us +Amerika Birləşmiş Ştatları us +Злучаныя Штаты Амэрыкі us +САЩ us +Stadoù-Unanet Amerika us +Sjedinjene Američke Države us +Estats Units d'Amèrica us +Spojené státy americké us +USA us +USA us +Ην. Πολιτείες της Αμερικής us +Usono us +Estados Unidos de América us +Ameerika Ühendriigid us +Amerikako Estatu Batuak us +ایالات متحده‌ی آمریکا us +Yhdysvallat us +Sambandsríki Amerika (USA) us +États Unis d'Amérique us +Estados Unidos de América us +ארצות הברית us +Sjedinjene Američke Države us +Amerikai Egyesült Államok us +Amerika Serikat us +Bandaríki Norður Ameríku us +Stati Uniti d'America us +アメリカ us +미 합중국 us +ສະຫະລັດອາເມລິກາ us +Jungtinės Amerikos Valstijos us +Amerikas Savienotās Valstis us +Stati Uniti us +USA us +Verenigde Staten van Amerika us +USA us +Estats Units d'Amèrica us +Stany Zjednoczone Ameryki us +Estados Unidos da América us +Estados Unidos us +Statele Unite ale Americii us +Соединенные Штаты Америки us +USA us +Združene države Amerike us +Sjedinjene američke države us +I-United States of America us +Amerikas förenta stater us +³ì¸¢Â «¦ÁÃ¢ì¸ ¿¡Î¸û us +สหรัฐอเมริกา us +Amerika Birleşik Devletleri us +США us +mashango o tangananaho a America us +Mĩ us +United States ye Melika us +美利坚合众国 us +美利堅合眾國 us +Uruguay uy +الأوروغواي uy +Uruqvay uy +Уругвай uy +Уругвай uy +Urugvaj uy +Uruguai uy +Ουρουγουάη uy +Urugvajo uy +Uruguai uy +اروگویه uy +Uruguai uy +אורוגואי uy +Urugvaj uy +ウルグアイ uy +우루과이 uy +ອຸລຸກກວຍ uy +Urugvajus uy +Urugvaja uy +Urugwaj uy +Uruguai uy +Urugwaj uy +Uruguai uy +Uruguai uy +Uruguai uy +Уругвай uy +Uruguaj uy +Urugvaj uy +Urugvaj uy +I-Uruguay uy +¯Õ̧Šuy +อุรุกวัย uy +Уругвай uy +Ourougway uy +乌拉圭 uy +烏拉圭 uy +Uzbekistan uz +Узбэкістан uz +Узбекистан uz +Uzbekistán uz +Üzbegisztán uz +ເດນ່ງນ uz +Uzbequistão uz +乌兹别克斯坦 uz +Vatican City va +Ватыкан va +Ватикана va +Vatikan va +Vatikanstaten va +Vaticano va +Batikano Hiria va +Vatikán va +ລັດເວີຍ va +Cidade do Vaticano va +Vatikán va +Vatikan va +Vatikanstaten va +梵蒂冈 va +St. Vincent and the Grenadines vc +St. Vincent en die Grenadene vc +سانت فينسنت و الغرينادين vc +St. Vincent və Grenadines vc +Сент-Винсент и Гренадине vc +S. Visant hag ar Grenadinez vc +Sveti Vincent i Grenadini vc +St. Vincent i les Granadines vc +St. Vincent a Grenadiny vc +St. Vincent og Grenadinerne vc +St. Vincent und Grenadinen vc +St. Vincent kaj la Grenadinoj vc +San Vicente y las Granadinas vc +St. Vincent ja Grenadines vc +St. Vincent eta Grenadines vc +سن وینسن و گرادینس vc +St. Vincent ja Grenadiinit vc +Sankta Vinsent og Grenadinoyggjar vc +St Vincent et les Grenadines vc +San Vicente e as Granadinas vc +סנט וינסנט והגרנדינים vc +St. Vincent és Grenadines vc +St. Vincent dan the Grenadines vc +St. Vincent og Grenadines vc +S. Vincent e the Grenadines vc +セントヴィンセントグレナディン vc +세인트 빈센트 그레나딘 vc +ເຊີນວິນແຊນ ແລະເກນາດີນ vc +Šv. Vincentas ir Grenadinai vc +Sv. Vincents un Grenadīnes vc +St. Vinċenz u l-Grenadini vc +St. Vincent og Grenadinene vc +St. Vincent en de Grenadines vc +St. Vincent og Grenadinane vc +St. Vincent le Grenadines vc +St. Vincent e les Granadines vc +St. Vincent i Grenadyny vc +São Vicente e Grenadinas vc +São Vicente e Grenadines vc +Sf. Vincent şi Grenadines vc +Сент-Винсент и Гренадины vc +St. Vincent a Grenadines vc +Sv. Vincent in Grenadini vc +St. Vincent i Grenadine vc +I-St. Vincent and the Grenadines vc +St. Vincent och Grenadinerna vc +¦ºÂ¢ýð Å¢ý¦ºýð & ¸¢¦ÃÉËý¸û vc +เซนต์วินเซนต์ และ เกรนาดีน vc +St. Vincent ve Grenadines vc +Сент-Вінсент і Гренадіни vc +St. Vincent na Grenadines vc +St. Vincent và Grenadines vc +St. Vincent ne Grenadines vc +圣文森特和格林那达 vc +聖文森及格納那丁 vc +I-St. Vincent kanye ne-Grenadines vc +Venezuela ve +فنزويلا ve +Вэнэсуэла ve +Венецуела ve +Venecuela ve +Βενεζουέλα ve +Venezuelo ve +Venetsueela ve +ونزویلا ve +Venesuela ve +Vénézuela ve +ונצואלה ve +Venecuela ve +ベネズェラ ve +베네수엘라 ve +ເວເນຊຸເອລາ ve +Venesuela ve +Venecuēla ve +Veneżwela ve +Wenezuela ve +Венесуэла ve +Venecuela ve +I-Venezuela ve +¦ÅÉ¢ÍÅÄ¡ ve +เวเนซูเอลา ve +Венесуела ve +委内瑞拉 ve +委內瑞拉 ve +Virgin Islands, British vg +Вирджински Острови, Британски vg +Djevičanska ostrva, Britanska vg +Britiske jomfruøer vg +Islas Vírgenes Británicas vg +Irla Birjinak, Britaniar vg +Virgin-szigetek (brit) vg +Ilhas Virgens, Inglaterra vg +Panenské Ostrovy, Britské vg +Deviški otoki, Britanski vg +Brittiska Jungfruöarna vg +维尔京群岛,英国 vg +Virgin Islands, U.S. vi +Вирджински Острови, Американски vi +Djevičanska ostrva, Američka vi +Jomfruøerne vi +Islas Vírgenes Americanas vi +Irla Birjinak, EE.BB. vi +Virgin-szigetek (USA) vi +Ilhas Virgens, EUA vi +Panenské Ostrovy, Americké vi +Deviški otoki, ZDA vi +Amerikanska Jungfruöarna vi +维尔京群岛,美国 vi +Vietnam vn +Viëtnam vn +فييتنام vn +Vyetnam vn +Віетнам vn +Виетнам vn +Vijetnam vn +Βιετνάμ vn +Vjetnamo vn +ویتنام vn +וייטנאם vn +Vijetnam vn +Víetnam vn +ベトナム vn +베트남 vn +ຫວງດນາມ vn +Vietnamas vn +Vjetnama vn +Vjetnam vn +Viëtnam vn +Wietnam vn +Vietname vn +Vietnã vn +Вьетнам vn +I-Vietnam vn +เวียตนาม vn +В'єтнам vn +越南 vn +越南 vn +Vanuatu vu +Вануату vu +Ванути vu +ຈີນ vu +瓦努阿图 vu +Wallis and Futuna wf +Valis i Futuna wf +Wallis- og Futuna-øerne wf +Wallis y Futuna wf +Wallis eta Futuna wf +Wallis és Futuna wf +ປັກອິນພາບ wf +Wallis e Futuna wf +Wallis a Futuna wf +Wallis in Futuna wf +Wallis och Futuna wf +Samoa ws +Самоа ws +Самоя ws +Szamoa ws +ໂຊນາ ws +萨摩亚群岛 ws +Yemen ye +اليمن ye +Емен ye +Йемен ye +Jemen ye +Iemen ye +Jemen ye +Jemen ye +Υεμένη ye +Jemeno ye +Jeemen ye +یمن ye +Jemen ye +Jemen ye +תימן ye +Jemen ye +Jemen ye +イエメン ye +예멘 ye +ເດມອນ ye +Jemenas ye +Jemen ye +Jemen ye +Jemen ye +Jemen ye +Jemen ye +Iémen ye +Йемен ye +Jemen ye +Jemen ye +I-Yemen ye +Jemen ye +§ÂÁý ye +Ємен ye +也门 ye +葉門 ye +Yugoslavia yu +Югаславія yu +Югославия yu +Jugoslavija yu +Jugoslavien (Serbien/Montenegro) yu +Jugoszlávia yu +ໂບລິເວີຍ yu +Iugoslávia yu +Juhoslávia yu +Jugoslavija yu +Jugoslavien yu +南斯拉夫 yu +South Africa za +Suid Afrika za +جنوب أفريقيا za +Cənubi Afrika za +Паўднёвая Афрыка za +Южна Африка za +Suafrika za +Južna Afrika za +Sudàfrica za +Jižní Afrika za +Sydafrikanske republik za +Südafrika za +Νότια Αφρική za +Sudafriko za +Sudáfrica za +Lõuna Aafrika za +Hego Afrika za +آفریقای جنوبی za +Etelä-Afrikka za +Suðurafrika za +Afrique du sud za +África do Sur za +דרום אפריקה za +Južna Afrika za +Dél-Afrika za +Afrika Selatan za +Suður Afríka za +Sud Africa za +南アフリカ za +남 아프리카 공화국 za +ແອບພິກາໃຕ້ za +Pietų Afrika za +Dienvid Āfrika za +Afrika t'Isfel za +Sør-Afrika za +Zuid-Afrika za +Sør-Afrika za +Afrika Borwa za +Sudafrica za +Afryka Południowa za +Africa do Sul za +África do Sul za +Africa de Sud za +Южная Африка za +Južná Afrika za +Južna Afrika za +Južna Afrika za +I-South Africa za +Sydafrika za +¦¾ý ¬ôâ측 za +แอฟริกาใต้ za +Güney Afrika za +Південна Африка za +Afurika tshipembe za +Nam Phi za +Mzantsi Afrika za +南非 za +南非 za +Emzantsi Afrika za +Zambia zm +Замбія zm +Замбия zm +ຈາໄມກາ້ zm +Zâmbia zm +Zambija zm +赞比亚 zm +Zimbabwe zw +Зымбабвэ zw +Зимбабве zw +Zimbabve zw +ລິຊາ zw +Zimbabve zw +津巴布韦 zw +Andorra ad +Андора ad +Андора ad +Andora ad +ອີນເດີຍ ad +Andora ad +Андорра ad +安道尔 ad +United Arab Emirates ae +Vereenigde Arabiese Emirate ae +الإمارات العربية المتحدة ae +Злучаныя Арабскія Эміраты ae +Обединени Арабски Емирства ae +Ujedinjeni arapski emirati ae +Emirats Àrabs Units ae +Spojené arabské emiráty ae +Forenende Arabiske Emirater ae +Vereinigte Arabische Emirate ae +Ενωμένα Αραβικά Εμιράτα ae +Emiratos árabes unidos ae +Araabia Ühendemiraadid ae +Arabiar Emirato Batuak ae +امارات متحده عربی ae +Yhdistyneet Arabiemiraatit ae +Émirats Arabes Unis ae +איחוד האמירויות הערביות ae +Ujedinjeni arapski emirati ae +Egyesült Arab Emirátusok ae +Emirati arabi uniti ae +アラブ首長国連邦 ae +아랍 에미레이트 연합 ae +ສະຫະລັດ ae +Jungtiniai Arabų Emiratai ae +Emirati Għarab Magħquda ae +De forente arabiske emirater ae +Verenigde Arabische Emiraten ae +Dei sameinte arabiske emirata ae +Di-Emirate tseo di Kopanego tsa Arab ae +Zjednoczone Emiraty Arabskie ae +Emiratos Árabes Unidos ae +Emirados Árabes ae +Emiratele Arabe Unite ae +Объединенные Арабские Эмираты ae +Spojené arabské emiráty ae +Združeni arabski Emirati ae +Förenade arabemiraten ae +³ì¸¢Â «ÃÒ ¿¡Î¸û ae +Birleşik Arap Emirlikleri ae +Об'єднані Арабські Емірати ae +Mashango o tangananaho a Emirates ae +阿拉伯联合酋长国 ae +阿拉伯聯合大公國 ae +Izindawo zezinduna zase-United Arab ae +Afghanistan af +Афганістан af +Афганистан af +Afganistan af +Afghanistán af +Afganisztán af +ລີທົ່ວເນີຍ af +Afeganistão af +Afganistan af +Afganistan af +Afganistan af +Афганістан af +阿富汗 af +Antigua and Barbuda ag +Antigue en Barbuda ag +أنتيغوا و باربودا ag +Antigua və Barbuda ag +Антыгуа і Барбуда ag +Антигуа и Барбадос ag +Antigua ha Barbuda ag +Antigua i Barbuda ag +Antigua i Barbuda ag +Antigua a Barbuda ag +Antigua og Barbuda ag +Antigua und Barbuda ag +Antigua και Barbuda ag +Antigvo kaj Barbudo ag +Antigua y Barbuda ag +Antigua ja Barbuda ag +Antigua eta Barbuda ag +آنتیگوا و باربودا ag +Antigua ja Barbados ag +Antigua og Barbuda ag +Antigua et Barbuda ag +Antiga e Barbuda ag +אנטיגואה וברבודה ag +Antigua i Barbuda ag +Antigua és Barbuda ag +Antigua dan Barbuda ag +Antigúa og Barbúda ag +Antigua e Barbuda ag +アンティグアバーブーダ ag +앤티가 바부다 ag +Antikva ir Barbuda ag +Antigva un Barbudas ag +Antigwa u Barbuda ag +Antigua og Barbuda ag +Antigua en Barbuda ag +Antigua og Barbuda ag +Antigua le Barbuda ag +Antigua e Barbuda ag +Antigua i Barbuda ag +Antigua e Barbuda ag +Antigua e Barbuda ag +Antigua şi Barbuda ag +Антигуа и Барбадос ag +Antigua a Barbuda ag +Antigva in Barbuda ag +Antigua i Barbuda ag +I-Antigua kanye ne Barbuda ag +Antigua och Barbuda ag +¬ýÊÌÅ¡ & À¡÷Ò¼¡ ag +Antigua ve Barbuda ag +Трінідад та Тобаго ag +Antigua và Barbuda ag +Antigua eyet Barbuda ag +Antigua ne Barbuda ag +安地瓜岛和巴布达岛 ag +安地瓜島和巴布達島 ag +Antigua kanye ne-Barbuda ag +Anguilla ai +Ангуила ai +ແພນວິນ ai +Angvila ai +Ангілья ai +安圭拉 ai +Albania al +Альбанія al +Албания al +Albanija al +Albanien al +Albánia al +ແອດແລນຕິກ al +Albânia al +Albánsko al +Albanija al +Albanien al +Албанія al +阿尔巴尼亚 al +Armenia am +Армэнія am +Армения am +Armenija am +Armenien am +Örményország am +ອາເຈນຕິນາ am +Armênia am +Arménsko am +Armenija am +Armenien am +Арменія am +亚美尼亚 am +Netherlands Antilles an +Холандски Антили an +Nizozemski Antili an +Nederlandske antiller an +Antillas holandesas an +Antilla Holandarrak an +Holland-Antillák an +ເນເທີແລນ an +Antilhas an +Holandské Antily an +Nizozemski Antili an +Nederländska Antillerna an +Голландські Антилли an +荷属安的列斯群岛 an +Angola ao +Ангола ao +Ангола ao +ບັນແກເລີຍ ao +Ангола ao +安哥拉 ao +Argentina ar +Argentinië ar +الأرجنتين ar +Аргентына ar +Аржентина ar +Arc'hantina ar +Argentinien ar +Αργεντινή ar +Argentino ar +Argentiina ar +آرژانتین ar +Agentiina ar +Argentine ar +Arxentina ar +ארגנטינה ar +Argentína ar +Argentína ar +アルゼンチン ar +아르헨티나 ar +ອາເຈນຕິນາ ar +Argentīna ar +Arġentina ar +Argentinië ar +Argentyna ar +Аргентина ar +Argentína ar +I-Argentina ar +¬÷¦ºƒýÊÉ¡ ar +อาร์เจนตินา ar +Arjantin ar +Аргентина ar +Agenthina ar +Årdjintene ar +阿根廷 ar +阿根廷 ar +American Samoa as +Амэрыканскае Самоа as +Американска Самоа as +Američka Samoa as +Samoa (USA) as +Samoa americana as +Amerikako Samoa as +Amerikai Szamoa as +ອາເມລິກາເຫນືອ as +Samoa Americana as +Americká Samoa as +Ameriška Samoa as +Amerikanska Samoa as +Американське Самоа as +美属萨摩亚群岛 as +Austria at +Oostenryk at +النمسا at +Avstriya at +Аўстрыя at +Австрия at +Aostria at +Austrija at +Àustria at +Rakousko at +Østrig at +Österreich at +Αυστρία at +Aŭstrio at +اتریش at +Itävalta at +Eysturríki at +Autriche at +אוסטריה at +Austrija at +Ausztria at +Austurríki at +オーストリア at +오스트리아 at +ອອດສະເຕເລີຍ at +Austrija at +Austrija at +Awtrija at +Østerrike at +Oostenrijk at +Austerrike at +Áustria at +Áustria at +Австрия at +Rakúsko at +Avstrija at +Austrija at +I-Austria at +Österrike at +¬Íò¾¢Ã¢Â¡ at +ออสเตรีย at +Avusturya at +Австрія at +Ositiria at +A'o at +Ôtriche at +奥地利 at +奧地利 at +Australia au +Australië au +أستراليا au +Avustralya au +Аўстралія au +Австралия au +Aostralia au +Australija au +Austràlia au +Austrálie au +Australien au +Australien au +Αυστραλία au +Aŭstralio au +Austraalia au +استرالیا au +Australie au +אוסטרליה au +Australija au +Ausztrália au +Ástralía au +オーストラリア au +오스트레일리아 au +ອອດສະເຕເລີຍ au +Australija au +Austrālija au +Awstralja au +Australië au +Austrália au +Austrália au +Австралия au +Austrália au +Avstralija au +Australija au +I-Australia au +Australien au +¬ŠÍò¾¢§ÃĢ¡ au +ออสเตรเลีย au +Avusturalya au +Австралія au +Ositiralia au +U'c au +Ôstraleye au +澳大利亚 au +澳大利亞 au +Aruba aw +Аруба aw +ເກມໄັພ່ aw +Аруба aw +阿鲁巴岛 aw +Azerbaijan az +أذربيجان az +Azərbaycan az +Азэрбайджан az +Азарбайджан az +Azerbejdžan az +Azerbaitjan az +Ázerbajdžánský az +Azerbajdjan az +Aserbaidschan az +Αζερμπαϊτζάν az +Azerbajĝana az +Azerbaiján az +Aserbaidžaan az +آذربایجان az +Azerbaidzan az +Aserbadsjan az +אזרביג'ן az +Azerbejdžan az +Azerbajdzsán az +Azerbaigian az +アゼルバイジャン az +아제르바이잔 az +ອາເຊີໄບຈັນ az +Azerbaidžanas az +Azerbaidžāņu az +Ażerbajġan az +Aserbajdsjan az +Azerbeidjan az +Aserbajdsjan az +Azerbejdżan az +Azerbaijão az +Turco az +Azerbadjan az +Азербайджан az +Ázerbajdžánsky az +Azerbajdžan az +Azerbejdžan az +I-Azerbaijan az +«º÷¨Àº¡ý az +อาร์เซอร์ไบจัน az +Azerice az +Азербайджан az +Azerbaydjan az +阿塞拜疆 az +亞塞拜然 az +Bosnia and Herzegovina ba +Bosnië en Herzegovina ba +البوسنا و الهرسك ba +Босьнія і Герцагавіна ba +Боснена и Херцеговина ba +Bosna i Hercegovina ba +Bòsnia i Hercegovina ba +Bosna a Herzegovina ba +Bosnien-Herzegovina ba +Bosnien und Herzegowina ba +Βοσνία και Ερζεγοβίνη ba +Bosnio kaj Hercegovino ba +Bosnia y Herzegovina ba +Bosnia ja Hertsegovina ba +Bosnia eta Herzegovina ba +بوسنی و هرزگوین ba +Bosnia ja Herzegovina ba +Bosnia-Herzegovina ba +Bosnie herzégovine ba +בוסניה הרצגובינה ba +Bosna i Hercegovina ba +Bosznia-Hercegovina ba +Bosnia e Erzegovina ba +ボスニアヘルツェゴビナ ba +보스니아어와 헤르체고비나 ba +ບອສເນີຍ ແລະ ເຫີເຊີໂກວິນາ ba +Bosnija ir Hercegovina ba +Bosnija un Hercogovina ba +Bożnia u Ħerżegovina ba +Bosnia-Hercegovina ba +Bosnië en Herzegovina ba +Bosnia-Hercegovina ba +Bosnia le Herzegovina ba +Bośnia i Hercegowina ba +Bósnia e Herzegovina ba +Bósnia Herzegóvina ba +Bosnia şi Herţegovina ba +Босния и Герцеговина ba +Bosna a Hercegovina ba +Bosna in Hercegovina ba +I-Bosnia kanye ne Herzegovina ba +Bosnien och Herzegovina ba +¦À¡Íɢ¡ ba +บอสเนีย และ เฮอร์เซโกวินา ba +Bosna Hersek ba +Боснія та Герцеговина ba +Mubosinia na Muhezegovina ba +Bosneye ba +Bosnia ne Herzegovina ba +波斯尼亚和黑塞哥维那 ba +波士尼亞與赫塞哥維納 ba +Bosnia kanye ne-Herzegovina ba +Barbados bb +بربادوس bb +Барбадос bb +Барбадос bb +Μπαρμπάντος bb +Babadoso bb +باربادوس bb +Barbade bb +ברבדוס bb +バルバドス bb +바르바도스 bb +ບາລບາດອດສ bb +Barbadosas bb +Barbadosa bb +Барбадос bb +I-Barbados bb +À¡÷§À¼¡Í bb +บาร์บาดอส bb +Барбадос bb +Barbades bb +巴巴多斯 bb +巴貝多 bb +Bangladesh bd +بنغلاديش bd +Banqladeş bd +Банглядэш bd +Бангладеш bd +Bangladeš bd +Bangladéš bd +Bangladesch bd +Μπαγκλαντές bd +Bangladeŝo bd +بنگلادش bd +בנגלדש bd +Bangladeš bd +Banglades bd +バングラデシュ bd +방글라데시 bd +ບັງຄະລາເທດ bd +Bangladešas bd +Bangladeša bd +Bangladexx bd +Bangladesz bd +Banglade bd +Бангладеш bd +Bangladéš bd +Bangladeš bd +I-Bangladesh bd +Àí¸Ç¡§¾Í bd +บังคลาเทศ bd +Bangladeş bd +Бангладеш bd +孟加拉 bd +孟加拉 bd +Belgium be +België be +بلجيكا be +Belçika be +Бэльгія be +Белгия be +Belgia be +Belgija be +Bèlgica be +Belgie be +Belgien be +Belgien be +Βέλγιο be +Belgio be +Bélgica be +Belgia be +Belgika be +بلژیک be +Belgia be +Belgia be +Belgique be +Bélxica be +בלגיה be +Belgija be +Belgia be +Belgía be +Belgio be +ベルギー be +벨기에 be +ເບລຢ່ງມ be +Belgija be +Beļģija be +Belġju be +Belgia be +België be +Belgia be +Bèlgica be +Belgia be +Bélgica be +Bélgica be +Belgia be +Бельгия be +Belgicko be +Belgija be +Belgija be +I-Belgium be +Belgien be +¦Àøº¢Âõ be +เบลเยียม be +Belçika be +Бельгія be +Beljike be +比利时 be +比利時 be +Burkina Faso bf +Буркіна Фасо bf +Буркина Фаско bf +ຕຸລະກີ bf +Буркіна Фасо bf +布基纳法索 bf +Bulgaria bg +Bulgarye bg +بلغاريا bg +Bolgarıstan bg +Баўгарыя bg +България bg +Bugarska bg +Bulgària bg +Bulharsko bg +Bulgarien bg +Bulgarien bg +Βουλγαρία bg +Bulgario bg +Bulgaaria bg +بلغارستان bg +Bulgarie bg +בולגריה bg +Bugarska bg +Bulgária bg +Búlgaría bg +ブルガリア bg +불가리아 bg +ບັນແກເລີຍ bg +Bulgarija bg +Bulgārija bg +Bulgarija bg +Bulgarije bg +Bułgaria bg +Bulgária bg +Bulgária bg +Болгария bg +Bulharsko bg +Bolgarija bg +Bugarska bg +I-Bulgaria bg +Bulgarien bg +Àø§¸Ã¢Â¡ bg +บัลแกเรีย bg +Bulgaristan bg +Болгарія bg +Baligaria bg +Bulgåreye bg +保加利亚 bg +保加利亞 bg +Bahrain bh +البحرين bh +Бахрэйн bh +Бахрейн bh +Bahrein bh +Bahrajn bh +Μπαχρέιν bh +Bahrein bh +Bahrein bh +بحرین bh +בחריין bh +バーレーン bh +바레인 bh +ຖັກກ່ງວ bh +Bahreinas bh +Baħrain bh +Baghrein bh +Bahrajn bh +Bahamas bh +Bahrein bh +Бахрейн bh +Bahrajn bh +Bahrajn bh +I-Bahrain bh +Bahrein bh +À‹¨Ãý bh +Bahreyn bh +Бахрейн bh +巴林 bh +巴林 bh +Burundi bi +Бурундзі bi +Бурунди bi +ເຄອຣດ bi +Бурунді bi +布隆迪 bi +Benin bj +Бэнін bj +Бенин bj +ບອສເນີຍ bj +Бенін bj +贝宁 bj +Bermuda bm +Бэрмуды bm +Бермуда bm +ເຍລລະມັນ bm +Bermudy bm +Bermudi bm +Бермуди bm +百慕大 bm +Brunei Darussalam bn +Брунэй bn +Бруней bn +Brunei bn +Brunei Szultánság bn +ເບລາລັສເຊີຍ bn +Brunei bn +Brunei Darusalam bn +Бруней Даруссалам bn +Bolivia bo +Bolivië bo +بوليفيا bo +Boliviya bo +Балівія bo +Боливия bo +Bolivija bo +Bolívia bo +Bolívie bo +Bolivien bo +Βολιβία bo +Bolivio bo +Boliivia bo +بولیوی bo +Bolivie bo +בוליביה bo +Bolivija bo +Bolívia bo +Bólivía bo +ボリビア bo +볼리비아 bo +ໂບລີເວີຍ bo +Bolivija bo +Bolīvija bo +Bolivja bo +Boliwia bo +Bolívia bo +Bolívia bo +Боливия bo +Bolívia bo +Bolivija bo +Bolivija bo +I-Bolivia bo +¦À¡Ä¢Å¢Â¡ bo +โบลิเวีย bo +Bolivya bo +Болівія bo +Boliveye bo +波利维亚 bo +玻利維亞 bo +Brazil br +Brazilië br +البرازيل br +Braziliya br +Бразылія br +Бразилия br +Brasil br +Brazílie br +Brasilien br +Brasilien br +Βραζιλία br +Brazilo br +Brasil br +Brasiilia br +Brasil br +برزیل br +Brasilia br +Brésil br +Brasil br +ברזיל br +Brazília br +Brasilía br +Brasile br +ブラジル br +브라질 br +ບາຊີລ br +Brazilija br +Brazīlija br +Brażil br +Brasil br +Brazilië br +Brasil br +Brasil br +Brazylia br +Brasil br +Brasil br +Brazilia br +Бразилия br +Brazília br +Brazilija br +I-Brazil br +Brasilien br +À¢§Ãº¢ø br +บราซิล br +Brezilya br +Бразилія br +Burazili br +Braezi br +巴西 br +巴西 br +Bahamas bs +Багамы bs +Бахами bs +Bahami bs +Bahamák bs +ປານາມາ bs +Bahamy bs +Bahami bs +Багами bs +巴哈马 bs +Bhutan bt +Бутан bt +Бутан bt +Butan bt +Bhután bt +Bhután bt +ຖັກກ່ງວ bt +Butan bt +Бутан bt +不丹 bt +Botswana bw +Батсвана bw +Боцвана bw +Bocvana bw +ບອດສເນີຍ bw +Botsvana bw +Ботсвана bw +博茨瓦纳 bw +Belarus by +روسيا البيضاء by +Беларусь by +Беларус by +Bjelorusija by +Bělorusko by +Hviderusland by +Weißrussland by +Bjelorusio by +Valgevene by +بلاروس by +Valkovenäjä by +Hvítarusland by +Bélarus by +בלרוס by +Bjelorusija by +Fehéroroszország by +Hvíta-Rússland by +Bielorussia by +ベラルーシ by +벨라루스 by +ເບລາລັສ by +Baltarusija by +Baltkrievu by +Hviterussland by +Wit-Rusland by +Kviterussland by +Białoruś by +Bielorússia by +Bielorusso by +Беларусь by +Bielorusko by +Belorusija by +I-Belarus by +Vitryssland by +¦ÀÄ¡åÍ by +เบลารัส by +Білорусія by +Belaruss by +白俄罗斯 by +白俄羅斯 by +Belize bz +Бэлізе bz +Белиз bz +ເບລຍ່ງມ bz +Беліз bz +伯利兹 bz +Default C +Verstek C +افتراضي C +Əsas C +Па ўмаўчаньні C +По подразбиране C +Dre ziouer C +Omissió C +Výchozí C +Standard C +Standard C +Προκαθορισμένο C +Apriora C +Predeterminado C +Vaikimisi C +Aurremugatua C +پیش‌فرض C +Oletus C +Forsettur C +Par défaut C +Por Omisión C +ברירת מחדל C +Uobičajeno C +Alapértelmezett C +Standar C +Sjálfgefið C +Predefinito C +標準 C +기본 C +ຄ່າປະລິຍາຍ C +Nutylima C +Noklusētais C +Normali C +Standard C +Standaard C +Standard C +Thuso ya Tshoganetso C +Omission C +Domyślnie C +Por Omissão C +Padrão C +Implicit C +По умолчанию C +Štandardný C +Privzeto C +Predefinisano C +Förval C +¦¸¡¼¡¿¢¨Ä C +ค่าปริยาย C +Öntanımlı C +Типовий C +Mặc định C +Prémetou C +Okwendalo C +默认 C +預設 C +Okwendalo C +Canada ca +Kanada ca +كندا ca +Kanada ca +Канада ca +Канада ca +Kanada ca +Kanada ca +Canadà ca +Kanada ca +Kanada ca +Καναδάς ca +Kanado ca +Canadá ca +Kanada ca +Kanada ca +کانادا ca +Kanada ca +Kanada ca +Canadá ca +קנדה ca +Kanada ca +Kanada ca +Kanada ca +Kanada ca +カナダ ca +캐나다 ca +ແຄນາດາ ca +Kanada ca +Kanāda ca +Kanada ca +Kanada ca +Canadá ca +Canadá ca +Канада ca +Kanada ca +Kanada ca +Kanada ca +I-Canada ca +Kanada ca +¸É¼¡ ca +แคนาดา ca +Kanada ca +Канада ca +加拿大 ca +加拿大 ca +Cocos (Keeling) Islands cc +Кокосови Острови cc +Kokosovo (Keeling) ostrvo cc +Islas Cocos (Keeling) cc +Koko Irlak cc +Kókusz-szigetek (Keeling) cc +Ilhas Cocos cc +Kokosove Ostrovy cc +Kokosovi (Keelingovi) otoki cc +Kokosöarna cc +Кокосові острови cc +Congo, the democratic republic of the cd +Дэмакратычная Рэспубліка Конга cd +Конго cd +Kongo, demokratska republika cd +Congo, den demokratiske republik cd +Congo, república democrática del cd +Kongo, errepublika demokratikoa cd +Kongói Demokratikus Köztársaság cd +República Democrática do Congo cd +Demokratická Republika Kongo cd +Kongo, demokratična republika cd +Demokratiska republiken Kongo cd +刚果民主共和国 cd +Central African Republic cf +ЦАР cf +Centralnoafrička Republika cf +Central-afrikanske Republik cf +República Centroafricana cf +Afrika Erdiko Errepublika cf +Közép-Afrikai Köztársaság cf +ໂດມິນິກັນ cf +República da África Central cf +Stredoafrická Republika cf +Centralnoafriška republika cf +Centralafrikanska Republiken cf +Центральноафриканська республіка cf +中非共和国 cf +Congo cg +Конга cg +Конго cg +Kongo cg +Kongo cg +Kongó cg +ຄອນໂໍຊລ cg +Kongo cg +Kongo cg +Kongo cg +Конго cg +刚果 cg +Switzerland ch +Switserland ch +سويسرا ch +İsveçrə ch +Швэйцарыя ch +Швейцария ch +Suis ch +Švicarska ch +Suïssa ch +Švýcarsko ch +Schweiz ch +Schweiz ch +Ελβετία ch +Svislando ch +Suiza ch +Šveits ch +Suitza ch +سوییس ch +Sveitsi ch +Suisse ch +Suíza ch +שוייץ ch +Švicarska ch +Svájc ch +Swiss ch +Sviss ch +Svizzera ch +スイス ch +스위스 ch +ສະວິສເຊີແລນ ch +Šveicarija ch +Šveice ch +Svizzera ch +Sveits ch +Zwitserland ch +Sveits ch +Suissa ch +Szwajcaria ch +Suíça ch +Suíça ch +Elveţia ch +Швейцария ch +Švajčiarsko ch +Švica ch +Švajcarska ch +I-Switzerland ch +Schweiz ch +ÍÅ¢ðº÷Ä¡óÐ ch +สวิสเซอร์แลนด์ ch +İsviçre ch +Швейцарія ch +Thuỵ Sĩ ch +Swisse ch +瑞士 ch +瑞士 ch +Cote d'ivoire ci +Бераг Слановай Косьці ci +Кот'Дивоар ci +Obala Slonovače ci +Elfenbenskysten ci +Costa de Marfil ci +Elefántcsontpart ci +ປ່ອຍຫມາກກະລອກ ci +Slonokoščena obala ci +Elfenbenskusten ci +Кот д'Івуар ci +Cook islands ck +Kukova ostrva ck +Cook-øerne ck +Islas Cook ck +Cook Irlak ck +Cook-szigetek ck +ຄຸກກີ້ ck +Ilhas Cook ck +Cookove ostrovy ck +Cookovi otoki ck +Cooköarna ck +Острови Кука ck +库克群岛 ck +Chile cl +Chilië cl +تشيلي cl +Şili cl +Чылі cl +Чили cl +Čile cl +Xile cl +Χιλή cl +Ĉilio cl +Tšiili cl +Txile cl +شیلی cl +Chili cl +צ'ילה cl +Čile cl +Chili cl +Cile cl +チリ cl +칠레 cl +ຊີລີ cl +Čilė cl +Čīle cl +Ċile cl +Chili cl +Cile cl +Чили cl +Čile cl +Čile cl +Čile cl +I-Chile cl +º¢Ä¢ cl +ชิลี cl +Şili cl +Чилі cl +Chi lê cl +Tchili cl +智利 cl +智利 cl +Cameroon cm +Камэрун cm +Камерун cm +Kamerun cm +Cameroun cm +Camerún cm +Kamerun cm +Kamerun cm +ຕາລາງງານ - K cm +Camarões cm +Komerun cm +Kamerun cm +Kamerun cm +Камерун cm +喀麦隆 cm +China cn +Sjina cn +الصين cn +Çin cn +Кітай cn +Китай cn +Sina cn +Kina cn +Xina cn +Čína cn +Kina cn +Κίνα cn +Ĉinujo cn +Hiina cn +Txina cn +چین cn +Kiina cn +Kina cn +Chine cn +סין cn +Kina cn +Kína cn +Cina cn +Kína cn +Cina cn +中国 cn +중국 cn +ຈີນ cn +Kinija cn +Ķīna cn +Ċina cn +Kina cn +Kina cn +Xina cn +Chiny cn +Китай cn +Čína cn +Kitajska cn +Kina cn +I-China cn +Kina cn +º£É¡ cn +จีน cn +Çin cn +Китай cn +Trung Quốc cn +Chine cn +中国 cn +中國 cn +Colombia co +Colombië co +كولمبيا co +Калюмбія co +Колумбия co +Kolumbija co +Colòmbia co +Kolumbie co +Kolumbien co +Κολομβία co +Kolumbio co +Kolumbia co +Kolonbia co +کلمبیا co +Kolumbia co +Colombie co +קולומביה co +Kolumbija co +Kolumbia co +コロンビア co +콜롬비아 co +ໂຄລຳເບີຍ co +Kolumbija co +Kolumbija co +Kolumbja co +Columbia co +Kolumbia co +Colômbia co +Colômbia co +Columbia co +Колумбия co +Kolumbia co +Kolumbija co +I-Colombia co +¦¸¡ÄõÀ¢Â¡ co +โคลัมเบีย co +Kolombiya co +Колумбія co +Colombeye co +Columbia co +哥伦比亚 co +哥倫比亞 co +Costa Rica cr +كوستاريكا cr +Коста Рыка cr +Коста Рика cr +Kostarika cr +Kostarika cr +Κόστα Ρίκα cr +کاستاریکا cr +Kosta Rika cr +קוסטה ריקה cr +Costa rica cr +コスタリカ cr +코스타 리카 cr +ໂຄເອເທີຍ cr +Kosta Rika cr +Kostaryka cr +Коста-Рика cr +Kostarika cr +Kostarika cr +I-Costa Rica cr +§¸¡Š¼¡ ⸡ cr +Kosta Rika cr +Коста-Ріка cr +哥斯达黎加 cr +哥斯大黎加 cr +Cuba cu +Kuba cu +كوبا cu +Куба cu +Куба cu +Kuba cu +Kuba cu +Kuba cu +Κούβα cu +Kuuba cu +Kuba cu +کوبا cu +Kuuba cu +Kuba cu +קובה cu +Kuba cu +キューバ cu +쿠바 cu +ເກມໄພ່ cu +Kuba cu +Kuba cu +Kuba cu +Куба cu +Kuba cu +Kuba cu +I-Cuba cu +Kuba cu +¸¢ÔÀ¡ cu +Küba cu +Куба cu +古巴 cu +古巴 cu +Cape Verde cv +Капе Верде cv +Zelenortska ostrva cv +Kapverdiske øer cv +Cabo Verde cv +Cabo Verde cv +Zöldfoki-szigetek cv +ເກມໄພ່ cv +Cabo Verde cv +Kap Verde cv +佛得角 cv +Christmas Island cx +Božično ostrvo cx +Juleøen cx +Islas Christmas cx +Eguberri Irla cx +Karácsony-szigetek cx +ຄິດສະຕອລ cx +Ilhas do Natal cx +Vianočné Ostrovy cx +Božični otok cx +Julön cx +Острів Різдва cx +圣诞岛 cx +Cyprus cy +Кіпр cy +Кипър cy +Kipar cy +Cypern cy +Chipre cy +Txipre cy +Ciprus cy +ບີບອັດ cy +Chipre cy +Ciper cy +Cypern cy +Кипр cy +塞浦路斯 cy +Czechia cz +Czechië cz +التشيك cz +Çex Respublikası cz +Чэхія cz +Чехия cz +Tchekia cz +Češka cz +Txèquia cz +Česko cz +Tjekkiet cz +Tschechien cz +Τσεχία cz +Ĉeĥio cz +República Checa cz +Tšehhi cz +Txekia cz +چک cz +Tsekki cz +République tchèque cz +Chequia cz +צ'כיה cz +Češka cz +Csehország cz +Tékkland cz +Repubblica Ceca cz +チェコ cz +체코 cz +Čekija cz +Čehija cz +Cżekia cz +Tsjekkia cz +Tsjechië cz +Tsjekkia cz +Chèquia cz +Czechy cz +República Checa cz +República Tcheca cz +Cehia cz +Чехия cz +Česko cz +Češka cz +Češka cz +I-Czechia cz +Tjeckien cz +¦ºì¡ cz +Çek Cumhuriyeti cz +Чехія cz +Séc cz +Tchekeye cz +捷克 cz +捷克 cz +Germany de +Duitsland de +ألمانيا de +Almaniya de +Нямеччына de +Германия de +Alamagn de +Njemačka de +Alemanya de +Německo de +Tyskland de +Deutschland de +Γερμανία de +Germanio de +Alemania de +Saksamaa de +Alemania de + آلمان de +Saksa de +Týskland de +Allemagne de +Alemaña de +גרמניה de +Njemačka de +Németország de +Jerman de +Þýskaland de +Germania de +ドイツ de +독일 de +ເຍລລະມັນນີ de +Vokietija de +Vācija de +Ġermanja de +Tyskland de +Duitsland de +Tyskland de +Alemanya de +Niemcy de +Alemanha de +Alemanha de +Germania de +Германия de +Nemecko de +Nemčija de +Nemačka de +I-Germany de +Tyskland de +§º÷ÁÉ¢ de +เยอรมันนี de +Almanya de +Німеччина de +Đức de +Almagne de +德国 de +德國 de +IJalimani de +Djibouti dj +جيبوتي dj +Джыбуці dj +Джибути dj +Đibuti dj +Džibuti dj +Dschibuti dj +Τζιμπουτί dj +جیبوتی dj +ג'יבוטי dj +Džibuti dj +Dzsibuti dj +ジブティ dj +지부티 dj +ພັດພາ dj +Džibuti dj +Dġibuti dj +Dżibuti dj +Djibuti dj +Djibuti dj +Джибути dj +Džibuty dj +Džibuti dj +I-Djibouti dj +Ê¢ƒ¢¦À¡Ê dj +Cibuti dj +Джібуті dj +吉布提 dj +吉布地 dj +Denmark dk +Denemarke dk +الدنمارك dk +Danimarka dk +Данія dk +Дания dk +Danmark dk +Danska dk +Dinamarca dk +Dánsko dk +Danmark dk +Dänemark dk +Δανία dk +Danlando dk +Dinamarca dk +Taani dk +Danimarka dk +دانمارک dk +Tanska dk +Danmark dk +Danemark dk +Dinamarca dk +דנמרק dk +Danska dk +Dánia dk +Danmörk dk +Danimarca dk +デンマーク dk +덴마크 dk +ເດນມາກ dk +Danija dk +Dānija dk +Danimarka dk +Danmark dk +Denemarken dk +Danmark dk +Dinamarca dk +Dania dk +Dinamarca dk +Dinamarca dk +Danemarca dk +Дания dk +Dánsko dk +Danska dk +Danska dk +I-Denmark dk +Danmark dk +¦¼ýÁ¡÷ì dk +เดนมาร์ก dk +Danimarka dk +Данія dk +Đan Mạch dk +Daenmåtche dk +丹麦 dk +丹麥 dk +Dominica dm +Дамініка dm +Доминика dm +Dominika dm +Dominika dm +ໂລມາເນີຍ dm +Dominicana dm +Dominikánsko dm +Dominikanska republika dm +Домініка dm +多米尼加 dm +Dominican Republic do +Dominikiese Republiek do +جمهورية الدومينيكان do +Dominik Respublikası do +Дамініканская Рэспубліка do +Доминиканска република do +Republik Dominikan do +Dominikanska Republika do +República Dominicana do +Dominikánská republika do +Dominikanske Republik do +Dominikanische Republik do +Δομινικανή Δημοκρατία do +Dominika Respubliko do +República Dominicana do +Dominikaani Vabariik do +Dominikar Errepublika do +جمهوری دامینیکن do +Dominikaaninen tasavalta do +République dominicaine do +República Dominicana do +הרפובליקה הדומיניקנית do +Dominikanska Republika do +Dominikai Köztársaság do +Republik Dominika do +Dóminíska Lýðveldið do +Repubblica Dominicana do +ドミニカ共和国 do +도미니카 공화국 do +ໂດມິນີກັນ do +Dominikos Respublika do +Dominikas Republika do +Repubblika Dominikana do +Den dominikanske republikk do +Dominicaanse Republiek do +Den dominikanske republikken do +Republica Dominicana do +Dominikana do +República Dominicana do +República Dominicana do +Republica Dominicană do +Доминиканская республика do +Dominikánska republika do +Dominikanska republika do +Dominikanska republika do +I-Dominican Republic do +Dominikanska republiken do +¦¼¡Á¢É¢ì¸ý ÌÊÂÃÍ do +โดมินิกัน do +Dominik Cumhuriyeti do +Домініканська республіка do +Muvhuso wa Dominican do +Cộng hoà Dominican do +Republike Dominikinne do +IRepublic yeDominican do +多米尼加共和国 do +多明尼加共和國 do +Algeria dz +Algerië dz +الجزائر dz +Альжыр dz +Алжир dz +Alžir dz +Algèria dz +Alžírsko dz +Algeriet dz +Algerien dz +Αλγερία dz +Algerio dz +Argelia dz +Alžeeria dz + الجزیره dz +Algérie dz +אלג'יריה dz +Alžir dz +Algéria dz +アルジェリア dz +알제리 dz +ບັນກາເລີຍ dz +Alžyras dz +Alġerija dz +Algerie dz +Algerije dz +Algerie dz +Algieria dz +Argélia dz +Argélia dz +Алжир dz +Alžírsko dz +Alžirija dz +I-Algeria dz +Algeriet dz +«øƒ¢Ã¢Â¡ dz +Алжир dz +Aldjereye dz +阿尔及利亚 dz +阿爾及利亞 dz +Equador ec +Ewenaar ec +الإكوادور ec +Ekvator ec +Эквадор ec +Еквадор ec +Ecuador ec +Ekvador ec +Ekvádor ec +Ecuador ec +Ισημερινός ec +Ekvadoro ec +Ecuador ec +Ekvador ec +Ekuador ec +اکوادور ec +Équateur ec +Ecuador ec +אקוודור ec +Ekvador ec +Ecuador ec +Ekvador ec +Ecuador ec +エクアドル ec +에콰도르 ec +ເອກໍດໍ ec +Ekvadoras ec +Ekvadora ec +Ekwador ec +Ecuador ec +Ecuador ec +Ekwador ec +Ecuador ec +Эквадор ec +Ekvádor ec +Ekvador ec +Ekvador ec +I-Equador ec +®ì¦Å§¼¡÷ ec +เอกวาดอร์ ec +Ekvator ec +Еквадор ec +Ecwåteur ec +厄瓜多尔 ec +厄瓜多 ec +Estonia ee +Estlandies ee +استونيا ee +Estoniya ee +Эстонія ee +Естония ee +Estonija ee +Estònia ee +Estonsko ee +Estland ee +Estland ee +Εσθονία ee +Estlando ee +Eesti ee +استونی ee +Eesti ee +Estonie ee +אסטוניה ee +Estonija ee +Észtország ee +Eistland ee +エストニア ee +에스토니아 ee +ເອໂທເນີຍ ee +Estija ee +Igaunija ee +Estonja ee +Estland ee +Estland ee +Estland ee +Estònia ee +Estónia ee +Estônia ee +Эстония ee +Estónsko ee +Estonija ee +Estonija ee +I-Estonia ee +Estland ee +±Í§¼¡É¢Â¡ ee +เอสโธเนีย ee +Estonya ee +Естонія ee +Estoneye ee +爱沙尼亚 ee +愛沙尼亞 ee +Egypt eg +Egipte eg +مصر eg +Misir eg +Эгіпэт eg +Египет eg +Egipat eg +Egipte eg +Egypten eg +Ägypten eg +Αίγυπτος eg +Egiptujo eg +Egipto eg +Egiptus eg +Egypto eg +مصر eg +Egypti eg +Egyptaland eg +Égypte eg +מצרים eg +Egipat eg +Egyiptom eg +Egyptaland eg +Egitto eg +エジプト eg +이집트 eg +ອີຢີບ eg +Egiptas eg +Ēģipte eg +Eġittu eg +Egypte eg +Egepeta eg +Egipt eg +Egipto eg +Egito eg +Egipt eg +Египет eg +Egipt eg +I-Egypt eg +Egypten eg +±¸¢ôÐ eg +อียิปต์ eg +Mısır eg +Єгипет eg +Edjipe eg +埃及 eg +埃及 eg +Igibhithe eg +Western Sahara eh +Западна Сахара eh +Zapadna Sahara eh +Vestsahara eh +Sahara occidental eh +Mendebaldeko Sahara eh +Nyugat-Szahara eh +ພື້ນທີ່ທຳງານ eh +Sahara eh +Západna Sahara eh +Zahodna Sahara eh +Västsahara eh +Західна Сахара eh +西撒哈拉 eh +Eritrea er +Эрытрэя er +Еритрея er +Eritreja er +ແກ້ໄຂແຟ້ມທຳງານ er +Eritreja er +Еритрея er +厄立特里亚 er +Spain es +Spanje es +أسبانيا es +İspaniya es +Гішпанія es +Испания es +Spagn es +Španija es +Espanya es +Španělsko es +Spanien es +Spanien es +Ισπανία es +Hispanio es +España es +Hispaania es +Espainia es +اسپانیا es +Espanja es +Spania es +Espagne es +España es +ספרד es +Španjolska es +Spanyolország es +Spanyol es +Spánn es +Spagna es +スペイン es +스페인 es +ສະເປັນ es +Ispanija es +Spānija es +Spanja es +Spania es +Spanje es +Spania es +Espanha es +Hiszpania es +Espanha es +Espanha es +Spania es +Испания es +Španielsko es +Španija es +Španija es +I-Spain es +Spanien es +ͦÀ¢ý es +สเปน es +İspanya es +Іспанія es +Tây Ban Nha es +Sipagne es +西班牙 es +西班牙 es +Ethiopia et +Этыёпія et +Етиопия et +Etiopija et +Ethiopien et +Etiopía et +Etiopia et +Etiópia et +ເອໂທເນີຍ et +Etiópia et +Etiópia et +Etiopija et +Etiopien et +Ефіопія et +埃塞俄比亚 et +Finland fi +فنلندا fi +Finlandiya fi +Фінляндыя fi +Финландия fi +Finska fi +Finlàndia fi +Finsko fi +Finnland fi +Φινλανδία fi +Finlando fi +Finlandia fi +Soome fi +Finlandia fi +فنلاند fi +Suomi fi +Finnland fi +Finlande fi +Finlandia fi +פינלנד fi +Finska fi +Finnország fi +Finlandia fi +Finnland fi +Finlandia fi +フィンランド fi +핀란드 fi +ຟີນແລນ fi +Suomija fi +Somija fi +Finlandja fi +Finlandia fi +Finlandia fi +Finlândia fi +Finlândia fi +Finlanda fi +Финляндия fi +Fínsko fi +Finska fi +Finska fi +I-Finland fi +À¢ýÄ¡óÐ fi +ฟินแลนด์ fi +Finlandiya fi +Фінляндія fi +Phần Lan fi +Finlande fi +芬兰 fi +芬蘭 fi +Fiji fj +Фіджы fj +Фиджи fj +Fidži fj +Fidzsi fj +ມີດີ fj +Ilhas Fiji fj +Fidži fj +Fidži fj +Фіджі fj +斐济 fj +Falkland Islands (Malvinas) fk +Фолклендски Острови fk +Foklandska ostrva (Malvini) fk +Falkland-øerne fk +Islas Falkland (Malvinas) fk +Falkland Irlak (Malvinak) fk +Falkland-szigetek fk +Ilhas Malvinas fk +Falklandské Ostrovy (Malviny) fk +Falklandski otoki (Malvini) fk +Falklandsöarna fk +福克兰岛 (马尔维纳斯) fk +Micronesia, Federated states of fm +Федэрацыя Мiкранэзіі fm +Микронезия fm +Mikronezija, Federalne države fm +Mikronesien, de forenede stater af fm +Micronesia, Estados federados de fm +Mikronesia, Estatu Federatuak fm +Mikronézia fm +Estados Federados da Micronésia fm +Spjoené štáty Mikronézie fm +Mikronezija, Združene države fm +Mikronesiska federationen fm +密克罗尼西亚联邦 fm +Faroe Islands fo +Фареорски Острови fo +Farska ostrva fo +Færøerne fo +islas Faroe fo +Faroe Irlak fo +Faroe-szigetek fo +ໄອແລນ fo +Ilhas Faroe fo +Ostrovy Faroe fo +Otoki Faroe fo +Färöarna fo +Фарерські острови fo +France fr +Frankryk fr +فرنسا fr +Fransa fr +Францыя fr +Франция fr +Frañs fr +Francuska fr +França fr +Francie fr +Frankrig fr +Frankreich fr +Γαλλία fr +Francio fr +Francia fr +Prantsusmaa fr +Frantzia fr +فرانسه fr +Ranska fr +Frakland fr +Francia fr +צרפת fr +Francuska fr +Franciaország fr +Prancis fr +Frakkland fr +Francia fr +フランス fr +프랑스 fr +ຝຣັ່ງ fr +Prancūzija fr +Francija fr +Franza fr +Frankrike fr +Frankrijk fr +Frankrike fr +Fora fr +França fr +Francja fr +França fr +França fr +Franţa fr +Франция fr +Francúzsko fr +Francija fr +Francuska fr +I-France fr +Frankrike fr +À¢Ã¡ýÍ fr +ฝรั่งเศส fr +Fransa fr +Франція fr +Fura fr +Pháp fr +Fransi fr +法国 fr +法國 fr +Gabon ga +Габон ga +Габон ga +Gabón ga +ແກລ່ງນ ga +Gabão ga +Габон ga +加蓬 ga +United Kingdom gb +Vereenigde Koninkryk gb +المملكة المتحدة gb +Birləşmiş Krallıq gb +Злучанае Каралеўства gb +Великобритания gb +Rouantelezh Unanet gb +Velika Britanija gb +Regne Unit gb +Spojené království gb +Storbritannien gb +Großbritannien gb +Ηνωμένο Βασίλειο gb +Britio gb +Reino Unido gb +Ühendatud Kuningriigid gb +Erreinu Batua gb +بریتانیا gb +Iso-Britannia gb +Stórabretland gb +Royaume Uni gb +Reino Unido gb +בריטניה gb +Ujedinjeno Kraljevstvo gb +Egyesült Királyság gb +Inggris gb +Stóra Bretland gb +Regno Unito gb +イギリス gb +영국 gb +ສະຫະລາດສະອານາຈັກ gb +Jungtinė Karalystė gb +Apvienotā Karaliste gb +Renju Unit gb +Storbritannia gb +Verenigd Koninkrijk gb +Storbritannia gb +Regne Unit gb +Wielka Brytania gb +Reino Unido gb +Reino Unido gb +Anglia gb +Великобритания gb +Anglicko gb +Združeno kraljestvo gb +Velika Britanija gb +I-United Kingdom gb +Storbritannien gb +³ì¸¢Â ­Ã¡îº¢Âõ gb +สหราชอาณาจักร gb +Birleşik Krallık gb +Великобританія gb +Anh gb +United Kingdom gb +联合王国 gb +聯合王國 gb +United Kingdom gb +Grenada gd +غرينادا gd +Qrenada gd +Грэнада gd +Гренада gd +Granada gd +Γρενάδα gd +Grenado gd +Granada gd +گرانادا gd +Grenade gd +Granada gd +גרנדה gd +Grænhöfðaeyjar gd +Granada gd +グラナダ gd +그러네이다 gd +ເກນາດາ gd +Grenāda gd +Granada gd +Granada gd +Granada gd +Гренада gd +I-Grenada gd +¸¢¦Ãɼ¡ gd +เกรนาดา gd +Гренада gd +格林纳达 gd +格瑞那達 gd +Georgia ge +Грузія ge +Грузия ge +Gruzija ge +Georgien ge +Grúzia ge +ເຊີເບີຍ ge +Geórgia ge +Gruzija ge +Georgien ge +Грузія ge +格鲁吉亚 ge +Ghana gh +غانا gh +Гана gh +Гана gh +Gana gh +Γκάνα gh +غنا gh +גאנה gh +ガーナ gh +ຈີນ gh +Gana gh +Gana gh +Gana gh +Гана gh +Gana gh +I-Ghana gh +¸¡É¡ gh +Гана gh +加纳 gh +迦納 gh +Gibraltar gi +Гибралтар gi +Gibraltár gi +ມອລຕາ gi +Гібралтар gi +直布罗陀 gi +Gambia gm +Гамбія gm +Гамбия gm +Gambija gm +ແກມມາ gm +Gâmbia gm +Gambija gm +Гамбія gm +冈比亚 gm +Guinea gn +Гвінэя gn +Гвинея gn +Gvineja gn +ເຖາວັນ gn +Guiné gn +Gvineja gn +Гвінея gn +几内亚 gn +Guadeloupe gp +Гвадалупа gp +Gvadalupe gp +Guadalupe gp +ເດີລຸກ gp +Guadalupe gp +Гваделупа gp +瓜德罗普岛 gp +Equatorial Guinea gq +Экватарыяльная Гвінэя gq +Екваториялна Гвинея gq +Ekvatorijalna Gvineja gq +Ækvatorial Guinea gq +Guinea equatorial gq +Ginea Ekuatoriala gq +Egyenlítői Guinea gq +ການສອນ gq +Guiné Equatorial gq +Rovníkova Guinea gq +Ekvatorialna Gvineja gq +Ekvatorialguinea gq +Екваторіальна Гвінея gq +赤道几内亚 gq +Greece gr +Griekeland gr +اليونان gr +Yunanıstan gr +Грэцыя gr +Гърция gr +Gres gr +Grčka gr +Grècia gr +Řecko gr +Grækenland gr +Griechenland gr +Ελλάδα gr +Grekujo gr +Grecia gr +Kreeka gr +Grezia gr +یونان gr +Kreikka gr +Grikkaland gr +Grèce gr +Grecia gr +יוון gr +Grčka gr +Görögország gr +Grikkland gr +Grecia gr +ギリシャ gr +그리스 gr +ກີຊ gr +Graikija gr +Grieķija gr +Greċja gr +Hellas gr +Griekenland gr +Hellas gr +Grèça gr +Grecja gr +Grécia gr +Grécia gr +Grecia gr +Греция gr +Grécko gr +Grčija gr +Grčka gr +I-Greece gr +Grekland gr +¸¢Ã£Í gr +กรีซ gr +Yunanistan gr +Греція gr +Hy Lạp gr +Grece gr +希腊 gr +希臘 gr +Guatemala gt +Gautemala gt +غواتيمالا gt +Quatemala gt +Гватэмала gt +Гватемала gt +Gvatemala gt +Γουατεμάλα gt +Gvatemalo gt +Guatemaala gt +گواتمالا gt +גואטמלה gt +Gvatemala gt +カタロニア gt +과테말라 gt +ກັວເຕມາລາ gt +Gvatemala gt +Gvatemala gt +Gwatemala gt +Gwatemala gt +Гватемала gt +Gvatemala gt +Gvatemala gt +I-Guatemala gt +ÌÅ¡ò¾Á¡Ä¡ gt +กัวเตมาลา gt +Гватемала gt +Gwatemala gt +瓜地马拉 gt +瓜地馬拉 gt +Guam gu +Гуам gu +ແກມມາ gu +Гуам gu +关岛 gu +Guinea-Bissau gw +Гвінэя-Бісаў gw +Гвинея-Бисау gw +Gvineja-Bisau gw +Ginea-Bissau gw +Bissau-Guinea gw +ລັດເຊີຍ gw +Guiné-Bissau gw +Гвінея-Біссау gw +几内亚比绍 gw +Guyana gy +Гвіяна gy +Гуана gy +Gvajana gy +ຈີນ gy +Guiana gy +Gvajana gy +Гаяна gy +圭亚那 gy +Hong Kong hk +Ганконг hk +Хонг Конг hk +Hongkong hk +ບໍ່ຮູ້ຈັກ hk +Гонконг hk +香港 hk +Honduras hn +هندوراس hn +Гандурас hn +Хондурас hn +Hondures hn +Ονδούρα hn +Honduraso hn +Honduuras hn +هندوراس hn +הונדורס hn +ホンデュラス hn +온두라스 hn +ຫອນດູລັດ hn +Hondūras hn +Hondurasa hn +Ħonduras hn +Hondures hn +Гондурас hn +I-Honduras hn +¬ñÎáŠÍ hn +ฮอนดูรัส hn +Гондурас hn +洪都拉斯 hn +宏都拉斯 hn +Croatia hr +Kroatië hr +كرواتيا hr +Xırvatıstan hr +Харватыя hr +Хърватска hr +Kroatia hr +Hrvatska hr +Croàcia hr +Chorvatsko hr +Kroatien hr +Kroatien hr +Κροατία hr +Kroatio hr +Croacia hr +Horvaatia hr +Kroazia hr +کرواسی hr +Kroatia hr +Kroatia hr +Croatie hr +Croacia hr +קרואטיה hr +Hrvatska hr +Horvátország hr +Kroasia hr +Króatía hr +Croazia hr +クロアチア hr +크로아티아 hr +ໂຄເອເທີຍ hr +Kroatija hr +Horvātija hr +Kroazja hr +Kroatia hr +Kroatië hr +Kroatia hr +Croacia hr +Chorwacja hr +Croácia hr +Croácia hr +Croaţia hr +Хорватия hr +Chorvátsko hr +Hrvaška hr +Hrvatska hr +I-Croatia hr +Kroatien hr +̦á§Åº¢Â¡ hr +โครเอเธีย hr +Hırvatistan hr +Хорватія hr +Crowåceye hr +克罗地亚 hr +克羅埃西亞 hr +Haiti ht +Гаіці ht +Хаити ht +Haití ht +ວາດຮູບ - K ht +Гаїті ht +海地岛 ht +Hungary hu +Hongarye hu +هنغاريا hu +Macarıstan hu +Вугоршчына hu +Унгария hu +Hungaria hu +Mađarska hu +Hongria hu +Maďarsko hu +Ungarn hu +Ungarn hu +Ουγγαρία hu +Hungario hu +Hungría hu +Ungari hu +Hungaria hu +مجارستان hu +Unkari hu +Ungarn hu +Hongrie hu +Hungría hu +הונגריה hu +Mađjarska hu +Magyarország hu +Hungaria hu +Ungverjaland hu +Ungheria hu +ハンガリー hu +헝가리 hu +ຫັງກາລີ hu +Vengrija hu +Ungārija hu +Ungerija hu +Ungarn hu +Hongarije hu +Ungarn hu +Hongria hu +Węgry hu +Hungria hu +Hungria hu +Ungaria hu +Венгрия hu +Maďarsko hu +Madžarska hu +Mađarska hu +I-Hungary hu +Ungern hu +¬í§¸Ã¢ hu +ฮังการี hu +Macaristan hu +Угорщина hu +Hongreye hu +匈牙利 hu +匈牙利 hu +Indonesia id +Indonesië id +إندونيسيا id +İndoneziya id +Інданэзія id +Индонезия id +Indonezija id +Indonèsia id +Indonésie id +Indonesien id +Indonesien id +Ινδονησία id +Indonezio id +Indoneesia id +اندونزی id +Indonésie id +אינדונזיה id +Indonezija id +Indonézia id +Indónesía id +インドネシア id +인도네시아 id +ອີຍໂດນີເຊີຍ id +Indonezija id +Indonēzija id +Indoneżja id +Indonesië id +Indonezja id +Indonésia id +Indonésia id +Indonezia id +Индонезия id +Indonézia id +Indonezija id +I-Indonesia id +Indonesien id +­ó§¾¡É£º¢Â¡ id +อินโดนีเซีย id +İndonezya id +Індонезія id +Indoneseye id +印度尼西亚 id +印尼 id +Ireland ie +Ierland ie +أيرلندا ie +İrlandiya ie +Ірляндыя ie +Ирландия ie +Iwerzhon ie +Irska ie +Irlanda ie +Irsko ie +Irland ie +Irland ie +Ιρλανδία ie +Islando ie +Irlanda ie +Island ie +Irlanda ie +ایرلند ie +Irlanti ie +Írland ie +Irlande ie +Irlanda ie +אירלנד ie +Irska ie +Írország ie +Irlandia ie +Írland ie +Irlanda ie +アイスランド ie +아일랜드 ie +ໄອແລນ ie +Airija ie +Īrija ie +Irlanda ie +Irland ie +Ierland ie +Irland ie +Irlanda ie +Irlandia ie +Irlanda ie +Irlanda ie +Irlanda ie +Ирландия ie +Írsko ie +Irska ie +Irska ie +I-Ireland ie +Irland ie +«Â÷Ä¡óÐ ie +ไอร์แลนด์ ie +İrlanda ie +Ірландія ie +Irlande ie +爱尔兰 ie +愛爾蘭 ie +Israel il +اسرائيل il +İzrail il +Ізраіль il +Израел il +Izrael il +Izrael il +Ισραήλ il +Israelo il +Iisrael il +اسراییل il +Ísrael il +Israël il +ישראל il +Izrael il +Izrael il +Ísrael il +Israele il +イスラエル il +이스라엘 il +ອິດສະລະເອລ il +Izraelis il +Izraēla il +Iżrael il +Izrael il +Израиль il +Izrael il +Izrael il +Izrael il +I-Israel il +­Í§Ãø il +อิสราเอล il +İsrail il +Ізраїль il +Israyel il +USirayeli il +以色列 il +以色列 il +India in +Indië in +الهند in +Hindistan in +Індыя in +Индия in +Indija in +Índia in +Indie in +Indien in +Indien in +Ινδία in +Hindujo in +هندوستان in +Intia in +Inde in +הודו in +Indija in +Indland in +インド in +인도 in +ອິນເດີຍ in +Indija in +Indija in +Indja in +Indie in +Índia in +Índia in +Индия in +Indija in +I-India in +Indien in +­ó¾¢Â¡ in +อินเดีย in +Hindistan in +Індія in +Inde in +印度 in +印度 in +Endiya in +Iraq iq +Irak iq +العراق iq +İraq iq +Ірак iq +Ирак iq +Irak iq +Irák iq +Irak iq +Irak iq +Ιράκ iq +Irako iq +Irak iq +Iraak iq +عراق iq +Irak iq +Irak iq +Irak iq +עירק iq +Irak iq +Irak iq +Írak iq +Irak iq +イラク iq +이라크 iq +ອີລັກ iq +Irakas iq +Irāka iq +Irak iq +Irak iq +Irak iq +Irak iq +Iraque iq +Iraque iq +Irak iq +Ирак iq +Irák iq +Irak iq +I-Iraq iq +Irak iq +®Ã¡ì iq +อิรัค iq +Irak iq +Ірак iq +Irak iq +伊拉克 iq +伊拉克 iq +Iran ir +أيران ir +Іран ir +Иран ir +Írán ir +Ιράν ir +Iraan ir +ایران ir +אירן ir +Irán ir +イラン ir +이란 ir +ອີລັກ ir +Iranas ir +Irão ir +Irã ir +Иран ir +Irán ir +I-Iran ir +®Ã¡ý ir +İran ir +Іран ir +伊朗 ir +伊朗 ir +Iceland is +Ysland is +أيسلندا is +İslandiya is +Ісьляндыя is +Исландия is +Island is +Island is +Islàndia is +Island is +Island is +Island is +Ισλανδία is +Islando is +Islandia is +Island is +Islandia is +ایسلند is +Islanti is +Ísland is +Islande is +Islandia is +איסלנד is +Island is +Izland is +Islandia is +Ísland is +Islanda is +アイスランド is +아이슬란드 is +ໄອຊແລນ is +Islandija is +Islande is +Islandja is +Island is +IJsland is +Island is +Islandia is +Islandia is +Islândia is +Islândia is +Islanda is +Исландия is +Island is +Islandija is +Island is +I-Iceland is +Island is +³ÍÄ¡óÐ is +ไอซ์แลนด์ is +İzlanda is +Ісландія is +Izlande is +冰岛 is +冰島 is +Icelandi is +Italy it +Italië it +ايطاليا it +İtalyia it +Італія it +Италия it +Italia it +Italija it +Itàlia it +Itálie it +Italien it +Italien it +Ιταλία it +Italio it +Italia it +Itaalia it +Italia it +ایتالیا it +Italia it +Italia it +Italie it +Italia it +איטליה it +Italija it +Olaszország it +Italia it +Ítalía it +Italia it +イタリア it +이탈리아 it +ອີຕາລີ it +Italija it +Itālija it +Italja it +Italia it +Italië it +Italia it +Italia it +Włochy it +Itália it +Itália it +Italia it +Италия it +Taliansko it +Italija it +Italija it +I-Italy it +Italien it +­ò¾¡Ä¢ it +อิตาลี it +İtalya it +Італія it +Itåleye it +Ithali it +意大利 it +義大利 it +Jamaica jm +Jamaika jm +جامايكا jm +Yamayka jm +Ямайка jm +Ямайка jm +Jamaika jm +Jamajka jm +Jamajka jm +Jamaika jm +Τζαμάικα jm +Ĵamaiko jm +Jamaika jm +Jamaika jm +جاماییکا jm +Jamaika jm +Jamaïque jm +Xamaica jm +ג'מייקה jm +Jamajka jm +Jamaika jm +Jamaika jm +Giamaica jm +ジャマイカ jm +자메이카 jm +ຈາໄມກາ jm +Jamaika jm +Jamaika jm +Ġamajka jm +Jamajka jm +Ямайка jm +Jamajka jm +Jamajka jm +Jamajka jm +I-Jamaica jm +ƒº¦Áö측 jm +จาไมกา jm +Jamaika jm +Ямайка jm +Djamayike jm +牙买加 jm +牙買加 jm +Jordan jo +Jordaan jo +الأردن jo +İordaniya jo +Ярданія jo +Йордания jo +Jordania jo +Jordán jo +Jordanien jo +Ιορδανία jo +Jordanio jo +Jordania jo +اردن jo +Jordania jo +Jordanie jo +ירדן jo +Jordánia jo +Jórdanía jo +Giordania jo +ヨルダン jo +요르단 jo +ຈໍແດນ jo +Jordanija jo +Jordāna jo +Ġordan jo +Jordanië jo +Jordania jo +Jordânia jo +Jordânia jo +Iordania jo +Иордания jo +Jordánsko jo +Jordanija jo +I-Jordan jo +Jordanien jo +§Â¡÷¾¡ý jo +จอร์แดน jo +Ürdün jo +Йорданія jo +Djordaneye jo +约旦 jo +約旦 jo +Ijolidani jo +Japan jp +اليابان jp +Yaponiya jp +Японія jp +Япония jp +Japó jp +Japonsko jp +Ιαπωνία jp +Japanio jp +Japón jp +Jaapan jp +Japonia jp +ژاپن jp +Japani jp +Japon jp +Xapón jp +יפן jp +Japán jp +Jepang jp +Giappone jp +日本 jp +일본 jp +ຍີ່ປຸ່ນ jp +Japonija jp +Japāna jp +Ġappun jp +Japon jp +Japonia jp +Japão jp +Japão jp +Japonia jp +Япония jp +Japonsko jp +Japonska jp +I-Japan jp +ºôÀ¡ý jp +ญี่ปุ่น jp +Japonya jp +Японія jp +Nhật bản jp +Djapon jp +日本 jp +日本 jp +Kenya ke +Кенія ke +Кения ke +Kenija ke +Kenia ke +ເວນດາ ke +Quênia ke +Keňa ke +Kenija ke +Кенія ke +肯尼亚 ke +Kyrgyzstan kg +Кыргызстан kg +Киргистан kg +Kirgistan kg +Kirgizistan kg +Kyrgyzstán kg +Kirgizisztán kg +ຄສິຕັລ kg +Kirgizstan kg +Kirgizistan kg +Киргизстан kg +吉尔吉斯坦 kg +Cambodia kh +Камбоджа kh +Камбоджа kh +Kambođa kh +Kambodzsa kh +ໂຄລຳເບີຍ kh +Cambodja kh +Kambodža kh +Kambodža kh +Kambodja kh +Камбоджа kh +柬埔寨 kh +Kiribati ki +Кiрыбацi ki +Кирибати ki +ແຟຄທັລ - K ki +Кірібаті ki +基里巴斯 ki +Comoros km +Каморы km +Коморски km +Komori km +Comorerne km +ສີ km +Komori km +Komorerna km +Комори km +科摩罗群岛 km +St. Kitts and Nevis kn +St. Kitts en Nevis kn +سانت كيتس و نيفيس kn +St. Kitts və Nevis kn +Св. Кристоф и Невис kn +S. Kitts ha Nevis kn +St. Kitts i Nevis kn +Sv. Kitts a Nevis kn +St. Kitts-Nevis kn +St. Kitts und Nevis kn +St. Kitts και Nevis kn +St. Kitts kaj Nevis kn +St. Kitts y Nevis kn +St. Kitts ja Nevis kn +St. Kitts eta Nevis kn +سن کیتس و نویس kn +St. Kitts ja Nevis kn +St Kitts et Nevis kn +Saint Kitts e Nevis kn +סנט קיטס ונביס kn +St. Kitts és Nevis kn +St. Kitts dan Nevis kn +Ss. Kitts e Nevis kn +セントキッツネヴィス kn +세인트 키츠 네비스 kn +Šv. Kitts ir Nevis kn +St. Kitts un Nevis kn +St. Kitts u Nevis kn +St. Kitts og Nevis kn +St. Kitts en Nevis kn +St. Kitts og Nevis kn +St. Kitts le Nevis kn +St. Kitts e Nevis kn +St. Kitts e Nevis kn +St Kitts e Nevis kn +Sf. Kitts şi Nevis kn +о. Св. Кристофа и Невиса kn +St. Kitts a Nevis kn +St. Kitts in Nevis kn +St. Kitts i Nevis kn +I-St. Kitts and Nevis kn +St. Kitts och Nevis kn +¦ºÂ¢ý𠸢ðÍ & ¦¿Å¢Í kn +St. Kitts ve Nevis kn +Федерація Сент-Кітс і Невіс kn +St. Kitts na Nevis kn +St. Kitts neNevis kn +圣基特和里维斯 kn +聖克理斯多福及尼維斯 kn +St. Kitts kanye no-Nevis kn +North Korea kp +Noord Korea kp +كوريا الشمالية kp +Şimali Koreya kp +Паўночная Карэя kp +Северна Корея kp +Norzh-Korea kp +Sjeverna Koreja kp +Corea del Nord kp +Severní Korea kp +Nordkorea kp +Nord-Korea kp +Βόρεια Κορέα kp +Nordkoreo kp +Corea del Norte kp +Põhja-Korea kp +Ipar Korea kp +کره شمالی kp +Pohjois-Korea kp +Norðurkorea kp +Corée du nord kp +Corea do Norte kp +צפון קוריאה kp +Sjeverna Koreja kp +Észak-Korea kp +Korea Utara kp +Kórea - Norðurkórea kp +Corea del Nord kp +北朝鮮 kp +조선민주주의 인민공화국 kp +ເກົາລີເຫນືອ kp +Šiaurės Korėja kp +ZiemeļKoreja kp +Korea ta' Fuq kp +Nord-Korea kp +Noord-Korea kp +Nord-Korea kp +Lebowa la Korea kp +Corea dèu Nord kp +Korea Północna kp +Coreia do Norte kp +Coréia do Norte kp +Coreea de Nord kp +Северная Корея kp +severná Kórea kp +Severna Koreja kp +Severna Koreja kp +I-North Korea kp +Nordkorea kp +ż ¦¸¡Ã¢Â¡ kp +เกาหลีเหนือ kp +Kuzey Kore kp +Північна Корея kp +Devhula ha Korea kp +Bắc Triều Tiên kp +Bijhe Coreye kp +Umntla Korea kp +朝鲜 kp +北韓 kp +Enyakatho ne-Korea kp +South Korea kr +Suid Korea kr +كوريا الجنوبية kr +Cənubi Koreya kr +Паўднёвая Карэя kr +Южна Корея kr +Su-Korea kr +Južna Koreja kr +Corea del Sud kr +Jižní Korea kr +Sydkorea kr +Süd-Korea kr +Νότια Κορέα kr +Sudkoreo kr +Corea del Sur kr +Lõuna-Korea kr +Hego Korea kr +کره جنوبی kr +Etelä-Korea kr +Suðurkorea kr +Corée du sud kr +Corea do Sur kr +דרום קוריאה kr +Južna Koreja kr +Dél-Korea kr +Korea Selatan kr +Kórea - Suðurkórea kr +Corea del Sud kr +韓国 kr +대한민국 kr +ເກົາລີໃຕ້ kr +Pietų Korėja kr +DievidKoreja kr +Korea t'Isfel kr +Sør-Korea kr +Zuid-Korea kr +Sør-Korea kr +Borwa bja Korea kr +Corea dèu Sud kr +Korea Południowa kr +Coreia do Sul kr +Coréia do Sul kr +Coreea de Sud kr +Южная Корея kr +Južná Kórea kr +Južna Koreja kr +Južna Koreja kr +I-South Korea kr +Sydkorea kr +¦¾ý ¦¸¡Ã¢Â¡ kr +เกาหลีใต้ kr +Güney Kore kr +Південна Корея kr +Korea tshipembe kr +Hàn Quốc kr +Nonne Coreye kr +Umzantsi Korea kr +韩国 kr +南韓 kr +Emzansi Korea kr +Kuwait kw +Kuwaït kw +الكويت kw +Кувэйт kw +Кувейт kw +Kuvajt kw +Kuvajt kw +Κουβέιτ kw +Kuveit kw +کویت kw +Kuvait kw +Kowait kw +כווית kw +Kuvajt kw +Kuvait kw +クェート kw +쿠웨이트 kw +ແຕ້ມຮູບ- K kw +Kuveitas kw +Koeweit kw +Koweit kw +Kuveit kw +Кувейт kw +Kuvajt kw +Kuvajt kw +I-Kuwait kw +̨Åò kw +KКувейт kw +科威特 kw +科威特 kw +Cayman Islands ky +Кайманови Острови ky +Kajmanska ostrva ky +Cayman-øerne ky +Islas Caimán ky +Kaiman Irlak ky +Kajmán-szigetek ky +ຄາຕາລັນ ky +Ilhas Cayman ky +Kajmanske Ostrovy ky +Kajmanski otoki ky +Caymanöarna ky +Кайманські острови ky +开曼群岛 ky +Kazakhstan kz +Казахстан kz +Казахстан kz +Kazahstan kz +Kazakhstán kz +Kazahsztán kz +ແກແລກຕິກ - K kz +Kazaquistão kz +Kazachstan kz +Kazahstan kz +Kazakstan kz +Казахстан kz +哈萨克斯坦 kz +Laos la +Лаос la +Лаос la +Laosz la +ລາວ la +老挝 la +Lebanon lb +Libanon lb +لبنان lb +Ліван lb +Ливан lb +Liban lb +Libanon lb +Libanon lb +Libanon lb +Λίβανος lb +Lebanono lb +Líbano lb +Liibanon lb +لبنان lb +Libanon lb +Libanon lb +Liban lb +לבנון lb +Libanon lb +Libanon lb +Libano lb +レバノン lb +레바논 lb +ເດນ່ງນ lb +Libanas lb +Libanu lb +Libanon lb +Libanon lb +Libanon lb +Liban lb +Líbano lb +Líbano lb +Liban lb +Ливан lb +Libanon lb +Libanon lb +I-Lebanon lb +Libanon lb +¦ÄÀÉ¡ý lb +Ліван lb +Liban lb +黎巴嫩 lb +黎巴嫩 lb +St. Lucia lc +سانت لوسيا lc +Св. Люсиа lc +S. Lucia lc +Svatá Lucie lc +Σάντα Λουτσία lc +St. Lucio lc +Santa Lucía lc +سن لوسیا lc +Sankta Lusia lc +Sainte Lucie lc +Santa Lucía lc +סנטה לוסיה lc +Santa Lucia lc +セントルキア lc +세인트 루시아 lc +ເຊັນລູເຊີຍ lc +Šv Liucija lc +Sv. Lūcija lc +St. Luċija lc +Santa Lúcia lc +Santa Lúcia lc +Sf. Lucia lc +о. Св. Люсии lc +Sv. Júlia lc +Sv. Lucija lc +I-St. Lucia lc +¦ºýð 溢¡ lc +เซนต์ลูเซีย lc +Санта Лучія lc +圣路西亚 lc +聖露西亞 lc +Liechtenstein li +Ліхтэнштэйн li +Лихтенщайн li +Lihtenštajn li +Liechtestein li +ຟ້າແມບ li +列支敦士登 li +Sri Lanka lk +Шры-Ланка lk +Шри Ланка lk +Šri Lanka lk +ເຊີເບີຍ lk +Šri Lanka lk +斯里兰卡 lk +Liberia lr +Лібэрыя lr +Либеря lr +Liberija lr +Libéria lr +ລິຊາ lr +Libéria lr +Lýbia lr +Liberija lr +利比里亚 lr +Lesotho ls +Лесота ls +Лесото ls +Lesoto ls +Lesoto ls +ທົດສອບ ls +Lesoto ls +莱索托 ls +Lithuania lt +Lithuanië lt +ليتوانيا lt +Litvaniya lt +Літва lt +Литва lt +Litvanija lt +Lituània lt +Litva lt +Litauen lt +Litauen lt +Λιθουανία lt +Litovio lt +Lituania lt +Leedu lt +Lituania lt +لیتوانی lt +Liettua lt +Lituanie lt +ליטא lt +Litva lt +Litvánia lt +Litháenska lt +Lituania lt +リトアニア lt +리 투아니아 lt +ລິທົ່ວເນີຍ lt +Lietuva lt +Lietuva lt +Litwanja lt +Litauen lt +Litouwen lt +Litauen lt +Litwa lt +Lituânia lt +Lituânia lt +Lituania lt +Литва lt +Litva lt +Litva lt +Litvanija lt +I-Lithuania lt +Litauen lt +Ä¢òЧÅɢ¡ lt +ลิธัวเนีย lt +Litvanya lt +Литва lt +立陶宛 lt +立陶宛 lt +Luxembourg lu +Luxenburg lu +لوكسمبورغ lu +Lüksemburq lu +Люксэмбург lu +Люксембург lu +Luksemburg lu +Luxemburg lu +Lucembursko lu +Luxemburg lu +Λουξεμβούργο lu +Luksemburgo lu +Luxemburgo lu +Luksemburg lu +Luxemburg lu +لوگزامبورگ lu +Luxemburg lu +Luksemborg lu +לוקסמבורג lu +Luksemburg lu +Luxemburg lu +Lúxemborg lu +Lussemburgo lu +ルクセンブルグ lu +룩셈부르크 lu +ລັກແຊມເບີກ lu +Liuksemburgas lu +Luksemburga lu +Lussemburgu lu +Luxemburg lu +Luksemburg lu +Luxemburgo lu +Luxemburgo lu +Luxemburg lu +Люксембург lu +Luxemburg lu +Luksemburg lu +Luksemburg lu +I-Luxembourg lu +Luxemburg lu +Äìºõ§À¡÷ì lu +ลักเซมเบอร์ก lu +Lüksemburg lu +Люксембург lu +Lucsimbork lu +卢森堡 lu +盧森堡 lu +Latvia lv +لاتفيا lv +Latviya lv +Латвія lv +Латвия lv +Latvija lv +Lotyšsko lv +Letland lv +Lettland lv +Λιθουανία lv +Latvio lv +Letonia lv +Läti lv +لاتویا lv +Lettonie lv +לטביה lv +Latvija lv +Lettország lv +Léttland lv +Lettonia lv +ラトビア lv +라트비아 lv +ລັດເວີຍ lv +Latvija lv +Latvija lv +Latvja lv +Letland lv +Łotwa lv +Letónia lv +Латвия lv +Lotyšsko lv +Latvija lv +Latvija lv +I-Latvia lv +Lettland lv +ÄðŢ¡ lv +ลัธเวีย lv +Litvanya lv +Латвія lv +Lativia lv +拉脱维亚 lv +拉脫維亞 lv +Libya ly +Libië ly +ليبيا ly +Лівія ly +Либия ly +Libija ly +Líbia ly +Lýbie ly +Libyen ly +Libyen ly +Λιβύη ly +Libia ly +Liibüa ly +Libia ly +لیبی ly +Lybie ly +לוב ly +Líbia ly +Libia ly +リビア ly +ລິຊາ ly +Libija ly +Libië ly +Libia ly +Líbia ly +Líbia ly +Ливия ly +Lýbia ly +Libija ly +I-Libya ly +Libyen ly +Ä¢À¢Â¡ ly +Лівія ly +利比亚 ly +利比亞 ly +Morocco ma +Morokko ma +المغرب ma +Марока ma +Мароко ma +Maroko ma +Marroc ma +Maroko ma +Marokko ma +Marokko ma +Μαρόκο ma +Moroko ma +Marruecos ma +Maroko ma +Maroko ma +مراکش ma +Marokko ma +Marokko ma +Maroc ma +מרוקו ma +Maroko ma +Marokkó ma +Marocco ma +モロッコ ma +모로코 ma +ເມົາລິ ma +Marokas ma +Marokk ma +Marokko ma +Marokko ma +Marokko ma +Maroko ma +Marrocos ma +Marrocos ma +Maroc ma +Марокко ma +Maroko ma +Maroko ma +I-Morocco ma +Marocko ma +§Á¡Ã¡§¸¡ ma +Марокко ma +Marok ma +摩洛哥 ma +摩洛哥 ma +Monaco mc +Манака mc +Монако mc +Monako mc +Mónaco mc +ເມົາລິ mc +Mônaco mc +Monako mc +Monako mc +摩纳哥 mc +Moldova md +Малдова md +Молдова md +Moldavia md +Moldavia md +ສະໂລວັກ md +Moldávsko md +Moldavien md +摩尔多瓦 md +Madagascar mg +Мадагаскар mg +Мадагаскар mg +Madagaskar mg +Madagaszkár mg +ຄາສະບາລ - K mg +Madagaskar mg +Madagaskar mg +Madagaskar mg +马达加斯加 mg +Marshall Islands mh +Маршаллавы астравы mh +Маршалови Острови mh +Maršalova ostrva mh +Marshall-øerne mh +Islas Marshall mh +Marshall Irlak mh +Marshall-szigetek mh +ລາດສະອານາຈັກໄທຍ mh +Ilhas Marshall mh +Maršálove ostrovy mh +Marshallovi otoki mh +Marshallöarna mh +马绍尔群岛 mh +Macedonia mk +Makedoniese mk +مقدونيا mk +Makedonya mk +Македонія mk +Македония mk +Makedonia mk +Makedonija mk +Macedònia mk +Makedonie mk +Makedonien mk +Makedonien mk +Μακεδονία mk +Macedonio mk +Makedoonia mk +Mazedonia mk +مقدونیه mk +Makedonia mk +Macédoine mk +מקדוניה mk +Makedonija mk +Macedónia mk +Masedonia mk +Makedónía mk +マケドニア語 mk +마케도니아 mk +ມາເຊໂດເນີຍ mk +Makedonija mk +Maķedonija mk +Maċedonja mk +Makedonia mk +Macedonië mk +Makedonia mk +Macedònian mk +Macedónia mk +Macedônia mk +Македония mk +Macedónsky mk +Makedonija mk +Makedonija mk +I-Macedonia mk +Makedonien mk +Á¡º¢§¼¡É¢Â¡ mk +มาเซโดเนีย mk +Makedonya mk +Македонія mk +Masedonia mk +马其顿 mk +馬其頓 mk +Mali ml +Малі ml +Мали ml +ຈົດຫມາຍ ml +马里 ml +Myanmar mm +М'янма mm +Майнмар mm +Mjanmar mm +Burma mm +Birmania mm +ຕົວຮງກພີື້ນທີ່ທຳງານ - K mm +Mjanmar mm +缅甸 mm +Mongolia mn +Манголія mn +Монголия mn +Mongolija mn +Mongoliet mn +Mongólia mn +ລອກອິນ mn +Mongólia mn +Mongolsko mn +Mongolija mn +Mongoliet mn +蒙古 mn +Macau mo +Макао mo +Makau mo +Macao mo +Makaó mo +ມອລຕາ mo +Makao mo +Macao mo +澳门 mo +Martinique mq +Мартиника mq +Martinik mq +Martinica mq +ເມົາລິ mq +Martinik mq +马提尼克岛 mq +Mauritania mr +Маўрытанія mr +Мавритания mr +Mauritanija mr +Mauretanien mr +Mauritánia mr +ລິທົວເນີຍ mr +Mauritânia mr +Mavretanija mr +Mauretanien mr +毛里塔尼亚 mr +Montserrat ms +Монсерат ms +Monsera ms +ຈໍພາບ ms +蒙特塞拉特岛 ms +Malta mt +مالطة mt +Мальта mt +Малта mt +Μάλτα mt +Malto mt +مالت mt +Malte mt +מלטה mt +Málta mt +マルタ mt +왈타 mt +ມອລຕາ mt +Мальта mt +I-Malta mt +Á¡ø¼¡ mt +มอลตา mt +Мальта mt +Male mt +马耳他 mt +馬爾他 mt +Mauritius mu +Маўрыцы mu +Маурици mu +Mauricijus mu +Mauricio mu +ພາທິຊັ້ນ mu +Maurícius mu +Mavricij mu +毛里求斯 mu +Maldives mv +Мальдывы mv +Малдиви mv +Maldivi mv +Maldiverne mv +Maldivas mv +Maldív-szigetek mv +ມັລດິສ mv +Maldivas mv +Maldiv mv +Maldiverna mv +马尔代夫 mv +Malawi mw +Малаві mw +Малави mw +Malavi mw +ມອລຕາ mw +马拉维 mw +Mexico mx +Meksiko mx +المكسيك mx +Meksika mx +Мэксыка mx +Мексико mx +Mec'hiko mx +Meksiko mx +Mèxic mx +Mexiko mx +Mexiko mx +Μεξικό mx +Meksikujo mx +México mx +Mehhiko mx +Mexiko mx +مکزیک mx +Meksiko mx +Meksiko mx +Mexique mx +México mx +מקסיקו mx +Meksiko mx +Mexikó mx +Meksiko mx +Mexíkó mx +Messico mx +メキシコ mx +멕시코 mx +ເມັກຊີໂກ mx +Meksika mx +Meksika mx +Messiku mx +Mèxic mx +Meksyk mx +México mx +México mx +Mexic mx +Мексика mx +Mexiko mx +Mehika mx +Meksiko mx +I-Mexico mx +¦Á캢§¸¡ mx +เม็กซิโก mx +Meksika mx +Мексика mx +Mê hi cô mx +Mecsike mx +墨西哥 mx +墨西哥 mx +Malaysia my +Малайзыя my +Малайзия my +Malezija my +Malasia my +Malasia my +Malajzia my +ມອລຕາ my +Malásia my +Malajzia my +Malezija my +马来西亚 my +Mozambique mz +Мазамбік mz +Мозамбик mz +Mozambik mz +Mozambik mz +ຫນ່ວຍຄວາມຈຳ mz +Moçambique mz +Mozambik mz +Mozambik mz +Moçambique mz +莫桑比克 mz +Namibia na +Намібія na +Намибия na +Namibija na +Namíbia na +ຈາໄມກາ na +Namíbia na +Namíbia na +Namibija na +纳米比亚 na +New Caledonia nc +Нова Каледония nc +Nova Kaledonija nc +Ny Caledonien nc +Nueva Caledonia nc +Kaledonia Berria nc +Új-Kaledónia nc +ມາເຊໂດເນີຍ nc +Nova Caledônia nc +Nová Kaledónia nc +Nova Kaledonija nc +Nya Caledonien nc +新喀里多尼亚 nc +Niger ne +Нігер ne +Нигер ne +ຕົວຮງກພື້ນທີ່ທຳງານ ne +Nigéria ne +Nigéria ne +尼日尔 ne +Norfolk Island nf +Остров Норфолк nf +Norfolk ostrvo nf +Norfolk-øerne (Australien) nf +Isla Norfolk nf +Norfok Irla nf +Norfolk-szigetek nf +ໂປແລນ nf +Ilhas Norfolk nf +Ostrov Norfolk nf +Otok Norfolk nf +Norfolkön nf +诺福克岛 nf +Nigeria ng +Нігерыя ng +Нигерия ng +Nigerija ng +Nigéria ng +ບັນແກເລີຍ ng +Nigéria ng +Nigéria ng +Nigerija ng +尼日利亚 ng +Nicaragua ni +Nikaragua ni +نيكاراغوا ni +Нікарагуа ni +Никарагуа ni +Nikaragva ni +Nikaragua ni +Νικαράγουα ni +Nikaraagua ni +نیکاراگویه ni +Nikaragua ni +Nikaragua ni +ניקרגווה ni +ニカラグア ni +니카라과 ni +ປາລາກກວຍ ni +Nikaragua ni +Nikaragwa ni +Nikaragua ni +Nicarágua ni +Nicarágua ni +Никарагуа ni +Nikaragua ni +Nikaragva ni +I-Nicaragua ni +¿¢¸Ã¡Ì§Å ni +Nikaragua ni +Нікарагуа ni +尼加拉瓜 ni +尼加拉瓜 ni +Netherlands nl +Nederland nl +هولندا nl +Hollandiya nl +Галяндыя nl +Холандия nl +Izelvroioù nl +Nizozemska nl +Holanda nl +Nizozemí nl +Holland nl +Niederlande nl +Κάτω Χώρες nl +Nederlando nl +Países Bajos nl +Holland nl +Holanda nl +هلند nl +Alankomaat nl +Háland nl +Pays bas nl +Países Baixos nl +הולנד nl +Nizozemska nl +Hollandia nl +Belanda nl +Holland nl +Paesi Bassi nl +オランダ nl +네덜란드 nl +ເນເທີແລນ์ nl +Olandija nl +Nīderlande nl +Nederland nl +Nederland nl +Nederland nl +Holanda nl +Holandia nl +Países Baixos nl +Holanda nl +Olanda nl +Нидерланды nl +Holandsko nl +Nizozemska nl +Holandija nl +I-Netherlands nl +Nederländerna nl +¦¿¾÷Ä¡óÐ nl +เนเธอร์แลนด์ nl +Hollanda nl +Голландія nl +Hà Lan nl +荷兰 nl +荷蘭 nl +Norway no +Noorweë no +النرويج no +Norveç no +Нарвэгія no +Норвегия no +Norvegia no +Norveška no +Noruega no +Norsko no +Norge no +Norwegen no +Νορβηγία no +Norvegio no +Noruega no +Norra no +Norvegia no +نروژ no +Norja no +Norra no +Norvège no +Noruega no +נורבגיה no +Norveška no +Norvégia no +Norwegia no +Noregur no +Norvegia no +ノルウェー no +노르웨이 no +ນໍເວ no +Norvegija no +Norvēģija no +Norveġja no +Norge no +Noorwegen no +Noreg no +Noruega no +Norwegia no +Noruega no +Noruega no +Norvegia no +Норвегия no +Nórsko no +Norveška no +Norveška no +I-Norway no +Norge no +¿¡÷§Å no +นอร์เวย์ no +Norveç no +Норвегія no +Na uy no +挪威 no +挪威 no +Nepal np +Нэпал np +Непал np +Nepál np +ເວນດາ np +尼泊尔 np +Nauru nr +Науру nr +Науру nr +Naurú nr +ປາລາກກວຍ nr +瑙鲁 nr +Niue nu +Ниуе nu +ເນ໊ຕ nu +纽埃岛 nu +New Zealand nz +Nuwe Seeland nz +نيوزيلاندا nz +Yeni Zellandiya nz +Новая Зэляндыя nz +Нова Зеландия nz +Zeland nevez nz +Novi Zeland nz +Nova Zelanda nz +Nový Zéland nz +Neuseeland nz +Νέα Ζηλανδία nz +Novzelando nz +Nueva Zelanda nz +Uus-Meremaa nz +Zelanda Berria nz +زلاندنو nz +Uusi-Seelanti nz +Nýsæland nz +Nouvelle Zélande nz +Nova Celandia nz +ניו זילנד nz +Novi Zeland nz +Új-Zéland nz +Selandia Baru nz +Nýja Sjáland nz +Nuova Zelanda nz +ニュージーランド nz +뉴질랜드 nz +ນີວຊີແລນ nz +Naujoji Zelandija nz +JaunZēlande nz +Nieuw Zeeland nz +Navera Zelanda nz +Nowa Zelandia nz +Nova Zelândia nz +Nova Zelândia nz +Noua Zeelandă nz +Новая Зеландия nz +Nový Zéland nz +Nova Zelandija nz +Novi Zeland nz +I-New Zealand nz +Nya Zeeland nz +¿¢äº¢Ä¡óÐ nz +นิวซีแลนด์ nz +Yeni Zelanda nz +Нова Зеландія nz +Nouve Zelande nz +新西兰 nz +紐西蘭 nz +Oman om +عُمان om +Аман om +Оман om +Omán om +Ομάν om +Omano om +Omán om +Omaan om +عمان om +עומן om +Omán om +オマーン om +오만 om +ເຍີຍລະມັນ om +Omanas om +Omã om +Оман om +Omán om +I-Oman om +µÁý om +Umman om +Оман om + Oman om +阿曼 om +阿曼 om +Panama pa +بنما pa +Панама pa +Панама pa +Panamà pa +Παναμάς pa +Panamo pa +Panamá pa +پاناما pa +Panamá pa +פנמה pa +パナマ pa +파나마 pa +ປານາມາ pa +Panamá pa +Panamá pa +Панама pa +I-Panama pa +ÀÉ¡Á¡ pa +ปานามา pa +Панама pa +巴拿马 pa +巴拿馬 pa +Peru pe +البيرو pe +Пэру pe +Перу pe +Perou pe +Perú pe +Περού pe +Peruo pe +Perú pe +Peruu pe +پرو pe +Pérou pe +Perú pe +פרו pe +Perú pe +Perù pe +ペルー pe +페루 pe +ເປລູ pe +Perū pe +Pero pe +Perú pe +Перу pe +I-Peru pe +¦ÀÕ pe +เปรู pe +Перу pe +Perou pe +秘鲁 pe +秘魯 pe +French Polynesia pf +Француская Палінэзія pf +Френска Полинезия pf +Francuska Polinezija pf +Fransk Polynesien pf +Polinesia francesa pf +Polinesia Frantziarra pf +Francia-Polinézia pf +ຝຣັ່ງເສດ pf +Polinésia Francesa pf +Francúzska Polynézia pf +Francoska Polinezija pf +Franska Polynesien pf +法属波利尼西亚 pf +Papua New Guinea pg +Папуа–Новая Гвінэя pg +Папуа и Нова Гвинея pg +Papua Nova Gvineja pg +Papua Nueva Guinea pg +Papua Ginea Berria pg +Pápua Új-Guinea pg +ເທົາອ່ອນ pg +Nova Guiné Papua pg +Papua Nová Guinea pg +Papua Nova Gvineja pg +Papua Nya Guinea pg +巴布亚新几内亚 pg +Philippines ph +Філіпіны ph +Филипини ph +Filipini ph +Filippinerne ph +Filipinas ph +Filipinak ph +Fülöp-szigetek ph +ອາລະປະໂຫຍດ ph +Filipinas ph +Filipíny ph +Filipini ph +Filippinerna ph +菲律宾 ph +Pakistan pk +Пакістан pk +Пакистан pk +Pakisztán pk +ລງບ pk +Paquistão pk +巴基斯坦 pk +Poland pl +Poolland pl +بولندا pl +Polşa pl +Польшча pl +Полша pl +Polonia pl +Poljska pl +Polònia pl +Polsko pl +Polen pl +Polen pl +Πολωνία pl +Pollando pl +Polonia pl +Poola pl +Polonia pl +لهستان pl +Puola pl +Pólland pl +Pologne pl +Polonia pl +פולין pl +Poljska pl +Lengyelország pl +Polandia pl +Pólland pl +Polonia pl +ポーランド pl +폴란드 pl +ໂປແລນ pl +Lenkija pl +Polija pl +Polonja pl +Polen pl +Polen pl +Polen pl +Polònia pl +Polska pl +Polónia pl +Polônia pl +Polonia pl +Польша pl +Poľsko pl +Poljska pl +Poljska pl +I-Poland pl +Polen pl +§À¡Ä¡óÐ pl +โปแลนด์ pl +Polonya pl +Польща pl +Pholandi pl +Ba Lan pl +Pologne pl +波兰 pl +波蘭 pl +Saint Pierre and Miquelon pm +Sveti Pjer i Migelon pm +Saint Pierre og Miquelon pm +Saint Pierre y Miquelon pm +Saint Pierre eta Miquelon pm +Saint Pierre és Miquelon pm +Saint Pierre e Miquelon pm +Saint Pierre a Miquelon pm +Sveti Pierre in Miquelon pm +Saint Pierre och Miquelon pm +圣皮埃尔和密克隆岛 pm +Pitcairn pn +Pitkern pn +ລງບ pn +Puerto Rico pr +Пуерто Рико pr +Portoriko pr +ໂປຣໂຕຄອນ pr +Porto Rico pr +Portoriko pr +波多尼各 pr +Palestinian Territory ps +Palesteinse Gebied ps +السلطة الفلسطينية ps +Палестынская тэрыторыя ps +Палестина ps +Palestinska teritorija ps +Territori Palestí ps +Palestinské území ps +Palæstinensiske selvstyreområder ps +Palästinensisches Gebiet ps +Παλαιστίνη ps +Palestinaj teritorioj ps +Territorio palestino ps +Palestiina territoorium ps +Palestina ps +فلسطین ps +Palestiinalaisalue ps +Palestinensiska økið ps +Territoire palestinien ps +השטחים הפלסטיניים ps +Palestinski teritorij ps +Palesztin területek ps +Territori palestinesi ps +パレスチナ自治区 ps +팔레스타인 자치구 ps +ການພິມຜິດພາດ ps +Palestinos teritorija ps +Palestina ps +Palestinske territorier ps +Palestijns territorium ps +Palestinske territorium ps +Bohwa bja Palestina ps +Palestyna ps +Território Palestiniano ps +Território Palestino ps +Teritoriul Palestinian ps +Палестинские территории ps +Palestínske územia ps +Palestinski teritorij ps +I-Palestinian Territory ps +Palestina ps +À¡ÄŠ¾£É ¬¨½Âõ ps +Filistin Bölgesi ps +Палестинська територія ps +Mukano wa maphalesitina ps +Palestene ps +Umhlaba wePalestina ps +巴勒斯坦地区 ps +巴勒斯坦領地 ps +Indawo yama-Phalesitina ps +Portugal pt +البرتغال pt +Portuqaliya pt +Партугалія pt +Португалия pt +Portugalsko pt +Πορτογαλία pt +Portugalo pt +پرتغال pt +Portugali pt +פורטוגל pt +Portugália pt +Portúgal pt +Portogallo pt +ポルトガル pt +포르투갈 pt +ໂປຣຕຸເກສ pt +Portugalija pt +Portugāle pt +Portugall pt +Portugalia pt +Portugalia pt +Португалия pt +Portugalsko pt +Portugalska pt +I-Portugal pt +§À¡÷òиø pt +โปรตุเกส pt +Portekiz pt +Португалія pt +BềEĐào Nha pt +葡萄牙 pt +葡萄牙 pt +Palau pw +Палау pw +Палау pw +ມອລຕາ pw +帕劳群岛 pw +Paraguay py +Paraguaai py +باراغواي py +Paraqvay py +Парагвай py +Парагвай py +Paragvaj py +Paraguai py +Παραγουάη py +Paragvajo py +Paraguai py +پاراگویه py +Paraguai py +פרגואי py +Paragvaj py +パラグアイ py +파라과이 py +ປາລາກກວຍ py +Paragvajus py +Paragvaja py +Paragwaj py +Paraguai py +Paragwaj py +Paraguai py +Paraguai py +Paraguai py +Парагвай py +Portugalsko py +Paragvaj py +Paragvaj py +I-Paraguay py +Àá̧Špy +ปารากวัย py +Парагвай py +Paragway py +巴拉圭 py +巴拉圭 py +Qatar qa +قطر qa +Катар qa +Катар qa +Katar qa +Katar qa +Katar qa +Κατάρ qa +Kataro qa +Katar qa +قطر qa +Katar qa +קטר qa +Katar qa +Katar qa +カタール qa +카타르 qa +ມອລຕາ qa +Katar qa +Катар qa +Katar qa +Katar qa +I-Qatar qa +¸¾¡÷ qa +Katar qa +Катар qa +卡塔尔 qa +卡達 qa +Romania ro +Romenië ro +رومانيا ro +Rumıniya ro +Румынія ro +Румъния ro +Roumania ro +Rumunija ro +Rumunsko ro +Rumænien ro +Rumänien ro +Ρουμανία ro +Rumanio ro +Rumanía ro +Rumeenia ro +Errumania ro +رومانی ro +Rumenia ro +Roumanie ro +Romanía ro +רומניה ro +Rumunjska ro +Románia ro +Rumania ro +Rúmenía ro +ルーマニア ro +루마니아 ro +ໂລມາເນີຍ ro +Rumunija ro +Rumānija ro +Rumanija ro +Roemenië ro +Rumunia ro +Roménia ro +Romênia ro +Румыния ro +Rumunsko ro +Romunija ro +Rumunija ro +I-Romania ro +Rumänien ro +Õ§Áɢ¡ ro +โรมาเนีย ro +Romanya ro +Румунія ro +Ru ma ni ro +Roumaneye ro +罗马尼亚 ro +羅馬尼亞 ro +Russia ru +Rusland ru +روسيا ru +Rusiya ru +Расея ru +Русия ru +Rusia ru +Rusija ru +Rússia ru +Rusko ru +Rusland ru +Russland ru +Ρωσία ru +Ruslando ru +Rusia ru +Venemaa ru +Errusia ru +روسیه ru +Venäjä ru +Russland ru +Russie ru +Rusia ru +רוסיה ru +Rusija ru +Oroszország ru +Rusia ru +Rússland ru +ロシア ru +러시아 ru +ລັດເຊີຍ ru +Rusija ru +Krievija ru +Russja ru +Russland ru +Rusland ru +Russland ru +Rosja ru +Rússia ru +Rússia ru +Rusia ru +Россия ru +Rusko ru +Rusija ru +Rusija ru +I-Russia ru +Ryssland ru +ú¢Â¡ ru +รัสเซีย ru +Rusya ru +Росія ru +Rashia ru +Nga ru +Russeye ru +Rashiya ru +俄罗斯 ru +俄羅斯 ru +Rwanda rw +Руанда rw +Руанда rw +Ruanda rw +Ruanda rw +Ruanda rw +ແພນດ້າ rw +Ruanda rw +Ruanda rw +卢旺达 rw +Saudi Arabia sa +Saudi Arabië sa +السعودية sa +Саудаўская Арабія sa +Саудитска Арабия sa +Saudijska Arabija sa +Aràbia Saudí sa +Saúdská Arábie sa +Saudi Arabien sa +Saudi-Arabien sa +Σαουδική Αραβία sa +Saŭdi-Arabio sa +Arabia Saudí sa +Saudi Araabia sa +عربستان سعودی sa +Saudi-Arabia sa +Arabie Saoudite sa +ערב הסעודית sa +Saudijska Arabija sa +Szaúd-Arábia sa +Arabia saudita sa +サウジアラビア sa +사우디 아라비아 sa +ອາລະບິກ sa +Saudi Arabija sa +Għarabja Sawdita sa +Saudi-Arabia sa +Saudi-Arabië sa +Saudi-Arabia sa +Arabia Saudyjska sa +Arábia Saudita sa +Arábia Saudita sa +Arabia Saudită sa +Саудовская Аравия sa +Saudská arábia sa +Saudova Arabija sa +I-Saudi Arabia sa +Saudiarabien sa +º×¾¢ «§ÃÀ¢Â¡ sa +Suudi Arabistan sa +Саудівська Аравія sa +沙特阿拉伯 sa +沙烏地阿拉伯 sa +Solomon Islands sb +Саламонавы астравы sb +Соломонови Острови sb +Solomonska ostrva sb +Salomon-øerne sb +Islas Salomón sb +Solomon Irlak sb +Salamon-szigetek sb +ສະໂລວະເນີຍ sb +Ilhas Salomão sb +Šalamúnove ostrovy sb +Solomonovi otoki sb +Salomonöarna sb +所罗门群岛 sb +Seychelles sc +Сэйшэлы sc +Сейшелски острови sc +Sejšeli sc +Seychellerne sc +ເຊລ sc +Sejšeli sc +Seychellerna sc +塞舌尔 sc +Sudan sd +السودان sd +Судан sd +Судан sd +Sudán sd +Σουδάν sd +Sudano sd +Sudán sd +Sudaan sd +سودان sd +Sudania sd +Soudan sd +סודן sd +Szudán sd +Súdan sd +スーダン sd +수단 sd +ຊູດານ sd +Sudanas sd +Sudāna sd +Sudão sd +Sudão sd +Судан sd +Sudán sd +I-Sudan sd +ݼ¡ý sd +ซูดาน sd +Судан sd +Sudani sd +Soudan sd +苏丹 sd +蘇丹 sd +Sweden se +Swede se +السويد se +İsveç se +Швэцыя se +Швеция se +Sveden se +Švedska se +Suècia se +Švédsko se +Sverige se +Schweden se +Σουηδία se +Svedio se +Suecia se +Rootsi se +Suedia se +سوید se +Ruotsi se +Svøriki se +Suède se +Suecia se +שבדיה se +Švedska se +Svédország se +Swedia se +Svíþjóð se +Svezia se +スウェーデン se +스웨덴 se +ສະວີເດນ se +Švedija se +Zviedrija se +Svezja se +Sverige se +Zweden se +Sverige se +Suècia se +Szwecja se +Suécia se +Suécia se +Suedia se +Швеция se +Švédsko se +Švedska se +Švedska se +I-Sweden se +Sverige se +ÍÅ£¼ý se +สวีเดน se +İsveç se +Швеція se +Swidene se +Thuỵ Điển se +瑞典 se +瑞典 se +Singapore sg +Сынгапур sg +Сингапур sg +Singapur sg +Singapur sg +Szingapúr sg +ໂຊນາ sg +Singapura sg +Singapur sg +Singapur sg +新加坡 sg +Saint Helena sh +Свети Елена sh +Sveta Helena sh +St. Helena sh +Santa Helena sh +Szent Heléna sh +ຫົວເລື່ອງ sh +Santa Helena sh +Svätá Helena sh +Sveta Helena sh +圣赫勒拿岛 sh +Slovenia si +Slovenië si +سلوفينيا si +Sloveniya si +Славенія si +Словения si +Slovenija si +Eslovenia si +Slovinsko si +Slovenien si +Slowenien si +Σλοβενία si +Slovenio si +Eslovenia si +Sloveenia si +Eslovenia si +اسلوانی si +Slovénie si +Eslovenia si +סלובניה si +Slovenija si +Szlovénia si +Slóvenía si +スロベニア si +슬로베니아 si +ສະໂລວະເນີຍ si +Slovėnija si +Slovēnija si +Slovenja si +Slovenië si +Eslovenia si +Słowenia si +Eslovénia si +Eslovênia si +Словения si +Slovinsko si +Slovenija si +Slovenija si +I-Slovenia si +Slovenien si +ͧġŢɢ¡ si +สโลเวเนีย si +Slovenya si +Словенія si +斯洛文尼亚 si +斯洛維尼亞 si +Slovakia sk +Slovakië sk +سلوفاكيا sk +Slovakiya sk +Славакія sk +Словакия sk +Slovačka sk +Eslovaquia sk +Slovensko sk +Slovakiet sk +Slowakien sk +Σλοβακία sk +Slovakujo sk +Eslovaquia sk +Slovakkia sk +Eslovakia sk +اسلواکی sk +Slovaquie sk +סלובקיה sk +Slovačka sk +Szlovákia sk +Slóvakía sk +Slovacchia sk +スロバキア sk +슬로바키아 sk +ສະໂລວັກ sk +Slovakija sk +Slovākija sk +Slovakja sk +Slovakije sk +Słowacja sk +Eslováquia sk +Eslováquia sk +Slovacia sk +Словакия sk +Slovensko sk +Slovaška sk +I-Slovakia sk +Slovakien sk +ͧġš츢 sk +สโลวัค sk +Slovakya sk +Словакія sk +斯洛伐克 sk +斯洛伐克 sk +San Marino sm +Сан-Марына sm +Сан Марино sm +ໂຊນາ sm +圣马力诺 sm +Senegal sn +Сэнэгал sn +Сенегал sn +Szenegál sn +ທົ່ວໄປ sn +塞内加尔 sn +Somalia so +Somalië so +صومال so +Самалі so +Сомалия so +Somalija so +Somàlia so +Somálsko so +Σομαλία so +Somalio so +Somaalia so +سومالی so +Somalie so +סומליה so +Somalija so +Szomália so +ソマリア so +소말리아 so +ໂລມາເນີຍ so +Somalis so +Somalija so +Somalie so +Somália so +Somália so +Сомали so +Somálsko so +Somalija so +I-Somalia so +§º¡Á¡Ä¢Â¡ so +Somali so +Сомалі so +Somaleye so +索马里 so +索馬利亞 so +Suriname sr +Сурынам sr +Суринам sr +Surinam sr +ເຊີເບີຍ sr +Surinam sr +Surinam sr +Surinam sr +Sao Tome and Principe st +Сан Томе и Приницпе st +Sao Tome i Principe st +Sao Tomé og Principe st +Sao Tome y Príncipe st +Sao Tome eta Principe st +Sao Tome és Principe st +ບໍລິການ st +São Tome e Príncipe st +Sao Tome a Principe st +Sao Tome in Principe st +São Tomé och Príncipe st +El Salvador sv +السلفادور sv +Сальвадор sv +Ел Салвадор sv +Salvador sv +Salvador sv +Ελ Σαλβαντόρ sv +Elsalvadoro sv +Salvador sv +السالوادور sv +Salvador sv +O Salvador sv +אל סלבדור sv +Salvador sv +エルサルバドル sv +엘살바도르 sv +ເອລຊັນວາດດໍ sv +Salvadoras sv +Salvadora sv +Salwador sv +Salvador sv +Сальвадор sv +Salvádor sv +Salvador sv +I-El Salvador sv +±ø º¡øŧ¼¡÷ sv +เอลซัลวาดอร์ sv +Ель-Сальвадор sv +萨尔瓦多 sv +薩爾瓦多 sv +Syria sy +Sirië sy +سوريا sy +Сырыя sy +Сирия sy +Sirija sy +Síria sy +Sýrie sy +Syrien sy +Syrien sy +Συρία sy +Sirio sy +Siria sy +Süüria sy +Siria sy +سوریه sy +Syyria sy +Syrie sy +סוריה sy +Sirija sy +Szíria sy +Siria sy +シリア sy +시리아 sy +ເຊີເບີຍ sy +Sirija sy +Siria sy +Syrië sy +Síria sy +Síria sy +Siria sy +Сирия sy +Sýria sy +Sirija sy +I-Syria sy +Syrien sy +º¢Ã¢Â¡ sy +Suriye sy +Сирія sy +叙利亚 sy +敘利亞 sy +Swaziland sz +Свазылэнд sz +Свазиленд sz +Svazilend sz +Swazilandia sz +Swazilandia sz +Szváziföld sz +ລາດສະນາຈັກໄທຍ sz +Suécia sz +Swazijsko sz +Svazi sz +斯威士兰 sz +Turks and Caicos Islands tc +Turks i Kaikos ostrva tc +Turks- og Caicosøerne tc +Islas Turcos y Caicos tc +Turks eta Caicos Irlak tc +Turks- és Caicos-szigetek tc +Ilhas Caicos e Turca tc +Turks a Caicos ostrovy tc +Otoka Turks in Caicos tc +Turks- och Caicosöarna tc +特克斯和凯科斯群岛 tc +Chad td +Чад td +Чад td +Čad td +Tchad td +Txad td +Csád td +ເກມໄພ່ td +Čad td +Čad td +Tchad td +乍得 td +Togo tg +Тога tg +Того tg +ຂອງເລ່ນສະນຸກ tg +多哥 tg +Thailand th +تايلاند th +Tayland th +Тайлянд th +Тайланд th +Tajland th +Tailàndia th +Thajsko th +Ταϊλάνδη th +Tajlando th +Tailandia th +Tai th +Thailandia th +تایلند th +Thaimaa th +Tailand th +Thaïlande th +Tailandia th +תאילנד th +Tajland th +Thaiföld th +Tæland th +Tailandia th +タイ th +태국 (타이) th +ລາດສະນາຈັກໄທຍ th +Tailandas th +Taivāna th +Tajlandja th +Tailandia th +Tajlandia th +Tailândia th +Tailândia th +Tailanda th +Таиланд th +Thajsko th +Tajska th +Tajland th +I-Thailand th +¾¡öÄ¡óÐ th +ราชอาณาจักรไทย th +Tayland th +Таїланд th +Thái Lan th +Taylande th +泰国 th +泰國 th +Tajikistan tj +Таджыкістан tj +Таджикистан tj +Tadžikistan tj +Tajikistán tj +Tadzsikisztán tj +ໃຕ້ຫວັນ tj +Tajiquistão tj +Tadžikistan tj +Tadžikistan tj +Tadzjikistan tj +塔吉克斯坦 tj +Tokelau tk +Токелао tk +ເບລາລັສ tk +Turkmenistan tm +Туркмэністан tm +Туркменистан tm +Turkmenistán tm +Türkmenisztán tm +ຕຸລະກີ tm +Turquia tm +土库曼斯坦 tm +Tunisia tn +Tunisië tn +تونس tn +Туніс tn +Тунис tn +Tunis tn +Tuníssia tn +Tunisko tn +Tunesien tn +Tunesien tn +Τυνησία tn +Tunisio tn +Túnez tn +Tuneesia tn +تونس tn +Tunesia tn +Tunisie tn +תוניסיה tn +Tunis tn +Tunézia tn +チュニジア tn +튀니지 tn +ລັດເຊີຍ tn +Tunisas tn +Tuneżija tn +Tunisie tn +Tunezja tn +Tunísia tn +Tunísia tn +Тунис tn +Tunisko tn +Tunizija tn +I-Tunisia tn +Tunisien tn +ÐÉ¢º¢Â¡ tn +Tunus tn +Туніс tn +突尼斯 tn +突尼西亞 tn +Tonga to +Тонга to +Тонга to +ໂຊນາ to +汤加 to +East Timor tp +Источен Тимур tp +Istočni Timor tp +Østtimor tp +Timor oriental tp +Ekialdeko Timor tp +Kelet-Timor tp +ວັນແລະເວລາ tp +Timor Leste tp +Východný Timor tp +Vzhodni Timor tp +Östtimor tp +东帝汶 tp +Turkey tr +Turkeye tr +تركيا tr +Türkiyə tr +Турцыя tr +Турция tr +Turkia tr +Turska tr +Turquia tr +Turecko tr +Tyrkiet tr +Türkei tr +Τουρκία tr +Turkujo tr +Turquía tr +Türgi tr +Turkia tr +ترکیه tr +Turkki tr +Turkaland tr +Turquie tr +Turquía tr +טורקיה tr +Turska tr +Törökország tr +Turki tr +Tyrkland tr +Turchia tr +トルコ tr +터키 tr +ຕຸລະກີ tr +Turkija tr +Turcija tr +Turkija tr +Tyrkia tr +Turkije tr +Tyrkia tr +Turquia tr +Turcja tr +Turquia tr +Turquia tr +Turcia tr +Турция tr +Turecko tr +Turčija tr +Turska tr +I-Turkey tr +Turkiet tr +ÐÕ츢 tr +ตุรกี tr +Türkiye tr +Туреччина tr +ThềENhĩ Kì tr +土耳其 tr +土耳其 tr +Trinidad and Tobago tt +Trinidad en Tobago tt +ترينيداد و توباغو tt +Trinidad və Tabaqo tt +Трынідад і Табага tt +Тринидад и Тобаго tt +Trinidad ha Tobago tt +Trinidad i Tobago tt +Trinidad i Tobago tt +Trinidad a Tobago tt +Trinidad og Tobago tt +Trinidad und Tobago tt +Τρίνινταντ και Τομπάγκο tt +Trinidado kaj Tobago tt +Trinidad y Tobago tt +Trinidad ja Tobago tt +Trinidad eta Tobago tt +ترینیداد و تُباگو tt +Trinidad ja Tobago tt +Trinidad og Tobago tt +Trinidad et Tobago tt +Trindade e Tobago tt +טרינידד וטובגו tt +Trinidad i Tobago tt +Trinidad és Tobago tt +Trinidad dan Tobago tt +Trinidad og Tobago tt +Trinidad e Tobago tt +トリニダードトバコ tt +트리니다드토바고 tt +ຕີນິແດດແລະໂທບາໂກ tt +Trinidadas ir Tobagas tt +Trinidada un Tobago tt +Trinidad u Tobago tt +Trinidad og Tobago tt +Trinidad en Tobago tt +Trinidad og Tobago tt +Trinidad le Tobago tt +Trinidad e Tobago tt +Trinidad i Tobago tt +Trinidade e Tobago tt +Trinidad e Tobago tt +Trinidad şi Tobago tt +Тринидад и Тобаго tt +Trinidad a Tobago tt +Trinidad in Tabago tt +Trinidad i Tobago tt +I-Trinidad kanye neTobago tt +Trinidad och Tobago tt +ðâɢ¼¡ð & ¦¼¡À¡§¸¡ tt +ตรีนิแดดและโทบาโก tt +Trinidad veTabago tt +Республіка Трінідад та Тобаго tt +Trinidad na Tobago tt +Trinidad và Tobago tt +Trinidad ne Tobago tt +特里尼达和多巴哥 tt +千里達及托貝哥 tt +Trinidad knaye ne-Tobago tt +Tuvalu tv +Тувалу tv +Тували tv +ຊູລູ tv +图瓦卢 tv +Taiwan tw +تايوان tw +Tayvan tw +Тайвань tw +Тайван tw +Tajvan tw +Ταϊβάν tw +Tajvano tw +Taiwán tw +Taivan tw +تایوان tw +Taivan tw +Taïwan tw +Taiwán tw +טיוואן tw +Tajvan tw +Tajvan tw +台湾 tw +대만 tw +ໃຕ້ຫວັນ tw +Taivanis tw +Taivāna tw +Tajwan tw +Tajwan tw +Formosa tw +Тайвань tw +Tajvan tw +Tajvan tw +I-Taiwan tw +¾¡öÅ¡ý tw +ได้หวัน tw +Tayvan tw +Тайвань tw +Đài Loan tw +中国台湾 tw +台灣 tw +Tanzania, United Republic of tz +Злучаная Рэспубліка Танзанія tz +Танзания tz +Tanzanija, Ujedinjena Republika tz +Tanzania tz +Tanzania, Republica de tz +Tanazia, Errepublika Batua tz +Tanzánia tz +ໂດມິນິກັນ tz +República da Tanzânia tz +Tanzánia, Spojená republika tz +Tanzanija, Združena republika tz +Förenade republiken Tanzania tz +坦桑尼亚 tz +Ukraine ua +Ukraïne ua +أوكرانيا ua +Ukrayna ua +Украіна ua +Украйна ua +Ukraina ua +Ukrajina ua +Ucraïna ua +Ukrajina ua +Ουκρανία ua +Ukrainio ua +Ucrania ua +Ukraina ua +Ukrania ua +اکراین ua +Ukraina ua +Ukraina ua +Ucraína ua +אוקראינה ua +Ukrajina ua +Ukrajna ua +Ukraina ua +Úkraína ua +Ucraina ua +ウクライナ ua +우크라이나 ua +ຍູເຄຣນ ua +Ukraina ua +Ukraina ua +Ukranja ua +Ukraina ua +Oekraïne ua +Ukraina ua +Ucraina ua +Ukraina ua +Ucrânia ua +Ucrânia ua +Ucraina ua +Украина ua +Ukrajina ua +Ukrajina ua +Ukrajna ua +I-Ukraine ua +Ukraina ua +¯ì¦Ãöý ua +ยูเครน ua +Ukrayna ua +Україна ua +Ukraina ua +Ucrinne ua +乌克兰 ua +烏克蘭 ua +Uganda ug +Уганда ug +Уганда ug +ແພນດ້າ ug +乌干达 ug +United States of America us +Vereenigde State van Amerika us +الولايات المتحدة الأمريكية us +Amerika Birləşmiş Ştatları us +Злучаныя Штаты Амэрыкі us +САЩ us +Stadoù-Unanet Amerika us +Sjedinjene Američke Države us +Estats Units d'Amèrica us +Spojené státy americké us +USA us +USA us +Ην. Πολιτείες της Αμερικής us +Usono us +Estados Unidos de América us +Ameerika Ühendriigid us +Amerikako Estatu Batuak us +ایالات متحده‌ی آمریکا us +Yhdysvallat us +Sambandsríki Amerika (USA) us +États Unis d'Amérique us +Estados Unidos de América us +ארצות הברית us +Sjedinjene Američke Države us +Amerikai Egyesült Államok us +Amerika Serikat us +Bandaríki Norður Ameríku us +Stati Uniti d'America us +アメリカ us +미 합중국 us +ສະຫະລັດອາເມລິກາ us +Jungtinės Amerikos Valstijos us +Amerikas Savienotās Valstis us +Stati Uniti us +USA us +Verenigde Staten van Amerika us +USA us +Estats Units d'Amèrica us +Stany Zjednoczone Ameryki us +Estados Unidos da América us +Estados Unidos us +Statele Unite ale Americii us +Соединенные Штаты Америки us +USA us +Združene države Amerike us +Sjedinjene američke države us +I-United States of America us +Amerikas förenta stater us +³ì¸¢Â «¦ÁÃ¢ì¸ ¿¡Î¸û us +สหรัฐอเมริกา us +Amerika Birleşik Devletleri us +США us +mashango o tangananaho a America us +Mĩ us +United States ye Melika us +美利坚合众国 us +美利堅合眾國 us +Uruguay uy +الأوروغواي uy +Uruqvay uy +Уругвай uy +Уругвай uy +Urugvaj uy +Uruguai uy +Ουρουγουάη uy +Urugvajo uy +Uruguai uy +اروگویه uy +Uruguai uy +אורוגואי uy +Urugvaj uy +ウルグアイ uy +우루과이 uy +ອຸລຸກກວຍ uy +Urugvajus uy +Urugvaja uy +Urugwaj uy +Uruguai uy +Urugwaj uy +Uruguai uy +Uruguai uy +Uruguai uy +Уругвай uy +Uruguaj uy +Urugvaj uy +Urugvaj uy +I-Uruguay uy +¯Õ̧Šuy +อุรุกวัย uy +Уругвай uy +Ourougway uy +乌拉圭 uy +烏拉圭 uy +Uzbekistan uz +Узбэкістан uz +Узбекистан uz +Uzbekistán uz +Üzbegisztán uz +ເດນ່ງນ uz +Uzbequistão uz +乌兹别克斯坦 uz +Vatican City va +Ватыкан va +Ватикана va +Vatikan va +Vatikanstaten va +Vaticano va +Batikano Hiria va +Vatikán va +ລັດເວີຍ va +Cidade do Vaticano va +Vatikán va +Vatikan va +Vatikanstaten va +梵蒂冈 va +St. Vincent and the Grenadines vc +St. Vincent en die Grenadene vc +سانت فينسنت و الغرينادين vc +St. Vincent və Grenadines vc +Сент-Винсент и Гренадине vc +S. Visant hag ar Grenadinez vc +Sveti Vincent i Grenadini vc +St. Vincent i les Granadines vc +St. Vincent a Grenadiny vc +St. Vincent og Grenadinerne vc +St. Vincent und Grenadinen vc +St. Vincent kaj la Grenadinoj vc +San Vicente y las Granadinas vc +St. Vincent ja Grenadines vc +St. Vincent eta Grenadines vc +سن وینسن و گرادینس vc +St. Vincent ja Grenadiinit vc +Sankta Vinsent og Grenadinoyggjar vc +St Vincent et les Grenadines vc +San Vicente e as Granadinas vc +סנט וינסנט והגרנדינים vc +St. Vincent és Grenadines vc +St. Vincent dan the Grenadines vc +St. Vincent og Grenadines vc +S. Vincent e the Grenadines vc +セントヴィンセントグレナディン vc +세인트 빈센트 그레나딘 vc +ເຊີນວິນແຊນ ແລະເກນາດີນ vc +Šv. Vincentas ir Grenadinai vc +Sv. Vincents un Grenadīnes vc +St. Vinċenz u l-Grenadini vc +St. Vincent og Grenadinene vc +St. Vincent en de Grenadines vc +St. Vincent og Grenadinane vc +St. Vincent le Grenadines vc +St. Vincent e les Granadines vc +St. Vincent i Grenadyny vc +São Vicente e Grenadinas vc +São Vicente e Grenadines vc +Sf. Vincent şi Grenadines vc +Сент-Винсент и Гренадины vc +St. Vincent a Grenadines vc +Sv. Vincent in Grenadini vc +St. Vincent i Grenadine vc +I-St. Vincent and the Grenadines vc +St. Vincent och Grenadinerna vc +¦ºÂ¢ýð Å¢ý¦ºýð & ¸¢¦ÃÉËý¸û vc +เซนต์วินเซนต์ และ เกรนาดีน vc +St. Vincent ve Grenadines vc +Сент-Вінсент і Гренадіни vc +St. Vincent na Grenadines vc +St. Vincent và Grenadines vc +St. Vincent ne Grenadines vc +圣文森特和格林那达 vc +聖文森及格納那丁 vc +I-St. Vincent kanye ne-Grenadines vc +Venezuela ve +فنزويلا ve +Вэнэсуэла ve +Венецуела ve +Venecuela ve +Βενεζουέλα ve +Venezuelo ve +Venetsueela ve +ونزویلا ve +Venesuela ve +Vénézuela ve +ונצואלה ve +Venecuela ve +ベネズェラ ve +베네수엘라 ve +ເວເນຊຸເອລາ ve +Venesuela ve +Venecuēla ve +Veneżwela ve +Wenezuela ve +Венесуэла ve +Venecuela ve +I-Venezuela ve +¦ÅÉ¢ÍÅÄ¡ ve +เวเนซูเอลา ve +Венесуела ve +委内瑞拉 ve +委內瑞拉 ve +Virgin Islands, British vg +Вирджински Острови, Британски vg +Djevičanska ostrva, Britanska vg +Britiske jomfruøer vg +Islas Vírgenes Británicas vg +Irla Birjinak, Britaniar vg +Virgin-szigetek (brit) vg +Ilhas Virgens, Inglaterra vg +Panenské Ostrovy, Britské vg +Deviški otoki, Britanski vg +Brittiska Jungfruöarna vg +维尔京群岛,英国 vg +Virgin Islands, U.S. vi +Вирджински Острови, Американски vi +Djevičanska ostrva, Američka vi +Jomfruøerne vi +Islas Vírgenes Americanas vi +Irla Birjinak, EE.BB. vi +Virgin-szigetek (USA) vi +Ilhas Virgens, EUA vi +Panenské Ostrovy, Americké vi +Deviški otoki, ZDA vi +Amerikanska Jungfruöarna vi +维尔京群岛,美国 vi +Vietnam vn +Viëtnam vn +فييتنام vn +Vyetnam vn +Віетнам vn +Виетнам vn +Vijetnam vn +Βιετνάμ vn +Vjetnamo vn +ویتنام vn +וייטנאם vn +Vijetnam vn +Víetnam vn +ベトナム vn +베트남 vn +ຫວງດນາມ vn +Vietnamas vn +Vjetnama vn +Vjetnam vn +Viëtnam vn +Wietnam vn +Vietname vn +Vietnã vn +Вьетнам vn +I-Vietnam vn +เวียตนาม vn +В'єтнам vn +越南 vn +越南 vn +Vanuatu vu +Вануату vu +Ванути vu +ຈີນ vu +瓦努阿图 vu +Wallis and Futuna wf +Valis i Futuna wf +Wallis- og Futuna-øerne wf +Wallis y Futuna wf +Wallis eta Futuna wf +Wallis és Futuna wf +ປັກອິນພາບ wf +Wallis e Futuna wf +Wallis a Futuna wf +Wallis in Futuna wf +Wallis och Futuna wf +Samoa ws +Самоа ws +Самоя ws +Szamoa ws +ໂຊນາ ws +萨摩亚群岛 ws +Yemen ye +اليمن ye +Емен ye +Йемен ye +Jemen ye +Iemen ye +Jemen ye +Jemen ye +Υεμένη ye +Jemeno ye +Jeemen ye +یمن ye +Jemen ye +Jemen ye +תימן ye +Jemen ye +Jemen ye +イエメン ye +예멘 ye +ເດມອນ ye +Jemenas ye +Jemen ye +Jemen ye +Jemen ye +Jemen ye +Jemen ye +Iémen ye +Йемен ye +Jemen ye +Jemen ye +I-Yemen ye +Jemen ye +§ÂÁý ye +Ємен ye +也门 ye +葉門 ye +Yugoslavia yu +Югаславія yu +Югославия yu +Jugoslavija yu +Jugoslavien (Serbien/Montenegro) yu +Jugoszlávia yu +ໂບລິເວີຍ yu +Iugoslávia yu +Juhoslávia yu +Jugoslavija yu +Jugoslavien yu +南斯拉夫 yu +South Africa za +Suid Afrika za +جنوب أفريقيا za +Cənubi Afrika za +Паўднёвая Афрыка za +Южна Африка za +Suafrika za +Južna Afrika za +Sudàfrica za +Jižní Afrika za +Sydafrikanske republik za +Südafrika za +Νότια Αφρική za +Sudafriko za +Sudáfrica za +Lõuna Aafrika za +Hego Afrika za +آفریقای جنوبی za +Etelä-Afrikka za +Suðurafrika za +Afrique du sud za +África do Sur za +דרום אפריקה za +Južna Afrika za +Dél-Afrika za +Afrika Selatan za +Suður Afríka za +Sud Africa za +南アフリカ za +남 아프리카 공화국 za +ແອບພິກາໃຕ້ za +Pietų Afrika za +Dienvid Āfrika za +Afrika t'Isfel za +Sør-Afrika za +Zuid-Afrika za +Sør-Afrika za +Afrika Borwa za +Sudafrica za +Afryka Południowa za +Africa do Sul za +África do Sul za +Africa de Sud za +Южная Африка za +Južná Afrika za +Južna Afrika za +Južna Afrika za +I-South Africa za +Sydafrika za +¦¾ý ¬ôâ측 za +แอฟริกาใต้ za +Güney Afrika za +Південна Африка za +Afurika tshipembe za +Nam Phi za +Mzantsi Afrika za +南非 za +南非 za +Emzantsi Afrika za +Zambia zm +Замбія zm +Замбия zm +ຈາໄມກາ້ zm +Zâmbia zm +Zambija zm +赞比亚 zm +Zimbabwe zw +Зымбабвэ zw +Зимбабве zw +Zimbabve zw +ລິຊາ zw +Zimbabve zw +津巴布韦 zw diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index 361988010b..1369b480bf 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -521,7 +521,9 @@ render_contact_block (GString *buffer, EContact *contact) g_free (mail); } g_list_foreach (email_list, (GFunc) g_free, NULL); + g_list_foreach (email_attr_list, (GFunc) e_vcard_attribute_free, NULL); g_list_free (email_list); + g_list_free (email_attr_list); if (accum->len) { diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index ae6467bf87..d1fc8fd254 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -15,6 +15,7 @@ * * Authors: * Chris Toshok + * Dan Vratil * * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) * @@ -28,6 +29,8 @@ #include #include #include +#include +#include #include #include @@ -48,6 +51,39 @@ /* we link to camel for decoding quoted printable email addresses */ #include +/* Template tags for address format localization */ +#define ADDRESS_REALNAME "%n" +#define ADDRESS_REALNAME_UPPER "%N" +#define ADDRESS_COMPANY "%m" +#define ADDRESS_COMPANY_UPPER "%M" +#define ADDRESS_POBOX "%p" +#define ADDRESS_STREET "%s" +#define ADDRESS_STREET_UPPER "%S" +#define ADDRESS_ZIPCODE "%z" +#define ADDRESS_LOCATION "%l" +#define ADDRESS_LOCATION_UPPER "%L" +#define ADDRESS_REGION "%r" +#define ADDRESS_REGION_UPPER "%R" +#define ADDRESS_CONDCOMMA "%," /* Conditional comma is removed when a surrounding tag is evaluated to zero */ +#define ADDRESS_CONDWHITE "%w" /* Conditional whitespace is removed when a surrounding tag is evaluated to zero */ +#define ADDRESS_COND_PURGEEMPTY "%0" /* Purge empty has following syntax: %0(...) and is removed when no tag within () is evaluated non-zero */ + +/* Fallback formats */ +#define ADDRESS_DEFAULT_FORMAT "%0(%n\n)%0(%m\n)%0(%s\n)%0(PO BOX %p\n)%0(%l%w%r)%,%z" +#define ADDRESS_DEFAULT_COUNTRY_POSITION "below" + +enum { + LOCALES_LANGUAGE = 0, + LOCALES_COUNTRY = 1 +}; + +typedef enum { + ADDRESS_FORMAT_HOME = 0, + ADDRESS_FORMAT_BUSINESS = 1 +} AddressFormat; + + + void eab_error_dialog (EAlertSink *alert_sink, const gchar *msg, const GError *error) { @@ -547,3 +583,484 @@ eab_parse_qp_email_to_html (const gchar *string) return value; } + + +/* + * eab_format_address helper function + * + * Splits locales from en_US to array "en","us",NULL. When + * locales don't have the second part (for example "C"), + * the output array is "c",NULL + */ +static gchar ** +get_locales (void) +{ + gchar *locale, *l_locale; + gchar *dot; + gchar **split; + + locale = g_strdup (setlocale (LC_ADDRESS, NULL)); + if (!locale) + return NULL; + + l_locale = g_utf8_strdown (locale, -1); + g_free (locale); + + dot = strchr (l_locale, '.'); + if (dot != NULL) { + gchar *p = l_locale; + l_locale = g_strndup (l_locale, dot - l_locale); + g_free (p); + } + + split = g_strsplit (l_locale, "_", 2); + + g_free (l_locale); + return split; + +} + +static gchar * +get_locales_str (void) +{ + gchar *ret; + gchar **loc = get_locales (); + + if (!loc) + return g_strdup ("C"); + + if (!loc[0] || + (loc[0] && !loc[1])) /* We don't care about language now, we need a country at first! */ + ret = g_strdup ("C"); + else if (loc[0] && loc[1]) { + if (*loc[0]) + ret = g_strconcat (loc[LOCALES_COUNTRY], "_", loc[LOCALES_LANGUAGE], NULL); + else + ret = g_strdup (loc[LOCALES_COUNTRY]); + } + + g_strfreev (loc); + return ret; +} + + +/* + * Reads countrytransl.map file, which contains map of localized + * country names and their ISO codes and tries to find matching record + * for given country. The search is case insensitive. + * When no record is found (country is probably in untranslated language), returns + * code of local computer country (from locales) + */ +static gchar * +country_to_ISO (const gchar *country) +{ + FILE *file = fopen (EVOLUTION_RULEDIR "/countrytransl.map", "r"); + gchar buffer[100]; + gint length = 100; + gchar **pair; + gchar *res; + gchar *l_country = g_utf8_strdown (country, -1); + + if (!file) { + gchar **loc; + g_warning ("%s: Failed to open countrytransl.map. Check your installation.", G_STRFUNC); + loc = get_locales (); + res = g_strdup (loc ? loc[LOCALES_COUNTRY] : NULL); + g_free (l_country); + g_strfreev (loc); + return res; + } + + while (fgets (buffer, length, file) != NULL) { + gchar *low; + pair = g_strsplit (buffer, "\t", 2); + + if (pair[0]) { + low = g_utf8_strdown (pair[0], -1); + if (g_utf8_collate (low, l_country) == 0) { + gchar *ret = g_strdup (pair[1]); + gchar *pos; + /* Remove trailing newline character */ + if ((pos = g_strrstr (ret, "\n")) != NULL) + pos[0] = '\0'; + fclose (file); + g_strfreev (pair); + g_free (low); + g_free (l_country); + return ret; + } + } + + g_strfreev (pair); + g_free (low); + } + + /* If we get here, then no match was found in the map file and we + fallback to local system locales */ + fclose (file); + + pair = get_locales (); + res = g_strdup (pair ? pair[LOCALES_COUNTRY] : NULL); + g_strfreev (pair); + g_free (l_country); + return res; +} + + +/* + * Tries to find given key in "country_LANGUAGE" group. When fails to find + * such group, then fallbacks to "country" group. When such group does not + * exist either, NULL is returned + */ +static gchar * +get_key_file_locale_string (GKeyFile *key_file, + const gchar *key, + const gchar *locale) +{ + gchar *result; + gchar *group; + + g_return_val_if_fail (locale, NULL); + + /* Default locale is in "country_lang", but such group may not exist. In such case use group "country" */ + if (g_key_file_has_group (key_file, locale)) + group = g_strdup (locale); + else { + gchar **locales = g_strsplit (locale, "_", 0); + group = g_strdup (locales[LOCALES_COUNTRY]); + g_strfreev (locales); + } + + /* When group or key does not exist, returns NULL and fallback string will be used */ + result = g_key_file_get_string (key_file, group, key, NULL); + g_free (group); + return result; +} + +static void +get_address_format (AddressFormat address_format, + const gchar *locale, + gchar **format, + gchar **country_position) +{ + GKeyFile *key_file; + GError *error; + gchar *loc; + const gchar *addr_key, *country_key; + + if (address_format == ADDRESS_FORMAT_HOME) { + addr_key = "AddressFormat"; + country_key = "CountryPosition"; + } else if (address_format == ADDRESS_FORMAT_BUSINESS) { + addr_key = "BusinessAddressFormat"; + country_key = "BusinessCountryPosition"; + } else { + return; + } + + if (locale == NULL) + loc = get_locales_str (); + else + loc = g_strdup (locale); + + error = NULL; + key_file = g_key_file_new (); + g_key_file_load_from_file (key_file, EVOLUTION_RULEDIR "/address_formats.dat", 0, &error); + if (error) { + g_warning ("%s: Failed to load address_formats.dat file: %s", G_STRFUNC, error->message); + *format = g_strdup (ADDRESS_DEFAULT_FORMAT); + *country_position = g_strdup (ADDRESS_DEFAULT_COUNTRY_POSITION); + g_key_file_free (key_file); + g_free (loc); + g_error_free (error); + return; + } + + if (format) { + if (*format) + g_free (*format); + *format = get_key_file_locale_string (key_file, addr_key, loc); + if (!*format && address_format == ADDRESS_FORMAT_HOME) { + *format = g_strdup (ADDRESS_DEFAULT_FORMAT); + } else if (!*format && address_format == ADDRESS_FORMAT_BUSINESS) + get_address_format (ADDRESS_FORMAT_HOME, loc, format, NULL); + } + + if (country_position) { + if (*country_position) + g_free (*country_position); + *country_position = get_key_file_locale_string (key_file, country_key, loc); + if (!*country_position && address_format == ADDRESS_FORMAT_HOME) + *country_position = g_strdup (ADDRESS_DEFAULT_COUNTRY_POSITION); + else if (!*country_position && address_format == ADDRESS_FORMAT_BUSINESS) + get_address_format (ADDRESS_FORMAT_HOME, loc, NULL, country_position); + } + + g_free (loc); + g_key_file_free (key_file); +} + +static const gchar * +find_balanced_bracket (const gchar *str) +{ + gint balance_counter = 0; + gint i = 0; + + do { + if (str[i] == '(') + balance_counter++; + + if (str[i] == ')') + balance_counter--; + + i++; + + } while ((balance_counter > 0) && (str[i])); + + if (balance_counter > 0) + return str; + + return str + i; +} + +static GString * +string_append_upper (GString *str, const gchar *c) +{ + gchar *up_c; + + g_return_val_if_fail (str, NULL); + + if (!c || !*c) + return str; + + up_c = g_utf8_strup (c, -1); + str = g_string_append (str, up_c); + g_free (up_c); + + return str; +} + +static gboolean +parse_address_template_section (const gchar *format, + const gchar *realname, + const gchar *org_name, + EContactAddress *address, + gchar **result) + +{ + const gchar *pos, *old_pos; + gboolean ret = FALSE; /* Indicates, wheter at least something was replaced */ + + GString *res = g_string_new (""); + + pos = format; + old_pos = pos; + while ((pos = strchr (pos, '%')) != NULL) { + + if (old_pos != pos) + g_string_append_len (res, old_pos, pos - old_pos); + + switch (pos[1]) { + case 'n': + g_string_append (res, realname); + ret = TRUE; + pos += 2; /* Jump behind the modifier, see what's next */ + break; + case 'N': + if (realname && *realname) { + string_append_upper (res, realname); + ret = TRUE; + } + pos += 2; + break; + case 'm': + if (org_name && *org_name) { + g_string_append (res, org_name); + ret = TRUE; + } + pos += 2; + break; + case 'M': + if (org_name && *org_name) { + string_append_upper (res, org_name); + ret = TRUE; + } + pos += 2; + break; + case 'p': + if (address->po && *(address->po)) { + g_string_append (res, address->po); + ret = TRUE; + } + pos += 2; + break; + case 's': + if (address->street && *(address->street)) { + g_string_append (res, address->street); + ret = TRUE; + } + pos += 2; + break; + case 'S': + if (address->street && *(address->street)) { + string_append_upper (res, address->street); + ret = TRUE; + } + pos += 2; + break; + case 'z': + if (address->code && *(address->code)) { + g_string_append (res, address->code); + ret = TRUE; + } + pos += 2; + break; + case 'l': + if (address->locality && *(address->locality)) { + g_string_append (res, address->locality); + ret = TRUE; + } + pos += 2; + break; + case 'L': + if (address->locality && *(address->locality)) { + string_append_upper (res, address->locality); + ret = TRUE; + } + pos += 2; + break; + case 'r': + if (address->region && *(address->region)) { + g_string_append (res, address->region); + ret = TRUE; + } + pos += 2; + break; + case 'R': + if (address->region && *(address->region)) { + string_append_upper (res, address->region); + ret = TRUE; + } + pos += 2; + break; + case ',': + if (ret && (pos >= format + 2) && /* If there's something before %, */ + (g_ascii_strcasecmp (pos - 2, "\n") != 0) && /* And if it is not a newline */ + (g_ascii_strcasecmp (pos - 2, "%w") != 0)) /* Nor whitespace */ + g_string_append (res, ", "); + pos += 2; + break; + case 'w': + if (ret && (pos >= format + 2) && + (g_ascii_strcasecmp (pos - 2, "\n") != 0) && + (g_ascii_strcasecmp (pos - 1, " ") != 0)) + g_string_append (res, " "); + pos += 2; + break; + case '0': { + const gchar *bpos1, *bpos2; + gchar *inner; + gchar *ires; + gboolean replaced; + + bpos1 = pos + 2; + bpos2 = find_balanced_bracket (bpos1); + + inner = g_strndup (bpos1 + 1, bpos2 - bpos1 - 2); /* Get inner content of the %0(...) */ + replaced = parse_address_template_section (inner, realname, org_name, address, &ires); + if (replaced) + g_string_append (res, ires); + + g_free (ires); + g_free (inner); + + ret = replaced; + pos += (bpos2 - bpos1 + 2); + } break; + } + + old_pos = pos; + } + g_string_append (res, old_pos); + + *result = g_strdup (res->str); + + g_string_free (res, TRUE); + + return ret; +} + +gchar * +eab_format_address (EContact *contact, + EContactField address_type) +{ + gchar *result; + gchar *format = NULL; + gchar *country_position = NULL; + gchar *locale; + EContactAddress *addr = e_contact_get (contact, address_type); + + if (!addr) + return NULL; + + if (!addr->po && !addr->ext && !addr->street && !addr->locality && !addr->region && + !addr->code && !addr->country) { + e_contact_address_free (addr); + return NULL; + } + + if (addr->country) { + gchar *cntry = country_to_ISO (addr->country); + gchar **loc = get_locales (); + locale = g_strconcat (loc ? loc[LOCALES_LANGUAGE] : "C", "_", cntry, NULL); + g_strfreev (loc); + g_free (cntry); + } else + locale = get_locales_str (); + + if (address_type == E_CONTACT_ADDRESS_HOME) + get_address_format (ADDRESS_FORMAT_HOME, locale, &format, &country_position); + else if (address_type == E_CONTACT_ADDRESS_WORK) + get_address_format (ADDRESS_FORMAT_BUSINESS, locale, &format, &country_position); + else { + e_contact_address_free (addr); + g_free (locale); + return NULL; + } + + /* Expand all the variables in format. + Don't display organization in home address */ + parse_address_template_section (format, + e_contact_get_const (contact, E_CONTACT_FULL_NAME), + (address_type == E_CONTACT_ADDRESS_WORK) ? e_contact_get_const (contact, E_CONTACT_ORG): NULL, + addr, + &result); + + /* Add the country line. In some countries, the address can be located above the + rest of the address */ + if (addr->country && country_position) { + gchar *country_upper = g_utf8_strup (addr->country, -1); + gchar *p = result; + if (g_strcmp0 (country_position, "BELOW") == 0) { + result = g_strconcat (p, "\n\n", country_upper, NULL); + g_free (p); + } else if (g_strcmp0 (country_position, "below") == 0) { + result = g_strconcat (p, "\n\n", addr->country, NULL); + g_free (p); + } else if (g_strcmp0 (country_position, "ABOVE") == 0) { + result = g_strconcat (country_upper, "\n\n", p, NULL); + g_free (p); + } else if (g_strcmp0 (country_position, "above") == 0) { + result = g_strconcat (addr->country, "\n\n", p, NULL); + g_free (p); + } + g_free (country_upper); + } + + e_contact_address_free (addr); + g_free (locale); + g_free (format); + g_free (country_position); + + return result; +} diff --git a/addressbook/gui/widgets/eab-gui-util.h b/addressbook/gui/widgets/eab-gui-util.h index 45c7d40b79..a118ecf29f 100644 --- a/addressbook/gui/widgets/eab-gui-util.h +++ b/addressbook/gui/widgets/eab-gui-util.h @@ -58,6 +58,10 @@ gboolean eab_parse_qp_email (const gchar *string, gchar **email); gchar * eab_parse_qp_email_to_html (const gchar *string); + +gchar * eab_format_address (EContact *contact, + EContactField address_type); + G_END_DECLS #endif /* __E_ADDRESSBOOK_UTIL_H__ */ -- cgit v1.2.3 From b2b6ba119f5e782bc55b4b39290a23edf19b9a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Fri, 3 Jun 2011 11:51:38 +0200 Subject: Bug #332907 - Contact editor duplication alert misleading --- addressbook/gui/contact-editor/contact-editor.ui | 7 +++++++ addressbook/gui/contact-editor/e-contact-editor.c | 21 ++++++++++++++++++++- addressbook/gui/contact-editor/e-contact-editor.h | 3 +++ .../eab-contact-commit-duplicate-detected.ui | 4 ++-- 4 files changed, 32 insertions(+), 3 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/contact-editor.ui b/addressbook/gui/contact-editor/contact-editor.ui index b30e716a2f..2f133d4ccc 100644 --- a/addressbook/gui/contact-editor/contact-editor.ui +++ b/addressbook/gui/contact-editor/contact-editor.ui @@ -145,6 +145,7 @@ True True + fullname @@ -221,6 +222,7 @@ True True + nickname 3 @@ -260,6 +262,7 @@ True 0 model1 + file-as 1 @@ -315,6 +318,7 @@ True True + email-3 1 @@ -328,6 +332,7 @@ True True + email-1 1 @@ -339,6 +344,7 @@ True True + email-2 3 @@ -350,6 +356,7 @@ True True + email-4 3 diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index f545594039..1df7b62082 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -641,6 +641,8 @@ name_entry_changed (GtkWidget *widget, EContactEditor *editor) editor->name = e_contact_name_from_string (string); file_as_set_style (editor, style); + editor->check_merge = TRUE; + sensitize_ok (editor); if (string && !*string) gtk_window_set_title (GTK_WINDOW (editor->app), _("Contact Editor")); @@ -742,6 +744,19 @@ object_changed (GObject *object, EContactEditor *editor) return; } + if (!editor->check_merge && GTK_IS_WIDGET (object)) { + const gchar *widget_name; + + widget_name = gtk_widget_get_name (GTK_WIDGET (object)); + + if (widget_name && + ((g_str_equal (widget_name, "fullname")) || + (g_str_equal (widget_name, "nickname")) || + (g_str_equal (widget_name, "file-as")) || + (g_str_has_prefix (widget_name, "email-")))) + editor->check_merge = TRUE; + } + if (!editor->changed) { editor->changed = TRUE; sensitize_ok (editor); @@ -3441,10 +3456,13 @@ real_save_contact (EContactEditor *ce, gboolean should_close) eab_merging_book_add_contact ( ce->target_book, ce->contact, (EBookIdAsyncCallback) contact_added_cb, ecs); - else + else if (ce->check_merge) eab_merging_book_commit_contact ( ce->target_book, ce->contact, (EBookAsyncCallback) contact_modified_cb, ecs); + else + e_book_commit_contact_async (ce->target_book, ce->contact, + (EBookAsyncCallback) contact_modified_cb, ecs); } } @@ -3814,6 +3832,7 @@ e_contact_editor_init (EContactEditor *e_contact_editor) e_contact_editor->contact = NULL; e_contact_editor->changed = FALSE; + e_contact_editor->check_merge = FALSE; e_contact_editor->image_set = FALSE; e_contact_editor->image_changed = FALSE; e_contact_editor->in_async_call = FALSE; diff --git a/addressbook/gui/contact-editor/e-contact-editor.h b/addressbook/gui/contact-editor/e-contact-editor.h index 81b39d1e85..2f00a12f67 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.h +++ b/addressbook/gui/contact-editor/e-contact-editor.h @@ -75,6 +75,9 @@ struct _EContactEditor /* Whether the contact has been changed since bringing up the contact editor */ guint changed : 1; + /* Wheter should check for contact to merge. Only when name or email are changed */ + guint check_merge : 1; + /* Whether the contact editor will accept modifications, save */ guint target_editable : 1; diff --git a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui index aefd3de172..04ed728a56 100644 --- a/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui +++ b/addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui @@ -34,7 +34,7 @@ True True True - gtk-add + gtk-save True GTK_RELIEF_NORMAL @@ -70,7 +70,7 @@ True - The name or email of this contact already exists in this folder. Would you like to add it anyway? + The name or email of this contact already exists in this folder. Would you like to save the changes anyway? False False GTK_JUSTIFY_LEFT -- cgit v1.2.3 From aac5be7ab9e0d315c7889bfeeb6b72094306e08d Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 3 Jun 2011 16:24:09 +0200 Subject: Fix compiler warnings --- addressbook/gui/contact-editor/e-contact-quick-add.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 44f6354162..c7a42233c2 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -322,11 +322,11 @@ clicked_cb (GtkWidget *w, gint button, gpointer closure) e_contact_set ( qa->contact, E_CONTACT_FULL_NAME, - (gpointer) (name != NULL) ? name : ""); + (name != NULL) ? name : ""); e_contact_set ( qa->contact, E_CONTACT_EMAIL_1, - (gpointer) (email != NULL) ? email : ""); + (email != NULL) ? email : ""); g_free (name); g_free (email); -- cgit v1.2.3 From f014ab82c81078d60cb1df8c986305c2cc9948c2 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 4 Jun 2011 15:53:10 -0500 Subject: Coding style and whitespace cleanups. --- .../gui/contact-editor/e-contact-editor-fullname.c | 38 ++++++---- addressbook/gui/contact-editor/e-contact-editor.c | 41 ++++++++--- .../contact-list-editor/e-contact-list-editor.c | 85 ++++++++++++++++------ addressbook/gui/widgets/e-addressbook-model.c | 15 ++-- addressbook/gui/widgets/e-minicard-view-widget.c | 49 +++++++------ addressbook/gui/widgets/ea-addressbook.c | 3 +- 6 files changed, 155 insertions(+), 76 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index 21eddb14d2..c2dc45304b 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -71,7 +71,9 @@ e_contact_editor_fullname_set_property (GObject *object, } break; case PROP_EDITABLE: { + gboolean editable; gint i; + const gchar *widget_names[] = { "comboentry-title", "comboentry-suffix", @@ -85,22 +87,32 @@ e_contact_editor_fullname_set_property (GObject *object, "label-last", NULL }; - e_contact_editor_fullname->editable = g_value_get_boolean (value) ? TRUE : FALSE; + + editable = g_value_get_boolean (value); + e_contact_editor_fullname->editable = editable; + for (i = 0; widget_names[i] != NULL; i++) { - GtkWidget *w = e_builder_get_widget ( + GtkWidget *widget; + + widget = e_builder_get_widget ( e_contact_editor_fullname->builder, widget_names[i]); - if (GTK_IS_ENTRY (w)) { - gtk_editable_set_editable (GTK_EDITABLE (w), - e_contact_editor_fullname->editable); - } - else if (GTK_IS_COMBO_BOX (w)) { - gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (w))), - e_contact_editor_fullname->editable); - gtk_widget_set_sensitive (w, e_contact_editor_fullname->editable); - } - else if (GTK_IS_LABEL (w)) { - gtk_widget_set_sensitive (w, e_contact_editor_fullname->editable); + + if (GTK_IS_ENTRY (widget)) { + gtk_editable_set_editable ( + GTK_EDITABLE (widget), editable); + + } else if (GTK_IS_COMBO_BOX (widget)) { + GtkWidget *child; + + child = gtk_bin_get_child (GTK_BIN (widget)); + + gtk_editable_set_editable ( + GTK_EDITABLE (child), editable); + gtk_widget_set_sensitive (widget, editable); + + } else if (GTK_IS_LABEL (widget)) { + gtk_widget_set_sensitive (widget, editable); } } break; diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 1df7b62082..b636190777 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -1787,7 +1787,9 @@ fill_in_im (EContactEditor *editor) gint slot; im_name = e_vcard_attribute_get_value (attr); - slot = alloc_ui_slot (editor, "entry-im-name", get_ui_slot (attr), IM_SLOTS); + slot = alloc_ui_slot ( + editor, "entry-im-name", + get_ui_slot (attr), IM_SLOTS); if (slot < 1) break; @@ -1870,7 +1872,8 @@ extract_im (EContactEditor *editor) e_vcard_attribute_add_value (attr, name); set_ui_slot (attr, i); - service_attr_list[service] = g_list_append (service_attr_list[service], attr); + service_attr_list[service] = g_list_append ( + service_attr_list[service], attr); } g_free (name); @@ -2795,7 +2798,8 @@ init_simple (EContactEditor *editor) gint i; for (i = 0; i < G_N_ELEMENTS (simple_field_map); i++) { - widget = e_builder_get_widget (editor->builder, simple_field_map[i].widget_name); + widget = e_builder_get_widget ( + editor->builder, simple_field_map[i].widget_name); if (!widget) continue; @@ -2829,7 +2833,8 @@ fill_in_simple (EContactEditor *editor) !simple_field_map[i].process_data) continue; - widget = e_builder_get_widget (editor->builder, simple_field_map[i].widget_name); + widget = e_builder_get_widget ( + editor->builder, simple_field_map[i].widget_name); if (!widget) continue; @@ -2878,7 +2883,8 @@ extract_simple (EContactEditor *editor) !simple_field_map[i].process_data) continue; - widget = e_builder_get_widget (editor->builder, simple_field_map[i].widget_name); + widget = e_builder_get_widget ( + editor->builder, simple_field_map[i].widget_name); if (!widget) continue; @@ -2899,7 +2905,8 @@ sensitize_simple (EContactEditor *editor) GtkWidget *widget; gboolean enabled = TRUE; - widget = e_builder_get_widget (editor->builder, simple_field_map[i].widget_name); + widget = e_builder_get_widget ( + editor->builder, simple_field_map[i].widget_name); if (!widget) continue; @@ -3121,15 +3128,23 @@ static void categories_response (GtkDialog *dialog, gint response, EContactEditor *editor) { const gchar *categories; - GtkWidget *entry = e_builder_get_widget(editor->builder, "entry-categories"); + GtkWidget *entry; + + entry = e_builder_get_widget (editor->builder, "entry-categories"); if (response == GTK_RESPONSE_OK) { - categories = e_categories_dialog_get_categories (E_CATEGORIES_DIALOG (dialog)); - if (entry && GTK_IS_ENTRY (entry)) - gtk_entry_set_text (GTK_ENTRY (entry), categories); + categories = e_categories_dialog_get_categories ( + E_CATEGORIES_DIALOG (dialog)); + if (GTK_IS_ENTRY (entry)) + gtk_entry_set_text ( + GTK_ENTRY (entry), categories); else - e_contact_set (editor->contact, E_CONTACT_CATEGORIES, (gchar *) categories); + e_contact_set ( + editor->contact, + E_CONTACT_CATEGORIES, + (gchar *) categories); } + gtk_widget_destroy (GTK_WIDGET (dialog)); editor->categories_dialog = NULL; } @@ -4150,7 +4165,9 @@ e_contact_editor_set_property (GObject *object, break; if (editor->target_book) { - g_signal_handler_disconnect (editor->target_book, editor->target_editable_id); + g_signal_handler_disconnect ( + editor->target_book, + editor->target_editable_id); g_object_unref (editor->target_book); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 31709bcf06..3fae1a2013 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -386,7 +386,9 @@ contact_list_editor_selection_changed_cb (GtkTreeSelection *selection, /* Item before selected item exists => enable Top/Up buttons */ selected = gtk_tree_selection_get_selected_rows (selection, &model); - first_item = gtk_tree_path_copy (selected->data); /* Don't update path in the list! */ + + /* Don't update path in the list! */ + first_item = gtk_tree_path_copy (selected->data); if (gtk_tree_path_prev (first_item)) { gtk_widget_set_sensitive (WIDGET (TOP_BUTTON), TRUE); gtk_widget_set_sensitive (WIDGET (UP_BUTTON), TRUE); @@ -934,21 +936,33 @@ contact_list_editor_top_button_clicked_cb (GtkButton *button); void contact_list_editor_top_button_clicked_cb (GtkButton *button) { - EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); - GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); - GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + EContactListEditor *editor; + GtkTreeView *tree_view; + GtkTreeModel *model; + GtkTreeSelection *selection; GtkTreeIter iter; GtkTreePath *path; GList *references = NULL; + GList *l, *selected; + + editor = contact_list_editor_extract (GTK_WIDGET (button)); + + tree_view = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); + model = gtk_tree_view_get_model (tree_view); + selection = gtk_tree_view_get_selection (tree_view); + + selected = gtk_tree_selection_get_selected_rows (selection, &model); - GList *l, *selected = gtk_tree_selection_get_selected_rows (selection, &model); for (l = selected; l; l = l->next) - references = g_list_prepend (references, gtk_tree_row_reference_new (model, l->data)); + references = g_list_prepend ( + references, + gtk_tree_row_reference_new (model, l->data)); for (l = references; l; l = l->next) { path = gtk_tree_row_reference_get_path (l->data); gtk_tree_model_get_iter (model, &iter, path); - gtk_list_store_move_after (GTK_LIST_STORE (model), &iter, NULL); + gtk_list_store_move_after ( + GTK_LIST_STORE (model), &iter, NULL); gtk_tree_path_free (path); } @@ -966,13 +980,21 @@ contact_list_editor_up_button_clicked_cb (GtkButton *button); void contact_list_editor_up_button_clicked_cb (GtkButton *button) { - EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); - GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); - GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + EContactListEditor *editor; + GtkTreeView *tree_view; + GtkTreeModel *model; + GtkTreeSelection *selection; GtkTreeIter iter, iter2; GtkTreePath *path; + GList *selected; - GList *selected = gtk_tree_selection_get_selected_rows (selection, &model); + editor = contact_list_editor_extract (GTK_WIDGET (button)); + + tree_view = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); + model = gtk_tree_view_get_model (tree_view); + selection = gtk_tree_view_get_selection (tree_view); + + selected = gtk_tree_selection_get_selected_rows (selection, &model); /* Get iter of item above the first selected item */ path = gtk_tree_path_copy (selected->data); @@ -997,12 +1019,20 @@ contact_list_editor_down_button_clicked_cb (GtkButton *button); void contact_list_editor_down_button_clicked_cb (GtkButton *button) { - EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); - GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); - GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + EContactListEditor *editor; + GtkTreeView *tree_view; + GtkTreeModel *model; + GtkTreeSelection *selection; GtkTreeIter iter, iter2; + GList *selected; - GList *selected = gtk_tree_selection_get_selected_rows (selection, &model); + editor = contact_list_editor_extract (GTK_WIDGET (button)); + + tree_view = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); + model = gtk_tree_view_get_model (tree_view); + selection = gtk_tree_view_get_selection (tree_view); + + selected = gtk_tree_selection_get_selected_rows (selection, &model); /* Iter of the first selected item */ gtk_tree_model_get_iter (model, &iter, selected->data); @@ -1025,22 +1055,34 @@ contact_list_editor_bottom_button_clicked_cb (GtkButton *button); void contact_list_editor_bottom_button_clicked_cb (GtkButton *button) { - EContactListEditor *editor = contact_list_editor_extract (GTK_WIDGET (button)); - GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); - GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); + EContactListEditor *editor; + GtkTreeView *tree_view; + GtkTreeModel *model; + GtkTreeSelection *selection; GtkTreeIter iter; GtkTreePath *path; GList *references = NULL; - GList *l, *selected = gtk_tree_selection_get_selected_rows (selection, &model); + GList *l, *selected; + + editor = contact_list_editor_extract (GTK_WIDGET (button)); + + tree_view = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); + model = gtk_tree_view_get_model (tree_view); + selection = gtk_tree_view_get_selection (tree_view); + + selected = gtk_tree_selection_get_selected_rows (selection, &model); for (l = selected; l; l = l->next) - references = g_list_prepend (references, gtk_tree_row_reference_new (model, l->data)); + references = g_list_prepend ( + references, + gtk_tree_row_reference_new (model, l->data)); references = g_list_reverse (references); for (l = references; l; l = l->next) { path = gtk_tree_row_reference_get_path (l->data); gtk_tree_model_get_iter (model, &iter, path); - gtk_list_store_move_before (GTK_LIST_STORE (model), &iter, NULL); + gtk_list_store_move_before ( + GTK_LIST_STORE (model), &iter, NULL); gtk_tree_path_free (path); } @@ -1052,7 +1094,6 @@ contact_list_editor_bottom_button_clicked_cb (GtkButton *button) contact_list_editor_selection_changed_cb (selection, editor); } - /******************** GtkBuilder Custom Widgets Functions ********************/ static gpointer diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index c2c21bdd78..30720513d0 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -395,19 +395,24 @@ addressbook_model_idle_cb (EAddressbookModel *model) remove_book_view (model); if (model->priv->first_get_view) { + gboolean do_initial_query; + model->priv->first_get_view = FALSE; - if (e_book_check_static_capability (model->priv->book, "do-initial-query")) { + do_initial_query = e_book_check_static_capability ( + model->priv->book, "do-initial-query"); + + if (do_initial_query) { e_book_get_book_view_async ( model->priv->book, model->priv->query, NULL, limit, book_view_loaded, model); } else { free_data (model); - g_signal_emit (model, - signals[MODEL_CHANGED], 0); - g_signal_emit (model, - signals[STOP_STATE_CHANGED], 0); + g_signal_emit ( + model, signals[MODEL_CHANGED], 0); + g_signal_emit ( + model, signals[STOP_STATE_CHANGED], 0); } } else e_book_get_book_view_async ( diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index 1508e0690f..4421b1a739 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -399,13 +399,14 @@ e_minicard_view_widget_realize (GtkWidget *widget) EMinicardViewWidget *view = E_MINICARD_VIEW_WIDGET (widget); GtkStyle *style = gtk_widget_get_style (widget); - view->background = gnome_canvas_item_new (gnome_canvas_root ( GNOME_CANVAS (view) ), - e_canvas_background_get_type (), - "fill_color_gdk", &style->base[GTK_STATE_NORMAL], - NULL ); + view->background = gnome_canvas_item_new ( + gnome_canvas_root (GNOME_CANVAS (view)), + e_canvas_background_get_type (), + "fill_color_gdk", &style->base[GTK_STATE_NORMAL], + NULL ); view->emv = gnome_canvas_item_new ( - gnome_canvas_root ( GNOME_CANVAS (view) ), + gnome_canvas_root (GNOME_CANVAS (view)), e_minicard_view_get_type (), "height", (double) 100, "minimum_width", (double) 100, @@ -413,24 +414,26 @@ e_minicard_view_widget_realize (GtkWidget *widget) "column_width", view->column_width, NULL ); - g_signal_connect (E_REFLOW (view->emv)->selection, - "selection_changed", - G_CALLBACK (selection_change), view); - g_signal_connect (E_REFLOW (view->emv)->selection, - "selection_row_changed", - G_CALLBACK (selection_row_change), view); - g_signal_connect (view->emv, - "column_width_changed", - G_CALLBACK (column_width_changed), view); - g_signal_connect (view->emv, - "create-contact", - G_CALLBACK (create_contact), view); - g_signal_connect (view->emv, - "create-contact-list", - G_CALLBACK (create_contact_list), view); - g_signal_connect (view->emv, - "right_click", - G_CALLBACK (right_click), view); + g_signal_connect ( + E_REFLOW (view->emv)->selection, + "selection_changed", + G_CALLBACK (selection_change), view); + g_signal_connect ( + E_REFLOW (view->emv)->selection, + "selection_row_changed", + G_CALLBACK (selection_row_change), view); + g_signal_connect ( + view->emv, "column_width_changed", + G_CALLBACK (column_width_changed), view); + g_signal_connect ( + view->emv, "create-contact", + G_CALLBACK (create_contact), view); + g_signal_connect ( + view->emv, "create-contact-list", + G_CALLBACK (create_contact_list), view); + g_signal_connect ( + view->emv, "right_click", + G_CALLBACK (right_click), view); if (GTK_WIDGET_CLASS (parent_class)->realize) GTK_WIDGET_CLASS (parent_class)->realize (widget); diff --git a/addressbook/gui/widgets/ea-addressbook.c b/addressbook/gui/widgets/ea-addressbook.c index 20bca97948..b67d876139 100644 --- a/addressbook/gui/widgets/ea-addressbook.c +++ b/addressbook/gui/widgets/ea-addressbook.c @@ -79,7 +79,8 @@ ea_addressbook_focus_watcher (GSignalInvocationHint *ihint, GnomeCanvasItem *item = GNOME_CANVAS_ITEM (object); ea_event = atk_gobject_accessible_for_object (object); if (event->type == GDK_FOCUS_CHANGE) { - if ((event->focus_change.in) && (E_IS_MINICARD (item->canvas->focused_item))) + if ((event->focus_change.in) && + (E_IS_MINICARD (item->canvas->focused_item))) atk_focus_tracker_notify (ea_event); } } -- cgit v1.2.3 From 89d7c38c8bd3aac0060e7e8e3913507444c00608 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 9 Jun 2011 15:00:03 -0400 Subject: Replace G_CONST_RETURN with 'const'. GLib is finally dropping this hack. --- addressbook/gui/widgets/ea-addressbook-view.c | 8 ++++---- addressbook/gui/widgets/ea-minicard-view.c | 16 ++++++++-------- addressbook/gui/widgets/ea-minicard.c | 16 ++++++++-------- 3 files changed, 20 insertions(+), 20 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/ea-addressbook-view.c b/addressbook/gui/widgets/ea-addressbook-view.c index 46a54a4154..2d432b6a76 100644 --- a/addressbook/gui/widgets/ea-addressbook-view.c +++ b/addressbook/gui/widgets/ea-addressbook-view.c @@ -27,8 +27,8 @@ #include #include "ea-addressbook-view.h" -static G_CONST_RETURN gchar * ea_ab_view_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar * ea_ab_view_get_description (AtkObject *accessible); +static const gchar * ea_ab_view_get_name (AtkObject *accessible); +static const gchar * ea_ab_view_get_description (AtkObject *accessible); static void ea_ab_view_class_init (EAddressbookViewClass *class); @@ -87,7 +87,7 @@ ea_ab_view_class_init (EAddressbookViewClass *class) atk_object_class->get_description = ea_ab_view_get_description; } -static G_CONST_RETURN gchar * +static const gchar * ea_ab_view_get_name (AtkObject *accessible) { g_return_val_if_fail (EA_IS_AB_VIEW (accessible), NULL); @@ -97,7 +97,7 @@ ea_ab_view_get_name (AtkObject *accessible) return _("evolution address book"); } -static G_CONST_RETURN gchar * +static const gchar * ea_ab_view_get_description (AtkObject *accessible) { if (accessible->description) diff --git a/addressbook/gui/widgets/ea-minicard-view.c b/addressbook/gui/widgets/ea-minicard-view.c index a6cd1f799c..6850813ca7 100644 --- a/addressbook/gui/widgets/ea-minicard-view.c +++ b/addressbook/gui/widgets/ea-minicard-view.c @@ -37,8 +37,8 @@ static const gchar * action_name[] = { N_("New Contact List") }; -static G_CONST_RETURN gchar * ea_minicard_view_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar * ea_minicard_view_get_description (AtkObject *accessible); +static const gchar * ea_minicard_view_get_name (AtkObject *accessible); +static const gchar * ea_minicard_view_get_description (AtkObject *accessible); static void ea_minicard_view_class_init (EaMinicardViewClass *klass); @@ -60,11 +60,11 @@ static gboolean selection_interface_is_child_selected (AtkSelection *selection, static void atk_action_interface_init (AtkActionIface *iface); static gboolean atk_action_interface_do_action (AtkAction *iface, gint i); static gint atk_action_interface_get_n_action (AtkAction *iface); -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_description (AtkAction *iface, gint i); -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_name (AtkAction *iface, gint i); @@ -142,7 +142,7 @@ ea_minicard_view_class_init (EaMinicardViewClass *klass) class->ref_child = ea_minicard_view_ref_child; } -static G_CONST_RETURN gchar * +static const gchar * ea_minicard_view_get_name (AtkObject *accessible) { EReflow *reflow; @@ -177,7 +177,7 @@ ea_minicard_view_get_name (AtkObject *accessible) return accessible->name; } -static G_CONST_RETURN gchar * +static const gchar * ea_minicard_view_get_description (AtkObject *accessible) { g_return_val_if_fail (EA_IS_MINICARD_VIEW (accessible), NULL); @@ -406,13 +406,13 @@ static gint atk_action_interface_get_n_action (AtkAction *iface) return G_N_ELEMENTS (action_name); } -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_description (AtkAction *iface, gint i) { return atk_action_interface_get_name (iface, i); } -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_name (AtkAction *iface, gint i) { if ( i >= G_N_ELEMENTS (action_name) || i < 0) diff --git a/addressbook/gui/widgets/ea-minicard.c b/addressbook/gui/widgets/ea-minicard.c index e218286411..2e8d4281ef 100644 --- a/addressbook/gui/widgets/ea-minicard.c +++ b/addressbook/gui/widgets/ea-minicard.c @@ -34,9 +34,9 @@ static const gchar * action_name[] = { N_("Open") }; -static G_CONST_RETURN gchar * +static const gchar * ea_minicard_get_name (AtkObject *accessible); -static G_CONST_RETURN gchar * +static const gchar * ea_minicard_get_description (AtkObject *accessible); static void ea_minicard_class_init (EaMinicardClass *klass); @@ -54,11 +54,11 @@ static gboolean atk_action_interface_do_action (AtkAction *iface, gint i); static gint atk_action_interface_get_n_action (AtkAction *iface); -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_description (AtkAction *iface, gint i); -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_name (AtkAction *iface, gint i); @@ -132,7 +132,7 @@ ea_minicard_class_init (EaMinicardClass *klass) * we access the main content of current minicard, including * header text, label(field, field name) */ -static G_CONST_RETURN gchar * +static const gchar * ea_minicard_get_name (AtkObject *accessible) { #define BUFFERSIZE 500 @@ -174,7 +174,7 @@ ea_minicard_get_name (AtkObject *accessible) return accessible->name; } -static G_CONST_RETURN gchar * +static const gchar * ea_minicard_get_description (AtkObject *accessible) { if (accessible->description) @@ -277,13 +277,13 @@ atk_action_interface_get_n_action (AtkAction *iface) return G_N_ELEMENTS (action_name); } -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_description (AtkAction *iface, gint i) { return atk_action_interface_get_name (iface, i); } -static G_CONST_RETURN gchar * +static const gchar * atk_action_interface_get_name (AtkAction *iface, gint i) { if ( i >= G_N_ELEMENTS (action_name) || i < 0) -- cgit v1.2.3 From c2e71bd88d6a75e93aaef8f01868a6c4e71a4833 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 13 Jun 2011 10:27:22 -0400 Subject: Coding style and whitespace cleanups. --- addressbook/gui/widgets/eab-contact-display.c | 22 +++++++++++----------- addressbook/gui/widgets/eab-gui-util.c | 7 +------ addressbook/gui/widgets/eab-gui-util.h | 1 - 3 files changed, 12 insertions(+), 18 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index 1369b480bf..c3d8fb7628 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -190,7 +190,7 @@ static GtkActionEntry internal_mailto_entries[] = { }; static void -render_address_link (GString *buffer, EContact *contact, int map_type) +render_address_link (GString *buffer, EContact *contact, gint map_type) { EContactAddress *adr; GString *link = g_string_new (""); @@ -645,14 +645,14 @@ render_note_block (GString *buffer, EContact *contact) } static void -render_address_map (GString *buffer, EContact *contact, int map_type) +render_address_map (GString *buffer, EContact *contact, gint map_type) { #ifdef WITH_CONTACT_MAPS if (map_type == E_CONTACT_ADDRESS_WORK) { g_string_append (buffer, ""); - } else { + } else { g_string_append (buffer, ""); - } + } #endif } @@ -1181,11 +1181,11 @@ handle_map_scroll_event (GtkWidget *widget, GdkEvent *event) static void contact_display_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, EABContactDisplay *display) { - EContact *contact = display->priv->contact; - const gchar *name = e_contact_get_const (contact, E_CONTACT_FILE_AS); - const gchar *contact_uid = e_contact_get_const (contact, E_CONTACT_UID); - gchar *full_name; - EContactAddress *address; + EContact *contact = display->priv->contact; + const gchar *name = e_contact_get_const (contact, E_CONTACT_FILE_AS); + const gchar *contact_uid = e_contact_get_const (contact, E_CONTACT_UID); + gchar *full_name; + EContactAddress *address; if (g_ascii_strcasecmp (eb->classid, "address-map-work") == 0) { address = e_contact_get (contact, E_CONTACT_ADDRESS_WORK); @@ -1196,7 +1196,7 @@ contact_display_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, EABContact } if (address) { - GtkWidget *map = e_contact_map_new (); + GtkWidget *map = e_contact_map_new (); gtk_container_add (GTK_CONTAINER (eb), map); gtk_widget_set_size_request (map, 250, 250); g_signal_connect (E_CONTACT_MAP (map), "contact-added", @@ -1344,7 +1344,7 @@ eab_contact_display_init (EABContactDisplay *display) #ifdef WITH_CONTACT_MAPS g_signal_connect (web_view, "object-requested", - G_CALLBACK (contact_display_object_requested), display); + G_CALLBACK (contact_display_object_requested), display); #endif action_group = gtk_action_group_new ("internal-mailto"); diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index d1fc8fd254..1ade6b143a 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -82,8 +82,6 @@ typedef enum { ADDRESS_FORMAT_BUSINESS = 1 } AddressFormat; - - void eab_error_dialog (EAlertSink *alert_sink, const gchar *msg, const GError *error) { @@ -584,7 +582,6 @@ eab_parse_qp_email_to_html (const gchar *string) return value; } - /* * eab_format_address helper function * @@ -643,7 +640,6 @@ get_locales_str (void) return ret; } - /* * Reads countrytransl.map file, which contains map of localized * country names and their ISO codes and tries to find matching record @@ -706,7 +702,6 @@ country_to_ISO (const gchar *country) return res; } - /* * Tries to find given key in "country_LANGUAGE" group. When fails to find * such group, then fallbacks to "country" group. When such group does not @@ -966,7 +961,7 @@ parse_address_template_section (const gchar *format, bpos1 = pos + 2; bpos2 = find_balanced_bracket (bpos1); - inner = g_strndup (bpos1 + 1, bpos2 - bpos1 - 2); /* Get inner content of the %0(...) */ + inner = g_strndup (bpos1 + 1, bpos2 - bpos1 - 2); /* Get inner content of the %0 (...) */ replaced = parse_address_template_section (inner, realname, org_name, address, &ires); if (replaced) g_string_append (res, ires); diff --git a/addressbook/gui/widgets/eab-gui-util.h b/addressbook/gui/widgets/eab-gui-util.h index a118ecf29f..b50df6de95 100644 --- a/addressbook/gui/widgets/eab-gui-util.h +++ b/addressbook/gui/widgets/eab-gui-util.h @@ -58,7 +58,6 @@ gboolean eab_parse_qp_email (const gchar *string, gchar **email); gchar * eab_parse_qp_email_to_html (const gchar *string); - gchar * eab_format_address (EContact *contact, EContactField address_type); -- cgit v1.2.3 From 38790d8478e906a5c59d0c4a5216f297f305bfeb Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 14 Jun 2011 08:54:20 +0200 Subject: Do not use deprecated EBook/ECal API --- addressbook/gui/contact-editor/e-contact-editor.c | 382 +++++++++++---------- addressbook/gui/contact-editor/e-contact-editor.h | 12 +- .../gui/contact-editor/e-contact-quick-add.c | 80 +++-- addressbook/gui/contact-editor/eab-editor.h | 1 - .../contact-list-editor/e-contact-list-editor.c | 141 ++++---- .../contact-list-editor/e-contact-list-editor.h | 10 +- addressbook/gui/merging/eab-contact-compare.c | 88 +++-- addressbook/gui/merging/eab-contact-compare.h | 4 +- addressbook/gui/merging/eab-contact-merging.c | 141 +++++--- addressbook/gui/merging/eab-contact-merging.h | 32 +- addressbook/gui/widgets/e-addressbook-model.c | 296 ++++++++-------- addressbook/gui/widgets/e-addressbook-model.h | 16 +- .../gui/widgets/e-addressbook-reflow-adapter.c | 21 +- addressbook/gui/widgets/e-addressbook-selector.c | 127 ++++--- .../gui/widgets/e-addressbook-table-adapter.c | 15 +- .../gui/widgets/e-addressbook-table-adapter.h | 2 - addressbook/gui/widgets/e-addressbook-view.c | 260 ++++++++------ addressbook/gui/widgets/e-addressbook-view.h | 6 +- addressbook/gui/widgets/e-minicard-view-widget.c | 38 +- addressbook/gui/widgets/e-minicard-view-widget.h | 4 +- addressbook/gui/widgets/e-minicard-view.c | 95 ++--- addressbook/gui/widgets/e-minicard-view.h | 8 +- addressbook/gui/widgets/e-minicard.c | 1 - addressbook/gui/widgets/ea-minicard-view.c | 10 +- addressbook/gui/widgets/eab-gui-util.c | 204 ++++++----- addressbook/gui/widgets/eab-gui-util.h | 11 +- 26 files changed, 1082 insertions(+), 923 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index b636190777..4088837f90 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -35,7 +35,7 @@ #include #include -#include +#include #include #include #include @@ -107,8 +107,8 @@ static EABEditorClass *parent_class = NULL; /* The arguments we take */ enum { PROP_0, - PROP_SOURCE_BOOK, - PROP_TARGET_BOOK, + PROP_SOURCE_CLIENT, + PROP_TARGET_CLIENT, PROP_CONTACT, PROP_IS_NEW_CONTACT, PROP_EDITABLE, @@ -213,7 +213,7 @@ e_contact_editor_contact_added (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error adding contact"), error); @@ -227,7 +227,7 @@ e_contact_editor_contact_modified (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error modifying contact"), error); @@ -241,7 +241,7 @@ e_contact_editor_contact_deleted (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error removing contact"), error); @@ -305,22 +305,22 @@ e_contact_editor_class_init (EContactEditorClass *klass) g_object_class_install_property ( object_class, - PROP_SOURCE_BOOK, + PROP_SOURCE_CLIENT, g_param_spec_object ( - "source_book", - "Source Book", + "source_client", + "Source EBookClient", NULL, - E_TYPE_BOOK, + E_TYPE_BOOK_CLIENT, G_PARAM_READWRITE)); g_object_class_install_property ( object_class, - PROP_TARGET_BOOK, + PROP_TARGET_CLIENT, g_param_spec_object ( - "target_book", - "Target Book", + "target_client", + "Target EBookClient", NULL, - E_TYPE_BOOK, + E_TYPE_BOOK_CLIENT, G_PARAM_READWRITE)); g_object_class_install_property ( @@ -346,21 +346,19 @@ e_contact_editor_class_init (EContactEditorClass *klass) g_object_class_install_property ( object_class, PROP_WRITABLE_FIELDS, - g_param_spec_object ( + g_param_spec_pointer ( "writable_fields", "Writable Fields", NULL, - E_TYPE_LIST, G_PARAM_READWRITE)); g_object_class_install_property ( object_class, PROP_REQUIRED_FIELDS, - g_param_spec_object ( + g_param_spec_pointer ( "required_fields", "Required Fields", NULL, - E_TYPE_LIST, G_PARAM_READWRITE)); g_object_class_install_property ( @@ -394,9 +392,8 @@ entry_activated (EContactEditor *editor) static gboolean is_field_supported (EContactEditor *editor, EContactField field_id) { - EList *fields; + GSList *fields, *iter; const gchar *field; - EIterator *iter; fields = editor->writable_fields; if (!fields) @@ -406,10 +403,8 @@ is_field_supported (EContactEditor *editor, EContactField field_id) if (!field) return FALSE; - for (iter = e_list_get_iterator (fields); - e_iterator_is_valid (iter); - e_iterator_next (iter)) { - const gchar *this_field = e_iterator_get (iter); + for (iter = fields; iter; iter = iter->next) { + const gchar *this_field = iter->data; if (!this_field) continue; @@ -692,7 +687,7 @@ fill_in_source_field (EContactEditor *editor) { GtkWidget *source_menu; - if (!editor->target_book) + if (!editor->target_client) return; source_menu = e_builder_get_widget ( @@ -700,7 +695,7 @@ fill_in_source_field (EContactEditor *editor) e_source_combo_box_set_active ( E_SOURCE_COMBO_BOX (source_menu), - e_book_get_source (editor->target_book)); + e_client_get_source (E_CLIENT (editor->target_client))); } static void @@ -2976,25 +2971,27 @@ init_all (EContactEditor *editor) } static void -contact_editor_book_loaded_cb (ESource *source, +contact_editor_book_loaded_cb (GObject *source_object, GAsyncResult *result, - EContactEditor *editor) + gpointer user_data) { - EBook *book; + ESource *source = E_SOURCE (source_object); + EContactEditor *editor = user_data; + EClient *client = NULL; GError *error = NULL; - book = e_load_book_source_finish (source, result, &error); + if (!e_client_utils_open_new_finish (source, result, &client, &error)) + client = NULL; - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { - g_warn_if_fail (book == NULL); + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) || + g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + g_warn_if_fail (client == NULL); g_error_free (error); - goto exit; - } else if (error != NULL) { GtkWidget *source_combo_box; GtkWindow *parent; - g_warn_if_fail (book == NULL); + g_warn_if_fail (client == NULL); parent = eab_editor_get_window (EAB_EDITOR (editor)); eab_load_error_dialog (GTK_WIDGET (parent), NULL, source, error); @@ -3005,17 +3002,18 @@ contact_editor_book_loaded_cb (ESource *source, E_SOURCE_COMBO_BOX (source_combo_box), source); g_error_free (error); - goto exit; - } + } else { + EBookClient *book_client; - g_return_if_fail (E_IS_BOOK (book)); + book_client = E_BOOK_CLIENT (client); + g_return_if_fail (book_client != NULL); - /* FIXME Write a private contact_editor_set_target_book(). */ - g_object_set (editor, "target_book", book, NULL); + /* FIXME Write a private contact_editor_set_target_client(). */ + g_object_set (editor, "target_client", book_client, NULL); - g_object_unref (book); + g_object_unref (book_client); + } -exit: g_object_unref (editor); } @@ -3034,20 +3032,19 @@ source_changed (ESourceComboBox *source_combo_box, EContactEditor *editor) editor->cancellable = NULL; } - if (e_source_equal (e_book_get_source (editor->target_book), source)) + if (e_source_equal (e_client_get_source (E_CLIENT (editor->target_client)), source)) return; - if (e_source_equal (e_book_get_source (editor->source_book), source)) { - g_object_set (editor, "target_book", editor->source_book, NULL); + if (e_source_equal (e_client_get_source (E_CLIENT (editor->source_client)), source)) { + g_object_set (editor, "target_client", editor->source_client, NULL); return; } editor->cancellable = g_cancellable_new (); - e_load_book_source_async ( - source, parent, editor->cancellable, - (GAsyncReadyCallback) contact_editor_book_loaded_cb, - g_object_ref (editor)); + e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, editor->cancellable, + e_client_utils_authenticate_handler, parent, + contact_editor_book_loaded_cb, g_object_ref (editor)); } static void @@ -3348,10 +3345,15 @@ typedef struct { } EditorCloseStruct; static void -contact_moved_cb (EBook *book, const GError *error, EditorCloseStruct *ecs) +contact_removed_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { + EBookClient *book_client = E_BOOK_CLIENT (source_object); + EditorCloseStruct *ecs = user_data; EContactEditor *ce = ecs->ce; gboolean should_close = ecs->should_close; + GError *error = NULL; + + e_book_client_remove_contact_finish (book_client, result, &error); gtk_widget_set_sensitive (ce->app, TRUE); ce->in_async_call = FALSE; @@ -3364,44 +3366,43 @@ contact_moved_cb (EBook *book, const GError *error, EditorCloseStruct *ecs) if (should_close) { eab_editor_close (EAB_EDITOR (ce)); - } - else { + } else { ce->changed = FALSE; - g_object_ref (ce->target_book); - g_object_unref (ce->source_book); - ce->source_book = ce->target_book; + g_object_ref (ce->target_client); + g_object_unref (ce->source_client); + ce->source_client = ce->target_client; sensitize_all (ce); } + if (error) + g_error_free (error); + g_object_unref (ce); g_free (ecs->new_id); g_free (ecs); } static void -contact_added_cb (EBook *book, - const GError *error, - const gchar *id, - EditorCloseStruct *ecs) +contact_added_cb (EBookClient *book_client, const GError *error, const gchar *id, gpointer closure) { + EditorCloseStruct *ecs = closure; EContactEditor *ce = ecs->ce; gboolean should_close = ecs->should_close; - if (ce->source_book != ce->target_book && e_book_is_writable (ce->source_book) && + if (ce->source_client != ce->target_client && !e_client_is_readonly (E_CLIENT (ce->source_client)) && !error && ce->is_new_contact == FALSE) { ecs->new_id = g_strdup (id); - e_book_remove_contact_async ( - ce->source_book, ce->contact, - (EBookAsyncCallback) contact_moved_cb, ecs); + e_book_client_remove_contact ( + ce->source_client, ce->contact, NULL, contact_removed_cb, ecs); return; } gtk_widget_set_sensitive (ce->app, TRUE); ce->in_async_call = FALSE; - e_contact_set (ce->contact, E_CONTACT_UID, (gchar *) id); + e_contact_set (ce->contact, E_CONTACT_UID, id); eab_editor_contact_added (EAB_EDITOR (ce), error, ce->contact); @@ -3410,8 +3411,7 @@ contact_added_cb (EBook *book, if (should_close) { eab_editor_close (EAB_EDITOR (ce)); - } - else { + } else { ce->changed = FALSE; sensitize_all (ce); } @@ -3422,8 +3422,9 @@ contact_added_cb (EBook *book, } static void -contact_modified_cb (EBook *book, const GError *error, EditorCloseStruct *ecs) +contact_modified_cb (EBookClient *book_client, const GError *error, gpointer closure) { + EditorCloseStruct *ecs = closure; EContactEditor *ce = ecs->ce; gboolean should_close = ecs->should_close; @@ -3446,6 +3447,20 @@ contact_modified_cb (EBook *book, const GError *error, EditorCloseStruct *ecs) g_free (ecs); } +static void +contact_modified_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +{ + EBookClient *book_client = E_BOOK_CLIENT (source_object); + GError *error = NULL; + + e_book_client_modify_contact_finish (book_client, result, &error); + + contact_modified_cb (book_client, error, user_data); + + if (error) + g_error_free (error); +} + /* Emits the signal to request saving a contact */ static void real_save_contact (EContactEditor *ce, gboolean should_close) @@ -3461,23 +3476,24 @@ real_save_contact (EContactEditor *ce, gboolean should_close) gtk_widget_set_sensitive (ce->app, FALSE); ce->in_async_call = TRUE; - if (ce->source_book != ce->target_book) { + if (ce->source_client != ce->target_client) { /* Two-step move; add to target, then remove from source */ eab_merging_book_add_contact ( - ce->target_book, ce->contact, - (EBookIdAsyncCallback) contact_added_cb, ecs); + ce->target_client, ce->contact, + contact_added_cb, ecs); } else { if (ce->is_new_contact) eab_merging_book_add_contact ( - ce->target_book, ce->contact, - (EBookIdAsyncCallback) contact_added_cb, ecs); + ce->target_client, ce->contact, + contact_added_cb, ecs); else if (ce->check_merge) - eab_merging_book_commit_contact ( - ce->target_book, ce->contact, - (EBookAsyncCallback) contact_modified_cb, ecs); + eab_merging_book_modify_contact ( + ce->target_client, ce->contact, + contact_modified_cb, ecs); else - e_book_commit_contact_async (ce->target_book, ce->contact, - (EBookAsyncCallback) contact_modified_cb, ecs); + e_book_client_modify_contact ( + ce->target_client, ce->contact, NULL, + contact_modified_ready_cb, ecs); } } @@ -3488,10 +3504,10 @@ save_contact (EContactEditor *ce, gboolean should_close) const gchar *name_entry_string, *file_as_entry_string, *company_name_string; GtkWidget *entry_fullname, *entry_file_as, *company_name; - if (!ce->target_book) + if (!ce->target_client) return; - if (ce->target_editable && !e_book_is_writable (ce->source_book)) { + if (ce->target_editable && e_client_is_readonly (E_CLIENT (ce->source_client))) { if (e_alert_run_dialog_for_args ( GTK_WINDOW (ce->app), "addressbook:prompt-move", @@ -3592,7 +3608,7 @@ e_contact_editor_is_valid (EABEditor *editor) EContactEditor *ce = E_CONTACT_EDITOR (editor); GtkWidget *widget; gboolean validation_error = FALSE; - EIterator *iter; + GSList *iter; GString *errmsg = g_string_new (_("The contact data is invalid:\n\n")); widget = e_builder_get_widget (ce->builder, "dateedit-birthday"); @@ -3610,11 +3626,8 @@ e_contact_editor_is_valid (EABEditor *editor) validation_error = TRUE; } - iter = e_list_get_iterator (ce->required_fields); - for (e_iterator_last (iter); - e_iterator_is_valid (iter); - e_iterator_prev (iter)) { - const gchar *field_name = e_iterator_get (iter); + for (iter = ce->required_fields; iter; iter = iter->next) { + const gchar *field_name = iter->data; EContactField field_id = e_contact_field_id (field_name); if (is_non_string_field (field_id)) { @@ -3967,11 +3980,11 @@ e_contact_editor_dispose (GObject *object) } if (e_contact_editor->writable_fields) { - g_object_unref (e_contact_editor->writable_fields); + e_client_util_free_string_slist (e_contact_editor->writable_fields); e_contact_editor->writable_fields = NULL; } if (e_contact_editor->required_fields) { - g_object_unref (e_contact_editor->required_fields); + e_client_util_free_string_slist (e_contact_editor->required_fields); e_contact_editor->required_fields = NULL; } if (e_contact_editor->contact) { @@ -3979,17 +3992,17 @@ e_contact_editor_dispose (GObject *object) e_contact_editor->contact = NULL; } - if (e_contact_editor->source_book) { - g_object_unref (e_contact_editor->source_book); - e_contact_editor->source_book = NULL; + if (e_contact_editor->source_client) { + g_object_unref (e_contact_editor->source_client); + e_contact_editor->source_client = NULL; } - if (e_contact_editor->target_book) { + if (e_contact_editor->target_client) { g_signal_handler_disconnect ( - e_contact_editor->target_book, + e_contact_editor->target_client, e_contact_editor->target_editable_id); - g_object_unref (e_contact_editor->target_book); - e_contact_editor->target_book = NULL; + g_object_unref (e_contact_editor->target_client); + e_contact_editor->target_client = NULL; } if (e_contact_editor->name) { @@ -4012,46 +4025,78 @@ e_contact_editor_dispose (GObject *object) } static void -supported_fields_cb (EBook *book, - const GError *error, - EList *fields, - EContactEditor *ce) +supported_fields_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { + EBookClient *book_client = E_BOOK_CLIENT (source_object); + EContactEditor *ce = user_data; + gchar *prop_value = NULL; + GSList *fields; + GError *error = NULL; + + if (!e_client_get_backend_property_finish (E_CLIENT (book_client), result, &prop_value, &error)) + prop_value = NULL; + + if (error) { + g_debug ("%s: Failed to get supported fields: %s", G_STRFUNC, error->message); + g_error_free (error); + } + if (!g_slist_find (eab_editor_get_all_editors (), ce)) { g_warning ( "supported_fields_cb called for book that's still " "around, but contact editor that's been destroyed."); + g_free (prop_value); return; } + fields = e_client_util_parse_comma_strings (prop_value); + g_object_set (ce, "writable_fields", fields, NULL); + e_client_util_free_string_slist (fields); + g_free (prop_value); + eab_editor_show (EAB_EDITOR (ce)); sensitize_all (ce); } static void -required_fields_cb (EBook *book, - const GError *error, - EList *fields, - EContactEditor *ce) +required_fields_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { + EBookClient *book_client = E_BOOK_CLIENT (source_object); + EContactEditor *ce = user_data; + gchar *prop_value = NULL; + GSList *fields; + GError *error = NULL; + + if (!e_client_get_backend_property_finish (E_CLIENT (book_client), result, &prop_value, &error)) + prop_value = NULL; + + if (error) { + g_debug ("%s: Failed to get supported fields: %s", G_STRFUNC, error->message); + g_error_free (error); + } if (!g_slist_find (eab_editor_get_all_editors (), ce)) { g_warning ( "supported_fields_cb called for book that's still " "around, but contact editor that's been destroyed."); + g_free (prop_value); return; } + fields = e_client_util_parse_comma_strings (prop_value); + g_object_set (ce, "required_fields", fields, NULL); + e_client_util_free_string_slist (fields); + g_free (prop_value); } EABEditor * e_contact_editor_new (EShell *shell, - EBook *book, + EBookClient *book_client, EContact *contact, gboolean is_new_contact, gboolean editable) @@ -4059,34 +4104,29 @@ e_contact_editor_new (EShell *shell, EABEditor *editor; g_return_val_if_fail (E_IS_SHELL (shell), NULL); - g_return_val_if_fail (E_IS_BOOK (book), NULL); + g_return_val_if_fail (E_IS_BOOK_CLIENT (book_client), NULL); g_return_val_if_fail (E_IS_CONTACT (contact), NULL); editor = g_object_new (E_TYPE_CONTACT_EDITOR, "shell", shell, NULL); g_object_set ( editor, - "source_book", book, + "source_client", book_client, "contact", contact, "is_new_contact", is_new_contact, "editable", editable, NULL); - if (book) - e_book_get_supported_fields_async ( - book, (EBookEListAsyncCallback) - supported_fields_cb, editor); - return editor; } static void -writable_changed (EBook *book, gboolean writable, EContactEditor *ce) +notify_readonly_cb (EBookClient *book_client, EContactEditor *ce) { gint new_target_editable; gboolean changed = FALSE; - new_target_editable = e_book_is_writable (ce->target_book); + new_target_editable = !e_client_is_readonly (E_CLIENT (ce->target_client)); if (ce->target_editable != new_target_editable) changed = TRUE; @@ -4108,41 +4148,35 @@ e_contact_editor_set_property (GObject *object, editor = E_CONTACT_EDITOR (object); switch (prop_id) { - case PROP_SOURCE_BOOK: { + case PROP_SOURCE_CLIENT: { gboolean writable; gboolean changed = FALSE; - EBook *source_book; + EBookClient *source_client; - source_book = E_BOOK (g_value_get_object (value)); + source_client = E_BOOK_CLIENT (g_value_get_object (value)); - if (source_book == editor->source_book) + if (source_client == editor->source_client) break; - if (editor->source_book) - g_object_unref (editor->source_book); + if (editor->source_client) + g_object_unref (editor->source_client); - editor->source_book = source_book; - g_object_ref (editor->source_book); + editor->source_client = source_client; + g_object_ref (editor->source_client); - if (!editor->target_book) { - editor->target_book = editor->source_book; - g_object_ref (editor->target_book); + if (!editor->target_client) { + editor->target_client = editor->source_client; + g_object_ref (editor->target_client); editor->target_editable_id = g_signal_connect ( - editor->target_book, "writable_status", - G_CALLBACK (writable_changed), editor); - - e_book_get_supported_fields_async ( - editor->target_book, - (EBookEListAsyncCallback) - supported_fields_cb, editor); - e_book_get_required_fields_async ( - editor->target_book, - (EBookEListAsyncCallback) - required_fields_cb, editor); + editor->target_client, "notify::readonly", + G_CALLBACK (notify_readonly_cb), editor); + + e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS, NULL, supported_fields_cb, editor); + e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS, NULL, required_fields_cb, editor); } - writable = e_book_is_writable (editor->target_book); + writable = !e_client_is_readonly (E_CLIENT (editor->target_client)); if (writable != editor->target_editable) { editor->target_editable = writable; changed = TRUE; @@ -4154,43 +4188,35 @@ e_contact_editor_set_property (GObject *object, break; } - case PROP_TARGET_BOOK: { + case PROP_TARGET_CLIENT: { gboolean writable; gboolean changed = FALSE; - EBook *target_book; + EBookClient *target_client; - target_book = E_BOOK (g_value_get_object (value)); + target_client = E_BOOK_CLIENT (g_value_get_object (value)); - if (target_book == editor->target_book) + if (target_client == editor->target_client) break; - if (editor->target_book) { - g_signal_handler_disconnect ( - editor->target_book, - editor->target_editable_id); - g_object_unref (editor->target_book); + if (editor->target_client) { + g_signal_handler_disconnect (editor->target_client, editor->target_editable_id); + g_object_unref (editor->target_client); } - editor->target_book = target_book; - g_object_ref (editor->target_book); + editor->target_client = target_client; + g_object_ref (editor->target_client); editor->target_editable_id = g_signal_connect ( - editor->target_book, "writable_status", - G_CALLBACK (writable_changed), editor); - - e_book_get_supported_fields_async ( - editor->target_book, - (EBookEListAsyncCallback) - supported_fields_cb, editor); - - e_book_get_required_fields_async ( - editor->target_book, - (EBookEListAsyncCallback) - required_fields_cb, editor); + editor->target_client, "notify::readonly", + G_CALLBACK (notify_readonly_cb), editor); + + e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS, NULL, supported_fields_cb, editor); + e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS, NULL, required_fields_cb, editor); + if (!editor->is_new_contact) editor->changed = TRUE; - writable = e_book_is_writable (editor->target_book); + writable = !e_client_is_readonly (E_CLIENT (editor->target_client)); if (writable != editor->target_editable) { editor->target_editable = writable; @@ -4238,24 +4264,16 @@ e_contact_editor_set_property (GObject *object, } case PROP_WRITABLE_FIELDS: if (editor->writable_fields) - g_object_unref (editor->writable_fields); + e_client_util_free_string_slist (editor->writable_fields); - editor->writable_fields = g_value_get_object (value); - if (editor->writable_fields) - g_object_ref (editor->writable_fields); - else - editor->writable_fields = e_list_new (NULL, NULL, NULL); + editor->writable_fields = e_client_util_copy_string_slist (NULL, g_value_get_pointer (value)); sensitize_all (editor); break; case PROP_REQUIRED_FIELDS: if (editor->required_fields) - g_object_unref (editor->required_fields); - editor->required_fields = g_value_get_object (value); - if (editor->required_fields) - g_object_ref (editor->required_fields); - else - editor->required_fields = e_list_new (NULL, NULL, NULL); + e_client_util_free_string_slist (editor->required_fields); + editor->required_fields = e_client_util_copy_string_slist (NULL, g_value_get_pointer (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -4274,12 +4292,12 @@ e_contact_editor_get_property (GObject *object, e_contact_editor = E_CONTACT_EDITOR (object); switch (prop_id) { - case PROP_SOURCE_BOOK: - g_value_set_object (value, e_contact_editor->source_book); + case PROP_SOURCE_CLIENT: + g_value_set_object (value, e_contact_editor->source_client); break; - case PROP_TARGET_BOOK: - g_value_set_object (value, e_contact_editor->target_book); + case PROP_TARGET_CLIENT: + g_value_set_object (value, e_contact_editor->target_client); break; case PROP_CONTACT: @@ -4303,20 +4321,10 @@ e_contact_editor_get_property (GObject *object, break; case PROP_WRITABLE_FIELDS: - if (e_contact_editor->writable_fields) - g_value_set_object ( - value, e_list_duplicate ( - e_contact_editor->writable_fields)); - else - g_value_set_object (value, NULL); + g_value_set_pointer (value, e_contact_editor->writable_fields); break; case PROP_REQUIRED_FIELDS: - if (e_contact_editor->required_fields) - g_value_set_object ( - value, e_list_duplicate ( - e_contact_editor->required_fields)); - else - g_value_set_object (value, NULL); + g_value_set_pointer (value, e_contact_editor->required_fields); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); diff --git a/addressbook/gui/contact-editor/e-contact-editor.h b/addressbook/gui/contact-editor/e-contact-editor.h index 2f00a12f67..7f39fe421e 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.h +++ b/addressbook/gui/contact-editor/e-contact-editor.h @@ -25,7 +25,7 @@ #include "addressbook/gui/contact-editor/eab-editor.h" -#include +#include #include #include @@ -55,8 +55,8 @@ struct _EContactEditor EABEditor object; /* item specific fields */ - EBook *source_book; - EBook *target_book; + EBookClient *source_client; + EBookClient *target_client; EContact *contact; GtkBuilder *builder; @@ -90,9 +90,9 @@ struct _EContactEditor /* Whether to try to reduce space used */ guint compress_ui : 1; - EList *writable_fields; + GSList *writable_fields; - EList *required_fields; + GSList *required_fields; GCancellable *cancellable; @@ -110,7 +110,7 @@ struct _EContactEditorClass GType e_contact_editor_get_type (void); EABEditor *e_contact_editor_new (EShell *shell, - EBook *book, + EBookClient *book_client, EContact *contact, gboolean is_new_contact, gboolean editable); diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index c7a42233c2..ac46c0ecfc 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -28,9 +28,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include "e-contact-editor.h" @@ -121,37 +121,42 @@ quick_add_set_vcard (QuickAdd *qa, const gchar *vcard) } static void -merge_cb (ESource *source, - GAsyncResult *result, - QuickAdd *qa) +merge_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { - EBook *book; + ESource *source = E_SOURCE (source_object); + QuickAdd *qa = user_data; + EClient *client = NULL; GError *error = NULL; - book = e_load_book_source_finish (source, result, &error); + if (!e_client_utils_open_new_finish (source, result, &client, &error)) + client = NULL; /* Ignore cancellations. */ - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) || + g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + g_error_free (error); return; + } if (!error) { - if (e_book_is_writable (book)) - eab_merging_book_add_contact (book, qa->contact, NULL, NULL); + if (!e_client_is_readonly (client)) + eab_merging_book_add_contact (E_BOOK_CLIENT (client), qa->contact, NULL, NULL); else e_alert_run_dialog_for_args (e_shell_get_active_window (NULL), "addressbook:error-read-only", - e_source_peek_name (e_book_get_source (book)), + e_source_peek_name (e_client_get_source (client)), NULL); if (qa->cb) qa->cb (qa->contact, qa->closure); - g_object_unref (book); + g_object_unref (client); } else { /* Something went wrong. */ - if (book) - g_object_unref (book); + if (client) + g_object_unref (client); if (qa->cb) qa->cb (NULL, qa->closure); + g_error_free (error); } quick_add_unref (qa); @@ -167,9 +172,9 @@ quick_add_merge_contact (QuickAdd *qa) qa->cancellable = g_cancellable_new (); - e_load_book_source_async ( - qa->source, NULL, qa->cancellable, - (GAsyncReadyCallback) merge_cb, qa); + e_client_utils_open_new (qa->source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, qa->cancellable, + e_client_utils_authenticate_handler, NULL, + merge_cb, qa); } /* Raise a contact editor with all fields editable, @@ -177,7 +182,7 @@ quick_add_merge_contact (QuickAdd *qa) static void contact_added_cb (EContactEditor *ce, - EBookStatus status, + const GError *error, EContact *contact, gpointer closure) { @@ -204,7 +209,7 @@ editor_closed_cb (GtkWidget *w, gpointer closure) } static void -ce_have_contact (EBook *book, +ce_have_contact (EBookClient *book_client, const GError *error, EContact *contact, gpointer closure) @@ -212,8 +217,8 @@ ce_have_contact (EBook *book, QuickAdd *qa = (QuickAdd *) closure; if (error) { - if (book) - g_object_unref (book); + if (book_client) + g_object_unref (book_client); g_warning ( "Failed to find contact, status %d (%s).", error->code, error->message); @@ -231,7 +236,7 @@ ce_have_contact (EBook *book, shell = e_shell_get_default (); contact_editor = e_contact_editor_new ( - shell, book, qa->contact, TRUE, TRUE /* XXX */); + shell, book_client, qa->contact, TRUE, TRUE /* XXX */); /* Mark it as changed so the Save buttons are * enabled when we bring up the dialog. */ @@ -256,31 +261,36 @@ ce_have_contact (EBook *book, G_CALLBACK (editor_closed_cb), NULL); - g_object_unref (book); + g_object_unref (book_client); } } static void -ce_have_book (ESource *source, - GAsyncResult *result, - QuickAdd *qa) +ce_have_book (GObject *source_object, GAsyncResult *result, gpointer user_data) { - EBook *book; + ESource *source = E_SOURCE (source_object); + QuickAdd *qa = user_data; + EClient *client = NULL; GError *error = NULL; - book = e_load_book_source_finish (source, result, &error); + if (!e_client_utils_open_new_finish (source, result, &client, &error)) + client = NULL; /* Ignore cancellations. */ - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) || + g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + g_error_free (error); return; + } if (error) { - if (book) - g_object_unref (book); + if (client) + g_object_unref (client); g_warning ("Couldn't open local address book (%s).", error->message); quick_add_unref (qa); + g_error_free (error); } else { - eab_merging_book_find_contact (book, qa->contact, ce_have_contact, qa); + eab_merging_book_find_contact (E_BOOK_CLIENT (client), qa->contact, ce_have_contact, qa); } } @@ -294,9 +304,9 @@ edit_contact (QuickAdd *qa) qa->cancellable = g_cancellable_new (); - e_load_book_source_async ( - qa->source, NULL, qa->cancellable, - (GAsyncReadyCallback) ce_have_book, qa); + e_client_utils_open_new (qa->source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, qa->cancellable, + e_client_utils_authenticate_handler, NULL, + ce_have_book, qa); } #define QUICK_ADD_RESPONSE_EDIT_FULL 2 diff --git a/addressbook/gui/contact-editor/eab-editor.h b/addressbook/gui/contact-editor/eab-editor.h index 5623aa5bd4..43e36e53a3 100644 --- a/addressbook/gui/contact-editor/eab-editor.h +++ b/addressbook/gui/contact-editor/eab-editor.h @@ -25,7 +25,6 @@ #define __EAB_EDITOR_H__ #include -#include #include #include diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 3fae1a2013..a4f30ca573 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -37,7 +37,7 @@ #include #include -#include +#include #include #include "e-util/e-util.h" @@ -90,7 +90,7 @@ enum { PROP_0, - PROP_BOOK, + PROP_CLIENT, PROP_CONTACT, PROP_IS_NEW_LIST, PROP_EDITABLE @@ -103,7 +103,7 @@ typedef struct { struct _EContactListEditorPrivate { - EBook *book; + EBookClient *book_client; EContact *contact; GtkBuilder *builder; @@ -208,17 +208,20 @@ contact_list_editor_add_email (EContactListEditor *editor) } static void -contact_list_editor_book_loaded_cb (ESource *source, +contact_list_editor_book_loaded_cb (GObject *source_object, GAsyncResult *result, - EContactListEditor *editor) + gpointer user_data) { + ESource *source = E_SOURCE (source_object); + EContactListEditor *editor = user_data; EContactListEditorPrivate *priv = editor->priv; EContactStore *contact_store; ENameSelectorEntry *entry; - EBook *book; + EClient *client = NULL; + EBookClient *book_client; GError *error = NULL; - book = e_load_book_source_finish (source, result, &error); + e_client_utils_open_new_finish (source, result, &client, &error); if (error != NULL) { GtkWindow *parent; @@ -228,20 +231,21 @@ contact_list_editor_book_loaded_cb (ESource *source, e_source_combo_box_set_active ( E_SOURCE_COMBO_BOX (WIDGET (SOURCE_MENU)), - e_book_get_source (priv->book)); + e_client_get_source (E_CLIENT (priv->book_client))); g_error_free (error); goto exit; } - g_return_if_fail (E_IS_BOOK (book)); + book_client = E_BOOK_CLIENT (client); + g_return_if_fail (E_IS_BOOK_CLIENT (book_client)); entry = E_NAME_SELECTOR_ENTRY (WIDGET (EMAIL_ENTRY)); contact_store = e_name_selector_entry_peek_contact_store (entry); - e_contact_store_add_book (contact_store, book); - e_contact_list_editor_set_book (editor, book); + e_contact_store_add_client (contact_store, book_client); + e_contact_list_editor_set_client (editor, book_client); - g_object_unref (book); + g_object_unref (book_client); exit: g_object_unref (editor); @@ -261,11 +265,12 @@ contact_list_editor_contact_exists (EContactListModel *model, } static void -contact_list_editor_list_added_cb (EBook *book, +contact_list_editor_list_added_cb (EBookClient *book_client, const GError *error, const gchar *id, - EditorCloseStruct *ecs) + gpointer closure) { + EditorCloseStruct *ecs = closure; EContactListEditor *editor = ecs->editor; EContactListEditorPrivate *priv = editor->priv; gboolean should_close = ecs->should_close; @@ -292,10 +297,11 @@ contact_list_editor_list_added_cb (EBook *book, } static void -contact_list_editor_list_modified_cb (EBook *book, +contact_list_editor_list_modified_cb (EBookClient *book_client, const GError *error, - EditorCloseStruct *ecs) + gpointer closure) { + EditorCloseStruct *ecs = closure; EContactListEditor *editor = ecs->editor; EContactListEditorPrivate *priv = editor->priv; gboolean should_close = ecs->should_close; @@ -500,7 +506,7 @@ contact_list_editor_drag_data_received_cb (GtkWidget *widget, gboolean changed = FALSE; gboolean handled = FALSE; const guchar *data; - GList *list, *iter; + GSList *list, *iter; GdkAtom target; gint n_addresses = 0; gchar *text; @@ -546,8 +552,7 @@ contact_list_editor_drag_data_received_cb (GtkWidget *widget, } } - g_list_foreach (list, (GFunc) g_object_unref, NULL); - g_list_free (list); + e_client_util_free_object_slist (list); contact_list_editor_scroll_to_end (editor); @@ -894,21 +899,17 @@ void contact_list_editor_source_menu_changed_cb (GtkWidget *widget) { EContactListEditor *editor; - GtkWindow *parent; ESource *source; editor = contact_list_editor_extract (widget); source = e_source_combo_box_get_active (E_SOURCE_COMBO_BOX (widget)); - if (e_source_equal (e_book_get_source (editor->priv->book), source)) + if (e_source_equal (e_client_get_source (E_CLIENT (editor->priv->book_client)), source)) return; - parent = eab_editor_get_window (EAB_EDITOR (editor)); - - e_load_book_source_async ( - source, parent, NULL, (GAsyncReadyCallback) - contact_list_editor_book_loaded_cb, - g_object_ref (editor)); + e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, + e_client_utils_authenticate_handler, eab_editor_get_window (EAB_EDITOR (editor)), + contact_list_editor_book_loaded_cb, g_object_ref (editor)); } gboolean @@ -1097,7 +1098,7 @@ contact_list_editor_bottom_button_clicked_cb (GtkButton *button) /******************** GtkBuilder Custom Widgets Functions ********************/ static gpointer -contact_editor_fudge_new (EBook *book, +contact_editor_fudge_new (EBookClient *book_client, EContact *contact, gboolean is_new, gboolean editable) @@ -1108,11 +1109,11 @@ contact_editor_fudge_new (EBook *book, * was a terrible idea. Now we're stuck with it. */ return e_contact_editor_new ( - shell, book, contact, is_new, editable); + shell, book_client, contact, is_new, editable); } static gpointer -contact_list_editor_fudge_new (EBook *book, +contact_list_editor_fudge_new (EBookClient *book_client, EContact *contact, gboolean is_new, gboolean editable) @@ -1123,20 +1124,19 @@ contact_list_editor_fudge_new (EBook *book, * was a terrible idea. Now we're stuck with it. */ return e_contact_list_editor_new ( - shell, book, contact, is_new, editable); + shell, book_client, contact, is_new, editable); } static void setup_custom_widgets (EContactListEditor *editor) { - const gchar *key = "/apps/evolution/addressbook/sources"; GtkWidget *combo_box; - GConfClient *client; ESourceList *source_list; ENameSelectorEntry *name_selector_entry; ENameSelector *name_selector; GtkWidget *old, *parent; EContactListEditorPrivate *priv; + GError *error = NULL; guint ba = 0, la = 0, ra = 0, ta = 0, xo = 0, xp = 0, yo = 0, yp = 0; g_return_if_fail (editor != NULL); @@ -1144,11 +1144,16 @@ setup_custom_widgets (EContactListEditor *editor) priv = editor->priv; combo_box = WIDGET (SOURCE_MENU); - client = gconf_client_get_default (); - source_list = e_source_list_new_for_gconf (client, key); + if (!e_book_client_get_sources (&source_list, &error)) + source_list = NULL; g_object_set (G_OBJECT (combo_box), "source-list", source_list, NULL); - g_object_unref (source_list); - g_object_unref (client); + if (source_list) + g_object_unref (source_list); + + if (error) { + g_debug ("%s: Failed to get sources: %s", G_STRFUNC, error->message); + g_error_free (error); + } g_signal_connect ( combo_box, "changed", G_CALLBACK ( @@ -1237,8 +1242,8 @@ contact_list_editor_set_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_BOOK: - e_contact_list_editor_set_book ( + case PROP_CLIENT: + e_contact_list_editor_set_client ( E_CONTACT_LIST_EDITOR (object), g_value_get_object (value)); return; @@ -1272,10 +1277,10 @@ contact_list_editor_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_BOOK: + case PROP_CLIENT: g_value_set_object ( value, - e_contact_list_editor_get_book ( + e_contact_list_editor_get_client ( E_CONTACT_LIST_EDITOR (object))); return; @@ -1354,7 +1359,7 @@ contact_list_editor_save_contact (EABEditor *eab_editor, contact = e_contact_list_editor_get_contact (editor); - if (priv->book == NULL) + if (priv->book_client == NULL) return; ecs = g_new (EditorCloseStruct, 1); @@ -1366,11 +1371,11 @@ contact_list_editor_save_contact (EABEditor *eab_editor, if (priv->is_new_list) eab_merging_book_add_contact ( - priv->book, contact, (EBookIdAsyncCallback) + priv->book_client, contact, contact_list_editor_list_added_cb, ecs); else - eab_merging_book_commit_contact ( - priv->book, contact, (EBookAsyncCallback) + eab_merging_book_modify_contact ( + priv->book_client, contact, contact_list_editor_list_modified_cb, ecs); priv->changed = FALSE; @@ -1411,7 +1416,7 @@ contact_list_editor_contact_added (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error adding list"), error); @@ -1425,7 +1430,7 @@ contact_list_editor_contact_modified (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error modifying list"), error); @@ -1439,7 +1444,7 @@ contact_list_editor_contact_deleted (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error removing list"), error); @@ -1483,12 +1488,12 @@ contact_list_editor_class_init (EContactListEditorClass *class) g_object_class_install_property ( object_class, - PROP_BOOK, + PROP_CLIENT, g_param_spec_object ( - "book", - "Book", + "client", + "EBookClient", NULL, - E_TYPE_BOOK, + E_TYPE_BOOK_CLIENT, G_PARAM_READWRITE)); g_object_class_install_property ( @@ -1615,7 +1620,7 @@ e_contact_list_editor_get_type (void) EABEditor * e_contact_list_editor_new (EShell *shell, - EBook *book, + EBookClient *book_client, EContact *list_contact, gboolean is_new_list, gboolean editable) @@ -1629,7 +1634,7 @@ e_contact_list_editor_new (EShell *shell, "shell", shell, NULL); g_object_set (editor, - "book", book, + "client", book_client, "contact", list_contact, "is_new_list", is_new_list, "editable", editable, @@ -1638,32 +1643,30 @@ e_contact_list_editor_new (EShell *shell, return editor; } -EBook * -e_contact_list_editor_get_book (EContactListEditor *editor) +EBookClient * +e_contact_list_editor_get_client (EContactListEditor *editor) { g_return_val_if_fail (E_IS_CONTACT_LIST_EDITOR (editor), NULL); - return editor->priv->book; + return editor->priv->book_client; } void -e_contact_list_editor_set_book (EContactListEditor *editor, - EBook *book) +e_contact_list_editor_set_client (EContactListEditor *editor, + EBookClient *book_client) { g_return_if_fail (E_IS_CONTACT_LIST_EDITOR (editor)); - g_return_if_fail (E_IS_BOOK (book)); + g_return_if_fail (E_IS_BOOK_CLIENT (book_client)); - if (editor->priv->book != NULL) - g_object_unref (editor->priv->book); - editor->priv->book = g_object_ref (book); + if (editor->priv->book_client != NULL) + g_object_unref (editor->priv->book_client); + editor->priv->book_client = g_object_ref (book_client); - editor->priv->allows_contact_lists = - e_book_check_static_capability ( - editor->priv->book, "contact-lists"); + editor->priv->allows_contact_lists = e_client_check_capability (E_CLIENT (editor->priv->book_client), "contact-lists"); contact_list_editor_update (editor); - g_object_notify (G_OBJECT (editor), "book"); + g_object_notify (G_OBJECT (editor), "client"); } EContact * @@ -1823,10 +1826,10 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, g_list_free (email_list); } - if (priv->book != NULL) { + if (priv->book_client != NULL) { e_source_combo_box_set_active ( E_SOURCE_COMBO_BOX (WIDGET (SOURCE_MENU)), - e_book_get_source (priv->book)); + e_client_get_source (E_CLIENT (priv->book_client))); gtk_widget_set_sensitive ( WIDGET (SOURCE_MENU), priv->is_new_list); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.h b/addressbook/gui/contact-list-editor/e-contact-list-editor.h index 11242b3dee..38713ba7ab 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.h +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.h @@ -27,7 +27,7 @@ #include "addressbook/gui/contact-editor/eab-editor.h" -#include +#include #include #include @@ -68,13 +68,13 @@ struct _EContactListEditorClass GType e_contact_list_editor_get_type (void); EABEditor * e_contact_list_editor_new (EShell *shell, - EBook *book, + EBookClient *book_client, EContact *list_contact, gboolean is_new_list, gboolean editable); -EBook * e_contact_list_editor_get_book (EContactListEditor *editor); -void e_contact_list_editor_set_book (EContactListEditor *editor, - EBook *book); +EBookClient * e_contact_list_editor_get_client(EContactListEditor *editor); +void e_contact_list_editor_set_client(EContactListEditor *editor, + EBookClient *book_client); EContact * e_contact_list_editor_get_contact (EContactListEditor *editor); void e_contact_list_editor_set_contact diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index 4e226e798c..1ba9b3811f 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -27,7 +27,8 @@ #include #include -#include +#include +#include #include "addressbook/util/eab-book-util.h" #include "eab-contact-compare.h" @@ -572,24 +573,31 @@ match_search_info_free (MatchSearchInfo *info) } static void -query_cb (EBook *book, const GError *error, GList *contacts, gpointer closure) +query_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { - /* XXX we need to free contacts */ - MatchSearchInfo *info = (MatchSearchInfo *) closure; + MatchSearchInfo *info = (MatchSearchInfo *) user_data; EABContactMatchType best_match = EAB_CONTACT_MATCH_NONE; EContact *best_contact = NULL; - GList *remaining_contacts = NULL; - const GList *i; + EBookClient *book_client = E_BOOK_CLIENT (source_object); + GSList *remaining_contacts = NULL; + GSList *contacts = NULL; + GError *error = NULL; + const GSList *ii; + + if (result && !e_book_client_get_contacts_finish (book_client, result, &contacts, &error)) { + g_debug ("%s: Failed to get contacts: %s\n", G_STRFUNC, error ? error->message : "Unknown error"); + if (error) + g_error_free (error); - if (error) { info->cb (info->contact, NULL, EAB_CONTACT_MATCH_NONE, info->closure); match_search_info_free (info); + g_object_unref (book_client); return; } /* remove the contacts we're to avoid from the list, if they're present */ - for (i = contacts; i != NULL; i = g_list_next (i)) { - EContact *this_contact = E_CONTACT (i->data); + for (ii = contacts; ii != NULL; ii = g_slist_next (ii)) { + EContact *this_contact = E_CONTACT (ii->data); const gchar *this_uid; GList *iterator; gboolean avoid = FALSE; @@ -611,30 +619,36 @@ query_cb (EBook *book, const GError *error, GList *contacts, gpointer closure) } } if (!avoid) - remaining_contacts = g_list_prepend (remaining_contacts, this_contact); + remaining_contacts = g_slist_prepend (remaining_contacts, g_object_ref (this_contact)); } - remaining_contacts = g_list_reverse (remaining_contacts); + remaining_contacts = g_slist_reverse (remaining_contacts); - for (i = remaining_contacts; i != NULL; i = g_list_next (i)) { - EContact *this_contact = E_CONTACT (i->data); + for (ii = remaining_contacts; ii != NULL; ii = g_slist_next (ii)) { + EContact *this_contact = E_CONTACT (ii->data); EABContactMatchType this_match = eab_contact_compare (info->contact, this_contact); if ((gint) this_match > (gint) best_match) { best_match = this_match; - best_contact = this_contact; + best_contact = this_contact; } } - g_list_free (remaining_contacts); + if (best_contact) + best_contact = g_object_ref (best_contact); + + e_client_util_free_object_slist (contacts); + e_client_util_free_object_slist (remaining_contacts); info->cb (info->contact, best_contact, best_match, info->closure); match_search_info_free (info); + g_object_unref (book_client); + g_object_unref (best_contact); } #define MAX_QUERY_PARTS 10 static void -use_common_book (EBook *book, - MatchSearchInfo *info) +use_common_book_client (EBookClient *book_client, + MatchSearchInfo *info) { EContact *contact = info->contact; EContactName *contact_name; @@ -645,7 +659,7 @@ use_common_book (EBook *book, EBookQuery *query = NULL; gint i; - if (book == NULL) { + if (book_client == NULL) { info->cb (info->contact, NULL, EAB_CONTACT_MATCH_NONE, info->closure); match_search_info_free (info); return; @@ -713,10 +727,14 @@ use_common_book (EBook *book, query = NULL; } - if (query) - e_book_get_contacts_async (book, query, query_cb, info); - else - query_cb (book, NULL, NULL, info); + if (query) { + gchar *query_str = e_book_query_to_string (query); + + e_book_client_get_contacts (book_client, query_str, NULL, query_cb, info); + + g_free (query_str); + } else + query_cb (G_OBJECT (book_client), NULL, info); g_free (qj); if (query) @@ -724,14 +742,18 @@ use_common_book (EBook *book, } static void -book_loaded_cb (ESource *source, +book_loaded_cb (GObject *source_object, GAsyncResult *result, - MatchSearchInfo *info) + gpointer user_data) { - EBook *book; + ESource *source = E_SOURCE (source_object); + MatchSearchInfo *info = user_data; + EClient *client = NULL; + + if (!e_client_utils_open_new_finish (source, result, &client, NULL)) + client = NULL; - book = e_load_book_source_finish (source, result, NULL); - use_common_book (book, info); + use_common_book_client (client ? E_BOOK_CLIENT (client): NULL, info); } void @@ -754,7 +776,7 @@ eab_contact_locate_match (EContact *contact, * Look for the best match and return it using the EABContactMatchQueryCallback. **/ void -eab_contact_locate_match_full (EBook *book, +eab_contact_locate_match_full (EBookClient *book_client, EContact *contact, GList *avoid, EABContactMatchQueryCallback cb, @@ -773,18 +795,18 @@ eab_contact_locate_match_full (EBook *book, info->avoid = g_list_copy (avoid); g_list_foreach (info->avoid, (GFunc) g_object_ref, NULL); - if (book) { - use_common_book (book, info); + if (book_client) { + use_common_book_client (g_object_ref (book_client), info); return; } - if (!e_book_get_addressbooks (&info->source_list, NULL)) + if (!e_book_client_get_sources (&info->source_list, NULL)) return; source = e_source_list_peek_default_source (info->source_list); - e_load_book_source_async ( - source, NULL, NULL, (GAsyncReadyCallback) + e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, + e_client_utils_authenticate_handler, NULL, book_loaded_cb, info); } diff --git a/addressbook/gui/merging/eab-contact-compare.h b/addressbook/gui/merging/eab-contact-compare.h index 4fc8ed1569..df67c5d752 100644 --- a/addressbook/gui/merging/eab-contact-compare.h +++ b/addressbook/gui/merging/eab-contact-compare.h @@ -26,7 +26,7 @@ #ifndef __EAB_CONTACT_COMPARE_H__ #define __EAB_CONTACT_COMPARE_H__ -#include +#include #include typedef enum { @@ -64,7 +64,7 @@ EABContactMatchType eab_contact_compare_telephone (EContact *contact1, EContact EABContactMatchType eab_contact_compare (EContact *contact1, EContact *contact2); void eab_contact_locate_match (EContact *contact, EABContactMatchQueryCallback cb, gpointer closure); -void eab_contact_locate_match_full (EBook *book, EContact *contact, GList *avoid, EABContactMatchQueryCallback cb, gpointer closure); +void eab_contact_locate_match_full (EBookClient *book_client, EContact *contact, GList *avoid, EABContactMatchQueryCallback cb, gpointer closure); #endif /* __E_CONTACT_COMPARE_H__ */ diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index 49e9968074..99bb2d39fb 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -45,15 +45,15 @@ typedef enum { typedef struct { EContactMergingOpType op; - EBook *book; + EBookClient *book_client; /*contact is the new contact which the user has tried to add to the addressbook*/ EContact *contact; /*match is the duplicate contact already existing in the addressbook*/ EContact *match; GList *avoid; - EBookIdAsyncCallback id_cb; - EBookAsyncCallback cb; - EBookContactAsyncCallback c_cb; + EABMergingAsyncCallback cb; + EABMergingIdAsyncCallback id_cb; + EABMergingContactAsyncCallback c_cb; gpointer closure; } EContactMergingLookup; @@ -73,7 +73,7 @@ add_lookup (EContactMergingLookup *lookup) { if (running_merge_requests < SIMULTANEOUS_MERGING_REQUESTS) { running_merge_requests++; - eab_contact_locate_match_full (lookup->book, lookup->contact, lookup->avoid, match_query_callback, lookup); + eab_contact_locate_match_full (lookup->book_client, lookup->contact, lookup->avoid, match_query_callback, lookup); } else { merging_queue = g_list_append (merging_queue, lookup); @@ -96,14 +96,14 @@ finished_lookup (void) merging_queue = g_list_remove_link (merging_queue, merging_queue); running_merge_requests++; - eab_contact_locate_match_full (lookup->book, lookup->contact, lookup->avoid, match_query_callback, lookup); + eab_contact_locate_match_full (lookup->book_client, lookup->contact, lookup->avoid, match_query_callback, lookup); } } static void free_lookup (EContactMergingLookup *lookup) { - g_object_unref (lookup->book); + g_object_unref (lookup->book_client); g_object_unref (lookup->contact); g_list_free (lookup->avoid); if (lookup->match) @@ -112,12 +112,12 @@ free_lookup (EContactMergingLookup *lookup) } static void -final_id_cb (EBook *book, const GError *error, const gchar *id, gpointer closure) +final_id_cb (EBookClient *book_client, const GError *error, const gchar *id, gpointer closure) { EContactMergingLookup *lookup = closure; if (lookup->id_cb) - lookup->id_cb (lookup->book, error, id, lookup->closure); + lookup->id_cb (lookup->book_client, error, id, lookup->closure); free_lookup (lookup); @@ -125,12 +125,12 @@ final_id_cb (EBook *book, const GError *error, const gchar *id, gpointer closure } static void -final_cb_as_id (EBook *book, const GError *error, gpointer closure) +final_cb_as_id (EBookClient *book_client, const GError *error, gpointer closure) { EContactMergingLookup *lookup = closure; if (lookup->id_cb) - lookup->id_cb (lookup->book, error, lookup->contact ? e_contact_get_const (lookup->contact, E_CONTACT_UID) : NULL, lookup->closure); + lookup->id_cb (lookup->book_client, error, lookup->contact ? e_contact_get_const (lookup->contact, E_CONTACT_UID) : NULL, lookup->closure); free_lookup (lookup); @@ -138,12 +138,12 @@ final_cb_as_id (EBook *book, const GError *error, gpointer closure) } static void -final_cb (EBook *book, const GError *error, gpointer closure) +final_cb (EBookClient *book_client, const GError *error, gpointer closure) { EContactMergingLookup *lookup = closure; if (lookup->cb) - lookup->cb (lookup->book, error, lookup->closure); + lookup->cb (lookup->book_client, error, lookup->closure); free_lookup (lookup); @@ -151,26 +151,67 @@ final_cb (EBook *book, const GError *error, gpointer closure) } static void -doit (EContactMergingLookup *lookup, gboolean force_commit) +modify_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +{ + EBookClient *book_client = E_BOOK_CLIENT (source_object); + EContactMergingLookup *lookup = user_data; + GError *error = NULL; + + g_return_if_fail (book_client != NULL); + g_return_if_fail (lookup != NULL); + + e_book_client_modify_contact_finish (book_client, result, &error); + + if (lookup->op == E_CONTACT_MERGING_ADD) + final_cb_as_id (book_client, error, lookup); + else + final_cb (book_client, error, lookup); + + if (error) + g_error_free (error); +} + +static void +add_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +{ + EBookClient *book_client = E_BOOK_CLIENT (source_object); + EContactMergingLookup *lookup = user_data; + gchar *uid = NULL; + GError *error = NULL; + + g_return_if_fail (book_client != NULL); + g_return_if_fail (lookup != NULL); + + if (!e_book_client_add_contact_finish (book_client, result, &uid, &error)) + uid = NULL; + + final_id_cb (book_client, error, uid, lookup); + + if (error) + g_error_free (error); +} + +static void +doit (EContactMergingLookup *lookup, gboolean force_modify) { if (lookup->op == E_CONTACT_MERGING_ADD) { - if (force_commit) - e_book_commit_contact_async (lookup->book, lookup->contact, final_cb_as_id, lookup); + if (force_modify) + e_book_client_modify_contact (lookup->book_client, lookup->contact, NULL, modify_contact_ready_cb, lookup); else - e_book_add_contact_async (lookup->book, lookup->contact, final_id_cb, lookup); + e_book_client_add_contact (lookup->book_client, lookup->contact, NULL, add_contact_ready_cb, lookup); } else if (lookup->op == E_CONTACT_MERGING_COMMIT) - e_book_commit_contact_async (lookup->book, lookup->contact, final_cb, lookup); + e_book_client_modify_contact (lookup->book_client, lookup->contact, NULL, modify_contact_ready_cb, lookup); } static void cancelit (EContactMergingLookup *lookup) { - GError *error = g_error_new (E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED, _("Cancelled")); + GError *error = e_client_error_create (E_CLIENT_ERROR_CANCELLED, NULL); if (lookup->op == E_CONTACT_MERGING_ADD) { - final_id_cb (lookup->book, error, NULL, lookup); + final_id_cb (lookup->book_client, error, NULL, lookup); } else if (lookup->op == E_CONTACT_MERGING_COMMIT) { - final_cb (lookup->book, error, lookup); + final_cb (lookup->book_client, error, lookup); } g_error_free (error); @@ -209,6 +250,26 @@ dropdown_changed (GtkWidget *dropdown, dropdown_data *data) return; } +static void +remove_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +{ + EBookClient *book_client = E_BOOK_CLIENT (source_object); + EContactMergingLookup *lookup = user_data; + GError *error = NULL; + + g_return_if_fail (book_client != NULL); + g_return_if_fail (lookup != NULL); + + e_book_client_remove_contact_finish (book_client, result, &error); + + if (error) { + g_debug ("%s: Failed to remove contact: %s", G_STRFUNC, error->message); + g_error_free (error); + } + + e_book_client_add_contact (book_client, lookup->contact, NULL, add_contact_ready_cb, lookup); +} + static gint mergeit (EContactMergingLookup *lookup) { @@ -373,12 +434,10 @@ mergeit (EContactMergingLookup *lookup) gtk_widget_show_all ((GtkWidget *) table); result = gtk_dialog_run (dialog); - switch (result) - { + switch (result) { case GTK_RESPONSE_OK: lookup->contact = lookup->match; - e_book_remove_contact_async (lookup->book, lookup->match, NULL, lookup); - e_book_add_contact_async (lookup->book, lookup->contact, final_id_cb, lookup); + e_book_client_remove_contact (lookup->book_client, lookup->match, NULL, remove_contact_ready_cb, lookup); value = 1; break; case GTK_RESPONSE_CANCEL: @@ -472,7 +531,7 @@ match_query_callback (EContact *contact, EContact *match, EABContactMatchType ty if (lookup->op == E_CONTACT_MERGING_FIND) { if (lookup->c_cb) - lookup->c_cb (lookup->book, NULL, (gint) type <= (gint) EAB_CONTACT_MATCH_VAGUE ? NULL : match, lookup->closure); + lookup->c_cb (lookup->book_client, NULL, (gint) type <= (gint) EAB_CONTACT_MATCH_VAGUE ? NULL : match, lookup->closure); free_lookup (lookup); finished_lookup (); @@ -547,17 +606,17 @@ match_query_callback (EContact *contact, EContact *match, EABContactMatchType ty } gboolean -eab_merging_book_add_contact (EBook *book, - EContact *contact, - EBookIdAsyncCallback cb, - gpointer closure) +eab_merging_book_add_contact (EBookClient *book_client, + EContact *contact, + EABMergingIdAsyncCallback cb, + gpointer closure) { EContactMergingLookup *lookup; lookup = g_new (EContactMergingLookup, 1); lookup->op = E_CONTACT_MERGING_ADD; - lookup->book = g_object_ref (book); + lookup->book_client = g_object_ref (book_client); lookup->contact = g_object_ref (contact); lookup->id_cb = cb; lookup->closure = closure; @@ -570,17 +629,17 @@ eab_merging_book_add_contact (EBook *book, } gboolean -eab_merging_book_commit_contact (EBook *book, - EContact *contact, - EBookAsyncCallback cb, - gpointer closure) +eab_merging_book_modify_contact (EBookClient *book_client, + EContact *contact, + EABMergingAsyncCallback cb, + gpointer closure) { EContactMergingLookup *lookup; lookup = g_new (EContactMergingLookup, 1); lookup->op = E_CONTACT_MERGING_COMMIT; - lookup->book = g_object_ref (book); + lookup->book_client = g_object_ref (book_client); lookup->contact = g_object_ref (contact); lookup->cb = cb; lookup->closure = closure; @@ -593,17 +652,17 @@ eab_merging_book_commit_contact (EBook *book, } gboolean -eab_merging_book_find_contact (EBook *book, - EContact *contact, - EBookContactAsyncCallback cb, - gpointer closure) +eab_merging_book_find_contact (EBookClient *book_client, + EContact *contact, + EABMergingContactAsyncCallback cb, + gpointer closure) { EContactMergingLookup *lookup; lookup = g_new (EContactMergingLookup, 1); lookup->op = E_CONTACT_MERGING_FIND; - lookup->book = g_object_ref (book); + lookup->book_client = g_object_ref (book_client); lookup->contact = g_object_ref (contact); lookup->c_cb = cb; lookup->closure = closure; diff --git a/addressbook/gui/merging/eab-contact-merging.h b/addressbook/gui/merging/eab-contact-merging.h index 40d12a5a29..c8e2ddb3ef 100644 --- a/addressbook/gui/merging/eab-contact-merging.h +++ b/addressbook/gui/merging/eab-contact-merging.h @@ -26,22 +26,28 @@ #ifndef __E_CONTACT_MERGING_H__ #define __E_CONTACT_MERGING_H__ -#include +#include G_BEGIN_DECLS -gboolean eab_merging_book_add_contact (EBook *book, - EContact *contact, - EBookIdAsyncCallback cb, - gpointer closure); -gboolean eab_merging_book_commit_contact (EBook *book, - EContact *contact, - EBookAsyncCallback cb, - gpointer closure); -gboolean eab_merging_book_find_contact (EBook *book, - EContact *contact, - EBookContactAsyncCallback cb, - gpointer closure); +typedef void (*EABMergingAsyncCallback) (EBookClient *book_client, const GError *error, gpointer closure); +typedef void (*EABMergingIdAsyncCallback) (EBookClient *book_client, const GError *error, const gchar *id, gpointer closure); +typedef void (*EABMergingContactAsyncCallback) (EBookClient *book_client, const GError *error, EContact *contact, gpointer closure); + +gboolean eab_merging_book_add_contact (EBookClient *book_client, + EContact *contact, + EABMergingIdAsyncCallback cb, + gpointer closure); + +gboolean eab_merging_book_modify_contact (EBookClient *book_client, + EContact *contact, + EABMergingAsyncCallback cb, + gpointer closure); + +gboolean eab_merging_book_find_contact (EBookClient *book_client, + EContact *contact, + EABMergingContactAsyncCallback cb, + gpointer closure); G_END_DECLS diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 30720513d0..497b8fe353 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -32,10 +32,10 @@ #include "eab-gui-util.h" struct _EAddressbookModelPrivate { - EBook *book; - EBookQuery *query; - EBookView *book_view; - guint book_view_idle_id; + EBookClient *book_client; + gchar *query_str; + EBookClientView *client_view; + guint client_view_idle_id; /* Query Results */ GPtrArray *contacts; @@ -58,7 +58,7 @@ struct _EAddressbookModelPrivate { enum { PROP_0, - PROP_BOOK, + PROP_CLIENT, PROP_EDITABLE, PROP_QUERY }; @@ -94,25 +94,25 @@ free_data (EAddressbookModel *model) static void remove_book_view (EAddressbookModel *model) { - if (model->priv->book_view && model->priv->create_contact_id) + if (model->priv->client_view && model->priv->create_contact_id) g_signal_handler_disconnect ( - model->priv->book_view, + model->priv->client_view, model->priv->create_contact_id); - if (model->priv->book_view && model->priv->remove_contact_id) + if (model->priv->client_view && model->priv->remove_contact_id) g_signal_handler_disconnect ( - model->priv->book_view, + model->priv->client_view, model->priv->remove_contact_id); - if (model->priv->book_view && model->priv->modify_contact_id) + if (model->priv->client_view && model->priv->modify_contact_id) g_signal_handler_disconnect ( - model->priv->book_view, + model->priv->client_view, model->priv->modify_contact_id); - if (model->priv->book_view && model->priv->status_message_id) + if (model->priv->client_view && model->priv->status_message_id) g_signal_handler_disconnect ( - model->priv->book_view, + model->priv->client_view, model->priv->status_message_id); - if (model->priv->book_view && model->priv->view_complete_id) + if (model->priv->client_view && model->priv->view_complete_id) g_signal_handler_disconnect ( - model->priv->book_view, + model->priv->client_view, model->priv->view_complete_id); if (model->priv->remove_status_id) g_source_remove (model->priv->remove_status_id); @@ -126,12 +126,19 @@ remove_book_view (EAddressbookModel *model) model->priv->search_in_progress = FALSE; - if (model->priv->book_view) { - e_book_view_stop (model->priv->book_view); - g_object_unref (model->priv->book_view); - model->priv->book_view = NULL; + if (model->priv->client_view) { + GError *error = NULL; - g_signal_emit (model, signals[STATUS_MESSAGE], 0, NULL); + e_book_client_view_stop (model->priv->client_view, &error); + if (error) { + g_debug ("%s: Failed to stop client view: %s", G_STRFUNC, error->message); + g_error_free (error); + } + + g_object_unref (model->priv->client_view); + model->priv->client_view = NULL; + + g_signal_emit (model, signals[STATUS_MESSAGE], 0, NULL, -1); } } @@ -159,9 +166,7 @@ update_folder_bar_message (EAddressbookModel *model) } static void -create_contact (EBookView *book_view, - const GList *contact_list, - EAddressbookModel *model) +view_create_contact_cb (EBookClientView *client_view, const GSList *contact_list, EAddressbookModel *model) { GPtrArray *array; guint count; @@ -193,12 +198,10 @@ sort_descending (gconstpointer ca, } static void -remove_contact (EBookView *book_view, - GList *ids, - EAddressbookModel *model) +view_remove_contact_cb (EBookClientView *client_view, const GSList *ids, EAddressbookModel *model) { /* XXX we should keep a hash around instead of this O(n*m) loop */ - GList *iter; + const GSList *iter; GArray *indices; GPtrArray *array; gint ii; @@ -249,9 +252,7 @@ remove_contact (EBookView *book_view, } static void -modify_contact (EBookView *book_view, - const GList *contact_list, - EAddressbookModel *model) +view_modify_contact_cb (EBookClientView *client_view, const GSList *contact_list, EAddressbookModel *model) { GPtrArray *array; @@ -290,122 +291,109 @@ modify_contact (EBookView *book_view, } static void -status_message (EBookView *book_view, - gchar * status, - EAddressbookModel *model) +view_progress_cb (EBookClientView *client_view, guint percent, const gchar *message, EAddressbookModel *model) { if (model->priv->remove_status_id) g_source_remove (model->priv->remove_status_id); model->priv->remove_status_id = 0; - g_signal_emit (model, signals[STATUS_MESSAGE], 0, status); + g_signal_emit (model, signals[STATUS_MESSAGE], 0, message, percent); } static void -view_complete (EBookView *book_view, - EBookViewStatus status, - const gchar *error_msg, - EAddressbookModel *model) +view_complete_cb (EBookClientView *client_view, const GError *error, EAddressbookModel *model) { model->priv->search_in_progress = FALSE; - status_message (book_view, NULL, model); - g_signal_emit (model, signals[SEARCH_RESULT], 0, status, error_msg); + view_progress_cb (client_view, -1, NULL, model); + g_signal_emit (model, signals[SEARCH_RESULT], 0, error); g_signal_emit (model, signals[STOP_STATE_CHANGED], 0); } static void -writable_status (EBook *book, - gboolean writable, - EAddressbookModel *model) +readonly_cb (EBookClient *book_client, EAddressbookModel *model) { if (!model->priv->editable_set) { - model->priv->editable = writable; + model->priv->editable = !e_client_is_readonly (E_CLIENT (book_client)); - g_signal_emit (model, signals[WRITABLE_STATUS], 0, writable); + g_signal_emit (model, signals[WRITABLE_STATUS], 0, model->priv->editable); } } static void -backend_died (EBook *book, - EAddressbookModel *model) +backend_died_cb (EBookClient *book_client, EAddressbookModel *model) { g_signal_emit (model, signals[BACKEND_DIED], 0); } static void -book_view_loaded (EBook *book, - const GError *error, - EBookView *book_view, - gpointer closure) +client_view_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { - EAddressbookModel *model = closure; + EBookClient *book_client = E_BOOK_CLIENT (source_object); + EBookClientView *client_view = NULL; + EAddressbookModel *model = user_data; + GError *error = NULL; + + if (!e_book_client_get_view_finish (book_client, result, &client_view, &error)) + client_view = NULL; if (error) { eab_error_dialog (NULL, _("Error getting book view"), error); + g_error_free (error); return; } remove_book_view (model); free_data (model); - model->priv->book_view = book_view; - if (model->priv->book_view) - g_object_ref (model->priv->book_view); - - model->priv->create_contact_id = g_signal_connect ( - model->priv->book_view, "contacts-added", - G_CALLBACK (create_contact), model); - model->priv->remove_contact_id = g_signal_connect ( - model->priv->book_view, "contacts-removed", - G_CALLBACK (remove_contact), model); - model->priv->modify_contact_id = g_signal_connect ( - model->priv->book_view, "contacts-changed", - G_CALLBACK (modify_contact), model); - model->priv->status_message_id = g_signal_connect ( - model->priv->book_view, "status-message", - G_CALLBACK (status_message), model); - model->priv->view_complete_id = g_signal_connect ( - model->priv->book_view, "view-complete", - G_CALLBACK (view_complete), model); - - model->priv->search_in_progress = TRUE; + model->priv->client_view = client_view; + if (model->priv->client_view) { + model->priv->create_contact_id = g_signal_connect ( + model->priv->client_view, "objects-added", + G_CALLBACK (view_create_contact_cb), model); + model->priv->remove_contact_id = g_signal_connect ( + model->priv->client_view, "objects-removed", + G_CALLBACK (view_remove_contact_cb), model); + model->priv->modify_contact_id = g_signal_connect ( + model->priv->client_view, "objects-modified", + G_CALLBACK (view_modify_contact_cb), model); + model->priv->status_message_id = g_signal_connect ( + model->priv->client_view, "progress", + G_CALLBACK (view_progress_cb), model); + model->priv->view_complete_id = g_signal_connect ( + model->priv->client_view, "complete", + G_CALLBACK (view_complete_cb), model); + + model->priv->search_in_progress = TRUE; + } + g_signal_emit (model, signals[MODEL_CHANGED], 0); g_signal_emit (model, signals[SEARCH_STARTED], 0); g_signal_emit (model, signals[STOP_STATE_CHANGED], 0); - e_book_view_start (model->priv->book_view); + if (model->priv->client_view) { + e_book_client_view_start (model->priv->client_view, &error); + if (error) { + g_debug ("%s: Failed to start client view: %s", G_STRFUNC, error->message); + g_error_free (error); + } + } } static gboolean addressbook_model_idle_cb (EAddressbookModel *model) { - model->priv->book_view_idle_id = 0; - - if (model->priv->book && model->priv->query) { - ESource *source; - const gchar *limit_str; - gint limit = -1; - - source = e_book_get_source (model->priv->book); - - limit_str = e_source_get_property (source, "limit"); - if (limit_str && *limit_str) - limit = atoi (limit_str); - + model->priv->client_view_idle_id = 0; + + if (model->priv->book_client && model->priv->query_str) { remove_book_view (model); if (model->priv->first_get_view) { - gboolean do_initial_query; - model->priv->first_get_view = FALSE; - do_initial_query = e_book_check_static_capability ( - model->priv->book, "do-initial-query"); - - if (do_initial_query) { - e_book_get_book_view_async ( - model->priv->book, model->priv->query, - NULL, limit, book_view_loaded, model); + if (e_client_check_capability (E_CLIENT (model->priv->book_client), "do-initial-query")) { + e_book_client_get_view ( + model->priv->book_client, model->priv->query_str, + NULL, client_view_ready_cb, model); } else { free_data (model); @@ -415,9 +403,9 @@ addressbook_model_idle_cb (EAddressbookModel *model) model, signals[STOP_STATE_CHANGED], 0); } } else - e_book_get_book_view_async ( - model->priv->book, model->priv->query, - NULL, limit, book_view_loaded, model); + e_book_client_get_view ( + model->priv->book_client, model->priv->query_str, + NULL, client_view_ready_cb, model); } @@ -434,7 +422,7 @@ remove_status_cb (gpointer data) g_return_val_if_fail (model != NULL, FALSE); g_return_val_if_fail (E_IS_ADDRESSBOOK_MODEL (model), FALSE); - g_signal_emit (model, signals[STATUS_MESSAGE], 0, NULL); + g_signal_emit (model, signals[STATUS_MESSAGE], 0, NULL, -1); model->priv->remove_status_id = 0; return FALSE; @@ -447,8 +435,8 @@ addressbook_model_set_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_BOOK: - e_addressbook_model_set_book ( + case PROP_CLIENT: + e_addressbook_model_set_client ( E_ADDRESSBOOK_MODEL (object), g_value_get_object (value)); return; @@ -477,9 +465,9 @@ addressbook_model_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_BOOK: + case PROP_CLIENT: g_value_set_object ( - value, e_addressbook_model_get_book ( + value, e_addressbook_model_get_client ( E_ADDRESSBOOK_MODEL (object))); return; @@ -490,7 +478,7 @@ addressbook_model_get_property (GObject *object, return; case PROP_QUERY: - g_value_take_string ( + g_value_set_string ( value, e_addressbook_model_get_query ( E_ADDRESSBOOK_MODEL (object))); return; @@ -507,26 +495,26 @@ addressbook_model_dispose (GObject *object) remove_book_view (model); free_data (model); - if (model->priv->book) { + if (model->priv->book_client) { if (model->priv->writable_status_id) g_signal_handler_disconnect ( - model->priv->book, + model->priv->book_client, model->priv->writable_status_id); model->priv->writable_status_id = 0; if (model->priv->backend_died_id) g_signal_handler_disconnect ( - model->priv->book, + model->priv->book_client, model->priv->backend_died_id); model->priv->backend_died_id = 0; - g_object_unref (model->priv->book); - model->priv->book = NULL; + g_object_unref (model->priv->book_client); + model->priv->book_client = NULL; } - if (model->priv->query) { - e_book_query_unref (model->priv->query); - model->priv->query = NULL; + if (model->priv->query_str) { + g_free (model->priv->query_str); + model->priv->query_str = NULL; } /* Chain up to parent's dispose() method. */ @@ -562,12 +550,12 @@ addressbook_model_class_init (EAddressbookModelClass *class) g_object_class_install_property ( object_class, - PROP_BOOK, + PROP_CLIENT, g_param_spec_object ( - "book", - "Book", + "client", + "EBookClient", NULL, - E_TYPE_BOOK, + E_TYPE_BOOK_CLIENT, G_PARAM_READWRITE)); g_object_class_install_property ( @@ -607,9 +595,9 @@ addressbook_model_class_init (EAddressbookModelClass *class) G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (EAddressbookModelClass, status_message), NULL, NULL, - g_cclosure_marshal_VOID__POINTER, + e_marshal_VOID__STRING_INT, G_TYPE_NONE, - 1, G_TYPE_POINTER); + 2, G_TYPE_STRING, G_TYPE_INT); signals[SEARCH_STARTED] = g_signal_new ("search_started", @@ -626,8 +614,8 @@ addressbook_model_class_init (EAddressbookModelClass *class) G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (EAddressbookModelClass, search_result), NULL, NULL, - e_marshal_VOID__UINT_STRING, - G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_STRING); + g_cclosure_marshal_VOID__BOXED, + G_TYPE_NONE, 1, G_TYPE_ERROR); signals[FOLDER_BAR_MESSAGE] = g_signal_new ("folder_bar_message", @@ -762,7 +750,7 @@ e_addressbook_model_stop (EAddressbookModel *model) message = _("Search Interrupted"); g_signal_emit (model, signals[STOP_STATE_CHANGED], 0); - g_signal_emit (model, signals[STATUS_MESSAGE], 0, message); + g_signal_emit (model, signals[STATUS_MESSAGE], 0, message, -1); if (!model->priv->remove_status_id) model->priv->remove_status_id = @@ -828,64 +816,64 @@ e_addressbook_model_find (EAddressbookModel *model, return -1; } -EBook * -e_addressbook_model_get_book (EAddressbookModel *model) +EBookClient * +e_addressbook_model_get_client (EAddressbookModel *model) { g_return_val_if_fail (E_IS_ADDRESSBOOK_MODEL (model), NULL); - return model->priv->book; + return model->priv->book_client; } void -e_addressbook_model_set_book (EAddressbookModel *model, - EBook *book) +e_addressbook_model_set_client (EAddressbookModel *model, + EBookClient *book_client) { g_return_if_fail (E_IS_ADDRESSBOOK_MODEL (model)); - g_return_if_fail (E_IS_BOOK (book)); + g_return_if_fail (E_IS_BOOK_CLIENT (book_client)); - if (model->priv->book != NULL) { - if (model->priv->book == book) + if (model->priv->book_client != NULL) { + if (model->priv->book_client == book_client) return; if (model->priv->writable_status_id != 0) g_signal_handler_disconnect ( - model->priv->book, + model->priv->book_client, model->priv->writable_status_id); model->priv->writable_status_id = 0; if (model->priv->backend_died_id != 0) g_signal_handler_disconnect ( - model->priv->book, + model->priv->book_client, model->priv->backend_died_id); model->priv->backend_died_id = 0; - g_object_unref (model->priv->book); + g_object_unref (model->priv->book_client); } - model->priv->book = g_object_ref (book); + model->priv->book_client = g_object_ref (book_client); model->priv->first_get_view = TRUE; model->priv->writable_status_id = g_signal_connect ( - book, "writable-status", - G_CALLBACK (writable_status), model); + book_client, "notify::readonly", + G_CALLBACK (readonly_cb), model); model->priv->backend_died_id = g_signal_connect ( - book, "backend-died", - G_CALLBACK (backend_died), model); + book_client, "backend-died", + G_CALLBACK (backend_died_cb), model); if (!model->priv->editable_set) { - model->priv->editable = e_book_is_writable (book); + model->priv->editable = !e_client_is_readonly (E_CLIENT (book_client)); g_signal_emit ( model, signals[WRITABLE_STATUS], 0, model->priv->editable); } - if (model->priv->book_view_idle_id == 0) - model->priv->book_view_idle_id = g_idle_add ( + if (model->priv->client_view_idle_id == 0) + model->priv->client_view_idle_id = g_idle_add ( (GSourceFunc) addressbook_model_idle_cb, g_object_ref (model)); - g_object_notify (G_OBJECT (model), "book"); + g_object_notify (G_OBJECT (model), "client"); } gboolean @@ -913,10 +901,7 @@ e_addressbook_model_get_query (EAddressbookModel *model) { g_return_val_if_fail (E_IS_ADDRESSBOOK_MODEL (model), NULL); - if (!model->priv->query) - return NULL; - - return e_book_query_to_string (model->priv->query); + return model->priv->query_str; } void @@ -932,31 +917,30 @@ e_addressbook_model_set_query (EAddressbookModel *model, else book_query = e_book_query_from_string (query); + /* also checks whether the query is a valid query string */ if (!book_query) return; - if (model->priv->query != NULL) { - gchar *old_query, *new_query; + if (model->priv->query_str != NULL) { + gchar *new_query; - old_query = e_book_query_to_string (model->priv->query); new_query = e_book_query_to_string (book_query); - if (old_query && new_query && g_str_equal (old_query, new_query)) { - g_free (old_query); + if (new_query && g_str_equal (model->priv->query_str, new_query)) { g_free (new_query); e_book_query_unref (book_query); return; } - g_free (old_query); g_free (new_query); - e_book_query_unref (model->priv->query); } - model->priv->query = book_query; + g_free (model->priv->query_str); + model->priv->query_str = e_book_query_to_string (book_query); + e_book_query_unref (book_query); - if (model->priv->book_view_idle_id == 0) - model->priv->book_view_idle_id = g_idle_add ( + if (model->priv->client_view_idle_id == 0) + model->priv->client_view_idle_id = g_idle_add ( (GSourceFunc) addressbook_model_idle_cb, g_object_ref (model)); diff --git a/addressbook/gui/widgets/e-addressbook-model.h b/addressbook/gui/widgets/e-addressbook-model.h index 44b22df4cd..13d23e92b0 100644 --- a/addressbook/gui/widgets/e-addressbook-model.h +++ b/addressbook/gui/widgets/e-addressbook-model.h @@ -21,9 +21,9 @@ #ifndef E_ADDRESSBOOK_MODEL_H #define E_ADDRESSBOOK_MODEL_H -#include +#include +#include #include -#include /* Standard GObject macros */ #define E_TYPE_ADDRESSBOOK_MODEL \ @@ -63,10 +63,10 @@ struct _EAddressbookModelClass { gboolean writable); void (*search_started) (EAddressbookModel *model); void (*search_result) (EAddressbookModel *model, - EBookViewStatus status, - const gchar *error_msg); + const GError *error); void (*status_message) (EAddressbookModel *model, - const gchar *message); + const gchar *message, + gint percent); void (*folder_bar_message) (EAddressbookModel *model, const gchar *message); void (*contact_added) (EAddressbookModel *model, @@ -101,9 +101,9 @@ EContact * e_addressbook_model_contact_at (EAddressbookModel *model, gint index); gint e_addressbook_model_find (EAddressbookModel *model, EContact *contact); -EBook * e_addressbook_model_get_book (EAddressbookModel *model); -void e_addressbook_model_set_book (EAddressbookModel *model, - EBook *book); +EBookClient * e_addressbook_model_get_client (EAddressbookModel *model); +void e_addressbook_model_set_client (EAddressbookModel *model, + EBookClient *book_client); gboolean e_addressbook_model_get_editable (EAddressbookModel *model); void e_addressbook_model_set_editable (EAddressbookModel *model, gboolean editable); diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index 0561b766b6..680a511d05 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -47,7 +47,7 @@ static EReflowModel *parent_class; enum { PROP_0, - PROP_BOOK, + PROP_CLIENT, PROP_QUERY, PROP_EDITABLE, PROP_MODEL @@ -382,8 +382,7 @@ search_started (EAddressbookModel *model, static void search_result (EAddressbookModel *model, - EBookViewStatus status, - const gchar *error_msg, + const GError *error, EAddressbookReflowAdapter *adapter) { EAddressbookReflowAdapterPrivate *priv = adapter->priv; @@ -403,9 +402,9 @@ addressbook_set_property (GObject *object, EAddressbookReflowAdapterPrivate *priv = adapter->priv; switch (prop_id) { - case PROP_BOOK: + case PROP_CLIENT: g_object_set (priv->model, - "book", g_value_get_object (value), + "client", g_value_get_object (value), NULL); break; case PROP_QUERY: @@ -434,9 +433,9 @@ addressbook_get_property (GObject *object, EAddressbookReflowAdapterPrivate *priv = adapter->priv; switch (prop_id) { - case PROP_BOOK: { + case PROP_CLIENT: { g_object_get_property (G_OBJECT (priv->model), - "book", value); + "client", value); break; } case PROP_QUERY: { @@ -469,11 +468,11 @@ e_addressbook_reflow_adapter_class_init (GObjectClass *object_class) object_class->get_property = addressbook_get_property; object_class->dispose = addressbook_dispose; - g_object_class_install_property (object_class, PROP_BOOK, - g_param_spec_object ("book", - "Book", + g_object_class_install_property (object_class, PROP_CLIENT, + g_param_spec_object ("client", + "EBookClient", NULL, - E_TYPE_BOOK, + E_TYPE_BOOK_CLIENT, G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_QUERY, diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index 76b0e98f74..954b1e19b9 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -25,6 +25,7 @@ #include "e-addressbook-selector.h" #include +#include #include #include @@ -36,11 +37,11 @@ struct _EAddressbookSelectorPrivate { }; struct _MergeContext { - EBook *source_book; - EBook *target_book; + EBookClient *source_client; + EBookClient *target_client; EContact *current_contact; - GList *remaining_contacts; + GSList *remaining_contacts; guint pending_removals; gboolean pending_adds; @@ -62,7 +63,7 @@ static gpointer parent_class; static void merge_context_next (MergeContext *merge_context) { - GList *list; + GSList *list; merge_context->current_contact = NULL; if (!merge_context->remaining_contacts) @@ -70,20 +71,20 @@ merge_context_next (MergeContext *merge_context) list = merge_context->remaining_contacts; merge_context->current_contact = list->data; - list = g_list_delete_link (list, list); + list = g_slist_delete_link (list, list); merge_context->remaining_contacts = list; } static MergeContext * -merge_context_new (EBook *source_book, - EBook *target_book, - GList *contact_list) +merge_context_new (EBookClient *source_client, + EBookClient *target_client, + GSList *contact_list) { MergeContext *merge_context; merge_context = g_slice_new0 (MergeContext); - merge_context->source_book = source_book; - merge_context->target_book = target_book; + merge_context->source_client = source_client; + merge_context->target_client = target_client; merge_context->remaining_contacts = contact_list; merge_context_next (merge_context); @@ -93,20 +94,28 @@ merge_context_new (EBook *source_book, static void merge_context_free (MergeContext *merge_context) { - if (merge_context->source_book != NULL) - g_object_unref (merge_context->source_book); + if (merge_context->source_client != NULL) + g_object_unref (merge_context->source_client); - if (merge_context->target_book != NULL) - g_object_unref (merge_context->target_book); + if (merge_context->target_client != NULL) + g_object_unref (merge_context->target_client); g_slice_free (MergeContext, merge_context); } static void -addressbook_selector_removed_cb (EBook *book, - const GError *error, - MergeContext *merge_context) +addressbook_selector_removed_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { + EBookClient *book_client = E_BOOK_CLIENT (source_object); + MergeContext *merge_context = user_data; + GError *error = NULL; + + e_book_client_remove_contact_finish (book_client, result, &error); + if (error) { + g_debug ("%s: Failed to remove contact: %s", G_STRFUNC, error->message); + g_error_free (error); + } + merge_context->pending_removals--; if (merge_context->pending_adds) @@ -119,18 +128,19 @@ addressbook_selector_removed_cb (EBook *book, } static void -addressbook_selector_merge_next_cb (EBook *book, +addressbook_selector_merge_next_cb (EBookClient *book_client, const GError *error, const gchar *id, - MergeContext *merge_context) + gpointer closure) { + MergeContext *merge_context = closure; + if (merge_context->remove_from_source && !error) { /* Remove previous contact from source. */ - e_book_remove_contact_async ( - merge_context->source_book, - merge_context->current_contact, - (EBookAsyncCallback) addressbook_selector_removed_cb, - merge_context); + e_book_client_remove_contact ( + merge_context->source_client, + merge_context->current_contact, NULL, + addressbook_selector_removed_cb, merge_context); merge_context->pending_removals++; } @@ -139,10 +149,9 @@ addressbook_selector_merge_next_cb (EBook *book, if (merge_context->remaining_contacts != NULL) { merge_context_next (merge_context); eab_merging_book_add_contact ( - merge_context->target_book, + merge_context->target_client, merge_context->current_contact, - (EBookIdAsyncCallback) addressbook_selector_merge_next_cb, - merge_context); + addressbook_selector_merge_next_cb, merge_context); } else if (merge_context->pending_removals == 0) { merge_context_free (merge_context); @@ -242,6 +251,39 @@ addressbook_selector_constructed (GObject *object) G_OBJECT_CLASS (parent_class)->constructed (object); } +static void +target_client_open_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +{ + ESource *source = E_SOURCE (source_object); + MergeContext *merge_context = user_data; + EClient *client = NULL; + GError *error = NULL; + + g_return_if_fail (merge_context != NULL); + + if (!e_client_utils_open_new_finish (source, result, &client, &error)) + client = NULL; + + if (error) { + g_debug ("%s: Failed to open targer client: %s", G_STRFUNC, error->message); + g_error_free (error); + } + + merge_context->target_client = client ? E_BOOK_CLIENT (client) : NULL; + + if (!merge_context->target_client) { + g_slist_foreach (merge_context->remaining_contacts, (GFunc) g_object_unref, NULL); + g_slist_free (merge_context->remaining_contacts); + + merge_context_free (merge_context); + return; + } + + eab_merging_book_add_contact ( + merge_context->target_client, merge_context->current_contact, + addressbook_selector_merge_next_cb, merge_context); +} + static gboolean addressbook_selector_data_dropped (ESourceSelector *selector, GtkSelectionData *selection_data, @@ -252,9 +294,8 @@ addressbook_selector_data_dropped (ESourceSelector *selector, EAddressbookSelectorPrivate *priv; MergeContext *merge_context; EAddressbookModel *model; - EBook *source_book; - EBook *target_book; - GList *list; + EBookClient *source_client = NULL; + GSList *list; const gchar *string; gboolean remove_from_source; @@ -264,30 +305,26 @@ addressbook_selector_data_dropped (ESourceSelector *selector, string = (const gchar *) gtk_selection_data_get_data (selection_data); remove_from_source = (action == GDK_ACTION_MOVE); - target_book = e_book_new (destination, NULL); - if (target_book == NULL) - return FALSE; - - e_book_open (target_book, FALSE, NULL); - /* XXX Function assumes both out arguments are provided. All we - * care about is the contact list; source_book will be NULL. */ - eab_book_and_contact_list_from_string (string, &source_book, &list); + * care about is the contact list; source_client will be NULL. */ + eab_book_and_contact_list_from_string (string, &source_client, &list); + if (source_client) + g_object_unref (source_client); + if (list == NULL) return FALSE; model = e_addressbook_view_get_model (priv->current_view); - source_book = e_addressbook_model_get_book (model); - g_return_val_if_fail (E_IS_BOOK (source_book), FALSE); + source_client = e_addressbook_model_get_client (model); + g_return_val_if_fail (E_IS_BOOK_CLIENT (source_client), FALSE); - merge_context = merge_context_new (source_book, target_book, list); + merge_context = merge_context_new (g_object_ref (source_client), NULL, list); merge_context->remove_from_source = remove_from_source; merge_context->pending_adds = TRUE; - eab_merging_book_add_contact ( - target_book, merge_context->current_contact, - (EBookIdAsyncCallback) addressbook_selector_merge_next_cb, - merge_context); + e_client_utils_open_new (destination, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, + e_client_utils_authenticate_handler, NULL, + target_client_open_ready_cb, merge_context); return TRUE; } diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index e246118d3a..e47b5bb186 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -25,6 +25,9 @@ #include #include + +#include + #include "e-addressbook-model.h" #include "e-addressbook-table-adapter.h" #include "eab-contact-merging.h" @@ -145,7 +148,7 @@ addressbook_value_at (ETableModel *etc, gint col, gint row) /* This function sets the value at a particular point in our ETableModel. */ static void -contact_modified_cb (EBook* book, +contact_modified_cb (EBookClient *book_client, const GError *error, gpointer user_data) { @@ -182,8 +185,8 @@ addressbook_set_value_at (ETableModel *etc, gint col, gint row, gconstpointer va } e_contact_set (contact, col, (gpointer) val); - eab_merging_book_commit_contact ( - e_addressbook_model_get_book (priv->model), + eab_merging_book_modify_contact ( + e_addressbook_model_get_client (priv->model), contact, contact_modified_cb, etc); g_object_unref (contact); @@ -227,7 +230,7 @@ addressbook_append_row (ETableModel *etm, ETableModel *source, gint row) EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etm); EAddressbookTableAdapterPrivate *priv = adapter->priv; EContact *contact; - EBook *book; + EBookClient *book_client; gint col; contact = e_contact_new (); @@ -237,8 +240,8 @@ addressbook_append_row (ETableModel *etm, ETableModel *source, gint row) e_contact_set (contact, col, (gpointer) val); } - book = e_addressbook_model_get_book (priv->model); - eab_merging_book_add_contact (book, contact, NULL, NULL); + book_client = e_addressbook_model_get_client (priv->model); + eab_merging_book_add_contact (book_client, contact, NULL, NULL); g_object_unref (contact); } diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.h b/addressbook/gui/widgets/e-addressbook-table-adapter.h index 71999bd4d1..17cf4cfadb 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.h +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.h @@ -22,8 +22,6 @@ #define _EAB_TABLE_ADAPTER_H_ #include
"); @@ -640,12 +701,16 @@ render_contact_vertical (GString *buffer, EContact *contact) g_string_append (buffer, ""); render_work_block (buffer, contact); g_string_append (buffer, "
"); + if (show_maps) + render_address_map (buffer, contact, E_CONTACT_ADDRESS_WORK); g_string_append (buffer, "
"); render_personal_block (buffer, contact); g_string_append (buffer, "
"); + if (show_maps) + render_address_map (buffer, contact, E_CONTACT_ADDRESS_HOME); g_string_append (buffer, "
-#include -#include #define E_TYPE_AB_TABLE_ADAPTER (eab_table_adapter_get_type ()) #define EAB_TABLE_ADAPTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_AB_TABLE_ADAPTER, EAddressbookTableAdapter)) diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 321a9fd949..00f106ea40 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -64,10 +64,9 @@ #define d(x) static void status_message (EAddressbookView *view, - const gchar *status); + const gchar *status, gint percent); static void search_result (EAddressbookView *view, - EBookViewStatus status, - const gchar *error_msg); + const GError *error); static void folder_bar_message (EAddressbookView *view, const gchar *status); static void stop_state_changed (GObject *object, @@ -240,8 +239,8 @@ table_drag_data_get (ETable *table, { EAddressbookView *view = user_data; EAddressbookModel *model; - EBook *book; - GList *contact_list; + EBookClient *book_client; + GSList *contact_list; GdkAtom target; gchar *value; @@ -249,7 +248,7 @@ table_drag_data_get (ETable *table, return; model = e_addressbook_view_get_model (view); - book = e_addressbook_model_get_book (model); + book_client = e_addressbook_model_get_client (model); contact_list = e_addressbook_view_get_selected (view); target = gtk_selection_data_get_target (selection_data); @@ -267,7 +266,7 @@ table_drag_data_get (ETable *table, case DND_TARGET_TYPE_SOURCE_VCARD: value = eab_book_and_contact_list_to_string ( - book, contact_list); + book_client, contact_list); gtk_selection_data_set ( selection_data, target, 8, @@ -277,8 +276,7 @@ table_drag_data_get (ETable *table, break; } - g_list_foreach (contact_list, (GFunc) g_object_unref, NULL); - g_list_free (contact_list); + e_client_util_free_object_slist (contact_list); } static void @@ -668,7 +666,7 @@ addressbook_view_copy_clipboard (ESelectable *selectable) { EAddressbookView *view; GtkClipboard *clipboard; - GList *contact_list; + GSList *contact_list; gchar *string; view = E_ADDRESSBOOK_VIEW (selectable); @@ -680,18 +678,17 @@ addressbook_view_copy_clipboard (ESelectable *selectable) e_clipboard_set_directory (clipboard, string, -1); g_free (string); - g_list_foreach (contact_list, (GFunc) g_object_unref, NULL); - g_list_free (contact_list); + e_client_util_free_object_slist (contact_list); } static void addressbook_view_paste_clipboard (ESelectable *selectable) { - EBook *book; + EBookClient *book_client; EAddressbookView *view; EAddressbookModel *model; GtkClipboard *clipboard; - GList *contact_list, *iter; + GSList *contact_list, *iter; gchar *string; view = E_ADDRESSBOOK_VIEW (selectable); @@ -701,7 +698,7 @@ addressbook_view_paste_clipboard (ESelectable *selectable) return; model = e_addressbook_view_get_model (view); - book = e_addressbook_model_get_book (model); + book_client = e_addressbook_model_get_client (model); string = e_clipboard_wait_for_directory (clipboard); contact_list = eab_contact_list_from_string (string); @@ -710,11 +707,10 @@ addressbook_view_paste_clipboard (ESelectable *selectable) for (iter = contact_list; iter != NULL; iter = iter->next) { EContact *contact = iter->data; - eab_merging_book_add_contact (book, contact, NULL, NULL); + eab_merging_book_add_contact (book_client, contact, NULL, NULL); } - g_list_foreach (contact_list, (GFunc) g_object_unref, NULL); - g_list_free (contact_list); + e_client_util_free_object_slist (contact_list); } static void @@ -979,14 +975,14 @@ e_addressbook_view_get_view_object (EAddressbookView *view) static void add_to_list (gint model_row, gpointer closure) { - GList **list = closure; - *list = g_list_prepend (*list, GINT_TO_POINTER (model_row)); + GSList **list = closure; + *list = g_slist_prepend (*list, GINT_TO_POINTER (model_row)); } -GList * +GSList * e_addressbook_view_get_selected (EAddressbookView *view) { - GList *list, *iter; + GSList *list, *iter; ESelectionModel *selection; g_return_val_if_fail (E_IS_ADDRESSBOOK_VIEW (view), NULL); @@ -998,9 +994,7 @@ e_addressbook_view_get_selected (EAddressbookView *view) for (iter = list; iter != NULL; iter = iter->next) iter->data = e_addressbook_model_get_contact ( view->priv->model, GPOINTER_TO_INT (iter->data)); - list = g_list_reverse (list); - - return list; + return g_slist_reverse (list); } ESelectionModel * @@ -1064,8 +1058,7 @@ e_addressbook_view_get_paste_target_list (EAddressbookView *view) } static void -status_message (EAddressbookView *view, - const gchar *status) +status_message (EAddressbookView *view, const gchar *status, gint percent) { EActivity *activity; EShellView *shell_view; @@ -1086,16 +1079,19 @@ status_message (EAddressbookView *view, activity = e_activity_new (); view->priv->activity = activity; e_activity_set_text (activity, status); + if (percent >= 0) + e_activity_set_percent (activity, percent); e_shell_backend_add_activity (shell_backend, activity); - - } else + } else { e_activity_set_text (activity, status); + if (percent >= 0) + e_activity_set_percent (activity, percent); + } } static void search_result (EAddressbookView *view, - EBookViewStatus status, - const gchar *error_msg) + const GError *error) { EShellView *shell_view; EAlertSink *alert_sink; @@ -1103,7 +1099,7 @@ search_result (EAddressbookView *view, shell_view = e_addressbook_view_get_shell_view (view); alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); - eab_search_result_dialog (alert_sink, status, error_msg); + eab_search_result_dialog (alert_sink, error); } static void @@ -1143,17 +1139,17 @@ backend_died (EAddressbookView *view) EShellView *shell_view; EAlertSink *alert_sink; EAddressbookModel *model; - EBook *book; + EBookClient *book_client; shell_view = e_addressbook_view_get_shell_view (view); alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); model = e_addressbook_view_get_model (view); - book = e_addressbook_model_get_book (model); + book_client = e_addressbook_model_get_client (model); e_alert_submit (alert_sink, "addressbook:backend-died", - e_book_get_uri (book), NULL); + e_client_get_uri (E_CLIENT (book_client)), NULL); } static void @@ -1215,31 +1211,29 @@ e_addressbook_view_print (EAddressbookView *view, /* Print the selected contacts. */ if (GAL_IS_VIEW_MINICARD (gal_view) && selection_only) { - GList *contact_list; + GSList *contact_list; contact_list = e_addressbook_view_get_selected (view); e_contact_print (NULL, NULL, contact_list, action); - g_list_foreach (contact_list, (GFunc) g_object_unref, NULL); - g_list_free (contact_list); + e_client_util_free_object_slist (contact_list); /* Print the latest query results. */ } else if (GAL_IS_VIEW_MINICARD (gal_view)) { EAddressbookModel *model; - EBook *book; + EBookClient *book_client; EBookQuery *query; - gchar *query_string; + const gchar *query_string; model = e_addressbook_view_get_model (view); - book = e_addressbook_model_get_book (model); + book_client = e_addressbook_model_get_client (model); query_string = e_addressbook_model_get_query (model); if (query_string != NULL) query = e_book_query_from_string (query_string); else query = NULL; - g_free (query_string); - e_contact_print (book, query, NULL, action); + e_contact_print (book_client, query, NULL, action); if (query != NULL) e_book_query_unref (query); @@ -1259,26 +1253,51 @@ e_addressbook_view_print (EAddressbookView *view, } } +static void +report_and_free_error_if_any (GError *error) +{ + if (!error) + return; + + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + g_error_free (error); + return; + } + + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_PERMISSION_DENIED)) { + e_alert_run_dialog_for_args (e_shell_get_active_window (NULL), + "addressbook:contact-delete-error-perm", + NULL); + } else { + eab_error_dialog (NULL, _("Failed to delete contact"), error); + } + + g_error_free (error); +} + /* callback function to handle removal of contacts for * which a user doesnt have write permission */ static void -delete_contacts_cb (EBook *book, const GError *error, gpointer closure) +remove_contacts_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { - switch (error ? error->code : E_BOOK_ERROR_OK) { - case E_BOOK_ERROR_OK : - case E_BOOK_ERROR_CANCELLED : - break; - case E_BOOK_ERROR_PERMISSION_DENIED : - e_alert_run_dialog_for_args (e_shell_get_active_window (NULL), - "addressbook:contact-delete-error-perm", - NULL); - break; - default : - /* Unknown error */ - eab_error_dialog (NULL, _("Failed to delete contact"), error); - break; - } + EBookClient *book_client = E_BOOK_CLIENT (source_object); + GError *error = NULL; + + e_book_client_remove_contacts_finish (book_client, result, &error); + + report_and_free_error_if_any (error); +} + +static void +remove_contact_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +{ + EBookClient *book_client = E_BOOK_CLIENT (source_object); + GError *error = NULL; + + e_book_client_remove_contact_finish (book_client, result, &error); + + report_and_free_error_if_any (error); } static gboolean @@ -1340,12 +1359,12 @@ addressbook_view_confirm_delete (GtkWindow *parent, void e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) { - GList *list, *l; + GSList *list, *l; gboolean plural = FALSE, is_list = FALSE; EContact *contact; ETable *etable = NULL; EAddressbookModel *model; - EBook *book; + EBookClient *book_client; ESelectionModel *selection_model = NULL; GalViewInstance *view_instance; GalView *gal_view; @@ -1354,7 +1373,7 @@ e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) gint row = 0, select; model = e_addressbook_view_get_model (view); - book = e_addressbook_model_get_book (model); + book_client = e_addressbook_model_get_client (model); view_instance = e_addressbook_view_get_view_instance (view); gal_view = gal_view_instance_get_current_view (view_instance); @@ -1362,7 +1381,7 @@ e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) list = e_addressbook_view_get_selected (view); contact = list->data; - if (g_list_next (list)) + if (g_slist_next (list)) plural = TRUE; else name = e_contact_get (contact, E_CONTACT_FILE_AS); @@ -1387,38 +1406,29 @@ e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))), plural, is_list, name)) { g_free (name); - g_list_foreach (list, (GFunc) g_object_unref, NULL); - g_list_free (list); + e_client_util_free_object_slist (list); return; } - if (e_book_check_static_capability (book, "bulk-remove")) { - GList *ids = NULL; + if (e_client_check_capability (E_CLIENT (book_client), "bulk-remove")) { + GSList *ids = NULL; - for (l=list;l;l=g_list_next (l)) { + for (l = list; l; l = g_slist_next (l)) { contact = l->data; - ids = g_list_prepend ( - ids, (gchar *) e_contact_get_const ( - contact, E_CONTACT_UID)); + ids = g_slist_prepend (ids, (gpointer) e_contact_get_const (contact, E_CONTACT_UID)); } /* Remove the cards all at once. */ - e_book_remove_contacts_async (book, - ids, - delete_contacts_cb, - NULL); + e_book_client_remove_contacts (book_client, ids, NULL, remove_contacts_cb, NULL); - g_list_free (ids); - } - else { - for (l=list;l;l=g_list_next (l)) { + g_slist_free (ids); + } else { + for (l = list; l; l = g_slist_next (l)) { contact = l->data; + /* Remove the card. */ - e_book_remove_contact_async (book, - contact, - delete_contacts_cb, - NULL); + e_book_client_remove_contact (book_client, contact, NULL, remove_contact_cb, NULL); } } @@ -1449,21 +1459,20 @@ e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) row = e_table_view_to_model_row (E_TABLE (etable), select); e_table_set_cursor_row (E_TABLE (etable), row); } - g_list_foreach (list, (GFunc) g_object_unref, NULL); - g_list_free (list); + e_client_util_free_object_slist (list); } void e_addressbook_view_view (EAddressbookView *view) { - GList *list, *iter; + GSList *list, *iter; gint response; guint length; g_return_if_fail (E_IS_ADDRESSBOOK_VIEW (view)); list = e_addressbook_view_get_selected (view); - length = g_list_length (list); + length = g_slist_length (list); response = GTK_RESPONSE_YES; if (length > 5) { @@ -1495,8 +1504,7 @@ e_addressbook_view_view (EAddressbookView *view) addressbook_view_emit_open_contact ( view, iter->data, FALSE); - g_list_foreach (list, (GFunc) g_object_unref, NULL); - g_list_free (list); + e_client_util_free_object_slist (list); } void @@ -1515,42 +1523,78 @@ e_addressbook_view_stop (EAddressbookView *view) e_addressbook_model_stop (view->priv->model); } +struct TransferContactsData +{ + gboolean delete_from_source; + EAddressbookView *view; +}; + static void -view_transfer_contacts (EAddressbookView *view, - gboolean delete_from_source, - gboolean all) +all_contacts_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { - EBook *book; - GList *contacts = NULL; + EBookClient *book_client = E_BOOK_CLIENT (source_object); + struct TransferContactsData *tcd = user_data; EShellView *shell_view; EAlertSink *alert_sink; + GSList *contacts = NULL; + GError *error = NULL; - book = e_addressbook_model_get_book (view->priv->model); - shell_view = e_addressbook_view_get_shell_view (view); + g_return_if_fail (book_client != NULL); + g_return_if_fail (tcd != NULL); + + if (!e_book_client_get_contacts_finish (book_client, result, &contacts, &error)) + contacts = NULL; + + shell_view = e_addressbook_view_get_shell_view (tcd->view); alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); + if (error) { + e_alert_submit ( + alert_sink, "addressbook:search-error", + error->message, NULL); + g_error_free (error); + } else if (contacts) { + eab_transfer_contacts (book_client, contacts, tcd->delete_from_source, alert_sink); + } + + g_object_unref (tcd->view); + g_free (tcd); +} + +static void +view_transfer_contacts (EAddressbookView *view, + gboolean delete_from_source, + gboolean all) +{ + EBookClient *book_client; + + book_client = e_addressbook_model_get_client (view->priv->model); + if (all) { EBookQuery *query; - GError *error = NULL; + gchar *query_str; + struct TransferContactsData *tcd; query = e_book_query_any_field_contains (""); - e_book_get_contacts (book, query, &contacts, &error); + query_str = e_book_query_to_string (query); e_book_query_unref (query); - if (error) { - e_alert_submit ( - alert_sink, "addressbook:search-error", - error->message, NULL); - g_error_free (error); - return; - } + tcd = g_new0 (struct TransferContactsData, 1); + tcd->delete_from_source = delete_from_source; + tcd->view = g_object_ref (view); + + e_book_client_get_contacts (book_client, query_str, NULL, all_contacts_ready_cb, tcd); } else { - contacts = e_addressbook_view_get_selected (view); - } + GSList *contacts = NULL; + EShellView *shell_view; + EAlertSink *alert_sink; - eab_transfer_contacts (book, contacts, delete_from_source, alert_sink); + shell_view = e_addressbook_view_get_shell_view (view); + alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); + contacts = e_addressbook_view_get_selected (view); - g_object_unref (book); + eab_transfer_contacts (book_client, contacts, delete_from_source, alert_sink); + } } void diff --git a/addressbook/gui/widgets/e-addressbook-view.h b/addressbook/gui/widgets/e-addressbook-view.h index 4b85293cd5..1ccfba99b3 100644 --- a/addressbook/gui/widgets/e-addressbook-view.h +++ b/addressbook/gui/widgets/e-addressbook-view.h @@ -23,7 +23,7 @@ #ifndef E_ADDRESSBOOK_VIEW_H #define E_ADDRESSBOOK_VIEW_H -#include +#include #include #include @@ -73,8 +73,6 @@ struct _EAddressbookViewClass { gboolean is_new_contact); void (*popup_event) (EAddressbookView *view, GdkEvent *event); - void (*status_message) (EAddressbookView *view, - const gchar *message); void (*command_state_change) (EAddressbookView *view); void (*selection_change) (EAddressbookView *view); }; @@ -89,7 +87,7 @@ GalViewInstance * (EAddressbookView *view); GObject * e_addressbook_view_get_view_object (EAddressbookView *view); -GList * e_addressbook_view_get_selected (EAddressbookView *view); +GSList * e_addressbook_view_get_selected (EAddressbookView *view); ESelectionModel * e_addressbook_view_get_selection_model (EAddressbookView *view); diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index 4421b1a739..65fa12d9f1 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -63,7 +63,7 @@ static gpointer parent_class; /* The arguments we take */ enum { PROP_0, - PROP_BOOK, + PROP_CLIENT, PROP_QUERY, PROP_EDITABLE, PROP_COLUMN_WIDTH @@ -132,11 +132,11 @@ e_minicard_view_widget_class_init (EMinicardViewWidgetClass *class) class->column_width_changed = NULL; class->right_click = NULL; - g_object_class_install_property (object_class, PROP_BOOK, - g_param_spec_object ("book", - "Book", + g_object_class_install_property (object_class, PROP_CLIENT, + g_param_spec_object ("client", + "EBookClient", NULL, - E_TYPE_BOOK, + E_TYPE_BOOK_CLIENT, G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_QUERY, @@ -211,7 +211,7 @@ e_minicard_view_widget_init (EMinicardViewWidget *view) { view->emv = NULL; - view->book = NULL; + view->book_client = NULL; view->query = NULL; view->editable = FALSE; view->column_width = 225; @@ -240,18 +240,18 @@ e_minicard_view_widget_set_property (GObject *object, emvw = E_MINICARD_VIEW_WIDGET (object); switch (prop_id) { - case PROP_BOOK: - if (emvw->book) - g_object_unref (emvw->book); + case PROP_CLIENT: + if (emvw->book_client) + g_object_unref (emvw->book_client); if (g_value_get_object (value)) { - emvw->book = E_BOOK (g_value_get_object (value)); - if (emvw->book) - g_object_ref (emvw->book); + emvw->book_client = E_BOOK_CLIENT (g_value_get_object (value)); + if (emvw->book_client) + g_object_ref (emvw->book_client); } else - emvw->book = NULL; + emvw->book_client = NULL; if (emvw->emv) g_object_set (emvw->emv, - "book", emvw->book, + "client", emvw->book_client, NULL); break; case PROP_QUERY: @@ -293,8 +293,8 @@ e_minicard_view_widget_get_property (GObject *object, emvw = E_MINICARD_VIEW_WIDGET (object); switch (prop_id) { - case PROP_BOOK: - g_value_set_object (value, emvw->book); + case PROP_CLIENT: + g_value_set_object (value, emvw->book_client); break; case PROP_QUERY: g_value_set_string (value, emvw->query); @@ -316,9 +316,9 @@ e_minicard_view_widget_dispose (GObject *object) { EMinicardViewWidget *view = E_MINICARD_VIEW_WIDGET (object); - if (view->book) { - g_object_unref (view->book); - view->book = NULL; + if (view->book_client) { + g_object_unref (view->book_client); + view->book_client = NULL; } if (view->query) { g_free (view->query); diff --git a/addressbook/gui/widgets/e-minicard-view-widget.h b/addressbook/gui/widgets/e-minicard-view-widget.h index ab5bda2881..aea68bd5db 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.h +++ b/addressbook/gui/widgets/e-minicard-view-widget.h @@ -24,7 +24,7 @@ #define __E_MINICARD_VIEW_WIDGET_H__ #include -#include +#include #include "e-minicard-view.h" G_BEGIN_DECLS @@ -47,7 +47,7 @@ struct _EMinicardViewWidget EAddressbookReflowAdapter *adapter; - EBook *book; + EBookClient *book_client; gchar *query; guint editable : 1; diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index a00b03816c..91a4a12991 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -24,6 +24,8 @@ #include #endif +#include + #include "e-minicard-view.h" #include "eab-gui-util.h" @@ -52,7 +54,7 @@ static EReflowClass *parent_class = NULL; enum { PROP_0, PROP_ADAPTER, - PROP_BOOK, + PROP_CLIENT, PROP_QUERY, PROP_EDITABLE }; @@ -105,15 +107,17 @@ e_minicard_view_drag_data_get (GtkWidget *widget, break; } case DND_TARGET_TYPE_SOURCE_VCARD_LIST: { - EBook *book; + EBookClient *book_client = NULL; gchar *value; - g_object_get (view->adapter, "book", &book, NULL); - value = eab_book_and_contact_list_to_string (book, view->drag_list); + g_object_get (view->adapter, "book_client", &book_client, NULL); + value = eab_book_and_contact_list_to_string (book_client, view->drag_list); gtk_selection_data_set ( selection_data, target, 8, (guchar *) value, strlen (value)); + + g_object_unref (book_client); g_free (value); break; } @@ -123,8 +127,7 @@ e_minicard_view_drag_data_get (GtkWidget *widget, static void clear_drag_data (EMinicardView *view) { - g_list_foreach (view->drag_list, (GFunc) g_object_unref, NULL); - g_list_free (view->drag_list); + e_client_util_free_object_slist (view->drag_list); view->drag_list = NULL; } @@ -141,7 +144,7 @@ e_minicard_view_drag_begin (EAddressbookReflowAdapter *adapter, view->drag_list = e_minicard_view_get_card_list (view); - g_print ("dragging %d card(s)\n", g_list_length (view->drag_list)); + g_print ("dragging %d card(s)\n", g_slist_length (view->drag_list)); target_list = gtk_target_list_new (drag_types, G_N_ELEMENTS (drag_types)); @@ -163,21 +166,26 @@ set_empty_message (EMinicardView *view) { gchar *empty_message; gboolean editable = FALSE, perform_initial_query = FALSE, searching = FALSE; - EBook *book; if (view->adapter) { EAddressbookModel *model = NULL; + EBookClient *book_client = NULL; g_object_get (view->adapter, "editable", &editable, "model", &model, - "book", &book, + "client", &book_client, NULL); - if (book && !e_book_check_static_capability (book, "do-initial-query")) + if (book_client && !e_client_check_capability (E_CLIENT (book_client), "do-initial-query")) perform_initial_query = TRUE; searching = model && e_addressbook_model_can_stop (model); + + if (book_client) + g_object_unref (book_client); + if (model) + g_object_unref (model); } if (searching) { @@ -277,9 +285,9 @@ e_minicard_view_set_property (GObject *object, } break; - case PROP_BOOK: + case PROP_CLIENT: g_object_set (view->adapter, - "book", g_value_get_object (value), + "client", g_value_get_object (value), NULL); set_empty_message (view); break; @@ -314,9 +322,9 @@ e_minicard_view_get_property (GObject *object, case PROP_ADAPTER: g_value_set_object (value, view->adapter); break; - case PROP_BOOK: + case PROP_CLIENT: g_object_get_property (G_OBJECT (view->adapter), - "book", value); + "client", value); break; case PROP_QUERY: g_object_get_property (G_OBJECT (view->adapter), @@ -455,33 +463,6 @@ e_minicard_view_selection_event (EReflow *reflow, return return_val; } -typedef struct { - EMinicardView *view; - EBookAsyncCallback cb; - gpointer closure; -} ViewCbClosure; - -static void -do_remove (gint i, gpointer user_data) -{ - EBook *book; - EContact *contact; - ViewCbClosure *viewcbclosure = user_data; - EMinicardView *view = viewcbclosure->view; - EBookAsyncCallback cb = viewcbclosure->cb; - gpointer closure = viewcbclosure->closure; - - g_object_get (view->adapter, - "book", &book, - NULL); - - contact = e_addressbook_reflow_adapter_get_contact (view->adapter, i); - - e_book_remove_contact_async (book, contact, cb, closure); - - g_object_unref (contact); -} - #if 0 static gint compare_to_utf_str (EMinicard *card, const gchar *utf_str) @@ -532,11 +513,11 @@ e_minicard_view_class_init (EMinicardViewClass *klass) E_TYPE_ADDRESSBOOK_REFLOW_ADAPTER, G_PARAM_READWRITE)); - g_object_class_install_property (object_class, PROP_BOOK, - g_param_spec_object ("book", - "Book", + g_object_class_install_property (object_class, PROP_CLIENT, + g_param_spec_object ("client", + "EBookClient", NULL, - E_TYPE_BOOK, + E_TYPE_BOOK_CLIENT, G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_QUERY, @@ -624,21 +605,6 @@ e_minicard_view_get_type (void) return reflow_type; } -void -e_minicard_view_remove_selection (EMinicardView *view, - EBookAsyncCallback cb, - gpointer closure) -{ - ViewCbClosure viewcbclosure; - viewcbclosure.view = view; - viewcbclosure.cb = cb; - viewcbclosure.closure = closure; - - e_selection_model_foreach (E_REFLOW (view)->selection, - do_remove, - &viewcbclosure); -} - void e_minicard_view_jump_to_letter (EMinicardView *view, gunichar letter) @@ -654,7 +620,7 @@ e_minicard_view_jump_to_letter (EMinicardView *view, } typedef struct { - GList *list; + GSList *list; EAddressbookReflowAdapter *adapter; } ModelAndList; @@ -662,12 +628,12 @@ static void add_to_list (gint index, gpointer closure) { ModelAndList *mal = closure; - mal->list = g_list_prepend ( + mal->list = g_slist_prepend ( mal->list, e_addressbook_reflow_adapter_get_contact ( mal->adapter, index)); } -GList * +GSList * e_minicard_view_get_card_list (EMinicardView *view) { ModelAndList mal; @@ -677,8 +643,7 @@ e_minicard_view_get_card_list (EMinicardView *view) e_selection_model_foreach (E_REFLOW (view)->selection, add_to_list, &mal); - mal.list = g_list_reverse (mal.list); - return mal.list; + return g_slist_reverse (mal.list); } void diff --git a/addressbook/gui/widgets/e-minicard-view.h b/addressbook/gui/widgets/e-minicard-view.h index 8b37ba6df5..1024a85088 100644 --- a/addressbook/gui/widgets/e-minicard-view.h +++ b/addressbook/gui/widgets/e-minicard-view.h @@ -28,7 +28,6 @@ #include #include -#include #include "e-addressbook-reflow-adapter.h" G_BEGIN_DECLS @@ -69,7 +68,7 @@ struct _EMinicardView /* item specific fields */ - GList *drag_list; + GSList *drag_list; guint canvas_drag_data_get_id; guint writable_status_id; @@ -84,12 +83,9 @@ struct _EMinicardViewClass }; GType e_minicard_view_get_type (void); -void e_minicard_view_remove_selection (EMinicardView *view, - EBookAsyncCallback cb, - gpointer closure); void e_minicard_view_jump_to_letter (EMinicardView *view, gunichar letter); -GList *e_minicard_view_get_card_list (EMinicardView *view); +GSList *e_minicard_view_get_card_list (EMinicardView *view); void e_minicard_view_create_contact (EMinicardView *view); void e_minicard_view_create_contact_list (EMinicardView *view); diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 98cf1c2f98..352604984c 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -32,7 +32,6 @@ #include #include #include -#include #include "eab-gui-util.h" #include "e-minicard.h" #include "e-minicard-label.h" diff --git a/addressbook/gui/widgets/ea-minicard-view.c b/addressbook/gui/widgets/ea-minicard-view.c index 6850813ca7..a61c6074a0 100644 --- a/addressbook/gui/widgets/ea-minicard-view.c +++ b/addressbook/gui/widgets/ea-minicard-view.c @@ -148,7 +148,7 @@ ea_minicard_view_get_name (AtkObject *accessible) EReflow *reflow; gchar *string; EMinicardView *card_view; - EBook *book = NULL; + EBookClient *book_client = NULL; const gchar *source_name; g_return_val_if_fail (EA_IS_MINICARD_VIEW (accessible), NULL); @@ -161,9 +161,9 @@ ea_minicard_view_get_name (AtkObject *accessible) /* Get the current name of minicard view*/ card_view = E_MINICARD_VIEW (reflow); - g_object_get (card_view->adapter, "book", &book, NULL); - g_return_val_if_fail (E_IS_BOOK (book), NULL); - source_name = e_source_peek_name (e_book_get_source (book)); + g_object_get (card_view->adapter, "client", &book_client, NULL); + g_return_val_if_fail (E_IS_BOOK_CLIENT (book_client), NULL); + source_name = e_source_peek_name (e_client_get_source (E_CLIENT (book_client))); if (!source_name) source_name=""; @@ -173,7 +173,7 @@ ea_minicard_view_get_name (AtkObject *accessible) ATK_OBJECT_CLASS (parent_class)->set_name (accessible, string); g_free (string); - g_object_unref (book); + g_object_unref (book_client); return accessible->name; } diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 1ade6b143a..359c104c89 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -35,7 +35,7 @@ #include #include #include -#include +#include #include #include #include "eab-gui-util.h" @@ -108,7 +108,7 @@ eab_load_error_dialog (GtkWidget *parent, EAlertSink *alert_sink, ESource *sourc uri = e_source_get_uri (source); - if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_OFFLINE_UNAVAILABLE)) { + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_OFFLINE_UNAVAILABLE)) { can_detail_error = FALSE; label_string = _("This address book cannot be opened. This either means this " "book is not marked for offline usage or not yet downloaded " @@ -166,7 +166,7 @@ eab_load_error_dialog (GtkWidget *parent, EAlertSink *alert_sink, ESource *sourc if (can_detail_error) { /* do not show repository offline message, it's kind of generic error */ - if (error && !g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_REPOSITORY_OFFLINE)) { + if (error && !g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_REPOSITORY_OFFLINE)) { label = g_strconcat (label_string, "\n\n", _("Detailed error message:"), " ", error->message, NULL); label_string = label; } @@ -187,46 +187,50 @@ eab_load_error_dialog (GtkWidget *parent, EAlertSink *alert_sink, ESource *sourc } void -eab_search_result_dialog (EAlertSink *alert_sink, - EBookViewStatus status, - const gchar *error_msg) +eab_search_result_dialog (EAlertSink *alert_sink, const GError *error) { gchar *str = NULL; - switch (status) { - case E_BOOK_VIEW_STATUS_OK: + if (!error) return; - case E_BOOK_VIEW_STATUS_SIZE_LIMIT_EXCEEDED: - str = _("More cards matched this query than either the server is \n" - "configured to return or Evolution is configured to display.\n" - "Please make your search more specific or raise the result limit in\n" - "the directory server preferences for this address book."); - str = g_strdup (str); - break; - case E_BOOK_VIEW_STATUS_TIME_LIMIT_EXCEEDED: - str = _("The time to execute this query exceeded the server limit or the limit\n" - "configured for this address book. Please make your search\n" - "more specific or raise the time limit in the directory server\n" - "preferences for this address book."); - str = g_strdup (str); - break; - case E_BOOK_VIEW_ERROR_INVALID_QUERY: - /* Translators: %s is replaced with a detailed error message, or an empty string, if not provided */ - str = _("The backend for this address book was unable to parse this query. %s"); - str = g_strdup_printf (str, error_msg ? error_msg : ""); - break; - case E_BOOK_VIEW_ERROR_QUERY_REFUSED: - /* Translators: %s is replaced with a detailed error message, or an empty string, if not provided */ - str = _("The backend for this address book refused to perform this query. %s"); - str = g_strdup_printf (str, error_msg ? error_msg : ""); - break; - case E_BOOK_VIEW_ERROR_OTHER_ERROR: + + if (error->domain == E_CLIENT_ERROR) { + switch (error->code) { + case E_CLIENT_ERROR_SEARCH_SIZE_LIMIT_EXCEEDED: + str = _("More cards matched this query than either the server is \n" + "configured to return or Evolution is configured to display.\n" + "Please make your search more specific or raise the result limit in\n" + "the directory server preferences for this address book."); + str = g_strdup (str); + break; + case E_CLIENT_ERROR_SEARCH_TIME_LIMIT_EXCEEDED: + str = _("The time to execute this query exceeded the server limit or the limit\n" + "configured for this address book. Please make your search\n" + "more specific or raise the time limit in the directory server\n" + "preferences for this address book."); + str = g_strdup (str); + break; + case E_CLIENT_ERROR_INVALID_QUERY: + /* Translators: %s is replaced with a detailed error message, or an empty string, if not provided */ + str = _("The backend for this address book was unable to parse this query. %s"); + str = g_strdup_printf (str, error->message); + break; + case E_CLIENT_ERROR_QUERY_REFUSED: + /* Translators: %s is replaced with a detailed error message, or an empty string, if not provided */ + str = _("The backend for this address book refused to perform this query. %s"); + str = g_strdup_printf (str, error->message); + break; + case E_CLIENT_ERROR_OTHER_ERROR: + default: + /* Translators: %s is replaced with a detailed error message, or an empty string, if not provided */ + str = _("This query did not complete successfully. %s"); + str = g_strdup_printf (str, error->message); + break; + } + } else { /* Translators: %s is replaced with a detailed error message, or an empty string, if not provided */ str = _("This query did not complete successfully. %s"); - str = g_strdup_printf (str, error_msg ? error_msg : ""); - break; - default: - g_return_if_reached (); + str = g_strdup_printf (str, error->message); } e_alert_submit (alert_sink, "addressbook:search-error", str, NULL); @@ -284,7 +288,7 @@ eab_select_source (ESource *except_source, const gchar *title, const gchar *mess GtkWidget *scrolled_window; gint response; - if (!e_book_get_addressbooks (&source_list, NULL)) + if (!e_book_client_get_sources (&source_list, NULL)) return NULL; dialog = gtk_dialog_new_with_buttons (_("Select Address Book"), parent, @@ -331,13 +335,13 @@ eab_select_source (ESource *except_source, const gchar *title, const gchar *mess } gchar * -eab_suggest_filename (GList *contact_list) +eab_suggest_filename (const GSList *contact_list) { gchar *res = NULL; g_return_val_if_fail (contact_list != NULL, NULL); - if (g_list_length (contact_list) == 1) { + if (!contact_list->next) { EContact *contact = E_CONTACT (contact_list->data); gchar *string; @@ -357,36 +361,58 @@ eab_suggest_filename (GList *contact_list) typedef struct ContactCopyProcess_ ContactCopyProcess; -typedef void (*ContactCopyDone) (ContactCopyProcess *process); - struct ContactCopyProcess_ { gint count; gboolean book_status; - GList *contacts; - EBook *source; - EBook *destination; - ContactCopyDone done_cb; + GSList *contacts; + EBookClient *source; + EBookClient *destination; + gboolean delete_from_source; EAlertSink *alert_sink; }; +static void process_unref (ContactCopyProcess *process); + static void -do_delete (gpointer data, gpointer user_data) +remove_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { - EBook *book = user_data; + EBookClient *book_client = E_BOOK_CLIENT (source_object); + ContactCopyProcess *process = user_data; + GError *error = NULL; + + e_book_client_remove_contact_by_uid_finish (book_client, result, &error); + + if (error) { + g_debug ("%s: Remove contact by uid failed: %s", G_STRFUNC, error->message); + g_error_free (error); + } + + process_unref (process); +} + +static void +do_delete_from_source (gpointer data, gpointer user_data) +{ + ContactCopyProcess *process = user_data; EContact *contact = data; const gchar *id; + EBookClient *book_client = process->source; id = e_contact_get_const (contact, E_CONTACT_UID); - e_book_remove_contact (book, id, NULL); + g_return_if_fail (id != NULL); + g_return_if_fail (book_client != NULL); + + process->count++; + e_book_client_remove_contact_by_uid (book_client, id, NULL, remove_contact_ready_cb, process); } static void delete_contacts (ContactCopyProcess *process) { if (process->book_status == TRUE) { - g_list_foreach (process->contacts, - do_delete, - process->source); + g_slist_foreach (process->contacts, + do_delete_from_source, + process); } } @@ -395,12 +421,15 @@ process_unref (ContactCopyProcess *process) { process->count--; if (process->count == 0) { - if (process->done_cb) - process->done_cb (process); - g_list_foreach ( - process->contacts, - (GFunc) g_object_unref, NULL); - g_list_free (process->contacts); + if (process->delete_from_source) { + delete_contacts (process); + /* to not repeate this again */ + process->delete_from_source = FALSE; + + if (process->count > 0) + return; + } + e_client_util_free_object_slist (process->contacts); g_object_unref (process->source); g_object_unref (process->destination); g_free (process); @@ -408,58 +437,62 @@ process_unref (ContactCopyProcess *process) } static void -contact_added_cb (EBook* book, const GError *error, const gchar *id, gpointer user_data) +contact_added_cb (EBookClient *book_client, const GError *error, const gchar *id, gpointer user_data) { ContactCopyProcess *process = user_data; - if (error && !g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) { + if (error && !g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { process->book_status = FALSE; eab_error_dialog (process->alert_sink, _("Error adding contact"), error); } - else if (g_error_matches (error, E_BOOK_ERROR, E_BOOK_ERROR_CANCELLED)) { + else if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { process->book_status = FALSE; } else { /* success */ process->book_status = TRUE; } + process_unref (process); } static void do_copy (gpointer data, gpointer user_data) { - EBook *book; + EBookClient *book_client; EContact *contact; ContactCopyProcess *process; process = user_data; contact = data; - book = process->destination; + book_client = process->destination; process->count++; - eab_merging_book_add_contact (book, contact, contact_added_cb, process); + eab_merging_book_add_contact (book_client, contact, contact_added_cb, process); } static void -book_loaded_cb (ESource *destination, - GAsyncResult *result, - ContactCopyProcess *process) +book_loaded_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { - EBook *book; + ESource *destination = E_SOURCE (source_object); + ContactCopyProcess *process = user_data; + EClient *client = NULL; + EBookClient *book_client; GError *error = NULL; - book = e_load_book_source_finish (destination, result, &error); + if (!e_client_utils_open_new_finish (destination, result, &client, &error)) + client = NULL; + + book_client = client ? E_BOOK_CLIENT (client) : NULL; - if (book != NULL) { + if (book_client != NULL) { g_warn_if_fail (error == NULL); - process->destination = book; + process->destination = book_client; process->book_status = TRUE; - g_list_foreach (process->contacts, do_copy, process); - + g_slist_foreach (process->contacts, do_copy, process); } else if (error != NULL) { - g_warning ("%s", error->message); + g_debug ("%s: Failed to open destination client: %s", G_STRFUNC, error->message); g_error_free (error); } @@ -467,8 +500,8 @@ book_loaded_cb (ESource *destination, } void -eab_transfer_contacts (EBook *source_book, - GList *contacts /* adopted */, +eab_transfer_contacts (EBookClient *source_client, + GSList *contacts /* adopted */, gboolean delete_from_source, EAlertSink *alert_sink) { @@ -478,7 +511,7 @@ eab_transfer_contacts (EBook *source_book, gchar *desc; GtkWindow *window = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (alert_sink))); - g_return_if_fail (E_IS_BOOK (source_book)); + g_return_if_fail (E_IS_BOOK_CLIENT (source_client)); if (contacts == NULL) return; @@ -499,7 +532,7 @@ eab_transfer_contacts (EBook *source_book, } destination = eab_select_source ( - e_book_get_source (source_book), + e_client_get_source (E_CLIENT (source_client)), desc, NULL, last_uid, window); if (!destination) @@ -513,19 +546,16 @@ eab_transfer_contacts (EBook *source_book, process = g_new (ContactCopyProcess, 1); process->count = 1; process->book_status = FALSE; - process->source = g_object_ref (source_book); + process->source = g_object_ref (source_client); process->contacts = contacts; process->destination = NULL; process->alert_sink = alert_sink; + process->delete_from_source = delete_from_source; - if (delete_from_source) - process->done_cb = delete_contacts; - else - process->done_cb = NULL; - - e_load_book_source_async ( - destination, window, NULL, - (GAsyncReadyCallback) book_loaded_cb, process); + e_client_utils_open_new ( + destination, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, + e_client_utils_authenticate_handler, window, + book_loaded_cb, process); } /* To parse something like... diff --git a/addressbook/gui/widgets/eab-gui-util.h b/addressbook/gui/widgets/eab-gui-util.h index b50df6de95..88a759b75b 100644 --- a/addressbook/gui/widgets/eab-gui-util.h +++ b/addressbook/gui/widgets/eab-gui-util.h @@ -25,7 +25,7 @@ #define __E_ADDRESSBOOK_UTIL_H__ #include -#include +#include #include "e-util/e-alert-sink.h" G_BEGIN_DECLS @@ -38,14 +38,13 @@ void eab_load_error_dialog (GtkWidget *parent, ESource *source, const GError *error); void eab_search_result_dialog (EAlertSink *alert_sink, - EBookViewStatus status, - const gchar *error_msg); + const GError *error); gint eab_prompt_save_dialog (GtkWindow *parent); -void eab_transfer_contacts (EBook *source_book, - GList *contacts, /* adopted */ +void eab_transfer_contacts (EBookClient *source_client, + GSList *contacts, /* adopted */ gboolean delete_from_source, EAlertSink *alert_sink); -gchar * eab_suggest_filename (GList *contact_list); +gchar * eab_suggest_filename (const GSList *contact_list); ESource * eab_select_source (ESource *except_source, const gchar *title, const gchar *message, -- cgit v1.2.3 From 8ba762c9b1163ab221ee884070ffeacf684b2002 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 22 Jun 2011 18:40:29 +0200 Subject: Bug #653008 - Preference window for imap accounts is too large --- addressbook/gui/contact-editor/fullname.ui | 5 ----- 1 file changed, 5 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/fullname.ui b/addressbook/gui/contact-editor/fullname.ui index 227bec9d31..bed0891e8b 100644 --- a/addressbook/gui/contact-editor/fullname.ui +++ b/addressbook/gui/contact-editor/fullname.ui @@ -188,7 +188,6 @@ 0 entry-first PANGO_ELLIPSIZE_NONE - -1 False 0 @@ -215,7 +214,6 @@ 0 0 PANGO_ELLIPSIZE_NONE - -1 False 0 @@ -243,7 +241,6 @@ 0 entry-middle PANGO_ELLIPSIZE_NONE - -1 False 0 @@ -271,7 +268,6 @@ 0 entry-last PANGO_ELLIPSIZE_NONE - -1 False 0 @@ -298,7 +294,6 @@ 0 0 PANGO_ELLIPSIZE_NONE - -1 False 0 -- cgit v1.2.3 From 4778e69589b8d5fca5b59cdb664b8e6e39a4697f Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 23 Jun 2011 18:30:36 +0200 Subject: Postpone ENameSelector loading as much as possible Also fixes few memory leaks around ENameSelector and cancels loading of its address books when not needed any more. --- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index a4f30ca573..a6a9ceca15 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -1133,7 +1133,6 @@ setup_custom_widgets (EContactListEditor *editor) GtkWidget *combo_box; ESourceList *source_list; ENameSelectorEntry *name_selector_entry; - ENameSelector *name_selector; GtkWidget *old, *parent; EContactListEditorPrivate *priv; GError *error = NULL; @@ -1162,14 +1161,8 @@ setup_custom_widgets (EContactListEditor *editor) old = CONTACT_LIST_EDITOR_WIDGET (editor, "email-entry"); g_return_if_fail (old != NULL); - name_selector = e_name_selector_new (); - - e_name_selector_model_add_section ( - e_name_selector_peek_model (name_selector), - "Members", _("_Members"), NULL); - name_selector_entry = e_name_selector_peek_section_entry ( - name_selector, "Members"); + priv->name_selector, "Members"); gtk_widget_set_name ( GTK_WIDGET (name_selector_entry), @@ -1316,6 +1309,7 @@ contact_list_editor_dispose (GObject *object) EContactListEditorPrivate *priv = editor->priv; if (priv->name_selector) { + e_name_selector_cancel_loading (priv->name_selector); g_object_unref (priv->name_selector); priv->name_selector = NULL; } -- cgit v1.2.3 From 566d861915da77e93b097a927a79f0130de8c535 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 27 Jun 2011 18:04:57 +0200 Subject: Check for cancelled GIO operation error code too --- addressbook/gui/contact-editor/e-contact-editor.c | 13 ++++++++----- addressbook/gui/contact-editor/e-contact-quick-add.c | 8 ++++---- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 9 ++++++--- addressbook/gui/widgets/e-addressbook-view.c | 3 ++- addressbook/gui/widgets/eab-gui-util.c | 7 ++++--- 5 files changed, 24 insertions(+), 16 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 4088837f90..7730f17a53 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -213,7 +213,8 @@ e_contact_editor_contact_added (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error adding contact"), error); @@ -227,7 +228,8 @@ e_contact_editor_contact_modified (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error modifying contact"), error); @@ -241,7 +243,8 @@ e_contact_editor_contact_deleted (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error removing contact"), error); @@ -2983,8 +2986,8 @@ contact_editor_book_loaded_cb (GObject *source_object, if (!e_client_utils_open_new_finish (source, result, &client, &error)) client = NULL; - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) || - g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_warn_if_fail (client == NULL); g_error_free (error); } else if (error != NULL) { diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index ac46c0ecfc..4de9060f60 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -132,8 +132,8 @@ merge_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) client = NULL; /* Ignore cancellations. */ - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) || - g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (error); return; } @@ -277,8 +277,8 @@ ce_have_book (GObject *source_object, GAsyncResult *result, gpointer user_data) client = NULL; /* Ignore cancellations. */ - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) || - g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (error); return; } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index a6a9ceca15..dc51011327 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -1410,7 +1410,8 @@ contact_list_editor_contact_added (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error adding list"), error); @@ -1424,7 +1425,8 @@ contact_list_editor_contact_modified (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error modifying list"), error); @@ -1438,7 +1440,8 @@ contact_list_editor_contact_deleted (EABEditor *editor, if (!error) return; - if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) return; eab_error_dialog (NULL, _("Error removing list"), error); diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 00f106ea40..1de028c9fa 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1259,7 +1259,8 @@ report_and_free_error_if_any (GError *error) if (!error) return; - if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (error); return; } diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 359c104c89..7b94c85233 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -441,11 +441,12 @@ contact_added_cb (EBookClient *book_client, const GError *error, const gchar *id { ContactCopyProcess *process = user_data; - if (error && !g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + if (error && !g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) && + !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { process->book_status = FALSE; eab_error_dialog (process->alert_sink, _("Error adding contact"), error); - } - else if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED)) { + } else if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || + g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { process->book_status = FALSE; } else { -- cgit v1.2.3 From 913fbc65742343885dbde4e1b02105809d6aa0a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Tue, 28 Jun 2011 11:41:22 +0200 Subject: Bug #224687 - Create lists of lists --- .../contact-list-editor/e-contact-list-editor.c | 392 +++++++++------------ .../gui/contact-list-editor/e-contact-list-model.c | 162 +++++---- .../gui/contact-list-editor/e-contact-list-model.h | 19 +- addressbook/gui/widgets/Makefile.am | 2 + addressbook/gui/widgets/eab-contact-display.c | 165 +++++++-- 5 files changed, 417 insertions(+), 323 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index dc51011327..c87d2e42fe 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -185,25 +185,59 @@ contact_list_editor_notify_cb (EContactListEditor *editor, gtk_widget_set_sensitive (WIDGET (MEMBERS_VBOX), sensitive); } -static void -contact_list_editor_add_email (EContactListEditor *editor) +static gboolean +contact_list_editor_add_destination (GtkWidget *widget, + EDestination *dest) { - EContactListEditorPrivate *priv = editor->priv; - EContactListModel *model; - GtkEntry *entry; - const gchar *text; + EContactListEditor *editor = contact_list_editor_extract (widget); + EContactListModel *model = E_CONTACT_LIST_MODEL (editor->priv->model); + EDestinationStore *dest_store; + GtkTreeView *treeview = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); + GtkTreePath *path; - entry = GTK_ENTRY (WIDGET (EMAIL_ENTRY)); - model = E_CONTACT_LIST_MODEL (priv->model); + if (e_destination_is_evolution_list (dest)) { + const gchar *id = e_destination_get_contact_uid (dest); + const gchar *name = e_destination_get_name (dest); + const gchar *tag = "addressbook:ask-list-add-list-exists"; - text = gtk_entry_get_text (entry); - if (text != NULL && *text != '\0') { - e_contact_list_model_add_email (model, text); + if (e_contact_list_model_has_uid (model, id) && + (e_alert_run_dialog_for_args (GTK_WINDOW (WIDGET (DIALOG)), tag, name, NULL) != GTK_RESPONSE_YES)) + return FALSE; + } else { + const gchar *email = e_destination_get_email (dest); + const gchar *tag = "addressbook:ask-list-add-exists"; + + if (e_contact_list_model_has_email (model, email) && + (e_alert_run_dialog_for_args (GTK_WINDOW (WIDGET (DIALOG)), tag, email, NULL) != GTK_RESPONSE_YES)) + return FALSE; + } + + /* always add to the root level */ + path = e_contact_list_model_add_destination (model, dest, NULL); + if (path) { contact_list_editor_scroll_to_end (editor); - priv->changed = TRUE; + gtk_tree_view_expand_to_path (treeview, path); + gtk_tree_path_free (path); + + dest_store = e_name_selector_entry_peek_destination_store (E_NAME_SELECTOR_ENTRY (WIDGET (EMAIL_ENTRY))); + e_destination_store_remove_destination (dest_store, dest); + + return TRUE; } - gtk_entry_set_text (entry, ""); + return FALSE; +} + +static void +contact_list_editor_add_email (EContactListEditor *editor, + const gchar *email) +{ + EContactListEditorPrivate *priv = editor->priv; + + EDestination *dest = e_destination_new (); + e_destination_set_email (dest, email); + priv->changed = contact_list_editor_add_destination (WIDGET (DIALOG), dest) || priv->changed; + contact_list_editor_update (editor); } @@ -251,19 +285,6 @@ exit: g_object_unref (editor); } -static gboolean -contact_list_editor_contact_exists (EContactListModel *model, - const gchar *email) -{ - const gchar *tag = "addressbook:ask-list-add-exists"; - - if (!e_contact_list_model_has_email (model, email)) - return FALSE; - - return (e_alert_run_dialog_for_args (e_shell_get_active_window (NULL), - tag, email, NULL) != GTK_RESPONSE_YES); -} - static void contact_list_editor_list_added_cb (EBookClient *book_client, const GError *error, @@ -301,7 +322,7 @@ contact_list_editor_list_modified_cb (EBookClient *book_client, const GError *error, gpointer closure) { - EditorCloseStruct *ecs = closure; + EditorCloseStruct *ecs = closure; EContactListEditor *editor = ecs->editor; EContactListEditorPrivate *priv = editor->priv; gboolean should_close = ecs->should_close; @@ -330,43 +351,28 @@ contact_list_editor_render_destination (GtkTreeViewColumn *column, /* XXX Would be nice if EDestination had a text property * that we could just bind the GtkCellRenderer to. */ - EDestination *destination; + EDestination *destination = NULL; + gchar *name = NULL, *email = NULL; const gchar *textrep; - gchar *name = NULL, *email = NULL, *tofree = NULL; + gchar *out; + + g_return_if_fail (GTK_IS_TREE_MODEL (model)); gtk_tree_model_get (model, iter, 0, &destination, -1); - textrep = e_destination_get_textrep (destination, TRUE); + g_return_if_fail (destination && E_IS_DESTINATION (destination)); + textrep = e_destination_get_textrep (destination, TRUE); if (eab_parse_qp_email (textrep, &name, &email)) { - tofree = g_strdup_printf ("%s <%s>", name, email); - textrep = tofree; - g_free (name); + out = g_strdup_printf ("%s <%s>", name, email); + g_object_set (renderer, "text", out, NULL); + g_free (out); g_free (email); + g_free (name); + } else { + g_object_set (renderer, "text", textrep, NULL); } - g_object_set (renderer, "text", textrep, NULL); g_object_unref (destination); - g_free (tofree); -} - -static void -contact_list_editor_row_deleted_cb (GtkTreeModel *model, - GtkTreePath *path, - EContactListEditor *editor) -{ - gint n_children; - - n_children = gtk_tree_model_iter_n_children (model, NULL); - gtk_widget_set_sensitive (WIDGET (REMOVE_BUTTON), n_children > 0); -} - -static void -contact_list_editor_row_inserted_cb (GtkTreeModel *model, - GtkTreePath *path, - GtkTreeIter *iter, - EContactListEditor *editor) -{ - gtk_widget_set_sensitive (WIDGET (REMOVE_BUTTON), TRUE); } static void @@ -387,9 +393,12 @@ contact_list_editor_selection_changed_cb (GtkTreeSelection *selection, gtk_widget_set_sensitive (WIDGET (UP_BUTTON), FALSE); gtk_widget_set_sensitive (WIDGET (DOWN_BUTTON), FALSE); gtk_widget_set_sensitive (WIDGET (BOTTOM_BUTTON), FALSE); + gtk_widget_set_sensitive (WIDGET (REMOVE_BUTTON), FALSE); return; } + gtk_widget_set_sensitive (WIDGET (REMOVE_BUTTON), TRUE); + /* Item before selected item exists => enable Top/Up buttons */ selected = gtk_tree_selection_get_selected_rows (selection, &model); @@ -430,7 +439,9 @@ contact_list_editor_add_button_clicked_cb (GtkWidget *widget) editor = contact_list_editor_extract (widget); - contact_list_editor_add_email (editor); + contact_list_editor_add_email (editor, + gtk_entry_get_text (GTK_ENTRY (WIDGET (EMAIL_ENTRY)))); + gtk_entry_set_text (GTK_ENTRY (WIDGET (EMAIL_ENTRY)), ""); } void @@ -502,7 +513,6 @@ contact_list_editor_drag_data_received_cb (GtkWidget *widget, { CamelInternetAddress *address; EContactListEditor *editor; - EContactListModel *model; gboolean changed = FALSE; gboolean handled = FALSE; const guchar *data; @@ -512,7 +522,6 @@ contact_list_editor_drag_data_received_cb (GtkWidget *widget, gchar *text; editor = contact_list_editor_extract (widget); - model = E_CONTACT_LIST_MODEL (editor->priv->model); target = gtk_selection_data_get_target (selection_data); @@ -532,24 +541,14 @@ contact_list_editor_drag_data_received_cb (GtkWidget *widget, for (iter = list; iter != NULL; iter = iter->next) { EContact *contact = iter->data; - const gchar *email; + EDestination *dest; - if (e_contact_get (contact, E_CONTACT_IS_LIST)) - continue; + dest = e_destination_new (); + e_destination_set_contact (dest, contact, 0); - email = e_contact_get (contact, E_CONTACT_EMAIL_1); - if (email == NULL) { - g_warning ( - "Contact with no email-ids listed " - "can't be added to a Contact-List"); - continue; - } + changed = contact_list_editor_add_destination (widget, dest) || changed; - if (!contact_list_editor_contact_exists (model, email)) { - /* Hard-wired for default e-mail */ - e_contact_list_model_add_contact (model, contact, 0); - changed = TRUE; - } + g_object_unref (dest); } e_client_util_free_object_slist (list); @@ -583,7 +582,7 @@ handle_text: g_free (text); text = camel_address_format (CAMEL_ADDRESS (address)); - e_contact_list_model_add_email (model, text); + contact_list_editor_add_email (editor, text); contact_list_editor_scroll_to_end (editor); editor->priv->changed = TRUE; @@ -605,10 +604,13 @@ void contact_list_editor_email_entry_activate_cb (GtkWidget *widget) { EContactListEditor *editor; + GtkEntry *entry; editor = contact_list_editor_extract (widget); + entry = GTK_ENTRY (WIDGET (EMAIL_ENTRY)); - contact_list_editor_add_email (editor); + contact_list_editor_add_email (editor, gtk_entry_get_text (entry)); + gtk_entry_set_text (entry, ""); } void @@ -666,8 +668,7 @@ contact_list_editor_email_entry_key_press_event_cb (GtkWidget *widget, } if (can_comma || event->keyval == GDK_KEY_Return) { - g_signal_emit_by_name (widget, "activate", 0); - contact_list_editor_add_email (editor); + g_signal_emit_by_name (WIDGET (EMAIL_ENTRY), "activate", 0); return TRUE; } @@ -675,40 +676,6 @@ contact_list_editor_email_entry_key_press_event_cb (GtkWidget *widget, return FALSE; } -void -contact_list_editor_email_entry_updated_cb (GtkWidget *widget, - EDestination *destination); - -void -contact_list_editor_email_entry_updated_cb (GtkWidget *widget, - EDestination *destination) -{ - EContactListEditor *editor; - ENameSelectorEntry *entry; - EContactListModel *model; - EDestinationStore *store; - gchar *email; - - editor = contact_list_editor_extract (widget); - - entry = E_NAME_SELECTOR_ENTRY (widget); - model = E_CONTACT_LIST_MODEL (editor->priv->model); - - email = g_strdup (e_destination_get_textrep (destination, TRUE)); - store = e_name_selector_entry_peek_destination_store (entry); - e_destination_store_remove_destination (store, destination); - gtk_entry_set_text (GTK_ENTRY (WIDGET (EMAIL_ENTRY)), ""); - - if (email && *email) { - e_contact_list_model_add_email (model, email); - contact_list_editor_scroll_to_end (editor); - editor->priv->changed = TRUE; - } - - g_free (email); - contact_list_editor_update (editor); -} - void contact_list_editor_list_name_entry_changed_cb (GtkWidget *widget); @@ -798,7 +765,7 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget) gtk_tree_path_free (path); g_assert (valid); - gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + e_contact_list_model_remove_row (E_CONTACT_LIST_MODEL (model), &iter); gtk_tree_row_reference_free (reference); } @@ -838,7 +805,6 @@ void contact_list_editor_select_button_clicked_cb (GtkWidget *widget) { EContactListEditor *editor; - EContactListModel *model; ENameSelectorDialog *dialog; EDestinationStore *store; GList *list, *iter; @@ -846,7 +812,6 @@ contact_list_editor_select_button_clicked_cb (GtkWidget *widget) editor = contact_list_editor_extract (widget); - model = E_CONTACT_LIST_MODEL (editor->priv->model); dialog = e_name_selector_peek_dialog (editor->priv->name_selector); gtk_window_set_title (GTK_WINDOW (dialog), _("Contact List Members")); @@ -876,18 +841,14 @@ contact_list_editor_select_button_clicked_cb (GtkWidget *widget) for (iter = list; iter != NULL; iter = iter->next) { EDestination *destination = iter->data; - const gchar *email = e_destination_get_email (destination); - if (email == NULL) - continue; - - if (!contact_list_editor_contact_exists (model, email)) - e_contact_list_model_add_destination ( - model, destination); + contact_list_editor_add_destination (widget, destination); } g_list_free (list); + gtk_entry_set_text (GTK_ENTRY (WIDGET (EMAIL_ENTRY)), ""); + editor->priv->changed = TRUE; contact_list_editor_update (editor); } @@ -962,8 +923,8 @@ contact_list_editor_top_button_clicked_cb (GtkButton *button) for (l = references; l; l = l->next) { path = gtk_tree_row_reference_get_path (l->data); gtk_tree_model_get_iter (model, &iter, path); - gtk_list_store_move_after ( - GTK_LIST_STORE (model), &iter, NULL); + gtk_tree_store_move_after ( + GTK_TREE_STORE (model), &iter, NULL); gtk_tree_path_free (path); } @@ -1006,7 +967,7 @@ contact_list_editor_up_button_clicked_cb (GtkButton *button) /* Get iter of the last selected item */ gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data); - gtk_list_store_move_after (GTK_LIST_STORE (model), &iter, &iter2); + gtk_tree_store_move_after (GTK_TREE_STORE (model), &iter, &iter2); g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); g_list_free (selected); @@ -1042,7 +1003,7 @@ contact_list_editor_down_button_clicked_cb (GtkButton *button) gtk_tree_model_get_iter (model, &iter2, g_list_last (selected)->data); gtk_tree_model_iter_next (model, &iter2); - gtk_list_store_move_before (GTK_LIST_STORE (model), &iter2, &iter); + gtk_tree_store_move_before (GTK_TREE_STORE (model), &iter2, &iter); g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); g_list_free (selected); @@ -1082,8 +1043,8 @@ contact_list_editor_bottom_button_clicked_cb (GtkButton *button) for (l = references; l; l = l->next) { path = gtk_tree_row_reference_get_path (l->data); gtk_tree_model_get_iter (model, &iter, path); - gtk_list_store_move_before ( - GTK_LIST_STORE (model), &iter, NULL); + gtk_tree_store_move_before ( + GTK_TREE_STORE (model), &iter, NULL); gtk_tree_path_free (path); } @@ -1205,9 +1166,6 @@ setup_custom_widgets (EContactListEditor *editor) g_signal_connect ( name_selector_entry, "key-press-event", G_CALLBACK ( contact_list_editor_email_entry_key_press_event_cb), NULL); - g_signal_connect ( - name_selector_entry, "updated", G_CALLBACK ( - contact_list_editor_email_entry_updated_cb), NULL); } /***************************** GObject Callbacks *****************************/ @@ -1314,6 +1272,16 @@ contact_list_editor_dispose (GObject *object) priv->name_selector = NULL; } + if (priv->contact) { + g_object_unref (priv->contact); + priv->contact = NULL; + } + + if (priv->builder) { + g_object_unref (priv->builder); + priv->builder = NULL; + } + /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (parent_class)->dispose (object); } @@ -1561,13 +1529,6 @@ contact_list_editor_init (EContactListEditor *editor) e_drag_dest_add_directory_targets (WIDGET (TREE_VIEW)); gtk_drag_dest_add_text_targets (WIDGET (TREE_VIEW)); - g_signal_connect ( - priv->model, "row-deleted", - G_CALLBACK (contact_list_editor_row_deleted_cb), editor); - g_signal_connect ( - priv->model, "row-inserted", - G_CALLBACK (contact_list_editor_row_inserted_cb), editor); - column = gtk_tree_view_column_new (); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); @@ -1666,15 +1627,63 @@ e_contact_list_editor_set_client (EContactListEditor *editor, g_object_notify (G_OBJECT (editor), "client"); } +static void +save_contact_list (GtkTreeModel *model, GtkTreeIter *iter, GSList **attrs, gint *parent_id) +{ + EDestination *dest; + EVCardAttribute *attr; + gchar *pid_str = g_strdup_printf ("%d", *parent_id); + + do { + gtk_tree_model_get (model, iter, 0, &dest, -1); + + if (gtk_tree_model_iter_has_child (model, iter)) { + GtkTreeIter new_iter; + gchar *uid; + + (*parent_id)++; + uid = g_strdup_printf ("%d", *parent_id); + + attr = e_vcard_attribute_new (NULL, EVC_CONTACT_LIST); + e_vcard_attribute_add_param_with_value (attr, + e_vcard_attribute_param_new (EVC_CL_UID), uid); + e_vcard_attribute_add_value (attr, + e_destination_get_name (dest)); + + g_free (uid); + + /* Set new_iter to first child of iter */ + gtk_tree_model_iter_children (model, &new_iter, iter); + + /* Go recursive */ + save_contact_list (model, &new_iter, attrs, parent_id); + } else { + attr = e_vcard_attribute_new (NULL, EVC_EMAIL); + e_destination_export_to_vcard_attribute (dest, attr); + } + + e_vcard_attribute_add_param_with_value (attr, + e_vcard_attribute_param_new (EVC_PARENT_CL), pid_str); + + + *attrs = g_slist_prepend (*attrs, attr); + + g_object_unref (dest); + + } while (gtk_tree_model_iter_next (model, iter)); + + g_free (pid_str); +} + EContact * e_contact_list_editor_get_contact (EContactListEditor *editor) { GtkTreeModel *model; EContact *contact; GtkTreeIter iter; - gboolean iter_valid; const gchar *text; GSList *attrs = NULL, *a; + gint parent_id = 0; g_return_val_if_fail (E_IS_CONTACT_LIST_EDITOR (editor), NULL); @@ -1686,8 +1695,8 @@ e_contact_list_editor_get_contact (EContactListEditor *editor) text = gtk_entry_get_text (GTK_ENTRY (WIDGET (LIST_NAME_ENTRY))); if (text != NULL && *text != '\0') { - e_contact_set (contact, E_CONTACT_FILE_AS, (gpointer) text); - e_contact_set (contact, E_CONTACT_FULL_NAME, (gpointer) text); + e_contact_set (contact, E_CONTACT_FILE_AS, text); + e_contact_set (contact, E_CONTACT_FULL_NAME, text); } e_contact_set (contact, E_CONTACT_LOGO, NULL); @@ -1699,21 +1708,10 @@ e_contact_list_editor_get_contact (EContactListEditor *editor) GTK_TOGGLE_BUTTON (WIDGET (CHECK_BUTTON))))); e_vcard_remove_attributes (E_VCARD (contact), "", EVC_EMAIL); + e_vcard_remove_attributes (E_VCARD (contact), "", EVC_CONTACT_LIST); - iter_valid = gtk_tree_model_get_iter_first (model, &iter); - - while (iter_valid) { - EDestination *dest; - EVCardAttribute *attr; - - gtk_tree_model_get (model, &iter, 0, &dest, -1); - attr = e_vcard_attribute_new (NULL, EVC_EMAIL); - attrs = g_slist_prepend (attrs, attr); - e_destination_export_to_vcard_attribute (dest, attr); - g_object_unref (dest); - - iter_valid = gtk_tree_model_iter_next (model, &iter); - } + if (gtk_tree_model_get_iter_first (model, &iter)) + save_contact_list (model, &iter, &attrs, &parent_id); /* Put it in reverse order because e_vcard_add_attribute also uses prepend, but we want to keep order of mails there. Hopefully noone will change @@ -1722,59 +1720,9 @@ e_contact_list_editor_get_contact (EContactListEditor *editor) e_vcard_add_attribute (E_VCARD (contact), a->data); } - return contact; -} + g_slist_free (attrs); -/* Helper for e_contact_list_editor_set_contact() */ -static void -contact_list_editor_add_destination (EVCardAttribute *attr, - EContactListEditor *editor) -{ - EDestination *destination; - gchar *contact_uid = NULL; - gint email_num = -1; - GList *list, *iter; - GList *values; - gchar *value; - - destination = e_destination_new (); - - list = e_vcard_attribute_get_params (attr); - for (iter = list; iter; iter = iter->next) { - EVCardAttributeParam *param = iter->data; - const gchar *param_name; - gpointer param_data; - - values = e_vcard_attribute_param_get_values (param); - if (values == NULL) - continue; - - param_name = e_vcard_attribute_param_get_name (param); - param_data = values->data; - - if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_CONTACT_UID)) - contact_uid = param_data; - else if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_EMAIL_NUM)) - email_num = atoi (param_data); - else if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_HTML_MAIL)) - e_destination_set_html_mail_pref ( - destination, - !g_ascii_strcasecmp (param_data, "true")); - } - - value = e_vcard_attribute_get_value (attr); - if (value) - e_destination_set_raw (destination, value); - g_free (value); - - if (contact_uid != NULL) - e_destination_set_contact_uid ( - destination, contact_uid, email_num); - - e_contact_list_model_add_destination ( - E_CONTACT_LIST_MODEL (editor->priv->model), destination); - - e_vcard_attribute_free (attr); + return contact; } void @@ -1790,19 +1738,19 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, if (priv->contact != NULL) g_object_unref (priv->contact); + priv->contact = e_contact_duplicate (contact); if (priv->contact != NULL) { const gchar *file_as; gboolean show_addresses; - GList *email_list; + const GList *dests, *dest; - file_as = e_contact_get_const ( - priv->contact, E_CONTACT_FILE_AS); - email_list = e_contact_get_attributes ( - priv->contact, E_CONTACT_EMAIL); - show_addresses = GPOINTER_TO_INT (e_contact_get ( - priv->contact, E_CONTACT_LIST_SHOW_ADDRESSES)); + /* The root destination */ + EDestination *list_dest = e_destination_new (); + + file_as = e_contact_get_const (priv->contact, E_CONTACT_FILE_AS); + show_addresses = GPOINTER_TO_INT (e_contact_get (priv->contact, E_CONTACT_LIST_SHOW_ADDRESSES)); if (file_as == NULL) file_as = ""; @@ -1817,10 +1765,19 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, e_contact_list_model_remove_all ( E_CONTACT_LIST_MODEL (priv->model)); - g_list_foreach ( - email_list, (GFunc) - contact_list_editor_add_destination, editor); - g_list_free (email_list); + e_destination_set_name (list_dest, file_as); + e_destination_set_contact (list_dest, priv->contact, 0); + + dests = e_destination_list_get_root_dests (list_dest); + for (dest = dests; dest; dest = dest->next) { + GtkTreePath *path; + path = e_contact_list_model_add_destination (E_CONTACT_LIST_MODEL (priv->model), dest->data, NULL); + gtk_tree_path_free (path); + } + + g_object_unref (list_dest); + + gtk_tree_view_expand_all (GTK_TREE_VIEW (WIDGET (TREE_VIEW))); } if (priv->book_client != NULL) { @@ -1835,6 +1792,7 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, contact_list_editor_update (editor); g_object_notify (G_OBJECT (editor), "contact"); + } gboolean diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c index 1a0cc6d0b6..63e0f59105 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c @@ -31,6 +31,15 @@ static gpointer parent_class; +G_DEFINE_TYPE (EContactListModel, e_contact_list_model, GTK_TYPE_TREE_STORE); + +struct _EContactListModelPrivate { + + GHashTable *uids_table; + GHashTable *emails_table; + +}; + static gboolean contact_list_get_iter (EContactListModel *model, GtkTreeIter *iter, @@ -61,38 +70,51 @@ contact_list_model_constructor (GType type, object = G_OBJECT_CLASS (parent_class)->constructor ( type, n_construct_properties, construct_properties); - gtk_list_store_set_column_types ( - GTK_LIST_STORE (object), G_N_ELEMENTS (types), types); + gtk_tree_store_set_column_types ( + GTK_TREE_STORE (object), G_N_ELEMENTS (types), types); return object; } static void -contact_list_model_class_init (EContactListModelClass *class) +contact_list_model_dispose (GObject *object) +{ + EContactListModelPrivate *priv = E_CONTACT_LIST_MODEL (object)->priv; + + if (priv->uids_table) { + g_hash_table_unref (priv->uids_table); + priv->uids_table = NULL; + } + + if (priv->emails_table) { + g_hash_table_unref (priv->emails_table); + priv->emails_table = NULL; + } + + G_OBJECT_CLASS (e_contact_list_model_parent_class)->dispose (object); +} + +static void +e_contact_list_model_class_init (EContactListModelClass *class) { GObjectClass *object_class; + g_type_class_add_private (class, sizeof (EContactListModelPrivate)); + parent_class = g_type_class_peek_parent (class); object_class = G_OBJECT_CLASS (class); object_class->constructor = contact_list_model_constructor; + object_class->dispose = contact_list_model_dispose; } -GType -e_contact_list_model_get_type (void) +static void +e_contact_list_model_init (EContactListModel *model) { - static GType type = 0; - - if (G_UNLIKELY (type == 0)) - type = g_type_register_static_simple ( - GTK_TYPE_LIST_STORE, - "EContactListModel", - sizeof (EContactListModelClass), - (GClassInitFunc) contact_list_model_class_init, - sizeof (EContactListModel), - (GInstanceInitFunc) NULL, 0); - - return type; + model->priv = G_TYPE_INSTANCE_GET_PRIVATE (model, E_TYPE_CONTACT_LIST_MODEL, EContactListModelPrivate); + + model->priv->uids_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + model->priv->emails_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); } GtkTreeModel * @@ -105,64 +127,51 @@ gboolean e_contact_list_model_has_email (EContactListModel *model, const gchar *email) { - GtkTreeIter iter; - gboolean iter_valid; - gboolean has_email = FALSE; - - g_return_val_if_fail (E_IS_CONTACT_LIST_MODEL (model), FALSE); - g_return_val_if_fail (email != NULL, FALSE); - - iter_valid = gtk_tree_model_get_iter_first ( - GTK_TREE_MODEL (model), &iter); - - while (!has_email && iter_valid) { - EDestination *destination; - const gchar *textrep; - - gtk_tree_model_get ( - GTK_TREE_MODEL (model), &iter, 0, &destination, -1); - textrep = e_destination_get_textrep (destination, TRUE); - has_email = (strcmp (email, textrep) == 0); - g_object_unref (destination); - - iter_valid = gtk_tree_model_iter_next ( - GTK_TREE_MODEL (model), &iter); - } + return (g_hash_table_lookup (model->priv->emails_table, email) != NULL); +} - return has_email; +gboolean +e_contact_list_model_has_uid (EContactListModel *model, + const gchar* uid) +{ + return (g_hash_table_lookup (model->priv->uids_table, uid) != NULL); } -void +GtkTreePath* e_contact_list_model_add_destination (EContactListModel *model, - EDestination *destination) + EDestination *destination, + GtkTreeIter *parent) { GtkTreeIter iter; + GtkTreePath *path; - g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model)); - g_return_if_fail (E_IS_DESTINATION (destination)); + g_return_val_if_fail (E_IS_CONTACT_LIST_MODEL (model), NULL); + g_return_val_if_fail (E_IS_DESTINATION (destination), NULL); - gtk_list_store_append (GTK_LIST_STORE (model), &iter); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, destination, -1); -} + gtk_tree_store_append (GTK_TREE_STORE (model), &iter, parent); + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 0, destination, -1); -void -e_contact_list_model_add_email (EContactListModel *model, - const gchar *email) -{ - const gchar *tag = "addressbook:ask-list-add-exists"; - EDestination *destination; + if (e_destination_is_evolution_list (destination)) { + const GList *dest, *dests = e_destination_list_get_root_dests (destination); - g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model)); - g_return_if_fail (email != NULL); + g_hash_table_insert (model->priv->uids_table, + g_strdup (e_destination_get_contact_uid (destination)), + destination); - if (e_contact_list_model_has_email (model, email)) - if (e_alert_run_dialog_for_args (e_shell_get_active_window - (NULL), tag, email, NULL) != GTK_RESPONSE_YES) - return; + for (dest = dests; dest; dest = dest->next) { + path = e_contact_list_model_add_destination (model, dest->data, &iter); + if (dest->next) + gtk_tree_path_free (path); + } + } else { + g_hash_table_insert (model->priv->emails_table, + g_strdup (e_destination_get_email (destination)), + destination); - destination = e_destination_new (); - e_destination_set_email (destination, email); - e_contact_list_model_add_destination (model, destination); + path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); + } + + return path; } void @@ -177,22 +186,30 @@ e_contact_list_model_add_contact (EContactListModel *model, destination = e_destination_new (); e_destination_set_contact (destination, contact, email_num); - e_contact_list_model_add_destination (model, destination); + e_contact_list_model_add_destination (model, destination, NULL); } void e_contact_list_model_remove_row (EContactListModel *model, - gint row) + GtkTreeIter *iter) { - GtkTreeIter iter; - gboolean iter_valid; + EDestination *dest; g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model)); + g_return_if_fail (iter); - iter_valid = contact_list_get_iter (model, &iter, row); - g_return_if_fail (iter_valid); + gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 0, &dest, -1); - gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + if (e_destination_is_evolution_list (dest)) { + const gchar *uid = e_destination_get_contact_uid (dest); + g_hash_table_remove (model->priv->uids_table, uid); + } else { + const gchar *email = e_destination_get_email (dest); + g_hash_table_remove (model->priv->emails_table, email); + } + + g_object_unref (dest); + gtk_tree_store_remove (GTK_TREE_STORE (model), iter); } void @@ -200,7 +217,10 @@ e_contact_list_model_remove_all (EContactListModel *model) { g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model)); - gtk_list_store_clear (GTK_LIST_STORE (model)); + g_hash_table_remove_all (model->priv->uids_table); + g_hash_table_remove_all (model->priv->emails_table); + + gtk_tree_store_clear (GTK_TREE_STORE (model)); } EDestination * diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.h b/addressbook/gui/contact-list-editor/e-contact-list-model.h index 43d3288756..b902658365 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.h +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.h @@ -46,30 +46,35 @@ G_BEGIN_DECLS typedef struct _EContactListModel EContactListModel; +typedef struct _EContactListModelPrivate EContactListModelPrivate; typedef struct _EContactListModelClass EContactListModelClass; struct _EContactListModel { - GtkListStore parent; + GtkTreeStore parent; + EContactListModelPrivate *priv; }; struct _EContactListModelClass { - GtkListStoreClass parent_class; + GtkTreeStoreClass parent_class; }; GType e_contact_list_model_get_type (void); GtkTreeModel * e_contact_list_model_new (void); gboolean e_contact_list_model_has_email (EContactListModel *model, const gchar *email); -void e_contact_list_model_add_destination + +gboolean e_contact_list_model_has_uid (EContactListModel *model, + const gchar *uid); + +GtkTreePath * e_contact_list_model_add_destination (EContactListModel *model, - EDestination *dest); -void e_contact_list_model_add_email (EContactListModel *model, - const gchar *email); + EDestination *dest, + GtkTreeIter *parent); void e_contact_list_model_add_contact (EContactListModel *model, EContact *contact, gint email_num); void e_contact_list_model_remove_row (EContactListModel *model, - gint row); + GtkTreeIter *iter); void e_contact_list_model_remove_all (EContactListModel *model); EDestination * e_contact_list_model_get_destination (EContactListModel *model, diff --git a/addressbook/gui/widgets/Makefile.am b/addressbook/gui/widgets/Makefile.am index 64777ee332..40c57650bb 100644 --- a/addressbook/gui/widgets/Makefile.am +++ b/addressbook/gui/widgets/Makefile.am @@ -9,6 +9,7 @@ libeabwidgets_la_CPPFLAGS = \ -DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\" \ -DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\" \ -DEVOLUTION_RULEDIR=\"$(ruledir)\" \ + -DEVOLUTION_IMAGESDIR=\"${imagesdir}\" \ -I$(top_srcdir) \ -I$(top_srcdir)/filter \ -I$(top_srcdir)/widgets \ @@ -69,6 +70,7 @@ libeabwidgets_la_LIBADD = \ $(top_builddir)/widgets/table/libetable.la \ $(top_builddir)/widgets/menus/libmenus.la \ $(top_builddir)/a11y/libevolution-a11y.la \ + $(top_builddir)/e-util/libeutil.la \ $(GNOME_PLATFORM_LIBS) \ $(CHAMPLAIN_LIBS) diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index c3d8fb7628..ab66e8d554 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -28,6 +28,7 @@ #include "eab-gui-util.h" #include "e-util/e-util.h" +#include "e-util/e-util-private.h" #include "e-util/e-html-utils.h" #include "e-util/e-icon-factory.h" #include "e-util/e-plugin-ui.h" @@ -50,6 +51,8 @@ struct _EABContactDisplayPrivate { EABContactDisplayMode mode; GtkOrientation orientation; gboolean show_maps; + + GHashTable *closed_lists; /* see render_contact_list_* */ }; enum { @@ -409,7 +412,7 @@ render_title_block (GString *buffer, EContact *contact) g_string_append_printf ( buffer, "
" - ""); + if (e_destination_is_evolution_list (destination)) { + g_string_append_printf (buffer, + ""); + + } else { + if (name && *name) { + g_string_append_printf (buffer, "", name, email_addr, email_addr); + } else { + g_string_append_printf (buffer, "", email_addr, email_addr); + } + } + + g_string_append (buffer, ""); + + g_free (evolution_imagesdir); + g_free (name); + g_free (email_addr); +} + +static void +render_contact_list_vertical (GString *buffer, + EContact *contact, + EABContactDisplay *display) { - GList *email_list; - GList *l; + EDestination *destination; + const GList *dest, *dests; + + destination = e_destination_new (); + e_destination_set_contact (destination, contact, 0); + dests = e_destination_list_get_root_dests (destination); render_title_block (buffer, contact); - g_string_append ( - buffer, "
", TEXT_IS_RIGHT_TO_LEFT ? + "", TEXT_IS_RIGHT_TO_LEFT ? "align=\"right\"" : ""); photo = e_contact_get (contact, E_CONTACT_PHOTO); if (!photo) @@ -421,6 +424,9 @@ render_title_block (GString *buffer, EContact *contact) if (photo) e_contact_photo_free (photo); + if (e_contact_get (contact, E_CONTACT_IS_LIST)) + g_string_append (buffer, ""); + g_string_append_printf ( buffer, "\n", TEXT_IS_RIGHT_TO_LEFT ? "align=\"right\"" : ""); @@ -443,43 +449,126 @@ render_title_block (GString *buffer, EContact *contact) } static void -render_contact_list (GString *buffer, - EContact *contact) +render_contact_list_row (GString *buffer, + EDestination *destination, + EABContactDisplay *display) + { + gchar *evolution_imagesdir = g_filename_to_uri (EVOLUTION_IMAGESDIR, NULL, NULL); + gboolean list_collapsed = FALSE; + const gchar *listId = e_destination_get_contact_uid (destination), *textrep; + gchar *name = NULL, *email_addr = NULL; + + if (listId) + list_collapsed = GPOINTER_TO_INT (g_hash_table_lookup (display->priv->closed_lists, listId)); + + textrep = e_destination_get_textrep (destination, TRUE); + if (!eab_parse_qp_email (textrep, &name, &email_addr)) + email_addr = g_strdup (textrep); + + g_string_append (buffer, "
%s", + e_destination_get_contact_uid (destination), + evolution_imagesdir, + (list_collapsed ? "plus" : "minus"), + name ? name : email_addr); + + if (!list_collapsed) { + const GList *dest, *dests; + g_string_append (buffer, "
"); + + dests = e_destination_list_get_root_dests (destination); + for (dest = dests; dest; dest = dest->next) { + render_contact_list_row (buffer, dest->data, display); + } + + g_string_append (buffer, "
"); + } + + g_string_append (buffer, "
%s <%s>%s
"); - g_string_append ( - buffer, " " - "
"); - g_string_append ( - buffer, ""); - g_string_append_printf ( - buffer, "" - "%s:", _("List Members")); + g_string_append_printf (buffer, "
%s", + _("List Members:")); + g_string_append (buffer, ""); - email_list = e_contact_get (contact, E_CONTACT_EMAIL); - for (l = email_list; l; l = l->next) { - gchar *value; + for (dest = dests; dest; dest = dest->next) { + render_contact_list_row (buffer, dest->data, display); + } + + g_string_append (buffer, "
"); + g_string_append (buffer, "
"); + + g_object_unref (destination); +} - value = eab_parse_qp_email_to_html (l->data); +static void +render_contact_list_horizontal (GString *buffer, + EContact *contact, + EABContactDisplay *display) +{ + EDestination *destination; + const GList *dest, *dests; + + destination = e_destination_new (); + e_destination_set_contact (destination, contact, 0); + dests = e_destination_list_get_root_dests (destination); - if (!value) - value = e_text_to_html (l->data, E_TEXT_TO_HTML_CONVERT_ADDRESSES); + render_title_block (buffer, contact); - g_string_append_printf (buffer, "%s
", value); + g_string_append_printf (buffer, "" + "
%s
", _("List Members:")); + g_string_append (buffer, ""); - g_free (value); - } + for (dest = dests; dest; dest = dest->next) { + render_contact_list_row (buffer, dest->data, display); + } + g_string_append (buffer, "
"); g_string_append (buffer, "
"); - g_list_free (email_list); + + g_object_unref (destination); +} + +static void +render_contact_list (GString *buffer, + EContact *contact, + EABContactDisplay *display) + +{ + if (display->priv->orientation == GTK_ORIENTATION_VERTICAL) + render_contact_list_vertical (buffer, contact, display); + else + render_contact_list_horizontal (buffer, contact, display); } static void @@ -751,7 +840,7 @@ eab_contact_display_render_normal (EABContactDisplay *display, orientation = display->priv->orientation; if (e_contact_get (contact, E_CONTACT_IS_LIST)) - render_contact_list (buffer, contact); + render_contact_list (buffer, contact, display); else render_contact (buffer, contact, orientation, display->priv->show_maps); @@ -1035,6 +1124,11 @@ contact_display_dispose (GObject *object) priv->contact = NULL; } + if (priv->closed_lists != NULL) { + g_hash_table_unref (priv->closed_lists); + priv->closed_lists = NULL; + } + /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (parent_class)->dispose (object); } @@ -1159,6 +1253,19 @@ contact_display_link_clicked (EWebView *web_view, index = atoi (uri + length); contact_display_emit_send_message (display, index); + return; + } else if (g_str_has_prefix (uri, "##") && g_str_has_suffix (uri, "##")) { + gchar *list_id = g_strndup (uri+2, strlen (uri) - 4); + + if (g_hash_table_lookup (display->priv->closed_lists, list_id)) { + g_hash_table_remove (display->priv->closed_lists, list_id); + g_free (list_id); + } else { + g_hash_table_insert (display->priv->closed_lists, list_id, GINT_TO_POINTER (TRUE)); + } + + eab_contact_display_render_normal (display, display->priv->contact); + return; } @@ -1338,6 +1445,8 @@ eab_contact_display_init (EABContactDisplay *display) display->priv->mode = EAB_CONTACT_DISPLAY_RENDER_NORMAL; display->priv->orientation = GTK_ORIENTATION_HORIZONTAL; display->priv->show_maps = FALSE; + display->priv->closed_lists = g_hash_table_new_full (g_str_hash, g_str_equal, + (GDestroyNotify) g_free, NULL); web_view = E_WEB_VIEW (display); ui_manager = e_web_view_get_ui_manager (web_view); -- cgit v1.2.3 From 3fbb69cbcb1e0020590d3f55d70ca371af4bca6d Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 29 Jun 2011 12:02:14 +0200 Subject: Bug #652627 - Invalid unref on a NULL pointer from query_cb --- addressbook/gui/merging/eab-contact-compare.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index 1ba9b3811f..8295b77e7e 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -642,7 +642,8 @@ query_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) info->cb (info->contact, best_contact, best_match, info->closure); match_search_info_free (info); g_object_unref (book_client); - g_object_unref (best_contact); + if (best_contact) + g_object_unref (best_contact); } #define MAX_QUERY_PARTS 10 -- cgit v1.2.3 From 5c164275ac5835266ef26d1c9960510c5cc5d555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Wed, 29 Jun 2011 15:30:38 +0200 Subject: Bug #224687 - Various fixes in contact list editor - fixed order of buttons in duplicate adding confirmation dialog - in the editor, don't display email addresses in sublist nodes - automatically remove sublists with no children --- .../contact-list-editor/e-contact-list-editor.c | 47 ++++++-- .../gui/contact-list-editor/e-contact-list-model.c | 122 +++++++++++++++++---- .../gui/contact-list-editor/e-contact-list-model.h | 3 +- 3 files changed, 138 insertions(+), 34 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index c87d2e42fe..a0de8a5c8a 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -194,15 +194,40 @@ contact_list_editor_add_destination (GtkWidget *widget, EDestinationStore *dest_store; GtkTreeView *treeview = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); GtkTreePath *path; + gboolean ignore_conflicts = TRUE; if (e_destination_is_evolution_list (dest)) { const gchar *id = e_destination_get_contact_uid (dest); const gchar *name = e_destination_get_name (dest); - const gchar *tag = "addressbook:ask-list-add-list-exists"; - if (e_contact_list_model_has_uid (model, id) && - (e_alert_run_dialog_for_args (GTK_WINDOW (WIDGET (DIALOG)), tag, name, NULL) != GTK_RESPONSE_YES)) - return FALSE; + if (e_contact_list_model_has_uid (model, id)) { + if (e_alert_run_dialog_for_args (GTK_WINDOW (WIDGET (DIALOG)), + "addressbook:ask-list-add-list-exists", name, NULL) != GTK_RESPONSE_YES) + return FALSE; + } else { + const GList *l_dests, *l_dest; + gint reply; + + /* Check the new list mail-by-mail for conflicts and eventually ask user what to do + with all conflicts */ + l_dests = e_destination_list_get_dests (dest); + for (l_dest = l_dests; l_dest; l_dest = l_dest->next) { + if (e_contact_list_model_has_email (model, e_destination_get_email (l_dest->data))) { + reply = e_alert_run_dialog_for_args (GTK_WINDOW (WIDGET (DIALOG)), + "addressbook:ask-list-add-some-mails-exist", NULL); + if (reply == GTK_RESPONSE_YES) { + ignore_conflicts = TRUE; + break; + } else if (reply == GTK_RESPONSE_NO) { + ignore_conflicts = FALSE; + break; + } else { + return FALSE; + } + } + } + } + } else { const gchar *email = e_destination_get_email (dest); const gchar *tag = "addressbook:ask-list-add-exists"; @@ -213,7 +238,7 @@ contact_list_editor_add_destination (GtkWidget *widget, } /* always add to the root level */ - path = e_contact_list_model_add_destination (model, dest, NULL); + path = e_contact_list_model_add_destination (model, dest, NULL, ignore_conflicts); if (path) { contact_list_editor_scroll_to_end (editor); gtk_tree_view_expand_to_path (treeview, path); @@ -363,9 +388,13 @@ contact_list_editor_render_destination (GtkTreeViewColumn *column, textrep = e_destination_get_textrep (destination, TRUE); if (eab_parse_qp_email (textrep, &name, &email)) { - out = g_strdup_printf ("%s <%s>", name, email); - g_object_set (renderer, "text", out, NULL); - g_free (out); + if (e_destination_is_evolution_list (destination)) { + g_object_set (renderer, "text", name, NULL); + } else { + out = g_strdup_printf ("%s <%s>", name, email); + g_object_set (renderer, "text", out, NULL); + g_free (out); + } g_free (email); g_free (name); } else { @@ -1771,7 +1800,7 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, dests = e_destination_list_get_root_dests (list_dest); for (dest = dests; dest; dest = dest->next) { GtkTreePath *path; - path = e_contact_list_model_add_destination (E_CONTACT_LIST_MODEL (priv->model), dest->data, NULL); + path = e_contact_list_model_add_destination (E_CONTACT_LIST_MODEL (priv->model), dest->data, NULL, TRUE); gtk_tree_path_free (path); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c index 63e0f59105..b94e8e79c3 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c @@ -82,12 +82,12 @@ contact_list_model_dispose (GObject *object) EContactListModelPrivate *priv = E_CONTACT_LIST_MODEL (object)->priv; if (priv->uids_table) { - g_hash_table_unref (priv->uids_table); + g_hash_table_destroy (priv->uids_table); priv->uids_table = NULL; } if (priv->emails_table) { - g_hash_table_unref (priv->emails_table); + g_hash_table_destroy (priv->emails_table); priv->emails_table = NULL; } @@ -140,7 +140,8 @@ e_contact_list_model_has_uid (EContactListModel *model, GtkTreePath* e_contact_list_model_add_destination (EContactListModel *model, EDestination *destination, - GtkTreeIter *parent) + GtkTreeIter *parent, + gboolean ignore_conflicts) { GtkTreeIter iter; GtkTreePath *path; @@ -148,25 +149,46 @@ e_contact_list_model_add_destination (EContactListModel *model, g_return_val_if_fail (E_IS_CONTACT_LIST_MODEL (model), NULL); g_return_val_if_fail (E_IS_DESTINATION (destination), NULL); - gtk_tree_store_append (GTK_TREE_STORE (model), &iter, parent); - gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 0, destination, -1); - if (e_destination_is_evolution_list (destination)) { const GList *dest, *dests = e_destination_list_get_root_dests (destination); + /* Get number of instances of this list in the model */ + gint list_refs = GPOINTER_TO_INT (g_hash_table_lookup (model->priv->uids_table, + e_destination_get_contact_uid (destination))); - g_hash_table_insert (model->priv->uids_table, - g_strdup (e_destination_get_contact_uid (destination)), - destination); + gtk_tree_store_append (GTK_TREE_STORE (model), &iter, parent); + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 0, destination, -1); for (dest = dests; dest; dest = dest->next) { - path = e_contact_list_model_add_destination (model, dest->data, &iter); - if (dest->next) + path = e_contact_list_model_add_destination (model, dest->data, &iter, ignore_conflicts); + if (dest->next && path) gtk_tree_path_free (path); } + + /* When the list has no children the remove it. We don't want empty sublists displayed. */ + if (!gtk_tree_model_iter_has_child (GTK_TREE_MODEL (model), &iter)) { + gtk_tree_store_remove (GTK_TREE_STORE (model), &iter); + } else { + g_hash_table_insert (model->priv->uids_table, + g_strdup (e_destination_get_contact_uid (destination)), + GINT_TO_POINTER (list_refs + 1)); + } } else { + gint dest_refs; + + if (e_contact_list_model_has_email (model, e_destination_get_email (destination)) && + ignore_conflicts == FALSE) { + return NULL; + } + + dest_refs = GPOINTER_TO_INT (g_hash_table_lookup (model->priv->emails_table, + e_destination_get_email (destination))); + g_hash_table_insert (model->priv->emails_table, g_strdup (e_destination_get_email (destination)), - destination); + GINT_TO_POINTER (dest_refs + 1)); + + gtk_tree_store_append (GTK_TREE_STORE (model), &iter, parent); + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 0, destination, -1); path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); } @@ -186,30 +208,82 @@ e_contact_list_model_add_contact (EContactListModel *model, destination = e_destination_new (); e_destination_set_contact (destination, contact, email_num); - e_contact_list_model_add_destination (model, destination, NULL); + e_contact_list_model_add_destination (model, destination, NULL, TRUE); +} + +static void +contact_list_model_unref_row_dest (EContactListModel *model, + GtkTreeIter *iter) +{ + EDestination *dest; + GtkTreeModel *tree_model; + + tree_model = GTK_TREE_MODEL (model); + gtk_tree_model_get (tree_model, iter, 0, &dest, -1); + + if (gtk_tree_model_iter_has_child (tree_model, iter)) { + GtkTreeIter child_iter; + gint list_refs = GPOINTER_TO_INT (g_hash_table_lookup (model->priv->uids_table, + e_destination_get_contact_uid (dest))); + + /* If the list is only once in the model, then remove it from the hash table, + otherwise decrease the counter by one */ + if (list_refs <= 1) { + g_hash_table_remove (model->priv->uids_table, + e_destination_get_contact_uid (dest)); + } else { + g_hash_table_insert (model->priv->uids_table, + g_strdup (e_destination_get_contact_uid (dest)), + GINT_TO_POINTER (list_refs - 1)); + } + + if (gtk_tree_model_iter_children (tree_model, &child_iter, iter)) { + do { + contact_list_model_unref_row_dest (model, &child_iter); + } while (gtk_tree_model_iter_next (tree_model, &child_iter)); + } + + } else { + gint dest_refs = GPOINTER_TO_INT (g_hash_table_lookup (model->priv->emails_table, + e_destination_get_email (dest))); + + if (dest_refs <= 1) { + g_hash_table_remove (model->priv->emails_table, + e_destination_get_email (dest)); + } else { + g_hash_table_insert (model->priv->emails_table, + g_strdup (e_destination_get_email (dest)), + GINT_TO_POINTER (dest_refs - 1)); + } + } + + g_object_unref (dest); } void e_contact_list_model_remove_row (EContactListModel *model, GtkTreeIter *iter) { - EDestination *dest; + GtkTreeIter parent_iter; g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model)); g_return_if_fail (iter); - gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 0, &dest, -1); - - if (e_destination_is_evolution_list (dest)) { - const gchar *uid = e_destination_get_contact_uid (dest); - g_hash_table_remove (model->priv->uids_table, uid); + /* Use helper function to update our reference counters in + hash tables but don't remove any row. */ + contact_list_model_unref_row_dest (model, iter); + + /* Get iter of parent of the row to be removed. After the row is removed, check if there are + any more children left for the parent_iter, an eventually remove the parent_iter as well */ + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (model), &parent_iter, iter)) { + gtk_tree_store_remove (GTK_TREE_STORE (model), iter); + if (!gtk_tree_model_iter_has_child (GTK_TREE_MODEL (model), &parent_iter)) { + contact_list_model_unref_row_dest (model, &parent_iter); + gtk_tree_store_remove (GTK_TREE_STORE (model), &parent_iter); + } } else { - const gchar *email = e_destination_get_email (dest); - g_hash_table_remove (model->priv->emails_table, email); + gtk_tree_store_remove (GTK_TREE_STORE (model), iter); } - - g_object_unref (dest); - gtk_tree_store_remove (GTK_TREE_STORE (model), iter); } void diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.h b/addressbook/gui/contact-list-editor/e-contact-list-model.h index b902658365..91e8a82cdb 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.h +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.h @@ -69,7 +69,8 @@ gboolean e_contact_list_model_has_uid (EContactListModel *model, GtkTreePath * e_contact_list_model_add_destination (EContactListModel *model, EDestination *dest, - GtkTreeIter *parent); + GtkTreeIter *parent, + gboolean ignore_conflicts); void e_contact_list_model_add_contact (EContactListModel *model, EContact *contact, gint email_num); -- cgit v1.2.3 From a6c6699511d9fdf96bb36e5ff4cf7c91c0ca07f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Wed, 29 Jun 2011 20:53:42 +0200 Subject: Bug #653644 - Warning when adding plain address into a contact list --- .../gui/contact-list-editor/e-contact-list-editor.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index a0de8a5c8a..41c9f27ae9 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -191,7 +191,6 @@ contact_list_editor_add_destination (GtkWidget *widget, { EContactListEditor *editor = contact_list_editor_extract (widget); EContactListModel *model = E_CONTACT_LIST_MODEL (editor->priv->model); - EDestinationStore *dest_store; GtkTreeView *treeview = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); GtkTreePath *path; gboolean ignore_conflicts = TRUE; @@ -244,9 +243,6 @@ contact_list_editor_add_destination (GtkWidget *widget, gtk_tree_view_expand_to_path (treeview, path); gtk_tree_path_free (path); - dest_store = e_name_selector_entry_peek_destination_store (E_NAME_SELECTOR_ENTRY (WIDGET (EMAIL_ENTRY))); - e_destination_store_remove_destination (dest_store, dest); - return TRUE; } @@ -257,10 +253,21 @@ static void contact_list_editor_add_email (EContactListEditor *editor, const gchar *email) { + CamelInternetAddress *addr; EContactListEditorPrivate *priv = editor->priv; - EDestination *dest = e_destination_new (); - e_destination_set_email (dest, email); + + addr = camel_internet_address_new (); + if (camel_address_unformat (CAMEL_ADDRESS (addr), email) == 1) { + const gchar *name, *mail; + camel_internet_address_get (addr, 0, &name, &mail); + e_destination_set_email (dest, mail); + e_destination_set_name (dest, name); + } else { + e_destination_set_email (dest, email); + } + g_object_unref (addr); + priv->changed = contact_list_editor_add_destination (WIDGET (DIALOG), dest) || priv->changed; contact_list_editor_update (editor); @@ -872,6 +879,7 @@ contact_list_editor_select_button_clicked_cb (GtkWidget *widget) EDestination *destination = iter->data; contact_list_editor_add_destination (widget, destination); + e_destination_store_remove_destination (store, destination); } g_list_free (list); -- cgit v1.2.3 From a1b810294d9a8d78738e5d77fdb468cbf58bd970 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 30 Jun 2011 16:48:07 +0200 Subject: Autocompletion in contact list editor didn't work due to forgotten call to load books to ENameSelector --- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 41c9f27ae9..e1106a2fee 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -1592,6 +1592,8 @@ contact_list_editor_init (EContactListEditor *editor) gtk_widget_show_all (WIDGET (DIALOG)); setup_custom_widgets (editor); + + e_name_selector_load_books (priv->name_selector); } /***************************** Public Interface ******************************/ -- cgit v1.2.3 From 4941d7ea79914299c81fbd39bb7c60a3201a5f25 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 22 Jul 2011 09:40:37 -0500 Subject: Coding style and whitespace cleanups. --- addressbook/gui/contact-list-editor/e-contact-list-editor.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.h b/addressbook/gui/contact-list-editor/e-contact-list-editor.h index 38713ba7ab..ecf5098fa8 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.h +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.h @@ -72,8 +72,10 @@ EABEditor * e_contact_list_editor_new (EShell *shell, EContact *list_contact, gboolean is_new_list, gboolean editable); -EBookClient * e_contact_list_editor_get_client(EContactListEditor *editor); -void e_contact_list_editor_set_client(EContactListEditor *editor, +EBookClient * e_contact_list_editor_get_client + (EContactListEditor *editor); +void e_contact_list_editor_set_client + (EContactListEditor *editor, EBookClient *book_client); EContact * e_contact_list_editor_get_contact (EContactListEditor *editor); -- cgit v1.2.3 From fe67798104f76f0a794093bddcaf9d165df50bf5 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 9 Aug 2011 17:18:42 +0200 Subject: Bug #655492 - Move 'Automatic contacts' tab to 'Contacts' part --- addressbook/gui/widgets/eab-config.c | 24 ++++++++++++++++++++++++ addressbook/gui/widgets/eab-config.h | 14 +++++++++++++- 2 files changed, 37 insertions(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/eab-config.c b/addressbook/gui/widgets/eab-config.c index dbbb8cefc2..5cb8d25e81 100644 --- a/addressbook/gui/widgets/eab-config.c +++ b/addressbook/gui/widgets/eab-config.c @@ -54,6 +54,8 @@ ecp_target_free (EConfig *ec, EConfigTarget *t) p->source_changed_id = 0; } break; } + case EAB_CONFIG_TARGET_PREFS: + break; } } @@ -64,6 +66,12 @@ ecp_target_free (EConfig *ec, EConfigTarget *t) if (s->source) g_object_unref (s->source); break; } + case EAB_CONFIG_TARGET_PREFS: { + EABConfigTargetPrefs *s = (EABConfigTargetPrefs *) t; + + if (s->gconf) + g_object_unref (s->gconf); + break; } } ((EConfigClass *) ecp_parent_class)->target_free (ec, t); @@ -91,6 +99,8 @@ ecp_set_target (EConfig *ec, EConfigTarget *t) s->source, "changed", G_CALLBACK (ecp_source_changed), ec); break; } + case EAB_CONFIG_TARGET_PREFS: + break; } } } @@ -145,3 +155,17 @@ eab_config_target_new_source (EABConfig *ecp, struct _ESource *source) return t; } + +EABConfigTargetPrefs * +eab_config_target_new_prefs (EABConfig *ecp, GConfClient *gconf) +{ + EABConfigTargetPrefs *t = e_config_target_new ( + &ecp->config, EAB_CONFIG_TARGET_PREFS, sizeof (*t)); + + if (gconf) + t->gconf = g_object_ref (gconf); + else + t->gconf = NULL; + + return t; +} diff --git a/addressbook/gui/widgets/eab-config.h b/addressbook/gui/widgets/eab-config.h index 5aa822ea62..7cf79244e2 100644 --- a/addressbook/gui/widgets/eab-config.h +++ b/addressbook/gui/widgets/eab-config.h @@ -24,6 +24,7 @@ #ifndef __EAB_CONFIG_H__ #define __EAB_CONFIG_H__ +#include #include "e-util/e-config.h" #define EAB_TYPE_CONFIG (eab_config_get_type ()) @@ -46,7 +47,8 @@ struct _EABConfigClass { }; enum _eab_config_target_t { - EAB_CONFIG_TARGET_SOURCE + EAB_CONFIG_TARGET_SOURCE, + EAB_CONFIG_TARGET_PREFS }; typedef struct _EABConfigTargetSource EABConfigTargetSource; @@ -57,12 +59,22 @@ struct _EABConfigTargetSource { struct _ESource *source; }; +typedef struct _EABConfigTargetPrefs EABConfigTargetPrefs; + +struct _EABConfigTargetPrefs { + EConfigTarget target; + + /* preferences are global from gconf */ + GConfClient *gconf; +}; + typedef struct _EConfigItem EABConfigItem; GType eab_config_get_type (void); EABConfig *eab_config_new (gint type, const gchar *menuid); EABConfigTargetSource *eab_config_target_new_source (EABConfig *ecp, struct _ESource *source); +EABConfigTargetPrefs *eab_config_target_new_prefs (EABConfig *ecp, GConfClient *gconf); G_END_DECLS -- cgit v1.2.3 From f59681796df8fe0138a1754abbe8ec781bc1535e Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 1 Jul 2011 00:07:26 -0400 Subject: Coding style and whitespace cleanup. --- addressbook/gui/contact-editor/e-contact-editor.c | 484 ++++++++++++++------- .../gui/contact-editor/e-contact-quick-add.c | 104 +++-- .../contact-list-editor/e-contact-list-editor.c | 67 ++- .../gui/contact-list-editor/e-contact-list-model.c | 2 +- addressbook/gui/merging/eab-contact-compare.c | 29 +- addressbook/gui/merging/eab-contact-merging.c | 46 +- addressbook/gui/widgets/e-addressbook-model.c | 59 ++- addressbook/gui/widgets/e-addressbook-selector.c | 31 +- addressbook/gui/widgets/e-addressbook-view.c | 50 ++- addressbook/gui/widgets/eab-contact-display.c | 15 +- addressbook/gui/widgets/eab-contact-display.h | 8 +- addressbook/gui/widgets/eab-gui-util.c | 40 +- 12 files changed, 616 insertions(+), 319 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 7730f17a53..3d76a401eb 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -393,7 +393,8 @@ entry_activated (EContactEditor *editor) /* FIXME: Linear time... */ static gboolean -is_field_supported (EContactEditor *editor, EContactField field_id) +is_field_supported (EContactEditor *editor, + EContactField field_id) { GSList *fields, *iter; const gchar *field; @@ -421,7 +422,9 @@ is_field_supported (EContactEditor *editor, EContactField field_id) /* This function tells you whether name_to_style will make sense. */ static gboolean -style_makes_sense (const EContactName *name, const gchar *company, gint style) +style_makes_sense (const EContactName *name, + const gchar *company, + gint style) { switch (style) { case 0: /* Fall Through */ @@ -453,7 +456,9 @@ style_makes_sense (const EContactName *name, const gchar *company, gint style) } static gchar * -name_to_style (const EContactName *name, const gchar *company, gint style) +name_to_style (const EContactName *name, + const gchar *company, + gint style) { gchar *string; gchar *strings[4], **stringptr; @@ -628,7 +633,8 @@ file_as_set_style (EContactEditor *editor, gint style) } static void -name_entry_changed (GtkWidget *widget, EContactEditor *editor) +name_entry_changed (GtkWidget *widget, + EContactEditor *editor) { gint style = 0; const gchar *string; @@ -643,11 +649,13 @@ name_entry_changed (GtkWidget *widget, EContactEditor *editor) sensitize_ok (editor); if (string && !*string) - gtk_window_set_title (GTK_WINDOW (editor->app), _("Contact Editor")); + gtk_window_set_title ( + GTK_WINDOW (editor->app), _("Contact Editor")); } static void -file_as_combo_changed (GtkWidget *widget, EContactEditor *editor) +file_as_combo_changed (GtkWidget *widget, + EContactEditor *editor) { GtkWidget *entry; gchar *string = NULL; @@ -663,7 +671,8 @@ file_as_combo_changed (GtkWidget *widget, EContactEditor *editor) g_free (title); } else { - gtk_window_set_title (GTK_WINDOW (editor->app), _("Contact Editor")); + gtk_window_set_title ( + GTK_WINDOW (editor->app), _("Contact Editor")); } sensitize_ok (editor); @@ -671,7 +680,8 @@ file_as_combo_changed (GtkWidget *widget, EContactEditor *editor) } static void -company_entry_changed (GtkWidget *widget, EContactEditor *editor) +company_entry_changed (GtkWidget *widget, + EContactEditor *editor) { gint style = 0; @@ -735,7 +745,8 @@ sensitize_ok (EContactEditor *ce) } static void -object_changed (GObject *object, EContactEditor *editor) +object_changed (GObject *object, + EContactEditor *editor) { if (!editor->target_editable) { g_warning ("non-editable contact editor has an editable field in it."); @@ -762,14 +773,17 @@ object_changed (GObject *object, EContactEditor *editor) } static void -image_chooser_changed (GtkWidget *widget, EContactEditor *editor) +image_chooser_changed (GtkWidget *widget, + EContactEditor *editor) { editor->image_set = TRUE; editor->image_changed = TRUE; } static void -set_entry_text (EContactEditor *editor, GtkEntry *entry, const gchar *string) +set_entry_text (EContactEditor *editor, + GtkEntry *entry, + const gchar *string) { const gchar *oldstring = gtk_entry_get_text (entry); @@ -786,7 +800,9 @@ set_entry_text (EContactEditor *editor, GtkEntry *entry, const gchar *string) } static void -set_combo_box_active (EContactEditor *editor, GtkComboBox *combo_box, gint active) +set_combo_box_active (EContactEditor *editor, + GtkComboBox *combo_box, + gint active) { g_signal_handlers_block_matched ( combo_box, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, editor); @@ -796,7 +812,8 @@ set_combo_box_active (EContactEditor *editor, GtkComboBox *combo_box, gint activ } static void -init_email_record_location (EContactEditor *editor, gint record) +init_email_record_location (EContactEditor *editor, + gint record) { GtkComboBox *location_combo_box; GtkWidget *email_entry; @@ -899,7 +916,9 @@ im_index_to_location (gint index) } static void -phone_index_to_type (gint index, const gchar **type_1, const gchar **type_2) +phone_index_to_type (gint index, + const gchar **type_1, + const gchar **type_2) { *type_1 = phones [index].type_1; *type_2 = phones [index].type_2; @@ -1153,7 +1172,9 @@ extract_email (EContactEditor *editor) } static void -sensitize_email_record (EContactEditor *editor, gint record, gboolean enabled) +sensitize_email_record (EContactEditor *editor, + gint record, + gboolean enabled) { GtkWidget *location_combo_box; GtkWidget *email_entry; @@ -1287,7 +1308,8 @@ expand_widget_list (EContactEditor *editor, } static void -expand_web (EContactEditor *editor, gboolean expanded) +expand_web (EContactEditor *editor, + gboolean expanded) { const gchar *names[] = { "label-videourl", "label-fburl", @@ -1299,7 +1321,8 @@ expand_web (EContactEditor *editor, gboolean expanded) } static void -expand_phone (EContactEditor *editor, gboolean expanded) +expand_phone (EContactEditor *editor, + gboolean expanded) { const gchar *names[] = { "entry-phone-2", "combobox-phone-2", @@ -1311,7 +1334,8 @@ expand_phone (EContactEditor *editor, gboolean expanded) } static void -expand_mail (EContactEditor *editor, gboolean expanded) +expand_mail (EContactEditor *editor, + gboolean expanded) { GtkTable *table; GtkWidget *check; @@ -1559,7 +1583,8 @@ init_phone (EContactEditor *editor) } static void -sensitize_phone_types (EContactEditor *editor, GtkWidget *combo_box) +sensitize_phone_types (EContactEditor *editor, + GtkWidget *combo_box) { GtkTreeModel *model; GtkTreeIter iter; @@ -1585,7 +1610,9 @@ sensitize_phone_types (EContactEditor *editor, GtkWidget *combo_box) } static void -sensitize_phone_record (EContactEditor *editor, gint record, gboolean enabled) +sensitize_phone_record (EContactEditor *editor, + gint record, + gboolean enabled) { GtkWidget *phone_type_combo_box; GtkWidget *phone_entry; @@ -1621,7 +1648,8 @@ sensitize_phone (EContactEditor *editor) } static void -init_im_record_location (EContactEditor *editor, gint record) +init_im_record_location (EContactEditor *editor, + gint record) { #ifdef ENABLE_IM_LOCATION @@ -1658,7 +1686,8 @@ init_im_record_location (EContactEditor *editor, gint record) } static void -init_im_record_service (EContactEditor *editor, gint record) +init_im_record_service (EContactEditor *editor, + gint record) { GtkWidget *service_combo_box; GtkListStore *store; @@ -1914,6 +1943,7 @@ extract_im (EContactEditor *editor) g_free (service_attr_list); } + static void sensitize_im_types (EContactEditor *editor, GtkWidget *combo_box) { @@ -2109,7 +2139,8 @@ fill_in_address_label_textview (EContactEditor *editor, GtkWidget *textview; GtkTextBuffer *text_buffer; - textview_name = g_strdup_printf ("textview-%s-address", address_name [record]); + textview_name = g_strdup_printf ( + "textview-%s-address", address_name [record]); textview = e_builder_get_widget (editor->builder, textview_name); g_free (textview_name); @@ -2498,27 +2529,33 @@ init_simple_field (EContactEditor *editor, GtkWidget *widget) g_signal_connect_swapped ( widget, "activate", G_CALLBACK (entry_activated), editor); + } else if (GTK_IS_COMBO_BOX (widget)) { changed_object = G_OBJECT (widget); g_signal_connect_swapped ( gtk_bin_get_child (GTK_BIN (widget)), "activate", G_CALLBACK (entry_activated), editor); + } else if (GTK_IS_TEXT_VIEW (widget)) { changed_object = G_OBJECT ( gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget))); + } else if (E_IS_URL_ENTRY (widget)) { changed_object = G_OBJECT ( e_url_entry_get_entry (E_URL_ENTRY (widget))); g_signal_connect_swapped ( changed_object, "activate", G_CALLBACK (entry_activated), editor); + } else if (E_IS_DATE_EDIT (widget)) { changed_object = G_OBJECT (widget); + } else if (E_IS_IMAGE_CHOOSER (widget)) { changed_object = G_OBJECT (widget); g_signal_connect ( widget, "changed", G_CALLBACK (image_chooser_changed), editor); + } else if (GTK_IS_TOGGLE_BUTTON (widget)) { g_signal_connect ( widget, "toggled", @@ -2545,27 +2582,27 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) gchar *text = e_contact_get (contact, field_id); gtk_entry_set_text (GTK_ENTRY (widget), STRING_MAKE_NON_NULL (text)); g_free (text); - } - else if (GTK_IS_COMBO_BOX (widget)) { + + } else if (GTK_IS_COMBO_BOX (widget)) { gchar *text = e_contact_get (contact, field_id); gtk_entry_set_text ( GTK_ENTRY (gtk_bin_get_child (GTK_BIN (widget))), STRING_MAKE_NON_NULL (text)); g_free (text); - } - else if (GTK_IS_TEXT_VIEW (widget)) { + + } else if (GTK_IS_TEXT_VIEW (widget)) { GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget)); gchar *text = e_contact_get (contact, field_id); gtk_text_buffer_set_text (buffer, STRING_MAKE_NON_NULL (text), -1); g_free (text); - } - else if (E_IS_URL_ENTRY (widget)) { + + } else if (E_IS_URL_ENTRY (widget)) { GtkWidget *entry = e_url_entry_get_entry (E_URL_ENTRY (widget)); gchar *text = e_contact_get (contact, field_id); gtk_entry_set_text (GTK_ENTRY (entry), STRING_MAKE_NON_NULL (text)); g_free (text); - } - else if (E_IS_DATE_EDIT (widget)) { + + } else if (E_IS_DATE_EDIT (widget)) { EContactDate *date = e_contact_get (contact, field_id); if (date) e_date_edit_set_date ( @@ -2575,8 +2612,8 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) e_date_edit_set_time (E_DATE_EDIT (widget), -1); e_contact_date_free (date); - } - else if (E_IS_IMAGE_CHOOSER (widget)) { + + } else if (E_IS_IMAGE_CHOOSER (widget)) { EContactPhoto *photo = e_contact_get (contact, field_id); if (photo && photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { e_image_chooser_set_image_data ( @@ -2597,13 +2634,13 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) } editor->image_changed = FALSE; e_contact_photo_free (photo); - } - else if (GTK_IS_TOGGLE_BUTTON (widget)) { + + } else if (GTK_IS_TOGGLE_BUTTON (widget)) { gboolean val = e_contact_get (contact, field_id) != NULL; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), val); - } - else { + + } else { g_warning (G_STRLOC ": Unhandled widget class in mappings!"); } @@ -2612,7 +2649,9 @@ fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) } static void -extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) +extract_simple_field (EContactEditor *editor, + GtkWidget *widget, + gint field_id) { EContact *contact; @@ -2621,15 +2660,14 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) if (GTK_IS_ENTRY (widget)) { const gchar *text = gtk_entry_get_text (GTK_ENTRY (widget)); e_contact_set (contact, field_id, (gchar *) text); - } - else if (GTK_IS_COMBO_BOX_TEXT (widget)) { + + } else if (GTK_IS_COMBO_BOX_TEXT (widget)) { gchar *text = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (widget)); e_contact_set (contact, field_id, text); g_free (text); - } - else if (GTK_IS_COMBO_BOX (widget)) { + } else if (GTK_IS_COMBO_BOX (widget)) { GtkTreeIter iter; gchar *text = NULL; @@ -2648,8 +2686,8 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) e_contact_set (contact, field_id, text); g_free (text); - } - else if (GTK_IS_TEXT_VIEW (widget)) { + + } else if (GTK_IS_TEXT_VIEW (widget)) { GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget)); GtkTextIter start, end; gchar *text; @@ -2659,13 +2697,13 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); e_contact_set (contact, field_id, text); g_free (text); - } - else if (E_IS_URL_ENTRY (widget)) { + + } else if (E_IS_URL_ENTRY (widget)) { GtkWidget *entry = e_url_entry_get_entry (E_URL_ENTRY (widget)); const gchar *text = gtk_entry_get_text (GTK_ENTRY (entry)); e_contact_set (contact, field_id, (gchar *) text); - } - else if (E_IS_DATE_EDIT (widget)) { + + } else if (E_IS_DATE_EDIT (widget)) { EContactDate date; if (e_date_edit_get_date ( E_DATE_EDIT (widget), @@ -2675,13 +2713,12 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) e_contact_set (contact, field_id, &date); else e_contact_set (contact, field_id, NULL); - } - else if (E_IS_IMAGE_CHOOSER (widget)) { + + } else if (E_IS_IMAGE_CHOOSER (widget)) { EContactPhoto photo; photo.type = E_CONTACT_PHOTO_TYPE_INLINED; photo.data.inlined.mime_type = NULL; - if (editor->image_changed) - { + if (editor->image_changed) { gchar *img_buff = NULL; if (editor->image_set && e_image_chooser_get_image_data ( @@ -2739,8 +2776,7 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) g_free (format_name); g_object_unref (new); } - } - else if (prompt_response == GTK_RESPONSE_CANCEL) { + } else if (prompt_response == GTK_RESPONSE_CANCEL) { g_object_unref (pixbuf); g_object_unref (loader); return; @@ -2755,19 +2791,19 @@ extract_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) g_free (photo.data.inlined.data); - } - else { + } else { editor->image_changed = FALSE; e_contact_set (contact, E_CONTACT_PHOTO, NULL); } } - } - else if (GTK_IS_TOGGLE_BUTTON (widget)) { - gboolean val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); - e_contact_set (contact, field_id, val?(gpointer) 1:NULL); - } - else { + } else if (GTK_IS_TOGGLE_BUTTON (widget)) { + gboolean val; + + val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); + e_contact_set (contact, field_id, val ? (gpointer) 1 : NULL); + + } else { g_warning (G_STRLOC ": Unhandled widget class in mappings!"); } } @@ -2809,12 +2845,20 @@ init_simple (EContactEditor *editor) /* Update file_as */ widget = e_builder_get_widget (editor->builder, "entry-fullname"); - g_signal_connect (widget, "changed", G_CALLBACK (name_entry_changed), editor); + g_signal_connect ( + widget, "changed", + G_CALLBACK (name_entry_changed), editor); + widget = e_builder_get_widget (editor->builder, "combo-file-as"); gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (widget), 0); - g_signal_connect (widget, "changed", G_CALLBACK (file_as_combo_changed), editor); + g_signal_connect ( + widget, "changed", + G_CALLBACK (file_as_combo_changed), editor); + widget = e_builder_get_widget (editor->builder, "entry-company"); - g_signal_connect (widget, "changed", G_CALLBACK (company_entry_changed), editor); + g_signal_connect ( + widget, "changed", + G_CALLBACK (company_entry_changed), editor); } static void @@ -2836,7 +2880,8 @@ fill_in_simple (EContactEditor *editor) if (!widget) continue; - fill_in_simple_field (editor, widget, simple_field_map[i].field_id); + fill_in_simple_field ( + editor, widget, simple_field_map[i].field_id); } /* --- Special cases --- */ @@ -2860,9 +2905,9 @@ fill_in_simple (EContactEditor *editor) gtk_window_set_title (GTK_WINDOW (editor->app), title); g_free (title); g_free (filename); - } - else - gtk_window_set_title (GTK_WINDOW (editor->app), _("Contact Editor")); + } else + gtk_window_set_title ( + GTK_WINDOW (editor->app), _("Contact Editor")); /* Update file_as combo options */ @@ -2886,7 +2931,8 @@ extract_simple (EContactEditor *editor) if (!widget) continue; - extract_simple_field (editor, widget, simple_field_map[i].field_id); + extract_simple_field ( + editor, widget, simple_field_map[i].field_id); } /* Special cases */ @@ -2956,6 +3002,7 @@ static void init_all (EContactEditor *editor) { GtkRequisition tab_req; + GtkWidget *widget; init_simple (editor); init_email (editor); @@ -2966,11 +3013,13 @@ init_all (EContactEditor *editor) /* with so many scrolled windows, we need to * do some manual sizing */ - gtk_widget_get_preferred_size ( - e_builder_get_widget (editor->builder, "vbox-size-leader"), &tab_req, NULL); + widget = e_builder_get_widget (editor->builder, "vbox-size-leader"); + gtk_widget_get_preferred_size (widget, &tab_req, NULL); + + widget = e_builder_get_widget ( + editor->builder, "scrolledwindow-size-leader"), gtk_widget_set_size_request ( - e_builder_get_widget (editor->builder, "scrolledwindow-size-leader"), - tab_req.width, tab_req.height + 8); + widget, tab_req.width, tab_req.height + 8); } static void @@ -2983,13 +3032,14 @@ contact_editor_book_loaded_cb (GObject *source_object, EClient *client = NULL; GError *error = NULL; - if (!e_client_utils_open_new_finish (source, result, &client, &error)) - client = NULL; + e_client_utils_open_new_finish (source, result, &client, &error); if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_warn_if_fail (client == NULL); g_error_free (error); + goto exit; + } else if (error != NULL) { GtkWidget *source_combo_box; GtkWindow *parent; @@ -3005,24 +3055,26 @@ contact_editor_book_loaded_cb (GObject *source_object, E_SOURCE_COMBO_BOX (source_combo_box), source); g_error_free (error); - } else { - EBookClient *book_client; + goto exit; + } - book_client = E_BOOK_CLIENT (client); - g_return_if_fail (book_client != NULL); + g_return_if_fail (E_IS_CLIENT (client)); - /* FIXME Write a private contact_editor_set_target_client(). */ - g_object_set (editor, "target_client", book_client, NULL); + /* FIXME Write a private contact_editor_set_target_client(). */ + g_object_set (editor, "target_client", client, NULL); - g_object_unref (book_client); - } + g_object_unref (client); +exit: g_object_unref (editor); } static void -source_changed (ESourceComboBox *source_combo_box, EContactEditor *editor) +source_changed (ESourceComboBox *source_combo_box, + EContactEditor *editor) { + ESource *target_source; + ESource *source_source; ESource *source; GtkWindow *parent; @@ -3035,23 +3087,32 @@ source_changed (ESourceComboBox *source_combo_box, EContactEditor *editor) editor->cancellable = NULL; } - if (e_source_equal (e_client_get_source (E_CLIENT (editor->target_client)), source)) + target_source = e_client_get_source (E_CLIENT (editor->target_client)); + source_source = e_client_get_source (E_CLIENT (editor->source_client)); + + if (e_source_equal (target_source, source)) return; - if (e_source_equal (e_client_get_source (E_CLIENT (editor->source_client)), source)) { - g_object_set (editor, "target_client", editor->source_client, NULL); + if (e_source_equal (source_source, source)) { + g_object_set ( + editor, "target_client", + editor->source_client, NULL); return; } editor->cancellable = g_cancellable_new (); - e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, editor->cancellable, + e_client_utils_open_new ( + source, E_CLIENT_SOURCE_TYPE_CONTACTS, + FALSE, editor->cancellable, e_client_utils_authenticate_handler, parent, contact_editor_book_loaded_cb, g_object_ref (editor)); } static void -full_name_response (GtkDialog *dialog, gint response, EContactEditor *editor) +full_name_response (GtkDialog *dialog, + gint response, + EContactEditor *editor) { EContactName *name; GtkWidget *fname_widget; @@ -3065,13 +3126,19 @@ full_name_response (GtkDialog *dialog, gint response, EContactEditor *editor) style = file_as_get_style (editor); - fname_widget = e_builder_get_widget(editor->builder, "entry-fullname"); - if (fname_widget && GTK_IS_ENTRY (fname_widget)) { + fname_widget = e_builder_get_widget ( + editor->builder, "entry-fullname"); + + if (GTK_IS_ENTRY (fname_widget)) { + GtkEntry *entry; gchar *full_name = e_contact_name_to_string (name); - const gchar *old_full_name = gtk_entry_get_text (GTK_ENTRY (fname_widget)); + const gchar *old_full_name; + + entry = GTK_ENTRY (fname_widget); + old_full_name = gtk_entry_get_text (entry); if (strcmp (full_name, old_full_name)) - gtk_entry_set_text (GTK_ENTRY (fname_widget), full_name); + gtk_entry_set_text (entry, full_name); g_free (full_name); } @@ -3080,22 +3147,25 @@ full_name_response (GtkDialog *dialog, gint response, EContactEditor *editor) file_as_set_style (editor, style); } + gtk_widget_destroy (GTK_WIDGET (dialog)); editor->fullname_dialog = NULL; } static gint -full_name_editor_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data) +full_name_editor_delete_event_cb (GtkWidget *widget, + GdkEvent *event, + gpointer data) { - if (widget) { - if (GTK_IS_WIDGET (widget)) - gtk_widget_destroy (widget); - } + if (GTK_IS_WIDGET (widget)) + gtk_widget_destroy (widget); + return TRUE; } static void -full_name_clicked (GtkWidget *button, EContactEditor *editor) +full_name_clicked (GtkWidget *button, + EContactEditor *editor) { GtkDialog *dialog; gboolean fullname_supported; @@ -3112,8 +3182,9 @@ full_name_clicked (GtkWidget *button, EContactEditor *editor) dialog, "editable", fullname_supported & editor->target_editable, NULL); - g_signal_connect(dialog, "response", - G_CALLBACK (full_name_response), editor); + g_signal_connect ( + dialog, "response", + G_CALLBACK (full_name_response), editor); /* Close the fullname dialog if the editor is closed */ g_signal_connect_swapped ( @@ -3125,7 +3196,9 @@ full_name_clicked (GtkWidget *button, EContactEditor *editor) } static void -categories_response (GtkDialog *dialog, gint response, EContactEditor *editor) +categories_response (GtkDialog *dialog, + gint response, + EContactEditor *editor) { const gchar *categories; GtkWidget *entry; @@ -3150,17 +3223,19 @@ categories_response (GtkDialog *dialog, gint response, EContactEditor *editor) } static gint -categories_editor_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data) +categories_editor_delete_event_cb (GtkWidget *widget, + GdkEvent *event, + gpointer data) { - if (widget) { - if (GTK_IS_WIDGET (widget)) - gtk_widget_destroy (widget); - } + if (GTK_IS_WIDGET (widget)) + gtk_widget_destroy (widget); + return TRUE; } static void -categories_clicked (GtkWidget *button, EContactEditor *editor) +categories_clicked (GtkWidget *button, + EContactEditor *editor) { gchar *categories = NULL; GtkDialog *dialog; @@ -3211,9 +3286,12 @@ image_selected (EContactEditor *editor) image_chooser = e_builder_get_widget (editor->builder, "image-chooser"); - g_signal_handlers_block_by_func (image_chooser, image_chooser_changed, editor); - e_image_chooser_set_from_file (E_IMAGE_CHOOSER (image_chooser), file_name); - g_signal_handlers_unblock_by_func (image_chooser, image_chooser_changed, editor); + g_signal_handlers_block_by_func ( + image_chooser, image_chooser_changed, editor); + e_image_chooser_set_from_file ( + E_IMAGE_CHOOSER (image_chooser), file_name); + g_signal_handlers_unblock_by_func ( + image_chooser, image_chooser_changed, editor); editor->image_set = TRUE; editor->image_changed = TRUE; @@ -3247,7 +3325,9 @@ image_cleared (EContactEditor *editor) } static void -file_chooser_response (GtkWidget *widget, gint response, EContactEditor *editor) +file_chooser_response (GtkWidget *widget, + gint response, + EContactEditor *editor) { if (response == GTK_RESPONSE_ACCEPT) image_selected (editor); @@ -3265,7 +3345,8 @@ file_selector_deleted (GtkWidget *widget) } static void -update_preview_cb (GtkFileChooser *file_chooser, gpointer data) +update_preview_cb (GtkFileChooser *file_chooser, + gpointer data) { GtkWidget *preview; gchar *filename = NULL; @@ -3296,7 +3377,8 @@ update_preview_cb (GtkFileChooser *file_chooser, gpointer data) } static void -image_clicked (GtkWidget *button, EContactEditor *editor) +image_clicked (GtkWidget *button, + EContactEditor *editor) { const gchar *title = _("Please select an image for this contact"); const gchar *no_image = _("_No image"); @@ -3348,7 +3430,9 @@ typedef struct { } EditorCloseStruct; static void -contact_removed_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +contact_removed_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EditorCloseStruct *ecs = user_data; @@ -3388,7 +3472,10 @@ contact_removed_cb (GObject *source_object, GAsyncResult *result, gpointer user_ } static void -contact_added_cb (EBookClient *book_client, const GError *error, const gchar *id, gpointer closure) +contact_added_cb (EBookClient *book_client, + const GError *error, + const gchar *id, + gpointer closure) { EditorCloseStruct *ecs = closure; EContactEditor *ce = ecs->ce; @@ -3425,7 +3512,9 @@ contact_added_cb (EBookClient *book_client, const GError *error, const gchar *id } static void -contact_modified_cb (EBookClient *book_client, const GError *error, gpointer closure) +contact_modified_cb (EBookClient *book_client, + const GError *error, + gpointer closure) { EditorCloseStruct *ecs = closure; EContactEditor *ce = ecs->ce; @@ -3451,7 +3540,9 @@ contact_modified_cb (EBookClient *book_client, const GError *error, gpointer clo } static void -contact_modified_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +contact_modified_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); GError *error = NULL; @@ -3466,7 +3557,8 @@ contact_modified_ready_cb (GObject *source_object, GAsyncResult *result, gpointe /* Emits the signal to request saving a contact */ static void -real_save_contact (EContactEditor *ce, gboolean should_close) +real_save_contact (EContactEditor *ce, + gboolean should_close) { EditorCloseStruct *ecs; @@ -3501,10 +3593,13 @@ real_save_contact (EContactEditor *ce, gboolean should_close) } static void -save_contact (EContactEditor *ce, gboolean should_close) +save_contact (EContactEditor *ce, + gboolean should_close) { gchar *uid; - const gchar *name_entry_string, *file_as_entry_string, *company_name_string; + const gchar *name_entry_string; + const gchar *file_as_entry_string; + const gchar *company_name_string; GtkWidget *entry_fullname, *entry_file_as, *company_name; if (!ce->target_client) @@ -3528,9 +3623,13 @@ save_contact (EContactEditor *ce, gboolean should_close) if (strcmp (company_name_string , "")) { if (!strcmp (name_entry_string, "")) - gtk_entry_set_text (GTK_ENTRY (entry_fullname), company_name_string); + gtk_entry_set_text ( + GTK_ENTRY (entry_fullname), + company_name_string); if (!strcmp (file_as_entry_string, "")) - gtk_entry_set_text (GTK_ENTRY (entry_file_as), company_name_string); + gtk_entry_set_text ( + GTK_ENTRY (entry_file_as), + company_name_string); } extract_all (ce); @@ -3616,16 +3715,18 @@ e_contact_editor_is_valid (EABEditor *editor) widget = e_builder_get_widget (ce->builder, "dateedit-birthday"); if (!(e_date_edit_date_is_valid (E_DATE_EDIT (widget)))) { - g_string_append_printf (errmsg, _("'%s' has an invalid format"), - e_contact_pretty_name (E_CONTACT_BIRTH_DATE)); + g_string_append_printf ( + errmsg, _("'%s' has an invalid format"), + e_contact_pretty_name (E_CONTACT_BIRTH_DATE)); validation_error = TRUE; } widget = e_builder_get_widget (ce->builder, "dateedit-anniversary"); if (!(e_date_edit_date_is_valid (E_DATE_EDIT (widget)))) { - g_string_append_printf (errmsg, _("%s'%s' has an invalid format"), - validation_error ? ",\n" : "", - e_contact_pretty_name (E_CONTACT_ANNIVERSARY)); + g_string_append_printf ( + errmsg, _("%s'%s' has an invalid format"), + validation_error ? ",\n" : "", + e_contact_pretty_name (E_CONTACT_ANNIVERSARY)); validation_error = TRUE; } @@ -3635,20 +3736,24 @@ e_contact_editor_is_valid (EABEditor *editor) if (is_non_string_field (field_id)) { if (e_contact_get_const (ce->contact, field_id) == NULL) { - g_string_append_printf (errmsg, _("%s'%s' is empty"), - validation_error ? ",\n" : "", - e_contact_pretty_name (field_id)); + g_string_append_printf ( + errmsg, _("%s'%s' is empty"), + validation_error ? ",\n" : "", + e_contact_pretty_name (field_id)); validation_error = TRUE; break; } } else { - const gchar *text = e_contact_get_const (ce->contact, field_id); + const gchar *text; + + text = e_contact_get_const (ce->contact, field_id); if (STRING_IS_EMPTY (text)) { - g_string_append_printf (errmsg, _("%s'%s' is empty"), - validation_error ? ",\n" : "", - e_contact_pretty_name (field_id)); + g_string_append_printf ( + errmsg, _("%s'%s' is empty"), + validation_error ? ",\n" : "", + e_contact_pretty_name (field_id)); validation_error = TRUE; break; } @@ -3684,25 +3789,24 @@ e_contact_editor_get_window (EABEditor *editor) } static void -file_save_and_close_cb (GtkWidget *widget, gpointer data) +file_save_and_close_cb (GtkWidget *widget, + EContactEditor *ce) { - EContactEditor *ce; - - ce = E_CONTACT_EDITOR (data); save_contact (ce, TRUE); } static void -file_cancel_cb (GtkWidget *widget, gpointer data) +file_cancel_cb (GtkWidget *widget, + EContactEditor *ce) { - EContactEditor *ce = E_CONTACT_EDITOR (data); - eab_editor_close (EAB_EDITOR (ce)); } /* Callback used when the dialog box is destroyed */ static gint -app_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data) +app_delete_event_cb (GtkWidget *widget, + GdkEvent *event, + gpointer data) { EContactEditor *ce; @@ -3833,7 +3937,8 @@ expand_phone_toggle (EContactEditor *ce) { GtkWidget *phone_ext_table; - phone_ext_table = e_builder_get_widget (ce->builder, "table-phone-extended"); + phone_ext_table = e_builder_get_widget ( + ce->builder, "table-phone-extended"); expand_phone (ce, !gtk_widget_get_visible (phone_ext_table)); } @@ -3879,7 +3984,8 @@ e_contact_editor_init (EContactEditor *e_contact_editor) setup_tab_order (builder); - e_contact_editor->app = e_builder_get_widget (builder, "contact editor"); + e_contact_editor->app = + e_builder_get_widget (builder, "contact editor"); widget = e_contact_editor->app; gtk_widget_ensure_style (widget); @@ -3948,11 +4054,13 @@ e_contact_editor_init (EContactEditor *e_contact_editor) widget, "clicked", G_CALLBACK (expand_mail_toggle), e_contact_editor); - widget = e_builder_get_widget (e_contact_editor->builder, "entry-fullname"); + widget = e_builder_get_widget ( + e_contact_editor->builder, "entry-fullname"); if (widget) gtk_widget_grab_focus (widget); - widget = e_builder_get_widget (e_contact_editor->builder, "entry-categories"); + widget = e_builder_get_widget ( + e_contact_editor->builder, "entry-categories"); completion = e_category_completion_new (); gtk_entry_set_completion (GTK_ENTRY (widget), completion); g_object_unref (completion); @@ -3964,7 +4072,8 @@ e_contact_editor_init (EContactEditor *e_contact_editor) G_CALLBACK (app_delete_event_cb), e_contact_editor); /* set the icon */ - gtk_window_set_icon_name (GTK_WINDOW (e_contact_editor->app), "contact-editor"); + gtk_window_set_icon_name ( + GTK_WINDOW (e_contact_editor->app), "contact-editor"); /* show window */ gtk_widget_show (e_contact_editor->app); @@ -3983,13 +4092,17 @@ e_contact_editor_dispose (GObject *object) } if (e_contact_editor->writable_fields) { - e_client_util_free_string_slist (e_contact_editor->writable_fields); + e_client_util_free_string_slist ( + e_contact_editor->writable_fields); e_contact_editor->writable_fields = NULL; } + if (e_contact_editor->required_fields) { - e_client_util_free_string_slist (e_contact_editor->required_fields); + e_client_util_free_string_slist ( + e_contact_editor->required_fields); e_contact_editor->required_fields = NULL; } + if (e_contact_editor->contact) { g_object_unref (e_contact_editor->contact); e_contact_editor->contact = NULL; @@ -4028,19 +4141,27 @@ e_contact_editor_dispose (GObject *object) } static void -supported_fields_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +supported_fields_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EContactEditor *ce = user_data; gchar *prop_value = NULL; GSList *fields; + gboolean success; GError *error = NULL; - if (!e_client_get_backend_property_finish (E_CLIENT (book_client), result, &prop_value, &error)) + success = e_client_get_backend_property_finish ( + E_CLIENT (book_client), result, &prop_value, &error); + + if (!success) prop_value = NULL; - if (error) { - g_debug ("%s: Failed to get supported fields: %s", G_STRFUNC, error->message); + if (error != NULL) { + g_warning ( + "%s: Failed to get supported fields: %s", + G_STRFUNC, error->message); g_error_free (error); } @@ -4065,19 +4186,27 @@ supported_fields_cb (GObject *source_object, GAsyncResult *result, gpointer user } static void -required_fields_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +required_fields_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EContactEditor *ce = user_data; gchar *prop_value = NULL; GSList *fields; + gboolean success; GError *error = NULL; - if (!e_client_get_backend_property_finish (E_CLIENT (book_client), result, &prop_value, &error)) + success = e_client_get_backend_property_finish ( + E_CLIENT (book_client), result, &prop_value, &error); + + if (!success) prop_value = NULL; - if (error) { - g_debug ("%s: Failed to get supported fields: %s", G_STRFUNC, error->message); + if (error != NULL) { + g_warning ( + "%s: Failed to get supported fields: %s", + G_STRFUNC, error->message); g_error_free (error); } @@ -4175,8 +4304,15 @@ e_contact_editor_set_property (GObject *object, editor->target_client, "notify::readonly", G_CALLBACK (notify_readonly_cb), editor); - e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS, NULL, supported_fields_cb, editor); - e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS, NULL, required_fields_cb, editor); + e_client_get_backend_property ( + E_CLIENT (editor->target_client), + BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS, + NULL, supported_fields_cb, editor); + + e_client_get_backend_property ( + E_CLIENT (editor->target_client), + BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS, + NULL, required_fields_cb, editor); } writable = !e_client_is_readonly (E_CLIENT (editor->target_client)); @@ -4202,7 +4338,9 @@ e_contact_editor_set_property (GObject *object, break; if (editor->target_client) { - g_signal_handler_disconnect (editor->target_client, editor->target_editable_id); + g_signal_handler_disconnect ( + editor->target_client, + editor->target_editable_id); g_object_unref (editor->target_client); } @@ -4213,8 +4351,15 @@ e_contact_editor_set_property (GObject *object, editor->target_client, "notify::readonly", G_CALLBACK (notify_readonly_cb), editor); - e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS, NULL, supported_fields_cb, editor); - e_client_get_backend_property (E_CLIENT (editor->target_client), BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS, NULL, required_fields_cb, editor); + e_client_get_backend_property ( + E_CLIENT (editor->target_client), + BOOK_BACKEND_PROPERTY_SUPPORTED_FIELDS, + NULL, supported_fields_cb, editor); + + e_client_get_backend_property ( + E_CLIENT (editor->target_client), + BOOK_BACKEND_PROPERTY_REQUIRED_FIELDS, + NULL, required_fields_cb, editor); if (!editor->is_new_contact) editor->changed = TRUE; @@ -4235,7 +4380,8 @@ e_contact_editor_set_property (GObject *object, case PROP_CONTACT: if (editor->contact) g_object_unref (editor->contact); - editor->contact = e_contact_duplicate (E_CONTACT (g_value_get_object (value))); + editor->contact = e_contact_duplicate ( + E_CONTACT (g_value_get_object (value))); fill_in_all (editor); editor->changed = FALSE; break; @@ -4269,14 +4415,18 @@ e_contact_editor_set_property (GObject *object, if (editor->writable_fields) e_client_util_free_string_slist (editor->writable_fields); - editor->writable_fields = e_client_util_copy_string_slist (NULL, g_value_get_pointer (value)); + editor->writable_fields = + e_client_util_copy_string_slist ( + NULL, g_value_get_pointer (value)); sensitize_all (editor); break; case PROP_REQUIRED_FIELDS: if (editor->required_fields) e_client_util_free_string_slist (editor->required_fields); - editor->required_fields = e_client_util_copy_string_slist (NULL, g_value_get_pointer (value)); + editor->required_fields = + e_client_util_copy_string_slist ( + NULL, g_value_get_pointer (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 4de9060f60..0b33f8aa79 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -121,44 +121,51 @@ quick_add_set_vcard (QuickAdd *qa, const gchar *vcard) } static void -merge_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +merge_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { ESource *source = E_SOURCE (source_object); QuickAdd *qa = user_data; EClient *client = NULL; GError *error = NULL; - if (!e_client_utils_open_new_finish (source, result, &client, &error)) - client = NULL; + e_client_utils_open_new_finish (source, result, &client, &error); /* Ignore cancellations. */ if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { + g_warn_if_fail (client == NULL); g_error_free (error); return; } - if (!error) { - if (!e_client_is_readonly (client)) - eab_merging_book_add_contact (E_BOOK_CLIENT (client), qa->contact, NULL, NULL); - else - e_alert_run_dialog_for_args (e_shell_get_active_window (NULL), - "addressbook:error-read-only", - e_source_peek_name (e_client_get_source (client)), - NULL); - - if (qa->cb) - qa->cb (qa->contact, qa->closure); - g_object_unref (client); - } else { - /* Something went wrong. */ - if (client) - g_object_unref (client); + if (error != NULL) { + g_warn_if_fail (client == NULL); if (qa->cb) qa->cb (NULL, qa->closure); g_error_free (error); + quick_add_unref (qa); + return; } + g_return_if_fail (E_IS_CLIENT (client)); + + if (!e_client_is_readonly (client)) + eab_merging_book_add_contact ( + E_BOOK_CLIENT (client), qa->contact, NULL, NULL); + else + e_alert_run_dialog_for_args ( + e_shell_get_active_window (NULL), + "addressbook:error-read-only", + e_source_peek_name (source), + NULL); + + if (qa->cb) + qa->cb (qa->contact, qa->closure); + + g_object_unref (client); + quick_add_unref (qa); } @@ -172,7 +179,9 @@ quick_add_merge_contact (QuickAdd *qa) qa->cancellable = g_cancellable_new (); - e_client_utils_open_new (qa->source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, qa->cancellable, + e_client_utils_open_new ( + qa->source, E_CLIENT_SOURCE_TYPE_CONTACTS, + FALSE, qa->cancellable, e_client_utils_authenticate_handler, NULL, merge_cb, qa); } @@ -186,10 +195,11 @@ contact_added_cb (EContactEditor *ce, EContact *contact, gpointer closure) { - QuickAdd *qa = (QuickAdd *) g_object_get_data (G_OBJECT (ce), "quick_add"); + QuickAdd *qa; - if (qa) { + qa = g_object_get_data (G_OBJECT (ce), "quick_add"); + if (qa) { if (qa->cb) qa->cb (qa->contact, qa->closure); @@ -199,9 +209,12 @@ contact_added_cb (EContactEditor *ce, } static void -editor_closed_cb (GtkWidget *w, gpointer closure) +editor_closed_cb (GtkWidget *w, + gpointer closure) { - QuickAdd *qa = (QuickAdd *) g_object_get_data (G_OBJECT (w), "quick_add"); + QuickAdd *qa; + + qa = g_object_get_data (G_OBJECT (w), "quick_add"); if (qa) /* We don't need to unref qa because we set_data_full below */ @@ -252,46 +265,51 @@ ce_have_contact (EBookClient *book_client, G_OBJECT (contact_editor), "quick_add", qa, (GDestroyNotify) quick_add_unref); - g_signal_connect (contact_editor, - "contact_added", - G_CALLBACK (contact_added_cb), - NULL); - g_signal_connect (contact_editor, - "editor_closed", - G_CALLBACK (editor_closed_cb), - NULL); + g_signal_connect ( + contact_editor, "contact_added", + G_CALLBACK (contact_added_cb), NULL); + g_signal_connect ( + contact_editor, "editor_closed", + G_CALLBACK (editor_closed_cb), NULL); g_object_unref (book_client); } } static void -ce_have_book (GObject *source_object, GAsyncResult *result, gpointer user_data) +ce_have_book (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { ESource *source = E_SOURCE (source_object); QuickAdd *qa = user_data; EClient *client = NULL; GError *error = NULL; - if (!e_client_utils_open_new_finish (source, result, &client, &error)) - client = NULL; + e_client_utils_open_new_finish (source, result, &client, &error); /* Ignore cancellations. */ if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_CANCELLED) || g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { + g_warn_if_fail (client == NULL); g_error_free (error); return; } - if (error) { - if (client) - g_object_unref (client); - g_warning ("Couldn't open local address book (%s).", error->message); + if (error != NULL) { + g_warn_if_fail (client == NULL); + g_warning ( + "Couldn't open local address book (%s).", + error->message); quick_add_unref (qa); g_error_free (error); - } else { - eab_merging_book_find_contact (E_BOOK_CLIENT (client), qa->contact, ce_have_contact, qa); + return; } + + g_return_if_fail (E_IS_CLIENT (client)); + + eab_merging_book_find_contact ( + E_BOOK_CLIENT (client), qa->contact, ce_have_contact, qa); } static void @@ -304,7 +322,9 @@ edit_contact (QuickAdd *qa) qa->cancellable = g_cancellable_new (); - e_client_utils_open_new (qa->source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, qa->cancellable, + e_client_utils_open_new ( + qa->source, E_CLIENT_SOURCE_TYPE_CONTACTS, + FALSE, qa->cancellable, e_client_utils_authenticate_handler, NULL, ce_have_book, qa); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index e1106a2fee..7ad6c124cc 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -187,7 +187,7 @@ contact_list_editor_notify_cb (EContactListEditor *editor, static gboolean contact_list_editor_add_destination (GtkWidget *widget, - EDestination *dest) + EDestination *dest) { EContactListEditor *editor = contact_list_editor_extract (widget); EContactListModel *model = E_CONTACT_LIST_MODEL (editor->priv->model); @@ -200,20 +200,26 @@ contact_list_editor_add_destination (GtkWidget *widget, const gchar *name = e_destination_get_name (dest); if (e_contact_list_model_has_uid (model, id)) { - if (e_alert_run_dialog_for_args (GTK_WINDOW (WIDGET (DIALOG)), - "addressbook:ask-list-add-list-exists", name, NULL) != GTK_RESPONSE_YES) + gint response; + + response = e_alert_run_dialog_for_args ( + GTK_WINDOW (WIDGET (DIALOG)), + "addressbook:ask-list-add-list-exists", + name, NULL); + if (response != GTK_RESPONSE_YES) return FALSE; } else { const GList *l_dests, *l_dest; gint reply; - /* Check the new list mail-by-mail for conflicts and eventually ask user what to do - with all conflicts */ + /* Check the new list mail-by-mail for conflicts and + * eventually ask user what to do with all conflicts. */ l_dests = e_destination_list_get_dests (dest); for (l_dest = l_dests; l_dest; l_dest = l_dest->next) { if (e_contact_list_model_has_email (model, e_destination_get_email (l_dest->data))) { - reply = e_alert_run_dialog_for_args (GTK_WINDOW (WIDGET (DIALOG)), - "addressbook:ask-list-add-some-mails-exist", NULL); + reply = e_alert_run_dialog_for_args ( + GTK_WINDOW (WIDGET (DIALOG)), + "addressbook:ask-list-add-some-mails-exist", NULL); if (reply == GTK_RESPONSE_YES) { ignore_conflicts = TRUE; break; @@ -237,7 +243,8 @@ contact_list_editor_add_destination (GtkWidget *widget, } /* always add to the root level */ - path = e_contact_list_model_add_destination (model, dest, NULL, ignore_conflicts); + path = e_contact_list_model_add_destination ( + model, dest, NULL, ignore_conflicts); if (path) { contact_list_editor_scroll_to_end (editor); gtk_tree_view_expand_to_path (treeview, path); @@ -268,7 +275,8 @@ contact_list_editor_add_email (EContactListEditor *editor, } g_object_unref (addr); - priv->changed = contact_list_editor_add_destination (WIDGET (DIALOG), dest) || priv->changed; + priv->changed = contact_list_editor_add_destination ( + WIDGET (DIALOG), dest) || priv->changed; contact_list_editor_update (editor); } @@ -292,6 +300,8 @@ contact_list_editor_book_loaded_cb (GObject *source_object, if (error != NULL) { GtkWindow *parent; + g_warn_if_fail (client == NULL); + parent = eab_editor_get_window (EAB_EDITOR (editor)); eab_load_error_dialog (GTK_WIDGET (parent), NULL, source, error); @@ -303,15 +313,16 @@ contact_list_editor_book_loaded_cb (GObject *source_object, goto exit; } + g_return_if_fail (E_IS_CLIENT (client)); + book_client = E_BOOK_CLIENT (client); - g_return_if_fail (E_IS_BOOK_CLIENT (book_client)); entry = E_NAME_SELECTOR_ENTRY (WIDGET (EMAIL_ENTRY)); contact_store = e_name_selector_entry_peek_contact_store (entry); e_contact_store_add_client (contact_store, book_client); e_contact_list_editor_set_client (editor, book_client); - g_object_unref (book_client); + g_object_unref (client); exit: g_object_unref (editor); @@ -905,9 +916,12 @@ contact_list_editor_source_menu_changed_cb (GtkWidget *widget) if (e_source_equal (e_client_get_source (E_CLIENT (editor->priv->book_client)), source)) return; - e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, - e_client_utils_authenticate_handler, eab_editor_get_window (EAB_EDITOR (editor)), - contact_list_editor_book_loaded_cb, g_object_ref (editor)); + e_client_utils_open_new ( + source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, + e_client_utils_authenticate_handler, + eab_editor_get_window (EAB_EDITOR (editor)), + contact_list_editor_book_loaded_cb, + g_object_ref (editor)); } gboolean @@ -1148,7 +1162,9 @@ setup_custom_widgets (EContactListEditor *editor) g_object_unref (source_list); if (error) { - g_debug ("%s: Failed to get sources: %s", G_STRFUNC, error->message); + g_warning ( + "%s: Failed to get sources: %s", + G_STRFUNC, error->message); g_error_free (error); } @@ -1650,7 +1666,7 @@ e_contact_list_editor_get_client (EContactListEditor *editor) void e_contact_list_editor_set_client (EContactListEditor *editor, - EBookClient *book_client) + EBookClient *book_client) { g_return_if_fail (E_IS_CONTACT_LIST_EDITOR (editor)); g_return_if_fail (E_IS_BOOK_CLIENT (book_client)); @@ -1659,7 +1675,8 @@ e_contact_list_editor_set_client (EContactListEditor *editor, g_object_unref (editor->priv->book_client); editor->priv->book_client = g_object_ref (book_client); - editor->priv->allows_contact_lists = e_client_check_capability (E_CLIENT (editor->priv->book_client), "contact-lists"); + editor->priv->allows_contact_lists = e_client_check_capability ( + E_CLIENT (editor->priv->book_client), "contact-lists"); contact_list_editor_update (editor); @@ -1667,7 +1684,10 @@ e_contact_list_editor_set_client (EContactListEditor *editor, } static void -save_contact_list (GtkTreeModel *model, GtkTreeIter *iter, GSList **attrs, gint *parent_id) +save_contact_list (GtkTreeModel *model, + GtkTreeIter *iter, + GSList **attrs, + gint *parent_id) { EDestination *dest; EVCardAttribute *attr; @@ -1704,7 +1724,6 @@ save_contact_list (GtkTreeModel *model, GtkTreeIter *iter, GSList **attrs, gint e_vcard_attribute_add_param_with_value (attr, e_vcard_attribute_param_new (EVC_PARENT_CL), pid_str); - *attrs = g_slist_prepend (*attrs, attr); g_object_unref (dest); @@ -1788,8 +1807,10 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, /* The root destination */ EDestination *list_dest = e_destination_new (); - file_as = e_contact_get_const (priv->contact, E_CONTACT_FILE_AS); - show_addresses = GPOINTER_TO_INT (e_contact_get (priv->contact, E_CONTACT_LIST_SHOW_ADDRESSES)); + file_as = e_contact_get_const ( + priv->contact, E_CONTACT_FILE_AS); + show_addresses = GPOINTER_TO_INT (e_contact_get ( + priv->contact, E_CONTACT_LIST_SHOW_ADDRESSES)); if (file_as == NULL) file_as = ""; @@ -1810,7 +1831,9 @@ e_contact_list_editor_set_contact (EContactListEditor *editor, dests = e_destination_list_get_root_dests (list_dest); for (dest = dests; dest; dest = dest->next) { GtkTreePath *path; - path = e_contact_list_model_add_destination (E_CONTACT_LIST_MODEL (priv->model), dest->data, NULL, TRUE); + path = e_contact_list_model_add_destination ( + E_CONTACT_LIST_MODEL (priv->model), + dest->data, NULL, TRUE); gtk_tree_path_free (path); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c index b94e8e79c3..e4eee15cb1 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c @@ -132,7 +132,7 @@ e_contact_list_model_has_email (EContactListModel *model, gboolean e_contact_list_model_has_uid (EContactListModel *model, - const gchar* uid) + const gchar *uid) { return (g_hash_table_lookup (model->priv->uids_table, uid) != NULL); } diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index 8295b77e7e..fd6ad8c012 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -573,7 +573,9 @@ match_search_info_free (MatchSearchInfo *info) } static void -query_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +query_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { MatchSearchInfo *info = (MatchSearchInfo *) user_data; EABContactMatchType best_match = EAB_CONTACT_MATCH_NONE; @@ -584,12 +586,21 @@ query_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) GError *error = NULL; const GSList *ii; - if (result && !e_book_client_get_contacts_finish (book_client, result, &contacts, &error)) { - g_debug ("%s: Failed to get contacts: %s\n", G_STRFUNC, error ? error->message : "Unknown error"); - if (error) - g_error_free (error); + if (result != NULL) + e_book_client_get_contacts_finish ( + book_client, result, &contacts, &error); + + if (error != NULL) { + g_warning ( + "%s: Failed to get contacts: %s\n", + G_STRFUNC, error->message); + g_error_free (error); + + info->cb ( + info->contact, NULL, + EAB_CONTACT_MATCH_NONE, + info->closure); - info->cb (info->contact, NULL, EAB_CONTACT_MATCH_NONE, info->closure); match_search_info_free (info); g_object_unref (book_client); return; @@ -751,10 +762,10 @@ book_loaded_cb (GObject *source_object, MatchSearchInfo *info = user_data; EClient *client = NULL; - if (!e_client_utils_open_new_finish (source, result, &client, NULL)) - client = NULL; + e_client_utils_open_new_finish (source, result, &client, NULL); - use_common_book_client (client ? E_BOOK_CLIENT (client): NULL, info); + /* Client may be NULL; don't use a type cast macro. */ + use_common_book_client ((EBookClient *) client, info); } void diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index 99bb2d39fb..557af481bb 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -96,7 +96,9 @@ finished_lookup (void) merging_queue = g_list_remove_link (merging_queue, merging_queue); running_merge_requests++; - eab_contact_locate_match_full (lookup->book_client, lookup->contact, lookup->avoid, match_query_callback, lookup); + eab_contact_locate_match_full ( + lookup->book_client, lookup->contact, + lookup->avoid, match_query_callback, lookup); } } @@ -112,7 +114,10 @@ free_lookup (EContactMergingLookup *lookup) } static void -final_id_cb (EBookClient *book_client, const GError *error, const gchar *id, gpointer closure) +final_id_cb (EBookClient *book_client, + const GError *error, + const gchar *id, + gpointer closure) { EContactMergingLookup *lookup = closure; @@ -125,12 +130,19 @@ final_id_cb (EBookClient *book_client, const GError *error, const gchar *id, gpo } static void -final_cb_as_id (EBookClient *book_client, const GError *error, gpointer closure) +final_cb_as_id (EBookClient *book_client, + const GError *error, + gpointer closure) { EContactMergingLookup *lookup = closure; if (lookup->id_cb) - lookup->id_cb (lookup->book_client, error, lookup->contact ? e_contact_get_const (lookup->contact, E_CONTACT_UID) : NULL, lookup->closure); + lookup->id_cb ( + lookup->book_client, error, + lookup->contact ? + e_contact_get_const ( + lookup->contact, E_CONTACT_UID) : NULL, + lookup->closure); free_lookup (lookup); @@ -138,7 +150,9 @@ final_cb_as_id (EBookClient *book_client, const GError *error, gpointer closure) } static void -final_cb (EBookClient *book_client, const GError *error, gpointer closure) +final_cb (EBookClient *book_client, + const GError *error, + gpointer closure) { EContactMergingLookup *lookup = closure; @@ -151,7 +165,9 @@ final_cb (EBookClient *book_client, const GError *error, gpointer closure) } static void -modify_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +modify_contact_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EContactMergingLookup *lookup = user_data; @@ -172,7 +188,9 @@ modify_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer } static void -add_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +add_contact_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EContactMergingLookup *lookup = user_data; @@ -251,7 +269,9 @@ dropdown_changed (GtkWidget *dropdown, dropdown_data *data) } static void -remove_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +remove_contact_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EContactMergingLookup *lookup = user_data; @@ -262,12 +282,16 @@ remove_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer e_book_client_remove_contact_finish (book_client, result, &error); - if (error) { - g_debug ("%s: Failed to remove contact: %s", G_STRFUNC, error->message); + if (error != NULL) { + g_warning ( + "%s: Failed to remove contact: %s", + G_STRFUNC, error->message); g_error_free (error); } - e_book_client_add_contact (book_client, lookup->contact, NULL, add_contact_ready_cb, lookup); + e_book_client_add_contact ( + book_client, lookup->contact, NULL, + add_contact_ready_cb, lookup); } static gint diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 497b8fe353..2a34ccf3c0 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -130,8 +130,11 @@ remove_book_view (EAddressbookModel *model) GError *error = NULL; e_book_client_view_stop (model->priv->client_view, &error); - if (error) { - g_debug ("%s: Failed to stop client view: %s", G_STRFUNC, error->message); + + if (error != NULL) { + g_warning ( + "%s: Failed to stop client view: %s", + G_STRFUNC, error->message); g_error_free (error); } @@ -166,7 +169,9 @@ update_folder_bar_message (EAddressbookModel *model) } static void -view_create_contact_cb (EBookClientView *client_view, const GSList *contact_list, EAddressbookModel *model) +view_create_contact_cb (EBookClientView *client_view, + const GSList *contact_list, + EAddressbookModel *model) { GPtrArray *array; guint count; @@ -198,7 +203,9 @@ sort_descending (gconstpointer ca, } static void -view_remove_contact_cb (EBookClientView *client_view, const GSList *ids, EAddressbookModel *model) +view_remove_contact_cb (EBookClientView *client_view, + const GSList *ids, + EAddressbookModel *model) { /* XXX we should keep a hash around instead of this O(n*m) loop */ const GSList *iter; @@ -252,7 +259,9 @@ view_remove_contact_cb (EBookClientView *client_view, const GSList *ids, EAddres } static void -view_modify_contact_cb (EBookClientView *client_view, const GSList *contact_list, EAddressbookModel *model) +view_modify_contact_cb (EBookClientView *client_view, + const GSList *contact_list, + EAddressbookModel *model) { GPtrArray *array; @@ -291,7 +300,10 @@ view_modify_contact_cb (EBookClientView *client_view, const GSList *contact_list } static void -view_progress_cb (EBookClientView *client_view, guint percent, const gchar *message, EAddressbookModel *model) +view_progress_cb (EBookClientView *client_view, + guint percent, + const gchar *message, + EAddressbookModel *model) { if (model->priv->remove_status_id) g_source_remove (model->priv->remove_status_id); @@ -301,7 +313,9 @@ view_progress_cb (EBookClientView *client_view, guint percent, const gchar *mess } static void -view_complete_cb (EBookClientView *client_view, const GError *error, EAddressbookModel *model) +view_complete_cb (EBookClientView *client_view, + const GError *error, + EAddressbookModel *model) { model->priv->search_in_progress = FALSE; view_progress_cb (client_view, -1, NULL, model); @@ -310,23 +324,30 @@ view_complete_cb (EBookClientView *client_view, const GError *error, EAddressboo } static void -readonly_cb (EBookClient *book_client, EAddressbookModel *model) +readonly_cb (EBookClient *book_client, + EAddressbookModel *model) { if (!model->priv->editable_set) { - model->priv->editable = !e_client_is_readonly (E_CLIENT (book_client)); + model->priv->editable = + !e_client_is_readonly (E_CLIENT (book_client)); - g_signal_emit (model, signals[WRITABLE_STATUS], 0, model->priv->editable); + g_signal_emit ( + model, signals[WRITABLE_STATUS], 0, + model->priv->editable); } } static void -backend_died_cb (EBookClient *book_client, EAddressbookModel *model) +backend_died_cb (EBookClient *book_client, + EAddressbookModel *model) { g_signal_emit (model, signals[BACKEND_DIED], 0); } static void -client_view_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +client_view_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EBookClientView *client_view = NULL; @@ -372,8 +393,11 @@ client_view_ready_cb (GObject *source_object, GAsyncResult *result, gpointer use if (model->priv->client_view) { e_book_client_view_start (model->priv->client_view, &error); - if (error) { - g_debug ("%s: Failed to start client view: %s", G_STRFUNC, error->message); + + if (error != NULL) { + g_warning ( + "%s: Failed to start client view: %s", + G_STRFUNC, error->message); g_error_free (error); } } @@ -383,7 +407,7 @@ static gboolean addressbook_model_idle_cb (EAddressbookModel *model) { model->priv->client_view_idle_id = 0; - + if (model->priv->book_client && model->priv->query_str) { remove_book_view (model); @@ -826,7 +850,7 @@ e_addressbook_model_get_client (EAddressbookModel *model) void e_addressbook_model_set_client (EAddressbookModel *model, - EBookClient *book_client) + EBookClient *book_client) { g_return_if_fail (E_IS_ADDRESSBOOK_MODEL (model)); g_return_if_fail (E_IS_BOOK_CLIENT (book_client)); @@ -862,7 +886,8 @@ e_addressbook_model_set_client (EAddressbookModel *model, G_CALLBACK (backend_died_cb), model); if (!model->priv->editable_set) { - model->priv->editable = !e_client_is_readonly (E_CLIENT (book_client)); + model->priv->editable = + !e_client_is_readonly (E_CLIENT (book_client)); g_signal_emit ( model, signals[WRITABLE_STATUS], 0, model->priv->editable); diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index 954b1e19b9..b6bfa01537 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -104,15 +104,20 @@ merge_context_free (MergeContext *merge_context) } static void -addressbook_selector_removed_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +addressbook_selector_removed_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); MergeContext *merge_context = user_data; GError *error = NULL; e_book_client_remove_contact_finish (book_client, result, &error); - if (error) { - g_debug ("%s: Failed to remove contact: %s", G_STRFUNC, error->message); + + if (error != NULL) { + g_warning ( + "%s: Failed to remove contact: %s", + G_STRFUNC, error->message); g_error_free (error); } @@ -252,7 +257,9 @@ addressbook_selector_constructed (GObject *object) } static void -target_client_open_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +target_client_open_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { ESource *source = E_SOURCE (source_object); MergeContext *merge_context = user_data; @@ -261,18 +268,24 @@ target_client_open_ready_cb (GObject *source_object, GAsyncResult *result, gpoin g_return_if_fail (merge_context != NULL); - if (!e_client_utils_open_new_finish (source, result, &client, &error)) - client = NULL; + e_client_utils_open_new_finish (source, result, &client, &error); - if (error) { - g_debug ("%s: Failed to open targer client: %s", G_STRFUNC, error->message); + if (error != NULL) { + g_warn_if_fail (client == NULL); + g_warning ( + "%s: Failed to open targer client: %s", + G_STRFUNC, error->message); g_error_free (error); } + g_return_if_fail (E_IS_CLIENT (client)); + merge_context->target_client = client ? E_BOOK_CLIENT (client) : NULL; if (!merge_context->target_client) { - g_slist_foreach (merge_context->remaining_contacts, (GFunc) g_object_unref, NULL); + g_slist_foreach ( + merge_context->remaining_contacts, + (GFunc) g_object_unref, NULL); g_slist_free (merge_context->remaining_contacts); merge_context_free (merge_context); diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 1de028c9fa..55310949b0 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1266,9 +1266,9 @@ report_and_free_error_if_any (GError *error) } if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_PERMISSION_DENIED)) { - e_alert_run_dialog_for_args (e_shell_get_active_window (NULL), - "addressbook:contact-delete-error-perm", - NULL); + e_alert_run_dialog_for_args ( + e_shell_get_active_window (NULL), + "addressbook:contact-delete-error-perm", NULL); } else { eab_error_dialog (NULL, _("Failed to delete contact"), error); } @@ -1280,7 +1280,9 @@ report_and_free_error_if_any (GError *error) * which a user doesnt have write permission */ static void -remove_contacts_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +remove_contacts_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); GError *error = NULL; @@ -1291,7 +1293,9 @@ remove_contacts_cb (GObject *source_object, GAsyncResult *result, gpointer user_ } static void -remove_contact_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +remove_contact_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); GError *error = NULL; @@ -1415,13 +1419,17 @@ e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) GSList *ids = NULL; for (l = list; l; l = g_slist_next (l)) { + const gchar *uid; + contact = l->data; - ids = g_slist_prepend (ids, (gpointer) e_contact_get_const (contact, E_CONTACT_UID)); + uid = e_contact_get_const (contact, E_CONTACT_UID); + ids = g_slist_prepend (ids, (gpointer) uid); } /* Remove the cards all at once. */ - e_book_client_remove_contacts (book_client, ids, NULL, remove_contacts_cb, NULL); + e_book_client_remove_contacts ( + book_client, ids, NULL, remove_contacts_cb, NULL); g_slist_free (ids); } else { @@ -1429,7 +1437,9 @@ e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) contact = l->data; /* Remove the card. */ - e_book_client_remove_contact (book_client, contact, NULL, remove_contact_cb, NULL); + e_book_client_remove_contact ( + book_client, contact, NULL, + remove_contact_cb, NULL); } } @@ -1531,11 +1541,14 @@ struct TransferContactsData }; static void -all_contacts_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +all_contacts_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); struct TransferContactsData *tcd = user_data; EShellView *shell_view; + EShellContent *shell_content; EAlertSink *alert_sink; GSList *contacts = NULL; GError *error = NULL; @@ -1547,7 +1560,8 @@ all_contacts_ready_cb (GObject *source_object, GAsyncResult *result, gpointer us contacts = NULL; shell_view = e_addressbook_view_get_shell_view (tcd->view); - alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); + shell_content = e_shell_view_get_shell_content (shell_view); + alert_sink = E_ALERT_SINK (shell_content); if (error) { e_alert_submit ( @@ -1555,7 +1569,9 @@ all_contacts_ready_cb (GObject *source_object, GAsyncResult *result, gpointer us error->message, NULL); g_error_free (error); } else if (contacts) { - eab_transfer_contacts (book_client, contacts, tcd->delete_from_source, alert_sink); + eab_transfer_contacts ( + book_client, contacts, + tcd->delete_from_source, alert_sink); } g_object_unref (tcd->view); @@ -1584,17 +1600,23 @@ view_transfer_contacts (EAddressbookView *view, tcd->delete_from_source = delete_from_source; tcd->view = g_object_ref (view); - e_book_client_get_contacts (book_client, query_str, NULL, all_contacts_ready_cb, tcd); + e_book_client_get_contacts ( + book_client, query_str, NULL, + all_contacts_ready_cb, tcd); } else { GSList *contacts = NULL; EShellView *shell_view; + EShellContent *shell_content; EAlertSink *alert_sink; shell_view = e_addressbook_view_get_shell_view (view); - alert_sink = E_ALERT_SINK (e_shell_view_get_shell_content (shell_view)); + shell_content = e_shell_view_get_shell_content (shell_view); + alert_sink = E_ALERT_SINK (shell_content); + contacts = e_addressbook_view_get_selected (view); - eab_transfer_contacts (book_client, contacts, delete_from_source, alert_sink); + eab_transfer_contacts ( + book_client, contacts, delete_from_source, alert_sink); } } diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index ab66e8d554..76516fc119 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -505,8 +505,8 @@ render_contact_list_row (GString *buffer, static void render_contact_list_vertical (GString *buffer, - EContact *contact, - EABContactDisplay *display) + EContact *contact, + EABContactDisplay *display) { EDestination *destination; const GList *dest, *dests; @@ -523,7 +523,7 @@ render_contact_list_vertical (GString *buffer, for (dest = dests; dest; dest = dest->next) { render_contact_list_row (buffer, dest->data, display); - } + } g_string_append (buffer, "
"); g_string_append (buffer, ""); @@ -533,8 +533,8 @@ render_contact_list_vertical (GString *buffer, static void render_contact_list_horizontal (GString *buffer, - EContact *contact, - EABContactDisplay *display) + EContact *contact, + EABContactDisplay *display) { EDestination *destination; const GList *dest, *dests; @@ -549,9 +549,8 @@ render_contact_list_horizontal (GString *buffer, "", _("List Members:")); g_string_append (buffer, ""); - for (dest = dests; dest; dest = dest->next) { + for (dest = dests; dest; dest = dest->next) render_contact_list_row (buffer, dest->data, display); - } g_string_append (buffer, "
"); g_string_append (buffer, ""); @@ -562,7 +561,7 @@ render_contact_list_horizontal (GString *buffer, static void render_contact_list (GString *buffer, EContact *contact, - EABContactDisplay *display) + EABContactDisplay *display) { if (display->priv->orientation == GTK_ORIENTATION_VERTICAL) diff --git a/addressbook/gui/widgets/eab-contact-display.h b/addressbook/gui/widgets/eab-contact-display.h index f7561f8779..610714800b 100644 --- a/addressbook/gui/widgets/eab-contact-display.h +++ b/addressbook/gui/widgets/eab-contact-display.h @@ -92,9 +92,11 @@ GtkOrientation eab_contact_display_get_orientation void eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation orientation); - -gboolean eab_contact_display_get_show_maps (EABContactDisplay *display); -void eab_contact_display_set_show_maps (EABContactDisplay *display, gboolean display_maps); +gboolean eab_contact_display_get_show_maps + (EABContactDisplay *display); +void eab_contact_display_set_show_maps + (EABContactDisplay *display, + gboolean display_maps); G_END_DECLS diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 7b94c85233..d910b339b4 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -374,7 +374,9 @@ struct ContactCopyProcess_ { static void process_unref (ContactCopyProcess *process); static void -remove_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +remove_contact_ready_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); ContactCopyProcess *process = user_data; @@ -382,8 +384,10 @@ remove_contact_ready_cb (GObject *source_object, GAsyncResult *result, gpointer e_book_client_remove_contact_by_uid_finish (book_client, result, &error); - if (error) { - g_debug ("%s: Remove contact by uid failed: %s", G_STRFUNC, error->message); + if (error != NULL) { + g_warning ( + "%s: Remove contact by uid failed: %s", + G_STRFUNC, error->message); g_error_free (error); } @@ -474,29 +478,33 @@ do_copy (gpointer data, gpointer user_data) } static void -book_loaded_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) +book_loaded_cb (GObject *source_object, + GAsyncResult *result, + gpointer user_data) { ESource *destination = E_SOURCE (source_object); ContactCopyProcess *process = user_data; EClient *client = NULL; - EBookClient *book_client; GError *error = NULL; - if (!e_client_utils_open_new_finish (destination, result, &client, &error)) - client = NULL; - - book_client = client ? E_BOOK_CLIENT (client) : NULL; + e_client_utils_open_new_finish (destination, result, &client, &error); - if (book_client != NULL) { - g_warn_if_fail (error == NULL); - process->destination = book_client; - process->book_status = TRUE; - g_slist_foreach (process->contacts, do_copy, process); - } else if (error != NULL) { - g_debug ("%s: Failed to open destination client: %s", G_STRFUNC, error->message); + if (error != NULL) { + g_warn_if_fail (client == NULL); + g_warning ( + "%s: Failed to open destination client: %s", + G_STRFUNC, error->message); g_error_free (error); + goto exit; } + g_return_if_fail (E_IS_CLIENT (client)); + + process->destination = E_BOOK_CLIENT (client); + process->book_status = TRUE; + g_slist_foreach (process->contacts, do_copy, process); + +exit: process_unref (process); } -- cgit v1.2.3 From cdf7dc43ec5a42ec9962223e54ec80ce678a807e Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 17 Aug 2011 08:57:32 +0200 Subject: Bug #656722 - Incorrect prototype of notify:: signal callback --- addressbook/gui/contact-editor/e-contact-editor.c | 2 +- addressbook/gui/widgets/e-addressbook-model.c | 30 +++++++++-------------- 2 files changed, 12 insertions(+), 20 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 3d76a401eb..5dd02b48e6 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -4253,7 +4253,7 @@ e_contact_editor_new (EShell *shell, } static void -notify_readonly_cb (EBookClient *book_client, EContactEditor *ce) +notify_readonly_cb (EBookClient *book_client, GParamSpec *pspec, EContactEditor *ce) { gint new_target_editable; gboolean changed = FALSE; diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 2a34ccf3c0..dc1068dea3 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -52,7 +52,6 @@ struct _EAddressbookModelPrivate { guint search_in_progress : 1; guint editable : 1; - guint editable_set : 1; guint first_get_view : 1; }; @@ -325,16 +324,10 @@ view_complete_cb (EBookClientView *client_view, static void readonly_cb (EBookClient *book_client, + GParamSpec *pspec, EAddressbookModel *model) { - if (!model->priv->editable_set) { - model->priv->editable = - !e_client_is_readonly (E_CLIENT (book_client)); - - g_signal_emit ( - model, signals[WRITABLE_STATUS], 0, - model->priv->editable); - } + e_addressbook_model_set_editable (model, !e_client_is_readonly (E_CLIENT (book_client))); } static void @@ -885,13 +878,7 @@ e_addressbook_model_set_client (EAddressbookModel *model, book_client, "backend-died", G_CALLBACK (backend_died_cb), model); - if (!model->priv->editable_set) { - model->priv->editable = - !e_client_is_readonly (E_CLIENT (book_client)); - g_signal_emit ( - model, signals[WRITABLE_STATUS], 0, - model->priv->editable); - } + e_addressbook_model_set_editable (model, !e_client_is_readonly (E_CLIENT (book_client))); if (model->priv->client_view_idle_id == 0) model->priv->client_view_idle_id = g_idle_add ( @@ -915,10 +902,15 @@ e_addressbook_model_set_editable (EAddressbookModel *model, { g_return_if_fail (E_IS_ADDRESSBOOK_MODEL (model)); - model->priv->editable = editable; - model->priv->editable_set = TRUE; + if ((model->priv->editable ? 1 : 0) != (editable ? 1 : 0)) { + model->priv->editable = editable; - g_object_notify (G_OBJECT (model), "editable"); + g_signal_emit ( + model, signals[WRITABLE_STATUS], 0, + model->priv->editable); + + g_object_notify (G_OBJECT (model), "editable"); + } } gchar * -- cgit v1.2.3 From cfd3c3116ba35950497d24eedb28bd7064fb459a Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 18 Aug 2011 09:21:35 +0200 Subject: Do not show IM icons, a workaround till bug #473862 is fixed --- addressbook/gui/widgets/eab-contact-display.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index 76516fc119..56a2511d64 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -365,6 +365,11 @@ accum_multival_attribute (GString *buffer, { GList *val_list, *l; + /* Workaround till bug [1] is fixed. + [1] https://bugzilla.gnome.org/show_bug.cgi?id=473862 + */ + icon = NULL; + val_list = e_contact_get (contact, field); for (l = val_list; l; l = l->next) { const gchar *str = (const gchar *) l->data; -- cgit v1.2.3 From fcbbdfbd18e15b4ee8322a0217cf03a689a5e033 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 16 Aug 2011 11:25:56 -0400 Subject: Coding style and whitespace cleanup. --- .../gui/contact-editor/e-contact-editor-fullname.c | 2 +- addressbook/gui/contact-editor/e-contact-editor.c | 89 +++++++++++-------- .../gui/contact-editor/e-contact-quick-add.c | 38 +++++---- addressbook/gui/contact-editor/eab-editor.c | 12 +-- addressbook/gui/contact-editor/eab-editor.h | 2 +- addressbook/gui/contact-editor/test-editor.c | 6 +- .../contact-list-editor/e-contact-list-editor.c | 30 ++++--- .../gui/contact-list-editor/e-contact-list-model.c | 10 +-- addressbook/gui/merging/eab-contact-compare.c | 75 +++++++++------- addressbook/gui/merging/eab-contact-compare.h | 6 +- addressbook/gui/merging/eab-contact-merging.c | 58 +++++++------ addressbook/gui/widgets/e-addressbook-model.c | 16 ++-- .../gui/widgets/e-addressbook-reflow-adapter.c | 68 +++++++++------ .../gui/widgets/e-addressbook-table-adapter.c | 69 ++++++++------- addressbook/gui/widgets/e-addressbook-view.c | 26 ++++-- addressbook/gui/widgets/e-minicard-label.c | 31 ++++--- addressbook/gui/widgets/e-minicard-view-widget.c | 66 ++++++++------- addressbook/gui/widgets/e-minicard-view.c | 67 +++++---------- addressbook/gui/widgets/e-minicard.c | 75 ++++++++++------ addressbook/gui/widgets/ea-addressbook-view.c | 2 +- addressbook/gui/widgets/ea-addressbook-view.h | 2 +- addressbook/gui/widgets/ea-addressbook.c | 12 +-- addressbook/gui/widgets/ea-minicard-view.c | 24 ++++-- addressbook/gui/widgets/ea-minicard-view.h | 2 +- addressbook/gui/widgets/ea-minicard.c | 12 ++- addressbook/gui/widgets/ea-minicard.h | 2 +- addressbook/gui/widgets/eab-config.c | 18 ++-- addressbook/gui/widgets/eab-config.h | 5 +- addressbook/gui/widgets/eab-contact-display.c | 81 +++++++++++------- addressbook/gui/widgets/eab-gui-util.c | 99 +++++++++++++--------- addressbook/gui/widgets/gal-view-minicard.c | 4 +- 31 files changed, 585 insertions(+), 424 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index c2dc45304b..c23a05ba6f 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -249,7 +249,7 @@ e_contact_editor_fullname_init (EContactEditorFullname *e_contact_editor_fullnam GTK_WINDOW (e_contact_editor_fullname), "contact-new"); } -GtkWidget* +GtkWidget * e_contact_editor_fullname_new (const EContactName *name) { GtkWidget *widget = g_object_new (E_TYPE_CONTACT_EDITOR_FULLNAME, NULL); diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 5dd02b48e6..6ce9524afc 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -76,11 +76,11 @@ enum { static void e_contact_editor_init (EContactEditor *editor); static void e_contact_editor_class_init (EContactEditorClass *klass); static void e_contact_editor_set_property (GObject *object, - guint prop_id, + guint property_id, const GValue *value, GParamSpec *pspec); static void e_contact_editor_get_property (GObject *object, - guint prop_id, + guint property_id, GValue *value, GParamSpec *pspec); static void e_contact_editor_dispose (GObject *object); @@ -488,7 +488,7 @@ name_to_style (const EContactName *name, string = g_strjoinv(" ", strings); break; case 2: - midstrptr=midstring; + midstrptr = midstring; if (name) { if (name->family && *name->family) *(midstrptr++) = name->family; @@ -567,7 +567,8 @@ file_as_get_style (EContactEditor *editor) } static void -file_as_set_style (EContactEditor *editor, gint style) +file_as_set_style (EContactEditor *editor, + gint style) { gchar *string; gint i; @@ -1008,7 +1009,8 @@ get_ui_slot (EVCardAttribute *attr) } static void -set_ui_slot (EVCardAttribute *attr, gint slot) +set_ui_slot (EVCardAttribute *attr, + gint slot) { EVCardAttributeParam *param; gchar *slot_str; @@ -1524,7 +1526,8 @@ extract_phone (EContactEditor *editor) } static void -init_phone_record_type (EContactEditor *editor, gint record) +init_phone_record_type (EContactEditor *editor, + gint record) { GtkWidget *phone_type_combo_box; GtkWidget *phone_entry; @@ -1945,7 +1948,8 @@ extract_im (EContactEditor *editor) } static void -sensitize_im_types (EContactEditor *editor, GtkWidget *combo_box) +sensitize_im_types (EContactEditor *editor, + GtkWidget *combo_box) { GtkTreeModel *model; GtkTreeIter iter; @@ -1971,7 +1975,9 @@ sensitize_im_types (EContactEditor *editor, GtkWidget *combo_box) } static void -sensitize_im_record (EContactEditor *editor, gint record, gboolean enabled) +sensitize_im_record (EContactEditor *editor, + gint record, + gboolean enabled) { GtkWidget *service_combo_box; #ifdef ENABLE_IM_LOCATION @@ -2038,7 +2044,8 @@ init_personal (EContactEditor *editor) } static void -init_address_textview (EContactEditor *editor, gint record) +init_address_textview (EContactEditor *editor, + gint record) { gchar *textview_name; GtkWidget *textview; @@ -2078,7 +2085,8 @@ init_address_field (EContactEditor *editor, } static void -init_address_record (EContactEditor *editor, gint record) +init_address_record (EContactEditor *editor, + gint record) { init_address_textview (editor, record); init_address_field (editor, record, "city"); @@ -2325,7 +2333,8 @@ set_address_label (EContact *contact, } static void -extract_address_record (EContactEditor *editor, gint record) +extract_address_record (EContactEditor *editor, + gint record) { EContactAddress *address; @@ -2411,7 +2420,9 @@ sensitize_address_field (EContactEditor *editor, } static void -sensitize_address_record (EContactEditor *editor, gint record, gboolean enabled) +sensitize_address_record (EContactEditor *editor, + gint record, + gboolean enabled) { sensitize_address_textview (editor, record, enabled); sensitize_address_field (editor, record, "city", enabled); @@ -2520,7 +2531,8 @@ static FieldMapping simple_field_map[] = { }; static void -init_simple_field (EContactEditor *editor, GtkWidget *widget) +init_simple_field (EContactEditor *editor, + GtkWidget *widget) { GObject *changed_object = NULL; @@ -2569,7 +2581,9 @@ init_simple_field (EContactEditor *editor, GtkWidget *widget) } static void -fill_in_simple_field (EContactEditor *editor, GtkWidget *widget, gint field_id) +fill_in_simple_field (EContactEditor *editor, + GtkWidget *widget, + gint field_id) { EContact *contact; @@ -2707,9 +2721,9 @@ extract_simple_field (EContactEditor *editor, EContactDate date; if (e_date_edit_get_date ( E_DATE_EDIT (widget), - (gint *)&date.year, - (gint *)&date.month, - (gint *)&date.day)) + (gint *) &date.year, + (gint *) &date.month, + (gint *) &date.day)) e_contact_set (contact, field_id, &date); else e_contact_set (contact, field_id, NULL); @@ -2809,7 +2823,8 @@ extract_simple_field (EContactEditor *editor, } static void -sensitize_simple_field (GtkWidget *widget, gboolean enabled) +sensitize_simple_field (GtkWidget *widget, + gboolean enabled) { if (GTK_IS_ENTRY (widget)) gtk_editable_set_editable (GTK_EDITABLE (widget), enabled); @@ -3258,7 +3273,7 @@ categories_clicked (GtkWidget *button, return; } - g_signal_connect(dialog, "response", + g_signal_connect (dialog, "response", G_CALLBACK (categories_response), editor); /* Close the category dialog if the editor is closed*/ @@ -3649,7 +3664,8 @@ save_contact (EContactEditor *ce, } static void -e_contact_editor_save_contact (EABEditor *editor, gboolean should_close) +e_contact_editor_save_contact (EABEditor *editor, + gboolean should_close) { save_contact (E_CONTACT_EDITOR (editor), should_close); } @@ -3782,7 +3798,7 @@ e_contact_editor_is_changed (EABEditor *editor) return E_CONTACT_EDITOR (editor)->changed; } -static GtkWindow* +static GtkWindow * e_contact_editor_get_window (EABEditor *editor) { return GTK_WINDOW (E_CONTACT_EDITOR (editor)->app); @@ -3837,14 +3853,17 @@ app_delete_event_cb (GtkWidget *widget, } static void -show_help_cb (GtkWidget *widget, gpointer data) +show_help_cb (GtkWidget *widget, + gpointer data) { /* FIXME Pass a proper parent window. */ e_display_help (NULL, "usage-contact-cards"); } static GList * -add_to_tab_order (GList *list, GtkBuilder *builder, const gchar *name) +add_to_tab_order (GList *list, + GtkBuilder *builder, + const gchar *name) { GtkWidget *widget = e_builder_get_widget (builder, name); return g_list_prepend (list, widget); @@ -3857,7 +3876,7 @@ setup_tab_order (GtkBuilder *builder) GList *list = NULL; /* container = e_builder_get_widget(builder, "table-contact-editor-general"); - + * if (container) { list = add_to_tab_order(list, builder, "entry-fullname"); list = add_to_tab_order(list, builder, "entry-jobtitle"); @@ -3867,7 +3886,7 @@ setup_tab_order (GtkBuilder *builder) list = add_to_tab_order(list, builder, "entry-phone-2"); list = add_to_tab_order(list, builder, "entry-phone-3"); list = add_to_tab_order(list, builder, "entry-phone-4"); - + * list = add_to_tab_order(list, builder, "entry-email1"); list = add_to_tab_order(list, builder, "alignment-htmlmail"); list = add_to_tab_order(list, builder, "entry-web"); @@ -4253,12 +4272,16 @@ e_contact_editor_new (EShell *shell, } static void -notify_readonly_cb (EBookClient *book_client, GParamSpec *pspec, EContactEditor *ce) +notify_readonly_cb (EBookClient *book_client, + GParamSpec *pspec, + EContactEditor *ce) { + EClient *client; gint new_target_editable; gboolean changed = FALSE; - new_target_editable = !e_client_is_readonly (E_CLIENT (ce->target_client)); + client = E_CLIENT (ce->target_client); + new_target_editable = !e_client_is_readonly (client); if (ce->target_editable != new_target_editable) changed = TRUE; @@ -4271,7 +4294,7 @@ notify_readonly_cb (EBookClient *book_client, GParamSpec *pspec, EContactEditor static void e_contact_editor_set_property (GObject *object, - guint prop_id, + guint property_id, const GValue *value, GParamSpec *pspec) { @@ -4279,7 +4302,7 @@ e_contact_editor_set_property (GObject *object, editor = E_CONTACT_EDITOR (object); - switch (prop_id) { + switch (property_id) { case PROP_SOURCE_CLIENT: { gboolean writable; gboolean changed = FALSE; @@ -4429,14 +4452,14 @@ e_contact_editor_set_property (GObject *object, NULL, g_value_get_pointer (value)); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void e_contact_editor_get_property (GObject *object, - guint prop_id, + guint property_id, GValue *value, GParamSpec *pspec) { @@ -4444,7 +4467,7 @@ e_contact_editor_get_property (GObject *object, e_contact_editor = E_CONTACT_EDITOR (object); - switch (prop_id) { + switch (property_id) { case PROP_SOURCE_CLIENT: g_value_set_object (value, e_contact_editor->source_client); break; @@ -4480,7 +4503,7 @@ e_contact_editor_get_property (GObject *object, g_value_set_pointer (value, e_contact_editor->required_fields); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 0b33f8aa79..96af36fed2 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -91,7 +91,8 @@ quick_add_unref (QuickAdd *qa) } static void -quick_add_set_name (QuickAdd *qa, const gchar *name) +quick_add_set_name (QuickAdd *qa, + const gchar *name) { if (name == qa->name) return; @@ -101,7 +102,8 @@ quick_add_set_name (QuickAdd *qa, const gchar *name) } static void -quick_add_set_email (QuickAdd *qa, const gchar *email) +quick_add_set_email (QuickAdd *qa, + const gchar *email) { if (email == qa->email) return; @@ -111,7 +113,8 @@ quick_add_set_email (QuickAdd *qa, const gchar *email) } static void -quick_add_set_vcard (QuickAdd *qa, const gchar *vcard) +quick_add_set_vcard (QuickAdd *qa, + const gchar *vcard) { if (vcard == qa->vcard) return; @@ -332,7 +335,9 @@ edit_contact (QuickAdd *qa) #define QUICK_ADD_RESPONSE_EDIT_FULL 2 static void -clicked_cb (GtkWidget *w, gint button, gpointer closure) +clicked_cb (GtkWidget *w, + gint button, + gpointer closure) { QuickAdd *qa = (QuickAdd *) closure; @@ -400,7 +405,8 @@ sanitize_widgets (QuickAdd *qa) } static void -source_changed (ESourceComboBox *source_combo_box, QuickAdd *qa) +source_changed (ESourceComboBox *source_combo_box, + QuickAdd *qa) { ESource *source; @@ -423,7 +429,7 @@ build_quick_add_dialog (QuickAdd *qa) GtkWidget *label; GtkTable *table; ESource *source; - const gint xpad=0, ypad=0; + const gint xpad = 0, ypad = 0; g_return_val_if_fail (qa != NULL, NULL); @@ -480,7 +486,7 @@ build_quick_add_dialog (QuickAdd *qa) gtk_table_set_col_spacings (table, 12); label = gtk_label_new_with_mnemonic (_("_Full name")); - gtk_label_set_mnemonic_widget ((GtkLabel*) label, qa->name_entry); + gtk_label_set_mnemonic_widget ((GtkLabel *) label, qa->name_entry); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (table, label, @@ -522,8 +528,10 @@ build_quick_add_dialog (QuickAdd *qa) } void -e_contact_quick_add (const gchar *in_name, const gchar *email, - EContactQuickAddCallback cb, gpointer closure) +e_contact_quick_add (const gchar *in_name, + const gchar *email, + EContactQuickAddCallback cb, + gpointer closure) { QuickAdd *qa; GtkWidget *dialog; @@ -543,10 +551,10 @@ e_contact_quick_add (const gchar *in_name, const gchar *email, /* Remove extra whitespace and the quotes some mailers put around names. */ g_strstrip (name); len = strlen (name); - if ((name[0] == '\'' && name[len-1] == '\'') || + if ((name[0] == '\'' && name[len - 1] == '\'') || (name[0] == '"' && name[len-1] == '"')) { name[0] = ' '; - name[len-1] = ' '; + name[len - 1] = ' '; } g_strstrip (name); } @@ -570,7 +578,7 @@ e_contact_quick_add_free_form (const gchar *text, EContactQuickAddCallback cb, gpointer closure) { - gchar *name=NULL, *email=NULL; + gchar *name = NULL, *email = NULL; const gchar *last_at, *s; gboolean in_quote; @@ -612,7 +620,7 @@ e_contact_quick_add_free_form (const gchar *text, /* ...and then split the text there */ if (!bad_char) { if (text < last_at) - name = g_strndup (text, last_at-text); + name = g_strndup (text, last_at - text); email = g_strdup (last_at); } } @@ -629,8 +637,8 @@ e_contact_quick_add_free_form (const gchar *text, *email = ' '; changed = TRUE; } - if (email[strlen (email)-1] == '>') { - email[strlen (email)-1] = ' '; + if (email[strlen (email) - 1] == '>') { + email[strlen (email) - 1] = ' '; changed = TRUE; } if (changed) diff --git a/addressbook/gui/contact-editor/eab-editor.c b/addressbook/gui/contact-editor/eab-editor.c index bea34db512..241bc477a4 100644 --- a/addressbook/gui/contact-editor/eab-editor.c +++ b/addressbook/gui/contact-editor/eab-editor.c @@ -301,7 +301,8 @@ eab_editor_raise (EABEditor *editor) } void -eab_editor_save_contact (EABEditor *editor, gboolean should_close) +eab_editor_save_contact (EABEditor *editor, + gboolean should_close) { EABEditorClass *class; @@ -339,7 +340,7 @@ eab_editor_is_valid (EABEditor *editor) return class->is_valid (editor); } -GtkWindow* +GtkWindow * eab_editor_get_window (EABEditor *editor) { EABEditorClass *class; @@ -353,11 +354,12 @@ eab_editor_get_window (EABEditor *editor) } /* This function prompts for saving if editor conents are in changed state and - save or discards or cancels (just returns with out doing anything) according - to user input. Editor gets destroyed in case of save and discard case. */ + * save or discards or cancels (just returns with out doing anything) according + * to user input. Editor gets destroyed in case of save and discard case. */ gboolean -eab_editor_prompt_to_save_changes (EABEditor *editor, GtkWindow *window) +eab_editor_prompt_to_save_changes (EABEditor *editor, + GtkWindow *window) { if (!eab_editor_is_changed (editor)) { eab_editor_close (EAB_EDITOR (editor)); diff --git a/addressbook/gui/contact-editor/eab-editor.h b/addressbook/gui/contact-editor/eab-editor.h index 43e36e53a3..cf8a20aecb 100644 --- a/addressbook/gui/contact-editor/eab-editor.h +++ b/addressbook/gui/contact-editor/eab-editor.h @@ -68,7 +68,7 @@ struct _EABEditorClass { void (* save_contact) (EABEditor *editor, gboolean should_close); gboolean (* is_valid) (EABEditor *editor); gboolean (* is_changed) (EABEditor *editor); - GtkWindow* (* get_window) (EABEditor *editor); + GtkWindow * (* get_window) (EABEditor *editor); /* signals */ void (* contact_added) (EABEditor *editor, const GError *error, EContact *contact); diff --git a/addressbook/gui/contact-editor/test-editor.c b/addressbook/gui/contact-editor/test-editor.c index 2f54bd57b1..1d9c24aed7 100644 --- a/addressbook/gui/contact-editor/test-editor.c +++ b/addressbook/gui/contact-editor/test-editor.c @@ -67,7 +67,8 @@ read_file (gchar *name) /* Callback used when a contact editor is closed */ static void -editor_closed_cb (EContactEditor *ce, gpointer data) +editor_closed_cb (EContactEditor *ce, + gpointer data) { static gint count = 2; @@ -79,7 +80,8 @@ editor_closed_cb (EContactEditor *ce, gpointer data) } gint -main (gint argc, gchar *argv[]) +main (gint argc, + gchar *argv[]) { gchar *cardstr; EContactEditor *ce; diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 7ad6c124cc..1750f5a686 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -258,7 +258,7 @@ contact_list_editor_add_destination (GtkWidget *widget, static void contact_list_editor_add_email (EContactListEditor *editor, - const gchar *email) + const gchar *email) { CamelInternetAddress *addr; EContactListEditorPrivate *priv = editor->priv; @@ -424,7 +424,7 @@ contact_list_editor_render_destination (GtkTreeViewColumn *column, static void contact_list_editor_selection_changed_cb (GtkTreeSelection *selection, - gpointer user_data) + gpointer user_data) { EContactListEditor *editor = user_data; GtkTreeModel *model; @@ -545,15 +545,17 @@ contact_list_editor_delete_event_cb (GtkWidget *widget, void contact_list_editor_drag_data_received_cb (GtkWidget *widget, GdkDragContext *context, - gint x, gint y, - GtkSelectionData *selection_data, - guint info, - guint time); + gint x, + gint y, + GtkSelectionData *selection_data, + guint info, + guint time); void contact_list_editor_drag_data_received_cb (GtkWidget *widget, GdkDragContext *context, - gint x, gint y, + gint x, + gint y, GtkSelectionData *selection_data, guint info, guint time) @@ -695,7 +697,7 @@ contact_list_editor_email_entry_key_press_event_cb (GtkWidget *widget, gint cpos = -1; entry = GTK_ENTRY (WIDGET (EMAIL_ENTRY)); - g_object_get (G_OBJECT (entry), "cursor-position", &cpos, NULL); + g_object_get (entry, "cursor-position", &cpos, NULL); /* not the first letter */ if (cpos > 0) { @@ -817,7 +819,7 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget) } /* new_selection != NULL when there is at least one item below the - removed selection */ + * removed selection */ if (new_selection) { path = gtk_tree_row_reference_get_path (new_selection); gtk_tree_selection_select_path (selection, path); @@ -825,7 +827,7 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget) gtk_tree_row_reference_free (new_selection); } else { /* If selection was including the last item in the list, then - find and select the new last item */ + * find and select the new last item */ GtkTreeIter iter, iter2; /* When FALSE is returned, there are no items in the list to be selected */ @@ -1157,7 +1159,7 @@ setup_custom_widgets (EContactListEditor *editor) combo_box = WIDGET (SOURCE_MENU); if (!e_book_client_get_sources (&source_list, &error)) source_list = NULL; - g_object_set (G_OBJECT (combo_box), "source-list", source_list, NULL); + g_object_set (combo_box, "source-list", source_list, NULL); if (source_list) g_object_unref (source_list); @@ -1242,7 +1244,7 @@ contact_list_editor_constructor (GType type, static void contact_list_editor_set_property (GObject *object, guint property_id, - const GValue *value, + const GValue *value, GParamSpec *pspec) { switch (property_id) { @@ -1772,8 +1774,8 @@ e_contact_list_editor_get_contact (EContactListEditor *editor) save_contact_list (model, &iter, &attrs, &parent_id); /* Put it in reverse order because e_vcard_add_attribute also uses prepend, - but we want to keep order of mails there. Hopefully noone will change - the behaviour of the e_vcard_add_attribute. */ + * but we want to keep order of mails there. Hopefully noone will change + * the behaviour of the e_vcard_add_attribute. */ for (a = attrs; a; a = a->next) { e_vcard_add_attribute (E_VCARD (contact), a->data); } diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c index e4eee15cb1..6774eee3b7 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c @@ -137,7 +137,7 @@ e_contact_list_model_has_uid (EContactListModel *model, return (g_hash_table_lookup (model->priv->uids_table, uid) != NULL); } -GtkTreePath* +GtkTreePath * e_contact_list_model_add_destination (EContactListModel *model, EDestination *destination, GtkTreeIter *parent, @@ -213,7 +213,7 @@ e_contact_list_model_add_contact (EContactListModel *model, static void contact_list_model_unref_row_dest (EContactListModel *model, - GtkTreeIter *iter) + GtkTreeIter *iter) { EDestination *dest; GtkTreeModel *tree_model; @@ -227,7 +227,7 @@ contact_list_model_unref_row_dest (EContactListModel *model, e_destination_get_contact_uid (dest))); /* If the list is only once in the model, then remove it from the hash table, - otherwise decrease the counter by one */ + * otherwise decrease the counter by one */ if (list_refs <= 1) { g_hash_table_remove (model->priv->uids_table, e_destination_get_contact_uid (dest)); @@ -270,11 +270,11 @@ e_contact_list_model_remove_row (EContactListModel *model, g_return_if_fail (iter); /* Use helper function to update our reference counters in - hash tables but don't remove any row. */ + * hash tables but don't remove any row. */ contact_list_model_unref_row_dest (model, iter); /* Get iter of parent of the row to be removed. After the row is removed, check if there are - any more children left for the parent_iter, an eventually remove the parent_iter as well */ + * any more children left for the parent_iter, an eventually remove the parent_iter as well */ if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (model), &parent_iter, iter)) { gtk_tree_store_remove (GTK_TREE_STORE (model), iter); if (!gtk_tree_model_iter_has_child (GTK_TREE_MODEL (model), &parent_iter)) { diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index fd6ad8c012..a25ad4e403 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -33,10 +33,10 @@ #include "eab-contact-compare.h" /* This is an "optimistic" combiner: the best of the two outcomes is - selected. */ + * selected. */ static EABContactMatchType combine_comparisons (EABContactMatchType prev, - EABContactMatchType new_info) + EABContactMatchType new_info) { if (new_info == EAB_CONTACT_MATCH_NOT_APPLICABLE) return prev; @@ -46,7 +46,7 @@ combine_comparisons (EABContactMatchType prev, /*** Name comparisons ***/ /* This *so* doesn't belong here... at least not implemented in a - sucky way like this. But it can be fixed later. */ + * sucky way like this. But it can be fixed later. */ /* This is very Anglocentric. */ static const gchar *name_synonyms[][2] = { @@ -83,7 +83,9 @@ static const gchar *name_synonyms[][2] = { }; static gboolean -name_fragment_match_with_synonyms (const gchar *a, const gchar *b, gboolean strict) +name_fragment_match_with_synonyms (const gchar *a, + const gchar *b, + gboolean strict) { gint i; @@ -94,7 +96,7 @@ name_fragment_match_with_synonyms (const gchar *a, const gchar *b, gboolean stri return TRUE; /* Check for nicknames. Yes, the linear search blows. */ - for (i=0; name_synonyms[i][0]; ++i) { + for (i = 0; name_synonyms[i][0]; ++i) { if (!e_utf8_casefold_collate (name_synonyms[i][0], a) && !e_utf8_casefold_collate (name_synonyms[i][1], b)) @@ -109,14 +111,19 @@ name_fragment_match_with_synonyms (const gchar *a, const gchar *b, gboolean stri } EABContactMatchType -eab_contact_compare_name_to_string (EContact *contact, const gchar *str) +eab_contact_compare_name_to_string (EContact *contact, + const gchar *str) { return eab_contact_compare_name_to_string_full (contact, str, FALSE, NULL, NULL, NULL); } EABContactMatchType -eab_contact_compare_name_to_string_full (EContact *contact, const gchar *str, gboolean allow_partial_matches, - gint *matched_parts_out, EABContactMatchPart *first_matched_part_out, gint *matched_character_count_out) +eab_contact_compare_name_to_string_full (EContact *contact, + const gchar *str, + gboolean allow_partial_matches, + gint *matched_parts_out, + EABContactMatchPart *first_matched_part_out, + gint *matched_character_count_out) { gchar **namev, **givenv = NULL, **addv = NULL, **familyv = NULL; @@ -172,8 +179,8 @@ eab_contact_compare_name_to_string_full (EContact *contact, const gchar *str, gb this_part_match = EAB_CONTACT_MATCH_PART_NONE; /* When we are allowing partials, we are strict about the matches we allow. - Does this make sense? Not really, but it does the right thing for the purposes - of completion. */ + * Does this make sense? Not really, but it does the right thing for the purposes + * of completion. */ if (givenv && this_part_match == EAB_CONTACT_MATCH_PART_NONE) { for (j = 0; givenv[j]; ++j) { @@ -182,7 +189,7 @@ eab_contact_compare_name_to_string_full (EContact *contact, const gchar *str, gb this_part_match = EAB_CONTACT_MATCH_PART_GIVEN_NAME; /* We remove a piece of a name once it has been matched against, so - that "john john" won't match "john doe". */ + * that "john john" won't match "john doe". */ g_free (givenv[j]); givenv[j] = g_strdup (""); break; @@ -261,7 +268,8 @@ eab_contact_compare_name_to_string_full (EContact *contact, const gchar *str, gb } EABContactMatchType -eab_contact_compare_file_as (EContact *contact1, EContact *contact2) +eab_contact_compare_file_as (EContact *contact1, + EContact *contact2) { EABContactMatchType match_type; gchar *a, *b; @@ -292,10 +300,11 @@ eab_contact_compare_file_as (EContact *contact1, EContact *contact2) } EABContactMatchType -eab_contact_compare_name (EContact *contact1, EContact *contact2) +eab_contact_compare_name (EContact *contact1, + EContact *contact2) { EContactName *a, *b; - gint matches=0, possible=0; + gint matches = 0, possible = 0; gboolean family_match = FALSE; g_return_val_if_fail (E_IS_CONTACT (contact1), EAB_CONTACT_MATCH_NOT_APPLICABLE); @@ -337,8 +346,8 @@ eab_contact_compare_name (EContact *contact1, EContact *contact2) e_contact_name_free (b); /* Now look at the # of matches and try to intelligently map - an EAB_CONTACT_MATCH_* type to it. Special consideration is given - to family-name matches. */ + * an EAB_CONTACT_MATCH_* type to it. Special consideration is given + * to family-name matches. */ if (possible == 0) return EAB_CONTACT_MATCH_NOT_APPLICABLE; @@ -349,7 +358,7 @@ eab_contact_compare_name (EContact *contact1, EContact *contact2) if (possible == matches) return family_match ? EAB_CONTACT_MATCH_EXACT : EAB_CONTACT_MATCH_PARTIAL; - if (possible == matches+1) + if (possible == matches + 1) return family_match ? EAB_CONTACT_MATCH_VAGUE : EAB_CONTACT_MATCH_NONE; return EAB_CONTACT_MATCH_NONE; @@ -358,7 +367,8 @@ eab_contact_compare_name (EContact *contact1, EContact *contact2) /*** Nickname Comparisons ***/ EABContactMatchType -eab_contact_compare_nickname (EContact *contact1, EContact *contact2) +eab_contact_compare_nickname (EContact *contact1, + EContact *contact2) { g_return_val_if_fail (contact1 && E_IS_CONTACT (contact1), EAB_CONTACT_MATCH_NOT_APPLICABLE); g_return_val_if_fail (contact2 && E_IS_CONTACT (contact2), EAB_CONTACT_MATCH_NOT_APPLICABLE); @@ -369,7 +379,8 @@ eab_contact_compare_nickname (EContact *contact1, EContact *contact2) /*** E-mail Comparisons ***/ static gboolean -match_email_username (const gchar *addr1, const gchar *addr2) +match_email_username (const gchar *addr1, + const gchar *addr2) { gint c1, c2; if (addr1 == NULL || addr2 == NULL) @@ -388,7 +399,8 @@ match_email_username (const gchar *addr1, const gchar *addr2) } static gboolean -match_email_hostname (const gchar *addr1, const gchar *addr2) +match_email_hostname (const gchar *addr1, + const gchar *addr2) { gint c1, c2; gboolean seen_at1, seen_at2; @@ -436,7 +448,8 @@ match_email_hostname (const gchar *addr1, const gchar *addr2) } static EABContactMatchType -compare_email_addresses (const gchar *addr1, const gchar *addr2) +compare_email_addresses (const gchar *addr1, + const gchar *addr2) { if (addr1 == NULL || *addr1 == 0 || addr2 == NULL || *addr2 == 0) @@ -449,7 +462,8 @@ compare_email_addresses (const gchar *addr1, const gchar *addr2) } EABContactMatchType -eab_contact_compare_email (EContact *contact1, EContact *contact2) +eab_contact_compare_email (EContact *contact1, + EContact *contact2) { EABContactMatchType match = EAB_CONTACT_MATCH_NOT_APPLICABLE; GList *contact1_email, *contact2_email; @@ -473,8 +487,8 @@ eab_contact_compare_email (EContact *contact1, EContact *contact2) i1 = contact1_email; /* Do pairwise-comparisons on all of the e-mail addresses. If - we find an exact match, there is no reason to keep - checking. */ + * we find an exact match, there is no reason to keep + * checking. */ while (i1 && match != EAB_CONTACT_MATCH_EXACT) { gchar *addr1 = (gchar *) i1->data; @@ -500,7 +514,8 @@ eab_contact_compare_email (EContact *contact1, EContact *contact2) } EABContactMatchType -eab_contact_compare_address (EContact *contact1, EContact *contact2) +eab_contact_compare_address (EContact *contact1, + EContact *contact2) { g_return_val_if_fail (contact1 && E_IS_CONTACT (contact1), EAB_CONTACT_MATCH_NOT_APPLICABLE); g_return_val_if_fail (contact2 && E_IS_CONTACT (contact2), EAB_CONTACT_MATCH_NOT_APPLICABLE); @@ -511,7 +526,8 @@ eab_contact_compare_address (EContact *contact1, EContact *contact2) } EABContactMatchType -eab_contact_compare_telephone (EContact *contact1, EContact *contact2) +eab_contact_compare_telephone (EContact *contact1, + EContact *contact2) { g_return_val_if_fail (contact1 && E_IS_CONTACT (contact1), EAB_CONTACT_MATCH_NOT_APPLICABLE); g_return_val_if_fail (contact2 && E_IS_CONTACT (contact2), EAB_CONTACT_MATCH_NOT_APPLICABLE); @@ -522,7 +538,8 @@ eab_contact_compare_telephone (EContact *contact1, EContact *contact2) } EABContactMatchType -eab_contact_compare (EContact *contact1, EContact *contact2) +eab_contact_compare (EContact *contact1, + EContact *contact2) { EABContactMatchType result; @@ -660,13 +677,13 @@ query_cb (GObject *source_object, #define MAX_QUERY_PARTS 10 static void use_common_book_client (EBookClient *book_client, - MatchSearchInfo *info) + MatchSearchInfo *info) { EContact *contact = info->contact; EContactName *contact_name; GList *contact_email; gchar *query_parts[MAX_QUERY_PARTS]; - gint p=0; + gint p = 0; gchar *contact_file_as, *qj; EBookQuery *query = NULL; gint i; diff --git a/addressbook/gui/merging/eab-contact-compare.h b/addressbook/gui/merging/eab-contact-compare.h index df67c5d752..7ce31eddb9 100644 --- a/addressbook/gui/merging/eab-contact-compare.h +++ b/addressbook/gui/merging/eab-contact-compare.h @@ -40,9 +40,9 @@ typedef enum { typedef enum { EAB_CONTACT_MATCH_PART_NOT_APPLICABLE = -1, EAB_CONTACT_MATCH_PART_NONE = 0, - EAB_CONTACT_MATCH_PART_GIVEN_NAME = 1<<0, - EAB_CONTACT_MATCH_PART_ADDITIONAL_NAME = 1<<2, - EAB_CONTACT_MATCH_PART_FAMILY_NAME = 1<<3 + EAB_CONTACT_MATCH_PART_GIVEN_NAME = 1 << 0, + EAB_CONTACT_MATCH_PART_ADDITIONAL_NAME = 1 << 2, + EAB_CONTACT_MATCH_PART_FAMILY_NAME = 1 << 3 } EABContactMatchPart; typedef void (*EABContactMatchQueryCallback) (EContact *contact, EContact *match, EABContactMatchType type, gpointer closure); diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index 557af481bb..70e43fa284 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -210,7 +210,8 @@ add_contact_ready_cb (GObject *source_object, } static void -doit (EContactMergingLookup *lookup, gboolean force_modify) +doit (EContactMergingLookup *lookup, + gboolean force_modify) { if (lookup->op == E_CONTACT_MERGING_ADD) { if (force_modify) @@ -236,7 +237,9 @@ cancelit (EContactMergingLookup *lookup) } static void -dialog_map (GtkWidget *window, GdkEvent *event, GtkWidget *table) +dialog_map (GtkWidget *window, + GdkEvent *event, + GtkWidget *table) { GtkAllocation allocation; gint h, w; @@ -256,7 +259,8 @@ dialog_map (GtkWidget *window, GdkEvent *event, GtkWidget *table) } static void -dropdown_changed (GtkWidget *dropdown, dropdown_data *data) +dropdown_changed (GtkWidget *dropdown, + dropdown_data *data) { gchar *str; str = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (dropdown)); @@ -357,7 +361,7 @@ mergeit (EContactMergingLookup *lookup) use_field = E_CONTACT_EMAIL_2; break; } - else/*Either the new contact has no email OR the email already exist in the duplicate contact*/ + else/*Either the new contact has no email OR the email already exist in the duplicate contact */ continue; case 2: /*New contact has email and it is equal to neither of the 2 emails in the duplicate contact*/ @@ -381,7 +385,7 @@ mergeit (EContactMergingLookup *lookup) } label = gtk_label_new (_("Email")); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget *) label, FALSE, FALSE, 0); gtk_table_attach_defaults (table, (GtkWidget *) hbox, 0, 1, row, row + 1); dropdown = gtk_combo_box_text_new (); @@ -398,7 +402,7 @@ mergeit (EContactMergingLookup *lookup) g_signal_connect (dropdown, "changed", G_CALLBACK(dropdown_changed), data); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) dropdown, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget *) dropdown, FALSE, FALSE, 0); gtk_table_attach_defaults (table, (GtkWidget *) hbox, 1, 2, row, row + 1); gtk_widget_show ((GtkWidget *) dropdown); continue; @@ -407,13 +411,13 @@ mergeit (EContactMergingLookup *lookup) row++; label = gtk_label_new (e_contact_pretty_name (field)); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget *) label, FALSE, FALSE, 0); gtk_table_attach_defaults (table, (GtkWidget *) hbox, 0, 1, row, row + 1); label = gtk_label_new (string); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); - gtk_table_attach_defaults (table, (GtkWidget*) hbox, 1, 2, row, row + 1); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget *) label, FALSE, FALSE, 0); + gtk_table_attach_defaults (table, (GtkWidget *) hbox, 1, 2, row, row + 1); continue; } @@ -422,7 +426,7 @@ mergeit (EContactMergingLookup *lookup) row++; label = gtk_label_new (e_contact_pretty_name (field)); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget *) label, FALSE, FALSE, 0); gtk_table_attach_defaults (table, (GtkWidget *) hbox, 0, 1, row, row + 1); data = g_new0 (dropdown_data, 1); dropdown = gtk_combo_box_text_new (); @@ -443,7 +447,7 @@ mergeit (EContactMergingLookup *lookup) g_signal_connect (dropdown, "changed", G_CALLBACK(dropdown_changed), data); hbox = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget*) dropdown, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (hbox), (GtkWidget *) dropdown, FALSE, FALSE, 0); gtk_table_attach_defaults (table, (GtkWidget *) hbox, 1, 2, row, row + 1); gtk_widget_show_all ((GtkWidget *) dropdown); } @@ -475,7 +479,8 @@ mergeit (EContactMergingLookup *lookup) } static gboolean -check_if_same (EContact *contact, EContact *match) +check_if_same (EContact *contact, + EContact *match) { EContactField field; GList *email_attr_list; @@ -487,7 +492,7 @@ check_if_same (EContact *contact, EContact *match) num_of_email = g_list_length (email_attr_list); if ((field == E_CONTACT_EMAIL_1 || field == E_CONTACT_EMAIL_2 - || field == E_CONTACT_EMAIL_3 || field == E_CONTACT_EMAIL_4) && (num_of_email<4)) { + || field == E_CONTACT_EMAIL_3 || field == E_CONTACT_EMAIL_4) && (num_of_email < 4)) { str = (gchar *) e_contact_get_const (contact, field); switch (num_of_email) { @@ -522,7 +527,9 @@ check_if_same (EContact *contact, EContact *match) } static void -response (GtkWidget *dialog, gint response, EContactMergingLookup *lookup) +response (GtkWidget *dialog, + gint response, + EContactMergingLookup *lookup) { static gint merge_response; @@ -547,7 +554,10 @@ response (GtkWidget *dialog, gint response, EContactMergingLookup *lookup) } static void -match_query_callback (EContact *contact, EContact *match, EABContactMatchType type, gpointer closure) +match_query_callback (EContact *contact, + EContact *match, + EABContactMatchType type, + gpointer closure) { EContactMergingLookup *lookup = closure; gint flag; @@ -631,9 +641,9 @@ match_query_callback (EContact *contact, EContact *match, EABContactMatchType ty gboolean eab_merging_book_add_contact (EBookClient *book_client, - EContact *contact, - EABMergingIdAsyncCallback cb, - gpointer closure) + EContact *contact, + EABMergingIdAsyncCallback cb, + gpointer closure) { EContactMergingLookup *lookup; @@ -654,9 +664,9 @@ eab_merging_book_add_contact (EBookClient *book_client, gboolean eab_merging_book_modify_contact (EBookClient *book_client, - EContact *contact, - EABMergingAsyncCallback cb, - gpointer closure) + EContact *contact, + EABMergingAsyncCallback cb, + gpointer closure) { EContactMergingLookup *lookup; @@ -677,9 +687,9 @@ eab_merging_book_modify_contact (EBookClient *book_client, gboolean eab_merging_book_find_contact (EBookClient *book_client, - EContact *contact, - EABMergingContactAsyncCallback cb, - gpointer closure) + EContact *contact, + EABMergingContactAsyncCallback cb, + gpointer closure) { EContactMergingLookup *lookup; diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index dc1068dea3..74e794bd6e 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -324,10 +324,13 @@ view_complete_cb (EBookClientView *client_view, static void readonly_cb (EBookClient *book_client, - GParamSpec *pspec, + GParamSpec *pspec, EAddressbookModel *model) { - e_addressbook_model_set_editable (model, !e_client_is_readonly (E_CLIENT (book_client))); + gboolean editable; + + editable = !e_client_is_readonly (E_CLIENT (book_client)); + e_addressbook_model_set_editable (model, editable); } static void @@ -734,7 +737,7 @@ e_addressbook_model_get_type (void) return type; } -EAddressbookModel* +EAddressbookModel * e_addressbook_model_new (void) { return g_object_new (E_TYPE_ADDRESSBOOK_MODEL, NULL); @@ -742,7 +745,7 @@ e_addressbook_model_new (void) EContact * e_addressbook_model_get_contact (EAddressbookModel *model, - gint row) + gint row) { GPtrArray *array; @@ -845,6 +848,8 @@ void e_addressbook_model_set_client (EAddressbookModel *model, EBookClient *book_client) { + gboolean editable; + g_return_if_fail (E_IS_ADDRESSBOOK_MODEL (model)); g_return_if_fail (E_IS_BOOK_CLIENT (book_client)); @@ -878,7 +883,8 @@ e_addressbook_model_set_client (EAddressbookModel *model, book_client, "backend-died", G_CALLBACK (backend_died_cb), model); - e_addressbook_model_set_editable (model, !e_client_is_readonly (E_CLIENT (book_client))); + editable = !e_client_is_readonly (E_CLIENT (book_client)); + e_addressbook_model_set_editable (model, editable); if (model->priv->client_view_idle_id == 0) model->priv->client_view_idle_id = g_idle_add ( diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index 680a511d05..0d2fc85478 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -99,7 +99,8 @@ unlink_model (EAddressbookReflowAdapter *adapter) } static gint -text_height (PangoLayout *layout, const gchar *text) +text_height (PangoLayout *layout, + const gchar *text) { gint height; @@ -119,7 +120,8 @@ addressbook_dispose (GObject *object) } static void -addressbook_set_width (EReflowModel *erm, gint width) +addressbook_set_width (EReflowModel *erm, + gint width) { } @@ -135,14 +137,16 @@ addressbook_count (EReflowModel *erm) /* This function returns the height of the minicontact in question */ static gint -addressbook_height (EReflowModel *erm, gint i, GnomeCanvasGroup *parent) +addressbook_height (EReflowModel *erm, + gint i, + GnomeCanvasGroup *parent) { EAddressbookReflowAdapter *adapter = E_ADDRESSBOOK_REFLOW_ADAPTER (erm); EAddressbookReflowAdapterPrivate *priv = adapter->priv; EContactField field; gint count = 0; gchar *string; - EContact *contact = (EContact*) e_addressbook_model_contact_at (priv->model, i); + EContact *contact = (EContact *) e_addressbook_model_contact_at (priv->model, i); PangoLayout *layout; gint height; @@ -220,18 +224,21 @@ addressbook_create_cmp_cache (EReflowModel *erm) } static gint -addressbook_compare (EReflowModel *erm, gint n1, gint n2, GHashTable *cmp_cache) +addressbook_compare (EReflowModel *erm, + gint n1, + gint n2, + GHashTable *cmp_cache) { EAddressbookReflowAdapter *adapter = E_ADDRESSBOOK_REFLOW_ADAPTER (erm); EAddressbookReflowAdapterPrivate *priv = adapter->priv; EContact *contact1, *contact2; if (priv->loading) { - return n1-n2; + return n1 - n2; } else { - contact1 = (EContact*) e_addressbook_model_contact_at (priv->model, n1); - contact2 = (EContact*) e_addressbook_model_contact_at (priv->model, n2); + contact1 = (EContact *) e_addressbook_model_contact_at (priv->model, n1); + contact2 = (EContact *) e_addressbook_model_contact_at (priv->model, n2); if (contact1 && contact2) { const gchar *file_as1, *file_as2; @@ -292,7 +299,9 @@ adapter_open_contact (EMinicard *card, } static GnomeCanvasItem * -addressbook_incarnate (EReflowModel *erm, gint i, GnomeCanvasGroup *parent) +addressbook_incarnate (EReflowModel *erm, + gint i, + GnomeCanvasGroup *parent) { EAddressbookReflowAdapter *adapter = E_ADDRESSBOOK_REFLOW_ADAPTER (erm); EAddressbookReflowAdapterPrivate *priv = adapter->priv; @@ -319,7 +328,9 @@ addressbook_incarnate (EReflowModel *erm, gint i, GnomeCanvasGroup *parent) } static void -addressbook_reincarnate (EReflowModel *erm, gint i, GnomeCanvasItem *item) +addressbook_reincarnate (EReflowModel *erm, + gint i, + GnomeCanvasItem *item) { EAddressbookReflowAdapter *adapter = E_ADDRESSBOOK_REFLOW_ADAPTER (erm); EAddressbookReflowAdapterPrivate *priv = adapter->priv; @@ -331,8 +342,9 @@ addressbook_reincarnate (EReflowModel *erm, gint i, GnomeCanvasItem *item) static void create_contact (EAddressbookModel *model, - gint index, gint count, - EAddressbookReflowAdapter *adapter) + gint index, + gint count, + EAddressbookReflowAdapter *adapter) { e_reflow_model_items_inserted (E_REFLOW_MODEL (adapter), index, @@ -341,8 +353,8 @@ create_contact (EAddressbookModel *model, static void remove_contacts (EAddressbookModel *model, - gpointer data, - EAddressbookReflowAdapter *adapter) + gpointer data, + EAddressbookReflowAdapter *adapter) { GArray *indices = (GArray *) data; gint count = indices->len; @@ -358,22 +370,22 @@ remove_contacts (EAddressbookModel *model, static void modify_contact (EAddressbookModel *model, - gint index, - EAddressbookReflowAdapter *adapter) + gint index, + EAddressbookReflowAdapter *adapter) { e_reflow_model_item_changed (E_REFLOW_MODEL (adapter), index); } static void model_changed (EAddressbookModel *model, - EAddressbookReflowAdapter *adapter) + EAddressbookReflowAdapter *adapter) { e_reflow_model_changed (E_REFLOW_MODEL (adapter)); } static void search_started (EAddressbookModel *model, - EAddressbookReflowAdapter *adapter) + EAddressbookReflowAdapter *adapter) { EAddressbookReflowAdapterPrivate *priv = adapter->priv; @@ -382,8 +394,8 @@ search_started (EAddressbookModel *model, static void search_result (EAddressbookModel *model, - const GError *error, - EAddressbookReflowAdapter *adapter) + const GError *error, + EAddressbookReflowAdapter *adapter) { EAddressbookReflowAdapterPrivate *priv = adapter->priv; @@ -394,14 +406,14 @@ search_result (EAddressbookModel *model, static void addressbook_set_property (GObject *object, - guint prop_id, + guint property_id, const GValue *value, GParamSpec *pspec) { EAddressbookReflowAdapter *adapter = E_ADDRESSBOOK_REFLOW_ADAPTER (object); EAddressbookReflowAdapterPrivate *priv = adapter->priv; - switch (prop_id) { + switch (property_id) { case PROP_CLIENT: g_object_set (priv->model, "client", g_value_get_object (value), @@ -418,21 +430,21 @@ addressbook_set_property (GObject *object, NULL); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void addressbook_get_property (GObject *object, - guint prop_id, + guint property_id, GValue *value, GParamSpec *pspec) { EAddressbookReflowAdapter *adapter = E_ADDRESSBOOK_REFLOW_ADAPTER (object); EAddressbookReflowAdapterPrivate *priv = adapter->priv; - switch (prop_id) { + switch (property_id) { case PROP_CLIENT: { g_object_get_property (G_OBJECT (priv->model), "client", value); @@ -452,7 +464,7 @@ addressbook_get_property (GObject *object, g_value_set_object (value, priv->model); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } @@ -568,7 +580,7 @@ e_addressbook_reflow_adapter_get_type (void) void e_addressbook_reflow_adapter_construct (EAddressbookReflowAdapter *adapter, - EAddressbookModel *model) + EAddressbookModel *model) { EAddressbookReflowAdapterPrivate *priv = adapter->priv; @@ -616,7 +628,7 @@ e_addressbook_reflow_adapter_new (EAddressbookModel *model) EContact * e_addressbook_reflow_adapter_get_contact (EAddressbookReflowAdapter *adapter, - gint index) + gint index) { EAddressbookReflowAdapterPrivate *priv = adapter->priv; diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index e47b5bb186..f102b684d7 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -107,7 +107,9 @@ addressbook_row_count (ETableModel *etc) /* This function returns the value at a particular point in our ETableModel. */ static gpointer -addressbook_value_at (ETableModel *etc, gint col, gint row) +addressbook_value_at (ETableModel *etc, + gint col, + gint row) { EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etc); EAddressbookTableAdapterPrivate *priv = adapter->priv; @@ -157,7 +159,10 @@ contact_modified_cb (EBookClient *book_client, } static void -addressbook_set_value_at (ETableModel *etc, gint col, gint row, gconstpointer val) +addressbook_set_value_at (ETableModel *etc, + gint col, + gint row, + gconstpointer val) { EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etc); EAddressbookTableAdapterPrivate *priv = adapter->priv; @@ -199,33 +204,17 @@ addressbook_set_value_at (ETableModel *etc, gint col, gint row, gconstpointer va /* This function returns whether a particular cell is editable. */ static gboolean -addressbook_is_cell_editable (ETableModel *etc, gint col, gint row) +addressbook_is_cell_editable (ETableModel *etc, + gint col, + gint row) { -#if 0 - EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etc); - EAddressbookTableAdapterPrivate *priv = adapter->priv; - const EContact *contact; - - if (row >= 0 && row < e_addressbook_model_contact_count (priv->model)) - contact = e_addressbook_model_contact_at (priv->model, row); - else - contact = NULL; - - if (!e_addressbook_model_editable (priv->model)) - return FALSE; - else if (contact && e_contact_get ((EContact *) contact, E_CONTACT_IS_LIST)) - /* we only allow editing of the name and file as for - * lists */ - return col == E_CONTACT_FULL_NAME || col == E_CONTACT_FILE_AS; - else - return col < E_CONTACT_LAST_SIMPLE_STRING; -#endif - return FALSE; } static void -addressbook_append_row (ETableModel *etm, ETableModel *source, gint row) +addressbook_append_row (ETableModel *etm, + ETableModel *source, + gint row) { EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etm); EAddressbookTableAdapterPrivate *priv = adapter->priv; @@ -248,32 +237,41 @@ addressbook_append_row (ETableModel *etm, ETableModel *source, gint row) /* This function duplicates the value passed to it. */ static gpointer -addressbook_duplicate_value (ETableModel *etc, gint col, gconstpointer value) +addressbook_duplicate_value (ETableModel *etc, + gint col, + gconstpointer value) { return g_strdup (value); } /* This function frees the value passed to it. */ static void -addressbook_free_value (ETableModel *etc, gint col, gpointer value) +addressbook_free_value (ETableModel *etc, + gint col, + gpointer value) { g_free (value); } static gpointer -addressbook_initialize_value (ETableModel *etc, gint col) +addressbook_initialize_value (ETableModel *etc, + gint col) { return g_strdup(""); } static gboolean -addressbook_value_is_empty (ETableModel *etc, gint col, gconstpointer value) +addressbook_value_is_empty (ETableModel *etc, + gint col, + gconstpointer value) { return !(value && *(gchar *) value); } static gchar * -addressbook_value_to_string (ETableModel *etc, gint col, gconstpointer value) +addressbook_value_to_string (ETableModel *etc, + gint col, + gconstpointer value) { return g_strdup (value); } @@ -316,8 +314,9 @@ eab_table_adapter_init (GObject *object) static void create_contact (EAddressbookModel *model, - gint index, gint count, - EAddressbookTableAdapter *adapter) + gint index, + gint count, + EAddressbookTableAdapter *adapter) { e_table_model_pre_change (E_TABLE_MODEL (adapter)); e_table_model_rows_inserted (E_TABLE_MODEL (adapter), index, count); @@ -325,8 +324,8 @@ create_contact (EAddressbookModel *model, static void remove_contacts (EAddressbookModel *model, - gpointer data, - EAddressbookTableAdapter *adapter) + gpointer data, + EAddressbookTableAdapter *adapter) { GArray *indices = (GArray *) data; gint count = indices->len; @@ -345,8 +344,8 @@ remove_contacts (EAddressbookModel *model, static void modify_contact (EAddressbookModel *model, - gint index, - EAddressbookTableAdapter *adapter) + gint index, + EAddressbookTableAdapter *adapter) { /* clear whole cache */ g_hash_table_remove_all (adapter->priv->emails); diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 55310949b0..7f3a7a85b8 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -298,8 +298,8 @@ addressbook_view_create_table_view (EAddressbookView *view, e_cell_date_set_format_component (E_CELL_DATE (cell), "addressbook"); /* Here we create the table. We give it the three pieces of - the table we've created, the header, the model, and the - initial layout. It does the rest. */ + * the table we've created, the header, the model, and the + * initial layout. It does the rest. */ etspecfile = g_build_filename ( EVOLUTION_ETSPECDIR, "e-addressbook-view.etspec", NULL); widget = e_table_new_from_spec_file ( @@ -973,7 +973,8 @@ e_addressbook_view_get_view_object (EAddressbookView *view) /* Helper for e_addressbook_view_get_selected() */ static void -add_to_list (gint model_row, gpointer closure) +add_to_list (gint model_row, + gpointer closure) { GSList **list = closure; *list = g_slist_prepend (*list, GINT_TO_POINTER (model_row)); @@ -1058,7 +1059,9 @@ e_addressbook_view_get_paste_target_list (EAddressbookView *view) } static void -status_message (EAddressbookView *view, const gchar *status, gint percent) +status_message (EAddressbookView *view, + const gchar *status, + gint percent) { EActivity *activity; EShellView *shell_view; @@ -1122,7 +1125,8 @@ folder_bar_message (EAddressbookView *view, } static void -stop_state_changed (GObject *object, EAddressbookView *view) +stop_state_changed (GObject *object, + EAddressbookView *view) { command_state_change (view); } @@ -1180,7 +1184,8 @@ contact_print_button_draw_page (GtkPrintOperation *operation, } static void -e_contact_print_button (EPrintable *printable, GtkPrintOperationAction action) +e_contact_print_button (EPrintable *printable, + GtkPrintOperationAction action) { GtkPrintOperation *operation; @@ -1362,7 +1367,8 @@ addressbook_view_confirm_delete (GtkWindow *parent, } void -e_addressbook_view_delete_selection (EAddressbookView *view, gboolean is_delete) +e_addressbook_view_delete_selection (EAddressbookView *view, + gboolean is_delete) { GSList *list, *l; gboolean plural = FALSE, is_list = FALSE; @@ -1621,13 +1627,15 @@ view_transfer_contacts (EAddressbookView *view, } void -e_addressbook_view_copy_to_folder (EAddressbookView *view, gboolean all) +e_addressbook_view_copy_to_folder (EAddressbookView *view, + gboolean all) { view_transfer_contacts (view, FALSE, all); } void -e_addressbook_view_move_to_folder (EAddressbookView *view, gboolean all) +e_addressbook_view_move_to_folder (EAddressbookView *view, + gboolean all) { view_transfer_contacts (view, TRUE, all); } diff --git a/addressbook/gui/widgets/e-minicard-label.c b/addressbook/gui/widgets/e-minicard-label.c index 967853d7b6..c22ffe58a5 100644 --- a/addressbook/gui/widgets/e-minicard-label.c +++ b/addressbook/gui/widgets/e-minicard-label.c @@ -37,8 +37,8 @@ static void e_minicard_label_init (EMinicardLabel *card); static void e_minicard_label_class_init (EMinicardLabelClass *klass); -static void e_minicard_label_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void e_minicard_label_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); +static void e_minicard_label_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); +static void e_minicard_label_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); static gboolean e_minicard_label_event (GnomeCanvasItem *item, GdkEvent *event); static void e_minicard_label_realize (GnomeCanvasItem *item); static void e_minicard_label_unrealize (GnomeCanvasItem *item); @@ -199,7 +199,10 @@ e_minicard_label_init (EMinicardLabel *minicard_label) } static void -e_minicard_label_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) +e_minicard_label_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { EMinicardLabel *e_minicard_label; GnomeCanvasItem *item; @@ -207,7 +210,7 @@ e_minicard_label_set_property (GObject *object, guint prop_id, const GValue *va e_minicard_label = E_MINICARD_LABEL (object); item = GNOME_CANVAS_ITEM (object); - switch (prop_id) { + switch (property_id) { case PROP_WIDTH: e_minicard_label->width = g_value_get_double (value); e_minicard_label_resize_children (e_minicard_label); @@ -234,19 +237,22 @@ e_minicard_label_set_property (GObject *object, guint prop_id, const GValue *va g_object_set (e_minicard_label->field, "editable", FALSE /* e_minicard_label->editable */, NULL); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void -e_minicard_label_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +e_minicard_label_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) { EMinicardLabel *e_minicard_label; e_minicard_label = E_MINICARD_LABEL (object); - switch (prop_id) { + switch (property_id) { case PROP_WIDTH: g_value_set_double (value, e_minicard_label->width); break; @@ -275,7 +281,7 @@ e_minicard_label_get_property (GObject *object, guint prop_id, GValue *value, G g_value_set_boolean (value, e_minicard_label->editable); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } @@ -341,7 +347,8 @@ e_minicard_label_unrealize (GnomeCanvasItem *item) } static gboolean -e_minicard_label_event (GnomeCanvasItem *item, GdkEvent *event) +e_minicard_label_event (GnomeCanvasItem *item, + GdkEvent *event) { EMinicardLabel *e_minicard_label; @@ -455,13 +462,15 @@ set_colors (EMinicardLabel *label) } static void -e_minicard_label_style_set (EMinicardLabel *label, GtkStyle *previous_style) +e_minicard_label_style_set (EMinicardLabel *label, + GtkStyle *previous_style) { set_colors (label); } static void -e_minicard_label_reflow (GnomeCanvasItem *item, gint flags) +e_minicard_label_reflow (GnomeCanvasItem *item, + gint flags) { EMinicardLabel *e_minicard_label = E_MINICARD_LABEL (item); diff --git a/addressbook/gui/widgets/e-minicard-view-widget.c b/addressbook/gui/widgets/e-minicard-view-widget.c index 65fa12d9f1..0a0b19df94 100644 --- a/addressbook/gui/widgets/e-minicard-view-widget.c +++ b/addressbook/gui/widgets/e-minicard-view-widget.c @@ -37,12 +37,12 @@ static void e_minicard_view_widget_class_init (EMinicardViewWidgetClass *class); static void e_minicard_view_widget_set_property (GObject *object, - guint prop_id, + guint property_id, const GValue *value, GParamSpec *pspec); static void e_minicard_view_widget_get_property (GObject *object, - guint prop_id, + guint property_id, GValue *value, GParamSpec *pspec); static void e_minicard_view_widget_dispose (GObject *object); @@ -231,15 +231,15 @@ e_minicard_view_widget_new (EAddressbookReflowAdapter *adapter) static void e_minicard_view_widget_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint property_id, + const GValue *value, + GParamSpec *pspec) { EMinicardViewWidget *emvw; emvw = E_MINICARD_VIEW_WIDGET (object); - switch (prop_id) { + switch (property_id) { case PROP_CLIENT: if (emvw->book_client) g_object_unref (emvw->book_client); @@ -277,22 +277,22 @@ e_minicard_view_widget_set_property (GObject *object, } break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void e_minicard_view_widget_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint property_id, + GValue *value, + GParamSpec *pspec) { EMinicardViewWidget *emvw; emvw = E_MINICARD_VIEW_WIDGET (object); - switch (prop_id) { + switch (property_id) { case PROP_CLIENT: g_value_set_object (value, emvw->book_client); break; @@ -306,7 +306,7 @@ e_minicard_view_widget_get_property (GObject *object, g_value_set_double (value, emvw->column_width); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } @@ -335,49 +335,57 @@ e_minicard_view_widget_dispose (GObject *object) } static void -selection_change (ESelectionModel *esm, EMinicardViewWidget *widget) +selection_change (ESelectionModel *esm, + EMinicardViewWidget *widget) { - g_signal_emit (widget, - signals[SELECTION_CHANGE], 0); + g_signal_emit (widget, signals[SELECTION_CHANGE], 0); } static void -selection_row_change (ESelectionModel *esm, gint row, EMinicardViewWidget *widget) +selection_row_change (ESelectionModel *esm, + gint row, + EMinicardViewWidget *widget) { selection_change (esm, widget); } static void -column_width_changed (ESelectionModel *esm, double width, EMinicardViewWidget *widget) +column_width_changed (ESelectionModel *esm, + gdouble width, + EMinicardViewWidget *widget) { - g_signal_emit (widget, - signals[COLUMN_WIDTH_CHANGED], 0, width); + g_signal_emit (widget, signals[COLUMN_WIDTH_CHANGED], 0, width); } static void -create_contact (EMinicardView *view, EMinicardViewWidget *widget) +create_contact (EMinicardView *view, + EMinicardViewWidget *widget) { g_signal_emit (widget, signals[CREATE_CONTACT], 0); } static void -create_contact_list (EMinicardView *view, EMinicardViewWidget *widget) +create_contact_list (EMinicardView *view, + EMinicardViewWidget *widget) { g_signal_emit (widget, signals[CREATE_CONTACT_LIST], 0); } static guint -right_click (EMinicardView *view, GdkEvent *event, EMinicardViewWidget *widget) +right_click (EMinicardView *view, + GdkEvent *event, + EMinicardViewWidget *widget) { guint ret_val; - g_signal_emit (widget, - signals[RIGHT_CLICK], 0, - event, &ret_val); + + g_signal_emit (widget, signals[RIGHT_CLICK], 0, event, &ret_val); + return ret_val; } static void -e_minicard_view_widget_style_set (GtkWidget *widget, GtkStyle *previous_style) +e_minicard_view_widget_style_set (GtkWidget *widget, + GtkStyle *previous_style) { EMinicardViewWidget *view = E_MINICARD_VIEW_WIDGET (widget); GtkStyle *style; @@ -493,7 +501,7 @@ e_minicard_view_widget_get_selection_model (EMinicardViewWidget *view) } EMinicardView * -e_minicard_view_widget_get_view (EMinicardViewWidget *view) +e_minicard_view_widget_get_view (EMinicardViewWidget *view) { if (view->emv) return E_MINICARD_VIEW (view->emv); @@ -502,7 +510,8 @@ e_minicard_view_widget_get_view (EMinicardViewWidget *view) } static gboolean -e_minicard_view_widget_real_focus_in_event (GtkWidget *widget, GdkEventFocus *event) +e_minicard_view_widget_real_focus_in_event (GtkWidget *widget, + GdkEventFocus *event) { GnomeCanvas *canvas; EMinicardViewWidget *view; @@ -524,6 +533,5 @@ e_minicard_view_widget_real_focus_in_event (GtkWidget *widget, GdkEventFocus *ev return GTK_WIDGET_CLASS (parent_class)->focus_in_event (widget, event); return FALSE; - } diff --git a/addressbook/gui/widgets/e-minicard-view.c b/addressbook/gui/widgets/e-minicard-view.c index 91a4a12991..ba52e7a0a8 100644 --- a/addressbook/gui/widgets/e-minicard-view.c +++ b/addressbook/gui/widgets/e-minicard-view.c @@ -81,11 +81,11 @@ static GtkTargetEntry drag_types[] = { static void e_minicard_view_drag_data_get (GtkWidget *widget, - GdkDragContext *context, - GtkSelectionData *selection_data, - guint info, - guint time, - EMinicardView *view) + GdkDragContext *context, + GtkSelectionData *selection_data, + guint info, + guint time, + EMinicardView *view) { GdkAtom target; @@ -149,7 +149,7 @@ e_minicard_view_drag_begin (EAddressbookReflowAdapter *adapter, target_list = gtk_target_list_new (drag_types, G_N_ELEMENTS (drag_types)); context = gtk_drag_begin (GTK_WIDGET (GNOME_CANVAS_ITEM (view)->canvas), - target_list, actions, 1/*XXX*/, event); + target_list, actions, 1/*XXX */, event); if (!view->canvas_drag_data_get_id) view->canvas_drag_data_get_id = g_signal_connect ( @@ -235,15 +235,15 @@ adapter_changed (EMinicardView *view) static void e_minicard_view_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint property_id, + const GValue *value, + GParamSpec *pspec) { EMinicardView *view; view = E_MINICARD_VIEW (object); - switch (prop_id) { + switch (property_id) { case PROP_ADAPTER: if (view->adapter) { if (view->writable_status_id || view->stop_state_id) { @@ -303,22 +303,22 @@ e_minicard_view_set_property (GObject *object, set_empty_message (view); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void e_minicard_view_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint property_id, + GValue *value, + GParamSpec *pspec) { EMinicardView *view; view = E_MINICARD_VIEW (object); - switch (prop_id) { + switch (property_id) { case PROP_ADAPTER: g_value_set_object (value, view->adapter); break; @@ -335,7 +335,7 @@ e_minicard_view_get_property (GObject *object, "editable", value); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } @@ -378,7 +378,8 @@ e_minicard_view_dispose (GObject *object) } static guint -e_minicard_view_right_click (EMinicardView *view, GdkEvent *event) +e_minicard_view_right_click (EMinicardView *view, + GdkEvent *event) { guint ret_val = 0; g_signal_emit (view, signals[RIGHT_CLICK], 0, @@ -387,7 +388,8 @@ e_minicard_view_right_click (EMinicardView *view, GdkEvent *event) } static gboolean -e_minicard_view_event (GnomeCanvasItem *item, GdkEvent *event) +e_minicard_view_event (GnomeCanvasItem *item, + GdkEvent *event) { EMinicardView *view; @@ -463,32 +465,6 @@ e_minicard_view_selection_event (EReflow *reflow, return return_val; } -#if 0 -static gint -compare_to_utf_str (EMinicard *card, const gchar *utf_str) -{ - g_return_val_if_fail (card != NULL, 0); - g_return_val_if_fail (E_IS_MINICARD (card), 0); - - if (g_unichar_isdigit (g_utf8_get_char (utf_str))) { - return 1; - } - - if (card->card) { - gchar *file_as; - g_object_get (card->card, - "file_as", &file_as, - NULL); - if (file_as) - return g_utf8_strcasecmp (file_as, utf_str); - else - return 0; - } else { - return 0; - } -} -#endif - static void e_minicard_view_class_init (EMinicardViewClass *klass) { @@ -625,7 +601,8 @@ typedef struct { } ModelAndList; static void -add_to_list (gint index, gpointer closure) +add_to_list (gint index, + gpointer closure) { ModelAndList *mal = closure; mal->list = g_slist_prepend ( diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 352604984c..78d98e2cb2 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -43,8 +43,8 @@ static void e_minicard_init (EMinicard *card); static void e_minicard_class_init (EMinicardClass *class); -static void e_minicard_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void e_minicard_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); +static void e_minicard_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); +static void e_minicard_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); static void e_minicard_dispose (GObject *object); static void e_minicard_finalize (GObject *object); static gboolean e_minicard_event (GnomeCanvasItem *item, GdkEvent *event); @@ -266,7 +266,8 @@ e_minicard_init (EMinicard *minicard) } static void -set_selected (EMinicard *minicard, gboolean selected) +set_selected (EMinicard *minicard, + gboolean selected) { GnomeCanvas *canvas; GtkStyle *style; @@ -299,7 +300,8 @@ set_selected (EMinicard *minicard, gboolean selected) } static void -set_has_cursor (EMinicard *minicard, gboolean has_cursor) +set_has_cursor (EMinicard *minicard, + gboolean has_cursor) { if (!minicard->has_focus && has_cursor) e_canvas_item_grab_focus (GNOME_CANVAS_ITEM (minicard), FALSE); @@ -307,7 +309,10 @@ set_has_cursor (EMinicard *minicard, gboolean has_cursor) } static void -e_minicard_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) +e_minicard_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { GnomeCanvasItem *item; EMinicard *e_minicard; @@ -317,7 +322,7 @@ e_minicard_set_property (GObject *object, guint prop_id, const GValue *value, G item = GNOME_CANVAS_ITEM (object); e_minicard = E_MINICARD (object); - switch (prop_id) { + switch (property_id) { case PROP_WIDTH: if (e_minicard->width != g_value_get_double (value)) { e_minicard->width = g_value_get_double (value); @@ -376,19 +381,22 @@ e_minicard_set_property (GObject *object, guint prop_id, const GValue *value, G e_minicard->changed = FALSE; break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void -e_minicard_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +e_minicard_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) { EMinicard *e_minicard; e_minicard = E_MINICARD (object); - switch (prop_id) { + switch (property_id) { case PROP_WIDTH: g_value_set_double (value, e_minicard->width); break; @@ -411,7 +419,7 @@ e_minicard_get_property (GObject *object, guint prop_id, GValue *value, GParamS g_value_set_object (value, e_minicard->contact); break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } @@ -466,7 +474,8 @@ e_minicard_finalize (GObject *object) } static void -e_minicard_style_set (EMinicard *minicard, GtkStyle *previous_style) +e_minicard_style_set (EMinicard *minicard, + GtkStyle *previous_style) { GnomeCanvasItem *item = GNOME_CANVAS_ITEM (minicard); @@ -552,7 +561,8 @@ e_minicard_activate_editor (EMinicard *minicard) } static gboolean -e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) +e_minicard_event (GnomeCanvasItem *item, + GdkEvent *event) { EMinicard *e_minicard; @@ -658,7 +668,7 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) gint view_index = e_sorter_model_to_sorted (reflow->selection->sorter, model_index); if (view_index == 0) - view_index = row_count-1; + view_index = row_count - 1; else view_index--; @@ -683,7 +693,7 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) gint model_index = e_selection_model_cursor_row (reflow->selection); gint view_index = e_sorter_model_to_sorted (reflow->selection->sorter, model_index); - if (view_index == row_count-1) + if (view_index == row_count - 1) view_index = 0; else view_index++; @@ -718,7 +728,7 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) } static void -e_minicard_resize_children ( EMinicard *e_minicard ) +e_minicard_resize_children (EMinicard *e_minicard) { GList *list; gboolean is_list = GPOINTER_TO_INT (e_contact_get (e_minicard->contact, E_CONTACT_IS_LIST)); @@ -742,7 +752,9 @@ e_minicard_resize_children ( EMinicard *e_minicard ) } static void -add_field (EMinicard *e_minicard, EContactField field, gdouble left_width) +add_field (EMinicard *e_minicard, + EContactField field, + gdouble left_width) { GnomeCanvasItem *new_item; GnomeCanvasGroup *group; @@ -808,7 +820,11 @@ get_email_location (EVCardAttribute *attr) } static void -add_email_field (EMinicard *e_minicard, GList *email_list, gdouble left_width, gint limit, gboolean is_list) +add_email_field (EMinicard *e_minicard, + GList *email_list, + gdouble left_width, + gint limit, + gboolean is_list) { GnomeCanvasItem *new_item; GnomeCanvasGroup *group; @@ -820,7 +836,7 @@ add_email_field (EMinicard *e_minicard, GList *email_list, gdouble left_width, g GList *emails = e_contact_get (e_minicard->contact, E_CONTACT_EMAIL); group = GNOME_CANVAS_GROUP ( e_minicard ); - for (l=email_list, le=emails; l!=NULL && count < limit && le!=NULL; l = l->next, le=le->next) { + for (l = email_list, le = emails; l != NULL && count < limit && le != NULL; l = l->next, le = le->next) { const gchar *tmp; gchar *email = NULL; gchar *string = NULL; @@ -881,7 +897,8 @@ add_email_field (EMinicard *e_minicard, GList *email_list, gdouble left_width, g } static gint -get_left_width (EMinicard *e_minicard, gboolean is_list) +get_left_width (EMinicard *e_minicard, + gboolean is_list) { gchar *name; EContactField field; @@ -910,7 +927,7 @@ get_left_width (EMinicard *e_minicard, gboolean is_list) } static void -remodel ( EMinicard *e_minicard ) +remodel (EMinicard *e_minicard) { GnomeCanvasItem *item = GNOME_CANVAS_ITEM (e_minicard); gint count = 0; @@ -947,7 +964,7 @@ remodel ( EMinicard *e_minicard ) for (field = E_CONTACT_FULL_NAME; field != (E_CONTACT_LAST_SIMPLE_STRING -1) && count < 5; field++) { EMinicardField *minicard_field = NULL; - gboolean is_email=FALSE; + gboolean is_email = FALSE; if (field == E_CONTACT_FAMILY_NAME || field == E_CONTACT_GIVEN_NAME) continue; @@ -958,7 +975,7 @@ remodel ( EMinicard *e_minicard ) if (email_rendered) continue; email_rendered = TRUE; - is_email=TRUE; + is_email = TRUE; } if (list) @@ -992,7 +1009,7 @@ remodel ( EMinicard *e_minicard ) limit = 5 - count; email = e_contact_get_attributes (e_minicard->contact, E_CONTACT_EMAIL); add_email_field (e_minicard, email, left_width, limit, is_list); - if (count+limit >5) + if (count + limit >5) count = 5; else count = count + g_list_length (email); @@ -1014,7 +1031,8 @@ remodel ( EMinicard *e_minicard ) } static void -e_minicard_reflow (GnomeCanvasItem *item, gint flags) +e_minicard_reflow (GnomeCanvasItem *item, + gint flags) { EMinicard *e_minicard = E_MINICARD (item); @@ -1074,7 +1092,8 @@ e_minicard_get_card_id (EMinicard *minicard) } gint -e_minicard_compare (EMinicard *minicard1, EMinicard *minicard2) +e_minicard_compare (EMinicard *minicard1, + EMinicard *minicard2) { gint cmp = 0; @@ -1109,7 +1128,8 @@ e_minicard_compare (EMinicard *minicard1, EMinicard *minicard2) } gint -e_minicard_selected (EMinicard *minicard, GdkEvent *event) +e_minicard_selected (EMinicard *minicard, + GdkEvent *event) { gint ret_val = 0; GnomeCanvasItem *item = GNOME_CANVAS_ITEM (minicard); @@ -1129,7 +1149,8 @@ e_minicard_selected (EMinicard *minicard, GdkEvent *event) } static gint -e_minicard_drag_begin (EMinicard *minicard, GdkEvent *event) +e_minicard_drag_begin (EMinicard *minicard, + GdkEvent *event) { gint ret_val = 0; GnomeCanvasItem *parent; diff --git a/addressbook/gui/widgets/ea-addressbook-view.c b/addressbook/gui/widgets/ea-addressbook-view.c index 2d432b6a76..c5bb9fc018 100644 --- a/addressbook/gui/widgets/ea-addressbook-view.c +++ b/addressbook/gui/widgets/ea-addressbook-view.c @@ -106,7 +106,7 @@ ea_ab_view_get_description (AtkObject *accessible) return _("evolution address book"); } -AtkObject* +AtkObject * ea_ab_view_new (GObject *obj) { GObject *object; diff --git a/addressbook/gui/widgets/ea-addressbook-view.h b/addressbook/gui/widgets/ea-addressbook-view.h index db9e008ab1..55da1d5e37 100644 --- a/addressbook/gui/widgets/ea-addressbook-view.h +++ b/addressbook/gui/widgets/ea-addressbook-view.h @@ -48,7 +48,7 @@ struct _EaABViewClass }; GType ea_ab_view_get_type (void); -AtkObject* ea_ab_view_new (GObject *obj); +AtkObject * ea_ab_view_new (GObject *obj); G_END_DECLS diff --git a/addressbook/gui/widgets/ea-addressbook.c b/addressbook/gui/widgets/ea-addressbook.c index b67d876139..b57720be39 100644 --- a/addressbook/gui/widgets/ea-addressbook.c +++ b/addressbook/gui/widgets/ea-addressbook.c @@ -36,9 +36,9 @@ EA_FACTORY_GOBJECT (EA_TYPE_MINICARD_VIEW, ea_minicard_view, ea_minicard_view_ne EA_FACTORY_GOBJECT (EA_TYPE_AB_VIEW, ea_ab_view, ea_ab_view_new) static gboolean ea_addressbook_focus_watcher (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - gpointer data); + guint n_param_values, + const GValue *param_values, + gpointer data); void e_minicard_a11y_init (void) { @@ -64,9 +64,9 @@ void eab_view_a11y_init (void) static gboolean ea_addressbook_focus_watcher (GSignalInvocationHint *ihint, - guint n_param_values, - const GValue *param_values, - gpointer data) + guint n_param_values, + const GValue *param_values, + gpointer data) { GObject *object; GdkEvent *event; diff --git a/addressbook/gui/widgets/ea-minicard-view.c b/addressbook/gui/widgets/ea-minicard-view.c index a61c6074a0..58d3a5fd2b 100644 --- a/addressbook/gui/widgets/ea-minicard-view.c +++ b/addressbook/gui/widgets/ea-minicard-view.c @@ -51,7 +51,7 @@ static void atk_selection_interface_init (AtkSelectionIface *iface); static gboolean selection_interface_add_selection (AtkSelection *selection, gint i); static gboolean selection_interface_clear_selection (AtkSelection *selection); -static AtkObject* selection_interface_ref_selection (AtkSelection *selection, +static AtkObject * selection_interface_ref_selection (AtkSelection *selection, gint i); static gint selection_interface_get_selection_count (AtkSelection *selection); static gboolean selection_interface_is_child_selected (AtkSelection *selection, @@ -187,7 +187,7 @@ ea_minicard_view_get_description (AtkObject *accessible) return _("evolution address book"); } -AtkObject* +AtkObject * ea_minicard_view_new (GObject *obj) { GObject *object; @@ -242,7 +242,8 @@ static AtkStateSet *ea_minicard_view_ref_state_set (AtkObject *obj) } static AtkObject * -ea_minicard_view_ref_child (AtkObject *accessible, gint index) +ea_minicard_view_ref_child (AtkObject *accessible, + gint index) { EReflow *reflow; gint child_num; @@ -288,7 +289,8 @@ atk_selection_interface_init (AtkSelectionIface *iface) } static gboolean -selection_interface_add_selection (AtkSelection *selection, gint i) +selection_interface_add_selection (AtkSelection *selection, + gint i) { AtkGObjectAccessible *atk_gobj= NULL; EReflow *reflow = NULL; @@ -322,8 +324,9 @@ selection_interface_clear_selection (AtkSelection *selection) return TRUE; } -static AtkObject* -selection_interface_ref_selection (AtkSelection *selection, gint i) +static AtkObject * +selection_interface_ref_selection (AtkSelection *selection, + gint i) { return ea_minicard_view_ref_child (ATK_OBJECT (selection), i); } @@ -344,7 +347,8 @@ selection_interface_get_selection_count (AtkSelection *selection) } static gboolean -selection_interface_is_child_selected (AtkSelection *selection, gint i) +selection_interface_is_child_selected (AtkSelection *selection, + gint i) { AtkGObjectAccessible *atk_gobj = NULL; EReflow *reflow = NULL; @@ -407,13 +411,15 @@ static gint atk_action_interface_get_n_action (AtkAction *iface) } static const gchar * -atk_action_interface_get_description (AtkAction *iface, gint i) +atk_action_interface_get_description (AtkAction *iface, + gint i) { return atk_action_interface_get_name (iface, i); } static const gchar * -atk_action_interface_get_name (AtkAction *iface, gint i) +atk_action_interface_get_name (AtkAction *iface, + gint i) { if ( i >= G_N_ELEMENTS (action_name) || i < 0) return NULL; diff --git a/addressbook/gui/widgets/ea-minicard-view.h b/addressbook/gui/widgets/ea-minicard-view.h index 320c74d15e..889674bb92 100644 --- a/addressbook/gui/widgets/ea-minicard-view.h +++ b/addressbook/gui/widgets/ea-minicard-view.h @@ -49,7 +49,7 @@ struct _EaMinicardViewClass GType ea_minicard_view_get_type (void); -AtkObject* ea_minicard_view_new (GObject *obj); +AtkObject * ea_minicard_view_new (GObject *obj); G_END_DECLS diff --git a/addressbook/gui/widgets/ea-minicard.c b/addressbook/gui/widgets/ea-minicard.c index 2e8d4281ef..45d496ffa0 100644 --- a/addressbook/gui/widgets/ea-minicard.c +++ b/addressbook/gui/widgets/ea-minicard.c @@ -229,7 +229,8 @@ ea_minicard_get_n_children (AtkObject *accessible) } static AtkObject * -ea_minicard_ref_child (AtkObject *accessible, gint index) +ea_minicard_ref_child (AtkObject *accessible, + gint index) { return NULL; } @@ -246,7 +247,8 @@ atk_action_interface_init (AtkActionIface *iface) } static gboolean -atk_action_interface_do_action (AtkAction *iface, gint i) +atk_action_interface_do_action (AtkAction *iface, + gint i) { EMinicard *minicard = NULL; @@ -278,13 +280,15 @@ atk_action_interface_get_n_action (AtkAction *iface) } static const gchar * -atk_action_interface_get_description (AtkAction *iface, gint i) +atk_action_interface_get_description (AtkAction *iface, + gint i) { return atk_action_interface_get_name (iface, i); } static const gchar * -atk_action_interface_get_name (AtkAction *iface, gint i) +atk_action_interface_get_name (AtkAction *iface, + gint i) { if ( i >= G_N_ELEMENTS (action_name) || i < 0) return NULL; diff --git a/addressbook/gui/widgets/ea-minicard.h b/addressbook/gui/widgets/ea-minicard.h index d4c96fa787..ea27158011 100644 --- a/addressbook/gui/widgets/ea-minicard.h +++ b/addressbook/gui/widgets/ea-minicard.h @@ -49,7 +49,7 @@ struct _EaMinicardClass }; GType ea_minicard_get_type (void); -AtkObject* ea_minicard_new (GObject *obj); +AtkObject * ea_minicard_new (GObject *obj); G_END_DECLS diff --git a/addressbook/gui/widgets/eab-config.c b/addressbook/gui/widgets/eab-config.c index 5cb8d25e81..e1a0501203 100644 --- a/addressbook/gui/widgets/eab-config.c +++ b/addressbook/gui/widgets/eab-config.c @@ -40,7 +40,8 @@ ecp_init (EABConfig *cfg) } static void -ecp_target_free (EConfig *ec, EConfigTarget *t) +ecp_target_free (EConfig *ec, + EConfigTarget *t) { struct _EABConfigPrivate *p = EAB_CONFIG (ec)->priv; @@ -78,13 +79,15 @@ ecp_target_free (EConfig *ec, EConfigTarget *t) } static void -ecp_source_changed (struct _ESource *source, EConfig *ec) +ecp_source_changed (ESource *source, + EConfig *ec) { e_config_target_changed (ec, E_CONFIG_TARGET_CHANGED_STATE); } static void -ecp_set_target (EConfig *ec, EConfigTarget *t) +ecp_set_target (EConfig *ec, + EConfigTarget *t) { struct _EABConfigPrivate *p = EAB_CONFIG (ec)->priv; @@ -137,7 +140,8 @@ eab_config_get_type (void) } EABConfig * -eab_config_new (gint type, const gchar *menuid) +eab_config_new (gint type, + const gchar *menuid) { EABConfig *ecp = g_object_new (eab_config_get_type (), NULL); e_config_construct (&ecp->config, type, menuid); @@ -145,7 +149,8 @@ eab_config_new (gint type, const gchar *menuid) } EABConfigTargetSource * -eab_config_target_new_source (EABConfig *ecp, struct _ESource *source) +eab_config_target_new_source (EABConfig *ecp, + ESource *source) { EABConfigTargetSource *t = e_config_target_new ( &ecp->config, EAB_CONFIG_TARGET_SOURCE, sizeof (*t)); @@ -157,7 +162,8 @@ eab_config_target_new_source (EABConfig *ecp, struct _ESource *source) } EABConfigTargetPrefs * -eab_config_target_new_prefs (EABConfig *ecp, GConfClient *gconf) +eab_config_target_new_prefs (EABConfig *ecp, + GConfClient *gconf) { EABConfigTargetPrefs *t = e_config_target_new ( &ecp->config, EAB_CONFIG_TARGET_PREFS, sizeof (*t)); diff --git a/addressbook/gui/widgets/eab-config.h b/addressbook/gui/widgets/eab-config.h index 7cf79244e2..70023360e0 100644 --- a/addressbook/gui/widgets/eab-config.h +++ b/addressbook/gui/widgets/eab-config.h @@ -25,6 +25,7 @@ #define __EAB_CONFIG_H__ #include +#include #include "e-util/e-config.h" #define EAB_TYPE_CONFIG (eab_config_get_type ()) @@ -56,7 +57,7 @@ typedef struct _EABConfigTargetSource EABConfigTargetSource; struct _EABConfigTargetSource { EConfigTarget target; - struct _ESource *source; + ESource *source; }; typedef struct _EABConfigTargetPrefs EABConfigTargetPrefs; @@ -73,7 +74,7 @@ typedef struct _EConfigItem EABConfigItem; GType eab_config_get_type (void); EABConfig *eab_config_new (gint type, const gchar *menuid); -EABConfigTargetSource *eab_config_target_new_source (EABConfig *ecp, struct _ESource *source); +EABConfigTargetSource *eab_config_target_new_source (EABConfig *ecp, ESource *source); EABConfigTargetPrefs *eab_config_target_new_prefs (EABConfig *ecp, GConfClient *gconf); G_END_DECLS diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index 56a2511d64..da558352bb 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -52,7 +52,7 @@ struct _EABContactDisplayPrivate { GtkOrientation orientation; gboolean show_maps; - GHashTable *closed_lists; /* see render_contact_list_* */ + GHashTable *closed_lists; /* see render_contact_list_ * */ }; enum { @@ -193,7 +193,9 @@ static GtkActionEntry internal_mailto_entries[] = { }; static void -render_address_link (GString *buffer, EContact *contact, gint map_type) +render_address_link (GString *buffer, + EContact *contact, + gint map_type) { EContactAddress *adr; GString *link = g_string_new (""); @@ -366,8 +368,7 @@ accum_multival_attribute (GString *buffer, GList *val_list, *l; /* Workaround till bug [1] is fixed. - [1] https://bugzilla.gnome.org/show_bug.cgi?id=473862 - */ + * [1] https://bugzilla.gnome.org/show_bug.cgi?id=473862 */ icon = NULL; val_list = e_contact_get (contact, field); @@ -409,7 +410,8 @@ get_email_location (EVCardAttribute *attr) } static void -render_title_block (GString *buffer, EContact *contact) +render_title_block (GString *buffer, + EContact *contact) { const gchar *str; gchar *html; @@ -455,9 +457,9 @@ render_title_block (GString *buffer, EContact *contact) static void render_contact_list_row (GString *buffer, - EDestination *destination, - EABContactDisplay *display) - { + EDestination *destination, + EABContactDisplay *display) +{ gchar *evolution_imagesdir = g_filename_to_uri (EVOLUTION_IMAGESDIR, NULL, NULL); gboolean list_collapsed = FALSE; const gchar *listId = e_destination_get_contact_uid (destination), *textrep; @@ -576,13 +578,14 @@ render_contact_list (GString *buffer, } static void -render_contact_block (GString *buffer, EContact *contact) +render_contact_block (GString *buffer, + EContact *contact) { GString *accum; GList *email_list, *l, *email_attr_list, *al; gint email_num = 0; const gchar *nl; - gchar *nick=NULL; + gchar *nick = NULL; accum = g_string_new (""); nl = ""; @@ -592,7 +595,7 @@ render_contact_block (GString *buffer, EContact *contact) email_list = e_contact_get (contact, E_CONTACT_EMAIL); email_attr_list = e_contact_get_attributes (contact, E_CONTACT_EMAIL); - for (l = email_list, al=email_attr_list; l && al; l = l->next, al = al->next) { + for (l = email_list, al = email_attr_list; l && al; l = l->next, al = al->next) { gchar *name = NULL, *mail = NULL; gchar *attr_str = (gchar *) get_email_location ((EVCardAttribute *) al->data); @@ -669,7 +672,8 @@ render_contact_block (GString *buffer, EContact *contact) } static void -render_work_block (GString *buffer, EContact *contact) +render_work_block (GString *buffer, + EContact *contact) { GString *accum = g_string_new (""); @@ -696,7 +700,8 @@ render_work_block (GString *buffer, EContact *contact) } static void -render_personal_block (GString *buffer, EContact *contact) +render_personal_block (GString *buffer, + EContact *contact) { GString *accum = g_string_new (""); @@ -719,7 +724,8 @@ render_personal_block (GString *buffer, EContact *contact) } static void -render_note_block (GString *buffer, EContact *contact) +render_note_block (GString *buffer, + EContact *contact) { const gchar *str; gchar *html; @@ -738,7 +744,9 @@ render_note_block (GString *buffer, EContact *contact) } static void -render_address_map (GString *buffer, EContact *contact, gint map_type) +render_address_map (GString *buffer, + EContact *contact, + gint map_type) { #ifdef WITH_CONTACT_MAPS if (map_type == E_CONTACT_ADDRESS_WORK) { @@ -750,7 +758,9 @@ render_address_map (GString *buffer, EContact *contact, gint map_type) } static void -render_contact_horizontal (GString *buffer, EContact *contact, gboolean show_maps) +render_contact_horizontal (GString *buffer, + EContact *contact, + gboolean show_maps) { g_string_append (buffer, ""); render_title_block (buffer, contact); @@ -776,7 +786,9 @@ render_contact_horizontal (GString *buffer, EContact *contact, gboolean show_map } static void -render_contact_vertical (GString *buffer, EContact *contact, gboolean show_maps) +render_contact_vertical (GString *buffer, + EContact *contact, + gboolean show_maps) { /* First row: photo & name */ g_string_append (buffer, "
"); @@ -817,7 +829,10 @@ render_contact_vertical (GString *buffer, EContact *contact, gboolean show_maps) } static void -render_contact (GString *buffer, EContact *contact, GtkOrientation orientation, gboolean show_maps) +render_contact (GString *buffer, + EContact *contact, + GtkOrientation orientation, + gboolean show_maps) { if (orientation == GTK_ORIENTATION_VERTICAL) render_contact_vertical (buffer, contact, show_maps); @@ -911,9 +926,9 @@ eab_contact_display_render_compact (EABContactDisplay *display, GdkPixbuf *pixbuf; /* figure out if we need to downscale the - image here. we don't scale the pixbuf - itself, just insert width/height tags in - the html */ + * image here. we don't scale the pixbuf + * itself, just insert width/height tags in + * the html */ gdk_pixbuf_loader_write (loader, photo->data.inlined.data, photo->data.inlined.length, NULL); gdk_pixbuf_loader_close (loader, NULL); pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); @@ -1259,7 +1274,7 @@ contact_display_link_clicked (EWebView *web_view, contact_display_emit_send_message (display, index); return; } else if (g_str_has_prefix (uri, "##") && g_str_has_suffix (uri, "##")) { - gchar *list_id = g_strndup (uri+2, strlen (uri) - 4); + gchar *list_id = g_strndup (uri + 2, strlen (uri) - 4); if (g_hash_table_lookup (display->priv->closed_lists, list_id)) { g_hash_table_remove (display->priv->closed_lists, list_id); @@ -1278,19 +1293,21 @@ contact_display_link_clicked (EWebView *web_view, } #ifdef WITH_CONTACT_MAPS -/** - * Clutter event handling workaround. Clutter-gtk propagates events down to parent widgets. - * In this case it leads to GtkHTML scrolling up and down while user's trying to zoom in the - * champlain widget. This workaround stops the propagation from map widget down to GtkHTML - */ +/* XXX Clutter event handling workaround. Clutter-gtk propagates events down + * to parent widgets. In this case it leads to GtkHTML scrolling up and + * down while user's trying to zoom in the champlain widget. This + * workaround stops the propagation from map widget down to GtkHTML. */ static gboolean -handle_map_scroll_event (GtkWidget *widget, GdkEvent *event) +handle_map_scroll_event (GtkWidget *widget, + GdkEvent *event) { return TRUE; } static void -contact_display_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, EABContactDisplay *display) +contact_display_object_requested (GtkHTML *html, + GtkHTMLEmbedded *eb, + EABContactDisplay *display) { EContact *contact = display->priv->contact; const gchar *name = e_contact_get_const (contact, E_CONTACT_FILE_AS); @@ -1587,7 +1604,8 @@ eab_contact_display_get_orientation (EABContactDisplay *display) } void -eab_contact_display_set_orientation (EABContactDisplay *display, GtkOrientation orientation) +eab_contact_display_set_orientation (EABContactDisplay *display, + GtkOrientation orientation) { EABContactDisplayMode mode; EContact *contact; @@ -1620,7 +1638,8 @@ eab_contact_display_get_show_maps (EABContactDisplay *display) } void -eab_contact_display_set_show_maps (EABContactDisplay *display, gboolean show_maps) +eab_contact_display_set_show_maps (EABContactDisplay *display, + gboolean show_maps) { EABContactDisplayMode mode; EContact *contact; diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index d910b339b4..c951b290c7 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -83,23 +83,29 @@ typedef enum { } AddressFormat; void -eab_error_dialog (EAlertSink *alert_sink, const gchar *msg, const GError *error) +eab_error_dialog (EAlertSink *alert_sink, + const gchar *msg, + const GError *error) { if (error && error->message) { if (alert_sink) - e_alert_submit (alert_sink, - "addressbook:generic-error", - msg, error->message, NULL); + e_alert_submit ( + alert_sink, + "addressbook:generic-error", + msg, error->message, NULL); else e_alert_run_dialog_for_args ( - e_shell_get_active_window (NULL), - "addressbook:generic-error", - msg, error->message, NULL); + e_shell_get_active_window (NULL), + "addressbook:generic-error", + msg, error->message, NULL); } } void -eab_load_error_dialog (GtkWidget *parent, EAlertSink *alert_sink, ESource *source, const GError *error) +eab_load_error_dialog (GtkWidget *parent, + EAlertSink *alert_sink, + ESource *source, + const GError *error) { gchar *label_string, *label = NULL, *uri; gboolean can_detail_error = TRUE; @@ -110,10 +116,12 @@ eab_load_error_dialog (GtkWidget *parent, EAlertSink *alert_sink, ESource *sourc if (g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_OFFLINE_UNAVAILABLE)) { can_detail_error = FALSE; - label_string = _("This address book cannot be opened. This either means this " - "book is not marked for offline usage or not yet downloaded " - "for offline usage. Please load the address book once in online mode " - "to download its contents."); + label_string = + _("This address book cannot be opened. This either " + "means this book is not marked for offline usage " + "or not yet downloaded for offline usage. Please " + "load the address book once in online mode to " + "download its contents."); } else if (uri && g_str_has_prefix (uri, "local:")) { @@ -187,7 +195,8 @@ eab_load_error_dialog (GtkWidget *parent, EAlertSink *alert_sink, ESource *sourc } void -eab_search_result_dialog (EAlertSink *alert_sink, const GError *error) +eab_search_result_dialog (EAlertSink *alert_sink, + const GError *error) { gchar *str = NULL; @@ -265,7 +274,8 @@ make_safe_filename (gchar *name) } static void -source_selection_changed_cb (ESourceSelector *selector, GtkWidget *ok_button) +source_selection_changed_cb (ESourceSelector *selector, + GtkWidget *ok_button) { ESource *except_source = NULL, *selected; @@ -276,7 +286,11 @@ source_selection_changed_cb (ESourceSelector *selector, GtkWidget *ok_button) } ESource * -eab_select_source (ESource *except_source, const gchar *title, const gchar *message, const gchar *select_uid, GtkWindow *parent) +eab_select_source (ESource *except_source, + const gchar *title, + const gchar *message, + const gchar *select_uid, + GtkWindow *parent) { ESource *source; ESourceList *source_list; @@ -395,7 +409,8 @@ remove_contact_ready_cb (GObject *source_object, } static void -do_delete_from_source (gpointer data, gpointer user_data) +do_delete_from_source (gpointer data, + gpointer user_data) { ContactCopyProcess *process = user_data; EContact *contact = data; @@ -441,7 +456,10 @@ process_unref (ContactCopyProcess *process) } static void -contact_added_cb (EBookClient *book_client, const GError *error, const gchar *id, gpointer user_data) +contact_added_cb (EBookClient *book_client, + const GError *error, + const gchar *id, + gpointer user_data) { ContactCopyProcess *process = user_data; @@ -462,7 +480,8 @@ contact_added_cb (EBookClient *book_client, const GError *error, const gchar *id } static void -do_copy (gpointer data, gpointer user_data) +do_copy (gpointer data, + gpointer user_data) { EBookClient *book_client; EContact *contact; @@ -568,11 +587,12 @@ eab_transfer_contacts (EBookClient *source_client, } /* To parse something like... -=?UTF-8?Q?=E0=A4=95=E0=A4=95=E0=A4=AC=E0=A5=82=E0=A5=8B=E0=A5=87?=\t\n=?UTF-8?Q?=E0=A4=B0?=\t\n -and return the decoded representation of name & email parts. -*/ + * =?UTF-8?Q?=E0=A4=95=E0=A4=95=E0=A4=AC=E0=A5=82=E0=A5=8B=E0=A5=87?=\t\n=?UTF-8?Q?=E0=A4=B0?=\t\n + * and return the decoded representation of name & email parts. */ gboolean -eab_parse_qp_email (const gchar *string, gchar **name, gchar **email) +eab_parse_qp_email (const gchar *string, + gchar **name, + gchar **email) { struct _camel_header_address *address; gboolean res = FALSE; @@ -595,9 +615,9 @@ eab_parse_qp_email (const gchar *string, gchar **name, gchar **email) } /* This is only wrapper to parse_qp_mail, it decodes string and if returned TRUE, - then makes one string and returns it, otherwise returns NULL. - Returned string is usable to place directly into GtkHtml stream. - Returned value should be freed with g_free. */ + * then makes one string and returns it, otherwise returns NULL. + * Returned string is usable to place directly into GtkHtml stream. + * Returned value should be freed with g_free. */ gchar * eab_parse_qp_email_to_html (const gchar *string) { @@ -731,7 +751,7 @@ country_to_ISO (const gchar *country) } /* If we get here, then no match was found in the map file and we - fallback to local system locales */ + * fallback to local system locales */ fclose (file); pair = get_locales (); @@ -748,8 +768,8 @@ country_to_ISO (const gchar *country) */ static gchar * get_key_file_locale_string (GKeyFile *key_file, - const gchar *key, - const gchar *locale) + const gchar *key, + const gchar *locale) { gchar *result; gchar *group; @@ -773,9 +793,9 @@ get_key_file_locale_string (GKeyFile *key_file, static void get_address_format (AddressFormat address_format, - const gchar *locale, - gchar **format, - gchar **country_position) + const gchar *locale, + gchar **format, + gchar **country_position) { GKeyFile *key_file; GError *error; @@ -858,7 +878,8 @@ find_balanced_bracket (const gchar *str) } static GString * -string_append_upper (GString *str, const gchar *c) +string_append_upper (GString *str, + const gchar *c) { gchar *up_c; @@ -876,10 +897,10 @@ string_append_upper (GString *str, const gchar *c) static gboolean parse_address_template_section (const gchar *format, - const gchar *realname, - const gchar *org_name, - EContactAddress *address, - gchar **result) + const gchar *realname, + const gchar *org_name, + EContactAddress *address, + gchar **result) { const gchar *pos, *old_pos; @@ -1026,7 +1047,7 @@ parse_address_template_section (const gchar *format, gchar * eab_format_address (EContact *contact, - EContactField address_type) + EContactField address_type) { gchar *result; gchar *format = NULL; @@ -1063,7 +1084,7 @@ eab_format_address (EContact *contact, } /* Expand all the variables in format. - Don't display organization in home address */ + * Don't display organization in home address */ parse_address_template_section (format, e_contact_get_const (contact, E_CONTACT_FULL_NAME), (address_type == E_CONTACT_ADDRESS_WORK) ? e_contact_get_const (contact, E_CONTACT_ORG): NULL, @@ -1071,7 +1092,7 @@ eab_format_address (EContact *contact, &result); /* Add the country line. In some countries, the address can be located above the - rest of the address */ + * rest of the address */ if (addr->country && country_position) { gchar *country_upper = g_utf8_strup (addr->country, -1); gchar *p = result; diff --git a/addressbook/gui/widgets/gal-view-minicard.c b/addressbook/gui/widgets/gal-view-minicard.c index 6033b34758..280ae7583f 100644 --- a/addressbook/gui/widgets/gal-view-minicard.c +++ b/addressbook/gui/widgets/gal-view-minicard.c @@ -236,8 +236,8 @@ gal_view_minicard_new (const gchar *title) * Returns: The GalViewMinicard. */ GalView * -gal_view_minicard_construct (GalViewMinicard *view, - const gchar *title) +gal_view_minicard_construct (GalViewMinicard *view, + const gchar *title) { view->title = g_strdup (title); -- cgit v1.2.3 From 8530a18ce7c059543f611fcd404539ebc33925b8 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 26 Sep 2011 09:58:45 +0200 Subject: Invalid unref when merging contacts --- addressbook/gui/merging/eab-contact-merging.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index 70e43fa284..f791eab114 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -464,7 +464,8 @@ mergeit (EContactMergingLookup *lookup) switch (result) { case GTK_RESPONSE_OK: - lookup->contact = lookup->match; + g_object_unref (lookup->contact); + lookup->contact = g_object_ref (lookup->match); e_book_client_remove_contact (lookup->book_client, lookup->match, NULL, remove_contact_ready_cb, lookup); value = 1; break; -- cgit v1.2.3 From 02615053d97d72e70bb598621db2dafda0917da7 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 26 Sep 2011 11:25:02 +0200 Subject: Bug #637673 - Make phone fields one row and auto-expand when needed --- addressbook/gui/contact-editor/e-contact-editor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 6ce9524afc..ea696f88b8 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -1327,7 +1327,7 @@ expand_phone (EContactEditor *editor, gboolean expanded) { const gchar *names[] = { - "entry-phone-2", "combobox-phone-2", + "entry-phone-3", "combobox-phone-3", "entry-phone-4", "combobox-phone-4", "table-phone-extended", NULL }; @@ -1401,7 +1401,7 @@ fill_in_phone_record (EContactEditor *editor, phone_type >= 0 ? phone_type : phones_default[record - 1]); set_entry_text (editor, GTK_ENTRY (phone_entry), phone ? phone : ""); - if (phone && *phone && record >= 5) + if (phone && *phone && record >= 3) expand_phone (editor, TRUE); } -- cgit v1.2.3 From e2b6ff7a6c1e1580c26ee0719b349151e8dad6fd Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 27 Sep 2011 01:13:42 -0400 Subject: Miscellaneous cleanups from the account-mgmt branch. Reducing diff noise so I can see important changes easier when comparing branches. A few API changes, but nothing that affects functionality. --- .../gui/contact-editor/e-contact-quick-add.c | 2 + .../gui/contact-editor/e-contact-quick-add.h | 26 ++-- .../contact-list-editor/e-contact-list-editor.c | 138 ++++++++++++--------- addressbook/gui/merging/eab-contact-compare.c | 3 +- addressbook/gui/merging/eab-contact-compare.h | 62 ++++++--- addressbook/gui/merging/eab-contact-merging.c | 20 ++- addressbook/gui/merging/eab-contact-merging.h | 15 ++- addressbook/gui/widgets/e-addressbook-model.c | 9 +- addressbook/gui/widgets/e-addressbook-model.h | 6 +- addressbook/gui/widgets/e-addressbook-selector.c | 6 +- .../gui/widgets/e-addressbook-table-adapter.c | 7 +- addressbook/gui/widgets/e-addressbook-view.c | 9 +- addressbook/gui/widgets/ea-minicard-view.c | 19 +-- addressbook/gui/widgets/eab-gui-util.c | 24 ++-- 14 files changed, 220 insertions(+), 126 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c index 96af36fed2..3595437f28 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.c +++ b/addressbook/gui/contact-editor/e-contact-quick-add.c @@ -411,6 +411,7 @@ source_changed (ESourceComboBox *source_combo_box, ESource *source; source = e_source_combo_box_get_active (source_combo_box); + if (source != NULL) { if (qa->source != NULL) g_object_unref (qa->source); @@ -472,6 +473,7 @@ build_quick_add_dialog (QuickAdd *qa) gconf_client, "/apps/evolution/addressbook/sources"); source = e_source_list_peek_default_source (qa->source_list); g_object_unref (gconf_client); + qa->combo_box = e_source_combo_box_new (qa->source_list); e_source_combo_box_set_active ( E_SOURCE_COMBO_BOX (qa->combo_box), source); diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.h b/addressbook/gui/contact-editor/e-contact-quick-add.h index a4d06ef12a..861ddba24d 100644 --- a/addressbook/gui/contact-editor/e-contact-quick-add.h +++ b/addressbook/gui/contact-editor/e-contact-quick-add.h @@ -25,16 +25,22 @@ #include -typedef void (*EContactQuickAddCallback) (EContact *new_contact, gpointer closure); - -void e_contact_quick_add (const gchar *name, const gchar *email, - EContactQuickAddCallback cb, gpointer closure); - -void e_contact_quick_add_free_form (const gchar *text, EContactQuickAddCallback cb, gpointer closure); - -void e_contact_quick_add_email (const gchar *email, EContactQuickAddCallback cb, gpointer closure); - -void e_contact_quick_add_vcard (const gchar *vcard, EContactQuickAddCallback cb, gpointer closure); +typedef void (*EContactQuickAddCallback) (EContact *new_contact, + gpointer closure); + +void e_contact_quick_add (const gchar *name, + const gchar *email, + EContactQuickAddCallback cb, + gpointer closure); +void e_contact_quick_add_free_form (const gchar *text, + EContactQuickAddCallback cb, + gpointer closure); +void e_contact_quick_add_email (const gchar *email, + EContactQuickAddCallback cb, + gpointer closure); +void e_contact_quick_add_vcard (const gchar *vcard, + EContactQuickAddCallback cb, + gpointer closure); #endif /* __E_CONTACT_QUICK_ADD_H__ */ diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index 1750f5a686..d6a373ad38 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -49,6 +49,10 @@ #include "e-contact-list-model.h" #include "eab-contact-merging.h" +#define E_CONTACT_LIST_EDITOR_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE \ + ((obj), E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate)) + #define CONTACT_LIST_EDITOR_WIDGET(editor, name) \ (e_builder_get_widget \ (E_CONTACT_LIST_EDITOR (editor)->priv->builder, name)) @@ -1341,6 +1345,76 @@ contact_list_editor_dispose (GObject *object) G_OBJECT_CLASS (parent_class)->dispose (object); } +static void +contact_list_editor_constructed (GObject *object) +{ + EContactListEditor *editor; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + GtkTreeView *view; + GtkTreeSelection *selection; + + editor = E_CONTACT_LIST_EDITOR (object); + + /* Chain up to parent's constructed() method. */ + G_OBJECT_CLASS (parent_class)->constructed (object); + + editor->priv->editable = TRUE; + editor->priv->allows_contact_lists = TRUE; + + editor->priv->builder = gtk_builder_new (); + e_load_ui_builder_definition ( + editor->priv->builder, "contact-list-editor.ui"); + gtk_builder_connect_signals (editor->priv->builder, NULL); + + /* Embed a pointer to the EContactListEditor in the top-level + * widget. Signal handlers can then access the pointer from any + * child widget by calling contact_list_editor_extract(widget). */ + g_object_set_data (G_OBJECT (WIDGET (DIALOG)), TOPLEVEL_KEY, editor); + + view = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); + editor->priv->model = e_contact_list_model_new (); + gtk_tree_view_set_model (view, editor->priv->model); + + selection = gtk_tree_view_get_selection (view); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); + g_signal_connect (selection, "changed", + G_CALLBACK (contact_list_editor_selection_changed_cb), editor); + + gtk_tree_view_enable_model_drag_dest (view, NULL, 0, GDK_ACTION_LINK); + e_drag_dest_add_directory_targets (WIDGET (TREE_VIEW)); + gtk_drag_dest_add_text_targets (WIDGET (TREE_VIEW)); + + column = gtk_tree_view_column_new (); + renderer = gtk_cell_renderer_text_new (); + g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_append_column (view, column); + + gtk_tree_view_column_set_cell_data_func ( + column, renderer, (GtkTreeCellDataFunc) + contact_list_editor_render_destination, NULL, NULL); + + editor->priv->name_selector = e_name_selector_new (); + + e_name_selector_model_add_section ( + e_name_selector_peek_model (editor->priv->name_selector), + "Members", _("_Members"), NULL); + + g_signal_connect ( + editor, "notify::book", + G_CALLBACK (contact_list_editor_notify_cb), NULL); + g_signal_connect ( + editor, "notify::editable", + G_CALLBACK (contact_list_editor_notify_cb), NULL); + + gtk_widget_show_all (WIDGET (DIALOG)); + + setup_custom_widgets (editor); + + e_name_selector_load_books (editor->priv->name_selector); +} + /**************************** EABEditor Callbacks ****************************/ static void @@ -1492,6 +1566,7 @@ contact_list_editor_class_init (EContactListEditorClass *class) object_class->set_property = contact_list_editor_set_property; object_class->get_property = contact_list_editor_get_property; object_class->dispose = contact_list_editor_dispose; + object_class->constructed = contact_list_editor_constructed; editor_class = EAB_EDITOR_CLASS (class); editor_class->show = contact_list_editor_show; @@ -1550,68 +1625,7 @@ contact_list_editor_class_init (EContactListEditorClass *class) static void contact_list_editor_init (EContactListEditor *editor) { - EContactListEditorPrivate *priv; - GtkTreeViewColumn *column; - GtkCellRenderer *renderer; - GtkTreeView *view; - GtkTreeSelection *selection; - - editor->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE ( - editor, E_TYPE_CONTACT_LIST_EDITOR, EContactListEditorPrivate); - - priv->editable = TRUE; - priv->allows_contact_lists = TRUE; - - priv->builder = gtk_builder_new (); - e_load_ui_builder_definition (priv->builder, "contact-list-editor.ui"); - gtk_builder_connect_signals (priv->builder, NULL); - - /* Embed a pointer to the EContactListEditor in the top-level - * widget. Signal handlers can then access the pointer from any - * child widget by calling contact_list_editor_extract(widget). */ - g_object_set_data (G_OBJECT (WIDGET (DIALOG)), TOPLEVEL_KEY, editor); - - view = GTK_TREE_VIEW (WIDGET (TREE_VIEW)); - priv->model = e_contact_list_model_new (); - gtk_tree_view_set_model (view, priv->model); - - selection = gtk_tree_view_get_selection (view); - gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE); - g_signal_connect (selection, "changed", - G_CALLBACK (contact_list_editor_selection_changed_cb), editor); - - gtk_tree_view_enable_model_drag_dest (view, NULL, 0, GDK_ACTION_LINK); - e_drag_dest_add_directory_targets (WIDGET (TREE_VIEW)); - gtk_drag_dest_add_text_targets (WIDGET (TREE_VIEW)); - - column = gtk_tree_view_column_new (); - renderer = gtk_cell_renderer_text_new (); - g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); - gtk_tree_view_column_pack_start (column, renderer, TRUE); - gtk_tree_view_append_column (view, column); - - gtk_tree_view_column_set_cell_data_func ( - column, renderer, (GtkTreeCellDataFunc) - contact_list_editor_render_destination, NULL, NULL); - - priv->name_selector = e_name_selector_new (); - - e_name_selector_model_add_section ( - e_name_selector_peek_model (priv->name_selector), - "Members", _("_Members"), NULL); - - g_signal_connect ( - editor, "notify::book", - G_CALLBACK (contact_list_editor_notify_cb), NULL); - g_signal_connect ( - editor, "notify::editable", - G_CALLBACK (contact_list_editor_notify_cb), NULL); - - gtk_widget_show_all (WIDGET (DIALOG)); - - setup_custom_widgets (editor); - - e_name_selector_load_books (priv->name_selector); + editor->priv = E_CONTACT_LIST_EDITOR_GET_PRIVATE (editor); } /***************************** Public Interface ******************************/ diff --git a/addressbook/gui/merging/eab-contact-compare.c b/addressbook/gui/merging/eab-contact-compare.c index a25ad4e403..231a14281c 100644 --- a/addressbook/gui/merging/eab-contact-compare.c +++ b/addressbook/gui/merging/eab-contact-compare.c @@ -834,7 +834,8 @@ eab_contact_locate_match_full (EBookClient *book_client, source = e_source_list_peek_default_source (info->source_list); - e_client_utils_open_new (source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, + e_client_utils_open_new ( + source, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, e_client_utils_authenticate_handler, NULL, book_loaded_cb, info); } diff --git a/addressbook/gui/merging/eab-contact-compare.h b/addressbook/gui/merging/eab-contact-compare.h index 7ce31eddb9..8c07a56f08 100644 --- a/addressbook/gui/merging/eab-contact-compare.h +++ b/addressbook/gui/merging/eab-contact-compare.h @@ -26,8 +26,8 @@ #ifndef __EAB_CONTACT_COMPARE_H__ #define __EAB_CONTACT_COMPARE_H__ -#include #include +#include typedef enum { EAB_CONTACT_MATCH_NOT_APPLICABLE = 0, @@ -45,26 +45,56 @@ typedef enum { EAB_CONTACT_MATCH_PART_FAMILY_NAME = 1 << 3 } EABContactMatchPart; -typedef void (*EABContactMatchQueryCallback) (EContact *contact, EContact *match, EABContactMatchType type, gpointer closure); +typedef void (*EABContactMatchQueryCallback) (EContact *contact, + EContact *match, + EABContactMatchType type, + gpointer closure); -EABContactMatchType eab_contact_compare_name_to_string (EContact *contact, const gchar *str); +EABContactMatchType + eab_contact_compare_name_to_string + (EContact *contact, + const gchar *str); -EABContactMatchType eab_contact_compare_name_to_string_full (EContact *contact, const gchar *str, - gboolean allow_partial_matches, - gint *matched_parts, EABContactMatchPart *first_matched_part, - gint *matched_character_count); +EABContactMatchType + eab_contact_compare_name_to_string_full + (EContact *contact, + const gchar *str, + gboolean allow_partial_matches, + gint *matched_parts, + EABContactMatchPart *first_matched_part, + gint *matched_character_count); -EABContactMatchType eab_contact_compare_file_as (EContact *contact1, EContact *contact2); -EABContactMatchType eab_contact_compare_name (EContact *contact1, EContact *contact2); -EABContactMatchType eab_contact_compare_nickname (EContact *contact1, EContact *contact2); -EABContactMatchType eab_contact_compare_email (EContact *contact1, EContact *contact2); -EABContactMatchType eab_contact_compare_address (EContact *contact1, EContact *contact2); -EABContactMatchType eab_contact_compare_telephone (EContact *contact1, EContact *contact2); +EABContactMatchType + eab_contact_compare_file_as (EContact *contact1, + EContact *contact2); +EABContactMatchType + eab_contact_compare_name (EContact *contact1, + EContact *contact2); +EABContactMatchType + eab_contact_compare_nickname (EContact *contact1, + EContact *contact2); +EABContactMatchType + eab_contact_compare_email (EContact *contact1, + EContact *contact2); +EABContactMatchType + eab_contact_compare_address (EContact *contact1, + EContact *contact2); +EABContactMatchType + eab_contact_compare_telephone (EContact *contact1, + EContact *contact2); -EABContactMatchType eab_contact_compare (EContact *contact1, EContact *contact2); +EABContactMatchType + eab_contact_compare (EContact *contact1, + EContact *contact2); -void eab_contact_locate_match (EContact *contact, EABContactMatchQueryCallback cb, gpointer closure); -void eab_contact_locate_match_full (EBookClient *book_client, EContact *contact, GList *avoid, EABContactMatchQueryCallback cb, gpointer closure); +void eab_contact_locate_match (EContact *contact, + EABContactMatchQueryCallback cb, + gpointer closure); +void eab_contact_locate_match_full (EBookClient *book_client, + EContact *contact, + GList *avoid, + EABContactMatchQueryCallback cb, + gpointer closure); #endif /* __E_CONTACT_COMPARE_H__ */ diff --git a/addressbook/gui/merging/eab-contact-merging.c b/addressbook/gui/merging/eab-contact-merging.c index f791eab114..1e70b97d77 100644 --- a/addressbook/gui/merging/eab-contact-merging.c +++ b/addressbook/gui/merging/eab-contact-merging.c @@ -73,7 +73,10 @@ add_lookup (EContactMergingLookup *lookup) { if (running_merge_requests < SIMULTANEOUS_MERGING_REQUESTS) { running_merge_requests++; - eab_contact_locate_match_full (lookup->book_client, lookup->contact, lookup->avoid, match_query_callback, lookup); + eab_contact_locate_match_full ( + lookup->book_client, + lookup->contact, lookup->avoid, + match_query_callback, lookup); } else { merging_queue = g_list_append (merging_queue, lookup); @@ -97,8 +100,9 @@ finished_lookup (void) running_merge_requests++; eab_contact_locate_match_full ( - lookup->book_client, lookup->contact, - lookup->avoid, match_query_callback, lookup); + lookup->book_client, + lookup->contact, lookup->avoid, + match_query_callback, lookup); } } @@ -138,8 +142,8 @@ final_cb_as_id (EBookClient *book_client, if (lookup->id_cb) lookup->id_cb ( - lookup->book_client, error, - lookup->contact ? + lookup->book_client, + error, lookup->contact ? e_contact_get_const ( lookup->contact, E_CONTACT_UID) : NULL, lookup->closure); @@ -566,7 +570,11 @@ match_query_callback (EContact *contact, if (lookup->op == E_CONTACT_MERGING_FIND) { if (lookup->c_cb) - lookup->c_cb (lookup->book_client, NULL, (gint) type <= (gint) EAB_CONTACT_MATCH_VAGUE ? NULL : match, lookup->closure); + lookup->c_cb ( + lookup->book_client, NULL, + (gint) type <= (gint) + EAB_CONTACT_MATCH_VAGUE ? NULL : match, + lookup->closure); free_lookup (lookup); finished_lookup (); diff --git a/addressbook/gui/merging/eab-contact-merging.h b/addressbook/gui/merging/eab-contact-merging.h index c8e2ddb3ef..a922d6b9fb 100644 --- a/addressbook/gui/merging/eab-contact-merging.h +++ b/addressbook/gui/merging/eab-contact-merging.h @@ -30,9 +30,18 @@ G_BEGIN_DECLS -typedef void (*EABMergingAsyncCallback) (EBookClient *book_client, const GError *error, gpointer closure); -typedef void (*EABMergingIdAsyncCallback) (EBookClient *book_client, const GError *error, const gchar *id, gpointer closure); -typedef void (*EABMergingContactAsyncCallback) (EBookClient *book_client, const GError *error, EContact *contact, gpointer closure); +typedef void (*EABMergingAsyncCallback) (EBookClient *book_client, + const GError *error, + gpointer closure); +typedef void (*EABMergingIdAsyncCallback) (EBookClient *book_client, + const GError *error, + const gchar *id, + gpointer closure); +typedef void (*EABMergingContactAsyncCallback) + (EBookClient *book_client, + const GError *error, + EContact *contact, + gpointer closure); gboolean eab_merging_book_add_contact (EBookClient *book_client, EContact *contact, diff --git a/addressbook/gui/widgets/e-addressbook-model.c b/addressbook/gui/widgets/e-addressbook-model.c index 74e794bd6e..fa61c4e5e2 100644 --- a/addressbook/gui/widgets/e-addressbook-model.c +++ b/addressbook/gui/widgets/e-addressbook-model.c @@ -576,7 +576,8 @@ addressbook_model_class_init (EAddressbookModelClass *class) "EBookClient", NULL, E_TYPE_BOOK_CLIENT, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property ( object_class, @@ -586,7 +587,8 @@ addressbook_model_class_init (EAddressbookModelClass *class) "Editable", NULL, FALSE, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property ( object_class, @@ -597,7 +599,8 @@ addressbook_model_class_init (EAddressbookModelClass *class) NULL, NULL, G_PARAM_READWRITE | - G_PARAM_CONSTRUCT)); + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); signals[WRITABLE_STATUS] = g_signal_new ("writable_status", diff --git a/addressbook/gui/widgets/e-addressbook-model.h b/addressbook/gui/widgets/e-addressbook-model.h index 13d23e92b0..680352c717 100644 --- a/addressbook/gui/widgets/e-addressbook-model.h +++ b/addressbook/gui/widgets/e-addressbook-model.h @@ -104,8 +104,10 @@ gint e_addressbook_model_find (EAddressbookModel *model, EBookClient * e_addressbook_model_get_client (EAddressbookModel *model); void e_addressbook_model_set_client (EAddressbookModel *model, EBookClient *book_client); -gboolean e_addressbook_model_get_editable (EAddressbookModel *model); -void e_addressbook_model_set_editable (EAddressbookModel *model, +gboolean e_addressbook_model_get_editable + (EAddressbookModel *model); +void e_addressbook_model_set_editable + (EAddressbookModel *model, gboolean editable); gchar * e_addressbook_model_get_query (EAddressbookModel *model); void e_addressbook_model_set_query (EAddressbookModel *model, diff --git a/addressbook/gui/widgets/e-addressbook-selector.c b/addressbook/gui/widgets/e-addressbook-selector.c index b6bfa01537..30bb8899f5 100644 --- a/addressbook/gui/widgets/e-addressbook-selector.c +++ b/addressbook/gui/widgets/e-addressbook-selector.c @@ -293,7 +293,8 @@ target_client_open_ready_cb (GObject *source_object, } eab_merging_book_add_contact ( - merge_context->target_client, merge_context->current_contact, + merge_context->target_client, + merge_context->current_contact, addressbook_selector_merge_next_cb, merge_context); } @@ -335,7 +336,8 @@ addressbook_selector_data_dropped (ESourceSelector *selector, merge_context->remove_from_source = remove_from_source; merge_context->pending_adds = TRUE; - e_client_utils_open_new (destination, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, + e_client_utils_open_new ( + destination, E_CLIENT_SOURCE_TYPE_CONTACTS, FALSE, NULL, e_client_utils_authenticate_handler, NULL, target_client_open_ready_cb, merge_context); diff --git a/addressbook/gui/widgets/e-addressbook-table-adapter.c b/addressbook/gui/widgets/e-addressbook-table-adapter.c index f102b684d7..463bdc7a3d 100644 --- a/addressbook/gui/widgets/e-addressbook-table-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-table-adapter.c @@ -168,8 +168,11 @@ addressbook_set_value_at (ETableModel *etc, EAddressbookTableAdapterPrivate *priv = adapter->priv; if (e_addressbook_model_get_editable (priv->model)) { + EBookClient *book_client; EContact *contact; + book_client = e_addressbook_model_get_client (priv->model); + if (col >= COLS || row >= e_addressbook_model_contact_count (priv->model)) return; @@ -191,7 +194,7 @@ addressbook_set_value_at (ETableModel *etc, e_contact_set (contact, col, (gpointer) val); eab_merging_book_modify_contact ( - e_addressbook_model_get_client (priv->model), + book_client, contact, contact_modified_cb, etc); g_object_unref (contact); @@ -218,8 +221,8 @@ addressbook_append_row (ETableModel *etm, { EAddressbookTableAdapter *adapter = EAB_TABLE_ADAPTER (etm); EAddressbookTableAdapterPrivate *priv = adapter->priv; - EContact *contact; EBookClient *book_client; + EContact *contact; gint col; contact = e_contact_new (); diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 7f3a7a85b8..9bda90a280 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1111,7 +1111,7 @@ folder_bar_message (EAddressbookView *view, { EShellView *shell_view; EShellSidebar *shell_sidebar; - const gchar *name; + const gchar *display_name; shell_view = e_addressbook_view_get_shell_view (view); shell_sidebar = e_shell_view_get_shell_sidebar (shell_view); @@ -1119,8 +1119,8 @@ folder_bar_message (EAddressbookView *view, if (view->priv->source == NULL) return; - name = e_source_peek_name (view->priv->source); - e_shell_sidebar_set_primary_text (shell_sidebar, name); + display_name = e_source_peek_name (view->priv->source); + e_shell_sidebar_set_primary_text (shell_sidebar, display_name); e_shell_sidebar_set_secondary_text (shell_sidebar, message); } @@ -1622,7 +1622,8 @@ view_transfer_contacts (EAddressbookView *view, contacts = e_addressbook_view_get_selected (view); eab_transfer_contacts ( - book_client, contacts, delete_from_source, alert_sink); + book_client, contacts, + delete_from_source, alert_sink); } } diff --git a/addressbook/gui/widgets/ea-minicard-view.c b/addressbook/gui/widgets/ea-minicard-view.c index 58d3a5fd2b..6772a0bf80 100644 --- a/addressbook/gui/widgets/ea-minicard-view.c +++ b/addressbook/gui/widgets/ea-minicard-view.c @@ -149,7 +149,8 @@ ea_minicard_view_get_name (AtkObject *accessible) gchar *string; EMinicardView *card_view; EBookClient *book_client = NULL; - const gchar *source_name; + ESource *source; + const gchar *display_name; g_return_val_if_fail (EA_IS_MINICARD_VIEW (accessible), NULL); @@ -163,13 +164,14 @@ ea_minicard_view_get_name (AtkObject *accessible) card_view = E_MINICARD_VIEW (reflow); g_object_get (card_view->adapter, "client", &book_client, NULL); g_return_val_if_fail (E_IS_BOOK_CLIENT (book_client), NULL); - source_name = e_source_peek_name (e_client_get_source (E_CLIENT (book_client))); - if (!source_name) - source_name=""; + source = e_client_get_source (E_CLIENT (book_client)); + display_name = e_source_peek_name (source); + if (display_name == NULL) + display_name = ""; string = g_strdup_printf (ngettext ("current address book folder %s has %d card", "current address book folder %s has %d cards", - reflow->count), source_name, reflow->count); + reflow->count), display_name, reflow->count); ATK_OBJECT_CLASS (parent_class)->set_name (accessible, string); g_free (string); @@ -372,7 +374,9 @@ static void atk_action_interface_init (AtkActionIface *iface) iface->get_name = atk_action_interface_get_name; } -static gboolean atk_action_interface_do_action (AtkAction *action, gint i) +static gboolean +atk_action_interface_do_action (AtkAction *action, + gint i) { gboolean return_value = TRUE; EMinicardView *card_view; @@ -405,7 +409,8 @@ static gboolean atk_action_interface_do_action (AtkAction *action, gint i) return return_value; } -static gint atk_action_interface_get_n_action (AtkAction *iface) +static gint +atk_action_interface_get_n_action (AtkAction *iface) { return G_N_ELEMENTS (action_name); } diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index c951b290c7..00f4e884c7 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -34,13 +34,13 @@ #include #include +#include #include #include #include #include #include "eab-gui-util.h" #include "util/eab-book-util.h" -#include #include "e-util/e-alert-dialog.h" #include "e-util/e-html-utils.h" #include "shell/e-shell.h" @@ -319,14 +319,18 @@ eab_select_source (ESource *except_source, selector = e_source_selector_new (source_list); e_source_selector_show_selection (E_SOURCE_SELECTOR (selector), FALSE); if (except_source) - g_object_set_data (G_OBJECT (ok_button), "except-source", e_source_list_peek_source_by_uid (source_list, e_source_peek_uid (except_source))); - g_signal_connect (selector, "primary_selection_changed", - G_CALLBACK (source_selection_changed_cb), ok_button); + g_object_set_data ( + G_OBJECT (ok_button), "except-source", + e_source_list_peek_source_by_uid (source_list, e_source_peek_uid (except_source))); + g_signal_connect ( + selector, "primary_selection_changed", + G_CALLBACK (source_selection_changed_cb), ok_button); if (select_uid) { source = e_source_list_peek_source_by_uid (source_list, select_uid); if (source) - e_source_selector_set_primary_selection (E_SOURCE_SELECTOR (selector), source); + e_source_selector_set_primary_selection ( + E_SOURCE_SELECTOR (selector), source); } scrolled_window = gtk_scrolled_window_new (NULL, NULL); @@ -493,7 +497,9 @@ do_copy (gpointer data, book_client = process->destination; process->count++; - eab_merging_book_add_contact (book_client, contact, contact_added_cb, process); + eab_merging_book_add_contact ( + book_client, + contact, contact_added_cb, process); } static void @@ -533,6 +539,7 @@ eab_transfer_contacts (EBookClient *source_client, gboolean delete_from_source, EAlertSink *alert_sink) { + ESource *source; ESource *destination; static gchar *last_uid = NULL; ContactCopyProcess *process; @@ -559,9 +566,10 @@ eab_transfer_contacts (EBookClient *source_client, desc = _("Copy contacts to"); } + source = e_client_get_source (E_CLIENT (source_client)); + destination = eab_select_source ( - e_client_get_source (E_CLIENT (source_client)), - desc, NULL, last_uid, window); + source, desc, NULL, last_uid, window); if (!destination) return; -- cgit v1.2.3 From f80a74004ed303b66f4b279e3f772493b4e80ced Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 27 Sep 2011 19:28:18 +0200 Subject: Bug #659874 - Address Cards Render extra Phone Number --- addressbook/gui/widgets/e-minicard.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 78d98e2cb2..ddfcc1a9f9 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -942,6 +942,7 @@ remodel (EMinicard *e_minicard) gint left_width = -1; gboolean is_list = FALSE; gboolean email_rendered = FALSE; + gboolean has_voice = FALSE, has_fax = FALSE; if (e_minicard->header_text) { file_as = e_contact_get (e_minicard->contact, E_CONTACT_FILE_AS); @@ -966,11 +967,14 @@ remodel (EMinicard *e_minicard) EMinicardField *minicard_field = NULL; gboolean is_email = FALSE; - if (field == E_CONTACT_FAMILY_NAME || field == E_CONTACT_GIVEN_NAME) + if (field == E_CONTACT_FAMILY_NAME || field == E_CONTACT_GIVEN_NAME || + (has_voice && field == E_CONTACT_PHONE_OTHER) || + (has_fax && field == E_CONTACT_PHONE_OTHER_FAX)) continue; if (field == E_CONTACT_FULL_NAME && is_list) continue; + if (field == E_CONTACT_EMAIL_1 || field == E_CONTACT_EMAIL_2 || field == E_CONTACT_EMAIL_3 || field == E_CONTACT_EMAIL_4) { if (email_rendered) continue; @@ -1019,6 +1023,15 @@ remodel (EMinicard *e_minicard) if (string && *string) { add_field (e_minicard, field, left_width); count++; + + has_voice = has_voice || + field == E_CONTACT_PHONE_BUSINESS || + field == E_CONTACT_PHONE_BUSINESS_2 || + field == E_CONTACT_PHONE_HOME || + field == E_CONTACT_PHONE_HOME_2; + has_fax = has_fax || + field == E_CONTACT_PHONE_BUSINESS_FAX || + field == E_CONTACT_PHONE_HOME_FAX; } g_free (string); } -- cgit v1.2.3 From 5ddad039926944120fa8f138f3a0039292d736de Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Thu, 29 Sep 2011 11:59:34 +0200 Subject: Remove Ctrl + l ( ) character from source files From ccc980da1fd84ebfca25cf8caf9a5d62333099fc Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Wed, 28 Sep 2011 10:18:18 +0200 Subject: [PATCH] Remove Ctrl + l ( ) character from source files The following commits git show aac3f2c8 git show 1510304c git show 13cabd9e git show 350a7a33 git show 9b7cc54d git show e6972011 git show 1d3a7938 git show 934524b9 git show b2954936 git show a7f677b5 git show 4369c400 git show d509f47a git show a6d5818f git show c3876df7 git show 4583098b git show 2831ada5 git show 4e1bce59 git show 1609f699 git show 4e4c1676 git show d6fade43 among others(?) introduced several occurrences of Ctrl + l ( ). Probably this was caused by the used editor. These control characters can be searched for using the following command [1]. $ git grep ^L [1] http://unstableme.blogspot.com/2009/10/grep-and-print-control-characters-in.html --- addressbook/gui/widgets/e-addressbook-reflow-adapter.c | 1 - 1 file changed, 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index 0d2fc85478..71e63867d6 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -625,7 +625,6 @@ e_addressbook_reflow_adapter_new (EAddressbookModel *model) return E_REFLOW_MODEL (et); } - EContact * e_addressbook_reflow_adapter_get_contact (EAddressbookReflowAdapter *adapter, gint index) -- cgit v1.2.3 From 4c56856e05c6ab1468fe8ace4b73ac31b333990b Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 30 Sep 2011 15:39:57 +0200 Subject: Fix few 'may be used uninitialized' compiler warnings --- addressbook/gui/contact-list-editor/e-contact-list-editor.c | 2 +- addressbook/gui/contact-list-editor/e-contact-list-model.c | 6 ++++-- addressbook/gui/widgets/eab-gui-util.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c index d6a373ad38..57d2acde99 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c @@ -780,7 +780,7 @@ contact_list_editor_remove_button_clicked_cb (GtkWidget *widget) { EContactListEditor *editor; GtkTreeSelection *selection; - GtkTreeRowReference *new_selection; + GtkTreeRowReference *new_selection = NULL; GtkTreeModel *model; GtkTreeView *view; GtkTreePath *path; diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c index 6774eee3b7..8236bafea4 100644 --- a/addressbook/gui/contact-list-editor/e-contact-list-model.c +++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c @@ -144,7 +144,7 @@ e_contact_list_model_add_destination (EContactListModel *model, gboolean ignore_conflicts) { GtkTreeIter iter; - GtkTreePath *path; + GtkTreePath *path = NULL; g_return_val_if_fail (E_IS_CONTACT_LIST_MODEL (model), NULL); g_return_val_if_fail (E_IS_DESTINATION (destination), NULL); @@ -160,8 +160,10 @@ e_contact_list_model_add_destination (EContactListModel *model, for (dest = dests; dest; dest = dest->next) { path = e_contact_list_model_add_destination (model, dest->data, &iter, ignore_conflicts); - if (dest->next && path) + if (dest->next && path) { gtk_tree_path_free (path); + path = NULL; + } } /* When the list has no children the remove it. We don't want empty sublists displayed. */ diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 00f4e884c7..6994af2b88 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -735,7 +735,7 @@ country_to_ISO (const gchar *country) } while (fgets (buffer, length, file) != NULL) { - gchar *low; + gchar *low = NULL; pair = g_strsplit (buffer, "\t", 2); if (pair[0]) { -- cgit v1.2.3 From 328334d9c9eb4c0c9ed249eb33461a0071df9635 Mon Sep 17 00:00:00 2001 From: Antoine Jacoutot Date: Sat, 1 Oct 2011 13:50:24 +0200 Subject: LC_ADDRESS is no posix and may not be defined. Only setlocale(2) LC_ADDRESS is this macro actually exist. https://bugzilla.gnome.org/show_bug.cgi?id=660624 --- addressbook/gui/widgets/eab-gui-util.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'addressbook/gui') diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index 6994af2b88..09830a94ae 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -663,7 +663,11 @@ get_locales (void) gchar *dot; gchar **split; +#ifdef LC_ADDRESS locale = g_strdup (setlocale (LC_ADDRESS, NULL)); +#else + locale = NULL; +#endif if (!locale) return NULL; -- cgit v1.2.3 From 1f38f4d92ca8eb97381b2c9a7022830a6d4bcaba Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 4 Oct 2011 21:32:41 -0400 Subject: Simplify library dependency flags. We have a confusing array of nearly-identical CFLAGS/LIBS definitions in configure.ac. Time to simplify. Instead let's just have one definition that includes all the libraries provided by Evolution-Data-Server (incl. Camel). That, in combination with GNOME_PLATFORM, gives us most of what we need for compliation and linking, and we can sprinkle definitions for additional library dependencies in Makefile.am's as needed. --- addressbook/gui/contact-editor/Makefile.am | 6 +++--- addressbook/gui/contact-list-editor/Makefile.am | 10 ++++------ addressbook/gui/merging/Makefile.am | 5 +++-- addressbook/gui/widgets/Makefile.am | 9 ++++++--- 4 files changed, 16 insertions(+), 14 deletions(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/contact-editor/Makefile.am b/addressbook/gui/contact-editor/Makefile.am index eb457da7fa..254af85207 100644 --- a/addressbook/gui/contact-editor/Makefile.am +++ b/addressbook/gui/contact-editor/Makefile.am @@ -11,8 +11,8 @@ libecontacteditor_la_CPPFLAGS = \ -DEVOLUTION_UIDIR=\""$(uidir)"\" \ -DEVOLUTION_IMAGESDIR=\""$(imagesdir)"\" \ -DG_LOG_DOMAIN=\"contact-editor\" \ - $(GNOME_PLATFORM_CFLAGS) \ - $(EVOLUTION_ADDRESSBOOK_CFLAGS) + $(EVOLUTION_DATA_SERVER_CFLAGS) \ + $(GNOME_PLATFORM_CFLAGS) libecontacteditor_la_SOURCES = \ eab-editor.c \ @@ -34,7 +34,7 @@ libecontacteditor_la_LIBADD = \ $(top_builddir)/addressbook/gui/merging/libeabbookmerging.la \ $(top_builddir)/addressbook/printing/libecontactprint.la \ $(top_builddir)/widgets/menus/libmenus.la \ - $(EVOLUTION_ADDRESSBOOK_LIBS) \ + $(EVOLUTION_DATA_SERVER_LIBS) \ $(GNOME_PLATFORM_LIBS) ui_DATA = \ diff --git a/addressbook/gui/contact-list-editor/Makefile.am b/addressbook/gui/contact-list-editor/Makefile.am index 657bbf1da9..bcd398955d 100644 --- a/addressbook/gui/contact-list-editor/Makefile.am +++ b/addressbook/gui/contact-list-editor/Makefile.am @@ -10,9 +10,8 @@ libecontactlisteditor_la_CPPFLAGS = \ -I$(top_builddir)/shell \ -DEVOLUTION_UIDIR=\""$(uidir)"\" \ -DG_LOG_DOMAIN=\"contact-list-editor\" \ - $(GNOME_PLATFORM_CFLAGS) \ - $(EVOLUTION_ADDRESSBOOK_CFLAGS) \ - $(CAMEL_CFLAGS) + $(EVOLUTION_DATA_SERVER_CFLAGS) \ + $(GNOME_PLATFORM_CFLAGS) libecontactlisteditor_la_SOURCES = \ e-contact-list-editor.c \ @@ -29,9 +28,8 @@ libecontactlisteditor_la_LIBADD = \ $(top_builddir)/widgets/misc/libemiscwidgets.la \ $(top_builddir)/e-util/libeutil.la \ $(top_builddir)/shell/libeshell.la \ - $(EVOLUTION_ADDRESSBOOK_LIBS) \ - $(GNOME_PLATFORM_LIBS) \ - $(CAMEL_LIBS) + $(EVOLUTION_DATA_SERVER_LIBS) \ + $(GNOME_PLATFORM_LIBS) ui_DATA = contact-list-editor.ui diff --git a/addressbook/gui/merging/Makefile.am b/addressbook/gui/merging/Makefile.am index 01af6b2534..b1c2b45cf4 100644 --- a/addressbook/gui/merging/Makefile.am +++ b/addressbook/gui/merging/Makefile.am @@ -7,8 +7,9 @@ libeabbookmerging_la_CPPFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/widgets \ -I$(top_srcdir)/addressbook \ - $(EVOLUTION_ADDRESSBOOK_CFLAGS) \ - $(GNOME_PLATFORM_CFLAGS) + $(EVOLUTION_DATA_SERVER_CFLAGS) \ + $(GNOME_PLATFORM_CFLAGS) \ + $(GTKHTML_CFLAGS) libeabbookmerging_la_SOURCES = \ eab-contact-compare.c \ diff --git a/addressbook/gui/widgets/Makefile.am b/addressbook/gui/widgets/Makefile.am index 40c57650bb..546a218ff2 100644 --- a/addressbook/gui/widgets/Makefile.am +++ b/addressbook/gui/widgets/Makefile.am @@ -18,9 +18,10 @@ libeabwidgets_la_CPPFLAGS = \ -I$(top_srcdir)/addressbook/util \ -I$(top_srcdir)/widgets/misc \ -I$(top_builddir)/shell \ + $(EVOLUTION_DATA_SERVER_CFLAGS) \ $(GNOME_PLATFORM_CFLAGS) \ - $(EVOLUTION_ADDRESSBOOK_CFLAGS) \ - $(CHAMPLAIN_CFLAGS) + $(CHAMPLAIN_CFLAGS) \ + $(GTKHTML_CFLAGS) eabincludedir = $(privincludedir)/addressbook/gui/widgets @@ -71,8 +72,10 @@ libeabwidgets_la_LIBADD = \ $(top_builddir)/widgets/menus/libmenus.la \ $(top_builddir)/a11y/libevolution-a11y.la \ $(top_builddir)/e-util/libeutil.la \ + $(EVOLUTION_DATA_SERVER_LIBS) \ $(GNOME_PLATFORM_LIBS) \ - $(CHAMPLAIN_LIBS) + $(CHAMPLAIN_LIBS) \ + $(GTKHTML_LIBS) dist-hook: cd $(distdir); rm -f $(BUILT_SOURCES) -- cgit v1.2.3