diff --git a/gnome/src/actions.c b/gnome/src/actions.c index 17233fba91206a1e3c1b802e78915f93a834dbf7..64e2b93176b2cb3d8e59ac4f5554ce1d32d9aeb7 100644 --- a/gnome/src/actions.c +++ b/gnome/src/actions.c @@ -937,6 +937,14 @@ sflphone_rec_call() update_actions(); } +void +sflphone_mute_call() +{ + DEBUG("Actions: Mute call"); + + toggle_slider_mute(); +} + void sflphone_fill_codec_list() { guint account_list_size = account_list_get_size(); diff --git a/gnome/src/actions.h b/gnome/src/actions.h index efb2fe2f93b86f3ba830fcec044dfea94339de4e..145ba402505d43bfdbfa9c2c7a424af1e0cca032 100644 --- a/gnome/src/actions.h +++ b/gnome/src/actions.h @@ -197,6 +197,8 @@ void sflphone_record (callable_obj_t *c); void sflphone_rec_call (void); +void sflphone_mute_call (void); + void status_bar_display_account (); void sflphone_fill_history (void); diff --git a/gnome/src/dbus/dbus.c b/gnome/src/dbus/dbus.c index e321a671498d0ee17cbab3f8e69df78cbace24e2..f402368d19c6324cb2398e181a77b773b04df884 100644 --- a/gnome/src/dbus/dbus.c +++ b/gnome/src/dbus/dbus.c @@ -119,7 +119,7 @@ static void volume_changed_cb(DBusGProxy *proxy UNUSED, const gchar *device, gdouble value, void *foo UNUSED) { - set_slider(device, value); + set_slider_no_update(device, value); } static void diff --git a/gnome/src/sliders.c b/gnome/src/sliders.c index 38e901a2d9dcbcf838faa0133fa77b84fcc33ab9..2ba5bae06f8d8f27e0e1d7d0695bbe9925efa013 100644 --- a/gnome/src/sliders.c +++ b/gnome/src/sliders.c @@ -41,22 +41,25 @@ static GtkWidget * button[2]; // icons static GtkWidget * images[2][4]; + enum device_t { - SPEAKER = 0, - MIKE, + DEVICE_SPEAKER = 0, + DEVICE_MIC, DEVICE_COUNT -} ; +}; enum volume_t { MUTED = 0, VOL25, VOL50, VOL75 -} ; +}; static guint toggledConnId[2]; // The button toggled signal connection ID static guint movedConnId[2]; // The slider_moved signal connection ID +static guint device_state = DEVICE_STATE_ACTIVE; + void update_icons(int dev) { @@ -86,20 +89,20 @@ slider_moved(GtkRange* range, gchar* device) dbus_set_volume(device, slider_value); if (g_strcmp0(device, "speaker") == 0) - update_icons(SPEAKER); + update_icons(DEVICE_SPEAKER); else - update_icons(MIKE); + update_icons(DEVICE_MIC); } -static void +void mute_cb(GtkWidget *widget, gchar* device) { int dev; if (g_strcmp0(device, "speaker") == 0) - dev = SPEAKER; + dev = DEVICE_SPEAKER; else - dev = MIKE; + dev = DEVICE_MIC; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) { // Save value DEBUG("Save"); @@ -113,15 +116,46 @@ mute_cb(GtkWidget *widget, gchar* device) update_icons(dev); } -void -set_slider(const gchar * device, gdouble newval) +void set_slider_value(const gchar *device, gdouble newval) { - int dev; + int dev = 0; - if (g_strcmp0(device, "speaker") == 0) - dev = SPEAKER; - else - dev = MIKE; + if (g_strcmp0(device, "speaker") == 0) { + dev = DEVICE_SPEAKER; + DEBUG("Slider: Set value for speaker: %f\n", newval); + } + else if (g_strcmp0(device, "mic") == 0) { + dev = DEVICE_MIC; + DEBUG("Slider: Set value for mic: %f\n", newval); + } + else { + ERROR("Slider: Unknown device: %s", device); + return; + } + + gtk_range_set_value(GTK_RANGE(slider[dev]), newval); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button[dev]), (newval == 0 ? TRUE: FALSE)); + + update_icons(dev); +} + +void set_slider_no_update (const gchar * device, gdouble newval) +{ + int dev = 0; + + if (g_strcmp0(device, "speaker") == 0) { + dev = DEVICE_SPEAKER; + DEBUG("Slider: Set value no update for speaker: %f\n", newval); + } + else if (g_strcmp0(device, "mic") == 0) { + dev = DEVICE_MIC; + DEBUG("Slider: Set value no update for mic: %f\n", newval); + } + else { + ERROR("Slider: Unknown device: %s", device); + return; + } g_signal_handler_block(G_OBJECT(slider[dev]), movedConnId[dev]); gtk_range_set_value(GTK_RANGE(slider[dev]), newval); @@ -134,6 +168,34 @@ set_slider(const gchar * device, gdouble newval) update_icons(dev); } +void toggle_slider_mute(void) +{ + DEBUG("Slider: Mute/Unmute toggle"); + + switch(device_state) { + case DEVICE_STATE_ACTIVE: + // value[DEVICE_SPEAKER] = gtk_range_get_value(GTK_RANGE(slider[DEVICE_SPEAKER])); + value[DEVICE_MIC] = gtk_range_get_value(GTK_RANGE(slider[DEVICE_MIC])); + // dbus_set_volume("speaker", 0.0); + dbus_set_volume("mic", 0.0); + device_state = DEVICE_STATE_MUTED; + break; + case DEVICE_STATE_MUTED: + // dbus_set_volume("speaker", value[DEVICE_SPEAKER]); + dbus_set_volume("mic", value[DEVICE_MIC]); + device_state = DEVICE_STATE_ACTIVE; + break; + default: + ERROR("Slider: Unknown state"); + break; + } +} + +guint get_mute_unmute_audio_state(void) +{ + return device_state; +} + /** Generates the speaker slider and mute button */ GtkWidget * create_slider(const gchar * device) @@ -146,25 +208,25 @@ create_slider(const gchar * device) int dev=0; if (g_strcmp0(device, "speaker") == 0) { - dev = SPEAKER; - images[SPEAKER][MUTED] = gtk_image_new_from_file(ICONS_DIR "/speaker.svg"); - images[SPEAKER][VOL25] = gtk_image_new_from_file(ICONS_DIR "/speaker_25.svg"); - images[SPEAKER][VOL50] = gtk_image_new_from_file(ICONS_DIR "/speaker_50.svg"); - images[SPEAKER][VOL75] = gtk_image_new_from_file(ICONS_DIR "/speaker_75.svg"); - g_object_ref(images[SPEAKER][MUTED]); - g_object_ref(images[SPEAKER][VOL25]); - g_object_ref(images[SPEAKER][VOL50]); - g_object_ref(images[SPEAKER][VOL75]); + dev = DEVICE_SPEAKER; + images[DEVICE_SPEAKER][MUTED] = gtk_image_new_from_file(ICONS_DIR "/speaker.svg"); + images[DEVICE_SPEAKER][VOL25] = gtk_image_new_from_file(ICONS_DIR "/speaker_25.svg"); + images[DEVICE_SPEAKER][VOL50] = gtk_image_new_from_file(ICONS_DIR "/speaker_50.svg"); + images[DEVICE_SPEAKER][VOL75] = gtk_image_new_from_file(ICONS_DIR "/speaker_75.svg"); + g_object_ref(images[DEVICE_SPEAKER][MUTED]); + g_object_ref(images[DEVICE_SPEAKER][VOL25]); + g_object_ref(images[DEVICE_SPEAKER][VOL50]); + g_object_ref(images[DEVICE_SPEAKER][VOL75]); } else if (g_strcmp0(device, "mic") == 0) { - dev = MIKE; - images[MIKE][MUTED] = gtk_image_new_from_file(ICONS_DIR "/mic.svg"); - images[MIKE][VOL25] = gtk_image_new_from_file(ICONS_DIR "/mic_25.svg"); - images[MIKE][VOL50] = gtk_image_new_from_file(ICONS_DIR "/mic_50.svg"); - images[MIKE][VOL75] = gtk_image_new_from_file(ICONS_DIR "/mic_75.svg"); - g_object_ref(images[MIKE][MUTED]); - g_object_ref(images[MIKE][VOL25]); - g_object_ref(images[MIKE][VOL50]); - g_object_ref(images[MIKE][VOL75]); + dev = DEVICE_MIC; + images[DEVICE_MIC][MUTED] = gtk_image_new_from_file(ICONS_DIR "/mic.svg"); + images[DEVICE_MIC][VOL25] = gtk_image_new_from_file(ICONS_DIR "/mic_25.svg"); + images[DEVICE_MIC][VOL50] = gtk_image_new_from_file(ICONS_DIR "/mic_50.svg"); + images[DEVICE_MIC][VOL75] = gtk_image_new_from_file(ICONS_DIR "/mic_75.svg"); + g_object_ref(images[DEVICE_MIC][MUTED]); + g_object_ref(images[DEVICE_MIC][VOL25]); + g_object_ref(images[DEVICE_MIC][VOL50]); + g_object_ref(images[DEVICE_MIC][VOL75]); } ret = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5 /*spacing*/); @@ -185,7 +247,7 @@ create_slider(const gchar * device) G_CALLBACK(slider_moved), (gpointer) device); gtk_box_pack_start(GTK_BOX(ret), slider[dev], TRUE /*expand*/, TRUE /*fill*/, 0 /*padding*/); - set_slider(device, dbus_get_volume(device)); + set_slider_no_update(device, dbus_get_volume(device)); return ret; } diff --git a/gnome/src/sliders.h b/gnome/src/sliders.h index 738522c5847c010cba93ec5f249265e58a582d7a..c0df6555ee9c8619e6ec97bd8c40a47090d3299e 100644 --- a/gnome/src/sliders.h +++ b/gnome/src/sliders.h @@ -36,6 +36,12 @@ * @brief Volume sliders at the bottom of the main window. */ +enum device_state_t { + DEVICE_STATE_MUTED = 0, + DEVICE_STATE_ACTIVE, + DEVICE_STATE_COUNT +}; + /** * Build the sliders widget * @param device Mic or speaker @@ -43,6 +49,12 @@ */ GtkWidget * create_slider (const gchar * device); +/** + * Update the sliders sending the value to the server + * @param device The device slider to update + * @param value The value to set [0, 1.0] + */ +void set_slider_value(const gchar *device, gdouble value); /** * This function updates the sliders without sending the value to the server. @@ -51,6 +63,16 @@ GtkWidget * create_slider (const gchar * device); * @param device The device slider to update {speaker, mic} * @param value The value to set [0, 1.0] */ -void set_slider (const gchar * device, gdouble value); +void set_slider_no_update (const gchar * device, gdouble value); + +/** + * Mute the audio device setting the sliders to 0 + */ +void toggle_slider_mute(void); + +/** + * Returns the mute/unmute state + */ +guint get_mute_unmute_state(void); #endif diff --git a/gnome/src/ui.xml b/gnome/src/ui.xml index 8331e2c51dbe378f3ae98a8a481713faff420fe8..6dadc1bd3e4dcf8e1ba12b5974e64afdd1251601 100644 --- a/gnome/src/ui.xml +++ b/gnome/src/ui.xml @@ -8,7 +8,7 @@ <menuitem name="OnHoldMenu" action="OnHold"/> <menuitem action="InstantMessaging"/> <menuitem action="Record"/> - <menuitem action="MuteCall"/> + <menuitem action="Mute"/> <separator/> <menuitem action="AccountAssistant"/> <separator/> @@ -50,9 +50,10 @@ <toolitem name="TransferToolbar" action="Transfer"/> <toolitem name="InstantMessagingToolbar" action="InstantMessaging"/> <toolitem name="RecordToolbar" action="Record"/> - <toolitem name="MuteCallToolbar" action="MuteCall"/> + <toolitem name="MuteToolbar" action="Mute"/> <!-- FIXME: commented out because it is responsible for #7495 --> <!-- separator/--> + <toolitem name="VoicemailToolbar" action="Voicemail"/> <toolitem name="HistoryToolbar" action="History"/> <toolitem name="StartPlaybackRecordToolbar" action="StartPlaybackRecord"/> diff --git a/gnome/src/uimanager.c b/gnome/src/uimanager.c index 06c514a5330f367eab30afac6f376bdd822af822..737dacb3620a4109cbac20815b67da3af39587c5 100644 --- a/gnome/src/uimanager.c +++ b/gnome/src/uimanager.c @@ -59,6 +59,8 @@ #include <sys/stat.h> +#include <sliders.h> + void show_edit_number(callable_obj_t *call); static GtkWidget *toolbar_; @@ -80,9 +82,9 @@ static GtkWidget * transferToolbar_; static GtkAction * copyAction_; static GtkAction * pasteAction_; static GtkAction * recordAction_; -static GtkAction * muteCallAction_; +static GtkAction * muteAction_; static GtkWidget * recordWidget_; -static GtkWidget * muteCallWidget_; +static GtkWidget * muteWidget_; static GtkAction * voicemailAction_; static GtkWidget * voicemailToolbar_; static GtkWidget * imToolbar_; @@ -120,9 +122,18 @@ static void add_to_toolbar(GtkWidget *toolbar, GtkWidget *item, int pos) gtk_toolbar_insert(GTK_TOOLBAR(toolbar), GTK_TOOL_ITEM(item), pos); } +static void +call_mute(void) +{ + DEBUG("UIManager: Mute call button pressed"); + sflphone_mute_call(); +} + void update_actions() { + int pos = 0; + gtk_action_set_sensitive(newCallAction_, TRUE); gtk_action_set_sensitive(pickUpAction_, FALSE); gtk_action_set_sensitive(hangUpAction_, FALSE); @@ -130,7 +141,7 @@ update_actions() g_object_ref(hangUpWidget_); g_object_ref(recordWidget_); - g_object_ref(muteCallWidget_); + g_object_ref(muteWidget_); g_object_ref(holdToolbar_); g_object_ref(offHoldToolbar_); @@ -144,7 +155,7 @@ update_actions() remove_from_toolbar(hangUpWidget_); remove_from_toolbar(recordWidget_); - remove_from_toolbar(muteCallWidget_); + remove_from_toolbar(muteWidget_); remove_from_toolbar(transferToolbar_); remove_from_toolbar(historyButton_); @@ -158,9 +169,9 @@ update_actions() gtk_widget_set_sensitive(holdToolbar_, FALSE); gtk_widget_set_sensitive(offHoldToolbar_, FALSE); gtk_action_set_sensitive(recordAction_, FALSE); - gtk_action_set_sensitive(muteCallAction_, FALSE); + gtk_action_set_sensitive(muteAction_, FALSE); gtk_widget_set_sensitive(recordWidget_, FALSE); - gtk_widget_set_sensitive(muteCallWidget_, FALSE); + gtk_widget_set_sensitive(muteWidget_, FALSE); gtk_action_set_sensitive(copyAction_, FALSE); if (addrbook) @@ -186,6 +197,12 @@ update_actions() gtk_widget_set_sensitive(historyButton_, TRUE); } + GtkToolItem *separator = gtk_separator_tool_item_new(); + gtk_toolbar_insert(GTK_TOOLBAR(toolbar_), separator, -1); + // add mute button + add_to_toolbar(toolbar_, muteWidget_, -1); + gtk_action_set_sensitive(muteAction_, TRUE); + // If addressbook support has been enabled and all addressbooks are loaded, display the icon if (addrbook && addrbook->is_ready() && addressbook_config_load_parameters()->enable) { add_to_toolbar(toolbar_, contactButton_, -1); @@ -223,9 +240,9 @@ update_actions() // Replace the dial button with the hangup button g_object_ref(newCallWidget_); remove_from_toolbar(newCallWidget_); - int pos = 0; + pos = 0; add_to_toolbar(toolbar_, pickUpWidget_, pos++); - add_to_toolbar(toolbar_, hangUpWidget_, pos); + add_to_toolbar(toolbar_, hangUpWidget_, pos++); break; } case CALL_STATE_HOLD: @@ -237,13 +254,13 @@ update_actions() gtk_widget_set_sensitive(newCallWidget_, TRUE); // Replace the hold button with the off-hold button - int pos = 1; + pos = 1; add_to_toolbar(toolbar_, hangUpWidget_, pos++); add_to_toolbar(toolbar_, offHoldToolbar_, pos++); if (instant_messaging_enabled) { gtk_action_set_sensitive(imAction_, TRUE); - add_to_toolbar(toolbar_, imToolbar_, pos); + add_to_toolbar(toolbar_, imToolbar_, pos++); } break; @@ -253,8 +270,8 @@ update_actions() DEBUG("UIManager: Call State Ringing"); gtk_action_set_sensitive(pickUpAction_, TRUE); gtk_action_set_sensitive(hangUpAction_, TRUE); - int pos = 1; - add_to_toolbar(toolbar_, hangUpWidget_, pos); + pos = 1; + add_to_toolbar(toolbar_, hangUpWidget_, pos++); break; } case CALL_STATE_DIALING: @@ -267,7 +284,7 @@ update_actions() g_object_ref(newCallWidget_); remove_from_toolbar(newCallWidget_); - int pos = 0; + pos = 0; add_to_toolbar(toolbar_, pickUpWidget_, pos++); if (active_calltree_tab == current_calls_tab) @@ -275,9 +292,9 @@ update_actions() else if (active_calltree_tab == history_tab) { if (is_non_empty(selectedCall->_recordfile)) { if (selectedCall->_record_is_playing) - add_to_toolbar(toolbar_, stopRecordWidget_, pos); + add_to_toolbar(toolbar_, stopRecordWidget_, pos++); else - add_to_toolbar(toolbar_, playRecordWidget_, pos); + add_to_toolbar(toolbar_, playRecordWidget_, pos++); } } break; @@ -286,30 +303,25 @@ update_actions() { DEBUG("UIManager: Call State Current"); gtk_action_set_sensitive(hangUpAction_, TRUE); - int pos = 1; + pos = 1; add_to_toolbar(toolbar_, hangUpWidget_, pos++); gtk_widget_set_sensitive(holdMenu_, TRUE); gtk_widget_set_sensitive(holdToolbar_, TRUE); gtk_widget_set_sensitive(transferToolbar_, TRUE); gtk_action_set_sensitive(recordAction_, TRUE); - gtk_action_set_sensitive(muteCallAction_, TRUE); add_to_toolbar(toolbar_, holdToolbar_, pos++); add_to_toolbar(toolbar_, transferToolbar_, pos++); add_to_toolbar(toolbar_, recordWidget_, pos++); - add_to_toolbar(toolbar_, muteCallWidget_, pos++); g_signal_handler_block(transferToolbar_, transferButtonConnId_); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), FALSE); g_signal_handler_unblock(transferToolbar_, transferButtonConnId_); g_signal_handler_block(recordWidget_, recordButtonConnId_); - g_signal_handler_block(muteCallWidget_, muteCallButtonId_); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(recordWidget_), FALSE); - gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(muteCallWidget_), FALSE); g_signal_handler_unblock(recordWidget_, recordButtonConnId_); - g_signal_handler_unblock(muteCallWidget_, muteCallButtonId_); if (instant_messaging_enabled) { gtk_action_set_sensitive(imAction_, TRUE); - add_to_toolbar(toolbar_, imToolbar_, pos); + add_to_toolbar(toolbar_, imToolbar_, pos++); } break; @@ -318,31 +330,26 @@ update_actions() case CALL_STATE_RECORD: { DEBUG("UIManager: Call State Record"); - int pos = 1; + pos = 1; gtk_action_set_sensitive(hangUpAction_, TRUE); add_to_toolbar(toolbar_, hangUpWidget_, pos++); gtk_widget_set_sensitive(holdMenu_, TRUE); gtk_widget_set_sensitive(holdToolbar_, TRUE); gtk_widget_set_sensitive(transferToolbar_, TRUE); gtk_action_set_sensitive(recordAction_, TRUE); - gtk_action_set_sensitive(muteCallAction_, TRUE); add_to_toolbar(toolbar_, holdToolbar_, pos++); add_to_toolbar(toolbar_, transferToolbar_, pos++); add_to_toolbar(toolbar_, recordWidget_, pos++); - add_to_toolbar(toolbar_, muteCallWidget_, pos++); g_signal_handler_block(transferToolbar_, transferButtonConnId_); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), FALSE); g_signal_handler_unblock(transferToolbar_, transferButtonConnId_); g_signal_handler_block(recordWidget_, recordButtonConnId_); - g_signal_handler_block(muteCallWidget_, muteCallButtonId_); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(recordWidget_), TRUE); - gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(muteCallWidget_), TRUE); g_signal_handler_unblock(recordWidget_, recordButtonConnId_); - g_signal_handler_unblock(muteCallWidget_, muteCallButtonId_); if (instant_messaging_enabled) { gtk_action_set_sensitive(imAction_, TRUE); - add_to_toolbar(toolbar_, imToolbar_, pos); + add_to_toolbar(toolbar_, imToolbar_, pos++); } break; @@ -350,17 +357,17 @@ update_actions() case CALL_STATE_BUSY: case CALL_STATE_FAILURE: { - int pos = 1; + pos = 1; DEBUG("UIManager: Call State Busy/Failure"); gtk_action_set_sensitive(hangUpAction_, TRUE); - add_to_toolbar(toolbar_, hangUpWidget_, pos); + add_to_toolbar(toolbar_, hangUpWidget_, pos++); break; } case CALL_STATE_TRANSFER: { - int pos = 1; + pos = 1; add_to_toolbar(toolbar_, hangUpWidget_, pos++); - add_to_toolbar(toolbar_, transferToolbar_, pos); + add_to_toolbar(toolbar_, transferToolbar_, pos++); g_signal_handler_block(transferToolbar_, transferButtonConnId_); gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), TRUE); g_signal_handler_unblock(transferToolbar_, transferButtonConnId_); @@ -374,6 +381,7 @@ update_actions() ERROR("UIMAnager: Error: Unknown state in action update!"); break; } + } else if (selectedConf) { DEBUG("UIManager: Update actions for conference"); @@ -391,12 +399,10 @@ update_actions() gtk_action_set_sensitive(hangUpAction_, TRUE); gtk_widget_set_sensitive(holdToolbar_, TRUE); gtk_action_set_sensitive(recordAction_, TRUE); - gtk_action_set_sensitive(muteCallAction_, TRUE); - int pos = 1; + pos = 1; add_to_toolbar(toolbar_, hangUpWidget_, pos++); add_to_toolbar(toolbar_, holdToolbar_, pos++); add_to_toolbar(toolbar_, recordWidget_, pos++); - add_to_toolbar(toolbar_, muteCallWidget_, pos++); if (instant_messaging_enabled) { gtk_action_set_sensitive(imAction_, TRUE); @@ -404,7 +410,7 @@ update_actions() } } else if (active_calltree_tab == history_tab) { if (is_non_empty(selectedConf->_recordfile)) { - int pos = 2; + pos = 2; if (selectedConf->_record_is_playing) add_to_toolbar(toolbar_, stopRecordWidget_, pos); else @@ -415,16 +421,14 @@ update_actions() break; case CONFERENCE_STATE_ACTIVE_ATTACHED_RECORD: case CONFERENCE_STATE_ACTIVE_DETACHED_RECORD: { - int pos = 1; + pos = 1; DEBUG("UIManager: Conference State Record"); gtk_action_set_sensitive(hangUpAction_, TRUE); gtk_widget_set_sensitive(holdToolbar_, TRUE); gtk_action_set_sensitive(recordAction_, TRUE); - gtk_action_set_sensitive(muteCallAction_, TRUE); add_to_toolbar(toolbar_, hangUpWidget_, pos++); add_to_toolbar(toolbar_, holdToolbar_, pos++); add_to_toolbar(toolbar_, recordWidget_, pos++); - add_to_toolbar(toolbar_, muteCallWidget_, pos++); if (instant_messaging_enabled) { gtk_action_set_sensitive(imAction_, TRUE); @@ -436,15 +440,13 @@ update_actions() case CONFERENCE_STATE_HOLD: case CONFERENCE_STATE_HOLD_RECORD: { DEBUG("UIManager: Conference State Hold"); - int pos = 1; + pos = 1; gtk_action_set_sensitive(hangUpAction_, TRUE); gtk_widget_set_sensitive(offHoldToolbar_, TRUE); gtk_action_set_sensitive(recordAction_, TRUE); - gtk_action_set_sensitive(muteCallAction_, TRUE); add_to_toolbar(toolbar_, hangUpWidget_, pos++); add_to_toolbar(toolbar_, offHoldToolbar_, pos++); add_to_toolbar(toolbar_, recordWidget_, pos++); - add_to_toolbar(toolbar_, muteCallWidget_, pos++); if (instant_messaging_enabled) { gtk_action_set_sensitive(imAction_, TRUE); @@ -745,13 +747,6 @@ call_record(void) sflphone_rec_call(); } -static void -call_mute(void) -{ - DEBUG("UIManager: Mute call button pressed"); -// sflphone_mute_call(); -} - static void start_playback_record_cb(void) { @@ -1098,12 +1093,12 @@ static const GtkActionEntry menu_entries[] = { static const GtkToggleActionEntry toggle_menu_entries[] = { { "Transfer", GTK_STOCK_TRANSFER, N_("_Transfer"), "<control>T", N_("Transfer the call"), NULL, TRUE }, { "Record", GTK_STOCK_MEDIA_RECORD, N_("_Record"), "<control>R", N_("Record the current conversation"), NULL, TRUE }, - { "MuteCall", GTK_STOCK_MEDIA_RECORD, N_("_MuteCall"), "<control>M", N_("Mute microphone for this call"), NULL, TRUE }, + { "Mute", GTK_STOCK_CANCEL, N_("_Mute"), "<control>M", N_("Mute microphone for this call"), G_CALLBACK(call_mute), FALSE }, { "Toolbar", NULL, N_("_Show toolbar"), "<control>T", N_("Show the toolbar"), NULL, TRUE }, { "Dialpad", NULL, N_("_Dialpad"), "<control>D", N_("Show the dialpad"), G_CALLBACK(dialpad_bar_cb), TRUE }, { "VolumeControls", NULL, N_("_Volume controls"), "<control>V", N_("Show the volume controls"), G_CALLBACK(volume_bar_cb), TRUE }, { "History", "appointment-soon", N_("_History"), NULL, N_("Calls history"), G_CALLBACK(toggle_history_cb), FALSE }, - { "Addressbook", GTK_STOCK_ADDRESSBOOK, N_("_Address book"), NULL, N_("Address book"), G_CALLBACK(toggle_addressbook_cb), FALSE } + { "Addressbook", GTK_STOCK_ADDRESSBOOK, N_("_Address book"), NULL, N_("Address book"), G_CALLBACK(toggle_addressbook_cb), FALSE }, }; GtkUIManager *uimanager_new(void) @@ -1639,8 +1634,8 @@ create_menus(GtkUIManager *ui_manager) ERROR("Could not create record action"); } - muteCallAction_ = gtk_ui_manager_get_action(ui_manager, "/MenuBar/CallMenu/MuteCall"); - if(muteCallAction_ == NULL) { + muteAction_ = gtk_ui_manager_get_action(ui_manager, "/MenuBar/CallMenu/Mute"); + if(muteAction_ == NULL) { ERROR("Could not create mute call action"); } @@ -1727,8 +1722,8 @@ create_toolbar_actions(GtkUIManager *ui_manager) ERROR("Could not create record toolbar widget"); } - muteCallWidget_ = gtk_ui_manager_get_widget(ui_manager, "/ToolbarActions/MuteCallToolbar"); - if(muteCallWidget_ == NULL) { + muteWidget_ = gtk_ui_manager_get_widget(ui_manager, "/ToolbarActions/MuteToolbar"); + if(muteWidget_ == NULL) { ERROR("Could not create mute call widget"); } @@ -1758,7 +1753,7 @@ create_toolbar_actions(GtkUIManager *ui_manager) // Set the handler ID for the transfer transferButtonConnId_ = g_signal_connect(G_OBJECT(transferToolbar_), "toggled", G_CALLBACK(call_transfer_cb), NULL); recordButtonConnId_ = g_signal_connect(G_OBJECT(recordWidget_), "toggled", G_CALLBACK(call_record), NULL); - muteCallButtonId_ = g_signal_connect(G_OBJECT(muteCallWidget_), "toggled", G_CALLBACK(call_mute), NULL); + // muteCallButtonId_ = g_signal_connect(G_OBJECT(muteWidget_), "toggled", G_CALLBACK(call_mute), NULL); active_calltree_tab = current_calls_tab; return toolbar_;