messenger-gtk

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

commit 065a28a7d62fcc447945030f8ced35e15d0019e1
parent 5e9d5f99cc45982b72080702291ef1fd9439c13b
Author: Jacki <jacki@thejackimonster.de>
Date:   Thu, 12 Jun 2025 23:17:35 +0200

Allow opening own notes feed

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

Diffstat:
Mresources/ui/contact_info.ui | 72+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Msrc/ui/contact_info.c | 16++++++++++++++--
Msrc/ui/contact_info.h | 4+++-
3 files changed, 76 insertions(+), 16 deletions(-)

diff --git a/resources/ui/contact_info.ui b/resources/ui/contact_info.ui @@ -493,33 +493,79 @@ Author: Tobias Frisch <property name="can-focus">True</property> <property name="receives-default">True</property> <child> - <object class="GtkBox"> + <object class="GtkStack" id="open_chat_stack"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="spacing">4</property> <child> - <object class="GtkImage"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">user-available-symbolic</property> + <property name="spacing">4</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">user-available-symbolic</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-end">16</property> + <property name="label" translatable="yes">Open Private Chat</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="pack-type">end</property> + <property name="position">1</property> + </packing> + </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> + <property name="name">open_private_chat_page</property> </packing> </child> <child> - <object class="GtkLabel"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="margin-end">16</property> - <property name="label" translatable="yes">Open Private Chat</property> + <property name="spacing">4</property> + <child> + <object class="GtkImage"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">view-paged-symbolic</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="margin-end">16</property> + <property name="label" translatable="yes">Open Notes</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="pack-type">end</property> + <property name="position">1</property> + </packing> + </child> </object> <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="pack-type">end</property> + <property name="name">open_notes_page</property> <property name="position">1</property> </packing> </child> diff --git a/src/ui/contact_info.c b/src/ui/contact_info.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - Copyright (C) 2022--2024 GNUnet e.V. + Copyright (C) 2022--2025 GNUnet e.V. GNUnet is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published @@ -1328,6 +1328,10 @@ ui_contact_info_dialog_init(MESSENGER_Application *app, handle ); + handle->open_chat_stack = GTK_STACK( + gtk_builder_get_object(handle->builder, "open_chat_stack") + ); + handle->back_button = GTK_BUTTON( gtk_builder_get_object(handle->builder, "back_button") ); @@ -1393,6 +1397,9 @@ ui_contact_info_dialog_update(UI_CONTACT_INFO_Handle *handle, { g_assert(handle); + if (!contact) + contact = GNUNET_CHAT_get_own_contact(handle->app->chat.messenger.handle); + const char *name = NULL; const char *key = NULL; @@ -1567,6 +1574,11 @@ ui_contact_info_dialog_update(UI_CONTACT_INFO_Handle *handle, ); } + gtk_stack_set_visible_child_name( + handle->open_chat_stack, + editable? "open_notes_page" : "open_private_chat_page" + ); + struct GNUNET_CHAT_Context *context = GNUNET_CHAT_contact_get_context( contact ); @@ -1578,7 +1590,7 @@ ui_contact_info_dialog_update(UI_CONTACT_INFO_Handle *handle, gtk_widget_set_visible( GTK_WIDGET(handle->open_chat_button), - !editable + context? TRUE : FALSE ); if (reveal) diff --git a/src/ui/contact_info.h b/src/ui/contact_info.h @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - Copyright (C) 2022--2024 GNUnet e.V. + Copyright (C) 2022--2025 GNUnet e.V. GNUnet is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published @@ -91,6 +91,8 @@ typedef struct UI_CONTACT_INFO_Handle GtkButton *add_tag_button; GtkButton *remove_tag_button; + GtkStack *open_chat_stack; + GtkButton *back_button; GtkButton *close_button;