[gnome-games: 1/2] quadrapassel: Use gsettings



commit d43d33394b723b93c3dcf629a75d6c57166c29a8
Author: Robert Ancell <robert ancell canonical com>
Date:   Sun Jan 1 19:15:30 2012 +1100

    quadrapassel: Use gsettings

 libgames-support/games-controls.c                  |   87 ++++++--
 libgames-support/games-controls.h                  |    1 +
 quadrapassel/data/Makefile.am                      |   21 +--
 .../data/org.gnome.quadrapassel.gschema.xml.in     |   99 +++++++++
 quadrapassel/data/quadrapassel.schemas.in          |  222 --------------------
 quadrapassel/src/main.cpp                          |    5 -
 quadrapassel/src/scoreframe.cpp                    |    8 +-
 quadrapassel/src/tetris.cpp                        |  129 +++++-------
 quadrapassel/src/tetris.h                          |   37 +---
 9 files changed, 230 insertions(+), 379 deletions(-)
---
diff --git a/libgames-support/games-controls.c b/libgames-support/games-controls.c
index 3238e76..31edb63 100644
--- a/libgames-support/games-controls.c
+++ b/libgames-support/games-controls.c
@@ -47,6 +47,7 @@ struct GamesControlsListPrivate {
   GtkListStore *store;
   GtkWidget *view;
 
+  GSettings *settings;
   char *conf_group;
   gulong notify_handler_id;
 };
@@ -81,7 +82,10 @@ accel_edited_cb (GtkCellRendererAccel *cell,
 
   /* Note: the model is updated in the conf notification callback */
   /* FIXME: what to do with the modifiers? */
-  games_conf_set_keyval (list->priv->conf_group, conf_key, keyval);
+  if (list->priv->settings)
+    g_settings_set_int (list->priv->settings, conf_key, keyval);
+  else
+    games_conf_set_keyval (list->priv->conf_group, conf_key, keyval);
   g_free (conf_key);
 }
 
@@ -114,24 +118,19 @@ accel_cleared_cb (GtkCellRendererAccel *cell,
 
   /* Note: the model is updated in the conf notification callback */
   /* FIXME: what to do with the modifiers? */
-  games_conf_set_keyval (list->priv->conf_group, conf_key, default_keyval);
+  if (list->priv->settings)
+    g_settings_set_int (list->priv->settings, conf_key, default_keyval);
+  else
+    games_conf_set_keyval (list->priv->conf_group, conf_key, default_keyval);
   g_free (conf_key);
 }
 
 static void
-conf_value_changed_cb (GamesConf *conf,
-                       const char *group,
-                       const char *key,
-                       GamesControlsList *list)
+value_changed (GamesControlsList *list, const gchar *key)
 {
   GtkTreeIter iter;
   gboolean valid;
 
-  if ((group == NULL && list->priv->conf_group != NULL) ||
-      (group != NULL && (list->priv->conf_group == NULL ||
-                         strcmp (group, list->priv->conf_group) != 0)))
-    return;
-
   /* find our gconf key in the list store and update it */
   valid = gtk_tree_model_get_iter_first (list->priv->model, &iter);
   while (valid) {
@@ -148,7 +147,10 @@ conf_value_changed_cb (GamesConf *conf,
                           DEFAULT_KEYCODE_COLUMN, &default_keyval,
                           -1);
 
-      keyval = games_conf_get_keyval_with_default (list->priv->conf_group, key, default_keyval);
+      if (list->priv->settings)
+        keyval = g_settings_get_int (list->priv->settings, key);
+      else
+        keyval = games_conf_get_keyval_with_default (list->priv->conf_group, key, default_keyval);
 
       gtk_list_store_set (list->priv->store, &iter,
                           KEYCODE_COLUMN, keyval,
@@ -165,6 +167,26 @@ conf_value_changed_cb (GamesConf *conf,
 }
 
 static void
+conf_value_changed_cb (GamesConf *conf,
+                       const char *group,
+                       const char *key,
+                       GamesControlsList *list)
+{
+  if ((group == NULL && list->priv->conf_group != NULL) ||
+      (group != NULL && (list->priv->conf_group == NULL ||
+                         strcmp (group, list->priv->conf_group) != 0)))
+    return;
+
+  value_changed (list, key);
+}
+
+static void
+settings_changed_cb (GSettings *settings, const gchar *key, GamesControlsList *list)
+{
+  value_changed (list, key);
+}
+
+static void
 games_controls_list_init (GamesControlsList *list)
 {
   list->priv = G_TYPE_INSTANCE_GET_PRIVATE (list, GAMES_TYPE_CONTROLS_LIST, GamesControlsListPrivate);
@@ -232,11 +254,6 @@ games_controls_list_constructor (GType type,
 
   gtk_container_add (GTK_CONTAINER (scrolled_window), list->priv->view);
 
-  list->priv->notify_handler_id = g_signal_connect (games_conf_get_default (),
-                                              "value-changed",
-                                              G_CALLBACK (conf_value_changed_cb),
-                                              list);
-
   return object;
 }
 
@@ -245,9 +262,14 @@ games_controls_list_finalize (GObject *object)
 {
   GamesControlsList *list = GAMES_CONTROLS_LIST (object);
 
-  g_signal_handler_disconnect (games_conf_get_default (), list->priv->notify_handler_id);
+  if (list->priv->settings)
+    g_signal_handler_disconnect (list->priv->settings, list->priv->notify_handler_id);
+  else
+    g_signal_handler_disconnect (games_conf_get_default (), list->priv->notify_handler_id);
 
   g_free (list->priv->conf_group);
+  if (list->priv->settings)
+      g_object_unref (list->priv->settings);
 
   G_OBJECT_CLASS (games_controls_list_parent_class)->finalize (object);
 }
@@ -277,6 +299,30 @@ games_controls_list_new (const char *conf_group)
                        NULL);
 
   list->priv->conf_group = g_strdup (conf_group);
+  list->priv->notify_handler_id = g_signal_connect (games_conf_get_default (),
+                                                    "value-changed",
+                                                    G_CALLBACK (conf_value_changed_cb),
+                                                    list);
+
+  return GTK_WIDGET (list);
+}
+
+GtkWidget *
+games_controls_list_new_settings (GSettings *settings)
+{
+  GamesControlsList *list;
+
+  list = g_object_new (GAMES_TYPE_CONTROLS_LIST,
+                       "hscrollbar-policy", GTK_POLICY_NEVER,
+                       "vscrollbar-policy", GTK_POLICY_AUTOMATIC,
+                       "shadow-type", GTK_SHADOW_IN,
+                       NULL);
+
+  list->priv->settings = g_object_ref (settings);
+  list->priv->notify_handler_id = g_signal_connect (list->priv->settings,
+                                                    "changed",
+                                                    G_CALLBACK (settings_changed_cb),
+                                                    list);
 
   return GTK_WIDGET (list);
 }
@@ -296,7 +342,10 @@ games_controls_list_add_control (GamesControlsList *list,
   if (!label)
     label = _("Unknown Command");
 
-  keyval = games_conf_get_keyval_with_default (list->priv->conf_group, conf_key, default_keyval);
+  if (list->priv->settings)
+    keyval = g_settings_get_int (list->priv->settings, conf_key);
+  else
+    keyval = games_conf_get_keyval_with_default (list->priv->conf_group, conf_key, default_keyval);
 
   gtk_list_store_insert_with_values (list->priv->store, &iter, -1,
                                      CONFKEY_COLUMN, conf_key,
diff --git a/libgames-support/games-controls.h b/libgames-support/games-controls.h
index 5d641e2..3fd4644 100644
--- a/libgames-support/games-controls.h
+++ b/libgames-support/games-controls.h
@@ -33,6 +33,7 @@ typedef struct {
 
 GType      games_controls_list_get_type     (void);
 GtkWidget *games_controls_list_new          (const char *conf_group);
+GtkWidget *games_controls_list_new_settings (GSettings *settings);
 void       games_controls_list_add_control  (GamesControlsList *list,
                                              const char *conf_key,
                                              const char *label,
diff --git a/quadrapassel/data/Makefile.am b/quadrapassel/data/Makefile.am
index 2b51050..6f1a4be 100644
--- a/quadrapassel/data/Makefile.am
+++ b/quadrapassel/data/Makefile.am
@@ -1,5 +1,10 @@
 SUBDIRS = icons
 
+gsettings_in_file = org.gnome.quadrapassel.gschema.xml.in
+gsettings_SCHEMAS = $(gsettings_in_file:.xml.in=.xml)
+ INTLTOOL_XML_NOMERGE_RULE@
+ GSETTINGS_RULES@
+
 pixmapdir = $(datadir)/quadrapassel/pixmaps
 pixmap_DATA = \
 	quadrapassel.svg \
@@ -11,26 +16,14 @@ desktop_in_files = quadrapassel.desktop.in.in
 desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop)
 @INTLTOOL_DESKTOP_RULE@
 
-schema_in_files = quadrapassel.schemas.in
-if HAVE_GNOME
-schemadir = $(GCONF_SCHEMA_FILE_DIR)
-schema_DATA = $(schema_in_files:.schemas.in=.schemas)
-endif
- INTLTOOL_SCHEMAS_RULE@
-
 man_MANS = quadrapassel.6
 
 EXTRA_DIST = \
+	$(gsettings_in_file) \
 	$(pixmap_DATA) \
 	$(desktop_in_files) \
-	$(schema_in_files) \
 	$(man_MANS)
 
-install-data-local:
-if GCONF_SCHEMAS_INSTALL
-	GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/quadrapassel/data/$(schema_DATA)
-endif
-
-DISTCLEANFILES = $(desktop_DATA) $(schema_DATA)
+DISTCLEANFILES = $(desktop_DATA) $(gsettings_SCHEMAS)
 
 -include $(top_srcdir)/git.mk
diff --git a/quadrapassel/data/org.gnome.quadrapassel.gschema.xml.in b/quadrapassel/data/org.gnome.quadrapassel.gschema.xml.in
new file mode 100644
index 0000000..80adf4d
--- /dev/null
+++ b/quadrapassel/data/org.gnome.quadrapassel.gschema.xml.in
@@ -0,0 +1,99 @@
+<schemalist>
+  <schema id="org.gnome.quadrapassel" path="/org/gnome/quadrapassel/">
+    <key name="block-pixmap" type="s">
+      <default>'7blocks-gw.png'</default>
+      <_summary>Image to use for drawing blocks</_summary>
+      <_description>Image to use for drawing blocks.</_description>
+    </key>
+    <key name="theme" type="s">
+      <default>'tangoshaded'</default>
+      <_summary>The theme used for rendering the blocks</_summary>
+      <_description>The name of the theme used for rendering the blocks and the background.</_description>
+    </key>
+    <key name="starting-level" type="i">
+      <default>1</default>
+      <_summary>Level to start with</_summary>
+      <_description>Level to start with.</_description>
+    </key>
+    <key name="use-bg-image" type="b">
+      <default>true</default>
+      <_summary>Whether to use the background image</_summary>
+      <_description>This selects whether or not to draw the background image over the background color.</_description>
+    </key>
+    <key name="bg-color" type="s">
+      <default>'Black'</default>
+      <_summary>The background color</_summary>
+      <_description>The background color, in a format gdk_color_parse understands.</_description>
+    </key>
+    <key name="do-preview" type="b">
+      <default>true</default>
+      <_summary>Whether to preview the next block</_summary>
+      <_description>Whether to preview the next block.</_description>
+    </key>
+    <key name="use-target" type="b">
+      <default>false</default>
+      <_summary>Whether to provide a target</_summary>
+      <_description>Whether to provide a graphical representation of where a block will land.</_description>
+    </key>
+    <key name="random-block-colors" type="b">
+      <default>false</default>
+      <_summary>Whether to give blocks random colors</_summary>
+      <_description>Whether to give blocks random colors.</_description>
+    </key>
+    <key name="rotate-counter-clock-wise" type="b">
+      <default>true</default>
+      <_summary>Whether to rotate counter clock wise</_summary>
+      <_description>Whether to rotate counter clock wise.</_description>
+    </key>
+    <key name="line-fill-height" type="i">
+      <default>0</default>
+      <_summary>The number of rows to fill</_summary>
+      <_description>The number of rows that are filled with random blocks at the start of the game.</_description>
+    </key>
+    <key name="line-fill-probability" type="i">
+      <default>5</default>
+      <_summary>The density of filled rows</_summary>
+      <_description>The density of blocks in rows filled at the start of the game. The value is between 0 (for no blocks) and 10 (for a completely filled row).</_description>
+    </key>
+    <key name="sound" type="b">
+      <default>true</default>
+      <_summary>Whether to play sounds</_summary>
+      <_description>Whether to play sounds.</_description>
+    </key>
+    <key name="pick-difficult-blocks" type="b">
+      <default>true</default>
+      <_summary>Whether to pick blocks that are hard to place</_summary>
+      <_description>Whether to pick blocks that are hard to place.</_description>
+    </key>
+    <key name="key-left" type="i">
+      <default>65361</default>
+      <_summary>Move left</_summary>
+      <_description>Key press to move left.</_description>
+    </key>
+    <key name="key-right" type="i">
+      <default>65363</default>
+      <_summary>Move right</_summary>
+      <_description>Key press to move right.</_description>
+    </key>
+    <key name="key-down" type="i">
+      <default>65364</default>
+      <_summary>Move down</_summary>
+      <_description>Key press to move down.</_description>
+    </key>
+    <key name="key-drop" type="i">
+      <default>32</default>
+      <_summary>Drop</_summary>
+      <_description>Key press to drop.</_description>
+    </key>
+    <key name="key-rotate" type="i">
+      <default>65362</default>
+      <_summary>Rotate</_summary>
+      <_description>Key press to rotate.</_description>
+    </key>
+    <key name="key-pause" type="i">
+      <default>65299</default>
+      <_summary>Pause</_summary>
+      <_description>Key press to pause.</_description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/quadrapassel/src/main.cpp b/quadrapassel/src/main.cpp
index f9f4939..52dbcbc 100644
--- a/quadrapassel/src/main.cpp
+++ b/quadrapassel/src/main.cpp
@@ -22,7 +22,6 @@
 #include <config.h>
 
 #include <libgames-support/games-scores.h>
-#include <libgames-support/games-conf.h>
 #include <clutter-gtk/clutter-gtk.h>
 
 #include "tetris.h"
@@ -63,8 +62,6 @@ main(int argc, char *argv[])
 
 	gtk_window_set_default_icon_name ("quadrapassel");
 
-	games_conf_initialise ("Quadrapassel");
-
 	if (gtk_clutter_init_with_args (NULL, NULL, NULL, NULL, NULL, &error) != CLUTTER_INIT_SUCCESS || error) {
 		GtkWidget *dialog = gtk_message_dialog_new (NULL,
 						GTK_DIALOG_MODAL,
@@ -84,7 +81,5 @@ main(int argc, char *argv[])
 
 	delete t;
 
-	games_conf_shutdown ();
-
 	return 0;
 }
diff --git a/quadrapassel/src/scoreframe.cpp b/quadrapassel/src/scoreframe.cpp
index 779f6f6..d570fd7 100644
--- a/quadrapassel/src/scoreframe.cpp
+++ b/quadrapassel/src/scoreframe.cpp
@@ -31,13 +31,7 @@
 ScoreFrame::ScoreFrame(int cmdlLevel)
 	: score(0), lines(0)
 {
-	if (cmdlLevel)
-		startingLevel = cmdlLevel;
-	else {
-		startingLevel = games_conf_get_integer (KEY_OPTIONS_GROUP,
-							KEY_STARTING_LEVEL,
-							NULL);
-	}
+	startingLevel = cmdlLevel;
 	startingLevel = CLAMP (startingLevel, 1, 20);
 
 	level = startingLevel;
diff --git a/quadrapassel/src/tetris.cpp b/quadrapassel/src/tetris.cpp
index c8aa14c..63bce52 100644
--- a/quadrapassel/src/tetris.cpp
+++ b/quadrapassel/src/tetris.cpp
@@ -150,6 +150,8 @@ Tetris::Tetris(int cmdlLevel):
 		default_bgimage = true;
 	}
 
+	settings = g_settings_new ("org.gnome.quadrapassel");
+
 	w = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 	gtk_window_set_title (GTK_WINDOW (w), _("Quadrapassel"));
 
@@ -166,7 +168,7 @@ Tetris::Tetris(int cmdlLevel):
 	line_fill_prob = 5;
 
 	gtk_window_set_default_size (GTK_WINDOW (w), DEFAULT_WIDTH, DEFAULT_HEIGHT);
-	games_conf_add_window (GTK_WINDOW (w), KEY_SAVED_GROUP);
+	//games_conf_add_window (GTK_WINDOW (w), KEY_SAVED_GROUP);
 
 	preview = new Preview ();
 	field = new BlockOps ();
@@ -224,6 +226,8 @@ Tetris::Tetris(int cmdlLevel):
 
 	gtk_box_pack_start(GTK_BOX(vb2), preview->getWidget(), FALSE, FALSE, 0);
 
+	if (cmdlineLevel <= 0)
+        cmdlineLevel = g_settings_get_int (settings, "starting-level");
 	scoreFrame = new ScoreFrame(cmdlineLevel);
 
 	gtk_box_pack_end(GTK_BOX(vb2), scoreFrame->getWidget(), TRUE, FALSE, 0);
@@ -239,8 +243,8 @@ Tetris::Tetris(int cmdlLevel):
 	gtk_action_set_sensitive(end_game_action, FALSE);
 	gtk_action_set_sensitive(preferences_action, TRUE);
 
-	confNotifyID = g_signal_connect (games_conf_get_default (),
-					 "value-changed",
+	confNotifyID = g_signal_connect (settings,
+					 "changed",
 					 G_CALLBACK (confNotify),
 					 this);
 }
@@ -261,7 +265,7 @@ Tetris::~Tetris()
 		g_free(defaultPixmap);
 
 	if (confNotifyID != 0)
-		g_signal_handler_disconnect (games_conf_get_default (), confNotifyID);
+		g_signal_handler_disconnect (settings, confNotifyID);
 }
 
 void
@@ -358,97 +362,67 @@ Tetris::setupPixmap()
 }
 
 void
-Tetris::confNotify (GamesConf *conf, const char *group, const char *key, gpointer data)
+Tetris::confNotify (GSettings *settings, const char *key, gpointer data)
 {
-	if (!group)
-		return;
-
 	Tetris *t = (Tetris *) data;
 
 	t->initOptions ();
 	t->setOptions ();
 }
 
-char *
-Tetris::confGetString (const char *group, const char *key, const char *default_val)
-{
-	return games_conf_get_string_with_default (group, key, default_val);
-}
-
-int
-Tetris::confGetInt (const char *group, const char *key, int default_val)
-{
-	return games_conf_get_integer_with_default (group, key, default_val);
-}
-
-gboolean
-Tetris::confGetBoolean (const char *group, const char *key, gboolean default_val)
-{
-	gboolean val;
-	GError *error = NULL;
-
-	val = games_conf_get_boolean (group, key, &error);
-	if (error) {
-		g_error_free (error);
-		val = default_val;
-	}
-
-	return val;
-}
-
 void
 Tetris::initOptions ()
 {
 	gchar *bgcolourstr;
 
-	themeno = themeNameToNumber (confGetString (KEY_OPTIONS_GROUP, KEY_THEME, "plain"));
+	themeno = themeNameToNumber (g_settings_get_string (settings, "theme"));
 	field->setTheme (themeno);
 	preview->setTheme (themeno);
 
-	startingLevel = confGetInt (KEY_OPTIONS_GROUP, KEY_STARTING_LEVEL, 1);
+	startingLevel = g_settings_get_int (settings, "starting-level");
 	if (startingLevel < 1)
 		startingLevel = 1;
 	if (startingLevel > 20)
 		startingLevel = 20;
 
-	sound_enable (confGetBoolean (KEY_OPTIONS_GROUP, KEY_SOUND, TRUE));
+	sound_enable (g_settings_get_boolean (settings, "sound"));
 
-	do_preview = confGetBoolean (KEY_OPTIONS_GROUP, KEY_DO_PREVIEW, TRUE);
+	do_preview = g_settings_get_boolean (settings, "do-preview");
 
 	if (preview) {
 		preview->enable(do_preview);
 	}
 
-	random_block_colors = confGetBoolean (KEY_OPTIONS_GROUP, KEY_RANDOM_BLOCK_COLORS, TRUE);
+	random_block_colors = g_settings_get_boolean (settings, "random-block-colors");
 
-	bastard_mode = confGetBoolean (KEY_OPTIONS_GROUP, KEY_BASTARD_MODE, FALSE);
+	bastard_mode = g_settings_get_boolean (settings, "pick-difficult-blocks");
 
-	rotateCounterClockWise = confGetBoolean (KEY_OPTIONS_GROUP, KEY_ROTATE_COUNTER_CLOCKWISE, TRUE);
+	rotateCounterClockWise = g_settings_get_boolean (settings, "rotate-counter-clock-wise");
 
-	line_fill_height = confGetInt (KEY_OPTIONS_GROUP, KEY_LINE_FILL_HEIGHT, 0);
+	line_fill_height = g_settings_get_int (settings, "line-fill-height");
 	if (line_fill_height < 0)
 		line_fill_height = 0;
 	if (line_fill_height > 19)
 		line_fill_height = 19;
 
-	line_fill_prob = confGetInt (KEY_OPTIONS_GROUP, KEY_LINE_FILL_PROBABILITY, 0);
+	line_fill_prob = g_settings_get_int (settings, "line-fill-probability");
 	if (line_fill_prob < 0)
 		line_fill_prob = 0;
 	if (line_fill_prob > 10)
 		line_fill_prob = 10;
 
-	moveLeft = games_conf_get_keyval_with_default (KEY_CONTROLS_GROUP, KEY_MOVE_LEFT, GDK_KEY_Left);
-	moveRight = games_conf_get_keyval_with_default (KEY_CONTROLS_GROUP, KEY_MOVE_RIGHT, GDK_KEY_Right);
-	moveDown = games_conf_get_keyval_with_default (KEY_CONTROLS_GROUP, KEY_MOVE_DOWN, GDK_KEY_Down);
-	moveDrop = games_conf_get_keyval_with_default (KEY_CONTROLS_GROUP, KEY_MOVE_DROP, GDK_KEY_Pause);
-	moveRotate = games_conf_get_keyval_with_default (KEY_CONTROLS_GROUP, KEY_MOVE_ROTATE, GDK_KEY_Up);
-	movePause = games_conf_get_keyval_with_default (KEY_CONTROLS_GROUP, KEY_MOVE_PAUSE, GDK_KEY_space);
+	moveLeft = g_settings_get_int (settings, "key-left");
+	moveRight = g_settings_get_int (settings, "key-right");
+	moveDown = g_settings_get_int (settings, "key-down");
+	moveDrop = g_settings_get_int (settings, "key-drop");
+	moveRotate = g_settings_get_int (settings, "key-rotate");
+	movePause = g_settings_get_int (settings, "key-pause");
 
-	bgcolourstr = confGetString (KEY_OPTIONS_GROUP, KEY_BG_COLOUR, "Black");
+	bgcolourstr = g_settings_get_string (settings, "bg-color");
 	gdk_color_parse (bgcolourstr, &bgcolour);
 	g_free (bgcolourstr);
 
-	usebg = confGetBoolean (KEY_OPTIONS_GROUP, KEY_USE_BG_IMAGE, TRUE);
+	usebg = g_settings_get_boolean (settings, "use-bg-image");
 }
 
 void
@@ -477,33 +451,32 @@ Tetris::setOptions ()
 void
 Tetris::setSound (GtkWidget *widget, gpointer data)
 {
-	games_conf_set_boolean (KEY_OPTIONS_GROUP, KEY_SOUND,
-				gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
+	Tetris *t = (Tetris *) data;
+	g_settings_set_boolean (t->settings, "sound", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
 }
 
 void
 Tetris::setSelectionPreview(GtkWidget *widget, void *d)
 {
-	games_conf_set_boolean (KEY_OPTIONS_GROUP, KEY_DO_PREVIEW,
-				gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
+	Tetris *t = (Tetris *) d;  
+	g_settings_set_boolean (t->settings, "do-preview", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
 }
 
 void
 Tetris::setSelectionBlocks(GtkWidget *widget, void *d)
 {
-	games_conf_set_boolean (KEY_OPTIONS_GROUP, KEY_RANDOM_BLOCK_COLORS,
-				gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
+	Tetris *t = (Tetris *) d;
+	g_settings_set_boolean (t->settings, "random-block-colors", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
 }
 
 void
 Tetris::setBastardMode(GtkWidget *widget, void *d)
 {
-	games_conf_set_boolean (KEY_OPTIONS_GROUP, KEY_BASTARD_MODE,
-				gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
+	Tetris *t = (Tetris *) d;
+	g_settings_set_boolean (t->settings, "pick-difficult-blocks", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
 
 	/* Disable the preview option to indicate that it is
 		unavailable in bastard mode */
-	Tetris *t = (Tetris*) d;
 	gtk_widget_set_sensitive(t->do_preview_toggle,
 		gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) ? FALSE : TRUE);
 }
@@ -511,8 +484,8 @@ Tetris::setBastardMode(GtkWidget *widget, void *d)
 void
 Tetris::setRotateCounterClockWise(GtkWidget *widget, void *d)
 {
-	games_conf_set_boolean (KEY_OPTIONS_GROUP, KEY_ROTATE_COUNTER_CLOCKWISE,
-				gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
+	Tetris *t = (Tetris *) d;
+	g_settings_set_boolean (t->settings, "rotate-counter-clock-wise", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
 }
 
 void
@@ -523,29 +496,31 @@ Tetris::setSelection(GtkWidget *widget, void *data)
 
 	t->themeno = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
 	t->field->setTheme (t->themeno);
-	games_conf_set_string (KEY_OPTIONS_GROUP, KEY_THEME,
-			       ThemeTable[t->themeno].id);
+	g_settings_set_string (t->settings, "theme", ThemeTable[t->themeno].id);
 }
 
 void
 Tetris::lineFillHeightChanged (GtkWidget *spin, gpointer data)
 {
+	Tetris *t = (Tetris *) data;
 	gint value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin));
-	games_conf_set_integer (KEY_OPTIONS_GROUP, KEY_LINE_FILL_HEIGHT, value);
+	g_settings_set_int (t->settings, "line-fill-height", value);
 }
 
 void
 Tetris::lineFillProbChanged (GtkWidget *spin, gpointer data)
 {
+	Tetris *t = (Tetris *) data;
 	gint value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin));
-	games_conf_set_integer (KEY_OPTIONS_GROUP, KEY_LINE_FILL_PROBABILITY, value);
+	g_settings_set_int (t->settings, "line-fill-probability", value);
 }
 
 void
 Tetris::startingLevelChanged (GtkWidget *spin, gpointer data)
 {
+	Tetris *t = (Tetris *) data;
 	gint value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (spin));
-	games_conf_set_integer (KEY_OPTIONS_GROUP, KEY_STARTING_LEVEL, value);
+	g_settings_set_int (t->settings, "starting-level", value);
 }
 
 int
@@ -736,14 +711,14 @@ Tetris::gameProperties(GtkAction *action, void *d)
 	fvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
 	gtk_container_add (GTK_CONTAINER (frame), fvbox);
 
-	controls_list = games_controls_list_new (KEY_CONTROLS_GROUP);
+	controls_list = games_controls_list_new_settings (t->settings);
 	games_controls_list_add_controls (GAMES_CONTROLS_LIST (controls_list),
-					  KEY_MOVE_LEFT, _("Move left"), GDK_KEY_Left,
-					  KEY_MOVE_RIGHT, _("Move right"), GDK_KEY_Right,
-					  KEY_MOVE_DOWN, _("Move down"), GDK_KEY_Down,
-					  KEY_MOVE_DROP, _("Drop"), GDK_KEY_Pause,
-					  KEY_MOVE_ROTATE, _("Rotate"), GDK_KEY_Up,
-					  KEY_MOVE_PAUSE, _("Pause"), GDK_KEY_space,
+					  "key-left", _("Move left"), GDK_KEY_Left,
+					  "key-right", _("Move right"), GDK_KEY_Right,
+					  "key-down", _("Move down"), GDK_KEY_Down,
+					  "key-drop", _("Drop"), GDK_KEY_space,
+					  "key-rotate", _("Rotate"), GDK_KEY_Up,
+					  "key-pause", _("Pause"), GDK_KEY_Pause,
 					  NULL);
 
 	gtk_box_pack_start (GTK_BOX (fvbox), controls_list, TRUE, TRUE, 0);
@@ -976,11 +951,11 @@ void Tetris::saveBgOptions ()
 {
 	gchar cbuffer[64];
 
-	games_conf_set_boolean (KEY_OPTIONS_GROUP, KEY_USE_BG_IMAGE, usebg);
+	g_settings_set_boolean (settings, "use-bg-image", usebg);
 
 	g_snprintf (cbuffer, sizeof (cbuffer), "#%04x%04x%04x",
 		    bgcolour.red, bgcolour.green, bgcolour.blue);
-	games_conf_set_string (KEY_OPTIONS_GROUP, KEY_BG_COLOUR, cbuffer);
+	g_settings_set_string (settings, "bg-color", cbuffer);
 }
 
 void
diff --git a/quadrapassel/src/tetris.h b/quadrapassel/src/tetris.h
index 399d1ac..5cf5350 100644
--- a/quadrapassel/src/tetris.h
+++ b/quadrapassel/src/tetris.h
@@ -28,33 +28,6 @@
 #include <gtk/gtk.h>
 //#include <gdk-pixbuf/gdk-pixbuf.h>
 
-#include <libgames-support/games-conf.h>
-
-#define KEY_OPTIONS_GROUP             "options"
-#define KEY_BG_COLOUR                 "bgcolor"
-#define KEY_BLOCK_PIXMAP              "block_pixmap"
-#define KEY_DO_PREVIEW                "do_preview"
-#define KEY_LINE_FILL_HEIGHT          "line_fill_height"
-#define KEY_LINE_FILL_PROBABILITY     "line_fill_probability"
-#define KEY_BASTARD_MODE              "bastard_mode"
-#define KEY_RANDOM_BLOCK_COLORS       "random_block_colors"
-#define KEY_ROTATE_COUNTER_CLOCKWISE  "rotate_counter_clock_wise"
-#define KEY_SOUND                     "sound"
-#define KEY_STARTING_LEVEL            "starting_level"
-#define KEY_THEME                     "theme"
-#define KEY_USE_BG_IMAGE              "usebgimage"
-#define KEY_USE_TARGET                "use_target"
-
-#define KEY_CONTROLS_GROUP  "controls"
-#define KEY_MOVE_DOWN       "key_down"
-#define KEY_MOVE_DROP       "key_drop"
-#define KEY_MOVE_LEFT       "key_left"
-#define KEY_MOVE_PAUSE      "key_pause"
-#define KEY_MOVE_RIGHT      "key_right"
-#define KEY_MOVE_ROTATE     "key_rotate"
-
-#define KEY_SAVED_GROUP     "saved"
-
 extern int LINES;
 extern int COLUMNS;
 
@@ -87,6 +60,7 @@ public:
 	void setupPixmap ();
 
 private:
+    GSettings *settings;
 	GtkWidget * w;
 
 	GList *themeList;
@@ -150,14 +124,7 @@ private:
 	static void lineFillProbChanged (GtkWidget * spin, gpointer data);
 	static void startingLevelChanged (GtkWidget * spin, gpointer data);
 
-	static void confNotify (GamesConf *conf, const char *group,
-				const char *key, gpointer data);
-	static gchar *confGetString (const char *group, const char *key,
-				     const char *default_val);
-	static int confGetInt (const char *group, const char *key,
-			       int default_val);
-	static gboolean confGetBoolean (const char *group, const char *key,
-					gboolean default_val);
+	static void confNotify (GSettings *setting, const char *key, gpointer data);
 	void initOptions ();
 	void setOptions ();
 	void writeOptions ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]