~ubuntu-branches/ubuntu/trusty/sflphone/trusty

« back to all changes in this revision

Viewing changes to gnome/src/config/audioconf.c

  • Committer: Package Import Robot
  • Author(s): Mark Purcell
  • Date: 2014-01-28 18:23:36 UTC
  • mfrom: (4.3.4 sid)
  • Revision ID: package-import@ubuntu.com-20140128182336-jrsv0k9u6cawc068
Tags: 1.3.0-1
* New upstream release 
  - Fixes "New Upstream Release" (Closes: #735846)
  - Fixes "Ringtone does not stop" (Closes: #727164)
  - Fixes "[sflphone-kde] crash on startup" (Closes: #718178)
  - Fixes "sflphone GUI crashes when call is hung up" (Closes: #736583)
* Build-Depends: ensure GnuTLS 2.6
  - libucommon-dev (>= 6.0.7-1.1), libccrtp-dev (>= 2.0.6-3)
  - Fixes "FTBFS Build-Depends libgnutls{26,28}-dev" (Closes: #722040)
* Fix "boost 1.49 is going away" unversioned Build-Depends: (Closes: #736746)
* Add Build-Depends: libsndfile-dev, nepomuk-core-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 *  Copyright (C) 2004-2012 Savoir-Faire Linux Inc.
 
2
 *  Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
3
3
 *  Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
4
4
 *
5
5
 *  This program is free software; you can redistribute it and/or modify
57
57
    COLUMN_CODEC_NAME,
58
58
    COLUMN_CODEC_FREQUENCY,
59
59
    COLUMN_CODEC_BITRATE,
 
60
    COLUMN_CODEC_CHANNELS,
60
61
    CODEC_COLUMN_COUNT
61
62
};
62
63
 
91
92
            gtk_list_store_append(codecStore, &iter);
92
93
            gchar *samplerate = g_strdup_printf("%d " KHZ, (gint) (c->sample_rate * 0.001));
93
94
            gchar *bitrate = g_strdup_printf("%s " KBPS, c->bitrate);
 
95
            gchar *channels = g_strdup_printf("%d", c->channels);
94
96
 
95
97
            gtk_list_store_set(codecStore, &iter,
96
98
                               COLUMN_CODEC_ACTIVE, c->is_active,
97
99
                               COLUMN_CODEC_NAME, c->name,
98
100
                               COLUMN_CODEC_FREQUENCY, samplerate,
99
101
                               COLUMN_CODEC_BITRATE, bitrate,
 
102
                               COLUMN_CODEC_CHANNELS, channels,
100
103
                               -1);
101
104
            g_free(samplerate);
102
105
            g_free(bitrate);
511
514
            G_TYPE_STRING, /* Name */
512
515
            G_TYPE_STRING, /* Frequency */
513
516
            G_TYPE_STRING, /* Bitrate */
 
517
            G_TYPE_STRING, /* Channels */
514
518
            G_TYPE_STRING  /* Bandwidth */);
515
519
 
516
520
    // Create codec tree view with list store
548
552
    treeViewColumn = gtk_tree_view_column_new_with_attributes(_("Bitrate"), renderer, "text", COLUMN_CODEC_BITRATE, NULL);
549
553
    gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
550
554
 
 
555
    // Channels column
 
556
    renderer = gtk_cell_renderer_text_new();
 
557
    treeViewColumn = gtk_tree_view_column_new_with_attributes(_("Channels"), renderer, "text", COLUMN_CODEC_CHANNELS, NULL);
 
558
    gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn);
 
559
 
551
560
    gtk_container_add(GTK_CONTAINER(scrolledWindow), codecTreeView);
552
561
 
553
562
    // Create button box
582
591
    gtk_box_pack_start(GTK_BOX(alsa_hbox), grid, TRUE, TRUE, 1);
583
592
    gtk_widget_show(grid);
584
593
 
585
 
    gchar *message = "<small><i>default</i> plugin always uses internal sound card. Select <i>dmix/dsnoop</i> to use an alternate soundcard.</small>";
 
594
    gchar *message = "<small>Select <i>dmix/dsnoop</i> to use non-default soundcard.</small>";
586
595
    GtkWidget *info_bar = gnome_info_bar(message, GTK_MESSAGE_INFO);
587
596
    /* Info bar gets a width of 2 cells */
588
597
    gtk_grid_attach(GTK_GRID(grid), info_bar, 1, 1, 2, 1);
768
777
        gtk_container_add(GTK_CONTAINER(alsa_conf), alsabox);
769
778
        gtk_widget_show(alsa_conf);
770
779
        gtk_widget_set_sensitive(alsa_conf, TRUE);
771
 
        gtk_action_set_sensitive(volumeToggle_, TRUE);
 
780
 
 
781
        if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(volumeToggle_))) {
 
782
            main_window_volume_controls(FALSE);
 
783
            g_settings_set_boolean(client->settings, "show-volume-controls", FALSE);
 
784
            gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(volumeToggle_), FALSE);
 
785
        }
 
786
 
772
787
    } else if (must_show_alsa_conf() && !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(alsa_button))) {
773
788
        dbus_set_audio_manager(PULSEAUDIO_API_STR);
774
789
        gtk_container_remove(GTK_CONTAINER(alsa_conf), alsabox);
778
793
        gtk_container_add(GTK_CONTAINER(pulse_conf), pulsebox);
779
794
        gtk_widget_show(pulse_conf);
780
795
        gtk_widget_set_sensitive(pulse_conf, TRUE);
781
 
        gtk_action_set_sensitive(volumeToggle_, TRUE);
782
796
 
783
797
        if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(volumeToggle_))) {
784
798
            main_window_volume_controls(FALSE);
786
800
            gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(volumeToggle_), FALSE);
787
801
        }
788
802
 
789
 
        gtk_action_set_sensitive(volumeToggle_, FALSE);
790
803
    } else
791
804
        g_warning("Unexpected audio API state");
792
805
}
793
806
 
794
 
static const gchar *reverse_state(const gchar *state)
795
 
{
796
 
    if (g_strcmp0(state, "enabled") == 0)
797
 
        return "disabled";
798
 
    else
799
 
        return "enabled";
800
 
}
801
 
 
802
807
static void
803
808
active_noise_suppress(void)
804
809
{
805
 
    gchar *state = dbus_get_noise_suppress_state();
806
 
    dbus_set_noise_suppress_state(reverse_state(state));
807
 
    g_free(state);
 
810
    dbus_set_noise_suppress_state(!dbus_get_noise_suppress_state());
808
811
}
809
812
 
810
813
static void
811
 
active_echo_cancel(void)
 
814
toggle_agc(void)
812
815
{
813
 
    gchar *state = dbus_get_echo_cancel_state();
814
 
    dbus_set_echo_cancel_state(reverse_state(state));
815
 
    g_free(state);
 
816
    dbus_set_agc_state(!dbus_get_agc_state());
816
817
}
817
818
 
818
819
static void
841
842
    g_free(path);
842
843
}
843
844
 
 
845
static
 
846
void
 
847
mute_dtmf_toggled(GtkToggleButton *tb, G_GNUC_UNUSED gpointer data)
 
848
{
 
849
    if (gtk_toggle_button_get_active(tb))
 
850
        dbus_mute_dtmf(TRUE);
 
851
    else
 
852
        dbus_mute_dtmf(FALSE);
 
853
}
 
854
 
 
855
 
844
856
GtkWidget* create_audio_configuration(SFLPhoneClient *client)
845
857
{
846
858
    /* Main widget */
916
928
    gtk_box_pack_start(GTK_BOX(audio_vbox), frame, FALSE, FALSE, 0);
917
929
 
918
930
    GtkWidget *enableNoiseReduction = gtk_check_button_new_with_mnemonic(_("_Noise Reduction"));
919
 
    gchar *state = dbus_get_noise_suppress_state();
920
 
 
921
 
    if (g_strcmp0(state, "enabled") == 0)
922
 
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableNoiseReduction), TRUE);
923
 
    else
924
 
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableNoiseReduction), FALSE);
925
 
 
926
 
    g_free(state);
927
 
    state = NULL;
 
931
 
 
932
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableNoiseReduction), dbus_get_noise_suppress_state());
928
933
 
929
934
    g_signal_connect(G_OBJECT(enableNoiseReduction), "clicked", active_noise_suppress, NULL);
930
935
    gtk_grid_attach(GTK_GRID(grid), enableNoiseReduction, 0, 1, 1, 1);
931
936
 
932
 
    GtkWidget *enableEchoCancel = gtk_check_button_new_with_mnemonic(_("_Echo Cancellation"));
933
 
    state = dbus_get_echo_cancel_state();
934
 
 
935
 
    if (g_strcmp0(state, "enabled") == 0)
936
 
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableEchoCancel), TRUE);
937
 
    else
938
 
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableEchoCancel), FALSE);
939
 
 
940
 
    g_free(state);
941
 
 
942
 
    g_signal_connect(G_OBJECT(enableEchoCancel), "clicked", active_echo_cancel, NULL);
943
 
    gtk_grid_attach(GTK_GRID(grid), enableEchoCancel, 0, 2, 1, 1);
 
937
    GtkWidget *enableAGC = gtk_check_button_new_with_mnemonic(_("Automatic _Gain Control"));
 
938
 
 
939
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableAGC), dbus_get_agc_state());
 
940
 
 
941
    g_signal_connect(G_OBJECT(enableAGC), "clicked", toggle_agc, NULL);
 
942
    gtk_grid_attach(GTK_GRID(grid), enableAGC, 0, 2, 1, 1);
 
943
 
 
944
    gnome_main_section_new_with_grid(_("Tone settings"), &frame, &grid);
 
945
    gtk_box_pack_start(GTK_BOX(audio_vbox), frame, FALSE, FALSE, 0);
 
946
 
 
947
    GtkWidget *muteDtmf = gtk_check_button_new_with_mnemonic(_("_Mute DTMF"));
 
948
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(muteDtmf), dbus_is_dtmf_muted());
 
949
 
 
950
    g_signal_connect(G_OBJECT(muteDtmf), "toggled", mute_dtmf_toggled, NULL);
 
951
    gtk_grid_attach(GTK_GRID(grid), muteDtmf, 0, 1, 1, 1);
944
952
 
945
953
    gtk_widget_show_all(audio_vbox);
946
954
 
964
972
gboolean
965
973
must_show_volume(SFLPhoneClient *client)
966
974
{
967
 
    return g_settings_get_boolean(client->settings, "show-volume-controls") && must_show_alsa_conf();
 
975
    return g_settings_get_boolean(client->settings, "show-volume-controls");
968
976
}