pidgin/prefs/pidginvvprefs.c

Mon, 29 Aug 2022 22:06:07 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Mon, 29 Aug 2022 22:06:07 -0500
changeset 41623
78cf94d0f8c8
parent 41613
4be49932c288
child 41627
7d9b4a9d5c3e
permissions
-rw-r--r--

Move network preferences to Adwaita preference widgets

This does make the TURN server settings longer vertically, but that seems more consistent with everything.

Also fix the `leave` event on the TURN server setting.

Testing Done:
Toggled all the options and checked that stuff happened in the Debug Window.

Also, I'm not sure why the `GtkSpinButton` and `GtkEntry` expand to different sizes; they both have `hexpand=1`, and the spin button is next to text that's _shorter_ than the entry, but somehow ends up farther right. Seems like a bug in GTK.

PS, be careful of this page; it tries to get your public IP address and displays it when it succeeds.

Reviewed at https://reviews.imfreedom.org/r/1680/

41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
1 /*
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
4 *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
7 * source distribution.
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
8 *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
13 *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
18 *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
21 */
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
22
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24 #include <config.h>
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25 #endif
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
26
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
27 #include <math.h>
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
28
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
29 #include <glib/gi18n-lib.h>
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
31 #include <purple.h>
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
32
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
33 #include <adwaita.h>
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35 #include "pidginvvprefs.h"
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
36 #include "pidgincore.h"
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 #include "pidginprefsinternal.h"
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
38
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39 struct _PidginVVPrefs {
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
40 AdwPreferencesPage parent;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
41
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
42 struct {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
43 PidginPrefCombo input;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
44 PidginPrefCombo output;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
45 GtkWidget *level;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46 GtkWidget *threshold_label;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47 GtkWidget *threshold;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48 GtkWidget *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 GtkWidget *test;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
51 } voice;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
52
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
53 struct {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
54 PidginPrefCombo input;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55 PidginPrefCombo output;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 GtkWidget *frame;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 GtkWidget *test;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 } video;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60 };
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
61
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
62 G_DEFINE_TYPE(PidginVVPrefs, pidgin_vv_prefs, ADW_TYPE_PREFERENCES_PAGE)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
63
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
64 /******************************************************************************
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
65 * Helpers
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
66 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
68 populate_vv_device_menuitems(PurpleMediaElementType type, GtkListStore *store)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
69 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
70 PurpleMediaManager *manager = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 GList *devices;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
72
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
73 gtk_list_store_clear(store);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
74
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
75 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76 devices = purple_media_manager_enumerate_elements(manager, type);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
77 for (; devices; devices = g_list_delete_link(devices, devices)) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
78 PurpleMediaElementInfo *info = devices->data;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
79 GtkTreeIter iter;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80 const gchar *name, *id;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
81
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
82 name = purple_media_element_info_get_name(info);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
83 id = purple_media_element_info_get_id(info);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
84
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
85 gtk_list_store_append(store, &iter);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
86 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_TEXT, name,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
87 PIDGIN_PREF_COMBO_VALUE, id, -1);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
88
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
89 g_object_unref(info);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
90 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
91 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
92
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
93 static GstElement *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
94 create_test_element(PurpleMediaElementType type)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
95 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
96 PurpleMediaElementInfo *element_info;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
97
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
98 element_info = purple_media_manager_get_active_element(purple_media_manager_get(), type);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100 g_return_val_if_fail(element_info, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
102 return purple_media_element_info_call_create(element_info,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103 NULL, NULL, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
104 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106 static GstElement *
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
107 create_voice_pipeline(PidginVVPrefs *prefs)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
108 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
109 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110 GstElement *src, *sink;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 GstElement *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
112 GstElement *level;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113 GstElement *valve;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
114
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
115 pipeline = gst_pipeline_new("voicetest");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
116
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
117 src = create_test_element(PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SRC);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
118 sink = create_test_element(PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SINK);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
119 volume = gst_element_factory_make("volume", "volume");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
120 level = gst_element_factory_make("level", "level");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
121 valve = gst_element_factory_make("valve", "valve");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
122
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
123 g_object_set(volume, "volume",
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
124 gtk_scale_button_get_value(GTK_SCALE_BUTTON(prefs->voice.volume)) / 100.0,
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
125 NULL);
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
126
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
127 gst_bin_add_many(GST_BIN(pipeline), src, volume, level, valve, sink, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
128 gst_element_link_many(src, volume, level, valve, sink, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
129
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
130 purple_debug_info("gtkprefs", "create_voice_pipeline: setting pipeline "
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
131 "state to GST_STATE_PLAYING - it may hang here on win32\n");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
132 gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
133 purple_debug_info("gtkprefs", "create_voice_pipeline: state is set\n");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
134
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
135 return pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
136 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
137
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
138 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
139 on_volume_change_cb(GtkWidget *w, gdouble value, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
140 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
141 PidginVVPrefs *prefs = PIDGIN_VV_PREFS(data);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
142 GstElement *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
143
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
144 if (!prefs->voice.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
145 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
146 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
147
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
148 volume = gst_bin_get_by_name(GST_BIN(prefs->voice.pipeline), "volume");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
149 g_object_set(volume, "volume",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
150 gtk_scale_button_get_value(GTK_SCALE_BUTTON(w)) / 100.0, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
151 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
152
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
153 static gdouble
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
154 gst_msg_db_to_percent(GstMessage *msg, gchar *value_name)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
155 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
156 const GValue *list;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
157 const GValue *value;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
158 gdouble value_db;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
159 gdouble percent;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
160
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
161 list = gst_structure_get_value(gst_message_get_structure(msg), value_name);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
162 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
163 value = g_value_array_get_nth(g_value_get_boxed(list), 0);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
164 G_GNUC_END_IGNORE_DEPRECATIONS
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
165 value_db = g_value_get_double(value);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
166 percent = pow(10, value_db / 20);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
167 return (percent > 1.0) ? 1.0 : percent;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
168 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
169
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
170 static gboolean
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
171 gst_bus_cb(GstBus *bus, GstMessage *msg, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
172 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
173 PidginVVPrefs *prefs = PIDGIN_VV_PREFS(data);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
174
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
175 if (GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ELEMENT &&
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
176 gst_structure_has_name(gst_message_get_structure(msg), "level")) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
177
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
178 GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
179 gchar *name = gst_element_get_name(src);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
180
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
181 if (purple_strequal(name, "level")) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
182 gdouble percent;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
183 gdouble threshold;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
184 GstElement *valve;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
185
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
186 percent = gst_msg_db_to_percent(msg, "rms");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
187 gtk_progress_bar_set_fraction(
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
188 GTK_PROGRESS_BAR(prefs->voice.level), percent);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
189
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
190 percent = gst_msg_db_to_percent(msg, "decay");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
191 threshold = gtk_range_get_value(GTK_RANGE(
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
192 prefs->voice.threshold)) /
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
193 100.0;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
194 valve = gst_bin_get_by_name(GST_BIN(GST_ELEMENT_PARENT(src)), "valve");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
195 g_object_set(valve, "drop", (percent < threshold), NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
196 g_object_set(prefs->voice.level, "text",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
197 (percent < threshold) ? _("DROP") : " ",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
198 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
199 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
200
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
201 g_free(name);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
202 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
203
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
204 return TRUE;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
205 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
206
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
207 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
208 voice_test_destroy_cb(GtkWidget *w, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
209 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
210 PidginVVPrefs *prefs = PIDGIN_VV_PREFS(data);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
211
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
212 if (!prefs->voice.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
213 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
214 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
215
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
216 gst_element_set_state(prefs->voice.pipeline, GST_STATE_NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
217 g_clear_pointer(&prefs->voice.pipeline, gst_object_unref);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
218 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
219
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
220 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
221 enable_voice_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
222 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
223 GstBus *bus;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
224
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
225 prefs->voice.pipeline = create_voice_pipeline(prefs);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
226 bus = gst_pipeline_get_bus(GST_PIPELINE(prefs->voice.pipeline));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
227 gst_bus_add_signal_watch(bus);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
228 g_signal_connect(bus, "message", G_CALLBACK(gst_bus_cb), prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
229 gst_object_unref(bus);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
230 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
231
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
232 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
233 toggle_voice_test_cb(GtkToggleButton *test, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
234 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
235 PidginVVPrefs *prefs = PIDGIN_VV_PREFS(data);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
236
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
237 if (gtk_toggle_button_get_active(test)) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
238 gtk_widget_set_sensitive(prefs->voice.level, TRUE);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
239 enable_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
240
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
241 g_signal_connect(prefs->voice.volume, "value-changed",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
242 G_CALLBACK(on_volume_change_cb), prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
243 g_signal_connect(test, "destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
244 G_CALLBACK(voice_test_destroy_cb), prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
245 } else {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
246 gtk_progress_bar_set_fraction(
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
247 GTK_PROGRESS_BAR(prefs->voice.level), 0.0);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
248 gtk_widget_set_sensitive(prefs->voice.level, FALSE);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
249 g_object_disconnect(prefs->voice.volume,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
250 "any-signal::value-changed",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
251 G_CALLBACK(on_volume_change_cb), prefs, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
252 g_object_disconnect(test, "any-signal::destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
253 G_CALLBACK(voice_test_destroy_cb), prefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
254 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
255 voice_test_destroy_cb(NULL, prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
256 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
257 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
258
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
259 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
260 volume_changed_cb(GtkScaleButton *button, gdouble value, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
261 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
262 purple_prefs_set_int("/purple/media/audio/volume/input", value * 100);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
263 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
264
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
265 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
266 threshold_value_changed_cb(GtkScale *scale, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
267 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
268 PidginVVPrefs *prefs = data;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
269 int value;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
270 char *tmp;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
271
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
272 value = (int)gtk_range_get_value(GTK_RANGE(scale));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
273 tmp = g_strdup_printf(_("Silence threshold: %d%%"), value);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
274 gtk_label_set_label(GTK_LABEL(prefs->voice.threshold_label), tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
275 g_free(tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
276
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
277 purple_prefs_set_int("/purple/media/audio/silence_threshold", value);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
278 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
279
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
280 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
281 bind_voice_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
282 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
283 char *tmp;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
284
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
285 gtk_scale_button_set_value(GTK_SCALE_BUTTON(prefs->voice.volume),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
286 purple_prefs_get_int("/purple/media/audio/volume/input") / 100.0);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
287
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
288 tmp = g_strdup_printf(_("Silence threshold: %d%%"),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
289 purple_prefs_get_int("/purple/media/audio/silence_threshold"));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
290 gtk_label_set_text(GTK_LABEL(prefs->voice.threshold_label), tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
291 g_free(tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
292
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
293 gtk_range_set_value(GTK_RANGE(prefs->voice.threshold),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
294 purple_prefs_get_int("/purple/media/audio/silence_threshold"));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
295 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
296
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
297 static GstElement *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
298 create_video_pipeline(void)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
299 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
300 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
301 GstElement *src, *sink;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
302 GstElement *videoconvert;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
303 GstElement *videoscale;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
304
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
305 pipeline = gst_pipeline_new("videotest");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
306 src = create_test_element(PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
307 sink = create_test_element(PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SINK);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
308 videoconvert = gst_element_factory_make("videoconvert", NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
309 videoscale = gst_element_factory_make("videoscale", NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
310
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
311 g_object_set_data(G_OBJECT(pipeline), "sink", sink);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
312
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
313 gst_bin_add_many(GST_BIN(pipeline), src, videoconvert, videoscale, sink,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
314 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
315 gst_element_link_many(src, videoconvert, videoscale, sink, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
316
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
317 return pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
318 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
319
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
320 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
321 video_test_destroy_cb(GtkWidget *w, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
322 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
323 PidginVVPrefs *prefs = PIDGIN_VV_PREFS(data);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
324
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
325 if (!prefs->video.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
326 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
327 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
328
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
329 gst_element_set_state(prefs->video.pipeline, GST_STATE_NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
330 g_clear_pointer(&prefs->video.pipeline, gst_object_unref);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
331 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
332
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
333 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
334 enable_video_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
335 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
336 GtkWidget *video = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
337 GstElement *sink = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
338
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
339 prefs->video.pipeline = create_video_pipeline();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
340
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
341 sink = g_object_get_data(G_OBJECT(prefs->video.pipeline), "sink");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
342 g_object_get(sink, "widget", &video, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
343 gtk_widget_show(video);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
344
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
345 gtk_widget_set_size_request(prefs->video.frame, 400, 300);
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
346 gtk_aspect_frame_set_child(GTK_ASPECT_FRAME(prefs->video.frame), video);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
347
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
348 gst_element_set_state(GST_ELEMENT(prefs->video.pipeline),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
349 GST_STATE_PLAYING);
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
350
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
351 g_object_unref(video);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
352 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
353
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
354 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
355 toggle_video_test_cb(GtkToggleButton *test, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
356 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
357 PidginVVPrefs *prefs = PIDGIN_VV_PREFS(data);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
358
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
359 if (gtk_toggle_button_get_active(test)) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
360 enable_video_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
361 g_signal_connect(test, "destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
362 G_CALLBACK(video_test_destroy_cb), prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
363 } else {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
364 g_object_disconnect(test, "any-signal::destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
365 G_CALLBACK(video_test_destroy_cb), prefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
366 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
367 video_test_destroy_cb(NULL, prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
368 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
369 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
370
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
371 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
372 vv_device_changed_cb(const gchar *name, PurplePrefType type,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
373 gconstpointer value, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
374 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
375 PidginVVPrefs *prefs = PIDGIN_VV_PREFS(data);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
376
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
377 PurpleMediaManager *manager;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
378 PurpleMediaElementInfo *info;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
379
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
380 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
381 info = purple_media_manager_get_element_info(manager, value);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
382 purple_media_manager_set_active_element(manager, info);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
383
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
384 /* Refresh test viewers */
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
385 if (strstr(name, "audio") && prefs->voice.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
386 voice_test_destroy_cb(NULL, prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
387 enable_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
388 } else if (strstr(name, "video") && prefs->video.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
389 video_test_destroy_cb(NULL, prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
390 enable_video_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
391 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
392 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
393
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
394 static const char *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
395 purple_media_type_to_preference_key(PurpleMediaElementType type)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
396 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
397 if (type & PURPLE_MEDIA_ELEMENT_AUDIO) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
398 if (type & PURPLE_MEDIA_ELEMENT_SRC) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
399 return PIDGIN_PREFS_ROOT "/vvconfig/audio/src/device";
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
400 } else if (type & PURPLE_MEDIA_ELEMENT_SINK) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
401 return PIDGIN_PREFS_ROOT "/vvconfig/audio/sink/device";
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
402 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
403 } else if (type & PURPLE_MEDIA_ELEMENT_VIDEO) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
404 if (type & PURPLE_MEDIA_ELEMENT_SRC) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
405 return PIDGIN_PREFS_ROOT "/vvconfig/video/src/device";
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
406 } else if (type & PURPLE_MEDIA_ELEMENT_SINK) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
407 return PIDGIN_PREFS_ROOT "/vvconfig/video/sink/device";
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
408 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
409 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
410
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
411 return NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
412 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
413
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
414 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
415 bind_vv_dropdown(PidginPrefCombo *combo, PurpleMediaElementType element_type)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
416 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
417 const gchar *preference_key;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
418 GtkTreeModel *model;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
419
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
420 preference_key = purple_media_type_to_preference_key(element_type);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
421 model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo->combo));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
422 populate_vv_device_menuitems(element_type, GTK_LIST_STORE(model));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
423
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
424 combo->type = PURPLE_PREF_STRING;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
425 combo->key = preference_key;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
426 pidgin_prefs_bind_dropdown(combo);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
427 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
428
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
429 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
430 bind_vv_frame(PidginVVPrefs *prefs, PidginPrefCombo *combo,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
431 PurpleMediaElementType type)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
432 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
433 bind_vv_dropdown(combo, type);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
434
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
435 purple_prefs_connect_callback(combo->combo,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
436 purple_media_type_to_preference_key(type),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
437 vv_device_changed_cb, prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
438 g_signal_connect_swapped(combo->combo, "destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
439 G_CALLBACK(purple_prefs_disconnect_by_handle),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
440 combo->combo);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
441
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
442 g_object_set_data(G_OBJECT(combo->combo), "vv_media_type",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
443 (gpointer)type);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
444 g_object_set_data(G_OBJECT(combo->combo), "vv_combo", combo);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
445 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
446
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
447 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
448 device_list_changed_cb(PurpleMediaManager *manager, GtkWidget *widget)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
449 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
450 PidginPrefCombo *combo;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
451 PurpleMediaElementType media_type;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
452 const gchar *preference_key;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
453 guint signal_id;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
454 GtkTreeModel *model;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
455
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
456 combo = g_object_get_data(G_OBJECT(widget), "vv_combo");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
457 media_type = (PurpleMediaElementType)GPOINTER_TO_INT(g_object_get_data(
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
458 G_OBJECT(widget),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
459 "vv_media_type"));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
460 preference_key = purple_media_type_to_preference_key(media_type);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
461
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
462 /* Block signals so pref doesn't get re-saved while changing UI. */
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
463 signal_id = g_signal_lookup("changed", GTK_TYPE_COMBO_BOX);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
464 g_signal_handlers_block_matched(combo->combo, G_SIGNAL_MATCH_ID, signal_id,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
465 0, NULL, NULL, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
466
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
467 model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo->combo));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
468 populate_vv_device_menuitems(media_type, GTK_LIST_STORE(model));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
469 gtk_combo_box_set_active_id(GTK_COMBO_BOX(combo->combo),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
470 purple_prefs_get_string(preference_key));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
471
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
472 g_signal_handlers_unblock_matched(combo->combo, G_SIGNAL_MATCH_ID,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
473 signal_id, 0, NULL, NULL, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
474 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
475
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
476 /******************************************************************************
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
477 * GObject Implementation
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
478 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
479 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
480 pidgin_vv_prefs_class_init(PidginVVPrefsClass *klass)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
481 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
482 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
483
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
484 gtk_widget_class_set_template_from_resource(
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
485 widget_class,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
486 "/im/pidgin/Pidgin3/Prefs/vv.ui"
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
487 );
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
488
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
489 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
490 voice.input.combo);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
491 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
492 voice.output.combo);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
493 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
494 voice.volume);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
495 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
496 voice.threshold_label);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
497 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
498 voice.threshold);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
499 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
500 voice.level);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
501 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
502 voice.test);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
503 gtk_widget_class_bind_template_callback(widget_class, volume_changed_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
504 gtk_widget_class_bind_template_callback(widget_class,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
505 threshold_value_changed_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
506 gtk_widget_class_bind_template_callback(widget_class,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
507 toggle_voice_test_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
508
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
509 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
510 video.input.combo);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
511 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
512 video.output.combo);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
513 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
514 video.frame);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
515 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
516 video.test);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
517 gtk_widget_class_bind_template_callback(widget_class,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
518 toggle_video_test_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
519 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
520
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
521 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
522 pidgin_vv_prefs_init(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
523 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
524 PurpleMediaManager *manager = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
525
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
526 gtk_widget_init_template(GTK_WIDGET(prefs));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
527
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
528 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
529
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
530 bind_vv_frame(prefs, &prefs->voice.input,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
531 PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SRC);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
532 g_signal_connect_object(manager, "elements-changed::audiosrc",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
533 G_CALLBACK(device_list_changed_cb),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
534 prefs->voice.input.combo, 0);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
535
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
536 bind_vv_frame(prefs, &prefs->voice.output,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
537 PURPLE_MEDIA_ELEMENT_AUDIO | PURPLE_MEDIA_ELEMENT_SINK);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
538 g_signal_connect_object(manager, "elements-changed::audiosink",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
539 G_CALLBACK(device_list_changed_cb),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
540 prefs->voice.output.combo, 0);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
541
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
542 bind_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
543
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
544 bind_vv_frame(prefs, &prefs->video.input,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
545 PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SRC);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
546 g_signal_connect_object(manager, "elements-changed::videosrc",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
547 G_CALLBACK(device_list_changed_cb),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
548 prefs->video.input.combo, 0);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
549
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
550 bind_vv_frame(prefs, &prefs->video.output,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
551 PURPLE_MEDIA_ELEMENT_VIDEO | PURPLE_MEDIA_ELEMENT_SINK);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
552 g_signal_connect_object(manager, "elements-changed::videosink",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
553 G_CALLBACK(device_list_changed_cb),
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
554 prefs->video.output.combo, 0);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
555 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
556
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
557 /******************************************************************************
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
558 * API
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
559 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
560 GtkWidget *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
561 pidgin_vv_prefs_new(void) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
562 return GTK_WIDGET(g_object_new(PIDGIN_TYPE_VV_PREFS, NULL));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
563 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
564
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
565 void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
566 pidgin_vv_prefs_disable_test_pipelines(PidginVVPrefs *prefs) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
567 g_return_if_fail(PIDGIN_IS_VV_PREFS(prefs));
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
568
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
569 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prefs->voice.test), FALSE);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
570 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(prefs->video.test), FALSE);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
571 }

mercurial