diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/event.c | 6 | ||||
-rw-r--r-- | src/file.c | 14 | ||||
-rw-r--r-- | src/ui/chat.c | 75 | ||||
-rw-r--r-- | src/ui/chat.h | 10 |
4 files changed, 101 insertions, 4 deletions
diff --git a/src/event.c b/src/event.c index d80e563..a12bfef 100644 --- a/src/event.c +++ b/src/event.c | |||
@@ -269,7 +269,7 @@ event_joining_contact(MESSENGER_Application *app, | |||
269 | gtk_label_set_text(message->text_label, join_message); | 269 | gtk_label_set_text(message->text_label, join_message); |
270 | gtk_label_set_text(message->timestamp_label, time? time : ""); | 270 | gtk_label_set_text(message->timestamp_label, time? time : ""); |
271 | 271 | ||
272 | ui_chat_add_message(handle->chat, message); | 272 | ui_chat_add_message(handle->chat, app, message); |
273 | ui_chat_entry_update(handle, app, context); | 273 | ui_chat_entry_update(handle, app, context); |
274 | } | 274 | } |
275 | 275 | ||
@@ -353,7 +353,7 @@ event_invitation(MESSENGER_Application *app, | |||
353 | gtk_widget_show(GTK_WIDGET(message->deny_button)); | 353 | gtk_widget_show(GTK_WIDGET(message->deny_button)); |
354 | gtk_widget_show(GTK_WIDGET(message->accept_button)); | 354 | gtk_widget_show(GTK_WIDGET(message->accept_button)); |
355 | 355 | ||
356 | ui_chat_add_message(handle->chat, message); | 356 | ui_chat_add_message(handle->chat, app, message); |
357 | ui_chat_entry_update(handle, app, context); | 357 | ui_chat_entry_update(handle, app, context); |
358 | } | 358 | } |
359 | 359 | ||
@@ -412,6 +412,6 @@ event_receive_message(MESSENGER_Application *app, | |||
412 | gtk_label_set_text(message->text_label, text? text : ""); | 412 | gtk_label_set_text(message->text_label, text? text : ""); |
413 | gtk_label_set_text(message->timestamp_label, time? time : ""); | 413 | gtk_label_set_text(message->timestamp_label, time? time : ""); |
414 | 414 | ||
415 | ui_chat_add_message(handle->chat, message); | 415 | ui_chat_add_message(handle->chat, app, message); |
416 | ui_chat_entry_update(handle, app, context); | 416 | ui_chat_entry_update(handle, app, context); |
417 | } | 417 | } |
@@ -75,7 +75,19 @@ file_update_upload_info(const struct GNUNET_CHAT_File *file, | |||
75 | if (!info) | 75 | if (!info) |
76 | return; | 76 | return; |
77 | 77 | ||
78 | // TODO | 78 | GList *list = info->file_messages; |
79 | |||
80 | while (list) | ||
81 | { | ||
82 | UI_MESSAGE_Handle *message = (UI_MESSAGE_Handle*) list->data; | ||
83 | |||
84 | gtk_progress_bar_set_fraction( | ||
85 | message->file_progress_bar, | ||
86 | 1.0 * completed / size | ||
87 | ); | ||
88 | |||
89 | list = list->next; | ||
90 | } | ||
79 | } | 91 | } |
80 | 92 | ||
81 | void | 93 | void |
diff --git a/src/ui/chat.c b/src/ui/chat.c index 0039a5d..eefb7cf 100644 --- a/src/ui/chat.c +++ b/src/ui/chat.c | |||
@@ -143,6 +143,41 @@ handle_back_button_click(UNUSED GtkButton *button, | |||
143 | } | 143 | } |
144 | 144 | ||
145 | static void | 145 | static void |
146 | handle_chat_messages_selected_rows_changed(GtkListBox *listbox, | ||
147 | gpointer user_data) | ||
148 | { | ||
149 | UI_CHAT_Handle *handle = (UI_CHAT_Handle*) user_data; | ||
150 | |||
151 | GList *selected = gtk_list_box_get_selected_rows(listbox); | ||
152 | uint32_t count = 0; | ||
153 | |||
154 | while (selected) | ||
155 | { | ||
156 | count++; | ||
157 | selected = selected->next; | ||
158 | } | ||
159 | |||
160 | GString *counter = g_string_new(""); | ||
161 | g_string_append_printf(counter, "%u", count); | ||
162 | gtk_label_set_text(handle->selection_count_label, counter->str); | ||
163 | g_string_free(counter, TRUE); | ||
164 | |||
165 | if (count > 0) | ||
166 | gtk_stack_set_visible_child(handle->chat_title_stack, handle->selection_box); | ||
167 | else | ||
168 | gtk_stack_set_visible_child(handle->chat_title_stack, handle->title_box); | ||
169 | } | ||
170 | |||
171 | static void | ||
172 | handle_chat_selection_close_button_click(UNUSED GtkButton *button, | ||
173 | gpointer user_data) | ||
174 | { | ||
175 | GtkListBox *listbox = GTK_LIST_BOX(user_data); | ||
176 | |||
177 | gtk_list_box_unselect_all(listbox); | ||
178 | } | ||
179 | |||
180 | static void | ||
146 | handle_attach_file_button_click(GtkButton *button, | 181 | handle_attach_file_button_click(GtkButton *button, |
147 | gpointer user_data) | 182 | gpointer user_data) |
148 | { | 183 | { |
@@ -326,6 +361,18 @@ ui_chat_new(MESSENGER_Application *app) | |||
326 | gtk_builder_get_object(handle->builder, "flap_chat_details") | 361 | gtk_builder_get_object(handle->builder, "flap_chat_details") |
327 | ); | 362 | ); |
328 | 363 | ||
364 | handle->chat_title_stack = GTK_STACK( | ||
365 | gtk_builder_get_object(handle->builder, "chat_title_stack") | ||
366 | ); | ||
367 | |||
368 | handle->title_box = GTK_WIDGET( | ||
369 | gtk_builder_get_object(handle->builder, "title_box") | ||
370 | ); | ||
371 | |||
372 | handle->selection_box = GTK_WIDGET( | ||
373 | gtk_builder_get_object(handle->builder, "selection_box") | ||
374 | ); | ||
375 | |||
329 | handle->chat_title = GTK_LABEL( | 376 | handle->chat_title = GTK_LABEL( |
330 | gtk_builder_get_object(handle->builder, "chat_title") | 377 | gtk_builder_get_object(handle->builder, "chat_title") |
331 | ); | 378 | ); |
@@ -383,6 +430,18 @@ ui_chat_new(MESSENGER_Application *app) | |||
383 | gtk_builder_get_object(handle->builder, "chat_details_contacts_box") | 430 | gtk_builder_get_object(handle->builder, "chat_details_contacts_box") |
384 | ); | 431 | ); |
385 | 432 | ||
433 | handle->selection_close_button = GTK_BUTTON( | ||
434 | gtk_builder_get_object(handle->builder, "selection_close_button") | ||
435 | ); | ||
436 | |||
437 | handle->selection_count_label = GTK_LABEL( | ||
438 | gtk_builder_get_object(handle->builder, "selection_count_label") | ||
439 | ); | ||
440 | |||
441 | handle->selection_delete_button = GTK_BUTTON( | ||
442 | gtk_builder_get_object(handle->builder, "selection_delete_button") | ||
443 | ); | ||
444 | |||
386 | handle->chat_scrolled_window = GTK_SCROLLED_WINDOW( | 445 | handle->chat_scrolled_window = GTK_SCROLLED_WINDOW( |
387 | gtk_builder_get_object(handle->builder, "chat_scrolled_window") | 446 | gtk_builder_get_object(handle->builder, "chat_scrolled_window") |
388 | ); | 447 | ); |
@@ -404,6 +463,20 @@ ui_chat_new(MESSENGER_Application *app) | |||
404 | 463 | ||
405 | g_signal_connect( | 464 | g_signal_connect( |
406 | handle->messages_listbox, | 465 | handle->messages_listbox, |
466 | "selected-rows-changed", | ||
467 | G_CALLBACK(handle_chat_messages_selected_rows_changed), | ||
468 | handle | ||
469 | ); | ||
470 | |||
471 | g_signal_connect( | ||
472 | handle->selection_close_button, | ||
473 | "clicked", | ||
474 | G_CALLBACK(handle_chat_selection_close_button_click), | ||
475 | handle->messages_listbox | ||
476 | ); | ||
477 | |||
478 | g_signal_connect( | ||
479 | handle->messages_listbox, | ||
407 | "size-allocate", | 480 | "size-allocate", |
408 | G_CALLBACK(handle_chat_messages_listbox_size_allocate), | 481 | G_CALLBACK(handle_chat_messages_listbox_size_allocate), |
409 | handle | 482 | handle |
@@ -674,6 +747,7 @@ ui_chat_delete(UI_CHAT_Handle *handle) | |||
674 | 747 | ||
675 | void | 748 | void |
676 | ui_chat_add_message(UI_CHAT_Handle *handle, | 749 | ui_chat_add_message(UI_CHAT_Handle *handle, |
750 | GNUNET_UNUSED MESSENGER_Application *app, | ||
677 | UI_MESSAGE_Handle *message) | 751 | UI_MESSAGE_Handle *message) |
678 | { | 752 | { |
679 | GNUNET_assert((handle) && (message)); | 753 | GNUNET_assert((handle) && (message)); |
@@ -688,6 +762,7 @@ ui_chat_add_message(UI_CHAT_Handle *handle, | |||
688 | 762 | ||
689 | void | 763 | void |
690 | ui_chat_remove_message(UI_CHAT_Handle *handle, | 764 | ui_chat_remove_message(UI_CHAT_Handle *handle, |
765 | GNUNET_UNUSED MESSENGER_Application *app, | ||
691 | UI_MESSAGE_Handle *message) | 766 | UI_MESSAGE_Handle *message) |
692 | { | 767 | { |
693 | GNUNET_assert((handle) && (message)); | 768 | GNUNET_assert((handle) && (message)); |
diff --git a/src/ui/chat.h b/src/ui/chat.h index 6ce6064..8b38db8 100644 --- a/src/ui/chat.h +++ b/src/ui/chat.h | |||
@@ -50,6 +50,10 @@ typedef struct UI_CHAT_Handle | |||
50 | 50 | ||
51 | HdyFlap *flap_chat_details; | 51 | HdyFlap *flap_chat_details; |
52 | 52 | ||
53 | GtkStack *chat_title_stack; | ||
54 | GtkWidget *title_box; | ||
55 | GtkWidget *selection_box; | ||
56 | |||
53 | GtkLabel *chat_title; | 57 | GtkLabel *chat_title; |
54 | GtkLabel *chat_subtitle; | 58 | GtkLabel *chat_subtitle; |
55 | 59 | ||
@@ -62,6 +66,10 @@ typedef struct UI_CHAT_Handle | |||
62 | GtkButton *hide_chat_details_button; | 66 | GtkButton *hide_chat_details_button; |
63 | GtkBox *chat_details_contacts_box; | 67 | GtkBox *chat_details_contacts_box; |
64 | 68 | ||
69 | GtkButton *selection_close_button; | ||
70 | GtkLabel *selection_count_label; | ||
71 | GtkButton *selection_delete_button; | ||
72 | |||
65 | GtkScrolledWindow *chat_scrolled_window; | 73 | GtkScrolledWindow *chat_scrolled_window; |
66 | 74 | ||
67 | GtkListBox *chat_contacts_listbox; | 75 | GtkListBox *chat_contacts_listbox; |
@@ -91,10 +99,12 @@ ui_chat_delete(UI_CHAT_Handle *handle); | |||
91 | 99 | ||
92 | void | 100 | void |
93 | ui_chat_add_message(UI_CHAT_Handle *handle, | 101 | ui_chat_add_message(UI_CHAT_Handle *handle, |
102 | MESSENGER_Application *app, | ||
94 | UI_MESSAGE_Handle *message); | 103 | UI_MESSAGE_Handle *message); |
95 | 104 | ||
96 | void | 105 | void |
97 | ui_chat_remove_message(UI_CHAT_Handle *handle, | 106 | ui_chat_remove_message(UI_CHAT_Handle *handle, |
107 | MESSENGER_Application *app, | ||
98 | UI_MESSAGE_Handle *message); | 108 | UI_MESSAGE_Handle *message); |
99 | 109 | ||
100 | void | 110 | void |