[gnome-control-center] region: Allow setting system-wide formats
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] region: Allow setting system-wide formats
- Date: Tue, 15 Oct 2013 21:19:53 +0000 (UTC)
commit 9e975b036f642ff01cb56ea3c323162c878e893e
Author: Rui Matos <tiagomatos gmail com>
Date: Wed Sep 25 15:03:13 2013 +0200
region: Allow setting system-wide formats
https://bugzilla.gnome.org/show_bug.cgi?id=695535
panels/region/cc-region-panel.c | 81 ++++++++++++++++++++++++++++-----------
1 files changed, 58 insertions(+), 23 deletions(-)
---
diff --git a/panels/region/cc-region-panel.c b/panels/region/cc-region-panel.c
index 23044b4..32d1d7e 100644
--- a/panels/region/cc-region-panel.c
+++ b/panels/region/cc-region-panel.c
@@ -69,6 +69,7 @@ CC_PANEL_REGISTER (CcRegionPanel, cc_region_panel)
typedef enum {
CHOOSE_LANGUAGE,
+ CHOOSE_REGION,
ADD_INPUT,
REMOVE_INPUT
} SystemOp;
@@ -406,16 +407,36 @@ language_response (GtkDialog *chooser,
}
static void
+set_system_region (CcRegionPanel *self,
+ const gchar *region)
+{
+ CcRegionPanelPrivate *priv = self->priv;
+
+ if (g_strcmp0 (region, priv->system_region) == 0)
+ return;
+
+ g_free (priv->system_region);
+ priv->system_region = g_strdup (region);
+
+ set_localed_locale (self);
+}
+
+static void
update_region (CcRegionPanel *self,
const gchar *region)
{
CcRegionPanelPrivate *priv = self->priv;
- if (g_strcmp0 (region, priv->region) == 0)
- return;
-
- g_settings_set_string (priv->locale_settings, KEY_REGION, region);
- maybe_notify (self, LC_TIME, region);
+ if (priv->login) {
+ set_system_region (self, region);
+ } else {
+ if (g_strcmp0 (region, priv->region) == 0)
+ return;
+ g_settings_set_string (priv->locale_settings, KEY_REGION, region);
+ if (priv->login_auto_apply)
+ set_system_region (self, region);
+ maybe_notify (self, LC_TIME, region);
+ }
}
static void
@@ -448,6 +469,21 @@ show_language_chooser (CcRegionPanel *self,
gtk_window_present (GTK_WINDOW (chooser));
}
+static void
+show_region_chooser (CcRegionPanel *self,
+ const gchar *region)
+{
+ GtkWidget *toplevel;
+ GtkWidget *chooser;
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
+ chooser = cc_format_chooser_new (toplevel);
+ cc_format_chooser_set_region (chooser, region);
+ g_signal_connect (chooser, "response",
+ G_CALLBACK (format_response), self);
+ gtk_window_present (GTK_WINDOW (chooser));
+}
+
static void show_input_chooser (CcRegionPanel *self);
static void remove_selected_input (CcRegionPanel *self);
@@ -474,6 +510,9 @@ permission_acquired (GObject *source,
case CHOOSE_LANGUAGE:
show_language_chooser (self, priv->system_language);
break;
+ case CHOOSE_REGION:
+ show_region_chooser (self, priv->system_region);
+ break;
case ADD_INPUT:
show_input_chooser (self);
break;
@@ -488,21 +527,6 @@ permission_acquired (GObject *source,
}
static void
-show_format_chooser (CcRegionPanel *self)
-{
- CcRegionPanelPrivate *priv = self->priv;
- GtkWidget *toplevel;
- GtkWidget *chooser;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
- chooser = cc_format_chooser_new (toplevel);
- cc_format_chooser_set_region (chooser, priv->region);
- g_signal_connect (chooser, "response",
- G_CALLBACK (format_response), self);
- gtk_window_present (GTK_WINDOW (chooser));
-}
-
-static void
activate_language_row (CcRegionPanel *self,
GtkListBoxRow *row)
{
@@ -521,7 +545,17 @@ activate_language_row (CcRegionPanel *self,
self);
}
} else if (row == priv->formats_row) {
- show_format_chooser (self);
+ if (!priv->login) {
+ show_region_chooser (self, priv->region);
+ } else if (g_permission_get_allowed (priv->permission)) {
+ show_region_chooser (self, priv->system_region);
+ } else if (g_permission_get_can_acquire (priv->permission)) {
+ priv->op = CHOOSE_REGION;
+ g_permission_acquire_async (priv->permission,
+ NULL,
+ permission_acquired,
+ self);
+ }
}
}
@@ -532,7 +566,9 @@ update_region_label (CcRegionPanel *self)
const gchar *region;
gchar *name;
- if (priv->region == NULL || priv->region[0] == '\0')
+ if (priv->login)
+ region = priv->system_region;
+ else if (priv->region == NULL || priv->region[0] == '\0')
region = priv->language;
else
region = priv->region;
@@ -1653,7 +1689,6 @@ login_changed (CcRegionPanel *self)
gboolean can_acquire;
priv->login = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->login_button));
- gtk_widget_set_visible (GTK_WIDGET (priv->formats_row), !priv->login);
gtk_widget_set_visible (priv->login_label, priv->login);
can_acquire = priv->permission &&
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]