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 language_response (GtkDialog *dialog, gint response_id, GtkWidget *treeview) { gchar *lang; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; gtk_widget_hide (GTK_WIDGET (dialog)); if (response_id != GTK_RESPONSE_OK) { return; } lang = cc_language_chooser_get_language (GTK_WIDGET (dialog)); if (lang == NULL) { return; } model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); if (cc_common_language_get_iter_for_language (model, lang, &iter)) { gtk_tree_selection_select_iter (selection, &iter); } gtk_widget_grab_focus (treeview); g_free (lang); }
static void language_changed (CcLanguageChooser *chooser, GParamSpec *pspec, GisLanguagePage *page) { GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page); ActUser *user; GisDriver *driver; if (priv->selection_done_source > 0) { g_source_remove (priv->selection_done_source); priv->selection_done_source = 0; } priv->new_locale_id = cc_language_chooser_get_language (chooser); driver = GIS_PAGE (page)->driver; setlocale (LC_MESSAGES, priv->new_locale_id); gis_driver_locale_changed (driver); if (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER) { if (g_permission_get_allowed (priv->permission)) { set_localed_locale (page); } else if (g_permission_get_can_acquire (priv->permission)) { g_permission_acquire_async (priv->permission, NULL, change_locale_permission_acquired, page); } } user = act_user_manager_get_user (act_user_manager_get_default (), g_get_user_name ()); if (act_user_is_loaded (user)) act_user_set_language (user, priv->new_locale_id); else g_signal_connect (user, "notify::is-loaded", G_CALLBACK (user_loaded), g_strdup (priv->new_locale_id)); gis_driver_set_user_language (driver, priv->new_locale_id); priv->selection_done_source = g_timeout_add (500, _selection_done, (gpointer)driver); }
static void cc_language_chooser_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { CcLanguageChooser *chooser = CC_LANGUAGE_CHOOSER (object); switch (prop_id) { case PROP_LANGUAGE: g_value_set_string (value, cc_language_chooser_get_language (chooser)); break; case PROP_SHOWING_EXTRA: g_value_set_boolean (value, cc_language_chooser_get_showing_extra (chooser)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }