summaryrefslogtreecommitdiff
path: root/capplets
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2008-07-28 17:35:38 +0000
committerBastien Nocera <hadess@src.gnome.org>2008-07-28 17:35:38 +0000
commitee2b7e711b896bda43626d64ec0f6a29c29d223e (patch)
tree8bd400d3b5dadaba36b9d8ab1f03263710808253 /capplets
parente8779d1c8bea155ae268108557d9d1a04c756c2e (diff)
downloadgnome-control-center-ee2b7e711b896bda43626d64ec0f6a29c29d223e.tar.gz
When selecting custom files, listen to "update-preview", and try to play
2008-07-28 Bastien Nocera <hadess@hadess.net> * sound-theme.c (play_sound_preview), (get_sound_filename): When selecting custom files, listen to "update-preview", and try to play everything that the user might select (Closes: #545056) svn path=/trunk/; revision=8810
Diffstat (limited to 'capplets')
-rw-r--r--capplets/sound/ChangeLog6
-rw-r--r--capplets/sound/sound-theme.c27
2 files changed, 33 insertions, 0 deletions
diff --git a/capplets/sound/ChangeLog b/capplets/sound/ChangeLog
index 5354190b2..c68a533b4 100644
--- a/capplets/sound/ChangeLog
+++ b/capplets/sound/ChangeLog
@@ -1,5 +1,11 @@
2008-07-28 Bastien Nocera <hadess@hadess.net>
+ * sound-theme.c (play_sound_preview), (get_sound_filename):
+ When selecting custom files, listen to "update-preview", and try
+ to play everything that the user might select (Closes: #545056)
+
+2008-07-28 Bastien Nocera <hadess@hadess.net>
+
* sound-theme.c (save_custom_theme): Fix permissions on the
custom theme directory, otherwise not even the user can read the files
in there
diff --git a/capplets/sound/sound-theme.c b/capplets/sound/sound-theme.c
index 2fdd6c961..4858420db 100644
--- a/capplets/sound/sound-theme.c
+++ b/capplets/sound/sound-theme.c
@@ -451,6 +451,30 @@ setting_set_func (GtkTreeViewColumn *tree_column,
g_free (filename);
}
+static void
+play_sound_preview (GtkFileChooser *chooser,
+ gpointer user_data)
+{
+ char *filename;
+ ca_context *ctx;
+
+ filename = gtk_file_chooser_get_preview_filename (GTK_FILE_CHOOSER (chooser));
+ if (filename == NULL)
+ return;
+
+ ctx = ca_gtk_context_get ();
+ ca_gtk_play_for_widget (GTK_WIDGET (chooser), 0,
+ CA_PROP_APPLICATION_NAME, _("Sound Preferences"),
+ CA_PROP_MEDIA_FILENAME, filename,
+ CA_PROP_EVENT_DESCRIPTION, _("Testing event sound"),
+ CA_PROP_CANBERRA_CACHE_CONTROL, "never",
+#ifdef CA_PROP_CANBERRA_ENABLE
+ CA_PROP_CANBERRA_ENABLE, "1",
+#endif
+ NULL);
+ g_free (filename);
+}
+
static char *
get_sound_filename (GladeXML *dialog)
{
@@ -478,6 +502,9 @@ get_sound_filename (GladeXML *dialog)
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), filter);
+ g_signal_connect (G_OBJECT (chooser), "update-preview",
+ G_CALLBACK (play_sound_preview), NULL);
+
data_dirs = g_get_system_data_dirs ();
for (i = 0; data_dirs[i] != NULL; i++) {
path = g_build_filename (data_dirs[i], "sounds", NULL);