aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Jardón <javier.jardon@codethink.co.uk>2011-08-22 20:38:36 +0100
committerJavier Jardón <javier.jardon@codethink.co.uk>2011-08-22 20:38:36 +0100
commit84735ec5056e864684245f90a0116ce09cc42b8f (patch)
tree92495137fcc0ff51b7ed79a79f7bddd95c03512e
parent94b05b3ac5e37146e6e049df4daf011e0b5689ae (diff)
downloadayatana-indicator-power-84735ec5056e864684245f90a0116ce09cc42b8f.tar.gz
ayatana-indicator-power-84735ec5056e864684245f90a0116ce09cc42b8f.tar.bz2
ayatana-indicator-power-84735ec5056e864684245f90a0116ce09cc42b8f.zip
Use gsettings to store the status of "Show time in Menu Bar" option
Fixes https://bugs.launchpad.net/indicator-power/+bug/829853
-rw-r--r--Makefile.am14
-rw-r--r--configure.ac8
-rw-r--r--data/org.ubuntu.indicator-power.gschema.xml.in9
-rw-r--r--src/indicator-power.c16
4 files changed, 44 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 932775f..70af9f5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,6 +2,13 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
SUBDIRS = po
+gsettingsschema_in_files = data/org.ubuntu.indicator-power.gschema.xml.in
+gsettings_SCHEMAS = $(gsettingsschema_in_files:.xml.in=.xml)
+
+@INTLTOOL_XML_NOMERGE_RULE@
+
+@GSETTINGS_RULES@
+
###################
# Indicator Stuff
###################
@@ -24,7 +31,12 @@ libpower_la_LDFLAGS = \
############################################################
-EXTRA_DIST = autogen.sh
+EXTRA_DIST = \
+ $(gsettingsschema_in_files) \
+ autogen.sh
+
+CLEANFILES = \
+ $(gsettings_SCHEMAS)
DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall
diff --git a/configure.ac b/configure.ac
index 19ca570..94a94bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,7 +28,7 @@ LT_INIT
###########################
# Dependencies
###########################
-
+GIO_REQUIRED_VERSION=2.26
GTK_REQUIRED_VERSION=3.0
INDICATOR_REQUIRED_VERSION=0.3.90
UPOWER_REQUIRED_VERSION=0.9.5
@@ -36,12 +36,18 @@ GSD_REQUIRED_VERSION=3.1.4
PKG_CHECK_MODULES([UPOWER],[upower-glib >= UPOWER_REQUIRED_VERSION])
PKG_CHECK_MODULES([INDICATOR],[
+ gio-2.0 >= $GIO_REQUIRED_VERSION
gtk+-3.0 >= $GTK_REQUIRED_VERSION
indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
])
PKG_CHECK_MODULES([GSD],[gnome-settings-daemon >= $GSD_REQUIRED_VERSION])
###########################
+# GSETTINGS
+###########################
+GLIB_GSETTINGS
+
+###########################
# Check to see if we're local
###########################
diff --git a/data/org.ubuntu.indicator-power.gschema.xml.in b/data/org.ubuntu.indicator-power.gschema.xml.in
new file mode 100644
index 0000000..a961794
--- /dev/null
+++ b/data/org.ubuntu.indicator-power.gschema.xml.in
@@ -0,0 +1,9 @@
+<schemalist>
+ <schema gettext-domain="@GETTEXT_PACKAGE@" id="org.ubuntu.indicator-power" path="/org/ubuntu/indicator-power/">
+ <key name="show_label" type="b">
+ <default>false</default>
+ <_summary>Show time in Menu Bar</_summary>
+ <_description>Whether show the time in the menu bar.</_description>
+ </key>
+ </schema>
+</schemalist>
diff --git a/src/indicator-power.c b/src/indicator-power.c
index 24b2b72..7f9e479 100644
--- a/src/indicator-power.c
+++ b/src/indicator-power.c
@@ -82,6 +82,8 @@ struct _IndicatorPowerPrivate
GVariant *devices;
GVariant *device;
+
+ GSettings *settings;
};
/* Prototypes */
@@ -138,9 +140,15 @@ option_toggled_cb (GtkCheckMenuItem *item,
{
IndicatorPower *self = INDICATOR_POWER (user_data);
IndicatorPowerPrivate *priv = self->priv;
+ gboolean visible;
+
+ visible = gtk_check_menu_item_get_active (item);
gtk_widget_set_visible (GTK_WIDGET (priv->label),
- gtk_check_menu_item_get_active (item));
+ visible);
+
+ g_settings_set_boolean (priv->settings, "show-time",
+ visible);
}
static void
@@ -459,6 +467,7 @@ build_menu (IndicatorPower *self)
GtkWidget *image;
GList *children;
gsize n_devices = 0;
+ gboolean visible;
if (priv->menu == NULL)
priv->menu = GTK_MENU (gtk_menu_new ());
@@ -482,6 +491,8 @@ build_menu (IndicatorPower *self)
item = gtk_check_menu_item_new_with_label (_("Show Time in Menu Bar"));
g_signal_connect (G_OBJECT (item), "toggled",
G_CALLBACK (option_toggled_cb), self);
+ visible = g_settings_get_boolean (priv->settings, "show-time");
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), visible);
gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item);
/* preferences */
@@ -755,6 +766,9 @@ indicator_power_init (IndicatorPower *self)
priv->proxy_cancel,
service_proxy_cb,
self);
+
+ /* GSettings */
+ priv->settings = g_settings_new ("org.ubuntu.indicator-power");
}
static void