ekiga r7483 - in trunk: . src/gui



Author: dsandras
Date: Sun Dec 28 21:33:42 2008
New Revision: 7483
URL: http://svn.gnome.org/viewvc/ekiga?rev=7483&view=rev

Log:
Make sure sound events are played through the correct devices following
the type of sound event. Fixes #564370.


Modified:
   trunk/ChangeLog
   trunk/src/gui/preferences.cpp

Modified: trunk/src/gui/preferences.cpp
==============================================================================
--- trunk/src/gui/preferences.cpp	(original)
+++ trunk/src/gui/preferences.cpp	Sun Dec 28 21:33:42 2008
@@ -351,6 +351,7 @@
 		      1, _("Play sound on incoming calls"),
 		      2, SOUND_EVENTS_KEY "incoming_call_sound",
 		      3, SOUND_EVENTS_KEY "enable_incoming_call_sound",
+                      4, "incoming_call_sound",
 		      -1);
 
   enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_ring_tone_sound");
@@ -360,6 +361,7 @@
 		      1, _("Play ring tone"),
 		      2, SOUND_EVENTS_KEY "ring_tone_sound",
 		      3, SOUND_EVENTS_KEY "enable_ring_tone_sound",
+                      4, "ring_tone_sound",
 		      -1);
 
   enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_busy_tone_sound");
@@ -369,6 +371,7 @@
 		      1, _("Play busy tone"),
 		      2, SOUND_EVENTS_KEY "busy_tone_sound",
 		      3, SOUND_EVENTS_KEY "enable_busy_tone_sound",
+		      4, "busy_tone_sound",
 		      -1);
 
   enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_new_voicemail_sound");
@@ -378,6 +381,7 @@
 		      1, _("Play sound for new voice mails"),
 		      2, SOUND_EVENTS_KEY "new_voicemail_sound",
 		      3, SOUND_EVENTS_KEY "enable_new_voicemail_sound",
+		      4, "new_voicemail_sound",
 		      -1);
   
   enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_new_message_sound");
@@ -387,6 +391,7 @@
 		      1, _("Play sound for new instant messages"),
 		      2, SOUND_EVENTS_KEY "new_message_sound",
 		      3, SOUND_EVENTS_KEY "enable_new_message_sound",
+		      4, "new_message_sound",
 		      -1);
 
   if (!path)
@@ -553,10 +558,11 @@
      the file to play. The 4th one contains the key determining if the
      sound event is enabled or not. */
   list_store =
-    gtk_list_store_new (4,
+    gtk_list_store_new (5,
                         G_TYPE_BOOLEAN,
                         G_TYPE_STRING,
                         G_TYPE_STRING,
+                        G_TYPE_STRING,
                         G_TYPE_STRING);
 
   pw->sound_events_list =
@@ -597,24 +603,6 @@
   gtk_tree_view_append_column (GTK_TREE_VIEW (pw->sound_events_list), column);
   gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 325);
 
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes (_("Event"),
-                                                     renderer,
-                                                     "text", 
-                                                     2,
-                                                     NULL);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (pw->sound_events_list), column);
-  gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN (column), FALSE);
-
-  renderer = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes (_("Event"),
-                                                     renderer,
-                                                     "text", 
-                                                     3,
-                                                     NULL);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (pw->sound_events_list), column);
-  gtk_tree_view_column_set_visible (GTK_TREE_VIEW_COLUMN (column), FALSE);
-
   hbox = gtk_hbox_new (0, FALSE);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
 
@@ -657,7 +645,7 @@
 
   g_signal_connect (G_OBJECT (button), "clicked",
                     G_CALLBACK (sound_event_play_cb),
-                    (gpointer) fsbutton);
+                    (gpointer) prefs_window);
 
   /* Place it after the signals so that we can make sure they are run if
      required */
@@ -1152,21 +1140,37 @@
 sound_event_play_cb (G_GNUC_UNUSED GtkWidget *widget,
 		     gpointer data)
 {
+  GtkTreeSelection *selection = NULL;
+  GtkTreeModel *model = NULL;
+  GtkTreeIter selected_iter;
+
+  gchar *sound_event = NULL;
+
+  GmPreferencesWindow *pw = NULL;
+  
   g_return_if_fail (data != NULL);
+  pw = gm_pw_get_pw (GTK_WIDGET (data));
 
-  //FIXME
-  Ekiga::ServiceCore *core = GnomeMeeting::Process ()->GetServiceCore (); 
-  gmref_ptr<Ekiga::AudioOutputCore> audiooutput_core
-    = core->get ("audiooutput-core");
+  g_return_if_fail (data != NULL);
 
-  gchar* file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (data));
-  if (file_name) { 
-    std::string file_name_string = file_name;
-    audiooutput_core->play_file(file_name_string);
-    g_free (file_name);
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (pw->sound_events_list));
+
+  if (gtk_tree_selection_get_selected (selection, &model, &selected_iter)) {
+
+    gtk_tree_model_get (GTK_TREE_MODEL (model), &selected_iter, 4, &sound_event, -1);
+
+    //FIXME
+    Ekiga::ServiceCore *core = GnomeMeeting::Process ()->GetServiceCore (); 
+    gmref_ptr<Ekiga::AudioOutputCore> audiooutput_core = core->get ("audiooutput-core");
+
+    if (sound_event) { 
+      audiooutput_core->play_event(sound_event);
+      g_free (sound_event);
+    }
   }
 }
 
+
 static void
 sound_event_toggled_cb (G_GNUC_UNUSED GtkCellRendererToggle *cell,
 			gchar *path_str,
@@ -1211,7 +1215,7 @@
   std::string file_name_string = file_name;
   audiooutput_core->play_file(file_name_string);
 
-   g_free (file_name);
+  g_free (file_name);
 }
 
 void on_videoinput_device_added_cb (const Ekiga::VideoInputDevice & device, bool isDesired, GtkWidget *prefs_window)



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