88
89
static GtkAction * pasteAction_;
89
90
static GtkAction * recordAction_;
90
91
static GtkAction * imAction_;
93
static GtkAction * screenshareAction_;
92
96
static GtkWidget * pickUpWidget_;
93
97
static GtkWidget * newCallWidget_;
99
103
static GtkWidget * recordWidget_;
100
104
static GtkWidget * voicemailToolbar_;
101
105
static GtkWidget * imToolbar_;
106
static GtkWidget * screenshareToolbar_;
103
108
static GtkWidget * editable_num_;
104
109
static GtkWidget * edit_dialog_;
129
134
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), GTK_TOOL_ITEM(item), pos);
139
is_video_call(callable_obj_t *call)
141
gboolean video_enabled = FALSE;
142
account_t *account = account_list_get_by_id(call->_accountID);
145
gchar *ptr = (gchar *) account_lookup(account, CONFIG_VIDEO_ENABLED);
146
video_enabled = g_strcmp0(ptr, "true") == 0;
149
return video_enabled;
133
154
update_toolbar_for_call(callable_obj_t *selectedCall, gboolean instant_messaging_enabled, SFLPhoneClient *client)
232
257
gtk_widget_set_sensitive(transferToolbar_, TRUE);
233
258
if (instant_messaging_enabled)
234
259
gtk_action_set_sensitive(imAction_, TRUE);
262
gtk_action_set_sensitive(screenshareAction_, TRUE);
237
266
add_to_toolbar(toolbar, hangUpWidget_, pos++);
240
269
add_to_toolbar(toolbar, recordWidget_, pos++);
241
270
if (instant_messaging_enabled)
242
271
add_to_toolbar(toolbar, imToolbar_, pos++);
274
add_to_toolbar(toolbar, screenshareToolbar_, pos++);
244
277
gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), FALSE);
245
278
gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(recordWidget_), dbus_get_is_recording(selectedCall));
376
409
gtk_action_set_sensitive(recordAction_, FALSE);
377
410
gtk_action_set_sensitive(copyAction_, FALSE);
378
411
gtk_action_set_sensitive(imAction_, FALSE);
413
gtk_action_set_sensitive(screenshareAction_, FALSE);
380
416
gtk_widget_set_sensitive(holdMenu_, FALSE);
381
417
gtk_widget_set_sensitive(holdToolbar_, FALSE);
406
445
remove_from_toolbar(toolbar, historyButton_);
407
446
remove_from_toolbar(toolbar, voicemailToolbar_);
408
447
remove_from_toolbar(toolbar, imToolbar_);
448
remove_from_toolbar(toolbar, screenshareToolbar_);
409
449
remove_from_toolbar(toolbar, holdToolbar_);
410
450
remove_from_toolbar(toolbar, offHoldToolbar_);
411
451
remove_from_toolbar(toolbar, newCallWidget_);
470
510
current_account_get_message_number());
472
512
if (current_account_has_new_message())
473
gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(voicemailToolbar_),
513
gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(voicemailToolbar_),
514
GTK_STOCK_NEWVOICEMAIL);
476
gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(voicemailToolbar_),
516
gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(voicemailToolbar_),
517
GTK_STOCK_VOICEMAIL);
479
519
gtk_tool_button_set_label(GTK_TOOL_BUTTON(voicemailToolbar_), messages);
480
520
g_free(messages);
705
call_screenshare(G_GNUC_UNUSED GtkAction *action, G_GNUC_UNUSED SFLPhoneClient *client)
708
sflphone_toggle_screenshare();
716
GtkWidget *dialog = gtk_file_chooser_dialog_new(NULL, NULL,
717
GTK_FILE_CHOOSER_ACTION_OPEN,
718
_("_Cancel"), GTK_RESPONSE_CANCEL,
719
_("_Open"), GTK_RESPONSE_ACCEPT,
722
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
723
GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog);
724
uri = gtk_file_chooser_get_uri(chooser);
727
gtk_widget_destroy(dialog);
733
call_switch_video_input(G_GNUC_UNUSED GtkWidget *widget, gchar *device)
737
if (g_strcmp0(device, _("Screen")) == 0) {
738
resource = sflphone_get_display();
739
} else if (g_strcmp0(device, _("Choose file...")) == 0) {
740
resource = choose_file();
744
dbus_video_set_default_device(device);
745
resource = g_strconcat("v4l2://", device, NULL);
748
sflphone_switch_video_input(resource);
665
754
conference_hold(G_GNUC_UNUSED gpointer foo)
667
756
conference_obj_t * selectedConf = calltab_get_selected_conf(current_calls_tab);
846
935
selectedCall->_peer_info = g_strconcat("\"\" <",
847
936
selectedCall->_peer_number, ">", NULL);
849
calltree_update_call(current_calls_tab, selectedCall, client, FALSE);
938
calltree_update_call(current_calls_tab, selectedCall, client);
852
941
case CALL_STATE_RINGING:
865
954
selectedCall->_peer_info = g_strconcat("\"\" <",
866
955
selectedCall->_peer_number, ">", NULL);
868
calltree_update_call(current_calls_tab, selectedCall, client, FALSE);
957
calltree_update_call(current_calls_tab, selectedCall, client);
871
960
case CALL_STATE_CURRENT:
881
970
selectedCall->_peer_info = get_peer_info(temp, selectedCall->_display_name);
884
calltree_update_call(current_calls_tab, selectedCall, client, TRUE);
973
calltree_update_call(current_calls_tab, selectedCall, client);
897
986
g_free(selectedCall->_peer_info);
898
987
selectedCall->_peer_info = g_strconcat("\"\" <",
899
988
selectedCall->_peer_number, ">", NULL);
900
calltree_update_call(current_calls_tab, selectedCall, client, FALSE);
989
calltree_update_call(current_calls_tab, selectedCall, client);
1010
1099
N_("Send message"), G_CALLBACK(call_im)
1102
"ScreenSharing", GTK_STOCK_SCREENSHARING, N_("Share screen"), "<control>X",
1103
N_("Share screen"), G_CALLBACK(call_screenshare)
1013
1106
"AccountAssistant", NULL, N_("Configuration _Assistant"), NULL,
1014
1107
N_("Run the configuration assistant"), G_CALLBACK(call_configuration_assistant)
1063
1156
static const GtkToggleActionEntry toggle_menu_entries[] = {
1064
1157
{ "Transfer", GTK_STOCK_TRANSFER, N_("_Transfer"), "<control>T", N_("Transfer the call"), NULL, TRUE },
1065
{ "Record", GTK_STOCK_MEDIA_RECORD, N_("_Record"), "<control>R", N_("Record the current conversation"), NULL, TRUE },
1158
{ "Record", GTK_STOCK_RECORD, N_("_Record"), "<control>R", N_("Record the current conversation"), NULL, TRUE },
1066
1159
{ "Toolbar", NULL, N_("_Show toolbar"), "<control>T", N_("Show the toolbar"), NULL, TRUE },
1067
1160
{ "Dialpad", NULL, N_("_Dialpad"), "<control>D", N_("Show the dialpad"), G_CALLBACK(dialpad_bar_cb), TRUE },
1068
1161
{ "VolumeControls", NULL, N_("_Volume controls"), "<control>V", N_("Show the volume controls"), G_CALLBACK(volume_bar_cb), TRUE },
1069
{ "History", "appointment-soon", N_("_History"), NULL, N_("Calls history"), G_CALLBACK(toggle_history_cb), FALSE },
1162
{ "History", GTK_STOCK_HISTORY, N_("_History"), NULL, N_("Call history"), G_CALLBACK(toggle_history_cb), FALSE },
1070
1163
{ "Addressbook", GTK_STOCK_ADDRESSBOOK, N_("_Address book"), NULL, N_("Address book"), G_CALLBACK(toggle_addressbook_cb), FALSE },
1071
1164
#ifdef SFL_PRESENCE
1072
1165
{ "Buddies", NULL, N_("_Buddy list"), NULL, N_("Display the buddy list"), G_CALLBACK(toggle_presence_window_cb), FALSE},
1208
1301
gtk_get_current_event_time());
1306
append_video_input_to_submenu(GtkWidget *submenu, const gchar *device)
1308
GtkWidget *item = gtk_image_menu_item_new_with_mnemonic(_(device));
1309
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), item);
1310
g_signal_connect(G_OBJECT(item), "activate",
1311
G_CALLBACK(call_switch_video_input), (gpointer) device);
1312
gtk_widget_show(item);
1212
1317
show_popup_menu(GtkWidget *my_widget, GdkEventButton *event, SFLPhoneClient *client)
1214
1319
// TODO update the selection to make sure the call under the mouse is the call selected
1215
1320
gboolean pickup = FALSE, hangup = FALSE, hold = FALSE, copy = FALSE, record = FALSE, im = FALSE;
1322
gboolean video_sources = FALSE;
1216
1324
gboolean accounts = FALSE;
1218
1326
// conference type boolean
1289
1400
GtkWidget *menu = gtk_menu_new();
1401
gtk_menu_set_accel_group(GTK_MENU(menu), get_accel_group());
1291
1403
if (calltab_get_selected_type(current_calls_tab) == A_CALL) {
1292
1404
g_debug("Build call menu");
1294
GtkWidget *menu_items = gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY,
1296
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_items);
1297
g_signal_connect(G_OBJECT(menu_items), "activate",
1406
GtkWidget *copy_item = gtk_menu_item_new_with_mnemonic(_("_Copy"));
1407
gtk_menu_shell_append(GTK_MENU_SHELL(menu), copy_item);
1408
g_signal_connect(G_OBJECT(copy_item), "activate",
1298
1409
G_CALLBACK(edit_copy),
1300
gtk_widget_show(menu_items);
1411
gtk_widget_show(copy_item);
1303
GtkWidget *paste = gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE,
1414
GtkWidget *paste = gtk_menu_item_new_with_mnemonic(_("_Paste"));
1305
1415
gtk_menu_shell_append(GTK_MENU_SHELL(menu), paste);
1306
1416
g_signal_connect(G_OBJECT(paste), "activate", G_CALLBACK(edit_paste),
1317
GtkWidget *menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Pick up"));
1427
GtkWidget *pickup_item = gtk_image_menu_item_new_with_mnemonic(_("_Pick up"));
1318
1428
GtkWidget *image = gtk_image_new_from_file(ICONS_DIR "/icon_accept.svg");
1319
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image);
1320
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_items);
1321
g_signal_connect(G_OBJECT(menu_items), "activate",
1429
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(pickup_item), image);
1430
gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(pickup_item), TRUE);
1431
gtk_menu_shell_append(GTK_MENU_SHELL(menu), pickup_item);
1432
g_signal_connect(G_OBJECT(pickup_item), "activate",
1322
1433
G_CALLBACK(call_pick_up),
1324
gtk_widget_show(menu_items);
1435
gtk_widget_show(pickup_item);
1350
1461
GtkWidget *menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Record"));
1351
GtkWidget *image = gtk_image_new_from_stock(GTK_STOCK_MEDIA_RECORD,
1462
GtkWidget *image = gtk_image_new_from_stock(GTK_STOCK_RECORD,
1352
1463
GTK_ICON_SIZE_MENU);
1353
1464
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image);
1354
1465
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_items);
1377
1488
gtk_widget_show(menu_items);
1493
if (video_sources) {
1494
GtkWidget *video_sep, *video_item, *video_menu;
1496
video_sep = gtk_separator_menu_item_new();
1497
gtk_menu_shell_append(GTK_MENU_SHELL(menu), video_sep);
1498
gtk_widget_show(video_sep);
1500
/* Add a video sources menu */
1501
video_item = gtk_image_menu_item_new_with_mnemonic(_("Video sources"));
1502
gtk_menu_shell_append(GTK_MENU_SHELL(menu), video_item);
1503
gtk_widget_show(video_item);
1505
video_menu = gtk_menu_new();
1506
gtk_menu_item_set_submenu(GTK_MENU_ITEM(video_item), video_menu);
1508
/* Append sources to the submenu */
1509
gchar **video_list = dbus_video_get_device_list();
1510
while (*video_list) {
1511
append_video_input_to_submenu(video_menu, *video_list);
1512
//g_free(*video_list);
1515
/* Add the special X11 device */
1516
append_video_input_to_submenu(video_menu, _("Screen"));
1517
append_video_input_to_submenu(video_menu, _("Choose file..."));
1381
1521
g_debug("Build conf menus");
1639
1779
holdMenu_ = get_widget(ui, "/MenuBar/CallMenu/OnHoldMenu");
1640
1780
recordAction_ = get_action(ui, "/MenuBar/CallMenu/Record");
1641
1781
imAction_ = get_action(ui, "/MenuBar/CallMenu/InstantMessaging");
1783
screenshareAction_ = get_action(ui, "/MenuBar/CallMenu/ScreenSharing");
1642
1785
copyAction_ = get_action(ui, "/MenuBar/EditMenu/Copy");
1643
1786
pasteAction_ = get_action(ui, "/MenuBar/EditMenu/Paste");
1644
1787
volumeToggle_ = get_action(ui, "/MenuBar/ViewMenu/VolumeControls");
1672
1815
hangUpWidget_ = get_widget(ui, "/ToolbarActions/HangUpToolbar");
1673
1816
recordWidget_ = get_widget(ui, "/ToolbarActions/RecordToolbar");
1674
1817
imToolbar_ = get_widget(ui, "/ToolbarActions/InstantMessagingToolbar");
1818
screenshareToolbar_ = get_widget(ui, "/ToolbarActions/ScreenSharingToolbar");
1819
/* Hide this widget if video support is disabled */
1821
remove_from_toolbar(client->toolbar, screenshareToolbar_);
1675
1823
historyButton_ = get_widget(ui, "/ToolbarActions/HistoryToolbar");
1677
1825
contactButton_ = get_widget(ui, "/ToolbarActions/AddressbookToolbar");