aboutsummaryrefslogtreecommitdiff
path: root/src/ui/messages.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/messages.c')
-rw-r--r--src/ui/messages.c59
1 files changed, 55 insertions, 4 deletions
diff --git a/src/ui/messages.c b/src/ui/messages.c
index 26df838..1194f5b 100644
--- a/src/ui/messages.c
+++ b/src/ui/messages.c
@@ -39,6 +39,38 @@ _messages_iterate(UI_MESSAGES_Handle *messages,
39 messages->selected = message; 39 messages->selected = message;
40} 40}
41 41
42
43
44void
45_messages_handle_message(UI_MESSAGES_Handle *messages)
46{
47 switch (GNUNET_CHAT_message_get_kind(messages->selected))
48 {
49 case GNUNET_CHAT_KIND_INVITATION:
50 {
51 struct GNUNET_CHAT_Invitation *invitation = (
52 GNUNET_CHAT_message_get_invitation(messages->selected)
53 );
54
55 if (invitation)
56 GNUNET_CHAT_invitation_accept(invitation);
57 break;
58 }
59 case GNUNET_CHAT_KIND_FILE:
60 {
61 struct GNUNET_CHAT_File *file = GNUNET_CHAT_message_get_file(
62 messages->selected
63 );
64
65 if ((file) && (GNUNET_YES != GNUNET_CHAT_file_is_downloading(file)))
66 GNUNET_CHAT_file_start_download(file, NULL, NULL);
67 break;
68 default:
69 break;
70 }
71 }
72}
73
42void 74void
43messages_event(UI_MESSAGES_Handle *messages, 75messages_event(UI_MESSAGES_Handle *messages,
44 MESSENGER_Application *app, 76 MESSENGER_Application *app,
@@ -94,7 +126,9 @@ messages_event(UI_MESSAGES_Handle *messages,
94 case '\n': 126 case '\n':
95 case KEY_ENTER: 127 case KEY_ENTER:
96 { 128 {
97 if ((!(messages->selected)) && (messages->text_len > 0)) 129 if (messages->selected)
130 _messages_handle_message(messages);
131 else if (messages->text_len > 0)
98 { 132 {
99 GNUNET_CHAT_context_send_text(app->chat.context, messages->text); 133 GNUNET_CHAT_context_send_text(app->chat.context, messages->text);
100 messages->text_len = 0; 134 messages->text_len = 0;
@@ -199,6 +233,8 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
199 const char *name = sender? GNUNET_CHAT_contact_get_name(sender) : NULL; 233 const char *name = sender? GNUNET_CHAT_contact_get_name(sender) : NULL;
200 const char *text = GNUNET_CHAT_message_get_text(message); 234 const char *text = GNUNET_CHAT_message_get_text(message);
201 235
236 const struct GNUNET_CHAT_File *file = GNUNET_CHAT_message_get_file(message);
237
202 struct GNUNET_TIME_Absolute abs_time = GNUNET_CHAT_message_get_timestamp( 238 struct GNUNET_TIME_Absolute abs_time = GNUNET_CHAT_message_get_timestamp(
203 message 239 message
204 ); 240 );
@@ -246,14 +282,29 @@ _messages_iterate_print(UI_MESSAGES_Handle *messages,
246 ); 282 );
247 break; 283 break;
248 case GNUNET_CHAT_KIND_TEXT: 284 case GNUNET_CHAT_KIND_TEXT:
249 case GNUNET_CHAT_KIND_FILE:
250 wprintw( 285 wprintw(
251 messages->window, 286 messages->window,
252 "%s: %s", 287 "%s: %s",
288 name,
289 text
290 );
291 break;
292 case GNUNET_CHAT_KIND_FILE: {
293 const char *filename = GNUNET_CHAT_file_get_name(file);
294
295 const uint64_t localsize = GNUNET_CHAT_file_get_local_size(file);
296 const uint64_t filesize = GNUNET_CHAT_file_get_size(file);
297
298 wprintw(
299 messages->window,
300 "%s shares the file '%s' (%lu / %lu) with you.",
253 name, 301 name,
254 text 302 filename,
303 localsize,
304 filesize
255 ); 305 );
256 break; 306 break;
307 }
257 default: 308 default:
258 wprintw( 309 wprintw(
259 messages->window, 310 messages->window,