pidgin/prefs/pidginvvprefs.c

Thu, 30 Mar 2023 22:31:40 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Thu, 30 Mar 2023 22:31:40 -0500
changeset 42192
82dbf36ac6db
parent 42191
68380e709c16
child 42202
2273647d24b0
permissions
-rw-r--r--

Remove unused pref widget helpers

They are no longer used now that the plugin prefs are gone and other main prefs stopped using them.

Note, there are a couple references in the disabled-by-default plugins, but they need re-writing anyway.

Testing Done:
Compiled only.

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

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 {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
43 AdwComboRow *input;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
44 AdwComboRow *output;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
45 GtkWidget *threshold_row;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46 GtkWidget *threshold;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47 GtkWidget *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48 GtkWidget *test;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
49 GtkWidget *level;
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
50 GtkWidget *drop;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
51 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
52 } voice;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
53
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
54 struct {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
55 AdwComboRow *input;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
56 AdwComboRow *output;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 GtkWidget *frame;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 GtkWidget *test;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60 } video;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
61 };
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
62
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
63 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
64
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
65 /* Keep in sync with voice.level's GtkLevelBar::max-value in the
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
66 * pidgin/resources/Prefs.vv.ui builder file. */
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
67 #define MAX_AUDIO_LEVEL (19.0)
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
68
41394
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 * Helpers
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
72 static void
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
73 populate_vv_device_menuitems(AdwComboRow *row, PurpleMediaElementType type,
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
74 const char *active)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
75 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76 PurpleMediaManager *manager = NULL;
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
77 GListStore *store = NULL;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
78 GList *devices;
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
79 guint selected = 0; /* Default to auto{audio,video}{src,sink} elements. */
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
81 store = G_LIST_STORE(adw_combo_row_get_model(row));
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
82
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
83 g_list_store_remove_all(store);
41394
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 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
86 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
87 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
88 PurpleMediaElementInfo *info = devices->data;
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
89 char *id;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
90
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
91 id = purple_media_element_info_get_id(info);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
92 if(purple_strequal(id, active)) {
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
93 /* The index will be for the *next* appended item. */
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
94 selected = g_list_model_get_n_items(G_LIST_MODEL(store));
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
95 }
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
96 g_free(id);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
97
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
98 g_list_store_append(store, info);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
99
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100 g_object_unref(info);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101 }
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
102
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
103 adw_combo_row_set_selected(row, selected);
41394
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 *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107 create_test_element(PurpleMediaElementType type)
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 PurpleMediaElementInfo *element_info;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 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
112
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113 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
114
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
115 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
116 NULL, NULL, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
117 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
118
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
119 static GstElement *
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
120 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
121 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
122 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
123 GstElement *src, *sink;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
124 GstElement *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
125 GstElement *level;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
126 GstElement *valve;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
127
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
128 pipeline = gst_pipeline_new("voicetest");
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 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
131 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
132 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
133 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
134 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
135
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
136 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
137 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
138 NULL);
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
139
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
140 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
141 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
142
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
143 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
144 "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
145 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
146 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
147
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
148 return pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
149 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
150
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
151 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
152 on_volume_change_cb(GtkWidget *w, G_GNUC_UNUSED gdouble value, gpointer data)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
153 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
154 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
155 GstElement *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
156
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
157 if (!prefs->voice.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
158 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
159 }
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 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
162 g_object_set(volume, "volume",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
163 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
164 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
165
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
166 static gdouble
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
167 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
168 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
169 const GValue *list;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
170 const GValue *value;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
171 gdouble value_db;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
172 gdouble percent;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
173
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
174 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
175 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
176 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
177 G_GNUC_END_IGNORE_DEPRECATIONS
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
178 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
179 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
180 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
181 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
182
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
183 static gboolean
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
184 gst_bus_cb(G_GNUC_UNUSED GstBus *bus, GstMessage *msg, gpointer data)
41394
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 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
187
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
188 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
189 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
190
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
191 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
192 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
193
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
194 if (purple_strequal(name, "level")) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
195 gdouble percent;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
196 gdouble threshold;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
197 gboolean drop;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
198 GstElement *valve;
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 percent = gst_msg_db_to_percent(msg, "rms");
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
201 gtk_level_bar_set_value(GTK_LEVEL_BAR(prefs->voice.level),
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
202 percent * MAX_AUDIO_LEVEL);
41394
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 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
205 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
206 prefs->voice.threshold)) /
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
207 100.0;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
208 drop = percent < threshold;
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
209
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
210 valve = gst_bin_get_by_name(GST_BIN(GST_ELEMENT_PARENT(src)), "valve");
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
211 g_object_set(valve, "drop", drop, NULL);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
212 gtk_label_set_text(GTK_LABEL(prefs->voice.drop),
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
213 drop ? _("DROP") : "");
41394
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 g_free(name);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
217 }
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 return TRUE;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
220 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
221
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
222 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
223 voice_test_destroy_cb(G_GNUC_UNUSED GtkWidget *w, gpointer data)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
224 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
225 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
226
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
227 if (!prefs->voice.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
228 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
229 }
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 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
232 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
233 }
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 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
236 enable_voice_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
237 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
238 GstBus *bus;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
239
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
240 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
241 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
242 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
243 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
244 gst_object_unref(bus);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
245 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
246
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
247 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
248 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
249 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
250 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
251
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
252 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
253 enable_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
254
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
255 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
256 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
257 g_signal_connect(test, "destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
258 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
259 } else {
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
260 gtk_level_bar_set_value(GTK_LEVEL_BAR(prefs->voice.level), 0.0);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
261 gtk_label_set_text(GTK_LABEL(prefs->voice.drop), "");
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
262 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
263 "any-signal::value-changed",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
264 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
265 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
266 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
267 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
268 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
269 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
270 }
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 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
273 volume_changed_cb(G_GNUC_UNUSED GtkScaleButton *button, gdouble value,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
274 G_GNUC_UNUSED gpointer data)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
275 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
276 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
277 }
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 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
280 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
281 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
282 PidginVVPrefs *prefs = data;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
283 int value;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
284 char *tmp;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
285
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
286 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
287 tmp = g_strdup_printf(_("Silence threshold: %d%%"), value);
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
288 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(prefs->voice.threshold_row),
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
289 tmp);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
290 g_free(tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
291
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
292 gtk_level_bar_add_offset_value(GTK_LEVEL_BAR(prefs->voice.level),
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
293 GTK_LEVEL_BAR_OFFSET_LOW,
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
294 value / 100.0 * MAX_AUDIO_LEVEL);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
295
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
296 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
297 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
298
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
299 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
300 bind_voice_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
301 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
302 char *tmp;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
303
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
304 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
305 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
306
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
307 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
308 purple_prefs_get_int("/purple/media/audio/silence_threshold"));
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
309 adw_preferences_row_set_title(ADW_PREFERENCES_ROW(prefs->voice.threshold_row),
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
310 tmp);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
311 g_free(tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
312
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
313 /* Move the default high levels to the end (low is set by
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
314 * threshold_value_changed_cb when set below.) */
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
315 gtk_level_bar_add_offset_value(GTK_LEVEL_BAR(prefs->voice.level),
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
316 GTK_LEVEL_BAR_OFFSET_HIGH,
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
317 MAX_AUDIO_LEVEL);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
318 gtk_level_bar_add_offset_value(GTK_LEVEL_BAR(prefs->voice.level),
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
319 GTK_LEVEL_BAR_OFFSET_FULL,
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
320 MAX_AUDIO_LEVEL);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
321
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
322 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
323 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
324 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
325
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
326 static GstElement *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
327 create_video_pipeline(void)
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 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
330 GstElement *src, *sink;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
331 GstElement *videoconvert;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
332 GstElement *videoscale;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
333
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
334 pipeline = gst_pipeline_new("videotest");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
335 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
336 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
337 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
338 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
339
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
340 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
341
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
342 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
343 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
344 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
345
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
346 return pipeline;
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
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
349 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
350 video_test_destroy_cb(G_GNUC_UNUSED GtkWidget *w, gpointer data)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
351 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
352 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
353
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
354 if (!prefs->video.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
355 return;
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
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
358 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
359 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
360 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
361
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
362 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
363 enable_video_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
364 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
365 GtkWidget *video = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
366 GstElement *sink = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
367
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
368 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
369
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
370 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
371 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
372 gtk_widget_show(video);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
373
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
374 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
375 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
376
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
377 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
378 GST_STATE_PLAYING);
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
379
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
380 g_object_unref(video);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
381 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
382
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
383 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
384 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
385 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
386 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
387
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
388 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
389 enable_video_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
390 g_signal_connect(test, "destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
391 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
392 } else {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
393 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
394 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
395 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
396 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
397 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
398 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
399
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
400 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
401 vv_device_changed_cb(const gchar *name, G_GNUC_UNUSED PurplePrefType type,
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
402 gconstpointer value, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
403 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
404 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
405
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
406 PurpleMediaManager *manager;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
407 PurpleMediaElementInfo *info;
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 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
410 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
411 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
412
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
413 /* Refresh test viewers */
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
414 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
415 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
416 enable_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
417 } 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
418 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
419 enable_video_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
420 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
421 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
422
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
423 static const char *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
424 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
425 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
426 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
427 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
428 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
429 } 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
430 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
431 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
432 } 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
433 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
434 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
435 } 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
436 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
437 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
438 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
439
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
440 return NULL;
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
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
443 static void
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
444 vv_combo_row_set(GObject *obj, G_GNUC_UNUSED GParamSpec *pspec, gpointer data)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
445 {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
446 const char *key = data;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
447 PurpleMediaElementInfo *item = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
448 char *id = NULL;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
449
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
450 item = adw_combo_row_get_selected_item(ADW_COMBO_ROW(obj));
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
451 id = purple_media_element_info_get_id(item);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
452 purple_prefs_set_string(key, id);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
453 g_free(id);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
454 }
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 static void
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
457 bind_vv_combo(PidginVVPrefs *prefs, AdwComboRow *row,
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
458 PurpleMediaElementType type)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
459 {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
460 const char *pref_key = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
461 const char *pref_value = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
462
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
463 pref_key = purple_media_type_to_preference_key(type);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
464 pref_value = purple_prefs_get_string(pref_key);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
465
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
466 populate_vv_device_menuitems(row, type, pref_value);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
467
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
468 g_signal_connect(row, "notify::selected", G_CALLBACK(vv_combo_row_set),
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
469 (gpointer)pref_key);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
470
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
471 purple_prefs_connect_callback(row, pref_key, vv_device_changed_cb, prefs);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
472 g_signal_connect_swapped(row, "destroy",
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
473 G_CALLBACK(purple_prefs_disconnect_by_handle),
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
474 row);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
475
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
476 g_object_set_data(G_OBJECT(row), "vv_media_type", GINT_TO_POINTER(type));
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
477 }
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
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41627
diff changeset
480 device_list_changed_cb(G_GNUC_UNUSED PurpleMediaManager *manager,
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
481 gpointer data)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
482 {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
483 AdwComboRow *row = data;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
484 PurpleMediaElementInfo *original = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
485 PurpleMediaElementInfo *selected = NULL;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
486 PurpleMediaElementType media_type;
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
487 const char *pref_key = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
488 const char *pref_value = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
489
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
490 original = g_object_ref(adw_combo_row_get_selected_item(row));
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
491
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
492 media_type = (PurpleMediaElementType)GPOINTER_TO_INT(
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
493 g_object_get_data(
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
494 G_OBJECT(row),
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
495 "vv_media_type"));
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
496 pref_key = purple_media_type_to_preference_key(media_type);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
497 pref_value = purple_prefs_get_string(pref_key);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
498
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
499 /* Block signals so pref doesn't get re-saved while changing UI. */
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
500 g_signal_handlers_block_by_func(row, vv_combo_row_set, (gpointer)pref_key);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
501
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
502 populate_vv_device_menuitems(row, media_type, pref_value);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
503
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
504 g_signal_handlers_unblock_by_func(row, vv_combo_row_set,
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
505 (gpointer)pref_key);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
506
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
507 selected = adw_combo_row_get_selected_item(row);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
508 if(original != selected) {
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
509 /* We blocked signals to prevent accidentally changing the selected
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
510 * element while the combo row repopulates, but now the original
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
511 * element is gone, so we need to push this change back to the pref. */
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
512 char *id = purple_media_element_info_get_id(selected);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
513 purple_prefs_set_string(pref_key, id);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
514 g_free(id);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
515 }
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
516
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
517 g_clear_object(&original);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
518 }
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 * GObject Implementation
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
522 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
523 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
524 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
525 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
526 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
527
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
528 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
529 widget_class,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
530 "/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
531 );
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
532
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
533 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
534 voice.input);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
535 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
536 voice.output);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
537 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
538 voice.volume);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
539 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
540 voice.threshold_row);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
541 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
542 voice.threshold);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
543 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
544 voice.level);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
545 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
546 voice.drop);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
547 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
548 voice.test);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
549 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
550 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
551 threshold_value_changed_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
552 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
553 toggle_voice_test_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
554
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
555 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
556 video.input);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
557 gtk_widget_class_bind_template_child(widget_class, PidginVVPrefs,
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
558 video.output);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
559 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
560 video.frame);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
561 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
562 video.test);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
563 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
564 toggle_video_test_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
565 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
566
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
567 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
568 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
569 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
570 PurpleMediaManager *manager = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
571
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
572 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
573
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
574 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
575
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
576 bind_vv_combo(prefs, prefs->voice.input,
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
577 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
578 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
579 G_CALLBACK(device_list_changed_cb),
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
580 prefs->voice.input, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
581
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
582 bind_vv_combo(prefs, prefs->voice.output,
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
583 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
584 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
585 G_CALLBACK(device_list_changed_cb),
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
586 prefs->voice.output, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
587
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
588 bind_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
589
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
590 bind_vv_combo(prefs, prefs->video.input,
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
591 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
592 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
593 G_CALLBACK(device_list_changed_cb),
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
594 prefs->video.input, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
595
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
596 bind_vv_combo(prefs, prefs->video.output,
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
597 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
598 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
599 G_CALLBACK(device_list_changed_cb),
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
600 prefs->video.output, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
601 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
602
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
603 /******************************************************************************
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
604 * API
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
605 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
606 GtkWidget *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
607 pidgin_vv_prefs_new(void) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
608 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
609 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
610
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
611 void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
612 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
613 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
614
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
615 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
616 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
617 }

mercurial