62
72
GtkWidget * recordWidget;
63
73
GtkAction * voicemailAction;
64
74
GtkWidget * voicemailToolbar;
75
GtkWidget * imToolbar;
66
78
GtkWidget * editable_num;
67
79
GtkDialog * edit_dialog;
71
CALLTREE_CALLS, CALLTREE_HISTORY, CALLTREE_CONTACTS
82
CALLTREE_CALLS, CALLTREE_HISTORY, CALLTREE_CONTACTS
75
is_inserted(GtkWidget* button, GtkWidget *current_toolbar)
86
is_inserted (GtkWidget* button, GtkWidget *current_toolbar)
77
return (GTK_WIDGET (button)->parent == GTK_WIDGET (current_toolbar));
88
return (GTK_WIDGET (button)->parent == GTK_WIDGET (current_toolbar));
84
DEBUG("Update action");
86
gtk_action_set_sensitive(GTK_ACTION (newCallAction), TRUE);
87
gtk_action_set_sensitive(GTK_ACTION (pickUpAction), FALSE);
88
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), FALSE);
90
g_object_ref(hangUpWidget);
91
g_object_ref(recordWidget);
92
g_object_ref(holdToolbar);
93
g_object_ref(offHoldToolbar);
94
g_object_ref(contactButton);
95
g_object_ref(transferToolbar);
96
g_object_ref(voicemailToolbar);
98
if (is_inserted(GTK_WIDGET(hangUpWidget), GTK_WIDGET (toolbar)))
100
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET (hangUpWidget));
103
if (is_inserted(GTK_WIDGET(recordWidget), GTK_WIDGET (toolbar)))
105
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET (recordWidget));
108
if (is_inserted(GTK_WIDGET(transferToolbar), GTK_WIDGET (toolbar)))
110
gtk_container_remove(GTK_CONTAINER (toolbar),
111
GTK_WIDGET (transferToolbar));
114
if (is_inserted(GTK_WIDGET(contactButton), GTK_WIDGET (toolbar)))
116
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET (contactButton));
119
if (is_inserted(GTK_WIDGET (voicemailToolbar), GTK_WIDGET (toolbar)))
121
gtk_container_remove(GTK_CONTAINER (toolbar),
122
GTK_WIDGET (voicemailToolbar));
125
gtk_widget_set_sensitive(GTK_WIDGET (holdMenu), FALSE);
126
gtk_widget_set_sensitive(GTK_WIDGET (holdToolbar), FALSE);
127
gtk_widget_set_sensitive(GTK_WIDGET (offHoldToolbar), FALSE);
128
gtk_action_set_sensitive(GTK_ACTION (recordAction), FALSE);
129
gtk_widget_set_sensitive(GTK_WIDGET (recordWidget), FALSE);
130
gtk_action_set_sensitive(GTK_ACTION (copyAction), FALSE);
131
gtk_widget_set_sensitive(GTK_WIDGET(contactButton), FALSE);
132
gtk_widget_set_tooltip_text(GTK_WIDGET (contactButton),
133
_("No address book selected"));
135
if (is_inserted(GTK_WIDGET (holdToolbar), GTK_WIDGET (toolbar)))
136
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET (holdToolbar));
137
if (is_inserted(GTK_WIDGET (offHoldToolbar), GTK_WIDGET (toolbar)))
138
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET (offHoldToolbar));
140
if (is_inserted(GTK_WIDGET (newCallWidget), GTK_WIDGET (toolbar)))
141
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET (newCallWidget));
142
if (is_inserted(GTK_WIDGET (pickUpWidget), GTK_WIDGET (toolbar)))
143
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET (pickUpWidget));
144
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (newCallWidget), 0);
146
// If addressbook support has been enabled and all addressbooks are loaded, display the icon
147
if (addressbook_is_enabled() && addressbook_is_ready())
149
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (contactButton),
151
// Make the icon clickable only if at least one address book is active
152
if (addressbook_is_active())
154
gtk_widget_set_sensitive(GTK_WIDGET(contactButton), TRUE);
155
gtk_widget_set_tooltip_text(GTK_WIDGET (contactButton),
160
// g_signal_handler_block (GTK_OBJECT (recordWidget), recordButtonConnId);
161
// gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (recordWidget), FALSE);
162
// g_signal_handler_unblock ( GTK_OBJECT (recordWidget), recordButtonConnId);
164
callable_obj_t * selectedCall = calltab_get_selected_call(active_calltree);
165
conference_obj_t * selectedConf = calltab_get_selected_conf(active_calltree);
169
// update icon in systray
170
show_status_hangup_icon();
172
gtk_action_set_sensitive(GTK_ACTION (copyAction), TRUE);
174
switch (selectedCall->_state)
176
case CALL_STATE_INCOMING:
177
// Make the button toolbar clickable
178
gtk_action_set_sensitive(GTK_ACTION (pickUpAction), TRUE);
179
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
180
// Replace the dial button with the hangup button
181
g_object_ref(newCallWidget);
182
gtk_container_remove(GTK_CONTAINER (toolbar), GTK_WIDGET(newCallWidget));
183
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (pickUpWidget),
185
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
188
case CALL_STATE_HOLD:
189
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
190
gtk_widget_set_sensitive(GTK_WIDGET (holdMenu), TRUE);
191
gtk_widget_set_sensitive(GTK_WIDGET (offHoldToolbar), TRUE);
192
gtk_widget_set_sensitive(GTK_WIDGET (newCallWidget), TRUE);
193
// Replace the hold button with the off-hold button
194
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
196
gtk_toolbar_insert(GTK_TOOLBAR(toolbar),
197
GTK_TOOL_ITEM (offHoldToolbar), 2);
199
case CALL_STATE_RINGING:
200
gtk_action_set_sensitive(GTK_ACTION (pickUpAction), TRUE);
201
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
202
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
205
case CALL_STATE_DIALING:
206
gtk_action_set_sensitive(GTK_ACTION(pickUpAction), TRUE);
207
if (active_calltree == current_calls)
208
gtk_action_set_sensitive(GTK_ACTION(hangUpAction), TRUE);
209
//gtk_action_set_sensitive( GTK_ACTION(newCallMenu),TRUE);
210
g_object_ref(newCallWidget);
211
gtk_container_remove(GTK_CONTAINER (toolbar),
212
GTK_WIDGET (newCallWidget));
213
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (pickUpWidget),
215
if (active_calltree == current_calls)
216
gtk_toolbar_insert(GTK_TOOLBAR (toolbar),
217
GTK_TOOL_ITEM (hangUpWidget), 1);
219
case CALL_STATE_CURRENT:
220
case CALL_STATE_RECORD:
221
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
222
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
224
gtk_widget_set_sensitive(GTK_WIDGET (holdMenu), TRUE);
225
gtk_widget_set_sensitive(GTK_WIDGET (holdToolbar), TRUE);
226
gtk_widget_set_sensitive(GTK_WIDGET (transferToolbar), TRUE);
227
gtk_action_set_sensitive(GTK_ACTION (recordAction), TRUE);
228
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar),
230
gtk_toolbar_insert(GTK_TOOLBAR (toolbar),
231
GTK_TOOL_ITEM (transferToolbar), 3);
232
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (recordWidget),
234
gtk_signal_handler_block (GTK_OBJECT (transferToolbar), transfertButtonConnId);
235
gtk_toggle_tool_button_set_active(
236
GTK_TOGGLE_TOOL_BUTTON (transferToolbar), FALSE);
237
gtk_signal_handler_unblock (transferToolbar, transfertButtonConnId);
240
case CALL_STATE_BUSY:
241
case CALL_STATE_FAILURE:
242
gtk_action_set_sensitive(GTK_ACTION(hangUpAction), TRUE);
243
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
246
case CALL_STATE_TRANSFERT:
247
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
249
gtk_toolbar_insert(GTK_TOOLBAR (toolbar),
250
GTK_TOOL_ITEM (transferToolbar), 2);
251
gtk_signal_handler_block (GTK_OBJECT (transferToolbar), transfertButtonConnId);
252
gtk_toggle_tool_button_set_active(
253
GTK_TOGGLE_TOOL_BUTTON (transferToolbar), TRUE);
254
gtk_signal_handler_unblock (transferToolbar, transfertButtonConnId);
255
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
256
gtk_widget_set_sensitive(GTK_WIDGET (holdMenu), TRUE);
257
gtk_widget_set_sensitive(GTK_WIDGET (holdToolbar), TRUE);
258
gtk_widget_set_sensitive(GTK_WIDGET (transferToolbar), TRUE);
261
WARN("Should not happen in update_actions()!")
266
else if (selectedConf)
269
// update icon in systray
270
show_status_hangup_icon();
272
switch (selectedConf->_state)
275
case CONFERENCE_STATE_ACTIVE_ATACHED:
276
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
277
gtk_widget_set_sensitive(GTK_WIDGET (holdToolbar), TRUE);
278
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
280
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar),
284
case CONFERENCE_STATE_ACTIVE_DETACHED:
285
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
286
gtk_widget_set_sensitive(GTK_WIDGET (holdToolbar), TRUE);
287
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
289
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar),
293
case CONFERENCE_STATE_RECORD:
294
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
295
gtk_widget_set_sensitive(GTK_WIDGET (holdToolbar), TRUE);
296
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
298
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar),
302
case CONFERENCE_STATE_HOLD:
303
gtk_action_set_sensitive(GTK_ACTION (hangUpAction), TRUE);
304
gtk_widget_set_sensitive(GTK_WIDGET (offHoldToolbar), TRUE);
305
gtk_toolbar_insert(GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
307
gtk_toolbar_insert(GTK_TOOLBAR (toolbar),
308
GTK_TOOL_ITEM (offHoldToolbar), 2);
312
WARN("Should not happen in update_action()!")
322
// update icon in systray
323
hide_status_hangup_icon();
325
if (account_list_get_size() > 0 && current_account_has_mailbox())
327
gtk_toolbar_insert(GTK_TOOLBAR (toolbar),
328
GTK_TOOL_ITEM (voicemailToolbar), -2);
329
update_voicemail_status();
95
DEBUG ("UIManager: Update action");
97
gtk_action_set_sensitive (GTK_ACTION (newCallAction), TRUE);
98
gtk_action_set_sensitive (GTK_ACTION (pickUpAction), FALSE);
99
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), FALSE);
100
gtk_action_set_sensitive (GTK_ACTION (imAction), FALSE);
102
g_object_ref (hangUpWidget);
103
g_object_ref (recordWidget);
104
g_object_ref (holdToolbar);
105
g_object_ref (offHoldToolbar);
106
g_object_ref (contactButton);
107
g_object_ref (historyButton);
108
g_object_ref (transferToolbar);
109
g_object_ref (voicemailToolbar);
110
g_object_ref (imToolbar);
112
if (is_inserted (GTK_WIDGET (hangUpWidget), GTK_WIDGET (toolbar))) {
113
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (hangUpWidget));
116
if (is_inserted (GTK_WIDGET (recordWidget), GTK_WIDGET (toolbar))) {
117
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (recordWidget));
120
if (is_inserted (GTK_WIDGET (transferToolbar), GTK_WIDGET (toolbar))) {
121
gtk_container_remove (GTK_CONTAINER (toolbar),
122
GTK_WIDGET (transferToolbar));
125
if (is_inserted (GTK_WIDGET (historyButton), GTK_WIDGET (toolbar))) {
126
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (historyButton));
129
if (is_inserted (GTK_WIDGET (contactButton), GTK_WIDGET (toolbar))) {
130
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (contactButton));
133
if (is_inserted (GTK_WIDGET (voicemailToolbar), GTK_WIDGET (toolbar))) {
134
gtk_container_remove (GTK_CONTAINER (toolbar),
135
GTK_WIDGET (voicemailToolbar));
138
if (is_inserted (GTK_WIDGET (imToolbar), GTK_WIDGET (toolbar))) {
139
gtk_container_remove (GTK_CONTAINER (toolbar),
140
GTK_WIDGET (imToolbar));
143
gtk_widget_set_sensitive (GTK_WIDGET (holdMenu), FALSE);
144
gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), FALSE);
145
gtk_widget_set_sensitive (GTK_WIDGET (offHoldToolbar), FALSE);
146
gtk_action_set_sensitive (GTK_ACTION (recordAction), FALSE);
147
gtk_widget_set_sensitive (GTK_WIDGET (recordWidget), FALSE);
148
gtk_action_set_sensitive (GTK_ACTION (copyAction), FALSE);
149
gtk_widget_set_sensitive (GTK_WIDGET (contactButton), FALSE);
150
gtk_widget_set_sensitive (GTK_WIDGET (historyButton), FALSE);
151
gtk_widget_set_tooltip_text (GTK_WIDGET (contactButton),
152
_ ("No address book selected"));
154
if (is_inserted (GTK_WIDGET (holdToolbar), GTK_WIDGET (toolbar)))
155
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (holdToolbar));
157
if (is_inserted (GTK_WIDGET (offHoldToolbar), GTK_WIDGET (toolbar)))
158
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (offHoldToolbar));
160
if (is_inserted (GTK_WIDGET (newCallWidget), GTK_WIDGET (toolbar)))
161
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (newCallWidget));
163
if (is_inserted (GTK_WIDGET (pickUpWidget), GTK_WIDGET (toolbar)))
164
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (pickUpWidget));
166
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (newCallWidget), 0);
169
if (eel_gconf_get_integer (HISTORY_ENABLED)) {
170
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (historyButton), -1);
171
gtk_widget_set_sensitive (GTK_WIDGET (historyButton), TRUE);
174
// If addressbook support has been enabled and all addressbooks are loaded, display the icon
175
if (addressbook_is_enabled() && addressbook_is_ready()) {
176
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (contactButton),
179
// Make the icon clickable only if at least one address book is active
180
if (addressbook_is_active()) {
181
gtk_widget_set_sensitive (GTK_WIDGET (contactButton), TRUE);
182
gtk_widget_set_tooltip_text (GTK_WIDGET (contactButton),
187
// g_signal_handler_block (GTK_OBJECT (recordWidget), recordButtonConnId);
188
// gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (recordWidget), FALSE);
189
// g_signal_handler_unblock (GTK_OBJECT (recordWidget), recordButtonConnId);
191
callable_obj_t * selectedCall = calltab_get_selected_call (active_calltree);
192
conference_obj_t * selectedConf = calltab_get_selected_conf (active_calltree);
194
gboolean instant_messaging_enabled = TRUE;
196
if (eel_gconf_key_exists (INSTANT_MESSAGING_ENABLED))
197
instant_messaging_enabled = eel_gconf_get_integer (INSTANT_MESSAGING_ENABLED);
200
// update icon in systray
201
show_status_hangup_icon();
203
gtk_action_set_sensitive (GTK_ACTION (copyAction), TRUE);
205
switch (selectedCall->_state) {
206
case CALL_STATE_INCOMING:
207
// Make the button toolbar clickable
208
gtk_action_set_sensitive (GTK_ACTION (pickUpAction), TRUE);
209
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
210
// Replace the dial button with the hangup button
211
g_object_ref (newCallWidget);
212
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (newCallWidget));
213
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (pickUpWidget),
215
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
218
case CALL_STATE_HOLD:
219
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
220
gtk_widget_set_sensitive (GTK_WIDGET (holdMenu), TRUE);
221
gtk_widget_set_sensitive (GTK_WIDGET (offHoldToolbar), TRUE);
222
gtk_widget_set_sensitive (GTK_WIDGET (newCallWidget), TRUE);
224
// Replace the hold button with the off-hold button
225
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
226
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (offHoldToolbar), 2);
228
if (instant_messaging_enabled) {
229
gtk_action_set_sensitive (GTK_ACTION (imAction), TRUE);
230
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (imToolbar), 3);
234
case CALL_STATE_RINGING:
235
gtk_action_set_sensitive (GTK_ACTION (pickUpAction), TRUE);
236
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
237
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget),
240
case CALL_STATE_DIALING:
241
gtk_action_set_sensitive (GTK_ACTION (pickUpAction), TRUE);
243
if (active_calltree == current_calls)
244
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
246
//gtk_action_set_sensitive( GTK_ACTION(newCallMenu),TRUE);
247
g_object_ref (newCallWidget);
248
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (newCallWidget));
249
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (pickUpWidget), 0);
251
if (active_calltree == current_calls)
252
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
255
case CALL_STATE_CURRENT:
256
DEBUG ("UIManager: Call State Current");
257
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
258
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
259
gtk_widget_set_sensitive (GTK_WIDGET (holdMenu), TRUE);
260
gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE);
261
gtk_widget_set_sensitive (GTK_WIDGET (transferToolbar), TRUE);
262
gtk_action_set_sensitive (GTK_ACTION (recordAction), TRUE);
263
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2);
264
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (transferToolbar), 3);
265
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (recordWidget), 4);
266
gtk_signal_handler_block (GTK_OBJECT (transferToolbar), transfertButtonConnId);
267
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (transferToolbar), FALSE);
268
gtk_signal_handler_unblock (transferToolbar, transfertButtonConnId);
269
g_signal_handler_block (GTK_OBJECT (recordWidget), recordButtonConnId);
270
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (recordWidget), FALSE);
271
g_signal_handler_unblock (GTK_OBJECT (recordWidget), recordButtonConnId);
273
if (instant_messaging_enabled) {
274
gtk_action_set_sensitive (GTK_ACTION (imAction), TRUE);
275
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (imToolbar), 5);
280
case CALL_STATE_RECORD:
281
DEBUG ("UIManager: Call State Record");
282
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
283
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
284
gtk_widget_set_sensitive (GTK_WIDGET (holdMenu), TRUE);
285
gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE);
286
gtk_widget_set_sensitive (GTK_WIDGET (transferToolbar), TRUE);
287
gtk_action_set_sensitive (GTK_ACTION (recordAction), TRUE);
288
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2);
289
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (transferToolbar), 3);
290
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (recordWidget), 4);
291
gtk_signal_handler_block (GTK_OBJECT (transferToolbar), transfertButtonConnId);
292
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (transferToolbar), FALSE);
293
gtk_signal_handler_unblock (transferToolbar, transfertButtonConnId);
294
g_signal_handler_block (GTK_OBJECT (recordWidget), recordButtonConnId);
295
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (recordWidget), TRUE);
296
g_signal_handler_unblock (GTK_OBJECT (recordWidget), recordButtonConnId);
298
if (instant_messaging_enabled) {
299
gtk_action_set_sensitive (GTK_ACTION (imAction), TRUE);
300
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (imToolbar), 5);
304
case CALL_STATE_BUSY:
305
case CALL_STATE_FAILURE:
306
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
307
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
309
case CALL_STATE_TRANSFERT:
310
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
311
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (transferToolbar), 2);
312
gtk_signal_handler_block (GTK_OBJECT (transferToolbar), transfertButtonConnId);
313
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (transferToolbar), TRUE);
314
gtk_signal_handler_unblock (transferToolbar, transfertButtonConnId);
315
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
316
gtk_widget_set_sensitive (GTK_WIDGET (holdMenu), TRUE);
317
gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE);
318
gtk_widget_set_sensitive (GTK_WIDGET (transferToolbar), TRUE);
321
WARN ("Should not happen in update_actions()!");
324
} else if (selectedConf) {
326
// update icon in systray
327
show_status_hangup_icon();
329
switch (selectedConf->_state) {
331
case CONFERENCE_STATE_ACTIVE_ATACHED:
332
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
333
gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE);
334
gtk_action_set_sensitive (GTK_ACTION (recordAction), TRUE);
335
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
336
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2);
337
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (recordWidget), 3);
339
if (instant_messaging_enabled) {
340
gtk_action_set_sensitive (GTK_ACTION (imAction), TRUE);
341
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (imToolbar), 4);
346
case CONFERENCE_STATE_ACTIVE_DETACHED:
347
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
348
gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE);
349
gtk_action_set_sensitive (GTK_ACTION (recordAction), TRUE);
350
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
351
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2);
352
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (recordWidget), 3);
354
if (instant_messaging_enabled) {
355
gtk_action_set_sensitive (GTK_ACTION (imAction), TRUE);
356
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (imToolbar), 4);
361
case CONFERENCE_STATE_RECORD:
362
DEBUG ("UIManager: Conference state record");
363
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
364
gtk_widget_set_sensitive (GTK_WIDGET (holdToolbar), TRUE);
365
gtk_action_set_sensitive (GTK_ACTION (recordAction), TRUE);
366
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
367
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 2);
368
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (recordWidget), 3);
370
if (instant_messaging_enabled) {
371
gtk_action_set_sensitive (GTK_ACTION (imAction), TRUE);
372
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (imToolbar), 4);
377
case CONFERENCE_STATE_HOLD:
378
gtk_action_set_sensitive (GTK_ACTION (hangUpAction), TRUE);
379
gtk_widget_set_sensitive (GTK_WIDGET (offHoldToolbar), TRUE);
380
gtk_action_set_sensitive (GTK_ACTION (recordAction), TRUE);
381
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (hangUpWidget), 1);
382
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (offHoldToolbar), 2);
383
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (recordWidget), 3);
385
if (instant_messaging_enabled) {
386
gtk_action_set_sensitive (GTK_ACTION (imAction), TRUE);
387
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (imToolbar), 4);
393
WARN ("Should not happen in update_action()!");
401
// update icon in systray
402
hide_status_hangup_icon();
404
if (account_list_get_size() > 0 && current_account_has_mailbox()) {
405
gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
406
GTK_TOOL_ITEM (voicemailToolbar), -2);
407
update_voicemail_status();
335
update_voicemail_status(void)
337
gchar *messages = "";
338
messages = g_markup_printf_escaped(_("Voicemail (%i)"),
339
current_account_get_message_number());
340
(current_account_has_new_message()) ? gtk_tool_button_set_icon_name(
341
GTK_TOOL_BUTTON (voicemailToolbar), "mail-message-new")
342
: gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON (voicemailToolbar),
344
gtk_tool_button_set_label(GTK_TOOL_BUTTON (voicemailToolbar), messages);
349
volume_bar_cb(GtkToggleAction *togglemenuitem, gpointer user_data)
351
gboolean toggled = gtk_toggle_action_get_active(togglemenuitem);
352
if (toggled == SHOW_VOLUME)
354
main_window_volume_controls(toggled);
355
if (toggled || SHOW_VOLUME)
356
dbus_set_volume_controls(toggled);
360
dialpad_bar_cb(GtkToggleAction *togglemenuitem, gpointer user_data)
362
gboolean toggled = gtk_toggle_action_get_active(togglemenuitem);
363
if (toggled == SHOW_DIALPAD)
365
main_window_dialpad(toggled);
366
if (toggled || SHOW_DIALPAD)
367
dbus_set_dialpad(toggled);
371
help_contents_cb(GtkAction *action)
373
GError *error = NULL;
375
gnome_help_display("sflphone.xml", NULL, &error);
377
g_warning("%s", error->message);
383
help_about(void * foo UNUSED)
388
"Pierre-Luc Bacon <pierre-luc.bacon@savoirfairelinux.com>",
389
"Jean-Philippe Barrette-LaPierre",
390
"Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>",
391
"Julien Bonjean <julien.bonjean@savoirfairelinux.com>",
392
"Alexandre Bourget <alexandre.bourget@savoirfairelinux.com>",
394
"Yun Liu <yun.liu@savoirfairelinux.com>",
395
"Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>",
396
"Yan Morin <yan.morin@savoirfairelinux.com>",
397
"Jérôme Oufella <jerome.oufella@savoirfairelinux.com>",
398
"Julien Plissonneau Duquene <julien.plissonneau.duquene@savoirfairelinux.com>",
399
"Alexandre Savard <alexandre.savard@savoirfairelinux.com>", NULL };
401
{ "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>",
402
"Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", NULL };
404
gtk_show_about_dialog(GTK_WINDOW(get_main_window()), "artists", artists,
405
"authors", authors, "comments",
406
_("SFLphone is a VoIP client compatible with SIP and IAX2 protocols."),
407
"copyright", "Copyright © 2004-2009 Savoir-faire Linux Inc.", "name",
408
PACKAGE, "title", _("About SFLphone"), "version", VERSION, "website",
409
"http://www.sflphone.org", NULL);
413
update_voicemail_status (void)
415
gchar *messages = "";
416
messages = g_markup_printf_escaped (_ ("Voicemail (%i)"),
417
current_account_get_message_number());
418
(current_account_has_new_message()) ? gtk_tool_button_set_icon_name (
419
GTK_TOOL_BUTTON (voicemailToolbar), "mail-message-new")
420
: gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (voicemailToolbar),
422
gtk_tool_button_set_label (GTK_TOOL_BUTTON (voicemailToolbar), messages);
427
volume_bar_cb (GtkToggleAction *togglemenuitem, gpointer user_data UNUSED)
429
gboolean toggled = gtk_toggle_action_get_active (togglemenuitem);
431
if (toggled == SHOW_VOLUME)
434
main_window_volume_controls (toggled);
436
if (toggled || SHOW_VOLUME)
437
eel_gconf_set_integer (SHOW_VOLUME_CONTROLS, toggled);
441
dialpad_bar_cb (GtkToggleAction *togglemenuitem, gpointer user_data UNUSED)
443
gboolean toggled = gtk_toggle_action_get_active (togglemenuitem);
444
gboolean conf_dialpad = eel_gconf_get_boolean (CONF_SHOW_DIALPAD);
446
if (toggled == conf_dialpad)
449
main_window_dialpad (toggled);
451
if (toggled || conf_dialpad)
452
eel_gconf_set_boolean (CONF_SHOW_DIALPAD, toggled); //dbus_set_dialpad (toggled);
457
help_contents_cb (GtkAction *action UNUSED)
459
GError *error = NULL;
461
gnome_help_display ("sflphone.xml", NULL, &error);
464
g_warning ("%s", error->message);
465
g_error_free (error);
470
help_about (void * foo UNUSED)
474
"Pierre-Luc Bacon <pierre-luc.bacon@savoirfairelinux.com>",
475
"Jean-Philippe Barrette-LaPierre",
476
"Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>",
477
"Julien Bonjean <julien.bonjean@savoirfairelinux.com>",
478
"Alexandre Bourget <alexandre.bourget@savoirfairelinux.com>",
480
"Yun Liu <yun.liu@savoirfairelinux.com>",
481
"Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>",
482
"Yan Morin <yan.morin@savoirfairelinux.com>",
483
"Jérôme Oufella <jerome.oufella@savoirfairelinux.com>",
484
"Julien Plissonneau Duquene <julien.plissonneau.duquene@savoirfairelinux.com>",
485
"Alexandre Savard <alexandre.savard@savoirfairelinux.com>", NULL
487
gchar *artists[] = { "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>",
488
"Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", NULL
491
gtk_show_about_dialog (GTK_WINDOW (get_main_window()), "artists", artists,
492
"authors", authors, "comments",
493
_ ("SFLphone is a VoIP client compatible with SIP and IAX2 protocols."),
494
"copyright", "Copyright © 2004-2009 Savoir-faire Linux Inc.", "name",
495
PACKAGE, "title", _ ("About SFLphone"), "version", VERSION, "website",
496
"http://www.sflphone.org", NULL);
413
500
/* ----------------------------------------------------------------- */
416
call_new_call(void * foo UNUSED)
422
call_quit(void * foo UNUSED)
428
call_minimize(void * foo UNUSED)
431
if (g_strcasecmp (dbus_is_status_icon_enabled (), "true") == 0) {
432
gtk_widget_hide(GTK_WIDGET( get_main_window() ));
441
switch_account(GtkWidget* item, gpointer data UNUSED)
443
account_t* acc = g_object_get_data(G_OBJECT(item), "account");
444
DEBUG("%s" , acc->accountID);
445
account_list_set_current(acc);
446
status_bar_display_account();
450
call_hold(void* foo UNUSED)
452
callable_obj_t * selectedCall = calltab_get_selected_call(current_calls);
453
conference_obj_t * selectedConf = calltab_get_selected_conf();
457
if (selectedCall->_state == CALL_STATE_HOLD)
466
else if (selectedConf)
469
switch (selectedConf->_state)
472
case CONFERENCE_STATE_HOLD:
474
selectedConf->_state = CONFERENCE_STATE_ACTIVE_ATACHED;
475
sflphone_conference_off_hold(selectedConf);
479
case CONFERENCE_STATE_ACTIVE_ATACHED:
480
case CONFERENCE_STATE_ACTIVE_DETACHED:
482
selectedConf->_state = CONFERENCE_STATE_HOLD;
483
sflphone_conference_on_hold(selectedConf);
494
conference_hold(void* foo UNUSED)
496
conference_obj_t * selectedConf = calltab_get_selected_conf();
498
switch (selectedConf->_state)
500
case CONFERENCE_STATE_HOLD:
502
selectedConf->_state = CONFERENCE_STATE_ACTIVE_ATACHED;
503
sflphone_conference_off_hold(selectedConf);
507
case CONFERENCE_STATE_ACTIVE_ATACHED:
508
case CONFERENCE_STATE_ACTIVE_DETACHED:
510
selectedConf->_state = CONFERENCE_STATE_HOLD;
511
sflphone_conference_on_hold(selectedConf);
520
call_pick_up(void * foo UNUSED)
522
DEBUG("------ call_button -----");
523
callable_obj_t * selectedCall;
524
callable_obj_t* new_call;
526
selectedCall = calltab_get_selected_call(active_calltree);
528
if (calllist_get_size(current_calls) > 0)
531
else if (calllist_get_size(active_calltree) > 0)
535
create_new_call(CALL, CALL_STATE_DIALING, "", "", "",
536
selectedCall->_peer_number, &new_call);
538
calllist_add(current_calls, new_call);
539
calltree_add_call(current_calls, new_call, NULL);
540
sflphone_place_call(new_call);
541
calltree_display(current_calls);
546
calltree_display(current_calls);
552
calltree_display(current_calls);
560
* [#3020] Restore the record toggle button
561
* We set it to FALSE, as when we hang up a call, the recording is stopped.
563
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (recordWidget), FALSE);
570
conference_hang_up(void)
572
sflphone_conference_hang_up();
582
call_configuration_assistant(void * foo UNUSED)
503
call_new_call (void * foo UNUSED)
505
DEBUG ("UIManager: New call button pressed");
511
call_quit (void * foo UNUSED)
517
call_minimize (void * foo UNUSED)
520
if (eel_gconf_get_integer (SHOW_STATUSICON)) {
521
gtk_widget_hide (GTK_WIDGET (get_main_window()));
522
set_minimized (TRUE);
529
switch_account (GtkWidget* item, gpointer data UNUSED)
531
account_t* acc = g_object_get_data (G_OBJECT (item), "account");
532
DEBUG ("%s" , acc->accountID);
533
account_list_set_current (acc);
534
status_bar_display_account();
538
call_hold (void* foo UNUSED)
540
callable_obj_t * selectedCall = calltab_get_selected_call (current_calls);
541
conference_obj_t * selectedConf = calltab_get_selected_conf();
543
DEBUG ("UIManager: Hold button pressed (call)");
546
if (selectedCall->_state == CALL_STATE_HOLD) {
551
} else if (selectedConf) {
553
switch (selectedConf->_state) {
555
case CONFERENCE_STATE_HOLD: {
556
selectedConf->_state = CONFERENCE_STATE_ACTIVE_ATACHED;
557
sflphone_conference_off_hold (selectedConf);
561
case CONFERENCE_STATE_ACTIVE_ATACHED:
562
case CONFERENCE_STATE_ACTIVE_DETACHED: {
563
selectedConf->_state = CONFERENCE_STATE_HOLD;
564
sflphone_conference_on_hold (selectedConf);
575
call_im (void* foo UNUSED)
577
callable_obj_t *selectedCall = calltab_get_selected_call (current_calls);
578
conference_obj_t *selectedConf = calltab_get_selected_conf();
580
if (calltab_get_selected_type (current_calls) == A_CALL) {
583
im_widget_display ( (IMWidget **) (&selectedCall->_im_widget), NULL, selectedCall->_callID, NULL);
585
WARN ("Sorry. Instant messaging is not allowed outside a call\n");
589
im_widget_display ( (IMWidget **) (&selectedConf->_im_widget), NULL, selectedConf->_confID, NULL);
591
WARN ("Sorry. Instant messaging is not allowed outside a call\n");
597
conference_hold (void* foo UNUSED)
599
conference_obj_t * selectedConf = calltab_get_selected_conf();
601
DEBUG ("UIManager: Hold button pressed (conference)");
603
switch (selectedConf->_state) {
604
case CONFERENCE_STATE_HOLD: {
605
selectedConf->_state = CONFERENCE_STATE_ACTIVE_ATACHED;
606
sflphone_conference_off_hold (selectedConf);
610
case CONFERENCE_STATE_ACTIVE_ATACHED:
611
case CONFERENCE_STATE_ACTIVE_DETACHED: {
612
selectedConf->_state = CONFERENCE_STATE_HOLD;
613
sflphone_conference_on_hold (selectedConf);
622
call_pick_up (void * foo UNUSED)
624
DEBUG ("------ call_button -----");
625
callable_obj_t * selectedCall;
626
callable_obj_t* new_call;
628
selectedCall = calltab_get_selected_call (active_calltree);
630
if (calllist_get_size (current_calls) > 0)
633
else if (calllist_get_size (active_calltree) > 0) {
635
create_new_call (CALL, CALL_STATE_DIALING, "", "", "",
636
selectedCall->_peer_number, &new_call);
638
calllist_add (current_calls, new_call);
639
calltree_add_call (current_calls, new_call, NULL);
640
sflphone_place_call (new_call);
641
calltree_display (current_calls);
644
calltree_display (current_calls);
648
calltree_display (current_calls);
656
DEBUG ("UIManager: Hang up button pressed (call)");
658
* [#3020] Restore the record toggle button
659
* We set it to FALSE, as when we hang up a call, the recording is stopped.
661
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (recordWidget), FALSE);
668
conference_hang_up (void)
670
DEBUG ("UIManager: Hang up button pressed (conference)");
672
sflphone_conference_hang_up();
678
DEBUG ("UIManager: Record button pressed");
684
call_configuration_assistant (void * foo UNUSED)
584
686
#if GTK_CHECK_VERSION(2,10,0)
590
remove_from_history(void * foo UNUSED)
592
callable_obj_t* c = calltab_get_selected_call(history);
595
DEBUG("Remove the call from the history");
596
calllist_remove_from_history(c);
601
call_back(void * foo UNUSED)
603
callable_obj_t *selected_call, *new_call;
605
selected_call = calltab_get_selected_call(active_calltree);
609
create_new_call(CALL, CALL_STATE_DIALING, "", "",
610
selected_call->_peer_name, selected_call->_peer_number, &new_call);
612
calllist_add(current_calls, new_call);
613
calltree_add_call(current_calls, new_call, NULL);
614
sflphone_place_call(new_call);
615
calltree_display(current_calls);
620
edit_preferences(void * foo UNUSED)
622
show_preferences_dialog();
626
edit_accounts(void * foo UNUSED)
628
show_account_list_config_dialog();
692
remove_from_history (void * foo UNUSED)
694
callable_obj_t* c = calltab_get_selected_call (history);
697
DEBUG ("UIManager: Remove the call from the history");
698
calllist_remove_from_history (c);
703
call_back (void * foo UNUSED)
705
callable_obj_t *selected_call, *new_call;
707
selected_call = calltab_get_selected_call (active_calltree);
710
create_new_call (CALL, CALL_STATE_DIALING, "", "",
711
selected_call->_peer_name, selected_call->_peer_number, &new_call);
713
calllist_add (current_calls, new_call);
714
calltree_add_call (current_calls, new_call, NULL);
715
sflphone_place_call (new_call);
716
calltree_display (current_calls);
721
edit_preferences (void * foo UNUSED)
723
show_preferences_dialog();
727
edit_accounts (void * foo UNUSED)
729
show_account_list_config_dialog();
631
732
// The menu Edit/Copy should copy the current selected call's number
633
edit_copy(void * foo UNUSED)
734
edit_copy (void * foo UNUSED)
635
GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
636
callable_obj_t * selectedCall = calltab_get_selected_call(current_calls);
736
GtkClipboard* clip = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
737
callable_obj_t * selectedCall = calltab_get_selected_call (current_calls);
641
switch (selectedCall->_state)
643
case CALL_STATE_TRANSFERT:
644
case CALL_STATE_DIALING:
645
case CALL_STATE_RINGING:
646
no = selectedCall->_peer_number;
648
case CALL_STATE_CURRENT:
649
case CALL_STATE_HOLD:
650
case CALL_STATE_BUSY:
651
case CALL_STATE_FAILURE:
652
case CALL_STATE_INCOMING:
654
no = selectedCall->_peer_number;
741
switch (selectedCall->_state) {
742
case CALL_STATE_TRANSFERT:
743
case CALL_STATE_DIALING:
744
case CALL_STATE_RINGING:
745
no = selectedCall->_peer_number;
747
case CALL_STATE_CURRENT:
748
case CALL_STATE_HOLD:
749
case CALL_STATE_BUSY:
750
case CALL_STATE_FAILURE:
751
case CALL_STATE_INCOMING:
753
no = selectedCall->_peer_number;
657
DEBUG("Clipboard number: %s\n", no);
658
gtk_clipboard_set_text(clip, no, strlen(no));
757
DEBUG ("UIManager: Clipboard number: %s\n", no);
758
gtk_clipboard_set_text (clip, no, strlen (no));
663
763
// The menu Edit/Paste should paste the clipboard into the current selected call
665
edit_paste(void * foo UNUSED)
765
edit_paste (void * foo UNUSED)
668
GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
669
callable_obj_t * selectedCall = calltab_get_selected_call(current_calls);
670
gchar * no = gtk_clipboard_wait_for_text(clip);
672
if (no && selectedCall)
674
switch (selectedCall->_state)
676
case CALL_STATE_TRANSFERT:
677
case CALL_STATE_DIALING:
678
// Add the text to the number
681
before = selectedCall->_peer_number;
682
DEBUG("TO: %s\n", before);
683
selectedCall->_peer_number = g_strconcat(before, no, NULL);
685
if (selectedCall->_state == CALL_STATE_DIALING)
687
selectedCall->_peer_info = g_strconcat("\"\" <",
688
selectedCall->_peer_number, ">", NULL);
690
calltree_update_call(current_calls, selectedCall, NULL);
693
case CALL_STATE_RINGING:
694
case CALL_STATE_INCOMING:
695
case CALL_STATE_BUSY:
696
case CALL_STATE_FAILURE:
697
case CALL_STATE_HOLD:
698
{ // Create a new call to hold the new text
699
selectedCall = sflphone_new_call();
701
gchar * before = selectedCall->_peer_number;
702
selectedCall->_peer_number = g_strconcat(selectedCall->_peer_number,
704
DEBUG("TO: %s", selectedCall->_peer_number);
706
selectedCall->_peer_info = g_strconcat("\"\" <",
707
selectedCall->_peer_number, ">", NULL);
709
calltree_update_call(current_calls, selectedCall, NULL);
712
case CALL_STATE_CURRENT:
716
for (i = 0; i < strlen(no); i++)
718
gchar * oneNo = g_strndup(&no[i], 1);
719
DEBUG("<%s>", oneNo);
720
dbus_play_dtmf(oneNo);
722
gchar * temp = g_strconcat(selectedCall->_peer_number, oneNo,
724
selectedCall->_peer_info = get_peer_info(temp,
725
selectedCall->_peer_name);
727
calltree_update_call(current_calls, selectedCall, NULL);
735
else // There is no current call, create one
737
selectedCall = sflphone_new_call();
739
gchar * before = selectedCall->_peer_number;
740
selectedCall->_peer_number = g_strconcat(selectedCall->_peer_number, no,
743
DEBUG("TO: %s", selectedCall->_peer_number);
745
g_free(selectedCall->_peer_info);
746
selectedCall->_peer_info = g_strconcat("\"\" <",
747
selectedCall->_peer_number, ">", NULL);
748
calltree_update_call(current_calls, selectedCall, NULL);
768
GtkClipboard* clip = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
769
callable_obj_t * selectedCall = calltab_get_selected_call (current_calls);
770
gchar * no = gtk_clipboard_wait_for_text (clip);
772
if (no && selectedCall) {
773
switch (selectedCall->_state) {
774
case CALL_STATE_TRANSFERT:
775
case CALL_STATE_DIALING:
776
// Add the text to the number
779
before = selectedCall->_peer_number;
780
DEBUG ("TO: %s\n", before);
781
selectedCall->_peer_number = g_strconcat (before, no, NULL);
783
if (selectedCall->_state == CALL_STATE_DIALING) {
784
selectedCall->_peer_info = g_strconcat ("\"\" <",
785
selectedCall->_peer_number, ">", NULL);
788
calltree_update_call (current_calls, selectedCall, NULL);
791
case CALL_STATE_RINGING:
792
case CALL_STATE_INCOMING:
793
case CALL_STATE_BUSY:
794
case CALL_STATE_FAILURE:
795
case CALL_STATE_HOLD: { // Create a new call to hold the new text
796
selectedCall = sflphone_new_call();
798
selectedCall->_peer_number = g_strconcat (selectedCall->_peer_number,
800
DEBUG ("TO: %s", selectedCall->_peer_number);
802
selectedCall->_peer_info = g_strconcat ("\"\" <",
803
selectedCall->_peer_number, ">", NULL);
805
calltree_update_call (current_calls, selectedCall, NULL);
808
case CALL_STATE_CURRENT:
812
for (i = 0; i < strlen (no); i++) {
813
gchar * oneNo = g_strndup (&no[i], 1);
814
DEBUG ("<%s>", oneNo);
815
dbus_play_dtmf (oneNo);
817
gchar * temp = g_strconcat (selectedCall->_peer_number, oneNo,
819
selectedCall->_peer_info = get_peer_info (temp,
820
selectedCall->_peer_name);
822
calltree_update_call (current_calls, selectedCall, NULL);
829
} else { // There is no current call, create one
830
selectedCall = sflphone_new_call();
832
gchar * before = selectedCall->_peer_number;
833
selectedCall->_peer_number = g_strconcat (selectedCall->_peer_number, no,
836
DEBUG ("UIManager: TO: %s", selectedCall->_peer_number);
838
g_free (selectedCall->_peer_info);
839
selectedCall->_peer_info = g_strconcat ("\"\" <",
840
selectedCall->_peer_number, ">", NULL);
841
calltree_update_call (current_calls, selectedCall, NULL);
756
if (calllist_get_size(history) != 0)
758
calllist_clean_history();
849
if (calllist_get_size (history) != 0) {
850
calllist_clean_history();
766
858
call_transfer_cb()
768
gboolean active = gtk_toggle_tool_button_get_active(
769
GTK_TOGGLE_TOOL_BUTTON (transferToolbar));
770
active ? sflphone_set_transfert() : sflphone_unset_transfert();
774
call_mailbox_cb(void)
777
callable_obj_t *mailbox_call;
778
gchar *to, *from, *account_id;
780
current = account_list_get_current();
781
if (current == NULL) // Should not happens
784
to = g_strdup(g_hash_table_lookup(current->properties, ACCOUNT_MAILBOX));
785
account_id = g_strdup(current->accountID);
787
create_new_call(CALL, CALL_STATE_DIALING, "", account_id, _("Voicemail"), to,
789
DEBUG("TO : %s" , mailbox_call->_peer_number);
790
calllist_add(current_calls, mailbox_call);
791
calltree_add_call(current_calls, mailbox_call, NULL);
793
sflphone_place_call(mailbox_call);
794
calltree_display(current_calls);
798
toggle_history_cb(GtkToggleAction *action, gpointer user_data)
801
toggle = gtk_toggle_action_get_active(action);
802
(toggle) ? calltree_display(history) : calltree_display(current_calls);
806
toggle_addressbook_cb(GtkToggleAction *action, gpointer user_data)
809
toggle = gtk_toggle_action_get_active(action);
810
(toggle) ? calltree_display(contacts) : calltree_display(current_calls);
813
static const GtkActionEntry menu_entries[] =
817
{ "Call", NULL, N_("Call") },
818
{ "NewCall", GTK_STOCK_DIAL, N_("_New call"), "<control>N",
819
N_("Place a new call"), G_CALLBACK (call_new_call) },
820
{ "PickUp", GTK_STOCK_PICKUP, N_("_Pick up"), NULL,
821
N_("Answer the call"), G_CALLBACK (call_pick_up) },
822
{ "HangUp", GTK_STOCK_HANGUP, N_("_Hang up"), "<control>S",
823
N_("Finish the call"), G_CALLBACK (call_hang_up) },
824
{ "OnHold", GTK_STOCK_ONHOLD, N_("O_n hold"), "<control>P",
825
N_("Place the call on hold"), G_CALLBACK (call_hold) },
826
{ "OffHold", GTK_STOCK_OFFHOLD, N_("O_ff hold"), "<control>P",
827
N_("Place the call off hold"), G_CALLBACK (call_hold) },
828
{ "AccountAssistant", NULL, N_("Configuration _Assistant"), NULL,
829
N_("Run the configuration assistant"),
830
G_CALLBACK (call_configuration_assistant) },
831
{ "Voicemail", "mail-read", N_("Voicemail"), NULL,
832
N_("Call your voicemail"), G_CALLBACK (call_mailbox_cb) },
833
{ "Close", GTK_STOCK_CLOSE, N_("_Close"), "<control>W",
834
N_("Minimize to system tray"), G_CALLBACK (call_minimize) },
835
{ "Quit", GTK_STOCK_CLOSE, N_("_Quit"), "<control>Q",
836
N_("Quit the program"), G_CALLBACK (call_quit) },
839
{ "Edit", NULL, N_("_Edit") },
840
{ "Copy", GTK_STOCK_COPY, N_("_Copy"), "<control>C",
841
N_("Copy the selection"), G_CALLBACK (edit_copy) },
842
{ "Paste", GTK_STOCK_PASTE, N_("_Paste"), "<control>V",
843
N_("Paste the clipboard"), G_CALLBACK (edit_paste) },
844
{ "ClearHistory", GTK_STOCK_CLEAR, N_("Clear _history"), NULL,
845
N_("Clear the call history"), G_CALLBACK (clear_history) },
846
{ "Accounts", NULL, N_("_Accounts"), NULL, N_("Edit your accounts"),
847
G_CALLBACK (edit_accounts) },
848
{ "Preferences", GTK_STOCK_PREFERENCES, N_("_Preferences"), NULL,
849
N_("Change your preferences"), G_CALLBACK (edit_preferences) },
852
{ "View", NULL, N_("_View") },
855
{ "Help", NULL, N_("_Help") },
856
{ "HelpContents", GTK_STOCK_HELP, N_("Contents"), "F1",
857
N_("Open the manual"), G_CALLBACK (help_contents_cb) },
858
{ "About", GTK_STOCK_ABOUT, NULL, NULL, N_("About this application"),
859
G_CALLBACK (help_about) }
863
static const GtkToggleActionEntry toggle_menu_entries[] =
866
{ "Transfer", GTK_STOCK_TRANSFER, N_("_Transfer"), "<control>T",
867
N_("Transfer the call"), NULL }, //G_CALLBACK (call_transfer_cb) },
868
{ "Record", GTK_STOCK_MEDIA_RECORD, N_("_Record"), "<control>R",
869
N_("Record the current conversation"), NULL }, // G_CALLBACK (call_record) },
870
{ "Toolbar", NULL, N_("_Show toolbar"), "<control>T",
871
N_("Show the toolbar"), NULL },
872
{ "Dialpad", NULL, N_("_Dialpad"), "<control>D",
873
N_("Show the dialpad"), G_CALLBACK (dialpad_bar_cb) },
874
{ "VolumeControls", NULL, N_("_Volume controls"), "<control>V",
875
N_("Show the volume controls"), G_CALLBACK (volume_bar_cb) },
876
{ "History", "appointment-soon", N_("_History"), NULL,
877
N_("Calls history"), G_CALLBACK (toggle_history_cb), FALSE },
878
{ "Addressbook", GTK_STOCK_ADDRESSBOOK, N_("_Address book"), NULL,
879
N_("Address book"), G_CALLBACK (toggle_addressbook_cb), FALSE }
860
gboolean active = gtk_toggle_tool_button_get_active (
861
GTK_TOGGLE_TOOL_BUTTON (transferToolbar));
862
active ? sflphone_set_transfert() : sflphone_unset_transfert();
866
call_mailbox_cb (void)
869
callable_obj_t *mailbox_call;
870
gchar *to, *account_id;
872
current = account_list_get_current();
874
if (current == NULL) // Should not happens
877
to = g_strdup (g_hash_table_lookup (current->properties, ACCOUNT_MAILBOX));
878
account_id = g_strdup (current->accountID);
880
create_new_call (CALL, CALL_STATE_DIALING, "", account_id, _ ("Voicemail"), to,
882
DEBUG ("TO : %s" , mailbox_call->_peer_number);
883
calllist_add (current_calls, mailbox_call);
884
calltree_add_call (current_calls, mailbox_call, NULL);
886
sflphone_place_call (mailbox_call);
887
calltree_display (current_calls);
891
toggle_history_cb (GtkToggleAction *action, gpointer user_data UNUSED)
894
toggle = gtk_toggle_action_get_active (action);
895
(toggle) ? calltree_display (history) : calltree_display (current_calls);
899
toggle_addressbook_cb (GtkToggleAction *action, gpointer user_data UNUSED)
902
toggle = gtk_toggle_action_get_active (action);
903
(toggle) ? calltree_display (contacts) : calltree_display (current_calls);
906
static const GtkActionEntry menu_entries[] = {
909
{ "Call", NULL, N_ ("Call") },
911
"NewCall", GTK_STOCK_DIAL, N_ ("_New call"), "<control>N",
912
N_ ("Place a new call"), G_CALLBACK (call_new_call)
915
"PickUp", GTK_STOCK_PICKUP, N_ ("_Pick up"), NULL,
916
N_ ("Answer the call"), G_CALLBACK (call_pick_up)
919
"HangUp", GTK_STOCK_HANGUP, N_ ("_Hang up"), "<control>S",
920
N_ ("Finish the call"), G_CALLBACK (call_hang_up)
923
"OnHold", GTK_STOCK_ONHOLD, N_ ("O_n hold"), "<control>P",
924
N_ ("Place the call on hold"), G_CALLBACK (call_hold)
927
"OffHold", GTK_STOCK_OFFHOLD, N_ ("O_ff hold"), "<control>P",
928
N_ ("Place the call off hold"), G_CALLBACK (call_hold)
931
"InstantMessaging", GTK_STOCK_IM, N_ ("Send _message"), "<control>M",
932
N_ ("Send message"), G_CALLBACK (call_im)
935
"AccountAssistant", NULL, N_ ("Configuration _Assistant"), NULL,
936
N_ ("Run the configuration assistant"),
937
G_CALLBACK (call_configuration_assistant)
940
"Voicemail", "mail-read", N_ ("Voicemail"), NULL,
941
N_ ("Call your voicemail"), G_CALLBACK (call_mailbox_cb)
944
"Close", GTK_STOCK_CLOSE, N_ ("_Close"), "<control>W",
945
N_ ("Minimize to system tray"), G_CALLBACK (call_minimize)
948
"Quit", GTK_STOCK_CLOSE, N_ ("_Quit"), "<control>Q",
949
N_ ("Quit the program"), G_CALLBACK (call_quit)
953
{ "Edit", NULL, N_ ("_Edit") },
955
"Copy", GTK_STOCK_COPY, N_ ("_Copy"), "<control>C",
956
N_ ("Copy the selection"), G_CALLBACK (edit_copy)
959
"Paste", GTK_STOCK_PASTE, N_ ("_Paste"), "<control>V",
960
N_ ("Paste the clipboard"), G_CALLBACK (edit_paste)
963
"ClearHistory", GTK_STOCK_CLEAR, N_ ("Clear _history"), NULL,
964
N_ ("Clear the call history"), G_CALLBACK (clear_history)
967
"Accounts", NULL, N_ ("_Accounts"), NULL, N_ ("Edit your accounts"),
968
G_CALLBACK (edit_accounts)
971
"Preferences", GTK_STOCK_PREFERENCES, N_ ("_Preferences"), NULL,
972
N_ ("Change your preferences"), G_CALLBACK (edit_preferences)
976
{ "View", NULL, N_ ("_View") },
979
{ "Help", NULL, N_ ("_Help") },
981
"HelpContents", GTK_STOCK_HELP, N_ ("Contents"), "F1",
982
N_ ("Open the manual"), G_CALLBACK (help_contents_cb)
985
"About", GTK_STOCK_ABOUT, NULL, NULL, N_ ("About this application"),
986
G_CALLBACK (help_about)
991
static const GtkToggleActionEntry toggle_menu_entries[] = {
993
{ "Transfer", GTK_STOCK_TRANSFER, N_ ("_Transfer"), "<control>T", N_ ("Transfer the call"), NULL, TRUE },
994
{ "Record", GTK_STOCK_MEDIA_RECORD, N_ ("_Record"), "<control>R", N_ ("Record the current conversation"), NULL, TRUE },
995
{ "Toolbar", NULL, N_ ("_Show toolbar"), "<control>T", N_ ("Show the toolbar"), NULL, TRUE },
996
{ "Dialpad", NULL, N_ ("_Dialpad"), "<control>D", N_ ("Show the dialpad"), G_CALLBACK (dialpad_bar_cb), TRUE },
997
{ "VolumeControls", NULL, N_ ("_Volume controls"), "<control>V", N_ ("Show the volume controls"), G_CALLBACK (volume_bar_cb), TRUE },
998
{ "History", "appointment-soon", N_ ("_History"), NULL, N_ ("Calls history"), G_CALLBACK (toggle_history_cb), FALSE },
999
{ "Addressbook", GTK_STOCK_ADDRESSBOOK, N_ ("_Address book"), NULL, N_ ("Address book"), G_CALLBACK (toggle_addressbook_cb), FALSE }
884
uimanager_new(GtkUIManager **_ui_manager)
1003
uimanager_new (GtkUIManager **_ui_manager)
887
GtkUIManager *ui_manager;
888
GtkActionGroup *action_group;
891
GError *error = NULL;
893
window = get_main_window();
894
ui_manager = gtk_ui_manager_new();
896
/* Create an accel group for window's shortcuts */
897
path = g_build_filename(SFLPHONE_UIDIR_UNINSTALLED, "./ui.xml", NULL);
898
if (g_file_test(path, G_FILE_TEST_EXISTS))
900
gtk_ui_manager_add_ui_from_file(ui_manager, path, &error);
1006
GtkUIManager *ui_manager;
1007
GtkActionGroup *action_group;
1010
GError *error = NULL;
1012
window = get_main_window();
1013
ui_manager = gtk_ui_manager_new();
1015
/* Create an accel group for window's shortcuts */
1016
path = g_build_filename (SFLPHONE_UIDIR_UNINSTALLED, "./ui.xml", NULL);
1018
if (g_file_test (path, G_FILE_TEST_EXISTS)) {
1019
gtk_ui_manager_add_ui_from_file (ui_manager, path, &error);
1021
if (error != NULL) {
1022
g_error_free (error);
911
path = g_build_filename(SFLPHONE_UIDIR, "./ui.xml", NULL);
912
if (g_file_test(path, G_FILE_TEST_EXISTS))
914
gtk_ui_manager_add_ui_from_file(ui_manager, path, &error);
1028
path = g_build_filename (SFLPHONE_UIDIR, "./ui.xml", NULL);
1030
if (g_file_test (path, G_FILE_TEST_EXISTS)) {
1031
gtk_ui_manager_add_ui_from_file (ui_manager, path, &error);
1033
if (error != NULL) {
1034
g_error_free (error);
926
action_group = gtk_action_group_new("SFLphoneWindowActions");
927
// To translate label and tooltip entries
928
gtk_action_group_set_translation_domain(action_group, "sflphone-client-gnome");
929
gtk_action_group_add_actions(action_group, menu_entries,
930
G_N_ELEMENTS (menu_entries), window);
931
gtk_action_group_add_toggle_actions(action_group, toggle_menu_entries,
932
G_N_ELEMENTS (toggle_menu_entries), window);
933
//gtk_action_group_add_radio_actions (action_group, radio_menu_entries, G_N_ELEMENTS (radio_menu_entries), CALLTREE_CALLS, G_CALLBACK (calltree_switch_cb), window);
934
gtk_ui_manager_insert_action_group(ui_manager, action_group, 0);
936
*_ui_manager = ui_manager;
1043
action_group = gtk_action_group_new ("SFLphoneWindowActions");
1044
// To translate label and tooltip entries
1045
gtk_action_group_set_translation_domain (action_group, "sflphone-client-gnome");
1046
gtk_action_group_add_actions (action_group, menu_entries,
1047
G_N_ELEMENTS (menu_entries), window);
1048
gtk_action_group_add_toggle_actions (action_group, toggle_menu_entries,
1049
G_N_ELEMENTS (toggle_menu_entries), window);
1050
//gtk_action_group_add_radio_actions (action_group, radio_menu_entries, G_N_ELEMENTS (radio_menu_entries), CALLTREE_CALLS, G_CALLBACK (calltree_switch_cb), window);
1051
gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
1053
*_ui_manager = ui_manager;
942
edit_number_cb(GtkWidget *widget UNUSED, gpointer user_data)
1059
edit_number_cb (GtkWidget *widget UNUSED, gpointer user_data)
945
show_edit_number((callable_obj_t*) user_data);
1062
show_edit_number ( (callable_obj_t*) user_data);
949
add_registered_accounts_to_menu(GtkWidget *menu)
1066
add_registered_accounts_to_menu (GtkWidget *menu)
952
GtkWidget *menu_items;
954
account_t* acc, *current;
957
menu_items = gtk_separator_menu_item_new();
958
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
959
gtk_widget_show(menu_items);
961
for (i = 0; i < account_list_get_size(); i++)
963
acc = account_list_get_nth(i);
964
// Display only the registered accounts
965
if (g_strcasecmp(account_state_name(acc->state), account_state_name(
966
ACCOUNT_STATE_REGISTERED)) == 0)
968
alias = g_strconcat(g_hash_table_lookup(acc->properties,
969
ACCOUNT_ALIAS), " - ", g_hash_table_lookup(acc->properties,
970
ACCOUNT_TYPE), NULL);
971
menu_items = gtk_check_menu_item_new_with_mnemonic(alias);
972
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
973
g_object_set_data(G_OBJECT( menu_items ), "account", acc);
975
current = account_list_get_current();
978
gtk_check_menu_item_set_active(
979
GTK_CHECK_MENU_ITEM(menu_items),
980
(g_strcasecmp(acc->accountID, current->accountID) == 0) ? TRUE
1069
GtkWidget *menu_items;
1071
account_t* acc, *current;
1074
menu_items = gtk_separator_menu_item_new();
1075
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1076
gtk_widget_show (menu_items);
1078
for (i = 0; i < account_list_get_size(); i++) {
1079
acc = account_list_get_nth (i);
1081
// Display only the registered accounts
1082
if (g_strcasecmp (account_state_name (acc->state), account_state_name (
1083
ACCOUNT_STATE_REGISTERED)) == 0) {
1084
alias = g_strconcat (g_hash_table_lookup (acc->properties,
1085
ACCOUNT_ALIAS), " - ", g_hash_table_lookup (acc->properties,
1086
ACCOUNT_TYPE), NULL);
1087
menu_items = gtk_check_menu_item_new_with_mnemonic (alias);
1088
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1089
g_object_set_data (G_OBJECT (menu_items), "account", acc);
1091
current = account_list_get_current();
1094
gtk_check_menu_item_set_active (
1095
GTK_CHECK_MENU_ITEM (menu_items),
1096
(g_strcasecmp (acc->accountID, current->accountID) == 0) ? TRUE
983
g_signal_connect (G_OBJECT (menu_items), "activate",
984
G_CALLBACK (switch_account),
986
gtk_widget_show(menu_items);
1100
g_signal_connect (G_OBJECT (menu_items), "activate",
1101
G_CALLBACK (switch_account),
1103
gtk_widget_show (menu_items);
993
show_popup_menu(GtkWidget *my_widget, GdkEventButton *event)
995
// TODO update the selection to make sure the call under the mouse is the call selected
998
gboolean pickup = FALSE, hangup = FALSE, hold = FALSE, copy = FALSE, record =
999
FALSE, detach = FALSE;
1000
gboolean accounts = FALSE;
1002
// conference type boolean
1003
gboolean hangup_conf = FALSE, hold_conf = FALSE;
1005
callable_obj_t * selectedCall;
1006
conference_obj_t * selectedConf;
1008
if (calltab_get_selected_type(current_calls) == A_CALL)
1010
DEBUG("MENUS: SELECTED A CALL");
1011
selectedCall = calltab_get_selected_call(current_calls);
1016
switch (selectedCall->_state)
1018
case CALL_STATE_INCOMING:
1023
case CALL_STATE_HOLD:
1028
case CALL_STATE_RINGING:
1032
case CALL_STATE_DIALING:
1037
case CALL_STATE_RECORD:
1038
case CALL_STATE_CURRENT:
1044
case CALL_STATE_BUSY:
1045
case CALL_STATE_FAILURE:
1049
WARN("Should not happen in show_popup_menu for calls!")
1057
DEBUG("MENUS: SELECTED A CONF");
1058
selectedConf = calltab_get_selected_conf();
1062
switch (selectedConf->_state)
1064
case CONFERENCE_STATE_ACTIVE_ATACHED:
1068
case CONFERENCE_STATE_ACTIVE_DETACHED:
1070
case CONFERENCE_STATE_HOLD:
1075
WARN("Should not happen in show_popup_menu for conferences!")
1085
int button, event_time;
1086
GtkWidget * menu_items;
1088
menu = gtk_menu_new();
1089
//g_signal_connect (menu, "deactivate",
1090
// G_CALLBACK (gtk_widget_destroy), NULL);
1091
if (calltab_get_selected_type(current_calls) == A_CALL)
1093
DEBUG("BUILD CALL MENU");
1097
menu_items = gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY,
1099
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1100
g_signal_connect (G_OBJECT (menu_items), "activate",
1101
G_CALLBACK (edit_copy),
1103
gtk_widget_show(menu_items);
1106
menu_items = gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE,
1108
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1109
g_signal_connect (G_OBJECT (menu_items), "activate",
1110
G_CALLBACK (edit_paste),
1112
gtk_widget_show(menu_items);
1114
if (pickup || hangup || hold)
1116
menu_items = gtk_separator_menu_item_new();
1117
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1118
gtk_widget_show(menu_items);
1124
menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Pick up"));
1125
image = gtk_image_new_from_file(ICONS_DIR "/icon_accept.svg");
1126
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image);
1127
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1128
g_signal_connect (G_OBJECT (menu_items), "activate",
1129
G_CALLBACK (call_pick_up),
1131
gtk_widget_show(menu_items);
1136
menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Hang up"));
1137
image = gtk_image_new_from_file(ICONS_DIR "/icon_hangup.svg");
1138
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image);
1139
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1140
g_signal_connect (G_OBJECT (menu_items), "activate",
1141
G_CALLBACK (call_hang_up),
1143
gtk_widget_show(menu_items);
1148
menu_items = gtk_check_menu_item_new_with_mnemonic(_("On _Hold"));
1149
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1150
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items),
1151
(selectedCall->_state == CALL_STATE_HOLD ? TRUE : FALSE));
1152
g_signal_connect(G_OBJECT (menu_items), "activate",
1153
G_CALLBACK (call_hold),
1155
gtk_widget_show(menu_items);
1160
menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Record"));
1161
image = gtk_image_new_from_stock(GTK_STOCK_MEDIA_RECORD,
1162
GTK_ICON_SIZE_MENU);
1163
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image);
1164
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1165
g_signal_connect (G_OBJECT (menu_items), "activate",
1166
G_CALLBACK (call_record),
1168
gtk_widget_show(menu_items);
1174
DEBUG("BUILD CONFERENCE MENU");
1178
menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Hang up"));
1179
image = gtk_image_new_from_file(ICONS_DIR "/icon_hangup.svg");
1180
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image);
1181
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1182
g_signal_connect (G_OBJECT (menu_items), "activate",
1183
G_CALLBACK (conference_hang_up),
1185
gtk_widget_show(menu_items);
1190
menu_items = gtk_check_menu_item_new_with_mnemonic(_("On _Hold"));
1191
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1192
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items),
1193
(selectedCall->_state == CALL_STATE_HOLD ? TRUE : FALSE));
1194
g_signal_connect(G_OBJECT (menu_items), "activate",
1195
G_CALLBACK (conference_hold),
1197
gtk_widget_show(menu_items);
1203
add_registered_accounts_to_menu(menu);
1208
button = event->button;
1209
event_time = event->time;
1214
event_time = gtk_get_current_event_time();
1217
gtk_menu_attach_to_widget(GTK_MENU (menu), my_widget, NULL);
1218
gtk_menu_popup(GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
1222
show_popup_menu_history(GtkWidget *my_widget, GdkEventButton *event)
1225
gboolean pickup = FALSE;
1226
gboolean remove = FALSE;
1227
gboolean edit = FALSE;
1228
gboolean accounts = FALSE;
1230
callable_obj_t * selectedCall = calltab_get_selected_call(history);
1241
int button, event_time;
1242
GtkWidget * menu_items;
1244
menu = gtk_menu_new();
1245
//g_signal_connect (menu, "deactivate",
1246
// G_CALLBACK (gtk_widget_destroy), NULL);
1251
menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Call back"));
1252
image = gtk_image_new_from_file(ICONS_DIR "/icon_accept.svg");
1253
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM ( menu_items ), image);
1254
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1255
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL);
1256
gtk_widget_show(menu_items);
1259
menu_items = gtk_separator_menu_item_new();
1260
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1261
gtk_widget_show(menu_items);
1265
menu_items = gtk_image_menu_item_new_from_stock(GTK_STOCK_EDIT,
1267
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1268
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (edit_number_cb), selectedCall);
1269
gtk_widget_show(menu_items);
1274
menu_items = gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE,
1276
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1277
g_signal_connect (G_OBJECT (menu_items), "activate", G_CALLBACK (remove_from_history), NULL);
1278
gtk_widget_show(menu_items);
1283
add_registered_accounts_to_menu(menu);
1288
button = event->button;
1289
event_time = event->time;
1294
event_time = gtk_get_current_event_time();
1297
gtk_menu_attach_to_widget(GTK_MENU (menu), my_widget, NULL);
1298
gtk_menu_popup(GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
1301
show_popup_menu_contacts(GtkWidget *my_widget, GdkEventButton *event)
1304
gboolean pickup = FALSE;
1305
gboolean accounts = FALSE;
1306
gboolean edit = FALSE;
1308
callable_obj_t * selectedCall = calltab_get_selected_call(contacts);
1318
int button, event_time;
1319
GtkWidget * menu_items;
1321
menu = gtk_menu_new();
1322
//g_signal_connect (menu, "deactivate",
1323
// G_CALLBACK (gtk_widget_destroy), NULL);
1328
menu_items = gtk_image_menu_item_new_with_mnemonic(_("_New call"));
1329
image = gtk_image_new_from_file(ICONS_DIR "/icon_accept.svg");
1330
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM ( menu_items ), image);
1331
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1332
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL);
1333
gtk_widget_show(menu_items);
1338
menu_items = gtk_image_menu_item_new_from_stock(GTK_STOCK_EDIT,
1340
gtk_menu_shell_append(GTK_MENU_SHELL (menu), menu_items);
1341
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (edit_number_cb), selectedCall);
1342
gtk_widget_show(menu_items);
1347
add_registered_accounts_to_menu(menu);
1352
button = event->button;
1353
event_time = event->time;
1358
event_time = gtk_get_current_event_time();
1361
gtk_menu_attach_to_widget(GTK_MENU (menu), my_widget, NULL);
1362
gtk_menu_popup(GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
1366
ok_cb(GtkWidget *widget UNUSED, gpointer userdata)
1370
callable_obj_t *modified_call, *original;
1372
// Change the number of the selected call before calling
1373
new_number = (gchar*) gtk_entry_get_text(GTK_ENTRY (editable_num));
1374
original = (callable_obj_t*) userdata;
1376
// Create the new call
1377
create_new_call(CALL, CALL_STATE_DIALING, "", g_strdup(original->_accountID),
1378
original->_peer_name, g_strdup(new_number), &modified_call);
1380
// Update the internal data structure and the GUI
1381
calllist_add(current_calls, modified_call);
1382
calltree_add_call(current_calls, modified_call, NULL);
1383
sflphone_place_call(modified_call);
1384
calltree_display(current_calls);
1386
// Close the contextual menu
1387
gtk_widget_destroy(GTK_WIDGET (edit_dialog));
1391
on_delete(GtkWidget * widget)
1393
gtk_widget_destroy(widget);
1397
show_edit_number(callable_obj_t *call)
1400
GtkWidget *ok, *hbox, *image;
1403
edit_dialog = GTK_DIALOG (gtk_dialog_new());
1405
// Set window properties
1406
gtk_window_set_default_size(GTK_WINDOW(edit_dialog), 300, 20);
1407
gtk_window_set_title(GTK_WINDOW(edit_dialog), _("Edit phone number"));
1408
gtk_window_set_resizable(GTK_WINDOW (edit_dialog), FALSE);
1410
g_signal_connect (G_OBJECT (edit_dialog), "delete-event", G_CALLBACK (on_delete), NULL);
1412
hbox = gtk_hbox_new(FALSE, 0);
1413
gtk_box_pack_start(GTK_BOX (edit_dialog->vbox), hbox, TRUE, TRUE, 0);
1415
// Set the number to be edited
1416
editable_num = gtk_entry_new();
1110
show_popup_menu (GtkWidget *my_widget, GdkEventButton *event)
1112
// TODO update the selection to make sure the call under the mouse is the call selected
1114
// call type boolean
1115
gboolean pickup = FALSE, hangup = FALSE, hold = FALSE, copy = FALSE, record =
1116
FALSE, detach = FALSE, im = FALSE;
1117
gboolean accounts = FALSE;
1119
// conference type boolean
1120
gboolean hangup_conf = FALSE, hold_conf = FALSE;
1122
callable_obj_t * selectedCall = NULL;
1123
conference_obj_t * selectedConf;
1125
if (calltab_get_selected_type (current_calls) == A_CALL) {
1126
DEBUG ("UIManager: Menus: Selected a call");
1127
selectedCall = calltab_get_selected_call (current_calls);
1132
switch (selectedCall->_state) {
1133
case CALL_STATE_INCOMING:
1138
case CALL_STATE_HOLD:
1143
case CALL_STATE_RINGING:
1147
case CALL_STATE_DIALING:
1152
case CALL_STATE_RECORD:
1153
case CALL_STATE_CURRENT:
1160
case CALL_STATE_BUSY:
1161
case CALL_STATE_FAILURE:
1165
WARN ("UIManager: Should not happen in show_popup_menu for calls!")
1171
DEBUG ("UIManager: Menus: selected a conf");
1172
selectedConf = calltab_get_selected_conf();
1175
switch (selectedConf->_state) {
1176
case CONFERENCE_STATE_ACTIVE_ATACHED:
1180
case CONFERENCE_STATE_ACTIVE_DETACHED:
1182
case CONFERENCE_STATE_HOLD:
1187
WARN ("UIManager: Should not happen in show_popup_menu for conferences!")
1197
int button, event_time;
1198
GtkWidget * menu_items;
1200
menu = gtk_menu_new();
1202
//g_signal_connect (menu, "deactivate",
1203
// G_CALLBACK (gtk_widget_destroy), NULL);
1204
if (calltab_get_selected_type (current_calls) == A_CALL) {
1205
DEBUG ("UIManager: Build call menu");
1208
menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_COPY,
1210
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1211
g_signal_connect (G_OBJECT (menu_items), "activate",
1212
G_CALLBACK (edit_copy),
1214
gtk_widget_show (menu_items);
1217
menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_PASTE,
1219
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1220
g_signal_connect (G_OBJECT (menu_items), "activate",
1221
G_CALLBACK (edit_paste),
1223
gtk_widget_show (menu_items);
1225
if (pickup || hangup || hold) {
1226
menu_items = gtk_separator_menu_item_new();
1227
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1228
gtk_widget_show (menu_items);
1233
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Pick up"));
1234
image = gtk_image_new_from_file (ICONS_DIR "/icon_accept.svg");
1235
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1236
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1237
g_signal_connect (G_OBJECT (menu_items), "activate",
1238
G_CALLBACK (call_pick_up),
1240
gtk_widget_show (menu_items);
1244
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Hang up"));
1245
image = gtk_image_new_from_file (ICONS_DIR "/icon_hangup.svg");
1246
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1247
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1248
g_signal_connect (G_OBJECT (menu_items), "activate",
1249
G_CALLBACK (call_hang_up),
1251
gtk_widget_show (menu_items);
1255
menu_items = gtk_check_menu_item_new_with_mnemonic (_ ("On _Hold"));
1256
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1257
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_items),
1258
(selectedCall->_state == CALL_STATE_HOLD ? TRUE : FALSE));
1259
g_signal_connect (G_OBJECT (menu_items), "activate",
1260
G_CALLBACK (call_hold),
1262
gtk_widget_show (menu_items);
1266
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Record"));
1267
image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_RECORD,
1268
GTK_ICON_SIZE_MENU);
1269
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1270
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1271
g_signal_connect (G_OBJECT (menu_items), "activate",
1272
G_CALLBACK (call_record),
1274
gtk_widget_show (menu_items);
1279
// do not display message if instant messaging is disabled
1280
gboolean instant_messaging_enabled = TRUE;
1282
if (eel_gconf_key_exists (INSTANT_MESSAGING_ENABLED))
1283
instant_messaging_enabled = eel_gconf_get_integer (INSTANT_MESSAGING_ENABLED);
1285
if (instant_messaging_enabled) {
1287
menu_items = gtk_separator_menu_item_new();
1288
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1289
gtk_widget_show (menu_items);
1291
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("Send _message"));
1292
image = gtk_image_new_from_stock (GTK_STOCK_IM, GTK_ICON_SIZE_MENU);
1293
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1294
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1295
g_signal_connect (G_OBJECT (menu_items), "activate",
1296
G_CALLBACK (call_im),
1298
gtk_widget_show (menu_items);
1303
DEBUG ("UIManager: Build call menus");
1306
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Hang up"));
1307
image = gtk_image_new_from_file (ICONS_DIR "/icon_hangup.svg");
1308
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1309
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1310
g_signal_connect (G_OBJECT (menu_items), "activate",
1311
G_CALLBACK (conference_hang_up),
1313
gtk_widget_show (menu_items);
1317
menu_items = gtk_check_menu_item_new_with_mnemonic (_ ("On _Hold"));
1318
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1319
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_items),
1320
(selectedCall->_state == CALL_STATE_HOLD ? TRUE : FALSE));
1321
g_signal_connect (G_OBJECT (menu_items), "activate",
1322
G_CALLBACK (conference_hold),
1324
gtk_widget_show (menu_items);
1329
add_registered_accounts_to_menu (menu);
1333
button = event->button;
1334
event_time = event->time;
1337
event_time = gtk_get_current_event_time();
1340
gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL);
1341
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
1345
show_popup_menu_history (GtkWidget *my_widget, GdkEventButton *event)
1348
DEBUG ("UIManager: Show popup menu history");
1350
gboolean pickup = FALSE;
1351
gboolean remove = FALSE;
1352
gboolean edit = FALSE;
1353
gboolean accounts = FALSE;
1355
callable_obj_t * selectedCall = calltab_get_selected_call (history);
1366
int button, event_time;
1367
GtkWidget * menu_items;
1369
menu = gtk_menu_new();
1370
//g_signal_connect (menu, "deactivate",
1371
// G_CALLBACK (gtk_widget_destroy), NULL);
1375
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Call back"));
1376
image = gtk_image_new_from_file (ICONS_DIR "/icon_accept.svg");
1377
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1378
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1379
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL);
1380
gtk_widget_show (menu_items);
1383
menu_items = gtk_separator_menu_item_new();
1384
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1385
gtk_widget_show (menu_items);
1388
menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_EDIT,
1390
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1391
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (edit_number_cb), selectedCall);
1392
gtk_widget_show (menu_items);
1396
menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE,
1398
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1399
g_signal_connect (G_OBJECT (menu_items), "activate", G_CALLBACK (remove_from_history), NULL);
1400
gtk_widget_show (menu_items);
1404
add_registered_accounts_to_menu (menu);
1408
button = event->button;
1409
event_time = event->time;
1412
event_time = gtk_get_current_event_time();
1415
gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL);
1416
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
1421
show_popup_menu_addressbook (GtkWidget *my_widget, GdkEventButton *event)
1433
int button, event_time;
1434
GtkWidget * menu_items;
1436
menu = gtk_menu_new();
1437
//g_signal_connect (menu, "deactivate",
1438
// G_CALLBACK (gtk_widget_destroy), NULL);
1442
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_Call back"));
1443
image = gtk_image_new_from_file (ICONS_DIR "/icon_accept.svg");
1444
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1445
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1446
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL);
1447
gtk_widget_show (menu_items);
1450
menu_items = gtk_separator_menu_item_new();
1451
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1452
gtk_widget_show (menu_items);
1455
menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_EDIT,
1457
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1458
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (edit_number_cb), selectedCall);
1459
gtk_widget_show (menu_items);
1463
menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_DELETE,
1465
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1466
g_signal_connect (G_OBJECT (menu_items), "activate", G_CALLBACK (remove_from_history), NULL);
1467
gtk_widget_show (menu_items);
1471
add_registered_accounts_to_menu (menu);
1475
button = event->button;
1476
event_time = event->time;
1479
event_time = gtk_get_current_event_time();
1482
gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL);
1483
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
1488
show_popup_menu_contacts (GtkWidget *my_widget, GdkEventButton *event)
1491
gboolean pickup = FALSE;
1492
gboolean accounts = FALSE;
1493
gboolean edit = FALSE;
1495
callable_obj_t * selectedCall = calltab_get_selected_call (contacts);
1505
int button, event_time;
1506
GtkWidget * menu_items;
1508
menu = gtk_menu_new();
1509
//g_signal_connect (menu, "deactivate",
1510
// G_CALLBACK (gtk_widget_destroy), NULL);
1514
menu_items = gtk_image_menu_item_new_with_mnemonic (_ ("_New call"));
1515
image = gtk_image_new_from_file (ICONS_DIR "/icon_accept.svg");
1516
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_items), image);
1517
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1518
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL);
1519
gtk_widget_show (menu_items);
1523
menu_items = gtk_image_menu_item_new_from_stock (GTK_STOCK_EDIT,
1525
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
1526
g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (edit_number_cb), selectedCall);
1527
gtk_widget_show (menu_items);
1531
add_registered_accounts_to_menu (menu);
1535
button = event->button;
1536
event_time = event->time;
1539
event_time = gtk_get_current_event_time();
1542
gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL);
1543
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time);
1547
ok_cb (GtkWidget *widget UNUSED, gpointer userdata)
1551
callable_obj_t *modified_call, *original;
1553
// Change the number of the selected call before calling
1554
new_number = (gchar*) gtk_entry_get_text (GTK_ENTRY (editable_num));
1555
original = (callable_obj_t*) userdata;
1557
// Create the new call
1558
create_new_call (CALL, CALL_STATE_DIALING, "", g_strdup (original->_accountID),
1559
original->_peer_name, g_strdup (new_number), &modified_call);
1561
// Update the internal data structure and the GUI
1562
calllist_add (current_calls, modified_call);
1563
calltree_add_call (current_calls, modified_call, NULL);
1564
sflphone_place_call (modified_call);
1565
calltree_display (current_calls);
1567
// Close the contextual menu
1568
gtk_widget_destroy (GTK_WIDGET (edit_dialog));
1572
on_delete (GtkWidget * widget)
1574
gtk_widget_destroy (widget);
1578
show_edit_number (callable_obj_t *call)
1581
GtkWidget *ok, *hbox, *image;
1584
edit_dialog = GTK_DIALOG (gtk_dialog_new());
1586
// Set window properties
1587
gtk_window_set_default_size (GTK_WINDOW (edit_dialog), 300, 20);
1588
gtk_window_set_title (GTK_WINDOW (edit_dialog), _ ("Edit phone number"));
1589
gtk_window_set_resizable (GTK_WINDOW (edit_dialog), FALSE);
1591
g_signal_connect (G_OBJECT (edit_dialog), "delete-event", G_CALLBACK (on_delete), NULL);
1593
hbox = gtk_hbox_new (FALSE, 0);
1594
gtk_box_pack_start (GTK_BOX (edit_dialog->vbox), hbox, TRUE, TRUE, 0);
1596
// Set the number to be edited
1597
editable_num = gtk_entry_new();
1417
1598
#if GTK_CHECK_VERSION(2,12,0)
1418
gtk_widget_set_tooltip_text(GTK_WIDGET(editable_num),
1419
_("Edit the phone number before making a call"));
1599
gtk_widget_set_tooltip_text (GTK_WIDGET (editable_num),
1600
_ ("Edit the phone number before making a call"));
1422
gtk_entry_set_text(GTK_ENTRY(editable_num), g_strdup(call->_peer_number));
1424
ERROR ("This a bug, the call should be defined. menus.c line 1051");
1426
gtk_box_pack_start(GTK_BOX (hbox), editable_num, TRUE, TRUE, 0);
1428
// Set a custom image for the button
1429
pixbuf = gdk_pixbuf_new_from_file_at_scale(ICONS_DIR "/outgoing.svg", 32, 32,
1431
image = gtk_image_new_from_pixbuf(pixbuf);
1432
ok = gtk_button_new();
1433
gtk_button_set_image(GTK_BUTTON (ok), image);
1434
gtk_box_pack_start(GTK_BOX (hbox), ok, TRUE, TRUE, 0);
1435
g_signal_connect(G_OBJECT (ok), "clicked", G_CALLBACK (ok_cb), call);
1437
gtk_widget_show_all(edit_dialog->vbox);
1439
gtk_dialog_run(edit_dialog);
1604
gtk_entry_set_text (GTK_ENTRY (editable_num), g_strdup (call->_peer_number));
1606
ERROR ("This a bug, the call should be defined. menus.c line 1051");
1608
gtk_box_pack_start (GTK_BOX (hbox), editable_num, TRUE, TRUE, 0);
1610
// Set a custom image for the button
1611
pixbuf = gdk_pixbuf_new_from_file_at_scale (ICONS_DIR "/outgoing.svg", 32, 32,
1613
image = gtk_image_new_from_pixbuf (pixbuf);
1614
ok = gtk_button_new();
1615
gtk_button_set_image (GTK_BUTTON (ok), image);
1616
gtk_box_pack_start (GTK_BOX (hbox), ok, TRUE, TRUE, 0);
1617
g_signal_connect (G_OBJECT (ok), "clicked", G_CALLBACK (ok_cb), call);
1619
gtk_widget_show_all (edit_dialog->vbox);
1621
gtk_dialog_run (edit_dialog);
1444
1626
create_waiting_icon()
1446
GtkWidget * waiting_icon;
1447
waiting_icon = gtk_image_menu_item_new_with_label("");
1448
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(waiting_icon),
1449
gtk_image_new_from_animation(gdk_pixbuf_animation_new_from_file(
1450
ICONS_DIR "/wait-on.gif", NULL)));
1451
gtk_menu_item_set_right_justified(GTK_MENU_ITEM(waiting_icon), TRUE);
1453
return waiting_icon;
1457
create_menus(GtkUIManager *ui_manager, GtkWidget **widget)
1460
GtkWidget * menu_bar;
1462
menu_bar = gtk_ui_manager_get_widget(ui_manager, "/MenuBar");
1463
pickUpAction = gtk_ui_manager_get_action(ui_manager,
1464
"/MenuBar/CallMenu/PickUp");
1465
newCallAction = gtk_ui_manager_get_action(ui_manager,
1466
"/MenuBar/CallMenu/NewCall");
1467
hangUpAction = gtk_ui_manager_get_action(ui_manager,
1468
"/MenuBar/CallMenu/HangUp");
1469
holdMenu = gtk_ui_manager_get_widget(ui_manager,
1470
"/MenuBar/CallMenu/OnHoldMenu");
1471
recordAction = gtk_ui_manager_get_action(ui_manager,
1472
"/MenuBar/CallMenu/Record");
1473
copyAction = gtk_ui_manager_get_action(ui_manager, "/MenuBar/EditMenu/Copy");
1475
= gtk_ui_manager_get_action(ui_manager, "/MenuBar/EditMenu/Paste");
1476
volumeToggle = gtk_ui_manager_get_action(ui_manager,
1477
"/MenuBar/ViewMenu/VolumeControls");
1479
// Set the toggle buttons
1480
gtk_toggle_action_set_active(
1481
GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/Dialpad")),
1482
(gboolean) SHOW_DIALPAD);
1483
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION (volumeToggle),
1484
(gboolean) SHOW_VOLUME);
1486
gtk_action_set_sensitive(GTK_ACTION (volumeToggle), SHOW_ALSA_CONF);
1488
// Disable it right now
1489
gtk_action_set_sensitive(
1490
GTK_ACTION (gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/Toolbar")),
1493
waitingLayer = create_waiting_icon();
1494
gtk_menu_shell_append(GTK_MENU_SHELL (menu_bar), waitingLayer);
1500
create_toolbar_actions(GtkUIManager *ui_manager, GtkWidget **widget)
1502
toolbar = gtk_ui_manager_get_widget(ui_manager, "/ToolbarActions");
1504
holdToolbar = gtk_ui_manager_get_widget(ui_manager,
1505
"/ToolbarActions/OnHoldToolbar");
1506
offHoldToolbar = gtk_ui_manager_get_widget(ui_manager,
1507
"/ToolbarActions/OffHoldToolbar");
1508
transferToolbar = gtk_ui_manager_get_widget(ui_manager,
1509
"/ToolbarActions/TransferToolbar");
1510
voicemailAction = gtk_ui_manager_get_action(ui_manager,
1511
"/ToolbarActions/Voicemail");
1512
voicemailToolbar = gtk_ui_manager_get_widget(ui_manager,
1513
"/ToolbarActions/VoicemailToolbar");
1514
newCallWidget = gtk_ui_manager_get_widget(ui_manager,
1515
"/ToolbarActions/NewCallToolbar");
1516
pickUpWidget = gtk_ui_manager_get_widget(ui_manager,
1517
"/ToolbarActions/PickUpToolbar");
1518
hangUpWidget = gtk_ui_manager_get_widget(ui_manager,
1519
"/ToolbarActions/HangUpToolbar");
1520
recordWidget = gtk_ui_manager_get_widget(ui_manager,
1521
"/ToolbarActions/RecordToolbar");
1522
historyButton = gtk_ui_manager_get_widget(ui_manager,
1523
"/ToolbarActions/HistoryToolbar");
1524
contactButton = gtk_ui_manager_get_widget(ui_manager,
1525
"/ToolbarActions/AddressbookToolbar");
1527
// Set the handler ID for the transfer
1528
transfertButtonConnId
1529
= g_signal_connect (G_OBJECT (transferToolbar), "toggled", G_CALLBACK (call_transfer_cb), NULL);
1531
= g_signal_connect (G_OBJECT (recordWidget), "toggled", G_CALLBACK (call_record), NULL);
1532
active_calltree = current_calls;
1628
GtkWidget * waiting_icon;
1629
waiting_icon = gtk_image_menu_item_new_with_label ("");
1630
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (waiting_icon),
1631
gtk_image_new_from_animation (gdk_pixbuf_animation_new_from_file (
1632
ICONS_DIR "/wait-on.gif", NULL)));
1633
gtk_menu_item_set_right_justified (GTK_MENU_ITEM (waiting_icon), TRUE);
1635
return waiting_icon;
1639
create_menus (GtkUIManager *ui_manager, GtkWidget **widget)
1642
GtkWidget * menu_bar;
1644
menu_bar = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
1645
pickUpAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/CallMenu/PickUp");
1646
newCallAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/CallMenu/NewCall");
1647
hangUpAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/CallMenu/HangUp");
1648
holdMenu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar/CallMenu/OnHoldMenu");
1649
recordAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/CallMenu/Record");
1650
imAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/CallMenu/InstantMessaging");
1651
copyAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/EditMenu/Copy");
1652
pasteAction = gtk_ui_manager_get_action (ui_manager, "/MenuBar/EditMenu/Paste");
1653
volumeToggle = gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/VolumeControls");
1655
// Set the toggle buttons
1656
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));
1657
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (volumeToggle), (gboolean) SHOW_VOLUME);
1659
gtk_action_set_sensitive (GTK_ACTION (volumeToggle), SHOW_ALSA_CONF);
1661
// Disable it right now
1662
gtk_action_set_sensitive (GTK_ACTION (gtk_ui_manager_get_action (ui_manager, "/MenuBar/ViewMenu/Toolbar")), FALSE);
1664
/* Add the loading icon at the right of the toolbar. It is used for addressbook searches. */
1665
waitingLayer = create_waiting_icon ();
1666
gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), waitingLayer);
1672
create_toolbar_actions (GtkUIManager *ui_manager, GtkWidget **widget)
1674
toolbar = gtk_ui_manager_get_widget (ui_manager, "/ToolbarActions");
1676
holdToolbar = gtk_ui_manager_get_widget (ui_manager,
1677
"/ToolbarActions/OnHoldToolbar");
1678
offHoldToolbar = gtk_ui_manager_get_widget (ui_manager,
1679
"/ToolbarActions/OffHoldToolbar");
1680
transferToolbar = gtk_ui_manager_get_widget (ui_manager,
1681
"/ToolbarActions/TransferToolbar");
1682
voicemailAction = gtk_ui_manager_get_action (ui_manager,
1683
"/ToolbarActions/Voicemail");
1684
voicemailToolbar = gtk_ui_manager_get_widget (ui_manager,
1685
"/ToolbarActions/VoicemailToolbar");
1686
newCallWidget = gtk_ui_manager_get_widget (ui_manager,
1687
"/ToolbarActions/NewCallToolbar");
1688
pickUpWidget = gtk_ui_manager_get_widget (ui_manager,
1689
"/ToolbarActions/PickUpToolbar");
1690
hangUpWidget = gtk_ui_manager_get_widget (ui_manager,
1691
"/ToolbarActions/HangUpToolbar");
1692
recordWidget = gtk_ui_manager_get_widget (ui_manager,
1693
"/ToolbarActions/RecordToolbar");
1694
imToolbar = gtk_ui_manager_get_widget (ui_manager,
1695
"/ToolbarActions/InstantMessagingToolbar");
1696
historyButton = gtk_ui_manager_get_widget (ui_manager,
1697
"/ToolbarActions/HistoryToolbar");
1698
contactButton = gtk_ui_manager_get_widget (ui_manager,
1699
"/ToolbarActions/AddressbookToolbar");
1701
// Set the handler ID for the transfer
1702
transfertButtonConnId
1703
= g_signal_connect (G_OBJECT (transferToolbar), "toggled", G_CALLBACK (call_transfer_cb), NULL);
1705
= g_signal_connect (G_OBJECT (recordWidget), "toggled", G_CALLBACK (call_record), NULL);
1706
active_calltree = current_calls;