[totem/gsettings: 12/20] Use GSettings binding for the preferences



commit faa38781de89a0dc6c7201a2540b903f336dd069
Author: Philip Withnall <philip tecnocode co uk>
Date:   Wed Aug 18 00:27:11 2010 +0100

    Use GSettings binding for the preferences

 browser-plugin/Makefile.am |    1 -
 data/totem.ui              |    7 --
 lib/Makefile.am            |    1 -
 src/Makefile.am            |    1 -
 src/backend/Makefile.am    |    1 -
 src/totem-preferences.c    |  209 ++++----------------------------------------
 6 files changed, 18 insertions(+), 202 deletions(-)
---
diff --git a/browser-plugin/Makefile.am b/browser-plugin/Makefile.am
index 8df065f..ee1ff21 100644
--- a/browser-plugin/Makefile.am
+++ b/browser-plugin/Makefile.am
@@ -89,7 +89,6 @@ totem_plugin_viewer_CPPFLAGS = \
 	-I$(top_builddir)/src				\
 	-I$(top_builddir)/src/backend			\
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\""	\
-	-DGCONF_PREFIX="\"/apps/totem\""		\
 	-DDATADIR="\"$(datadir)\""			\
 	-DLIBEXECDIR="\"$(libexecdir)\""		\
 	-DSHAREDIR="\"$(pkgdatadir)\""			\
diff --git a/data/totem.ui b/data/totem.ui
index a697bb8..0284640 100644
--- a/data/totem.ui
+++ b/data/totem.ui
@@ -789,7 +789,6 @@
 			      <property name="active">False</property>
 			      <property name="inconsistent">False</property>
 			      <property name="draw_indicator">True</property>
-			      <signal name="toggled" handler="remember_position_checkbutton_toggled_cb" />
 		        </object>
 		      </child>
 		    </object>
@@ -890,7 +889,6 @@
 			      <property name="model">tpw_speed_liststore</property>
 			      <property name="add_tearoffs">False</property>
 			      <property name="focus_on_click">True</property>
-			      <signal name="changed" handler="connection_combobox_changed"/>
 			      <child>
 			        <object class="GtkCellRendererText" id="tpw_speed_cell"/>
 			        <attributes>
@@ -988,7 +986,6 @@
 			      <property name="active">False</property>
 			      <property name="inconsistent">False</property>
 			      <property name="draw_indicator">True</property>
-			      <signal name="toggled" handler="checkbutton3_toggled_cb"/>
 		            </object>
 			    <packing>
 			      <property name="left_attach">0</property>
@@ -1178,7 +1175,6 @@
 			      <property name="active">False</property>
 			      <property name="inconsistent">False</property>
 			      <property name="draw_indicator">True</property>
-			      <signal name="toggled" handler="auto_chapters_toggled_cb"/>
 		            </object>
 			    <packing>
 			      <property name="left_attach">0</property>
@@ -1299,7 +1295,6 @@
 			  <property name="active">False</property>
 			  <property name="inconsistent">False</property>
 			  <property name="draw_indicator">True</property>
-			  <signal name="toggled" handler="checkbutton1_toggled_cb"/>
 			</object>
 		      </child>
 		    </object>
@@ -1322,7 +1317,6 @@
 						  <property name="use_action_appearance">False</property>
 						  <property name="use_underline">True</property>
 						  <property name="draw_indicator">True</property>
-						  <signal name="toggled" handler="no_deinterlace_toggled_cb"/>
 					  </object>
 				  </child>
 			  </object>
@@ -1543,7 +1537,6 @@
 				  <property name="model">tpw_visuals_size_liststore</property>
 				  <property name="add_tearoffs">False</property>
 				  <property name="focus_on_click">True</property>
-				  <signal name="changed" handler="visual_quality_menu_changed"/>
 				  <child>
 				    <object class="GtkCellRendererText" id="tpw_visuals_size_cell"/>
 				    <attributes>
diff --git a/lib/Makefile.am b/lib/Makefile.am
index f0daa7b..b659b91 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -5,7 +5,6 @@ common_defines = \
 	-D_REENTRANT					\
 	-DDBUS_API_SUBJECT_TO_CHANGE			\
 	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"	\
-	-DGCONF_PREFIX=\""/apps/totem"\"		\
 	-DDATADIR=\""$(datadir)"\"			\
 	-DLIBEXECDIR=\""$(libexecdir)"\"		\
 	-DBINDIR=\""$(bindir)"\"			\
diff --git a/src/Makefile.am b/src/Makefile.am
index ec8cf62..7d174df 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -9,7 +9,6 @@ common_defines = \
 	-D_REENTRANT					\
 	-DDBUS_API_SUBJECT_TO_CHANGE			\
 	-DGNOMELOCALEDIR=\""$(datadir)/locale"\"	\
-	-DGCONF_PREFIX=\""/apps/totem"\"		\
 	-DDATADIR=\""$(datadir)"\"			\
 	-DLIBEXECDIR=\""$(libexecdir)"\"		\
 	-DTOTEM_PLUGIN_DIR=\""$(libdir)/totem/plugins"\"\
diff --git a/src/backend/Makefile.am b/src/backend/Makefile.am
index 79099a9..d1fffb9 100644
--- a/src/backend/Makefile.am
+++ b/src/backend/Makefile.am
@@ -63,7 +63,6 @@ libbaconvideowidget_la_SOURCES = \
 
 libbaconvideowidget_la_CPPFLAGS =		\
 	-D_REENTRANT				\
-	-DGCONF_PREFIX=\""/apps/totem"\"	\
 	$(DISABLE_DEPRECATED)			\
 	$(AM_CPPFLAGS)
 
diff --git a/src/totem-preferences.c b/src/totem-preferences.c
index c4aa6f7..667f9d4 100644
--- a/src/totem-preferences.c
+++ b/src/totem-preferences.c
@@ -44,15 +44,9 @@
 #include "totem-plugins-engine.h"
 
 /* Callback functions for GtkBuilder */
-G_MODULE_EXPORT void checkbutton1_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
 G_MODULE_EXPORT void checkbutton2_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
-G_MODULE_EXPORT void checkbutton3_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
 G_MODULE_EXPORT void audio_screensaver_button_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
-G_MODULE_EXPORT void no_deinterlace_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
-G_MODULE_EXPORT void remember_position_checkbutton_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
-G_MODULE_EXPORT void connection_combobox_changed (GtkComboBox *combobox, Totem *totem);
 G_MODULE_EXPORT void visual_menu_changed (GtkComboBox *combobox, Totem *totem);
-G_MODULE_EXPORT void visual_quality_menu_changed (GtkComboBox *combobox, Totem *totem);
 G_MODULE_EXPORT void brightness_changed (GtkRange *range, Totem *totem);
 G_MODULE_EXPORT void contrast_changed (GtkRange *range, Totem *totem);
 G_MODULE_EXPORT void saturation_changed (GtkRange *range, Totem *totem);
@@ -61,7 +55,6 @@ G_MODULE_EXPORT void tpw_color_reset_clicked_cb (GtkButton *button, Totem *totem
 G_MODULE_EXPORT void audio_out_menu_changed (GtkComboBox *combobox, Totem *totem);
 G_MODULE_EXPORT void font_set_cb (GtkFontButton * fb, Totem * totem);
 G_MODULE_EXPORT void encoding_set_cb (GtkComboBox *cb, Totem *totem);
-G_MODULE_EXPORT void auto_chapters_toggled_cb (GtkToggleButton *togglebutton, Totem *totem);
 
 static void
 totem_action_info (char *reason, Totem *totem)
@@ -116,17 +109,6 @@ ask_show_visuals (Totem *totem)
 	return (answer == GTK_RESPONSE_YES ? TRUE : FALSE);
 }
 
-void
-checkbutton1_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
-{
-	gboolean value;
-
-	value = gtk_toggle_button_get_active (togglebutton);
-	g_settings_set_boolean (totem->settings, "auto-resize", value);
-	bacon_video_widget_set_auto_resize
-		(BACON_VIDEO_WIDGET (totem->bvw), value);
-}
-
 static void
 totem_prefs_set_show_visuals (Totem *totem, gboolean value)
 {
@@ -170,16 +152,6 @@ checkbutton2_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
 }
 
 void
-checkbutton3_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
-{
-	gboolean value;
-
-	value = gtk_toggle_button_get_active (togglebutton);
-	g_settings_set_boolean (totem->settings, "autoload-subtitles", value);
-	totem->autoload_subs = value;
-}
-
-void
 audio_screensaver_button_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
 {
 	gboolean value;
@@ -188,78 +160,6 @@ audio_screensaver_button_toggled_cb (GtkToggleButton *togglebutton, Totem *totem
 	g_settings_set_boolean (totem->settings, "lock-screensaver-on-audio", value);
 }
 
-void
-no_deinterlace_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
-{
-	gboolean value;
-
-	value = gtk_toggle_button_get_active (togglebutton);
-
-	bacon_video_widget_set_deinterlacing (totem->bvw, !value);
-	g_settings_set_boolean (totem->settings, "disable-deinterlacing", value);
-}
-
-static void
-no_deinterlace_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem)
-{
-	GObject *button;
-	gboolean value;
-
-	button = gtk_builder_get_object (totem->xml, "tpw_no_deinterlace_checkbutton");
-
-	g_signal_handlers_block_matched (button,
-					 G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, totem);
-
-	value = g_settings_get_boolean (totem->settings, "disable-deinterlacing");
-
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), value);
-	bacon_video_widget_set_deinterlacing (totem->bvw, !value);
-
-	g_signal_handlers_unblock_matched (button,
-					   G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, totem);
-}
-
-void
-remember_position_checkbutton_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
-{
-	gboolean value;
-
-	value = gtk_toggle_button_get_active (togglebutton);
-
-	g_settings_set_boolean (totem->settings, "remember-position", value);
-	totem->remember_position = value;
-}
-
-static void
-remember_position_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem)
-{
-	GObject *item;
-
-	item = gtk_builder_get_object (totem->xml, "tpw_remember_position_checkbutton");
-	g_signal_handlers_block_by_func (item, remember_position_checkbutton_toggled_cb,
-					 totem);
-
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), g_settings_get_boolean (settings, "remember-position"));
-
-	g_signal_handlers_unblock_by_func (item, remember_position_checkbutton_toggled_cb,
-					   totem);
-}
-
-static void
-auto_resize_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem)
-{
-	GObject *item;
-
-	item = gtk_builder_get_object (totem->xml, "tpw_display_checkbutton");
-	g_signal_handlers_disconnect_by_func (item,
-			checkbutton1_toggled_cb, totem);
-
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), g_settings_get_boolean (settings, "auto-resize"));
-
-	g_signal_connect (item, "toggled",
-			G_CALLBACK (checkbutton1_toggled_cb), totem);
-}
-
 static void
 show_vfx_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem)
 {
@@ -303,46 +203,6 @@ lock_screensaver_on_audio_changed_cb (GSettings *settings, const gchar *key, Tot
 			  G_CALLBACK (audio_screensaver_button_toggled_cb), totem);
 }
 
-static void
-autoload_subtitles_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem)
-{
-	GObject *item;
-
-	item = gtk_builder_get_object (totem->xml, "tpw_auto_subtitles_checkbutton");
-	g_signal_handlers_disconnect_by_func (item,
-			checkbutton3_toggled_cb, totem);
-
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), g_settings_get_boolean (totem->settings, "autoload-subtitles"));
-
-	g_signal_connect (item, "toggled",
-			G_CALLBACK (checkbutton3_toggled_cb), totem);
-}
-
-static void
-autoload_chapters_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem)
-{
-	GObject *item;
-
-	item = gtk_builder_get_object (totem->xml, "tpw_auto_chapters_checkbutton");
-	g_signal_handlers_disconnect_by_func (item,
-					      auto_chapters_toggled_cb, totem);
-
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), g_settings_get_boolean (totem->settings, "autoload-chapters"));
-
-	g_signal_connect (item, "toggled",
-			  G_CALLBACK (auto_chapters_toggled_cb), totem);
-}
-
-void
-connection_combobox_changed (GtkComboBox *combobox, Totem *totem)
-{
-	int i;
-
-	i = gtk_combo_box_get_active (combobox);
-	bacon_video_widget_set_connection_speed
-		(BACON_VIDEO_WIDGET (totem->bvw), i);
-}
-
 void
 visual_menu_changed (GtkComboBox *combobox, Totem *totem)
 {
@@ -368,16 +228,6 @@ visual_menu_changed (GtkComboBox *combobox, Totem *totem)
 }
 
 void
-visual_quality_menu_changed (GtkComboBox *combobox, Totem *totem)
-{
-	int i;
-
-	i = gtk_combo_box_get_active (combobox);
-	g_settings_set_int (totem->settings, "visual-quality", i);
-	bacon_video_widget_set_visualization_quality (totem->bvw, i);
-}
-
-void
 brightness_changed (GtkRange *range, Totem *totem)
 {
 	gdouble i;
@@ -497,17 +347,10 @@ encoding_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem)
 }
 
 void
-auto_chapters_toggled_cb (GtkToggleButton *togglebutton, Totem *totem)
-{
-	g_settings_set_boolean (totem->settings, "autoload-chapters", gtk_toggle_button_get_active (togglebutton));
-}
-
-void
 totem_setup_preferences (Totem *totem)
 {
-	GtkWidget *menu, *content_area;
-	gboolean show_visuals, auto_resize, is_local, no_deinterlace, lock_screensaver_on_audio, auto_chapters;
-	int connection_speed;
+	GtkWidget *menu, *content_area, *bvw;
+	gboolean show_visuals, is_local, lock_screensaver_on_audio;
 	guint i, hidden;
 	char *visual, *font, *encoding;
 	GList *list, *l;
@@ -528,8 +371,7 @@ totem_setup_preferences (Totem *totem)
 	g_return_if_fail (totem->settings != NULL);
 
 	is_local = totem_display_is_local ();
-
-	g_signal_connect (totem->settings, "changed::auto-resize", (GCallback) auto_resize_changed_cb, totem);
+	bvw = totem_get_video_widget (totem);
 
 	/* Work-around builder dialogue not parenting properly for
 	 * On top windows */
@@ -557,17 +399,14 @@ totem_setup_preferences (Totem *totem)
                           G_CALLBACK (gtk_widget_destroyed), &totem->prefs);
 
 	/* Remember position */
-	totem->remember_position = g_settings_get_boolean (totem->settings, "remember-position");
 	item = gtk_builder_get_object (totem->xml, "tpw_remember_position_checkbutton");
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), totem->remember_position);
-	g_signal_connect (totem->settings, "changed::remember-position", (GCallback) remember_position_changed_cb, totem);
+	g_settings_bind (totem->settings, "remember-position", item, "active", G_SETTINGS_BIND_DEFAULT);
+	g_settings_bind (totem->settings, "remember-position", totem, "remember-position", G_SETTINGS_BIND_DEFAULT);
 
 	/* Auto-resize */
-	auto_resize = g_settings_get_boolean (totem->settings, "auto-resize");
 	item = gtk_builder_get_object (totem->xml, "tpw_display_checkbutton");
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), auto_resize);
-	bacon_video_widget_set_auto_resize
-		(BACON_VIDEO_WIDGET (totem->bvw), auto_resize);
+	g_settings_bind (totem->settings, "auto-resize", item, "active", G_SETTINGS_BIND_DEFAULT);
+	g_settings_bind (totem->settings, "auto-resize", bvw, "auto-resize", G_SETTINGS_BIND_DEFAULT);
 
 	/* Screensaver audio locking */
 	lock_screensaver_on_audio = g_settings_get_boolean (totem->settings, "lock-screensaver-on-audio");
@@ -580,15 +419,13 @@ totem_setup_preferences (Totem *totem)
 
 	/* Disable deinterlacing */
 	item = gtk_builder_get_object (totem->xml, "tpw_no_deinterlace_checkbutton");
-	no_deinterlace = g_settings_get_boolean (totem->settings, "disable-deinterlacing");
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), no_deinterlace);
-	bacon_video_widget_set_deinterlacing (totem->bvw, !no_deinterlace);
-	g_signal_connect (totem->settings, "changed::disable-deinterlacing", (GCallback) no_deinterlace_changed_cb, totem);
+	g_settings_bind (totem->settings, "disable-deinterlacing", item, "active", G_SETTINGS_BIND_DEFAULT);
+	g_settings_bind (totem->settings, "disable-deinterlacing", bvw, "deinterlacing", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_INVERT_BOOLEAN);
 
 	/* Connection Speed */
-	connection_speed = bacon_video_widget_get_connection_speed (totem->bvw);
 	item = gtk_builder_get_object (totem->xml, "tpw_speed_combobox");
-	gtk_combo_box_set_active (GTK_COMBO_BOX (item), connection_speed);
+	g_settings_bind (totem->settings, "connection-speed", item, "active", G_SETTINGS_BIND_DEFAULT);
+	g_settings_bind (totem->settings, "connection-speed", bvw, "connection-speed", G_SETTINGS_BIND_DEFAULT);
 
 	/* Enable visuals */
 	item = gtk_builder_get_object (totem->xml, "tpw_visuals_checkbutton");
@@ -606,23 +443,12 @@ totem_setup_preferences (Totem *totem)
 
 	/* Auto-load subtitles */
 	item = gtk_builder_get_object (totem->xml, "tpw_auto_subtitles_checkbutton");
-	totem->autoload_subs = g_settings_get_boolean (totem->settings, "autoload-subtitles");
-
-	g_signal_handlers_disconnect_by_func (item, checkbutton3_toggled_cb, totem);
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), totem->autoload_subs);
-	g_signal_connect (item, "toggled", G_CALLBACK (checkbutton3_toggled_cb), totem);
-
-	g_signal_connect (totem->settings, "changed::autoload-subtitles", (GCallback) autoload_subtitles_changed_cb, totem);
+	g_settings_bind (totem->settings, "autoload-subtitles", item, "active", G_SETTINGS_BIND_DEFAULT);
+	g_settings_bind (totem->settings, "autoload-subtitles", totem, "autoload-subtitles", G_SETTINGS_BIND_DEFAULT);
 
 	/* Auto-load external chapters */
 	item = gtk_builder_get_object (totem->xml, "tpw_auto_chapters_checkbutton");
-	auto_chapters = g_settings_get_boolean (totem->settings, "autoload-chapters");
-
-	g_signal_handlers_disconnect_by_func (item, auto_chapters_toggled_cb, totem);
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), auto_chapters);
-	g_signal_connect (item, "toggled", G_CALLBACK (auto_chapters_toggled_cb), totem);
-
-	g_signal_connect (totem->settings, "changed::autoload-chapters", (GCallback) autoload_chapters_changed_cb, totem);
+	g_settings_bind (totem->settings, "autoload-chapters", item, "active", G_SETTINGS_BIND_DEFAULT);
 
 	/* Visuals list */
 	list = bacon_video_widget_get_visualization_list (totem->bvw);
@@ -651,10 +477,9 @@ totem_setup_preferences (Totem *totem)
 	g_free (visual);
 
 	/* Visualisation quality */
-	i = g_settings_get_int (totem->settings, "visual-quality");
-	bacon_video_widget_set_visualization_quality (totem->bvw, i);
 	item = gtk_builder_get_object (totem->xml, "tpw_visuals_size_combobox");
-	gtk_combo_box_set_active (GTK_COMBO_BOX (item), i);
+	g_settings_bind (totem->settings, "visual-quality", item, "active", G_SETTINGS_BIND_DEFAULT);
+	g_settings_bind (totem->settings, "visual-quality", bvw, "visualization-quality", G_SETTINGS_BIND_DEFAULT);
 
 	/* Brightness and all */
 	hidden = 0;
@@ -715,6 +540,8 @@ totem_setup_preferences (Totem *totem)
 	/* Disable keyboard shortcuts */
 	totem->disable_kbd_shortcuts = g_settings_get_boolean (totem->settings, "disable-keyboard-shortcuts");
 	g_signal_connect (totem->settings, "changed::disable-keyboard-shortcuts", (GCallback) disable_kbd_shortcuts_changed_cb, totem);
+
+	g_object_unref (bvw);
 }
 
 void



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