46
51
GtkWidget *alsabox;
47
52
GtkWidget *alsa_conf;
48
54
GtkWidget *noise_conf;
50
56
// Codec properties ID
54
COLUMN_CODEC_FREQUENCY,
56
COLUMN_CODEC_BANDWIDTH,
60
COLUMN_CODEC_FREQUENCY,
62
COLUMN_CODEC_BANDWIDTH,
61
67
* Fills the tree list with supported codecs
63
void preferences_dialog_fill_codec_list (account_t **a) {
65
GtkListStore *codecStore;
69
// Get model of view and clear it
70
codecStore = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (codecTreeView)));
71
gtk_list_store_clear (codecStore);
74
current = (*a)->codecs;
78
current = get_system_codec_list ();
84
for(i = 0; i < current->length; i++)
86
codec_t *c = codec_list_get_nth (i, current);
89
DEBUG ("%s", c->name);
90
gtk_list_store_append (codecStore, &iter);
91
gtk_list_store_set (codecStore, &iter,
92
COLUMN_CODEC_ACTIVE, c->is_active, // Active
93
COLUMN_CODEC_NAME, c->name, // Name
94
COLUMN_CODEC_FREQUENCY, g_strdup_printf("%d kHz", c->sample_rate/1000), // Frequency (kHz)
95
COLUMN_CODEC_BITRATE, g_strdup_printf("%.1f kbps", c->_bitrate), // Bitrate (kbps)
96
COLUMN_CODEC_BANDWIDTH, g_strdup_printf("%.1f kbps", c->_bandwidth), // Bandwidth (kpbs)
69
void preferences_dialog_fill_codec_list (account_t **a)
72
GtkListStore *codecStore;
76
// Get model of view and clear it
77
codecStore = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (codecTreeView)));
78
gtk_list_store_clear (codecStore);
81
current = (*a)->codecs;
84
current = get_system_codec_list ();
91
for (i = 0; i < current->length; i++) {
92
codec_t *c = codec_list_get_nth (i, current);
95
DEBUG ("%s", c->name);
96
gtk_list_store_append (codecStore, &iter);
97
gtk_list_store_set (codecStore, &iter,
98
COLUMN_CODEC_ACTIVE, c->is_active, // Active
99
COLUMN_CODEC_NAME, c->name, // Name
100
COLUMN_CODEC_FREQUENCY, g_strdup_printf ("%d kHz", c->sample_rate/1000), // Frequency (kHz)
101
COLUMN_CODEC_BITRATE, g_strdup_printf ("%.1f kbps", c->_bitrate), // Bitrate (kbps)
102
COLUMN_CODEC_BANDWIDTH, g_strdup_printf ("%.1f kbps", c->_bandwidth), // Bandwidth (kpbs)
103
109
* Fill store with output audio plugins
106
preferences_dialog_fill_output_audio_plugin_list()
112
preferences_dialog_fill_audio_plugin_list()
112
gtk_list_store_clear(pluginlist);
114
// Call dbus to retreive list
115
list = dbus_get_output_audio_plugin_list();
116
// For each API name included in list
120
for(managerName = list[c]; managerName != NULL; managerName = list[c])
123
gtk_list_store_append(pluginlist, &iter);
124
gtk_list_store_set(pluginlist, &iter, 0 , managerName, -1);
118
gtk_list_store_clear (pluginlist);
120
// Call dbus to retreive list
121
list = dbus_get_audio_plugin_list();
122
// For each API name included in list
126
for (managerName = list[c]; managerName != NULL; managerName = list[c]) {
128
gtk_list_store_append (pluginlist, &iter);
129
gtk_list_store_set (pluginlist, &iter, 0 , managerName, -1);
131
138
* Fill output audio device store
134
141
preferences_dialog_fill_output_audio_device_list()
142
gtk_list_store_clear(outputlist);
144
// Call dbus to retreive list
145
list = dbus_get_audio_output_device_list();
147
// For each device name included in list
149
for(audioDevice = list; *list ; list++)
151
index = dbus_get_audio_device_index( *list );
152
gtk_list_store_append(outputlist, &iter);
153
gtk_list_store_set(outputlist, &iter, 0, *list, 1, index, -1);
149
gtk_list_store_clear (outputlist);
151
// Call dbus to retreive list
152
list = dbus_get_audio_output_device_list();
154
// For each device name included in list
157
for (audioDevice = list; *list ; list++) {
158
index = dbus_get_audio_device_index (*list);
159
gtk_list_store_append (outputlist, &iter);
160
gtk_list_store_set (outputlist, &iter, 0, *list, 1, index, -1);
167
* Fill rigntone audio device store
171
preferences_dialog_fill_ringtone_audio_device_list()
179
gtk_list_store_clear (ringtonelist);
181
// Call dbus to retreive output device
182
list = dbus_get_audio_output_device_list();
184
// For each device name in the list
187
for (audioDevice = list; *list; list++) {
188
index = dbus_get_audio_device_index (*list);
189
gtk_list_store_append (ringtonelist, &iter);
190
gtk_list_store_set (ringtonelist, &iter, 0, *list, 1, index, -1);
159
198
* Select active output audio device
162
201
select_active_output_audio_device()
170
int currentDeviceIndex;
173
// Select active output device on server
174
devices = dbus_get_current_audio_devices_index();
175
currentDeviceIndex = atoi(devices[0]);
176
DEBUG("audio device index for output = %d", currentDeviceIndex);
177
model = gtk_combo_box_get_model(GTK_COMBO_BOX(output));
179
// Find the currently set output device
180
gtk_tree_model_get_iter_first(model, &iter);
182
gtk_tree_model_get(model, &iter, 1, &deviceIndex, -1);
183
if(deviceIndex == currentDeviceIndex)
185
// Set current iteration the active one
186
gtk_combo_box_set_active_iter(GTK_COMBO_BOX(output), &iter);
189
} while(gtk_tree_model_iter_next(model, &iter));
191
// No index was found, select first one
192
WARN("Warning : No active output device found");
193
gtk_combo_box_set_active(GTK_COMBO_BOX(output), 0);
203
if (SHOW_ALSA_CONF) {
208
int currentDeviceIndex;
211
// Select active output device on server
212
devices = dbus_get_current_audio_devices_index();
213
currentDeviceIndex = atoi (devices[0]);
214
DEBUG ("audio device index for output = %d", currentDeviceIndex);
215
model = gtk_combo_box_get_model (GTK_COMBO_BOX (output));
217
// Find the currently set output device
218
gtk_tree_model_get_iter_first (model, &iter);
221
gtk_tree_model_get (model, &iter, 1, &deviceIndex, -1);
223
if (deviceIndex == currentDeviceIndex) {
224
// Set current iteration the active one
225
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (output), &iter);
228
} while (gtk_tree_model_iter_next (model, &iter));
230
// No index was found, select first one
231
WARN ("Warning : No active output device found");
232
gtk_combo_box_set_active (GTK_COMBO_BOX (output), 0);
238
* Select active output audio device
241
select_active_ringtone_audio_device()
243
if (SHOW_ALSA_CONF) {
248
int currentDeviceIndex;
251
// Select active ringtone device on server
252
devices = dbus_get_current_audio_devices_index();
253
currentDeviceIndex = atoi (devices[2]);
254
DEBUG ("audio device index for ringtone = %d", currentDeviceIndex);
255
model = gtk_combo_box_get_model (GTK_COMBO_BOX (ringtone));
257
// Find the currently set ringtone device
258
gtk_tree_model_get_iter_first (model, &iter);
261
gtk_tree_model_get (model, &iter, 1, &deviceIndex, -1);
263
if (deviceIndex == currentDeviceIndex) {
264
// Set current iteration the active one
265
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (ringtone), &iter);
268
} while (gtk_tree_model_iter_next (model, &iter));
270
// No index was found, select first one
271
WARN ("Warning : No active ringtone device found");
272
gtk_combo_box_set_active (GTK_COMBO_BOX (ringtone), 0);
198
277
* Fill input audio device store
201
280
preferences_dialog_fill_input_audio_device_list()
208
gtk_list_store_clear(inputlist);
210
// Call dbus to retreive list
211
list = dbus_get_audio_input_device_list();
213
// For each device name included in list
215
for(audioDevice = list; *list; list++)
217
index = dbus_get_audio_device_index( *list );
218
gtk_list_store_append(inputlist, &iter);
219
gtk_list_store_set(inputlist, &iter, 0, *list, 1, index, -1);
287
gtk_list_store_clear (inputlist);
289
// Call dbus to retreive list
290
list = dbus_get_audio_input_device_list();
292
// For each device name included in list
294
for (audioDevice = list; *list; list++) {
295
index = dbus_get_audio_device_index (*list);
296
gtk_list_store_append (inputlist, &iter);
297
gtk_list_store_set (inputlist, &iter, 0, *list, 1, index, -1);
226
304
* Select active input audio device
229
307
select_active_input_audio_device()
237
int currentDeviceIndex;
240
// Select active input device on server
241
devices = dbus_get_current_audio_devices_index();
242
currentDeviceIndex = atoi(devices[1]);
243
model = gtk_combo_box_get_model(GTK_COMBO_BOX(input));
245
// Find the currently set input device
246
gtk_tree_model_get_iter_first(model, &iter);
248
gtk_tree_model_get(model, &iter, 1, &deviceIndex, -1);
249
if(deviceIndex == currentDeviceIndex)
251
// Set current iteration the active one
252
gtk_combo_box_set_active_iter(GTK_COMBO_BOX(input), &iter);
255
} while(gtk_tree_model_iter_next(model, &iter));
257
// No index was found, select first one
258
WARN("Warning : No active input device found");
259
gtk_combo_box_set_active(GTK_COMBO_BOX(input), 0);
309
if (SHOW_ALSA_CONF) {
314
int currentDeviceIndex;
317
// Select active input device on server
318
devices = dbus_get_current_audio_devices_index();
319
currentDeviceIndex = atoi (devices[1]);
320
model = gtk_combo_box_get_model (GTK_COMBO_BOX (input));
322
// Find the currently set input device
323
gtk_tree_model_get_iter_first (model, &iter);
326
gtk_tree_model_get (model, &iter, 1, &deviceIndex, -1);
328
if (deviceIndex == currentDeviceIndex) {
329
// Set current iteration the active one
330
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (input), &iter);
333
} while (gtk_tree_model_iter_next (model, &iter));
335
// No index was found, select first one
336
WARN ("Warning : No active input device found");
337
gtk_combo_box_set_active (GTK_COMBO_BOX (input), 0);
264
342
* Select the output audio plugin by calling the server
267
select_output_audio_plugin(GtkComboBox* widget, gpointer data UNUSED)
345
select_output_audio_plugin (GtkComboBox* widget, gpointer data UNUSED)
274
comboBoxIndex = gtk_combo_box_get_active(widget);
276
if(comboBoxIndex >= 0)
278
model = gtk_combo_box_get_model(widget);
279
gtk_combo_box_get_active_iter(widget, &iter);
280
gtk_tree_model_get(model, &iter, 0, &pluginName, -1);
281
dbus_set_output_audio_plugin(pluginName);
282
//update_combo_box( pluginName);
352
comboBoxIndex = gtk_combo_box_get_active (widget);
354
if (comboBoxIndex >= 0) {
355
model = gtk_combo_box_get_model (widget);
356
gtk_combo_box_get_active_iter (widget, &iter);
357
gtk_tree_model_get (model, &iter, 0, &pluginName, -1);
358
dbus_set_audio_plugin (pluginName);
359
//update_combo_box( pluginName);
287
364
* Select active output audio plugin
290
367
select_active_output_audio_plugin()
297
// Select active output device on server
298
pluginname = dbus_get_current_audio_output_plugin();
300
model = gtk_combo_box_get_model(GTK_COMBO_BOX(plugin));
302
// Find the currently alsa plugin
303
gtk_tree_model_get_iter_first(model, &iter);
305
gtk_tree_model_get(model, &iter, 0, &pluginname , -1);
306
if( g_strcasecmp( tmp , pluginname ) == 0 )
308
// Set current iteration the active one
309
gtk_combo_box_set_active_iter(GTK_COMBO_BOX(plugin), &iter);
310
//update_combo_box( plugin );
313
} while(gtk_tree_model_iter_next(model, &iter));
315
// No index was found, select first one
316
WARN("Warning : No active output device found");
317
gtk_combo_box_set_active(GTK_COMBO_BOX(plugin), 0);
374
// Select active output device on server
375
pluginname = dbus_get_current_audio_output_plugin();
377
model = gtk_combo_box_get_model (GTK_COMBO_BOX (plugin));
379
// Find the currently alsa plugin
380
gtk_tree_model_get_iter_first (model, &iter);
383
gtk_tree_model_get (model, &iter, 0, &pluginname , -1);
385
if (g_strcasecmp (tmp , pluginname) == 0) {
386
// Set current iteration the active one
387
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (plugin), &iter);
388
//update_combo_box( plugin );
391
} while (gtk_tree_model_iter_next (model, &iter));
393
// No index was found, select first one
394
WARN ("Warning : No active output device found");
395
gtk_combo_box_set_active (GTK_COMBO_BOX (plugin), 0);
322
400
* Set the audio output device on the server with its index
325
select_audio_output_device(GtkComboBox* comboBox, gpointer data UNUSED)
403
select_audio_output_device (GtkComboBox* comboBox, gpointer data UNUSED)
332
comboBoxIndex = gtk_combo_box_get_active(comboBox);
334
if(comboBoxIndex >= 0)
336
model = gtk_combo_box_get_model(comboBox);
337
gtk_combo_box_get_active_iter(comboBox, &iter);
338
gtk_tree_model_get(model, &iter, 1, &deviceIndex, -1);
340
dbus_set_audio_output_device(deviceIndex);
410
comboBoxIndex = gtk_combo_box_get_active (comboBox);
412
if (comboBoxIndex >= 0) {
413
model = gtk_combo_box_get_model (comboBox);
414
gtk_combo_box_get_active_iter (comboBox, &iter);
415
gtk_tree_model_get (model, &iter, 1, &deviceIndex, -1);
417
dbus_set_audio_output_device (deviceIndex);
345
422
* Set the audio input device on the server with its index
348
select_audio_input_device(GtkComboBox* comboBox, gpointer data UNUSED)
355
comboBoxIndex = gtk_combo_box_get_active(comboBox);
357
if(comboBoxIndex >= 0)
359
model = gtk_combo_box_get_model(comboBox);
360
gtk_combo_box_get_active_iter(comboBox, &iter);
361
gtk_tree_model_get(model, &iter, 1, &deviceIndex, -1);
363
dbus_set_audio_input_device(deviceIndex);
425
select_audio_input_device (GtkComboBox* comboBox, gpointer data UNUSED)
432
comboBoxIndex = gtk_combo_box_get_active (comboBox);
434
if (comboBoxIndex >= 0) {
435
model = gtk_combo_box_get_model (comboBox);
436
gtk_combo_box_get_active_iter (comboBox, &iter);
437
gtk_tree_model_get (model, &iter, 1, &deviceIndex, -1);
439
dbus_set_audio_input_device (deviceIndex);
445
+ * Set the audio ringtone device on the server with its index
448
select_audio_ringtone_device (GtkComboBox *comboBox, gpointer data UNUSED)
455
comboBoxIndex = gtk_combo_box_get_active (comboBox);
457
if (comboBoxIndex >= 0) {
458
model = gtk_combo_box_get_model (comboBox);
459
gtk_combo_box_get_active_iter (comboBox, &iter);
461
gtk_tree_model_get (model, &iter, 1, &deviceIndex, -1);
463
dbus_set_audio_ringtone_device (deviceIndex);
368
469
* Toggle move buttons on if a codec is selected, off elsewise
371
select_codec(GtkTreeSelection *selection, GtkTreeModel *model)
472
select_codec (GtkTreeSelection *selection, GtkTreeModel *model)
375
if(!gtk_tree_selection_get_selected(selection, &model, &iter))
377
gtk_widget_set_sensitive(GTK_WIDGET(codecMoveUpButton), FALSE);
378
gtk_widget_set_sensitive(GTK_WIDGET(codecMoveDownButton), FALSE);
382
gtk_widget_set_sensitive(GTK_WIDGET(codecMoveUpButton), TRUE);
383
gtk_widget_set_sensitive(GTK_WIDGET(codecMoveDownButton), TRUE);
476
if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
477
gtk_widget_set_sensitive (GTK_WIDGET (codecMoveUpButton), FALSE);
478
gtk_widget_set_sensitive (GTK_WIDGET (codecMoveDownButton), FALSE);
480
gtk_widget_set_sensitive (GTK_WIDGET (codecMoveUpButton), TRUE);
481
gtk_widget_set_sensitive (GTK_WIDGET (codecMoveDownButton), TRUE);
388
486
* Toggle active value of codec on click and update changes to the deamon
389
487
* and in configuration files
392
codec_active_toggled (GtkCellRendererToggle *renderer UNUSED, gchar *path, gpointer data )
490
codec_active_toggled (GtkCellRendererToggle *renderer UNUSED, gchar *path, gpointer data)
395
GtkTreePath *treePath;
403
// Get path of clicked codec active toggle box
404
treePath = gtk_tree_path_new_from_string(path);
405
model = gtk_tree_view_get_model (GTK_TREE_VIEW (codecTreeView));
406
gtk_tree_model_get_iter(model, &iter, treePath);
409
acc = (account_t*) data;
412
ERROR ("Aie, no account selected");
414
// Get active value and name at iteration
415
gtk_tree_model_get(model, &iter,
416
COLUMN_CODEC_ACTIVE, &active,
417
COLUMN_CODEC_NAME, &name,
418
COLUMN_CODEC_FREQUENCY, &srate,
421
printf("%s, %s\n", name, srate);
422
printf("%i\n", g_queue_get_length (acc->codecs));
424
// codec_list_get_by_name(name);
425
if ((g_strcasecmp(name,"speex")==0) && (g_strcasecmp(srate,"8 kHz")==0))
426
codec = codec_list_get_by_payload((gconstpointer) 110, acc->codecs);
427
else if ((g_strcasecmp(name,"speex")==0) && (g_strcasecmp(srate,"16 kHz")==0))
428
codec = codec_list_get_by_payload((gconstpointer) 111, acc->codecs);
429
else if ((g_strcasecmp(name,"speex")==0) && (g_strcasecmp(srate,"32 kHz")==0))
430
codec = codec_list_get_by_payload((gconstpointer) 112, acc->codecs);
432
codec = codec_list_get_by_name ((gconstpointer) name, acc->codecs);
434
// Toggle active value
438
gtk_list_store_set(GTK_LIST_STORE(model), &iter,
439
COLUMN_CODEC_ACTIVE, active,
442
gtk_tree_path_free(treePath);
444
// Modify codec queue to represent change
446
codec_set_active (&codec);
448
codec_set_inactive (&codec);
450
// Perpetuate changes to the deamon
451
// codec_list_update_to_daemon (acc);
493
GtkTreePath *treePath;
501
// Get path of clicked codec active toggle box
502
treePath = gtk_tree_path_new_from_string (path);
503
model = gtk_tree_view_get_model (GTK_TREE_VIEW (codecTreeView));
504
gtk_tree_model_get_iter (model, &iter, treePath);
507
acc = (account_t*) data;
510
ERROR ("Aie, no account selected");
512
// Get active value and name at iteration
513
gtk_tree_model_get (model, &iter,
514
COLUMN_CODEC_ACTIVE, &active,
515
COLUMN_CODEC_NAME, &name,
516
COLUMN_CODEC_FREQUENCY, &srate,
519
printf ("%s, %s\n", name, srate);
520
printf ("%i\n", g_queue_get_length (acc->codecs));
522
// codec_list_get_by_name(name);
523
if ( (g_strcasecmp (name,"speex") ==0) && (g_strcasecmp (srate,"8 kHz") ==0))
524
codec = codec_list_get_by_payload ( (gconstpointer) 110, acc->codecs);
525
else if ( (g_strcasecmp (name,"speex") ==0) && (g_strcasecmp (srate,"16 kHz") ==0))
526
codec = codec_list_get_by_payload ( (gconstpointer) 111, acc->codecs);
527
else if ( (g_strcasecmp (name,"speex") ==0) && (g_strcasecmp (srate,"32 kHz") ==0))
528
codec = codec_list_get_by_payload ( (gconstpointer) 112, acc->codecs);
530
codec = codec_list_get_by_name ( (gconstpointer) name, acc->codecs);
532
// Toggle active value
536
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
537
COLUMN_CODEC_ACTIVE, active,
540
gtk_tree_path_free (treePath);
542
// Modify codec queue to represent change
544
codec_set_active (&codec);
546
codec_set_inactive (&codec);
548
// Perpetuate changes to the deamon
549
// codec_list_update_to_daemon (acc);
455
553
* Move codec in list depending on direction and selected codec and
456
554
* update changes in the daemon list and the configuration files
458
static void codec_move (gboolean moveUp, gpointer data) {
462
GtkTreeView *treeView;
464
GtkTreeSelection *selection;
465
GtkTreePath *treePath;
470
// Get view, model and selection of codec store
471
model = gtk_tree_view_get_model(GTK_TREE_VIEW(codecTreeView));
472
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(codecTreeView));
474
// Retrieve the user data
475
acc = (account_t*) data;
479
// Find selected iteration and create a copy
480
gtk_tree_selection_get_selected(GTK_TREE_SELECTION(selection), &model, &iter);
481
iter2 = gtk_tree_iter_copy(&iter);
483
// Find path of iteration
484
path = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(model), &iter);
485
treePath = gtk_tree_path_new_from_string(path);
486
gint *indices = gtk_tree_path_get_indices(treePath);
487
gint indice = indices[0];
489
// Depending on button direction get new path
491
gtk_tree_path_prev(treePath);
493
gtk_tree_path_next(treePath);
494
gtk_tree_model_get_iter(model, &iter, treePath);
496
// Swap iterations if valid
497
if(gtk_list_store_iter_is_valid(GTK_LIST_STORE(model), &iter))
498
gtk_list_store_swap(GTK_LIST_STORE(model), &iter, iter2);
500
// Scroll to new position
501
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (codecTreeView), treePath, NULL, FALSE, 0, 0);
504
gtk_tree_path_free(treePath);
505
gtk_tree_iter_free(iter2);
508
// Perpetuate changes in codec queue
510
codec_list_move_codec_up (indice, &acc_q);
512
codec_list_move_codec_down (indice, &acc_q);
556
static void codec_move (gboolean moveUp, gpointer data)
562
GtkTreeSelection *selection;
563
GtkTreePath *treePath;
568
// Get view, model and selection of codec store
569
model = gtk_tree_view_get_model (GTK_TREE_VIEW (codecTreeView));
570
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (codecTreeView));
572
// Retrieve the user data
573
acc = (account_t*) data;
578
// Find selected iteration and create a copy
579
gtk_tree_selection_get_selected (GTK_TREE_SELECTION (selection), &model, &iter);
580
iter2 = gtk_tree_iter_copy (&iter);
582
// Find path of iteration
583
path = gtk_tree_model_get_string_from_iter (GTK_TREE_MODEL (model), &iter);
584
treePath = gtk_tree_path_new_from_string (path);
585
gint *indices = gtk_tree_path_get_indices (treePath);
586
gint indice = indices[0];
588
// Depending on button direction get new path
590
gtk_tree_path_prev (treePath);
592
gtk_tree_path_next (treePath);
594
gtk_tree_model_get_iter (model, &iter, treePath);
596
// Swap iterations if valid
597
if (gtk_list_store_iter_is_valid (GTK_LIST_STORE (model), &iter))
598
gtk_list_store_swap (GTK_LIST_STORE (model), &iter, iter2);
600
// Scroll to new position
601
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (codecTreeView), treePath, NULL, FALSE, 0, 0);
604
gtk_tree_path_free (treePath);
605
gtk_tree_iter_free (iter2);
608
// Perpetuate changes in codec queue
610
codec_list_move_codec_up (indice, &acc_q);
612
codec_list_move_codec_down (indice, &acc_q);
517
617
* Called from move up codec button signal
519
static void codec_move_up (GtkButton *button UNUSED, gpointer data) {
619
static void codec_move_up (GtkButton *button UNUSED, gpointer data)
521
// Change tree view ordering and get indice changed
522
codec_move (TRUE, data);
622
// Change tree view ordering and get indice changed
623
codec_move (TRUE, data);
526
627
* Called from move down codec button signal
528
static void codec_move_down(GtkButton *button UNUSED, gpointer data) {
530
// Change tree view ordering and get indice changed
531
codec_move (FALSE, data);
535
is_ringtone_enabled( void )
537
return dbus_is_ringtone_enabled();
541
ringtone_enabled( void )
543
dbus_ringtone_enabled();
547
ringtone_changed( GtkFileChooser *chooser , GtkLabel *label UNUSED)
549
gchar* tone = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER( chooser ));
550
dbus_set_ringtone_choice( tone );
554
get_ringtone_choice( void )
556
return dbus_get_ringtone_choice();
629
static void codec_move_down (GtkButton *button UNUSED, gpointer data)
632
// Change tree view ordering and get indice changed
633
codec_move (FALSE, data);
560
636
GtkWidget* codecs_box (account_t **a)
563
GtkWidget *scrolledWindow;
564
GtkWidget *buttonBox;
566
GtkListStore *codecStore;
567
GtkCellRenderer *renderer;
568
GtkTreeSelection *treeSelection;
569
GtkTreeViewColumn *treeViewColumn;
571
ret = gtk_hbox_new(FALSE, 10);
572
gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
574
scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
575
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
576
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_SHADOW_IN);
578
gtk_box_pack_start(GTK_BOX(ret), scrolledWindow, TRUE, TRUE, 0);
579
codecStore = gtk_list_store_new(CODEC_COLUMN_COUNT,
580
G_TYPE_BOOLEAN, // Active
581
G_TYPE_STRING, // Name
582
G_TYPE_STRING, // Frequency
583
G_TYPE_STRING, // Bit rate
584
G_TYPE_STRING // Bandwith
587
// Create codec tree view with list store
588
codecTreeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(codecStore));
590
// Get tree selection manager
591
treeSelection = gtk_tree_view_get_selection(GTK_TREE_VIEW(codecTreeView));
592
g_signal_connect(G_OBJECT(treeSelection), "changed",
593
G_CALLBACK (select_codec),
597
renderer = gtk_cell_renderer_toggle_new();
598
treeViewColumn = gtk_tree_view_column_new_with_attributes("", renderer, "active", COLUMN_CODEC_ACTIVE, NULL);
599
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
601
// Toggle codec active property on clicked
602
g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK (codec_active_toggled), (gpointer) *a);
605
renderer = gtk_cell_renderer_text_new();
606
treeViewColumn = gtk_tree_view_column_new_with_attributes(_("Name"), renderer, "markup", COLUMN_CODEC_NAME, NULL);
607
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
610
renderer = gtk_cell_renderer_text_new();
611
treeViewColumn = gtk_tree_view_column_new_with_attributes(_("Frequency"), renderer, "text", COLUMN_CODEC_FREQUENCY, NULL);
612
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
615
renderer = gtk_cell_renderer_text_new();
616
treeViewColumn = gtk_tree_view_column_new_with_attributes(_("Bitrate"), renderer, "text", COLUMN_CODEC_BITRATE, NULL);
617
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
620
renderer = gtk_cell_renderer_text_new();
621
treeViewColumn = gtk_tree_view_column_new_with_attributes(_("Bandwidth"), renderer, "text", COLUMN_CODEC_BANDWIDTH, NULL);
622
gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
624
g_object_unref(G_OBJECT(codecStore));
625
gtk_container_add(GTK_CONTAINER(scrolledWindow), codecTreeView);
628
buttonBox = gtk_vbox_new(FALSE, 0);
629
gtk_container_set_border_width(GTK_CONTAINER(buttonBox), 10);
630
gtk_box_pack_start(GTK_BOX(ret), buttonBox, FALSE, FALSE, 0);
632
codecMoveUpButton = gtk_button_new_from_stock(GTK_STOCK_GO_UP);
633
gtk_widget_set_sensitive(GTK_WIDGET(codecMoveUpButton), FALSE);
634
gtk_box_pack_start(GTK_BOX(buttonBox), codecMoveUpButton, FALSE, FALSE, 0);
635
g_signal_connect(G_OBJECT(codecMoveUpButton), "clicked", G_CALLBACK(codec_move_up), *a);
637
codecMoveDownButton = gtk_button_new_from_stock(GTK_STOCK_GO_DOWN);
638
gtk_widget_set_sensitive(GTK_WIDGET(codecMoveDownButton), FALSE);
639
gtk_box_pack_start(GTK_BOX(buttonBox), codecMoveDownButton, FALSE, FALSE, 0);
640
g_signal_connect(G_OBJECT(codecMoveDownButton), "clicked", G_CALLBACK(codec_move_down), *a);
642
preferences_dialog_fill_codec_list (a);
648
select_audio_manager( void )
651
DEBUG("audio manager selected\n");
653
if( !SHOW_ALSA_CONF && !gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) ) )
655
dbus_set_audio_manager( ALSA );
656
DEBUG(" display alsa conf panel");
657
alsabox = alsa_box();
658
gtk_container_add( GTK_CONTAINER(alsa_conf ) , alsabox);
659
gtk_widget_show( alsa_conf );
660
gtk_widget_set_sensitive(GTK_WIDGET(alsa_conf), TRUE);
662
gtk_action_set_sensitive (GTK_ACTION (volumeToggle), TRUE);
664
else if( SHOW_ALSA_CONF && gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) ))
666
dbus_set_audio_manager( PULSEAUDIO );
667
DEBUG(" remove alsa conf panel");
668
gtk_container_remove( GTK_CONTAINER(alsa_conf) , alsabox );
669
gtk_widget_hide( alsa_conf );
670
if (gtk_toggle_action_get_active ( GTK_TOGGLE_ACTION (volumeToggle)))
672
main_window_volume_controls(FALSE);
673
dbus_set_volume_controls (FALSE);
674
gtk_toggle_action_set_active ( GTK_TOGGLE_ACTION (volumeToggle), FALSE);
676
gtk_action_set_sensitive (GTK_ACTION (volumeToggle), FALSE);
678
DEBUG("alsa conf panel...nothing");
639
GtkWidget *scrolledWindow;
640
GtkWidget *buttonBox;
642
GtkListStore *codecStore;
643
GtkCellRenderer *renderer;
644
GtkTreeSelection *treeSelection;
645
GtkTreeViewColumn *treeViewColumn;
647
ret = gtk_hbox_new (FALSE, 10);
648
gtk_container_set_border_width (GTK_CONTAINER (ret), 10);
650
scrolledWindow = gtk_scrolled_window_new (NULL, NULL);
651
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
652
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledWindow), GTK_SHADOW_IN);
654
gtk_box_pack_start (GTK_BOX (ret), scrolledWindow, TRUE, TRUE, 0);
655
codecStore = gtk_list_store_new (CODEC_COLUMN_COUNT,
656
G_TYPE_BOOLEAN, // Active
657
G_TYPE_STRING, // Name
658
G_TYPE_STRING, // Frequency
659
G_TYPE_STRING, // Bit rate
660
G_TYPE_STRING // Bandwith
663
// Create codec tree view with list store
664
codecTreeView = gtk_tree_view_new_with_model (GTK_TREE_MODEL (codecStore));
666
// Get tree selection manager
667
treeSelection = gtk_tree_view_get_selection (GTK_TREE_VIEW (codecTreeView));
668
g_signal_connect (G_OBJECT (treeSelection), "changed",
669
G_CALLBACK (select_codec),
673
renderer = gtk_cell_renderer_toggle_new();
674
treeViewColumn = gtk_tree_view_column_new_with_attributes ("", renderer, "active", COLUMN_CODEC_ACTIVE, NULL);
675
gtk_tree_view_append_column (GTK_TREE_VIEW (codecTreeView), treeViewColumn);
677
// Toggle codec active property on clicked
678
g_signal_connect (G_OBJECT (renderer), "toggled", G_CALLBACK (codec_active_toggled), (gpointer) *a);
681
renderer = gtk_cell_renderer_text_new();
682
treeViewColumn = gtk_tree_view_column_new_with_attributes (_ ("Name"), renderer, "markup", COLUMN_CODEC_NAME, NULL);
683
gtk_tree_view_append_column (GTK_TREE_VIEW (codecTreeView), treeViewColumn);
686
renderer = gtk_cell_renderer_text_new();
687
treeViewColumn = gtk_tree_view_column_new_with_attributes (_ ("Frequency"), renderer, "text", COLUMN_CODEC_FREQUENCY, NULL);
688
gtk_tree_view_append_column (GTK_TREE_VIEW (codecTreeView), treeViewColumn);
691
renderer = gtk_cell_renderer_text_new();
692
treeViewColumn = gtk_tree_view_column_new_with_attributes (_ ("Bitrate"), renderer, "text", COLUMN_CODEC_BITRATE, NULL);
693
gtk_tree_view_append_column (GTK_TREE_VIEW (codecTreeView), treeViewColumn);
696
renderer = gtk_cell_renderer_text_new();
697
treeViewColumn = gtk_tree_view_column_new_with_attributes (_ ("Bandwidth"), renderer, "text", COLUMN_CODEC_BANDWIDTH, NULL);
698
gtk_tree_view_append_column (GTK_TREE_VIEW (codecTreeView), treeViewColumn);
700
g_object_unref (G_OBJECT (codecStore));
701
gtk_container_add (GTK_CONTAINER (scrolledWindow), codecTreeView);
704
buttonBox = gtk_vbox_new (FALSE, 0);
705
gtk_container_set_border_width (GTK_CONTAINER (buttonBox), 10);
706
gtk_box_pack_start (GTK_BOX (ret), buttonBox, FALSE, FALSE, 0);
708
codecMoveUpButton = gtk_button_new_from_stock (GTK_STOCK_GO_UP);
709
gtk_widget_set_sensitive (GTK_WIDGET (codecMoveUpButton), FALSE);
710
gtk_box_pack_start (GTK_BOX (buttonBox), codecMoveUpButton, FALSE, FALSE, 0);
711
g_signal_connect (G_OBJECT (codecMoveUpButton), "clicked", G_CALLBACK (codec_move_up), *a);
713
codecMoveDownButton = gtk_button_new_from_stock (GTK_STOCK_GO_DOWN);
714
gtk_widget_set_sensitive (GTK_WIDGET (codecMoveDownButton), FALSE);
715
gtk_box_pack_start (GTK_BOX (buttonBox), codecMoveDownButton, FALSE, FALSE, 0);
716
g_signal_connect (G_OBJECT (codecMoveDownButton), "clicked", G_CALLBACK (codec_move_down), *a);
718
preferences_dialog_fill_codec_list (a);
724
select_audio_manager (void)
726
DEBUG ("audio manager selected");
728
if (!SHOW_ALSA_CONF && !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (pulse))) {
729
dbus_set_audio_manager (ALSA);
730
DEBUG (" display alsa conf panel");
731
alsabox = alsa_box();
732
gtk_container_add (GTK_CONTAINER (alsa_conf) , alsabox);
733
gtk_widget_show (alsa_conf);
734
gtk_widget_set_sensitive (GTK_WIDGET (alsa_conf), TRUE);
736
gtk_action_set_sensitive (GTK_ACTION (volumeToggle), TRUE);
737
} else if (SHOW_ALSA_CONF && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (pulse))) {
738
dbus_set_audio_manager (PULSEAUDIO);
739
DEBUG (" remove alsa conf panel");
740
gtk_container_remove (GTK_CONTAINER (alsa_conf) , alsabox);
741
gtk_widget_hide (alsa_conf);
743
if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (volumeToggle))) {
744
main_window_volume_controls (FALSE);
745
eel_gconf_set_integer (SHOW_VOLUME_CONTROLS, FALSE);
746
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (volumeToggle), FALSE);
749
gtk_action_set_sensitive (GTK_ACTION (volumeToggle), FALSE);
751
DEBUG ("alsa conf panel...nothing");
757
active_noise_suppress (void)
763
DEBUG ("Audio: Active noise suppression clicked");
764
state = dbus_get_noise_suppress_state();
766
DEBUG ("Audio: Get noise suppression cancel state %s", state);
768
if (strcmp (state, "enabled") == 0)
769
newstate = "disabled";
771
newstate = "enabled";
773
dbus_set_noise_suppress_state (newstate);
683
778
GtkWidget* alsa_box()
688
GtkCellRenderer *renderer;
690
ret = gtk_hbox_new(FALSE, 10);
691
gtk_widget_show( ret );
693
table = gtk_table_new(4, 3, FALSE);
694
gtk_table_set_col_spacing(GTK_TABLE(table), 0, 40);
695
gtk_box_pack_start( GTK_BOX(ret) , table , TRUE , TRUE , 1);
696
gtk_widget_show(table);
699
item = gtk_label_new(_("ALSA plugin"));
700
gtk_misc_set_alignment(GTK_MISC(item), 0, 0.5);
701
gtk_table_attach(GTK_TABLE(table), item, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
702
gtk_widget_show( item );
703
// Set choices of audio managers
704
pluginlist = gtk_list_store_new(1, G_TYPE_STRING);
705
preferences_dialog_fill_output_audio_plugin_list();
706
plugin = gtk_combo_box_new_with_model(GTK_TREE_MODEL(pluginlist));
707
select_active_output_audio_plugin();
708
gtk_label_set_mnemonic_widget(GTK_LABEL(item), plugin);
709
g_signal_connect(G_OBJECT(plugin), "changed", G_CALLBACK(select_output_audio_plugin), plugin);
712
renderer = gtk_cell_renderer_text_new();
713
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(plugin), renderer, TRUE);
714
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(plugin), renderer, "text", 0, NULL);
715
gtk_table_attach(GTK_TABLE(table), plugin, 2, 3, 1, 2, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
716
gtk_widget_show(plugin);
718
// Device : Output device
719
// Create title label
721
item = gtk_label_new(_("Output"));
722
gtk_misc_set_alignment(GTK_MISC(item), 0, 0.5);
723
gtk_table_attach(GTK_TABLE(table), item, 1, 2, 2, 3, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
724
gtk_widget_show(item);
725
// Set choices of output devices
726
outputlist = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT);
727
preferences_dialog_fill_output_audio_device_list();
728
output = gtk_combo_box_new_with_model(GTK_TREE_MODEL(outputlist));
729
select_active_output_audio_device();
730
gtk_label_set_mnemonic_widget(GTK_LABEL(item), output);
731
g_signal_connect(G_OBJECT(output), "changed", G_CALLBACK(select_audio_output_device), output);
734
renderer = gtk_cell_renderer_text_new();
735
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(output), renderer, TRUE);
736
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(output), renderer, "text", 0, NULL);
737
gtk_table_attach(GTK_TABLE(table), output, 2, 3, 2, 3, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
738
gtk_widget_show(output);
740
// Device : Input device
741
// Create title label
743
item = gtk_label_new(_("Input"));
744
gtk_misc_set_alignment(GTK_MISC(item), 0, 0.5);
745
gtk_table_attach(GTK_TABLE(table), item, 1, 2, 3, 4, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
746
gtk_widget_show(item);
748
// Set choices of output devices
749
inputlist = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT);
750
preferences_dialog_fill_input_audio_device_list();
751
input = gtk_combo_box_new_with_model(GTK_TREE_MODEL(inputlist));
752
select_active_input_audio_device();
753
gtk_label_set_mnemonic_widget(GTK_LABEL(item), input);
754
g_signal_connect(G_OBJECT(input), "changed", G_CALLBACK(select_audio_input_device), input);
757
renderer = gtk_cell_renderer_text_new();
758
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(input), renderer, TRUE);
759
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(input), renderer, "text", 0, NULL);
760
gtk_table_attach(GTK_TABLE(table), input, 2, 3, 3, 4, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
761
gtk_widget_show(input);
763
gtk_widget_show_all(ret);
769
GtkWidget* noise_box()
772
GtkWidget *enableVoiceActivity;
773
GtkWidget *enableNoiseReduction;
775
// check button to enable ringtones
776
ret = gtk_hbox_new( TRUE , 1);
778
enableVoiceActivity = gtk_check_button_new_with_mnemonic( _("_Voice Activity Detection"));
779
//TODO Use the value from D-BUS
780
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(enableVoiceActivity), FALSE );
781
gtk_box_pack_start( GTK_BOX(ret) , enableVoiceActivity , TRUE , TRUE , 1);
783
//gtk_widget_set_sensitive(GTK_WIDGET(noise_conf), FALSE);
784
//TODO Add a callback function
785
//g_signal_connect(G_OBJECT( enableNoiseReduction) , "clicked" , NULL , NULL);
788
enableNoiseReduction = gtk_check_button_new_with_mnemonic( _("_Noise Reduction (Narrow-Band Companding)"));
789
//TODO Use the value from D-BUS
790
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(enableNoiseReduction), FALSE );
791
gtk_box_pack_start( GTK_BOX(ret) , enableNoiseReduction , TRUE , TRUE , 1);
793
// gtk_widget_set_sensitive(GTK_WIDGET(noise_conf), FALSE);
794
//TODO Add a callback function
795
//g_signal_connect(G_OBJECT( enableNoiseReduction) , "clicked" , NULL , NULL);
800
static void record_path_changed( GtkFileChooser *chooser , GtkLabel *label UNUSED)
802
DEBUG("record_path_changed");
805
path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER( chooser ));
806
DEBUG("path2 %s", path);
807
dbus_set_record_path( path );
783
GtkCellRenderer *renderer;
785
ret = gtk_hbox_new (FALSE, 10);
786
gtk_widget_show (ret);
788
table = gtk_table_new (5, 3, FALSE);
789
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 40);
790
gtk_box_pack_start (GTK_BOX (ret) , table , TRUE , TRUE , 1);
791
gtk_widget_show (table);
793
DEBUG ("Audio: Configuration plugin");
794
item = gtk_label_new (_ ("ALSA plugin"));
795
gtk_misc_set_alignment (GTK_MISC (item), 0, 0.5);
796
gtk_table_attach (GTK_TABLE (table), item, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
797
gtk_widget_show (item);
798
// Set choices of audio managers
799
pluginlist = gtk_list_store_new (1, G_TYPE_STRING);
800
preferences_dialog_fill_audio_plugin_list();
801
plugin = gtk_combo_box_new_with_model (GTK_TREE_MODEL (pluginlist));
802
select_active_output_audio_plugin();
803
gtk_label_set_mnemonic_widget (GTK_LABEL (item), plugin);
804
g_signal_connect (G_OBJECT (plugin), "changed", G_CALLBACK (select_output_audio_plugin), plugin);
807
renderer = gtk_cell_renderer_text_new();
808
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (plugin), renderer, TRUE);
809
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (plugin), renderer, "text", 0, NULL);
810
gtk_table_attach (GTK_TABLE (table), plugin, 2, 3, 1, 2, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
811
gtk_widget_show (plugin);
813
// Device : Output device
814
// Create title label
815
DEBUG ("Audio: Configuration output");
816
item = gtk_label_new (_ ("Output"));
817
gtk_misc_set_alignment (GTK_MISC (item), 0, 0.5);
818
gtk_table_attach (GTK_TABLE (table), item, 1, 2, 2, 3, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
819
gtk_widget_show (item);
820
// Set choices of output devices
821
outputlist = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
822
preferences_dialog_fill_output_audio_device_list();
823
output = gtk_combo_box_new_with_model (GTK_TREE_MODEL (outputlist));
824
select_active_output_audio_device();
825
gtk_label_set_mnemonic_widget (GTK_LABEL (item), output);
826
g_signal_connect (G_OBJECT (output), "changed", G_CALLBACK (select_audio_output_device), output);
829
renderer = gtk_cell_renderer_text_new();
830
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (output), renderer, TRUE);
831
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (output), renderer, "text", 0, NULL);
832
gtk_table_attach (GTK_TABLE (table), output, 2, 3, 2, 3, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
833
gtk_widget_show (output);
835
// Device : Input device
836
// Create title label
837
DEBUG ("Audio: Configuration input");
838
item = gtk_label_new (_ ("Input"));
839
gtk_misc_set_alignment (GTK_MISC (item), 0, 0.5);
840
gtk_table_attach (GTK_TABLE (table), item, 1, 2, 3, 4, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
841
gtk_widget_show (item);
843
// Set choices of output devices
844
inputlist = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
845
preferences_dialog_fill_input_audio_device_list();
846
input = gtk_combo_box_new_with_model (GTK_TREE_MODEL (inputlist));
847
select_active_input_audio_device();
848
gtk_label_set_mnemonic_widget (GTK_LABEL (item), input);
849
g_signal_connect (G_OBJECT (input), "changed", G_CALLBACK (select_audio_input_device), input);
851
DEBUG ("Audio: Configuration rintgtone");
852
item = gtk_label_new (_ ("Ringtone"));
853
gtk_misc_set_alignment (GTK_MISC (item), 0, 0.5);
854
gtk_table_attach (GTK_TABLE (table), item, 1, 2, 4, 5, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
855
gtk_widget_show (item);
856
// set choices of ringtone devices
857
ringtonelist = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
858
preferences_dialog_fill_ringtone_audio_device_list();
859
ringtone = gtk_combo_box_new_with_model (GTK_TREE_MODEL (ringtonelist));
860
select_active_ringtone_audio_device();
861
gtk_label_set_mnemonic_widget (GTK_LABEL (item), output);
862
g_signal_connect (G_OBJECT (ringtone), "changed", G_CALLBACK (select_audio_ringtone_device), output);
865
renderer = gtk_cell_renderer_text_new();
866
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (ringtone), renderer, TRUE);
867
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (ringtone), renderer, "text", 0, NULL);
868
gtk_table_attach (GTK_TABLE (table), ringtone, 2, 3, 4, 5, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
869
gtk_widget_show (ringtone);
873
renderer = gtk_cell_renderer_text_new();
874
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (input), renderer, TRUE);
875
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (input), renderer, "text", 0, NULL);
876
gtk_table_attach (GTK_TABLE (table), input, 2, 3, 3, 4, GTK_FILL | GTK_EXPAND, GTK_SHRINK, 0, 0);
877
gtk_widget_show (input);
879
gtk_widget_show_all (ret);
885
static void record_path_changed (GtkFileChooser *chooser , GtkLabel *label UNUSED)
887
DEBUG ("record_path_changed");
890
path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
891
DEBUG ("path2 %s", path);
892
dbus_set_record_path (path);
810
895
GtkWidget* create_audio_configuration()
818
ret = gtk_vbox_new(FALSE, 10);
819
gtk_container_set_border_width(GTK_CONTAINER(ret), 10);
824
gnome_main_section_new_with_table (_("Sound Manager"), &frame, &table, 1, 2);
825
gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
827
int audio_manager = dbus_get_audio_manager();
828
gboolean pulse_audio = FALSE;
829
if (audio_manager == PULSEAUDIO) {
833
pulse = gtk_radio_button_new_with_mnemonic( NULL , _("_Pulseaudio"));
834
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(pulse), pulse_audio);
835
gtk_table_attach ( GTK_TABLE( table ), pulse, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
837
alsa = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(pulse), _("_ALSA"));
838
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(alsa), !pulse_audio);
839
g_signal_connect(G_OBJECT(alsa), "clicked", G_CALLBACK(select_audio_manager), NULL);
840
gtk_table_attach ( GTK_TABLE( table ), alsa, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
842
// Box for the ALSA configuration
843
gnome_main_section_new (_("ALSA settings"), &alsa_conf);
844
gtk_box_pack_start(GTK_BOX(ret), alsa_conf, FALSE, FALSE, 0);
845
gtk_widget_show( alsa_conf );
848
// Box for the ALSA configuration
849
printf("ALSA Created \n");
850
alsabox = alsa_box();
851
gtk_container_add( GTK_CONTAINER(alsa_conf) , alsabox );
852
gtk_widget_hide( alsa_conf );
855
// Recorded file saving path
857
GtkWidget *folderChooser;
860
/* Get the path where to save audio files */
861
dftPath = dbus_get_record_path ();
862
DEBUG("load recording path %s\n", dftPath);
864
gnome_main_section_new_with_table (_("Recordings"), &frame, &table, 1, 2);
865
gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
868
label = gtk_label_new(_("Destination folder"));
869
gtk_table_attach( GTK_TABLE(table), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5);
871
// folder chooser button
872
folderChooser = gtk_file_chooser_button_new(_("Select a folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
873
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER( folderChooser), dftPath);
874
g_signal_connect( G_OBJECT( folderChooser ) , "selection_changed" , G_CALLBACK( record_path_changed ) , NULL );
875
gtk_table_attach(GTK_TABLE(table), folderChooser, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5);
877
// Box for the ringtones
878
gnome_main_section_new_with_table (_("Ringtones"), &frame, &table, 1, 2);
879
gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0);
881
GtkWidget *enableTone;
882
GtkWidget *fileChooser;
884
enableTone = gtk_check_button_new_with_mnemonic( _("_Enable ringtones"));
885
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(enableTone), dbus_is_ringtone_enabled() );
886
g_signal_connect(G_OBJECT( enableTone) , "clicked" , G_CALLBACK( ringtone_enabled ) , NULL);
887
gtk_table_attach ( GTK_TABLE( table ), enableTone, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
889
// file chooser button
890
fileChooser = gtk_file_chooser_button_new(_("Choose a ringtone"), GTK_FILE_CHOOSER_ACTION_OPEN);
891
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER( fileChooser) , g_get_home_dir());
892
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER( fileChooser) , get_ringtone_choice());
893
g_signal_connect( G_OBJECT( fileChooser ) , "selection_changed" , G_CALLBACK( ringtone_changed ) , NULL );
895
GtkFileFilter *filter = gtk_file_filter_new();
896
gtk_file_filter_set_name( filter , _("Audio Files") );
897
gtk_file_filter_add_pattern(filter , "*.wav" );
898
gtk_file_filter_add_pattern(filter , "*.ul" );
899
gtk_file_filter_add_pattern(filter , "*.au" );
900
gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( fileChooser ) , filter);
901
gtk_table_attach ( GTK_TABLE( table ), fileChooser, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
903
gtk_widget_show_all(ret);
906
gtk_widget_show(alsa_conf);
909
gtk_widget_hide(alsa_conf);
901
GtkWidget *enableNoiseReduction;
902
gboolean noisesuppressActive;
905
ret = gtk_vbox_new (FALSE, 10);
906
gtk_container_set_border_width (GTK_CONTAINER (ret), 10);
911
gnome_main_section_new_with_table (_ ("Sound Manager"), &frame, &table, 1, 2);
912
gtk_box_pack_start (GTK_BOX (ret), frame, FALSE, FALSE, 0);
914
int audio_manager = dbus_get_audio_manager();
915
gboolean pulse_audio = FALSE;
917
if (audio_manager == PULSEAUDIO) {
921
pulse = gtk_radio_button_new_with_mnemonic (NULL , _ ("_Pulseaudio"));
922
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pulse), pulse_audio);
923
gtk_table_attach (GTK_TABLE (table), pulse, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
925
alsa = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (pulse), _ ("_ALSA"));
926
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (alsa), !pulse_audio);
927
g_signal_connect (G_OBJECT (alsa), "clicked", G_CALLBACK (select_audio_manager), NULL);
928
gtk_table_attach (GTK_TABLE (table), alsa, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
930
// Box for the ALSA configuration
931
gnome_main_section_new (_ ("ALSA settings"), &alsa_conf);
932
gtk_box_pack_start (GTK_BOX (ret), alsa_conf, FALSE, FALSE, 0);
933
gtk_widget_show (alsa_conf);
935
if (SHOW_ALSA_CONF) {
936
// Box for the ALSA configuration
937
alsabox = alsa_box();
938
gtk_container_add (GTK_CONTAINER (alsa_conf) , alsabox);
939
gtk_widget_hide (alsa_conf);
942
// Recorded file saving path
944
GtkWidget *folderChooser;
947
/* Get the path where to save audio files */
948
dftPath = dbus_get_record_path ();
949
DEBUG ("load recording path %s\n", dftPath);
951
gnome_main_section_new_with_table (_ ("Recordings"), &frame, &table, 1, 2);
952
gtk_box_pack_start (GTK_BOX (ret), frame, FALSE, FALSE, 0);
955
label = gtk_label_new (_ ("Destination folder"));
956
gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5);
958
// folder chooser button
959
folderChooser = gtk_file_chooser_button_new (_ ("Select a folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
960
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (folderChooser), dftPath);
961
g_signal_connect (G_OBJECT (folderChooser) , "selection_changed" , G_CALLBACK (record_path_changed) , NULL);
962
gtk_table_attach (GTK_TABLE (table), folderChooser, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5);
965
// Box for the voice enhancement configuration
966
gnome_main_section_new_with_table (_ ("Voice enhancement settings"), &frame, &table, 2, 1);
967
gtk_box_pack_start (GTK_BOX (ret), frame, FALSE, FALSE, 0);
969
enableNoiseReduction = gtk_check_button_new_with_mnemonic (_ ("_Noise Reduction"));
970
state = dbus_get_noise_suppress_state();
971
noisesuppressActive = FALSE;
973
if (strcmp (state, "enabled") == 0)
974
noisesuppressActive = TRUE;
976
noisesuppressActive = FALSE;
978
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (enableNoiseReduction), noisesuppressActive);
979
g_signal_connect (G_OBJECT (enableNoiseReduction), "clicked", active_noise_suppress, NULL);
980
gtk_table_attach (GTK_TABLE (table), enableNoiseReduction, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
982
gtk_widget_show_all (ret);
985
gtk_widget_show (alsa_conf);
987
gtk_widget_hide (alsa_conf);
915
993
GtkWidget* create_codecs_configuration (account_t **a) {