71 | 71 |
|
72 | 72 |
G_DEFINE_TYPE (EmpathyIndividualMenu, empathy_individual_menu, GTK_TYPE_MENU);
|
73 | 73 |
|
74 | |
static GtkWidget * empathy_individual_chat_menu_item_new (
|
75 | |
EmpathyIndividualMenu *self, FolksIndividual *individual);
|
76 | |
static GtkWidget * empathy_individual_sms_menu_item_new (
|
77 | |
EmpathyIndividualMenu *self, FolksIndividual *individual);
|
78 | |
static GtkWidget * empathy_individual_log_menu_item_new (
|
|
74 |
static GtkWidget * chat_menu_item_new_individual (EmpathyIndividualMenu *self,
|
79 | 75 |
FolksIndividual *individual);
|
80 | |
static GtkWidget * empathy_individual_info_menu_item_new (
|
|
76 |
static GtkWidget * chat_menu_item_new_contact (EmpathyIndividualMenu *self,
|
|
77 |
EmpathyContact *contact);
|
|
78 |
static GtkWidget * sms_menu_item_new_individual (EmpathyIndividualMenu *self,
|
81 | 79 |
FolksIndividual *individual);
|
82 | |
static GtkWidget * empathy_individual_edit_menu_item_new (
|
|
80 |
static GtkWidget * sms_menu_item_new_contact (EmpathyIndividualMenu *self,
|
|
81 |
EmpathyContact *contact);
|
|
82 |
static GtkWidget * audio_call_menu_item_new_contact (
|
|
83 |
EmpathyIndividualMenu *self,
|
|
84 |
EmpathyContact *contact);
|
|
85 |
static GtkWidget * video_call_menu_item_new_contact (
|
|
86 |
EmpathyIndividualMenu *self,
|
|
87 |
EmpathyContact *contact);
|
|
88 |
static GtkWidget * log_menu_item_new_individual (FolksIndividual *individual);
|
|
89 |
static GtkWidget * log_menu_item_new_contact (EmpathyContact *contact);
|
|
90 |
static GtkWidget * info_menu_item_new_individual (FolksIndividual *individual);
|
|
91 |
static GtkWidget * edit_menu_item_new_individual (FolksIndividual *individual);
|
|
92 |
static GtkWidget * invite_menu_item_new (FolksIndividual *individual,
|
|
93 |
EmpathyContact *contact);
|
|
94 |
static GtkWidget * file_transfer_menu_item_new_individual (EmpathyIndividualMenu *self,
|
83 | 95 |
FolksIndividual *individual);
|
84 | |
static GtkWidget * empathy_individual_invite_menu_item_new (
|
85 | |
FolksIndividual *individual,
|
|
96 |
static GtkWidget * file_transfer_menu_item_new_contact (
|
|
97 |
EmpathyIndividualMenu *self,
|
86 | 98 |
EmpathyContact *contact);
|
87 | |
static GtkWidget * empathy_individual_file_transfer_menu_item_new (
|
88 | |
EmpathyIndividualMenu *self, FolksIndividual *individual);
|
89 | |
static GtkWidget * empathy_individual_share_my_desktop_menu_item_new (
|
90 | |
EmpathyIndividualMenu *self, FolksIndividual *individual);
|
91 | |
static GtkWidget * empathy_individual_favourite_menu_item_new (
|
|
99 |
static GtkWidget * share_my_desktop_menu_item_new_individual (EmpathyIndividualMenu *self,
|
92 | 100 |
FolksIndividual *individual);
|
93 | |
static GtkWidget * empathy_individual_add_menu_item_new (
|
|
101 |
static GtkWidget * share_my_desktop_menu_item_new_contact (
|
94 | 102 |
EmpathyIndividualMenu *self,
|
|
103 |
EmpathyContact *contact);
|
|
104 |
static GtkWidget * favourite_menu_item_new_individual (FolksIndividual *individual);
|
|
105 |
static GtkWidget * add_menu_item_new_individual (EmpathyIndividualMenu *self,
|
95 | 106 |
FolksIndividual *individual);
|
96 | |
static GtkWidget * empathy_individiual_block_menu_item_new (
|
97 | |
FolksIndividual *individual);
|
98 | |
static GtkWidget * empathy_individiual_remove_menu_item_new (
|
99 | |
EmpathyIndividualMenu *self);
|
|
107 |
static GtkWidget * block_menu_item_new_individual (FolksIndividual *individual);
|
|
108 |
static GtkWidget * remove_menu_item_new_individual (EmpathyIndividualMenu *self);
|
100 | 109 |
|
101 | 110 |
static void
|
102 | 111 |
individual_menu_add_personas (EmpathyIndividualMenu *self,
|
|
152 | 161 |
FolksPersonaStore *store;
|
153 | 162 |
const gchar *account;
|
154 | 163 |
GtkWidget *action;
|
155 | |
/* Individual containing only persona */
|
156 | |
FolksIndividual *single_individual;
|
157 | 164 |
|
158 | 165 |
if (!empathy_folks_persona_is_interesting (FOLKS_PERSONA (persona)))
|
159 | 166 |
goto while_finish;
|
|
163 | 170 |
goto while_finish;
|
164 | 171 |
|
165 | 172 |
contact = empathy_contact_dup_from_tp_contact (tp_contact);
|
166 | |
single_individual = empathy_ensure_individual_from_tp_contact (
|
167 | |
tp_contact);
|
168 | |
|
169 | |
/* Pretty hacky. Creating single_individual had a side effect to change
|
170 | |
* persona.individual from individual to single_individual which is not
|
171 | |
* what we want so we set it back. See bgo#684971 for details. */
|
172 | |
g_object_set (persona, "individual", individual, NULL);
|
173 | 173 |
|
174 | 174 |
store = folks_persona_get_store (FOLKS_PERSONA (persona));
|
175 | 175 |
account = folks_persona_store_get_display_name (store);
|
|
193 | 193 |
/* Chat */
|
194 | 194 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_CHAT)
|
195 | 195 |
{
|
196 | |
action = empathy_individual_chat_menu_item_new (self,
|
197 | |
single_individual);
|
|
196 |
action = chat_menu_item_new_contact (self, contact);
|
198 | 197 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
199 | 198 |
gtk_widget_show (action);
|
200 | 199 |
}
|
|
202 | 201 |
/* SMS */
|
203 | 202 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_SMS)
|
204 | 203 |
{
|
205 | |
action = empathy_individual_sms_menu_item_new (self,
|
206 | |
single_individual);
|
|
204 |
action = sms_menu_item_new_contact (self, contact);
|
207 | 205 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
208 | 206 |
gtk_widget_show (action);
|
209 | 207 |
}
|
|
211 | 209 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_CALL)
|
212 | 210 |
{
|
213 | 211 |
/* Audio Call */
|
214 | |
action = empathy_individual_audio_call_menu_item_new (
|
215 | |
self, single_individual);
|
|
212 |
action = audio_call_menu_item_new_contact (self, contact);
|
216 | 213 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
217 | 214 |
gtk_widget_show (action);
|
218 | 215 |
|
219 | 216 |
/* Video Call */
|
220 | |
action = empathy_individual_video_call_menu_item_new (
|
221 | |
self, single_individual);
|
|
217 |
action = video_call_menu_item_new_contact (self, contact);
|
222 | 218 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
223 | 219 |
gtk_widget_show (action);
|
224 | 220 |
}
|
|
226 | 222 |
/* Log */
|
227 | 223 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_LOG)
|
228 | 224 |
{
|
229 | |
action = empathy_individual_log_menu_item_new (single_individual);
|
|
225 |
action = log_menu_item_new_contact (contact);
|
230 | 226 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
231 | 227 |
gtk_widget_show (action);
|
232 | 228 |
}
|
233 | 229 |
|
234 | 230 |
/* Invite */
|
235 | |
action = empathy_individual_invite_menu_item_new (NULL, contact);
|
|
231 |
action = invite_menu_item_new (NULL, contact);
|
236 | 232 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
237 | 233 |
gtk_widget_show (action);
|
238 | 234 |
|
239 | 235 |
/* File transfer */
|
240 | 236 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_FILE_TRANSFER)
|
241 | 237 |
{
|
242 | |
action = empathy_individual_file_transfer_menu_item_new (
|
243 | |
self, single_individual);
|
|
238 |
action = file_transfer_menu_item_new_contact (self, contact);
|
244 | 239 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
245 | 240 |
gtk_widget_show (action);
|
246 | 241 |
}
|
247 | 242 |
|
248 | 243 |
/* Share my desktop */
|
249 | |
action = empathy_individual_share_my_desktop_menu_item_new (
|
250 | |
self, single_individual);
|
|
244 |
action = share_my_desktop_menu_item_new_contact (self, contact);
|
251 | 245 |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), action);
|
252 | 246 |
gtk_widget_show (action);
|
253 | 247 |
|
254 | |
/* Block */
|
255 | |
if (features & EMPATHY_INDIVIDUAL_FEATURE_BLOCK &&
|
256 | |
(item = empathy_individiual_block_menu_item_new (single_individual))
|
257 | |
!= NULL) {
|
258 | |
GtkWidget *sep;
|
259 | |
|
260 | |
sep = gtk_separator_menu_item_new ();
|
261 | |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), sep);
|
262 | |
gtk_widget_show (sep);
|
263 | |
|
264 | |
gtk_menu_shell_append (GTK_MENU_SHELL (contact_submenu), item);
|
265 | |
gtk_widget_show (item);
|
266 | |
}
|
267 | |
|
268 | 248 |
gtk_menu_shell_append (GTK_MENU_SHELL (menu), contact_item);
|
269 | 249 |
gtk_widget_show (contact_item);
|
270 | 250 |
|
271 | 251 |
g_free (label);
|
272 | 252 |
g_object_unref (contact);
|
273 | |
g_object_unref (single_individual);
|
274 | 253 |
|
275 | 254 |
while_finish:
|
276 | 255 |
g_clear_object (&persona);
|
|
680 | 659 |
}
|
681 | 660 |
|
682 | 661 |
static GtkWidget *
|
683 | |
empathy_individiual_block_menu_item_new (FolksIndividual *individual)
|
|
662 |
block_menu_item_new_individual (FolksIndividual *individual)
|
684 | 663 |
{
|
685 | 664 |
GtkWidget *item;
|
686 | 665 |
GList *contacts, *l;
|
|
920 | 899 |
}
|
921 | 900 |
|
922 | 901 |
static GtkWidget *
|
923 | |
empathy_individiual_remove_menu_item_new (EmpathyIndividualMenu *self)
|
|
902 |
remove_menu_item_new_individual (EmpathyIndividualMenu *self)
|
924 | 903 |
{
|
925 | 904 |
GeeSet *personas;
|
926 | 905 |
GeeIterator *iter;
|
|
980 | 959 |
/* Add contact */
|
981 | 960 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_ADD_CONTACT)
|
982 | 961 |
{
|
983 | |
item = empathy_individual_add_menu_item_new (self, individual);
|
|
962 |
item = add_menu_item_new_individual (self, individual);
|
984 | 963 |
if (item != NULL)
|
985 | 964 |
{
|
986 | 965 |
gtk_menu_shell_append (GTK_MENU_SHELL (shell), item);
|
|
991 | 970 |
/* Chat */
|
992 | 971 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_CHAT)
|
993 | 972 |
{
|
994 | |
item = empathy_individual_chat_menu_item_new (self, individual);
|
|
973 |
item = chat_menu_item_new_individual (self, individual);
|
995 | 974 |
if (item != NULL)
|
996 | 975 |
{
|
997 | 976 |
gtk_menu_shell_append (shell, item);
|
|
1002 | 981 |
/* SMS */
|
1003 | 982 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_SMS)
|
1004 | 983 |
{
|
1005 | |
item = empathy_individual_sms_menu_item_new (self, individual);
|
|
984 |
item = sms_menu_item_new_individual (self, individual);
|
1006 | 985 |
if (item != NULL)
|
1007 | 986 |
{
|
1008 | 987 |
gtk_menu_shell_append (shell, item);
|
|
1013 | 992 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_CALL)
|
1014 | 993 |
{
|
1015 | 994 |
/* Audio Call */
|
1016 | |
item = empathy_individual_audio_call_menu_item_new (self, individual);
|
|
995 |
item = empathy_individual_audio_call_menu_item_new_individual (self,
|
|
996 |
individual);
|
1017 | 997 |
gtk_menu_shell_append (shell, item);
|
1018 | 998 |
gtk_widget_show (item);
|
1019 | 999 |
|
1020 | 1000 |
/* Video Call */
|
1021 | |
item = empathy_individual_video_call_menu_item_new (self, individual);
|
|
1001 |
item = empathy_individual_video_call_menu_item_new_individual (self,
|
|
1002 |
individual);
|
1022 | 1003 |
gtk_menu_shell_append (shell, item);
|
1023 | 1004 |
gtk_widget_show (item);
|
1024 | 1005 |
}
|
|
1027 | 1008 |
add_phone_numbers (self);
|
1028 | 1009 |
|
1029 | 1010 |
/* Invite */
|
1030 | |
item = empathy_individual_invite_menu_item_new (individual, NULL);
|
|
1011 |
item = invite_menu_item_new (individual, NULL);
|
1031 | 1012 |
gtk_menu_shell_append (shell, item);
|
1032 | 1013 |
gtk_widget_show (item);
|
1033 | 1014 |
|
1034 | 1015 |
/* File transfer */
|
1035 | 1016 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_FILE_TRANSFER)
|
1036 | 1017 |
{
|
1037 | |
item = empathy_individual_file_transfer_menu_item_new (self, individual);
|
|
1018 |
item = file_transfer_menu_item_new_individual (self, individual);
|
1038 | 1019 |
gtk_menu_shell_append (shell, item);
|
1039 | 1020 |
gtk_widget_show (item);
|
1040 | 1021 |
}
|
|
1042 | 1023 |
/* Share my desktop */
|
1043 | 1024 |
/* FIXME we should add the "Share my desktop" menu item if Vino is
|
1044 | 1025 |
a registered handler in MC5 */
|
1045 | |
item = empathy_individual_share_my_desktop_menu_item_new (self, individual);
|
|
1026 |
item = share_my_desktop_menu_item_new_individual (self, individual);
|
1046 | 1027 |
gtk_menu_shell_append (shell, item);
|
1047 | 1028 |
gtk_widget_show (item);
|
1048 | 1029 |
|
|
1063 | 1044 |
/* Edit */
|
1064 | 1045 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_EDIT)
|
1065 | 1046 |
{
|
1066 | |
item = empathy_individual_edit_menu_item_new (individual);
|
|
1047 |
item = edit_menu_item_new_individual (individual);
|
1067 | 1048 |
gtk_menu_shell_append (shell, item);
|
1068 | 1049 |
gtk_widget_show (item);
|
1069 | 1050 |
}
|
|
1071 | 1052 |
/* Log */
|
1072 | 1053 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_LOG)
|
1073 | 1054 |
{
|
1074 | |
item = empathy_individual_log_menu_item_new (individual);
|
|
1055 |
item = log_menu_item_new_individual (individual);
|
1075 | 1056 |
gtk_menu_shell_append (shell, item);
|
1076 | 1057 |
gtk_widget_show (item);
|
1077 | 1058 |
}
|
|
1079 | 1060 |
/* Info */
|
1080 | 1061 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_INFO)
|
1081 | 1062 |
{
|
1082 | |
item = empathy_individual_info_menu_item_new (individual);
|
|
1063 |
item = info_menu_item_new_individual (individual);
|
1083 | 1064 |
gtk_menu_shell_append (shell, item);
|
1084 | 1065 |
gtk_widget_show (item);
|
1085 | 1066 |
}
|
|
1087 | 1068 |
/* Favorite checkbox */
|
1088 | 1069 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_FAVOURITE)
|
1089 | 1070 |
{
|
1090 | |
item = empathy_individual_favourite_menu_item_new (individual);
|
|
1071 |
item = favourite_menu_item_new_individual (individual);
|
1091 | 1072 |
gtk_menu_shell_append (shell, item);
|
1092 | 1073 |
gtk_widget_show (item);
|
1093 | 1074 |
}
|
1094 | 1075 |
|
1095 | 1076 |
/* Separator & Block */
|
1096 | 1077 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_BLOCK &&
|
1097 | |
(item = empathy_individiual_block_menu_item_new (individual)) != NULL) {
|
|
1078 |
(item = block_menu_item_new_individual (individual)) != NULL) {
|
1098 | 1079 |
GtkWidget *sep;
|
1099 | 1080 |
|
1100 | 1081 |
sep = gtk_separator_menu_item_new ();
|
|
1107 | 1088 |
|
1108 | 1089 |
/* Separator & Remove */
|
1109 | 1090 |
if (features & EMPATHY_INDIVIDUAL_FEATURE_REMOVE &&
|
1110 | |
(item = empathy_individiual_remove_menu_item_new (self)) != NULL) {
|
|
1091 |
(item = remove_menu_item_new_individual (self)) != NULL) {
|
1111 | 1092 |
GtkWidget *sep;
|
1112 | 1093 |
|
1113 | 1094 |
sep = gtk_separator_menu_item_new ();
|
|
1361 | 1342 |
}
|
1362 | 1343 |
|
1363 | 1344 |
static GtkWidget *
|
1364 | |
empathy_individual_chat_menu_item_new (EmpathyIndividualMenu *self,
|
1365 | |
FolksIndividual *individual)
|
|
1345 |
chat_menu_item_new (EmpathyIndividualMenu *self)
|
1366 | 1346 |
{
|
1367 | 1347 |
GtkWidget *item;
|
1368 | 1348 |
GtkWidget *image;
|
1369 | |
|
1370 | |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) &&
|
1371 | |
empathy_folks_individual_contains_contact (individual), NULL);
|
1372 | 1349 |
|
1373 | 1350 |
item = gtk_image_menu_item_new_with_mnemonic (_("_Chat"));
|
1374 | 1351 |
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_MESSAGE,
|
|
1377 | 1354 |
gtk_widget_show (image);
|
1378 | 1355 |
|
1379 | 1356 |
g_object_set_data (G_OBJECT (item), "individual-menu", self);
|
|
1357 |
|
|
1358 |
return item;
|
|
1359 |
}
|
|
1360 |
|
|
1361 |
static GtkWidget *
|
|
1362 |
chat_menu_item_new_individual (EmpathyIndividualMenu *self,
|
|
1363 |
FolksIndividual *individual)
|
|
1364 |
{
|
|
1365 |
GtkWidget *item;
|
|
1366 |
|
|
1367 |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) &&
|
|
1368 |
empathy_folks_individual_contains_contact (individual), NULL);
|
|
1369 |
|
|
1370 |
item = chat_menu_item_new (self);
|
|
1371 |
|
1380 | 1372 |
menu_item_set_first_contact (item, individual,
|
|
1373 |
G_CALLBACK (empathy_individual_chat_menu_item_activated),
|
|
1374 |
EMPATHY_ACTION_CHAT);
|
|
1375 |
|
|
1376 |
return item;
|
|
1377 |
}
|
|
1378 |
|
|
1379 |
static GtkWidget *
|
|
1380 |
chat_menu_item_new_contact (EmpathyIndividualMenu *self,
|
|
1381 |
EmpathyContact *contact)
|
|
1382 |
{
|
|
1383 |
GtkWidget *item;
|
|
1384 |
|
|
1385 |
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
|
|
1386 |
|
|
1387 |
item = chat_menu_item_new (self);
|
|
1388 |
|
|
1389 |
menu_item_set_contact (item, contact,
|
1381 | 1390 |
G_CALLBACK (empathy_individual_chat_menu_item_activated),
|
1382 | 1391 |
EMPATHY_ACTION_CHAT);
|
1383 | 1392 |
|
|
1400 | 1409 |
}
|
1401 | 1410 |
|
1402 | 1411 |
static GtkWidget *
|
1403 | |
empathy_individual_sms_menu_item_new (EmpathyIndividualMenu *self,
|
1404 | |
FolksIndividual *individual)
|
|
1412 |
sms_menu_item_new (EmpathyIndividualMenu *self)
|
1405 | 1413 |
{
|
1406 | 1414 |
GtkWidget *item;
|
1407 | 1415 |
GtkWidget *image;
|
1408 | |
|
1409 | |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) &&
|
1410 | |
empathy_folks_individual_contains_contact (individual), NULL);
|
1411 | 1416 |
|
1412 | 1417 |
item = gtk_image_menu_item_new_with_mnemonic (_("_SMS"));
|
1413 | 1418 |
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_SMS,
|
|
1416 | 1421 |
gtk_widget_show (image);
|
1417 | 1422 |
|
1418 | 1423 |
g_object_set_data (G_OBJECT (item), "individual-menu", self);
|
|
1424 |
|
|
1425 |
return item;
|
|
1426 |
}
|
|
1427 |
|
|
1428 |
static GtkWidget *
|
|
1429 |
sms_menu_item_new_individual (EmpathyIndividualMenu *self,
|
|
1430 |
FolksIndividual *individual)
|
|
1431 |
{
|
|
1432 |
GtkWidget *item;
|
|
1433 |
|
|
1434 |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual) &&
|
|
1435 |
empathy_folks_individual_contains_contact (individual), NULL);
|
|
1436 |
|
|
1437 |
item = sms_menu_item_new (self);
|
|
1438 |
|
1419 | 1439 |
menu_item_set_first_contact (item, individual,
|
1420 | 1440 |
G_CALLBACK (empathy_individual_sms_menu_item_activated),
|
1421 | 1441 |
EMPATHY_ACTION_SMS);
|
|
1423 | 1443 |
return item;
|
1424 | 1444 |
}
|
1425 | 1445 |
|
|
1446 |
static GtkWidget *
|
|
1447 |
sms_menu_item_new_contact (EmpathyIndividualMenu *self,
|
|
1448 |
EmpathyContact *contact)
|
|
1449 |
{
|
|
1450 |
GtkWidget *item;
|
|
1451 |
|
|
1452 |
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
|
|
1453 |
|
|
1454 |
item = sms_menu_item_new (self);
|
|
1455 |
|
|
1456 |
menu_item_set_contact (item, contact,
|
|
1457 |
G_CALLBACK (empathy_individual_sms_menu_item_activated),
|
|
1458 |
EMPATHY_ACTION_SMS);
|
|
1459 |
|
|
1460 |
return item;
|
|
1461 |
}
|
|
1462 |
|
|
1463 |
|
1426 | 1464 |
static void
|
1427 | 1465 |
empathy_individual_audio_call_menu_item_activated (GtkMenuItem *item,
|
1428 | 1466 |
EmpathyContact *contact)
|
|
1436 | 1474 |
emit_menu_item_activated (item);
|
1437 | 1475 |
}
|
1438 | 1476 |
|
1439 | |
GtkWidget *
|
1440 | |
empathy_individual_audio_call_menu_item_new (EmpathyIndividualMenu *self,
|
1441 | |
FolksIndividual *individual)
|
|
1477 |
static GtkWidget *
|
|
1478 |
audio_call_menu_item_new (EmpathyIndividualMenu *self)
|
1442 | 1479 |
{
|
1443 | 1480 |
GtkWidget *item;
|
1444 | 1481 |
GtkWidget *image;
|
1445 | |
|
1446 | |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
1447 | 1482 |
|
1448 | 1483 |
item = gtk_image_menu_item_new_with_mnemonic (C_("menu item", "_Audio Call"));
|
1449 | 1484 |
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VOIP, GTK_ICON_SIZE_MENU);
|
|
1451 | 1486 |
gtk_widget_show (image);
|
1452 | 1487 |
|
1453 | 1488 |
g_object_set_data (G_OBJECT (item), "individual-menu", self);
|
|
1489 |
|
|
1490 |
return item;
|
|
1491 |
}
|
|
1492 |
|
|
1493 |
GtkWidget *
|
|
1494 |
empathy_individual_audio_call_menu_item_new_individual (
|
|
1495 |
EmpathyIndividualMenu *self,
|
|
1496 |
FolksIndividual *individual)
|
|
1497 |
{
|
|
1498 |
GtkWidget *item;
|
|
1499 |
|
|
1500 |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
|
1501 |
|
|
1502 |
item = audio_call_menu_item_new (self);
|
|
1503 |
|
1454 | 1504 |
menu_item_set_first_contact (item, individual,
|
1455 | 1505 |
G_CALLBACK (empathy_individual_audio_call_menu_item_activated),
|
1456 | 1506 |
EMPATHY_ACTION_AUDIO_CALL);
|
|
1458 | 1508 |
return item;
|
1459 | 1509 |
}
|
1460 | 1510 |
|
|
1511 |
static GtkWidget *
|
|
1512 |
audio_call_menu_item_new_contact (
|
|
1513 |
EmpathyIndividualMenu *self,
|
|
1514 |
EmpathyContact *contact)
|
|
1515 |
{
|
|
1516 |
GtkWidget *item;
|
|
1517 |
|
|
1518 |
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
|
|
1519 |
|
|
1520 |
item = audio_call_menu_item_new (self);
|
|
1521 |
|
|
1522 |
menu_item_set_contact (item, contact,
|
|
1523 |
G_CALLBACK (empathy_individual_audio_call_menu_item_activated),
|
|
1524 |
EMPATHY_ACTION_AUDIO_CALL);
|
|
1525 |
|
|
1526 |
return item;
|
|
1527 |
}
|
|
1528 |
|
|
1529 |
|
1461 | 1530 |
static void
|
1462 | 1531 |
empathy_individual_video_call_menu_item_activated (GtkMenuItem *item,
|
1463 | 1532 |
EmpathyContact *contact)
|
|
1471 | 1540 |
emit_menu_item_activated (item);
|
1472 | 1541 |
}
|
1473 | 1542 |
|
1474 | |
GtkWidget *
|
1475 | |
empathy_individual_video_call_menu_item_new (EmpathyIndividualMenu *self,
|
1476 | |
FolksIndividual *individual)
|
|
1543 |
static GtkWidget *
|
|
1544 |
video_call_menu_item_new (EmpathyIndividualMenu *self)
|
1477 | 1545 |
{
|
1478 | 1546 |
GtkWidget *item;
|
1479 | 1547 |
GtkWidget *image;
|
1480 | |
TpawCameraMonitor *monitor;
|
1481 | |
|
1482 | |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
1483 | 1548 |
|
1484 | 1549 |
item = gtk_image_menu_item_new_with_mnemonic (C_("menu item", "_Video Call"));
|
1485 | 1550 |
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VIDEO_CALL,
|
|
1488 | 1553 |
gtk_widget_show (image);
|
1489 | 1554 |
|
1490 | 1555 |
g_object_set_data (G_OBJECT (item), "individual-menu", self);
|
1491 | |
menu_item_set_first_contact (item, individual,
|
1492 | |
G_CALLBACK (empathy_individual_video_call_menu_item_activated),
|
1493 | |
EMPATHY_ACTION_VIDEO_CALL);
|
|
1556 |
|
|
1557 |
return item;
|
|
1558 |
}
|
|
1559 |
|
|
1560 |
static void
|
|
1561 |
check_camera_available (GtkWidget *item)
|
|
1562 |
{
|
|
1563 |
TpawCameraMonitor *monitor;
|
1494 | 1564 |
|
1495 | 1565 |
/* Only follow available cameras if the contact can do Video calls */
|
1496 | 1566 |
if (gtk_widget_get_sensitive (item))
|
|
1501 | 1571 |
g_object_bind_property (monitor, "available", item, "sensitive",
|
1502 | 1572 |
G_BINDING_SYNC_CREATE);
|
1503 | 1573 |
}
|
|
1574 |
}
|
|
1575 |
|
|
1576 |
GtkWidget *
|
|
1577 |
empathy_individual_video_call_menu_item_new_individual (
|
|
1578 |
EmpathyIndividualMenu *self,
|
|
1579 |
FolksIndividual *individual)
|
|
1580 |
{
|
|
1581 |
GtkWidget *item;
|
|
1582 |
|
|
1583 |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
|
1584 |
|
|
1585 |
item = video_call_menu_item_new (self);
|
|
1586 |
|
|
1587 |
menu_item_set_first_contact (item, individual,
|
|
1588 |
G_CALLBACK (empathy_individual_video_call_menu_item_activated),
|
|
1589 |
EMPATHY_ACTION_VIDEO_CALL);
|
|
1590 |
|
|
1591 |
check_camera_available (item);
|
|
1592 |
|
|
1593 |
return item;
|
|
1594 |
}
|
|
1595 |
|
|
1596 |
GtkWidget *
|
|
1597 |
video_call_menu_item_new_contact (EmpathyIndividualMenu *self,
|
|
1598 |
EmpathyContact *contact)
|
|
1599 |
{
|
|
1600 |
GtkWidget *item;
|
|
1601 |
|
|
1602 |
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
|
|
1603 |
|
|
1604 |
item = video_call_menu_item_new (self);
|
|
1605 |
|
|
1606 |
menu_item_set_contact (item, contact,
|
|
1607 |
G_CALLBACK (empathy_individual_video_call_menu_item_activated),
|
|
1608 |
EMPATHY_ACTION_VIDEO_CALL);
|
|
1609 |
|
|
1610 |
check_camera_available (item);
|
1504 | 1611 |
|
1505 | 1612 |
return item;
|
1506 | 1613 |
}
|
|
1516 | 1623 |
}
|
1517 | 1624 |
|
1518 | 1625 |
static GtkWidget *
|
1519 | |
empathy_individual_log_menu_item_new (FolksIndividual *individual)
|
|
1626 |
log_menu_item_new (void)
|
1520 | 1627 |
{
|
1521 | 1628 |
GtkWidget *item;
|
1522 | 1629 |
GtkWidget *image;
|
1523 | |
|
1524 | |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
1525 | 1630 |
|
1526 | 1631 |
item = gtk_image_menu_item_new_with_mnemonic (_("_Previous Conversations"));
|
1527 | 1632 |
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_LOG, GTK_ICON_SIZE_MENU);
|
1528 | 1633 |
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
|
1529 | 1634 |
gtk_widget_show (image);
|
1530 | 1635 |
|
|
1636 |
return item;
|
|
1637 |
}
|
|
1638 |
|
|
1639 |
static GtkWidget *
|
|
1640 |
log_menu_item_new_individual (FolksIndividual *individual)
|
|
1641 |
{
|
|
1642 |
GtkWidget *item;
|
|
1643 |
|
|
1644 |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
|
1645 |
|
|
1646 |
item = log_menu_item_new ();
|
|
1647 |
|
1531 | 1648 |
menu_item_set_first_contact (item, individual,
|
1532 | 1649 |
G_CALLBACK (empathy_individual_log_menu_item_activated),
|
1533 | 1650 |
EMPATHY_ACTION_VIEW_LOGS);
|
|
1535 | 1652 |
return item;
|
1536 | 1653 |
}
|
1537 | 1654 |
|
|
1655 |
static GtkWidget *
|
|
1656 |
log_menu_item_new_contact (EmpathyContact *contact)
|
|
1657 |
{
|
|
1658 |
GtkWidget *item;
|
|
1659 |
|
|
1660 |
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
|
|
1661 |
|
|
1662 |
item = log_menu_item_new ();
|
|
1663 |
|
|
1664 |
menu_item_set_contact (item, contact,
|
|
1665 |
G_CALLBACK (empathy_individual_log_menu_item_activated),
|
|
1666 |
EMPATHY_ACTION_VIEW_LOGS);
|
|
1667 |
|
|
1668 |
return item;
|
|
1669 |
}
|
|
1670 |
|
1538 | 1671 |
static void
|
1539 | 1672 |
empathy_individual_file_transfer_menu_item_activated (GtkMenuItem *item,
|
1540 | 1673 |
EmpathyContact *contact)
|
|
1547 | 1680 |
}
|
1548 | 1681 |
|
1549 | 1682 |
static GtkWidget *
|
1550 | |
empathy_individual_file_transfer_menu_item_new (EmpathyIndividualMenu *self,
|
1551 | |
FolksIndividual *individual)
|
|
1683 |
file_transfer_menu_item_new (EmpathyIndividualMenu *self)
|
1552 | 1684 |
{
|
1553 | 1685 |
GtkWidget *item;
|
1554 | 1686 |
GtkWidget *image;
|
1555 | |
|
1556 | |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
1557 | 1687 |
|
1558 | 1688 |
item = gtk_image_menu_item_new_with_mnemonic (_("Send File"));
|
1559 | 1689 |
image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_DOCUMENT_SEND,
|
|
1562 | 1692 |
gtk_widget_show (image);
|
1563 | 1693 |
|
1564 | 1694 |
g_object_set_data (G_OBJECT (item), "individual-menu", self);
|
|
1695 |
|
|
1696 |
return item;
|
|
1697 |
}
|
|
1698 |
|
|
1699 |
static GtkWidget *
|
|
1700 |
file_transfer_menu_item_new_individual (EmpathyIndividualMenu *self,
|
|
1701 |
FolksIndividual *individual)
|
|
1702 |
{
|
|
1703 |
GtkWidget *item;
|
|
1704 |
|
|
1705 |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
|
1706 |
|
|
1707 |
item = file_transfer_menu_item_new (self);
|
|
1708 |
|
1565 | 1709 |
menu_item_set_first_contact (item, individual,
|
1566 | 1710 |
G_CALLBACK (empathy_individual_file_transfer_menu_item_activated),
|
1567 | 1711 |
EMPATHY_ACTION_SEND_FILE);
|
|
1569 | 1713 |
return item;
|
1570 | 1714 |
}
|
1571 | 1715 |
|
|
1716 |
static GtkWidget *
|
|
1717 |
file_transfer_menu_item_new_contact (EmpathyIndividualMenu *self,
|
|
1718 |
EmpathyContact *contact)
|
|
1719 |
{
|
|
1720 |
GtkWidget *item;
|
|
1721 |
|
|
1722 |
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
|
|
1723 |
|
|
1724 |
item = file_transfer_menu_item_new (self);
|
|
1725 |
|
|
1726 |
menu_item_set_contact (item, contact,
|
|
1727 |
G_CALLBACK (empathy_individual_file_transfer_menu_item_activated),
|
|
1728 |
EMPATHY_ACTION_SEND_FILE);
|
|
1729 |
|
|
1730 |
return item;
|
|
1731 |
}
|
|
1732 |
|
1572 | 1733 |
static void
|
1573 | 1734 |
empathy_individual_share_my_desktop_menu_item_activated (GtkMenuItem *item,
|
1574 | 1735 |
EmpathyContact *contact)
|
|
1581 | 1742 |
}
|
1582 | 1743 |
|
1583 | 1744 |
static GtkWidget *
|
1584 | |
empathy_individual_share_my_desktop_menu_item_new (EmpathyIndividualMenu *self,
|
1585 | |
FolksIndividual *individual)
|
|
1745 |
share_my_desktop_menu_item_new (EmpathyIndividualMenu *self)
|
1586 | 1746 |
{
|
1587 | 1747 |
GtkWidget *item;
|
1588 | 1748 |
GtkWidget *image;
|
1589 | |
|
1590 | |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
1591 | 1749 |
|
1592 | 1750 |
item = gtk_image_menu_item_new_with_mnemonic (_("Share My Desktop"));
|
1593 | 1751 |
image = gtk_image_new_from_icon_name (GTK_STOCK_NETWORK, GTK_ICON_SIZE_MENU);
|
|
1595 | 1753 |
gtk_widget_show (image);
|
1596 | 1754 |
|
1597 | 1755 |
g_object_set_data (G_OBJECT (item), "individual-menu", self);
|
|
1756 |
|
|
1757 |
return item;
|
|
1758 |
}
|
|
1759 |
|
|
1760 |
static GtkWidget *
|
|
1761 |
share_my_desktop_menu_item_new_individual (EmpathyIndividualMenu *self,
|
|
1762 |
FolksIndividual *individual)
|
|
1763 |
{
|
|
1764 |
GtkWidget *item;
|
|
1765 |
|
|
1766 |
g_return_val_if_fail (FOLKS_IS_INDIVIDUAL (individual), NULL);
|
|
1767 |
|
|
1768 |
item = share_my_desktop_menu_item_new (self);
|
|
1769 |
|
1598 | 1770 |
menu_item_set_first_contact (item, individual,
|
1599 | 1771 |
G_CALLBACK (empathy_individual_share_my_desktop_menu_item_activated),
|
1600 | 1772 |
EMPATHY_ACTION_SHARE_MY_DESKTOP);
|
|
1602 | 1774 |
return item;
|
1603 | 1775 |
}
|
1604 | 1776 |
|
|
1777 |
static GtkWidget *
|
|
1778 |
share_my_desktop_menu_item_new_contact (EmpathyIndividualMenu *self,
|
|
1779 |
EmpathyContact *contact)
|
|
1780 |
{
|
|
1781 |
GtkWidget *item;
|
|
1782 |
|
|
1783 |
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
|
|
1784 |
|
|
1785 |
item = share_my_desktop_menu_item_new (self);
|
|
1786 |
|
|
1787 |
menu_item_set_contact (item, contact,
|
|
1788 |
G_CALLBACK (empathy_individual_share_my_desktop_menu_item_activated),
|
|
1789 |
EMPATHY_ACTION_SHARE_MY_DESKTOP);
|
|
1790 |
|
|
1791 |
return item;
|
|
1792 |
}
|
|
1793 |
|
1605 | 1794 |
static void
|
1606 | 1795 |
favourite_menu_item_toggled_cb (GtkCheckMenuItem *item,
|
1607 | 1796 |
FolksIndividual *individual)
|
|
1612 | 1801 |
}
|
1613 | 1802 |
|
1614 | 1803 |
static GtkWidget *
|
1615 | |
empathy_individual_favourite_menu_item_new (FolksIndividual *individual)
|
|
1804 |
favourite_menu_item_new_individual (FolksIndividual *individual)
|
1616 | 1805 |
{
|
1617 | 1806 |
GtkWidget *item;
|
1618 | 1807 |
|
|
1636 | 1825 |
}
|
1637 | 1826 |
|
1638 | 1827 |
static GtkWidget *
|
1639 | |
empathy_individual_info_menu_item_new (FolksIndividual *individual)
|
|
1828 |
info_menu_item_new_individual (FolksIndividual *individual)
|
1640 | 1829 |
{
|
1641 | 1830 |
GtkWidget *item;
|
1642 | 1831 |
GtkWidget *image;
|
|
1665 | 1854 |
}
|
1666 | 1855 |
|
1667 | 1856 |
static GtkWidget *
|
1668 | |
empathy_individual_edit_menu_item_new (FolksIndividual *individual)
|
|
1857 |
edit_menu_item_new_individual (FolksIndividual *individual)
|
1669 | 1858 |
{
|
1670 | 1859 |
EmpathyIndividualManager *manager;
|
1671 | 1860 |
GtkWidget *item;
|
|
1834 | 2023 |
}
|
1835 | 2024 |
|
1836 | 2025 |
static GtkWidget *
|
1837 | |
empathy_individual_invite_menu_item_new (FolksIndividual *individual,
|
|
2026 |
invite_menu_item_new (FolksIndividual *individual,
|
1838 | 2027 |
EmpathyContact *contact)
|
1839 | 2028 |
{
|
1840 | 2029 |
GtkWidget *item;
|
|
1976 | 2165 |
}
|
1977 | 2166 |
|
1978 | 2167 |
static GtkWidget *
|
1979 | |
empathy_individual_add_menu_item_new (EmpathyIndividualMenu *self,
|
|
2168 |
add_menu_item_new_individual (EmpathyIndividualMenu *self,
|
1980 | 2169 |
FolksIndividual *individual)
|
1981 | 2170 |
{
|
1982 | 2171 |
EmpathyIndividualMenuPriv *priv = GET_PRIV (self);
|