Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
savoirfairelinux
jami-daemon
Commits
3e856e19
Commit
3e856e19
authored
Feb 16, 2012
by
Alexandre Savard
Browse files
#8762: Add button in uimanager to mute call
parent
cbc0c6f7
Changes
2
Hide whitespace changes
Inline
Side-by-side
gnome/src/ui.xml
View file @
3e856e19
...
...
@@ -8,6 +8,7 @@
<menuitem
name=
"OnHoldMenu"
action=
"OnHold"
/>
<menuitem
action=
"InstantMessaging"
/>
<menuitem
action=
"Record"
/>
<menuitem
action=
"MuteCall"
/>
<separator/>
<menuitem
action=
"AccountAssistant"
/>
<separator/>
...
...
@@ -49,6 +50,7 @@
<toolitem
name=
"TransferToolbar"
action=
"Transfer"
/>
<toolitem
name=
"InstantMessagingToolbar"
action=
"InstantMessaging"
/>
<toolitem
name=
"RecordToolbar"
action=
"Record"
/>
<toolitem
name=
"MuteCallToolbar"
action=
"MuteCall"
/>
<!-- FIXME: commented out because it is responsible for #7495 -->
<!-- separator/-->
<toolitem
name=
"VoicemailToolbar"
action=
"Voicemail"
/>
...
...
gnome/src/uimanager.c
View file @
3e856e19
...
...
@@ -65,6 +65,7 @@ static GtkWidget *toolbar_;
static
guint
transferButtonConnId_
;
//The button toggled signal connection ID
static
guint
recordButtonConnId_
;
//The button toggled signal connection ID
static
guint
muteCallButtonId_
;
//The button toggled signal connection ID
static
GtkAction
*
pickUpAction_
;
static
GtkWidget
*
pickUpWidget_
;
...
...
@@ -79,7 +80,9 @@ static GtkWidget * transferToolbar_;
static
GtkAction
*
copyAction_
;
static
GtkAction
*
pasteAction_
;
static
GtkAction
*
recordAction_
;
static
GtkAction
*
muteCallAction_
;
static
GtkWidget
*
recordWidget_
;
static
GtkWidget
*
muteCallWidget_
;
static
GtkAction
*
voicemailAction_
;
static
GtkWidget
*
voicemailToolbar_
;
static
GtkWidget
*
imToolbar_
;
...
...
@@ -127,6 +130,7 @@ update_actions()
g_object_ref
(
hangUpWidget_
);
g_object_ref
(
recordWidget_
);
g_object_ref
(
muteCallWidget_
);
g_object_ref
(
holdToolbar_
);
g_object_ref
(
offHoldToolbar_
);
...
...
@@ -140,6 +144,7 @@ update_actions()
remove_from_toolbar
(
hangUpWidget_
);
remove_from_toolbar
(
recordWidget_
);
remove_from_toolbar
(
muteCallWidget_
);
remove_from_toolbar
(
transferToolbar_
);
remove_from_toolbar
(
historyButton_
);
...
...
@@ -153,7 +158,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_widget_set_sensitive
(
recordWidget_
,
FALSE
);
gtk_widget_set_sensitive
(
muteCallWidget_
,
FALSE
);
gtk_action_set_sensitive
(
copyAction_
,
FALSE
);
if
(
addrbook
)
...
...
@@ -285,15 +292,20 @@ update_actions()
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
);
...
...
@@ -313,15 +325,20 @@ update_actions()
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
);
...
...
@@ -374,10 +391,12 @@ 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
;
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
);
...
...
@@ -401,9 +420,11 @@ 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
);
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
);
...
...
@@ -419,9 +440,11 @@ update_actions()
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
);
...
...
@@ -722,6 +745,13 @@ 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
)
{
...
...
@@ -1068,6 +1098,7 @@ 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
},
{
"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
},
...
...
@@ -1077,7 +1108,7 @@ static const GtkToggleActionEntry toggle_menu_entries[] = {
GtkUIManager
*
uimanager_new
(
void
)
{
gint
nb_entries
=
addrbook
?
7
:
6
;
gint
nb_entries
=
addrbook
?
8
:
7
;
GtkWidget
*
window
=
get_main_window
();
GtkUIManager
*
ui_manager
=
gtk_ui_manager_new
();
...
...
@@ -1193,7 +1224,7 @@ void
show_popup_menu
(
GtkWidget
*
my_widget
,
GdkEventButton
*
event
)
{
// TODO update the selection to make sure the call under the mouse is the call selected
gboolean
pickup
=
FALSE
,
hangup
=
FALSE
,
hold
=
FALSE
,
copy
=
FALSE
,
record
=
FALSE
,
im
=
FALSE
;
gboolean
pickup
=
FALSE
,
hangup
=
FALSE
,
hold
=
FALSE
,
copy
=
FALSE
,
record
=
FALSE
,
im
=
FALSE
,
mute
=
FALSE
;
gboolean
accounts
=
FALSE
;
// conference type boolean
...
...
@@ -1232,6 +1263,7 @@ show_popup_menu(GtkWidget *my_widget, GdkEventButton *event)
hold
=
TRUE
;
record
=
TRUE
;
im
=
TRUE
;
mute
=
TRUE
;
break
;
case
CALL_STATE_BUSY
:
case
CALL_STATE_FAILURE
:
...
...
@@ -1340,6 +1372,20 @@ show_popup_menu(GtkWidget *my_widget, GdkEventButton *event)
gtk_widget_show
(
menu_items
);
}
if
(
mute
)
{
GtkWidget
*
menu_items
=
gtk_image_menu_item_new_with_mnemonic
(
_
(
"_Mute"
));
GtkWidget
*
image
=
gtk_image_new_from_stock
(
GTK_STOCK_MEDIA_RECORD
,
GTK_ICON_SIZE_MENU
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
menu_items
),
image
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
menu
),
menu_items
);
g_signal_connect
(
G_OBJECT
(
menu_items
),
"activate"
,
G_CALLBACK
(
call_mute
),
NULL
);
gtk_widget_show
(
menu_items
);
}
if
(
im
)
{
// do not display message if instant messaging is disabled
gboolean
instant_messaging_enabled
=
TRUE
;
...
...
@@ -1564,15 +1610,59 @@ GtkWidget *
create_menus
(
GtkUIManager
*
ui_manager
)
{
GtkWidget
*
menu_bar
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/MenuBar"
);
if
(
menu_bar
==
NULL
)
{
ERROR
(
"Could not create menu bar"
);
}
pickUpAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/CallMenu/PickUp"
);
if
(
pickUpAction_
==
NULL
)
{
ERROR
(
"Could not create pick up action"
);
}
newCallAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/CallMenu/NewCall"
);
if
(
newCallAction_
==
NULL
)
{
ERROR
(
"Could not create new call action"
);
}
hangUpAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/CallMenu/HangUp"
);
if
(
hangUpAction_
==
NULL
)
{
ERROR
(
"Could not create hangup action"
);
}
holdMenu_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/MenuBar/CallMenu/OnHoldMenu"
);
if
(
holdMenu_
==
NULL
)
{
ERROR
(
"Could not create hold menu widget"
);
}
recordAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/CallMenu/Record"
);
if
(
recordAction_
==
NULL
)
{
ERROR
(
"Could not create record action"
);
}
muteCallAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/CallMenu/MuteCall"
);
if
(
muteCallAction_
==
NULL
)
{
ERROR
(
"Could not create mute call action"
);
}
imAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/CallMenu/InstantMessaging"
);
if
(
imAction_
==
NULL
)
{
ERROR
(
"Could not create instant messaging action"
);
}
copyAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/EditMenu/Copy"
);
if
(
copyAction_
==
NULL
)
{
ERROR
(
"Could not create copy action"
);
}
pasteAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/EditMenu/Paste"
);
if
(
pasteAction_
==
NULL
)
{
ERROR
(
"Could not create paste action"
);
}
volumeToggle_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/ViewMenu/VolumeControls"
);
if
(
volumeToggle_
==
NULL
)
{
ERROR
(
"Could not create volume toggle action"
);
}
// Set the toggle buttons
gtk_toggle_action_set_active
(
GTK_TOGGLE_ACTION
(
gtk_ui_manager_get_action
(
ui_manager
,
"/MenuBar/ViewMenu/Dialpad"
)),
eel_gconf_get_boolean
(
CONF_SHOW_DIALPAD
));
...
...
@@ -1592,32 +1682,75 @@ create_toolbar_actions(GtkUIManager *ui_manager)
{
toolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions"
);
holdToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/OnHoldToolbar"
);
offHoldToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/OffHoldToolbar"
);
transferToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/TransferToolbar"
);
voicemailAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/ToolbarActions/Voicemail"
);
voicemailToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/VoicemailToolbar"
);
newCallWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/NewCallToolbar"
);
pickUpWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/PickUpToolbar"
);
hangUpWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/HangUpToolbar"
);
recordWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/RecordToolbar"
);
imToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/InstantMessagingToolbar"
);
historyButton_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/HistoryToolbar"
);
playRecordWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/StartPlaybackRecordToolbar"
);
stopRecordWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/StopPlaybackRecordToolbar"
);
holdToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/OnHoldToolbar"
);
if
(
holdToolbar_
==
NULL
)
{
ERROR
(
"Could not create on hold toolbar widget"
);
}
offHoldToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/OffHoldToolbar"
);
if
(
offHoldToolbar_
==
NULL
)
{
ERROR
(
"Could not create off hold toolbar widget"
);
}
transferToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/TransferToolbar"
);
if
(
transferToolbar_
==
NULL
)
{
ERROR
(
"Could not create transfer toolbar widget"
);
}
voicemailAction_
=
gtk_ui_manager_get_action
(
ui_manager
,
"/ToolbarActions/Voicemail"
);
if
(
voicemailAction_
==
NULL
)
{
ERROR
(
"Could not create voicemail action"
);
}
voicemailToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/VoicemailToolbar"
);
if
(
voicemailToolbar_
==
NULL
)
{
ERROR
(
"Could not create voicemail toolbar widget"
);
}
newCallWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/NewCallToolbar"
);
if
(
newCallWidget_
==
NULL
)
{
ERROR
(
"Could not create new call widget"
);
}
pickUpWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/PickUpToolbar"
);
if
(
pickUpWidget_
==
NULL
)
{
ERROR
(
"Could not create pick up toolbar widget"
);
}
hangUpWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/HangUpToolbar"
);
if
(
hangUpWidget_
==
NULL
)
{
ERROR
(
"Could not create hang up toolbar widget"
);
}
recordWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/RecordToolbar"
);
if
(
recordWidget_
==
NULL
)
{
ERROR
(
"Could not create record toolbar widget"
);
}
muteCallWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/MuteCallToolbar"
);
if
(
muteCallWidget_
==
NULL
)
{
ERROR
(
"Could not create mute call widget"
);
}
imToolbar_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/InstantMessagingToolbar"
);
if
(
imToolbar_
==
NULL
)
{
ERROR
(
"Could not create instant messaging widget"
);
}
historyButton_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/HistoryToolbar"
);
if
(
historyButton_
==
NULL
)
{
ERROR
(
"Could not create history button widget"
);
}
playRecordWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/StartPlaybackRecordToolbar"
);
if
(
playRecordWidget_
==
NULL
)
{
ERROR
(
"Could not create play record widget"
);
}
stopRecordWidget_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/StopPlaybackRecordToolbar"
);
if
(
stopRecordWidget_
==
NULL
)
{
ERROR
(
"Could not create stop record widget"
);
}
if
(
addrbook
)
contactButton_
=
gtk_ui_manager_get_widget
(
ui_manager
,
"/ToolbarActions/AddressbookToolbar"
);
...
...
@@ -1625,6 +1758,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
);
active_calltree_tab
=
current_calls_tab
;
return
toolbar_
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment