static void language_response (GtkDialog *dialog, gint response_id, UmUserPanelPrivate *d) { GtkWidget *combo; UmUser *user; gchar *lang; GtkTreeModel *model; GtkTreeIter iter; user = get_selected_user (d); combo = get_widget (d, "account-language-combo"); model = um_editable_combo_get_model (UM_EDITABLE_COMBO (combo)); if (response_id == GTK_RESPONSE_OK) { lang = cc_language_chooser_get_language (GTK_WIDGET (dialog)); um_user_set_language (user, lang); } else { lang = g_strdup (um_user_get_language (user)); if (!lang) lang = cc_common_language_get_current_language (); } cc_common_language_get_iter_for_language (model, lang, &iter); um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (combo), &iter); g_free (lang); gtk_widget_hide (GTK_WIDGET (dialog)); gtk_widget_set_sensitive (combo, TRUE); g_object_unref (user); }
static void accept_language_dialog (GtkButton *button, UmLanguageDialog *um) { um_user_set_language (um->user, um->language); gtk_widget_hide (um->dialog); um_language_dialog_set_user (um, NULL); }
static void cancel_language_dialog (GtkButton *button, UmLanguageDialog *um) { if (um->force_setting != FALSE) um_user_set_language (um->user, um->language); gtk_widget_hide (um->dialog); um_language_dialog_set_user (um, NULL); }
static void language_changed (UmEditableCombo *combo, UmUserPanelPrivate *d) { GtkTreeModel *model; GtkTreeIter iter; gchar *lang; UmUser *user; if (!um_editable_combo_get_active_iter (combo, &iter)) return; user = get_selected_user (d); model = um_editable_combo_get_model (combo); gtk_tree_model_get (model, &iter, 0, &lang, -1); if (lang) { if (g_strcmp0 (lang, um_user_get_language (user)) != 0) { um_user_set_language (user, lang); } g_free (lang); goto out; } if (d->language_chooser) { cc_language_chooser_clear_filter (d->language_chooser); gtk_window_present (GTK_WINDOW (d->language_chooser)); gtk_widget_set_sensitive (GTK_WIDGET (combo), FALSE); goto out; } d->language_chooser = cc_language_chooser_new (gtk_widget_get_toplevel (d->main_box), FALSE); g_signal_connect (d->language_chooser, "response", G_CALLBACK (language_response), d); g_signal_connect (d->language_chooser, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); gdk_window_set_cursor (gtk_widget_get_window (gtk_widget_get_toplevel (d->main_box)), NULL); gtk_window_present (GTK_WINDOW (d->language_chooser)); gtk_widget_set_sensitive (GTK_WIDGET (combo), FALSE); out: g_object_unref (user); }