[gnome-applets] mixer: port to GSettings
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-applets] mixer: port to GSettings
- Date: Sat, 20 Sep 2014 22:22:34 +0000 (UTC)
commit 9cfcc41381659a20ce04ff3b11b9d5be00528e0e
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sun Sep 21 00:54:52 2014 +0300
mixer: port to GSettings
mixer/Makefile.am | 34 ++++---
mixer/applet.c | 93 ++++++++------------
mixer/applet.h | 7 +-
mixer/dock.c | 2 -
mixer/keys.h | 35 --------
mixer/mixer.schemas.in | 36 --------
...org.gnome.gnome-applets.mixer.gschema.xml.in.in | 10 ++
mixer/preferences.c | 37 +++-----
mixer/preferences.h | 3 +-
po/POTFILES.in | 2 +-
po/POTFILES.skip | 1 +
11 files changed, 85 insertions(+), 175 deletions(-)
---
diff --git a/mixer/Makefile.am b/mixer/Makefile.am
index 873047b..252806a 100644
--- a/mixer/Makefile.am
+++ b/mixer/Makefile.am
@@ -17,7 +17,6 @@ mixer_applet2_SOURCES = \
noinst_HEADERS = \
applet.h \
dock.h \
- keys.h \
preferences.h
mixer_applet2_LDADD = \
@@ -48,23 +47,30 @@ org.gnome.panel.applet.MixerAppletFactory.service: $(service_in_files)
uidir = $(pkgdatadir)/ui
ui_DATA = mixer-applet-menu.xml
-schemasdir = @GCONF_SCHEMA_FILE_DIR@
-schemas_in_files = mixer.schemas.in
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
+gsettings_schemas_in_in = \
+ org.gnome.gnome-applets.mixer.gschema.xml.in.in
- INTLTOOL_SCHEMAS_RULE@
+ INTLTOOL_XML_NOMERGE_RULE@
+
+gsettings_schemas_in = $(gsettings_schemas_in_in:.xml.in.in=.xml.in)
+gsettings_SCHEMAS = $(gsettings_schemas_in:.xml.in=.xml)
+
+%.gschema.xml.in: %.gschema.xml.in.in Makefile
+ $(AM_V_GEN) $(SED) -e 's^\ GETTEXT_PACKAGE\@^$(GETTEXT_PACKAGE)^g' < $< > $@
+
+ GSETTINGS_RULES@
EXTRA_DIST = \
+ $(gsettings_schemas_in_in) \
org.gnome.applets.MixerApplet.panel-applet.in.in \
$(service_in_files) \
- $(ui_DATA) \
- $(schemas_in_files)
-
-CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA) $(schemas_DATA)
-
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
- GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule
$(schemas_DATA) ;
-endif
+ $(ui_DATA)
+
+CLEANFILES = $(applet_DATA) \
+ $(applet_DATA).in \
+ $(service_DATA) \
+ $(gsettings_SCHEMAS_in) \
+ $(gsettings_SCHEMAS) \
+ *.gschema.valid
-include $(top_srcdir)/git.mk
diff --git a/mixer/applet.c b/mixer/applet.c
index 19d366f..ba0327b 100644
--- a/mixer/applet.c
+++ b/mixer/applet.c
@@ -34,14 +34,11 @@
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
#include "applet.h"
-#include "keys.h"
#include "preferences.h"
-#define IS_PANEL_HORIZONTAL(o) \
- (o == PANEL_APPLET_ORIENT_UP || o == PANEL_APPLET_ORIENT_DOWN)
+#define IS_STRING_EMPTY(s) ((s) == NULL || (s)[0] == '\0')
+#define IS_PANEL_HORIZONTAL(o) (o == PANEL_APPLET_ORIENT_UP || o == PANEL_APPLET_ORIENT_DOWN)
/* This is defined is load.c, we're doing this instead of creating a load.h file
* because nothing else is exported. */
@@ -83,10 +80,9 @@ static gboolean cb_check (gpointer data);
static void cb_volume (GtkAdjustment *adj,
gpointer data);
-static void cb_gconf (GConfClient *client,
- guint connection_id,
- GConfEntry *entry,
- gpointer data);
+static void cb_gsettings (GSettings *settings,
+ const gchar *key,
+ gpointer user_data);
static void cb_verb (GtkAction *action,
gpointer data);
@@ -166,7 +162,7 @@ gnome_volume_applet_init (GnomeVolumeApplet *applet)
applet->timeout = 0;
applet->elements = NULL;
- applet->client = gconf_client_get_default ();
+ applet->settings = NULL;
applet->mixer = NULL;
applet->tracks = NULL;
applet->lock = FALSE;
@@ -205,9 +201,6 @@ gnome_volume_applet_init (GnomeVolumeApplet *applet)
applet);
/* other stuff */
- panel_applet_add_preferences (PANEL_APPLET (applet),
- "/schemas/apps/mixer_applet/prefs",
- NULL);
panel_applet_set_flags (PANEL_APPLET (applet),
PANEL_APPLET_EXPAND_MINOR);
@@ -223,7 +216,7 @@ gnome_volume_applet_init (GnomeVolumeApplet *applet)
}
-/* Parse the list of tracks that are stored in GConf */
+/* Parse the list of tracks that are stored in GSettings */
static char **
parse_track_list (const char *track_list)
@@ -255,7 +248,7 @@ select_tracks (GstElement *element,
}
tracks = gst_mixer_list_tracks (GST_MIXER (element));
- if (active_track_names)
+ if (!IS_STRING_EMPTY (active_track_names))
active_track_name_list = parse_track_list (active_track_names);
for (l = tracks; l; l = l->next) {
@@ -309,7 +302,7 @@ select_element_and_track (GnomeVolumeApplet *applet,
active_element = NULL;
active_tracks = NULL;
- if (active_element_name) {
+ if (!IS_STRING_EMPTY (active_element_name)) {
for (l = elements; l; l = l->next) {
GstElement *element = l->data;
const char *element_name;
@@ -394,20 +387,17 @@ gnome_volume_applet_setup (GnomeVolumeApplet *applet,
G_CALLBACK (cb_verb), FALSE }
};
- gchar *key;
gchar *active_element_name;
gchar *active_track_name;
gchar *ui_path;
GstMixerTrack *first_track;
gboolean res;
- active_element_name = panel_applet_gconf_get_string (PANEL_APPLET (applet),
- GNOME_VOLUME_APPLET_KEY_ACTIVE_ELEMENT,
- NULL);
+ applet->settings = panel_applet_settings_new (PANEL_APPLET (applet),
+ "org.gnome.gnome-applets.mixer");
- active_track_name = panel_applet_gconf_get_string (PANEL_APPLET (applet),
- GNOME_VOLUME_APPLET_KEY_ACTIVE_TRACK,
- NULL);
+ active_element_name = g_settings_get_string (applet->settings, "active-element");
+ active_track_name = g_settings_get_string (applet->settings, "active-tracks");
res = select_element_and_track (applet, elements, active_element_name,
active_track_name);
@@ -453,17 +443,11 @@ gnome_volume_applet_setup (GnomeVolumeApplet *applet,
if (res) {
gnome_volume_applet_setup_timeout (applet);
- /* gconf */
- key = panel_applet_gconf_get_full_key (PANEL_APPLET (applet),
- GNOME_VOLUME_APPLET_KEY_ACTIVE_ELEMENT);
- gconf_client_notify_add (applet->client, key,
- cb_gconf, applet, NULL, NULL);
- g_free (key);
- key = panel_applet_gconf_get_full_key (PANEL_APPLET (applet),
- GNOME_VOLUME_APPLET_KEY_ACTIVE_TRACK);
- gconf_client_notify_add (applet->client, key,
- cb_gconf, applet, NULL, NULL);
- g_free (key);
+ /* GSettings */
+ g_signal_connect (applet->settings, "changed::active-element",
+ G_CALLBACK (cb_gsettings), applet);
+ g_signal_connect (applet->settings, "changed::active-tracks",
+ G_CALLBACK (cb_gsettings), applet);
}
gtk_widget_show (GTK_WIDGET (applet));
@@ -484,6 +468,11 @@ gnome_volume_applet_dispose (GObject *object)
applet->action_group = NULL;
}
+ if (applet->settings) {
+ g_object_unref (applet->settings);
+ applet->settings = NULL;
+ }
+
if (applet->elements) {
GList *item;
@@ -1274,41 +1263,29 @@ cb_check (gpointer data)
}
/*
- * GConf callback.
+ * GSettings callback.
*/
static void
-cb_gconf (GConfClient *client,
- guint connection_id,
- GConfEntry *entry,
- gpointer data)
+cb_gsettings (GSettings *settings,
+ const gchar *key,
+ gpointer user_data)
{
- GnomeVolumeApplet *applet = data;
- GConfValue *value;
- const gchar *str, *key;
+ GnomeVolumeApplet *applet = (GnomeVolumeApplet *) user_data;
+ gchar *str;
const GList *item;
gboolean newdevice = FALSE;
- gchar *keyroot;
GList *active_tracks;
active_tracks = NULL;
- keyroot = panel_applet_gconf_get_full_key (PANEL_APPLET (applet), "");
- key = gconf_entry_get_key (entry);
- if (strncmp (key, keyroot, strlen (keyroot))) {
- g_free (keyroot);
- return;
- }
- key += strlen (keyroot);
- g_free (keyroot);
-
g_list_free(applet->elements);
applet->elements = gnome_volume_applet_create_mixer_collection ();
- if ((value = gconf_entry_get_value (entry)) != NULL &&
- (value->type == GCONF_VALUE_STRING) &&
- (str = gconf_value_get_string (value)) != NULL) {
- if (!strcmp (key, GNOME_VOLUME_APPLET_KEY_ACTIVE_ELEMENT)) {
+ str = g_settings_get_string (settings, key);
+
+ if (!IS_STRING_EMPTY (str)) {
+ if (!strcmp (key, "active-element")) {
for (item = applet->elements; item != NULL; item = item->next) {
gchar *cur_el_str = g_object_get_data (item->data,
"gnome-volume-applet-name");
@@ -1334,7 +1311,7 @@ cb_gconf (GConfClient *client,
}
}
- if (!strcmp (key, GNOME_VOLUME_APPLET_KEY_ACTIVE_TRACK) || newdevice) {
+ if (!strcmp (key, "active-tracks") || newdevice) {
if (!active_tracks) {
active_tracks = select_tracks (GST_ELEMENT (applet->mixer), str, FALSE);
}
@@ -1364,6 +1341,8 @@ cb_gconf (GConfClient *client,
}
}
}
+
+ g_free (str);
}
/*
diff --git a/mixer/applet.h b/mixer/applet.h
index dac2844..9657c77 100644
--- a/mixer/applet.h
+++ b/mixer/applet.h
@@ -27,8 +27,7 @@
#include <glib/gi18n.h>
#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-#include <panel-applet-gconf.h>
+#include <panel-applet.h>
#include <gst/gst.h>
#include <gst/interfaces/mixer.h>
@@ -67,8 +66,8 @@ struct _GnomeVolumeApplet {
/* list of volume control elements */
GList *elements;
- /* gconf */
- GConfClient *client;
+ /* GSettings */
+ GSettings *settings;
/* element */
GstMixer *mixer;
diff --git a/mixer/dock.c b/mixer/dock.c
index a9fc33c..520e3cf 100644
--- a/mixer/dock.c
+++ b/mixer/dock.c
@@ -235,8 +235,6 @@ gnome_volume_applet_dock_new (GtkOrientation orientation,
g_signal_connect (more, "clicked", G_CALLBACK (launch_mixer_cb), dock);
gtk_box_pack_end (GTK_BOX (innerline), more, TRUE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (dock), frame);
-
return GTK_WIDGET (dock);
}
diff --git a/mixer/org.gnome.gnome-applets.mixer.gschema.xml.in.in
b/mixer/org.gnome.gnome-applets.mixer.gschema.xml.in.in
new file mode 100644
index 0000000..2d25dcc
--- /dev/null
+++ b/mixer/org.gnome.gnome-applets.mixer.gschema.xml.in.in
@@ -0,0 +1,10 @@
+<schemalist gettext-domain="@GETTEXT_PACKAGE@">
+ <schema id="org.gnome.gnome-applets.mixer">
+ <key name="active-element" type="s">
+ <default>''</default>
+ </key>
+ <key name="active-tracks" type="s">
+ <default>''</default>
+ </key>
+ </schema>
+</schemalist>
diff --git a/mixer/preferences.c b/mixer/preferences.c
index fb717e2..03ce947 100644
--- a/mixer/preferences.c
+++ b/mixer/preferences.c
@@ -34,7 +34,6 @@
#include "applet.h"
#include "preferences.h"
-#include "keys.h"
enum {
COL_LABEL,
@@ -313,24 +312,19 @@ cb_dev_selected (GtkComboBox *box,
gpointer data)
{
GnomeVolumeAppletPreferences *prefs = data;
- /* GnomeVolumeApplet *applet = (GnomeVolumeApplet *) prefs->applet; */
+ GnomeVolumeApplet *applet = (GnomeVolumeApplet *) prefs->applet;
GtkTreeIter iter;
if (gtk_combo_box_get_active_iter (box, &iter)) {
gchar *label;
- GConfValue *value;
gtk_tree_model_get (gtk_combo_box_get_model (box),
&iter, COL_LABEL, &label, -1);
- /* write to gconf */
- value = gconf_value_new (GCONF_VALUE_STRING);
- gconf_value_set_string (value, label);
- panel_applet_gconf_set_value (PANEL_APPLET (prefs->applet),
- GNOME_VOLUME_APPLET_KEY_ACTIVE_ELEMENT,
- value, NULL);
+ /* write to GSettings */
+ g_settings_set_string (applet->settings, "active-element", label);
+
g_free (label);
- gconf_value_free (value);
}
}
@@ -366,9 +360,8 @@ cb_track_select (GtkTreeSelection *selection,
GnomeVolumeAppletPreferences *prefs = data;
GtkTreeIter iter;
gchar *label;
- GConfValue *value;
GtkTreeSelection *sel;
- GString *gconf_string;
+ GString *track_string;
GstMixerTrack *selected_track; /* the track just selected */
GnomeVolumeApplet *applet = (GnomeVolumeApplet*) prefs->applet; /* required to update the track settings */
int volume_percent;
@@ -376,7 +369,7 @@ cb_track_select (GtkTreeSelection *selection,
if (prefs->track_lock)
return TRUE;
- gconf_string = g_string_new ("");
+ track_string = g_string_new ("");
/* get value */
gtk_tree_model_get_iter (model, &iter, path);
@@ -408,9 +401,9 @@ cb_track_select (GtkTreeSelection *selection,
applet->tracks = g_list_append (applet->tracks, curr);
if (!path_selected) {
- g_string_append_printf (gconf_string, "%s:", curr->label);
+ g_string_append_printf (track_string, "%s:", curr->label);
} else {
- gconf_string = g_string_append (gconf_string, curr->label);
+ track_string = g_string_append (track_string, curr->label);
}
}
}
@@ -425,7 +418,7 @@ cb_track_select (GtkTreeSelection *selection,
gtk_tree_model_get_iter (model, &iter, path);
gtk_tree_model_get (model, &iter, COL_TRACK, &curr, -1);
- gconf_string = g_string_append (gconf_string, curr->label);
+ track_string = g_string_append (track_string, curr->label);
applet->tracks = g_list_append (applet->tracks, curr);
@@ -435,15 +428,11 @@ cb_track_select (GtkTreeSelection *selection,
}
}
- /* write to gconf */
- value = gconf_value_new (GCONF_VALUE_STRING);
- gconf_value_set_string (value, gconf_string->str);
- panel_applet_gconf_set_value (PANEL_APPLET (prefs->applet),
- GNOME_VOLUME_APPLET_KEY_ACTIVE_TRACK,
- value, NULL);
+ /* write to GSettings */
+ g_settings_set_string (applet->settings, "active-tracks", track_string->str);
+
g_free (label);
- g_string_free (gconf_string, TRUE);
- gconf_value_free (value);
+ g_string_free (track_string, TRUE);
return TRUE;
}
diff --git a/mixer/preferences.h b/mixer/preferences.h
index f4faadb..c82af2c 100644
--- a/mixer/preferences.h
+++ b/mixer/preferences.h
@@ -25,7 +25,6 @@
#include <glib.h>
#include <gtk/gtk.h>
#include <panel-applet.h>
-#include <panel-applet-gconf.h>
#include <gst/interfaces/mixer.h>
G_BEGIN_DECLS
@@ -55,7 +54,7 @@ typedef struct _GnomeVolumeAppletPreferences {
/* is the track list currently locked */
gboolean track_lock;
- /* for gconf */
+ /* for GSettings */
PanelApplet *applet;
/* treeview inside us */
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 270631a..aa5a403 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -63,8 +63,8 @@ mini-commander/src/preferences.c
mixer/applet.c
mixer/dock.c
mixer/load.c
-mixer/mixer.schemas.in
[type: gettext/ini]mixer/org.gnome.applets.MixerApplet.panel-applet.in.in
+mixer/org.gnome.gnome-applets.mixer.gschema.xml.in.in
mixer/preferences.c
modemlights/modem-applet.c
[type: gettext/glade]modemlights/modemlights.ui
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index c748734..6f390c2 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -19,6 +19,7 @@ gweather/Locations.xml.in
mini-commander/src/org.gnome.applets.MiniCommanderApplet.panel-applet.in
mini-commander/src/org.gnome.gnome-applets.mini-commander.gschema.xml.in
mixer/org.gnome.applets.MixerApplet.panel-applet.in
+mixer/org.gnome.gnome-applets.mixer.gschema.xml.in
modemlights/org.gnome.applets.ModemApplet.panel-applet.in
multiload/org.gnome.applets.MultiLoadApplet.panel-applet.in
multiload/org.gnome.gnome-applets.multiload.gschema.xml.in
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]