pidgin/prefs/pidginvvprefs.c

Sun, 03 Nov 2024 00:05:44 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 03 Nov 2024 00:05:44 -0500
changeset 43045
308e8d0ce68c
parent 42644
efe66edc9676
permissions
-rw-r--r--

remove purple3-url-handler.desktop.in.in

The application that did the launching was removed long ago. Also this should
be implemented by the user interfaces and they might provide separate files to
groups schemas as well.

Testing Done:
Called in the turtles.

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

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
42410
563e7a17c220 Fix possible clash of config headers
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42202
diff changeset
23 #include <purpleconfig.h>
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25 #include <math.h>
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 <glib/gi18n-lib.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 <purple.h>
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
31 #include <adwaita.h>
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
32
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
33 #include "pidginvvprefs.h"
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34 #include "pidgincore.h"
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35 #include "pidginprefsinternal.h"
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
36
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 struct _PidginVVPrefs {
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
38 AdwPreferencesPage parent;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
40 struct {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
41 AdwComboRow *input;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
42 AdwComboRow *output;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
43 GtkWidget *threshold_row;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
44 GtkWidget *threshold;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
45 GtkWidget *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46 GtkWidget *test;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
47 GtkWidget *level;
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
48 GtkWidget *drop;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 } voice;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
51
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
52 struct {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
53 AdwComboRow *input;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
54 AdwComboRow *output;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55 GtkWidget *frame;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 GtkWidget *test;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 } video;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 };
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42410
diff changeset
61 G_DEFINE_FINAL_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
62
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
63 /* 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
64 * 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
65 #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
66
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 /******************************************************************************
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
68 * Helpers
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 static void
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
71 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
72 const char *active)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
73 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
74 PurpleMediaManager *manager = NULL;
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
75 GListStore *store = NULL;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76 GList *devices;
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
77 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
78
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
79 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
80
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
81 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
82
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
83 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
84 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
85 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
86 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
87 char *id;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
88
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
89 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
90 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
91 /* 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
92 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
93 }
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
94 g_free(id);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
95
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
96 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
97
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
98 g_object_unref(info);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99 }
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
100
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
101 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
102 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
104 static GstElement *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105 create_test_element(PurpleMediaElementType type)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107 PurpleMediaElementInfo *element_info;
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 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
110
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 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
112
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113 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
114 NULL, NULL, NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
115 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
116
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
117 static GstElement *
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
118 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
119 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
120 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
121 GstElement *src, *sink;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
122 GstElement *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
123 GstElement *level;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
124 GstElement *valve;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
125
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
126 pipeline = gst_pipeline_new("voicetest");
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 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
129 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
130 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
131 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
132 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
133
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
134 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
135 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
136 NULL);
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
137
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
138 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
139 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
140
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
141 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
142 "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
143 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
144 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
145
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
146 return pipeline;
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
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
149 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
150 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
151 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
152 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
153 GstElement *volume;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
154
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
155 if (!prefs->voice.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
156 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
157 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
158
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
159 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
160 g_object_set(volume, "volume",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
161 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
162 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
163
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
164 static gdouble
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
165 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
166 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
167 const GValue *list;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
168 const GValue *value;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
169 gdouble value_db;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
170 gdouble percent;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
171
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
172 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
173 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
174 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
175 G_GNUC_END_IGNORE_DEPRECATIONS
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
176 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
177 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
178 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
179 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
180
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
181 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
182 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
183 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
184 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
185
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
186 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
187 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
188
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
189 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
190 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
191
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
192 if (purple_strequal(name, "level")) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
193 gdouble percent;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
194 gdouble threshold;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
195 gboolean drop;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
196 GstElement *valve;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
197
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
198 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
199 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
200 percent * MAX_AUDIO_LEVEL);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
201
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
202 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
203 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
204 prefs->voice.threshold)) /
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
205 100.0;
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
206 drop = percent < threshold;
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
207
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
208 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
209 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
210 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
211 drop ? _("DROP") : "");
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
212 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
213
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
214 g_free(name);
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
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
217 return TRUE;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
218 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
219
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
220 static void
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
221 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
222 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
223 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
224
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
225 if (!prefs->voice.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
226 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
227 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
228
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
229 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
230 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
231 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
232
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
233 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
234 enable_voice_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
235 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
236 GstBus *bus;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
237
41613
4be49932c288 Set volume on audio test pipeline at startup
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41552
diff changeset
238 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
239 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
240 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
241 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
242 gst_object_unref(bus);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
243 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
244
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
245 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
246 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
247 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
248 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
249
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
250 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
251 enable_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
252
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
253 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
254 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
255 g_signal_connect(test, "destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
256 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
257 } else {
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
258 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
259 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
260 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
261 "any-signal::value-changed",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
262 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
263 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
264 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
265 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
266 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
267 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
268 }
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 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
271 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
272 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
273 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
274 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
275 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
276
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
277 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
278 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
279 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
280 PidginVVPrefs *prefs = data;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
281 int value;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
282 char *tmp;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
283
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
284 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
285 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
286 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
287 tmp);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
288 g_free(tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
289
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
290 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
291 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
292 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
293
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
294 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
295 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
296
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
297 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
298 bind_voice_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
299 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
300 char *tmp;
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 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
303 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
304
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
305 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
306 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
307 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
308 tmp);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
309 g_free(tmp);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
310
41627
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
311 /* 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
312 * 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
313 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
314 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
315 MAX_AUDIO_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_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
317 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
318 MAX_AUDIO_LEVEL);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
319
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
320 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
321 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
322 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
323
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
324 static GstElement *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
325 create_video_pipeline(void)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
326 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
327 GstElement *pipeline;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
328 GstElement *src, *sink;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
329 GstElement *videoconvert;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
330 GstElement *videoscale;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
331
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
332 pipeline = gst_pipeline_new("videotest");
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
333 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
334 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
335 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
336 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
337
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
338 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
339
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
340 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
341 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
342 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
343
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
344 return pipeline;
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
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
347 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
348 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
349 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
350 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
351
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
352 if (!prefs->video.pipeline) {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
353 return;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
354 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
355
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
356 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
357 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
358 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
359
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
360 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
361 enable_video_test(PidginVVPrefs *prefs)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
362 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
363 GtkWidget *video = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
364 GstElement *sink = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
365
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
366 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
367
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
368 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
369 g_object_get(sink, "widget", &video, NULL);
42202
2273647d24b0 Use gtk_widget_set_visible for everything
Gary Kramlich <grim@reaperworld.com>
parents: 42191
diff changeset
370 gtk_widget_set_visible(video, TRUE);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
371
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
372 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
373 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
374
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
375 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
376 GST_STATE_PLAYING);
41552
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
377
c9157099adf8 Convert Voice&Video prefs page to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41394
diff changeset
378 g_object_unref(video);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
379 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
380
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
381 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
382 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
383 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
384 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
385
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
386 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
387 enable_video_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
388 g_signal_connect(test, "destroy",
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
389 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
390 } else {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
391 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
392 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
393 NULL);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
394 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
395 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
396 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
397
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
398 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
399 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
400 gconstpointer value, gpointer data)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
401 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
402 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
403
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
404 PurpleMediaManager *manager;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
405 PurpleMediaElementInfo *info;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
406
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
407 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
408 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
409 purple_media_manager_set_active_element(manager, info);
42644
efe66edc9676 Fix media leaks
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
410 g_object_unref(info);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
411
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
412 /* Refresh test viewers */
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
413 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
414 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
415 enable_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
416 } 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
417 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
418 enable_video_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
419 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
420 }
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 static const char *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
423 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
424 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
425 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
426 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
427 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
428 } 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
429 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
430 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
431 } 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
432 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
433 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
434 } 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
435 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
436 }
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 return NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
440 }
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 static void
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
443 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
444 {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
445 const char *key = data;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
446 PurpleMediaElementInfo *item = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
447 char *id = NULL;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
448
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
449 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
450 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
451 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
452 g_free(id);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
453 }
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 static void
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
456 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
457 PurpleMediaElementType type)
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
458 {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
459 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
460 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
461
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
462 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
463 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
464
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
465 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
466
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
467 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
468 (gpointer)pref_key);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
469
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
470 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
471 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
472 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
473 row);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
474
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
475 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
476 }
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 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
479 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
480 gpointer data)
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
481 {
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
482 AdwComboRow *row = data;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
483 PurpleMediaElementInfo *original = NULL;
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
484 PurpleMediaElementInfo *selected = NULL;
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
485 PurpleMediaElementType media_type;
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
486 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
487 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
488
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
489 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
490
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
491 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
492 g_object_get_data(
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
493 G_OBJECT(row),
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
494 "vv_media_type"));
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
495 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
496 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
497
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
498 /* 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
499 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
500
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
501 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
502
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
503 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
504 (gpointer)pref_key);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
505
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
506 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
507 if(original != selected) {
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
508 /* 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
509 * 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
510 * 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
511 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
512 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
513 g_free(id);
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
514 }
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
515
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
516 g_clear_object(&original);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
517 }
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 * GObject Implementation
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
521 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
522 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
523 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
524 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
525 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
526
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
527 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
528 widget_class,
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
529 "/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
530 );
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 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
533 voice.input);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
534 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
535 voice.output);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
536 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
537 voice.volume);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
538 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
539 voice.threshold_row);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
540 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
541 voice.threshold);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
542 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
543 voice.level);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
544 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
545 voice.drop);
7d9b4a9d5c3e Move VV preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41613
diff changeset
546 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
547 voice.test);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
548 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
549 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
550 threshold_value_changed_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
551 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
552 toggle_voice_test_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
553
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
554 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
555 video.input);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
556 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
557 video.output);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
558 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
559 video.frame);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
560 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
561 video.test);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
562 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
563 toggle_video_test_cb);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
564 }
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
565
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
566 static void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
567 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
568 {
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
569 PurpleMediaManager *manager = NULL;
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
570
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
571 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
572
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
573 manager = purple_media_manager_get();
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
574
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
575 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
576 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
577 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
578 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
579 prefs->voice.input, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
580
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
581 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
582 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
583 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
584 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
585 prefs->voice.output, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
586
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
587 bind_voice_test(prefs);
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
588
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
589 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
590 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
591 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
592 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
593 prefs->video.input, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
594
42191
68380e709c16 Port VV preferences from GtkComboBox to AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42108
diff changeset
595 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
596 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
597 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
598 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
599 prefs->video.output, 0);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
600 }
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 * API
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
604 *****************************************************************************/
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
605 GtkWidget *
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
606 pidgin_vv_prefs_new(void) {
42592
6b65c0e4ba15 Remove unnecessary casts for GObject methods
Gary Kramlich <grim@reaperworld.com>
parents: 42575
diff changeset
607 return g_object_new(PIDGIN_TYPE_VV_PREFS, NULL);
41394
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
608 }
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 void
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
611 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
612 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
613
1327e58acce3 Split VV prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
614 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
615 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
616 }

mercurial