messenger-gtk

Gtk+3 graphical user interfaces for GNUnet Messenger
Log | Files | Refs | Submodules | README | LICENSE

commit 63a308fddb8a669ba0c1cb04c287aeb697bcb9ba
parent d4f49fede08a33dcc8f0ed6d0b0b06c63072b94d
Author: Jacki <jacki@thejackimonster.de>
Date:   Sun, 11 Feb 2024 22:51:48 +0100

Update contact on tag message

Signed-off-by: Jacki <jacki@thejackimonster.de>

Diffstat:
Msrc/event.c | 13++++++++++++-
Msrc/ui/contact_info.c | 255+++++++++++++++++++++++++++++++++++++++----------------------------------------
2 files changed, 139 insertions(+), 129 deletions(-)

diff --git a/src/event.c b/src/event.c @@ -744,6 +744,17 @@ event_tag_message(MESSENGER_Application *app, { UI_CHAT_ENTRY_Handle *handle = GNUNET_CHAT_context_get_user_pointer(context); + const struct GNUNET_CHAT_Message *target = GNUNET_CHAT_message_get_target(msg); + + if (target) + { + const struct GNUNET_CHAT_Contact *contact; + contact = GNUNET_CHAT_message_get_sender(target); + + if (contact) + contact_update_info(contact); + } + if ((!handle) || (!(handle->chat))) return; @@ -753,7 +764,7 @@ event_tag_message(MESSENGER_Application *app, { UI_MESSAGE_Handle *message = (UI_MESSAGE_Handle*) (messages->data); - if ((message) && (message->msg == GNUNET_CHAT_message_get_target(msg))) + if ((message) && (message->msg == target)) { ui_message_update(message, app, message->msg); break; diff --git a/src/ui/contact_info.c b/src/ui/contact_info.c @@ -32,19 +32,19 @@ static void handle_contact_edit_button_click(UNUSED GtkButton *button, - gpointer user_data) + gpointer user_data) { UI_CONTACT_INFO_Handle *handle = (UI_CONTACT_INFO_Handle*) user_data; gboolean editable = gtk_widget_is_sensitive( - GTK_WIDGET(handle->contact_name_entry) + GTK_WIDGET(handle->contact_name_entry) ); struct GNUNET_CHAT_Contact *contact = (struct GNUNET_CHAT_Contact*) ( - g_object_get_qdata( - G_OBJECT(handle->contact_name_entry), - handle->app->quarks.data - ) + g_object_get_qdata( + G_OBJECT(handle->contact_name_entry), + handle->app->quarks.data + ) ); if ((!editable) || (!contact)) @@ -57,8 +57,7 @@ handle_contact_edit_button_click(UNUSED GtkButton *button, if (GNUNET_YES == GNUNET_CHAT_contact_is_owned(contact)) { - if (GNUNET_YES != GNUNET_CHAT_set_name(handle->app->chat.messenger.handle, - name)) + if (GNUNET_YES != GNUNET_CHAT_set_name(handle->app->chat.messenger.handle, name)) gtk_entry_set_text( handle->contact_name_entry, GNUNET_CHAT_contact_get_name(contact) @@ -69,16 +68,16 @@ handle_contact_edit_button_click(UNUSED GtkButton *button, skip_change_name: gtk_image_set_from_icon_name( - handle->contact_edit_symbol, - editable? - "document-edit-symbolic" : - "emblem-ok-symbolic", - GTK_ICON_SIZE_BUTTON + handle->contact_edit_symbol, + editable? + "document-edit-symbolic" : + "emblem-ok-symbolic", + GTK_ICON_SIZE_BUTTON ); gtk_widget_set_sensitive( - GTK_WIDGET(handle->contact_name_entry), - !editable + GTK_WIDGET(handle->contact_name_entry), + !editable ); } @@ -97,8 +96,8 @@ _contact_info_reveal_identity(UI_CONTACT_INFO_Handle *handle) gtk_widget_set_visible(GTK_WIDGET(handle->back_button), TRUE); gtk_stack_set_visible_child( - handle->contact_info_stack, - handle->identity_box + handle->contact_info_stack, + handle->identity_box ); } @@ -128,8 +127,8 @@ handle_block_button_click(UNUSED GtkButton *button, GNUNET_CHAT_contact_set_blocked(contact, GNUNET_YES); gtk_stack_set_visible_child( - handle->block_stack, - GTK_WIDGET(handle->unblock_button) + handle->block_stack, + GTK_WIDGET(handle->unblock_button) ); } @@ -152,8 +151,8 @@ handle_unblock_button_click(UNUSED GtkButton *button, GNUNET_CHAT_contact_set_blocked(contact, GNUNET_NO); gtk_stack_set_visible_child( - handle->block_stack, - GTK_WIDGET(handle->block_button) + handle->block_stack, + GTK_WIDGET(handle->block_button) ); } @@ -174,7 +173,7 @@ handle_open_chat_button_click(UNUSED GtkButton *button, return; struct GNUNET_CHAT_Context *context = GNUNET_CHAT_contact_get_context( - contact + contact ); if (!context) @@ -192,7 +191,7 @@ handle_open_chat_button_click(UNUSED GtkButton *button, return; GtkListBoxRow *row = GTK_LIST_BOX_ROW( - gtk_widget_get_parent(entry->entry_box) + gtk_widget_get_parent(entry->entry_box) ); if (!row) @@ -216,8 +215,8 @@ handle_back_button_click(UNUSED GtkButton *button, gtk_widget_set_visible(GTK_WIDGET(handle->back_button), FALSE); gtk_stack_set_visible_child( - handle->contact_info_stack, - handle->details_box + handle->contact_info_stack, + handle->details_box ); } @@ -269,24 +268,24 @@ handle_id_drawing_area_draw(GtkWidget* drawing_area, guchar value; if ((x >= m) && (y >= m) && (x - m < w) && (y - m < w)) - value = ((handle->qr->data[(y - m) * w + x - m]) & 1); + value = ((handle->qr->data[(y - m) * w + x - m]) & 1); else - value = 0; + value = 0; for (z = 0; z < 3; z++) - pixels[(y * w2 + x) * 3 + z] = value? 0x00 : 0xff; + pixels[(y * w2 + x) * 3 + z] = value? 0x00 : 0xff; } GdkPixbuf *image = gdk_pixbuf_new_from_data( - pixels, - GDK_COLORSPACE_RGB, - FALSE, - 8, - w2, - w2, - w2 * 3, - NULL, - NULL + pixels, + GDK_COLORSPACE_RGB, + FALSE, + 8, + w2, + w2, + w2 * 3, + NULL, + NULL ); if (!image) @@ -307,15 +306,15 @@ handle_id_drawing_area_draw(GtkWidget* drawing_area, double dy = (height - dheight) * 0.5; const int interp_type = (ratio >= 1.0? - GDK_INTERP_NEAREST : - GDK_INTERP_BILINEAR + GDK_INTERP_NEAREST : + GDK_INTERP_BILINEAR ); GdkPixbuf* scaled = gdk_pixbuf_scale_simple( - image, - dwidth, - dheight, - interp_type + image, + dwidth, + dheight, + interp_type ); gtk_render_icon(context, cairo, scaled, dx, dy); @@ -337,154 +336,154 @@ ui_contact_info_dialog_init(MESSENGER_Application *app, handle->app = app; handle->builder = gtk_builder_new_from_resource( - application_get_resource_path(app, "ui/contact_info.ui") + application_get_resource_path(app, "ui/contact_info.ui") ); handle->dialog = GTK_DIALOG( - gtk_builder_get_object(handle->builder, "contact_info_dialog") + gtk_builder_get_object(handle->builder, "contact_info_dialog") ); gtk_window_set_transient_for( - GTK_WINDOW(handle->dialog), - GTK_WINDOW(app->ui.messenger.main_window) + GTK_WINDOW(handle->dialog), + GTK_WINDOW(app->ui.messenger.main_window) ); handle->contact_info_stack = GTK_STACK( - gtk_builder_get_object(handle->builder, "contact_info_stack") + gtk_builder_get_object(handle->builder, "contact_info_stack") ); handle->details_box = GTK_WIDGET( - gtk_builder_get_object(handle->builder, "details_box") + gtk_builder_get_object(handle->builder, "details_box") ); handle->contact_avatar = HDY_AVATAR( - gtk_builder_get_object(handle->builder, "contact_avatar") + gtk_builder_get_object(handle->builder, "contact_avatar") ); handle->contact_name_entry = GTK_ENTRY( - gtk_builder_get_object(handle->builder, "contact_name") + gtk_builder_get_object(handle->builder, "contact_name") ); handle->contact_edit_button = GTK_BUTTON( - gtk_builder_get_object(handle->builder, "contact_edit_button") + gtk_builder_get_object(handle->builder, "contact_edit_button") ); handle->contact_edit_symbol = GTK_IMAGE( - gtk_builder_get_object(handle->builder, "contact_edit_symbol") + gtk_builder_get_object(handle->builder, "contact_edit_symbol") ); g_signal_connect( - handle->contact_name_entry, - "activate", - G_CALLBACK(handle_contact_name_entry_activate), - handle + handle->contact_name_entry, + "activate", + G_CALLBACK(handle_contact_name_entry_activate), + handle ); g_signal_connect( - handle->contact_edit_button, - "clicked", - G_CALLBACK(handle_contact_edit_button_click), - handle + handle->contact_edit_button, + "clicked", + G_CALLBACK(handle_contact_edit_button_click), + handle ); handle->reveal_identity_button = GTK_BUTTON( - gtk_builder_get_object(handle->builder, "reveal_identity_button") + gtk_builder_get_object(handle->builder, "reveal_identity_button") ); g_signal_connect( - handle->reveal_identity_button, - "clicked", - G_CALLBACK(handle_reveal_identity_button_click), - handle + handle->reveal_identity_button, + "clicked", + G_CALLBACK(handle_reveal_identity_button_click), + handle ); handle->block_stack = GTK_STACK( - gtk_builder_get_object(handle->builder, "block_stack") + gtk_builder_get_object(handle->builder, "block_stack") ); handle->block_button = GTK_BUTTON( - gtk_builder_get_object(handle->builder, "block_button") + gtk_builder_get_object(handle->builder, "block_button") ); g_signal_connect( - handle->block_button, - "clicked", - G_CALLBACK(handle_block_button_click), - handle + handle->block_button, + "clicked", + G_CALLBACK(handle_block_button_click), + handle ); handle->unblock_button = GTK_BUTTON( - gtk_builder_get_object(handle->builder, "unblock_button") + gtk_builder_get_object(handle->builder, "unblock_button") ); g_signal_connect( - handle->unblock_button, - "clicked", - G_CALLBACK(handle_unblock_button_click), - handle + handle->unblock_button, + "clicked", + G_CALLBACK(handle_unblock_button_click), + handle ); handle->open_chat_button = GTK_BUTTON( - gtk_builder_get_object(handle->builder, "open_chat_button") + gtk_builder_get_object(handle->builder, "open_chat_button") ); g_signal_connect( - handle->open_chat_button, - "clicked", - G_CALLBACK(handle_open_chat_button_click), - handle + handle->open_chat_button, + "clicked", + G_CALLBACK(handle_open_chat_button_click), + handle ); handle->identity_box = GTK_WIDGET( - gtk_builder_get_object(handle->builder, "identity_box") + gtk_builder_get_object(handle->builder, "identity_box") ); handle->name_label = GTK_LABEL( - gtk_builder_get_object(handle->builder, "name_label") + gtk_builder_get_object(handle->builder, "name_label") ); handle->id_drawing_area = GTK_DRAWING_AREA( - gtk_builder_get_object(handle->builder, "id_drawing_area") + gtk_builder_get_object(handle->builder, "id_drawing_area") ); handle->id_draw_signal = g_signal_connect( - handle->id_drawing_area, - "draw", - G_CALLBACK(handle_id_drawing_area_draw), - handle + handle->id_drawing_area, + "draw", + G_CALLBACK(handle_id_drawing_area_draw), + handle ); handle->id_entry = GTK_ENTRY( - gtk_builder_get_object(handle->builder, "id_entry") + gtk_builder_get_object(handle->builder, "id_entry") ); handle->back_button = GTK_BUTTON( - gtk_builder_get_object(handle->builder, "back_button") + gtk_builder_get_object(handle->builder, "back_button") ); g_signal_connect( - handle->back_button, - "clicked", - G_CALLBACK(handle_back_button_click), - handle + handle->back_button, + "clicked", + G_CALLBACK(handle_back_button_click), + handle ); handle->close_button = GTK_BUTTON( - gtk_builder_get_object(handle->builder, "close_button") + gtk_builder_get_object(handle->builder, "close_button") ); g_signal_connect( - handle->close_button, - "clicked", - G_CALLBACK(handle_close_button_click), - handle->dialog + handle->close_button, + "clicked", + G_CALLBACK(handle_close_button_click), + handle->dialog ); g_signal_connect( - handle->dialog, - "destroy", - G_CALLBACK(handle_dialog_destroy), - handle + handle->dialog, + "destroy", + G_CALLBACK(handle_dialog_destroy), + handle ); } @@ -499,9 +498,9 @@ ui_contact_info_dialog_update(UI_CONTACT_INFO_Handle *handle, ui_entry_set_text(handle->contact_name_entry, name); g_object_set_qdata( - G_OBJECT(handle->contact_name_entry), - handle->app->quarks.data, - contact + G_OBJECT(handle->contact_name_entry), + handle->app->quarks.data, + contact ); const char *key = GNUNET_CHAT_contact_get_key(contact); @@ -511,11 +510,11 @@ ui_contact_info_dialog_update(UI_CONTACT_INFO_Handle *handle, if (key) handle->qr = QRcode_encodeString( - key, - 0, - QR_ECLEVEL_L, - QR_MODE_8, - 0 + key, + 0, + QR_ECLEVEL_L, + QR_MODE_8, + 0 ); else handle->qr = NULL; @@ -528,35 +527,35 @@ ui_contact_info_dialog_update(UI_CONTACT_INFO_Handle *handle, ui_entry_set_text(handle->id_entry, key); gtk_widget_set_sensitive( - GTK_WIDGET(handle->reveal_identity_button), - key? TRUE : FALSE + GTK_WIDGET(handle->reveal_identity_button), + key? TRUE : FALSE ); gtk_stack_set_visible_child( - handle->block_stack, - GNUNET_YES == GNUNET_CHAT_contact_is_blocked(contact)? - GTK_WIDGET(handle->unblock_button) : - GTK_WIDGET(handle->block_button) + handle->block_stack, + GNUNET_YES == GNUNET_CHAT_contact_is_blocked(contact)? + GTK_WIDGET(handle->unblock_button) : + GTK_WIDGET(handle->block_button) ); g_object_set_qdata( - G_OBJECT(handle->block_stack), - handle->app->quarks.data, - contact + G_OBJECT(handle->block_stack), + handle->app->quarks.data, + contact ); struct GNUNET_CHAT_Context *context = GNUNET_CHAT_contact_get_context( - contact + contact ); gtk_widget_set_sensitive( - GTK_WIDGET(handle->open_chat_button), - context? TRUE : FALSE + GTK_WIDGET(handle->open_chat_button), + context? TRUE : FALSE ); gtk_widget_set_visible( - GTK_WIDGET(handle->open_chat_button), - GNUNET_YES != GNUNET_CHAT_contact_is_owned(contact) + GTK_WIDGET(handle->open_chat_button), + GNUNET_YES != GNUNET_CHAT_contact_is_owned(contact) ); if (reveal) @@ -567,8 +566,8 @@ void ui_contact_info_dialog_cleanup(UI_CONTACT_INFO_Handle *handle) { g_signal_handler_disconnect( - handle->id_drawing_area, - handle->id_draw_signal + handle->id_drawing_area, + handle->id_draw_signal ); g_object_unref(handle->builder);