From 6ceea9b3aefdb373c3670dcc3288d722e174cb58 Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Tue, 15 Feb 2011 14:15:35 -0500 Subject: [PATCH] info: add warning that always fallback will effect next login --- panels/info/cc-info-panel.c | 48 ++++++++++++++++++++++++------------- panels/info/info.ui | 35 +++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 19 deletions(-) diff --git a/panels/info/cc-info-panel.c b/panels/info/cc-info-panel.c index 095c2abe2..37536876d 100644 --- a/panels/info/cc-info-panel.c +++ b/panels/info/cc-info-panel.c @@ -50,6 +50,7 @@ struct _CcInfoPanelPrivate char *gnome_distributor; char *gnome_date; gboolean updates_available; + gboolean is_fallback; GDBusConnection *session_bus; GDBusProxy *pk_proxy; @@ -404,20 +405,6 @@ get_current_is_fallback (CcInfoPanel *self) return is_fallback; } -static char * -get_graphics_experience (CcInfoPanel *self) -{ - char *experience_str; - - if (get_current_is_fallback (self)) - experience_str = g_strdup (_("Fallback")); - else - experience_str = g_strdup (_("Standard")); - - return experience_str; -} - - static void cc_info_panel_get_property (GObject *object, guint property_id, @@ -736,17 +723,40 @@ switch_fallback_get_mapping (GValue *value, GVariant *variant, gpointer data) { - const char *setting = g_variant_get_string (variant, NULL); + const char *setting; + + setting = g_variant_get_string (variant, NULL); g_value_set_boolean (value, strcmp (setting, "gnome") != 0); return TRUE; } +static void +toggle_fallback_warning_label (CcInfoPanel *self, + gboolean visible) +{ + GtkWidget *widget; + + widget = WID (self->priv->builder, "graphics_logout_warning_label"); + if (visible) + gtk_widget_show (widget); + else + gtk_widget_hide (widget); +} + static GVariant * switch_fallback_set_mapping (const GValue *value, const GVariantType *expected_type, gpointer data) { - gboolean is_set = g_value_get_boolean (value); + CcInfoPanel *self = data; + gboolean is_set; + + is_set = g_value_get_boolean (value); + if (is_set != self->priv->is_fallback) + toggle_fallback_warning_label (self, TRUE); + else + toggle_fallback_warning_label (self, FALSE); + return g_variant_new_string (is_set ? "gnome-fallback" : "gnome"); } @@ -767,7 +777,11 @@ info_panel_setup_graphics (CcInfoPanel *self) gtk_label_set_markup (GTK_LABEL (widget), text ? text : ""); g_free (text); - text = get_graphics_experience (self); + self->priv->is_fallback = get_current_is_fallback (self); + if (self->priv->is_fallback) + text = g_strdup (_("Fallback")); + else + text = g_strdup (_("Standard")); widget = WID (self->priv->builder, "graphics_experience_label"); gtk_label_set_markup (GTK_LABEL (widget), text ? text : ""); g_free (text); diff --git a/panels/info/info.ui b/panels/info/info.ui index 70025a23c..7c95b031b 100644 --- a/panels/info/info.ui +++ b/panels/info/info.ui @@ -631,10 +631,10 @@ False start start - 4 + 5 2 12 - 5 + 10 True @@ -740,6 +740,37 @@ 4 + + + True + False + 1 + right + + + 4 + 5 + + + + + False + True + 0 + Will take effect at next login + True + True + + + + + + 1 + 2 + 4 + 5 + +