user-accounts: simplify language changing thru users panel
Do not show combo box with common languages and show the language chooser immediately as it is done in the region panel. https://bugzilla.gnome.org/show_bug.cgi?id=738077
This commit is contained in:
parent
2640a9dfd7
commit
96c0c0a838
2 changed files with 50 additions and 80 deletions
|
@ -383,7 +383,7 @@
|
|||
<property name="xalign">1</property>
|
||||
<property name="label" translatable="yes">_Language</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="mnemonic_widget">account-language-combo</property>
|
||||
<property name="mnemonic_widget">account-language-button</property>
|
||||
<style>
|
||||
<class name="dim-label"/>
|
||||
</style>
|
||||
|
@ -396,10 +396,8 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="UmEditableCombo" id="account-language-combo">
|
||||
<object class="UmEditableButton" id="account-language-button">
|
||||
<property name="visible">True</property>
|
||||
<property name="model">language-model</property>
|
||||
<property name="text-column">1</property>
|
||||
<property name="hexpand">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
|
@ -510,7 +508,7 @@
|
|||
<property name="mode">both</property>
|
||||
<widgets>
|
||||
<widget name="account-fingerprint-button"/>
|
||||
<widget name="account-language-combo"/>
|
||||
<widget name="account-language-button"/>
|
||||
<widget name="account-password-button"/>
|
||||
<widget name="account-type-combo"/>
|
||||
<widget name="autologin-box"/>
|
||||
|
|
|
@ -665,10 +665,8 @@ show_user (ActUser *user, CcUserPanelPrivate *d)
|
|||
GtkWidget *image;
|
||||
GtkWidget *label;
|
||||
GdkPixbuf *pixbuf;
|
||||
gchar *lang, *text;
|
||||
gchar *lang, *text, *name;
|
||||
GtkWidget *widget;
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
gboolean show, enable;
|
||||
ActUser *current;
|
||||
|
||||
|
@ -699,22 +697,21 @@ show_user (ActUser *user, CcUserPanelPrivate *d)
|
|||
g_signal_handlers_unblock_by_func (widget, autologin_changed, d);
|
||||
gtk_widget_set_sensitive (widget, get_autologin_possible (user));
|
||||
|
||||
widget = get_widget (d, "account-language-combo");
|
||||
model = um_editable_combo_get_model (UM_EDITABLE_COMBO (widget));
|
||||
cc_common_language_add_user_languages (model);
|
||||
widget = get_widget (d, "account-language-button");
|
||||
|
||||
name = NULL;
|
||||
lang = g_strdup (act_user_get_language (user));
|
||||
if ((!lang || *lang == '\0') && act_user_get_uid (user) == getuid ()) {
|
||||
lang = cc_common_language_get_current_language ();
|
||||
act_user_set_language (user, lang);
|
||||
}
|
||||
|
||||
if (cc_common_language_get_iter_for_language (model, lang, &iter)) {
|
||||
um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), &iter);
|
||||
} else {
|
||||
um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), NULL);
|
||||
if (lang && *lang != '\0') {
|
||||
name = gnome_get_language_from_locale (lang, NULL);
|
||||
}
|
||||
um_editable_button_set_text (UM_EDITABLE_BUTTON (widget), name);
|
||||
g_free (lang);
|
||||
g_free (name);
|
||||
|
||||
/* Fingerprint: show when self, possible, and local account */
|
||||
widget = get_widget (d, "account-fingerprint-button");
|
||||
|
@ -813,48 +810,6 @@ account_type_changed (UmEditableCombo *combo,
|
|||
g_object_unref (user);
|
||||
}
|
||||
|
||||
static void
|
||||
language_response (GtkDialog *dialog,
|
||||
gint response_id,
|
||||
CcUserPanelPrivate *d)
|
||||
{
|
||||
GtkWidget *combo;
|
||||
ActUser *user;
|
||||
gchar *lang = NULL;
|
||||
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 = g_strdup (cc_language_chooser_get_language (GTK_WIDGET (dialog)));
|
||||
}
|
||||
|
||||
if (lang != NULL) {
|
||||
act_user_set_language (user, lang);
|
||||
}
|
||||
else {
|
||||
lang = g_strdup (act_user_get_language (user));
|
||||
}
|
||||
|
||||
if (cc_common_language_get_iter_for_language (model, lang, &iter)) {
|
||||
um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (combo), &iter);
|
||||
}
|
||||
else {
|
||||
um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (combo), NULL);
|
||||
}
|
||||
|
||||
g_free (lang);
|
||||
|
||||
gtk_widget_hide (GTK_WIDGET (dialog));
|
||||
gtk_widget_set_sensitive (combo, TRUE);
|
||||
|
||||
g_object_unref (user);
|
||||
}
|
||||
|
||||
static void
|
||||
restart_now (CcUserPanelPrivate *d)
|
||||
{
|
||||
|
@ -875,7 +830,7 @@ restart_now (CcUserPanelPrivate *d)
|
|||
}
|
||||
|
||||
static void
|
||||
show_restart_notification (CcUserPanelPrivate *d, gchar *locale)
|
||||
show_restart_notification (CcUserPanelPrivate *d, const gchar *locale)
|
||||
{
|
||||
GtkWidget *box;
|
||||
GtkWidget *label;
|
||||
|
@ -919,27 +874,26 @@ show_restart_notification (CcUserPanelPrivate *d, gchar *locale)
|
|||
}
|
||||
|
||||
static void
|
||||
language_changed (UmEditableCombo *combo,
|
||||
CcUserPanelPrivate *d)
|
||||
language_response (GtkDialog *dialog,
|
||||
gint response_id,
|
||||
CcUserPanelPrivate *d)
|
||||
{
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
gchar *lang;
|
||||
const gchar *current_language;
|
||||
GtkWidget *button;
|
||||
ActUser *user;
|
||||
const gchar *lang, *current_language;
|
||||
gchar *name = NULL;
|
||||
gboolean self_selected;
|
||||
|
||||
if (!um_editable_combo_get_active_iter (combo, &iter))
|
||||
return;
|
||||
if (response_id != GTK_RESPONSE_OK) {
|
||||
gtk_widget_hide (GTK_WIDGET (dialog));
|
||||
return;
|
||||
}
|
||||
|
||||
user = get_selected_user (d);
|
||||
current_language = act_user_get_language (user);
|
||||
self_selected = act_user_get_uid (user) == geteuid ();
|
||||
|
||||
model = um_editable_combo_get_model (combo);
|
||||
|
||||
gtk_tree_model_get (model, &iter, 0, &lang, -1);
|
||||
|
||||
lang = cc_language_chooser_get_language (GTK_WIDGET (dialog));
|
||||
if (lang) {
|
||||
if (g_strcmp0 (lang, current_language) != 0) {
|
||||
act_user_set_language (user, lang);
|
||||
|
@ -947,10 +901,30 @@ language_changed (UmEditableCombo *combo,
|
|||
if (self_selected)
|
||||
show_restart_notification (d, lang);
|
||||
}
|
||||
g_free (lang);
|
||||
goto out;
|
||||
|
||||
act_user_set_language (user, lang);
|
||||
|
||||
button = get_widget (d, "account-language-button");
|
||||
name = gnome_get_language_from_locale (lang, NULL);
|
||||
um_editable_button_set_text (UM_EDITABLE_BUTTON (button), name);
|
||||
g_free (name);
|
||||
}
|
||||
|
||||
g_object_unref (user);
|
||||
|
||||
gtk_widget_hide (GTK_WIDGET (dialog));
|
||||
}
|
||||
|
||||
static void
|
||||
change_language (GtkButton *button,
|
||||
CcUserPanelPrivate *d)
|
||||
{
|
||||
const gchar *current_language;
|
||||
ActUser *user;
|
||||
|
||||
user = get_selected_user (d);
|
||||
current_language = act_user_get_language (user);
|
||||
|
||||
if (d->language_chooser) {
|
||||
cc_language_chooser_clear_filter (d->language_chooser);
|
||||
cc_language_chooser_set_language (d->language_chooser, NULL);
|
||||
|
@ -969,9 +943,7 @@ language_changed (UmEditableCombo *combo,
|
|||
if (current_language && *current_language != '\0')
|
||||
cc_language_chooser_set_language (d->language_chooser, current_language);
|
||||
gtk_window_present (GTK_WINDOW (d->language_chooser));
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (combo), FALSE);
|
||||
|
||||
out:
|
||||
g_object_unref (user);
|
||||
}
|
||||
|
||||
|
@ -1248,8 +1220,8 @@ on_permission_changed (GPermission *permission,
|
|||
gtk_widget_show (get_widget (d, "user-icon-button"));
|
||||
gtk_widget_hide (get_widget (d, "user-icon-nonbutton"));
|
||||
|
||||
um_editable_combo_set_editable (UM_EDITABLE_COMBO (get_widget (d, "account-language-combo")), TRUE);
|
||||
remove_unlock_tooltip (get_widget (d, "account-language-combo"));
|
||||
um_editable_button_set_editable (UM_EDITABLE_BUTTON (get_widget (d, "account-language-button")), TRUE);
|
||||
remove_unlock_tooltip (get_widget (d, "account-language-button"));
|
||||
|
||||
um_editable_button_set_editable (UM_EDITABLE_BUTTON (get_widget (d, "account-password-button")), TRUE);
|
||||
remove_unlock_tooltip (get_widget (d, "account-password-button"));
|
||||
|
@ -1261,8 +1233,8 @@ on_permission_changed (GPermission *permission,
|
|||
gtk_widget_hide (get_widget (d, "user-icon-button"));
|
||||
gtk_widget_show (get_widget (d, "user-icon-nonbutton"));
|
||||
|
||||
um_editable_combo_set_editable (UM_EDITABLE_COMBO (get_widget (d, "account-language-combo")), FALSE);
|
||||
add_unlock_tooltip (get_widget (d, "account-language-combo"));
|
||||
um_editable_button_set_editable (UM_EDITABLE_BUTTON (get_widget (d, "account-language-button")), FALSE);
|
||||
add_unlock_tooltip (get_widget (d, "account-language-button"));
|
||||
|
||||
um_editable_button_set_editable (UM_EDITABLE_BUTTON (get_widget (d, "account-password-button")), FALSE);
|
||||
add_unlock_tooltip (get_widget (d, "account-password-button"));
|
||||
|
@ -1454,8 +1426,8 @@ setup_main_window (CcUserPanelPrivate *d)
|
|||
button = get_widget (d, "account-password-button");
|
||||
g_signal_connect (button, "start-editing", G_CALLBACK (change_password), d);
|
||||
|
||||
button = get_widget (d, "account-language-combo");
|
||||
g_signal_connect (button, "editing-done", G_CALLBACK (language_changed), d);
|
||||
button = get_widget (d, "account-language-button");
|
||||
g_signal_connect (button, "start-editing", G_CALLBACK (change_language), d);
|
||||
|
||||
button = get_widget (d, "autologin-switch");
|
||||
g_signal_connect (button, "notify::active", G_CALLBACK (autologin_changed), d);
|
||||
|
|
Loading…
Add table
Reference in a new issue