aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/event.c6
-rw-r--r--src/file.c14
-rw-r--r--src/ui/chat.c75
-rw-r--r--src/ui/chat.h10
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}
diff --git a/src/file.c b/src/file.c
index a9c64d7..7cb5fd9 100644
--- a/src/file.c
+++ b/src/file.c
@@ -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
81void 93void
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
145static void 145static void
146handle_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
171static void
172handle_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
180static void
146handle_attach_file_button_click(GtkButton *button, 181handle_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
675void 748void
676ui_chat_add_message(UI_CHAT_Handle *handle, 749ui_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
689void 763void
690ui_chat_remove_message(UI_CHAT_Handle *handle, 764ui_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
92void 100void
93ui_chat_add_message(UI_CHAT_Handle *handle, 101ui_chat_add_message(UI_CHAT_Handle *handle,
102 MESSENGER_Application *app,
94 UI_MESSAGE_Handle *message); 103 UI_MESSAGE_Handle *message);
95 104
96void 105void
97ui_chat_remove_message(UI_CHAT_Handle *handle, 106ui_chat_remove_message(UI_CHAT_Handle *handle,
107 MESSENGER_Application *app,
98 UI_MESSAGE_Handle *message); 108 UI_MESSAGE_Handle *message);
99 109
100void 110void