messenger-gtk

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

commit a48aab16a363ef8a001d753977e9805ca655c9db
parent 2830cd336ab3db18af4905896a76806502b9ef92
Author: Jacki <jacki@thejackimonster.de>
Date:   Thu, 20 Jun 2024 01:44:59 +0200

Add stack and offline page to visualize state of no subscribed members in discourse

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

Diffstat:
Mresources/ui/discourse.ui | 75++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Msrc/ui/discourse.c | 17+++++++++++++++++
Msrc/ui/discourse.h | 4++++
3 files changed, 83 insertions(+), 13 deletions(-)

diff --git a/resources/ui/discourse.ui b/resources/ui/discourse.ui @@ -99,29 +99,78 @@ Author: Tobias Frisch <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkScrolledWindow"> - <property name="width-request">280</property> - <property name="height-request">180</property> + <object class="GtkStack" id="discourse_stack"> <property name="visible">True</property> - <property name="can-focus">True</property> + <property name="can-focus">False</property> <child> - <object class="GtkViewport"> + <object class="GtkBox" id="offline_page"> <property name="visible">True</property> <property name="can-focus">False</property> + <property name="halign">center</property> + <property name="valign">center</property> + <property name="orientation">vertical</property> + <property name="spacing">8</property> <child> - <object class="GtkFlowBox" id="members_flowbox"> + <object class="GtkImage"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="halign">center</property> - <property name="valign">center</property> - <property name="border-width">16</property> - <property name="column-spacing">2</property> - <property name="row-spacing">2</property> - <property name="min-children-per-line">2</property> - <property name="selection-mode">none</property> + <property name="pixel-size">64</property> + <property name="icon-name">user-offline-symbolic</property> + <property name="icon_size">3</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="label" translatable="yes">Offline</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> </child> </object> + <packing> + <property name="name">page_offline</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="members_page"> + <property name="width-request">280</property> + <property name="height-request">180</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <child> + <object class="GtkViewport"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="GtkFlowBox" id="members_flowbox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">center</property> + <property name="valign">center</property> + <property name="border-width">16</property> + <property name="column-spacing">2</property> + <property name="row-spacing">2</property> + <property name="min-children-per-line">2</property> + <property name="selection-mode">none</property> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="name">members_page</property> + <property name="position">1</property> + </packing> </child> </object> <packing> diff --git a/src/ui/discourse.c b/src/ui/discourse.c @@ -239,6 +239,18 @@ ui_discourse_window_init(MESSENGER_Application *app, handle ); + handle->discourse_stack = GTK_STACK( + gtk_builder_get_object(handle->builder, "discourse_stack") + ); + + handle->offline_page = GTK_WIDGET( + gtk_builder_get_object(handle->builder, "offline_page") + ); + + handle->members_page = GTK_WIDGET( + gtk_builder_get_object(handle->builder, "members_page") + ); + handle->members_flowbox = GTK_FLOW_BOX( gtk_builder_get_object(handle->builder, "members_flowbox") ); @@ -443,7 +455,12 @@ _discourse_update_members(UI_DISCOURSE_Handle *handle) ); if (list) + { + gtk_stack_set_visible_child(handle->discourse_stack, handle->members_page); g_list_free(list); + } + else + gtk_stack_set_visible_child(handle->discourse_stack, handle->offline_page); if (!(handle->context)) return; diff --git a/src/ui/discourse.h b/src/ui/discourse.h @@ -53,6 +53,10 @@ typedef struct UI_DISCOURSE_Handle HdyFlap *details_flap; + GtkStack *discourse_stack; + GtkWidget *offline_page; + GtkWidget *members_page; + GtkFlowBox *members_flowbox; GtkButton *microphone_button;