[ekiga/ds-gsettings] GSettings: Ported the sound events part of the preferences window.
- From: Damien Sandras <dsandras src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga/ds-gsettings] GSettings: Ported the sound events part of the preferences window.
- Date: Sat, 13 Apr 2013 17:19:37 +0000 (UTC)
commit 4e5aa5d3c8855ea80ace7b88681edec84ca355bc
Author: Damien Sandras <dsandras beip be>
Date: Sat Apr 13 18:55:27 2013 +0200
GSettings: Ported the sound events part of the preferences window.
lib/ekiga-settings.h | 2 +
lib/engine/gui/gtk-frontend/preferences-window.cpp | 290 +++++------
lib/gmconf/gmconf-gsettings.c | 534 ---------------------
3 files changed, 121 insertions(+), 705 deletions(-)
---
diff --git a/lib/ekiga-settings.h b/lib/ekiga-settings.h
index c465d6e..eebc8bd 100644
--- a/lib/ekiga-settings.h
+++ b/lib/ekiga-settings.h
@@ -41,4 +41,6 @@
#define USER_INTERFACE "org.gnome." PACKAGE_NAME ".general.user-interface"
+#define SOUND_EVENTS_SCHEMA "org.gnome." PACKAGE_NAME ".general.sound-events"
+
#endif /* EKIGA_SETTINGS_H */
diff --git a/lib/engine/gui/gtk-frontend/preferences-window.cpp
b/lib/engine/gui/gtk-frontend/preferences-window.cpp
index e21c32d..3dd7fa6 100644
--- a/lib/engine/gui/gtk-frontend/preferences-window.cpp
+++ b/lib/engine/gui/gtk-frontend/preferences-window.cpp
@@ -39,6 +39,8 @@
#include "config.h"
+#include "ekiga-settings.h"
+
#include <gmpreferences.h>
#include <gmconf.h>
@@ -71,23 +73,21 @@ typedef struct _GmPreferencesWindow
GtkWidget *video_device;
GtkWidget *iface;
GtkWidget *fsbutton;
+ GSettings *sound_events_settings;
Ekiga::ServiceCore& core;
Ekiga::scoped_connections connections;
- std::list<gpointer> notifiers;
} GmPreferencesWindow;
#define GM_PREFERENCES_WINDOW(x) (GmPreferencesWindow *) (x)
_GmPreferencesWindow::_GmPreferencesWindow(Ekiga::ServiceCore &_core): core(_core)
{
+ sound_events_settings = g_settings_new (SOUND_EVENTS_SCHEMA);
}
_GmPreferencesWindow::~_GmPreferencesWindow()
{
- for (std::list<gpointer>::iterator iter = notifiers.begin ();
- iter != notifiers.end ();
- ++iter)
- gm_conf_notifier_remove (*iter);
+ g_clear_object (&sound_events_settings);
}
/* Declarations */
@@ -236,8 +236,8 @@ static void refresh_devices_list_cb (GtkWidget *widget,
* selected sound event.
* PRE : /
*/
-static void sound_event_clicked_cb (GtkTreeSelection *selection,
- gpointer data);
+static void sound_event_selected_cb (GtkTreeSelection *selection,
+ gpointer data);
/* DESCRIPTION : This callback is called when the user clicks
@@ -258,7 +258,7 @@ static void sound_event_play_cb (GtkWidget *widget,
* PRE : /
*/
static void sound_event_toggled_cb (GtkCellRendererToggle *cell,
- gchar *path_str,
+ gchar *path_str,
gpointer data);
@@ -277,28 +277,20 @@ static void image_filename_browse_cb (GtkWidget *widget,
* BEHAVIOR : Update of the config database.
* PRE : /
*/
-static void audioev_filename_browse_cb (GtkWidget *widget,
- gpointer data);
+static void sound_event_changed_cb (GtkWidget *widget,
+ gpointer data);
/* DESCRIPTION : This callback is called when something changes in the sound
- * events list.
+ * event related settings.
* BEHAVIOR : It updates the events list widget.
* PRE : A pointer to the prefs window GMObject.
*/
-static void sound_events_list_changed_nt (gpointer id,
- GmConfEntry *entry,
- gpointer data);
+static void sound_event_setting_changed (GSettings *,
+ gchar *,
+ gpointer data);
-/* DESCRIPTION : This callback is called by the preview-play button of the
- * selected audio file in the audio file selector.
- * BEHAVIOR : GMSoundEv's the audio file.
- * PRE : /
- */
-static void audioev_filename_browse_play_cb (GtkWidget *playbutton,
- gpointer data);
-
static void
gm_prefs_window_get_audiooutput_devices_list (Ekiga::ServiceCore& core,
std::vector<std::string> & device_list);
@@ -337,80 +329,66 @@ gm_prefs_window_sound_events_list_build (GtkWidget *prefs_window)
{
GmPreferencesWindow *pw = NULL;
- GtkTreeSelection *selection = NULL;
- GtkTreePath *path = NULL;
GtkTreeModel *model = NULL;
- GtkTreeIter iter, selected_iter;
+ GtkTreeIter iter;
bool enabled = FALSE;
pw = gm_pw_get_pw (prefs_window);
- selection =
- gtk_tree_view_get_selection (GTK_TREE_VIEW (pw->sound_events_list));
-
- if (gtk_tree_selection_get_selected (selection, &model, &selected_iter))
- path = gtk_tree_model_get_path (model, &selected_iter);
-
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (pw->sound_events_list));
gtk_list_store_clear (GTK_LIST_STORE (model));
/* Sound on incoming calls */
- enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_incoming_call_sound");
+ enabled = g_settings_get_boolean (pw->sound_events_settings, "enable-incoming-call-sound");
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, enabled,
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",
+ 2, "incoming-call-sound",
+ 3, "enable-incoming-call-sound",
+ 4, "incoming-call-sound",
-1);
- enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_ring_tone_sound");
+ enabled = g_settings_get_boolean (pw->sound_events_settings, "enable-ring-tone-sound");
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, enabled,
1, _("Play ring tone"),
- 2, SOUND_EVENTS_KEY "ring_tone_sound",
- 3, SOUND_EVENTS_KEY "enable_ring_tone_sound",
- 4, "ring_tone_sound",
+ 2, "ring-tone-sound",
+ 3, "enable-ring-tone-sound",
+ 4, "ring-tone-sound",
-1);
- enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_busy_tone_sound");
+ enabled = g_settings_get_boolean (pw->sound_events_settings, "enable-busy-tone-sound");
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, enabled,
1, _("Play busy tone"),
- 2, SOUND_EVENTS_KEY "busy_tone_sound",
- 3, SOUND_EVENTS_KEY "enable_busy_tone_sound",
- 4, "busy_tone_sound",
+ 2, "busy-tone-sound",
+ 3, "enable-busy-tone-sound",
+ 4, "busy-tone-sound",
-1);
- enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_new_voicemail_sound");
+ enabled = g_settings_get_boolean (pw->sound_events_settings, "enable-new-voicemail-sound");
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, enabled,
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",
+ 2, "new-voicemail-sound",
+ 3, "enable-new-voicemail-sound",
+ 4, "new-voicemail-sound",
-1);
- enabled = gm_conf_get_bool (SOUND_EVENTS_KEY "enable_new_message_sound");
+ enabled = g_settings_get_boolean (pw->sound_events_settings, "enable-new-message-sound");
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, enabled,
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",
+ 2, "new-message-sound",
+ 3, "enable-new-message-sound",
+ 4, "new-message-sound",
-1);
-
- if (!path)
- path = gtk_tree_path_new_from_string ("0");
-
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (pw->sound_events_list),
- path, NULL, false);
- gtk_tree_path_free (path);
}
@@ -572,14 +550,13 @@ gm_pw_init_sound_events_page (GtkWidget *prefs_window,
renderer = gtk_cell_renderer_toggle_new ();
column = gtk_tree_view_column_new_with_attributes (_("A"),
renderer,
- "active",
+ "active",
0,
NULL);
gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 25);
gtk_tree_view_append_column (GTK_TREE_VIEW (pw->sound_events_list), column);
g_signal_connect (renderer, "toggled",
- G_CALLBACK (sound_event_toggled_cb),
- GTK_TREE_MODEL (list_store));
+ G_CALLBACK (sound_event_toggled_cb), (gpointer) prefs_window);
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes (_("Event"),
@@ -615,17 +592,13 @@ gm_pw_init_sound_events_page (GtkWidget *prefs_window,
gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (pw->fsbutton),
selector_hbox);
- g_signal_connect (selector_playbutton, "clicked",
- G_CALLBACK (audioev_filename_browse_play_cb),
- (gpointer) prefs_window);
-
g_signal_connect (pw->fsbutton, "selection-changed",
- G_CALLBACK (audioev_filename_browse_cb),
+ G_CALLBACK (sound_event_changed_cb),
(gpointer) prefs_window);
g_signal_connect (selection, "changed",
- G_CALLBACK (sound_event_clicked_cb),
- (gpointer) pw->fsbutton);
+ G_CALLBACK (sound_event_selected_cb),
+ (gpointer) prefs_window);
button = gtk_button_new_with_label (_("Play"));
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 2);
@@ -986,8 +959,8 @@ refresh_devices_list_cb (G_GNUC_UNUSED GtkWidget *widget,
static void
-audioev_filename_browse_cb (GtkWidget *b,
- gpointer data)
+sound_event_changed_cb (GtkWidget *b,
+ gpointer data)
{
GmPreferencesWindow *pw = NULL;
@@ -997,7 +970,7 @@ audioev_filename_browse_cb (GtkWidget *b,
GtkTreeIter iter;
gchar *filename = NULL;
- gchar *conf_key = NULL;
+ gchar *key = NULL;
gchar *sound_event = NULL;
g_return_if_fail (data != NULL);
@@ -1009,20 +982,20 @@ audioev_filename_browse_cb (GtkWidget *b,
if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
gtk_tree_model_get (GTK_TREE_MODEL (model), &iter,
- 2, &conf_key, -1);
+ 2, &key, -1);
- if (conf_key) {
+ if (key) {
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (b));
if (filename) {
- sound_event = gm_conf_get_string (conf_key);
+ sound_event = g_settings_get_string (pw->sound_events_settings, key);
if (!sound_event || g_strcmp0 (filename, sound_event))
- gm_conf_set_string (conf_key, (gchar *) filename);
+ g_settings_set_string (pw->sound_events_settings, key, (gchar *) filename);
g_free (filename);
}
- g_free (conf_key);
+ g_free (key);
g_free (sound_event);
}
}
@@ -1030,40 +1003,62 @@ audioev_filename_browse_cb (GtkWidget *b,
static void
-sound_events_list_changed_nt (G_GNUC_UNUSED gpointer id,
- GmConfEntry *entry,
- gpointer data)
+sound_event_setting_changed (G_GNUC_UNUSED GSettings *settings,
+ gchar *key,
+ gpointer data)
{
- GtkWidget *prefs_window = (GtkWidget*)data;
+ bool valid = true;
+
+ GtkTreeIter iter;
- if (gm_conf_entry_get_type (entry) == GM_CONF_STRING
- || gm_conf_entry_get_type (entry) == GM_CONF_BOOL) {
+ g_return_if_fail (data != NULL);
+
+ GmPreferencesWindow *pw = gm_pw_get_pw (GTK_WIDGET (data));
+
+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (pw->sound_events_list));
+
+ /* Get the first iter in the list, check it is valid and walk
+ * * through the list, reading each row. */
+ for (valid = gtk_tree_model_get_iter_first (model, &iter);
+ valid;
+ valid = gtk_tree_model_iter_next (model, &iter)) {
+
+ gchar *str = NULL;
+ gtk_tree_model_get (model, &iter, 3, &str, -1);
+
+ if (key && str && !g_strcmp0 (key, str)) {
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ 0, g_settings_get_boolean (pw->sound_events_settings, key));
+ break;
+ }
- if (prefs_window)
- gm_prefs_window_sound_events_list_build (prefs_window);
+ g_free (str);
}
}
static void
-sound_event_clicked_cb (GtkTreeSelection *selection,
- gpointer data)
+sound_event_selected_cb (GtkTreeSelection *selection,
+ gpointer data)
{
GtkTreeModel *model = NULL;
GtkTreeIter iter;
- gchar *conf_key = NULL;
+ GmPreferencesWindow *pw = NULL;
+ gchar *key = NULL;
gchar *filename = NULL;
gchar *sound_event = NULL;
+ g_return_if_fail (data != NULL);
+ pw = gm_pw_get_pw (GTK_WIDGET (data));
+
if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
- gtk_tree_model_get (GTK_TREE_MODEL (model), &iter,
- 2, &conf_key, -1);
+ gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 2, &key, -1);
- if (conf_key) {
+ if (key) {
- sound_event = gm_conf_get_string (conf_key);
+ sound_event = g_settings_get_string (pw->sound_events_settings, key);
if (sound_event) {
@@ -1073,12 +1068,12 @@ sound_event_clicked_cb (GtkTreeSelection *selection,
else
filename = g_strdup (sound_event);
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (data), filename);
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (pw->fsbutton), filename);
g_free (filename);
g_free (sound_event);
}
- g_free (conf_key);
+ g_free (key);
}
}
}
@@ -1092,10 +1087,11 @@ sound_event_play_cb (G_GNUC_UNUSED GtkWidget *widget,
GtkTreeModel *model = NULL;
GtkTreeIter selected_iter;
+ gchar *key = NULL;
gchar *sound_event = NULL;
GmPreferencesWindow *pw = NULL;
-
+
g_return_if_fail (data != NULL);
pw = gm_pw_get_pw (GTK_WIDGET (data));
@@ -1105,14 +1101,18 @@ sound_event_play_cb (G_GNUC_UNUSED GtkWidget *widget,
if (gtk_tree_selection_get_selected (selection, &model, &selected_iter)) {
- gtk_tree_model_get (GTK_TREE_MODEL (model), &selected_iter, 4, &sound_event, -1);
+ gtk_tree_model_get (GTK_TREE_MODEL (model), &selected_iter, 2, &key, -1);
- boost::shared_ptr<Ekiga::AudioOutputCore> audiooutput_core = pw->core.get<Ekiga::AudioOutputCore>
("audiooutput-core");
+ sound_event = g_settings_get_string (pw->sound_events_settings, key);
+ boost::shared_ptr<Ekiga::AudioOutputCore> audiooutput_core =
+ pw->core.get<Ekiga::AudioOutputCore> ("audiooutput-core");
if (sound_event) {
audiooutput_core->play_event(sound_event);
g_free (sound_event);
}
+
+ g_free (key);
}
}
@@ -1126,45 +1126,29 @@ sound_event_toggled_cb (G_GNUC_UNUSED GtkCellRendererToggle *cell,
GtkTreePath *path = NULL;
GtkTreeIter iter;
- gchar *conf_key = NULL;
+ GmPreferencesWindow *pw = NULL;
+ gchar *key = NULL;
bool fixed = FALSE;
+ g_return_if_fail (data != NULL);
+ pw = gm_pw_get_pw (GTK_WIDGET (data));
- model = (GtkTreeModel *) data;
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (pw->sound_events_list));
path = gtk_tree_path_new_from_string (path_str);
gtk_tree_model_get_iter (model, &iter, path);
- gtk_tree_model_get (model, &iter, 0, &fixed, 3, &conf_key, -1);
+ gtk_tree_model_get (model, &iter, 0, &fixed, 3, &key, -1);
fixed ^= 1;
- gm_conf_set_bool (conf_key, fixed);
+ g_settings_set_boolean (pw->sound_events_settings, key, fixed);
- g_free (conf_key);
+ g_free (key);
gtk_tree_path_free (path);
}
-static void
-audioev_filename_browse_play_cb (GtkWidget* /* playbutton */,
- gpointer data)
-{
- GmPreferencesWindow* pw = NULL;
-
- g_return_if_fail (data != NULL);
-
- pw = gm_pw_get_pw (GTK_WIDGET (data));
-
- boost::shared_ptr<Ekiga::AudioOutputCore> audiooutput_core = pw->core.get<Ekiga::AudioOutputCore>
("audiooutput-core");
-
- gchar* file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (pw->fsbutton));
- std::string file_name_string = file_name;
- audiooutput_core->play_file(file_name_string);
-
- g_free (file_name);
-}
-
void on_videoinput_device_added_cb (const Ekiga::VideoInputDevice & device, bool isDesired, GtkWidget
*prefs_window)
{
GmPreferencesWindow *pw = NULL;
@@ -1273,8 +1257,6 @@ preferences_window_new (Ekiga::ServiceCore& core)
gchar *filename = NULL;
std::vector <std::string> device_list;
- gpointer notifier;
-
filename = g_build_filename (DATA_DIR, "pixmaps", PACKAGE_NAME, PACKAGE_NAME "-logo.png", NULL);
window = gnome_prefs_window_new (filename);
g_free (filename);
@@ -1376,55 +1358,21 @@ preferences_window_new (Ekiga::ServiceCore& core)
pw->connections.add (conn);
- /* Connect notifiers for SOUND_EVENTS_KEY keys */
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "enable_incoming_call_sound",
- sound_events_list_changed_nt, window);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "incoming_call_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "enable_ring_tone_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "ring_tone_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "enable_busy_tone_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "busy_tone_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "enable_new_voicemail_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "new_voicemail_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "enable_new_message_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
-
- notifier =
- gm_conf_notifier_add (SOUND_EVENTS_KEY "new_message_sound",
- sound_events_list_changed_nt, window);
- pw->notifiers.push_front (notifier);
+ /* Connect notifiers for SOUND_EVENTS_SCHEMA settings */
+ g_signal_connect (pw->sound_events_settings, "changed::enable-incoming-call-sound",
+ G_CALLBACK (sound_event_setting_changed), window);
+
+ g_signal_connect (pw->sound_events_settings, "changed::enable-ring-tone-sound",
+ G_CALLBACK (sound_event_setting_changed), window);
+
+ g_signal_connect (pw->sound_events_settings, "changed::enable-busy-tone-sound",
+ G_CALLBACK (sound_event_setting_changed), window);
+
+ g_signal_connect (pw->sound_events_settings, "changed::enable-new-voicemail-sound",
+ G_CALLBACK (sound_event_setting_changed), window);
+
+ g_signal_connect (pw->sound_events_settings, "changed::enable-new-message-sound",
+ G_CALLBACK (sound_event_setting_changed), window);
return window;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]