messenger-gtk

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

commit 0def5106c1e92a2d43b9bdc755ba860ccc2f84f1
parent b40c9fa60fd15152750c4361e3ed35be5f7ff9f0
Author: TheJackiMonster <thejackimonster@gmail.com>
Date:   Sun, 31 Oct 2021 19:32:35 +0100

Hooked up all important ui widgets from builder

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>

Diffstat:
Mresources/ui/messenger.ui | 101++++++++++++++++++++-----------------------------------------------------------
Msrc/application.c | 2++
Msrc/ui/messenger.c | 143+++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Msrc/ui/messenger.h | 3+--
4 files changed, 116 insertions(+), 133 deletions(-)

diff --git a/resources/ui/messenger.ui b/resources/ui/messenger.ui @@ -397,7 +397,7 @@ Author: Tobias Frisch <property name="can-focus">False</property> <child> <object class="GtkScrolledWindow"> - <property name="height-request">300</property> + <property name="height-request">250</property> <property name="visible">True</property> <property name="can-focus">True</property> <child> @@ -405,7 +405,7 @@ Author: Tobias Frisch <property name="visible">True</property> <property name="can-focus">False</property> <child> - <object class="GtkListBox"> + <object class="GtkListBox" id="accounts_listbox"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="selection-mode">none</property> @@ -472,7 +472,7 @@ Author: Tobias Frisch <property name="can-focus">False</property> <property name="orientation">vertical</property> <child> - <object class="GtkButton" id="new_group_button"> + <object class="GtkButton" id="new_contact_button"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> @@ -491,7 +491,7 @@ Author: Tobias Frisch <object class="GtkImage"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">system-users-symbolic</property> + <property name="icon-name">contact-new-symbolic</property> <property name="icon_size">3</property> </object> <packing> @@ -501,61 +501,10 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkLabel" id="new-group-label"> + <object class="GtkLabel" id="new-contact-label"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes">New Group</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkButton" id="new_platform_button"> - <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">True</property> - <property name="relief">none</property> - <property name="always-show-image">True</property> - <child> - <object class="GtkBox"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="margin-start">4</property> - <property name="margin-end">4</property> - <property name="margin-top">4</property> - <property name="margin-bottom">4</property> - <property name="spacing">16</property> - <child> - <object class="GtkImage"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="icon-name">network-wired-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" id="new-platform-label"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="label" translatable="yes">New Platform</property> + <property name="label" translatable="yes">New Contact</property> <property name="xalign">0</property> </object> <packing> @@ -574,7 +523,7 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkButton" id="contacts_button"> + <object class="GtkButton" id="new_group_button"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> @@ -593,7 +542,7 @@ Author: Tobias Frisch <object class="GtkImage"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">avatar-default-symbolic</property> + <property name="icon-name">system-users-symbolic</property> <property name="icon_size">3</property> </object> <packing> @@ -603,10 +552,10 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkLabel" id="contacts-label"> + <object class="GtkLabel" id="new-group-label"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes">Contacts</property> + <property name="label" translatable="yes">New Group</property> <property name="xalign">0</property> </object> <packing> @@ -625,7 +574,7 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkButton" id="calls_button"> + <object class="GtkButton" id="new_platform_button"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> @@ -644,7 +593,7 @@ Author: Tobias Frisch <object class="GtkImage"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">call-start-symbolic</property> + <property name="icon-name">network-wired-symbolic</property> <property name="icon_size">3</property> </object> <packing> @@ -654,10 +603,10 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkLabel" id="calls-label"> + <object class="GtkLabel" id="new-platform-label"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes">Calls</property> + <property name="label" translatable="yes">New Platform</property> <property name="xalign">0</property> </object> <packing> @@ -676,7 +625,7 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkButton" id="settings_button"> + <object class="GtkButton" id="contacts_button"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> @@ -695,7 +644,7 @@ Author: Tobias Frisch <object class="GtkImage"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">emblem-system-symbolic</property> + <property name="icon-name">avatar-default-symbolic</property> <property name="icon_size">3</property> </object> <packing> @@ -705,10 +654,10 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkLabel" id="settings-label"> + <object class="GtkLabel" id="contacts-label"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes">Settings</property> + <property name="label" translatable="yes">Contacts</property> <property name="xalign">0</property> </object> <packing> @@ -727,7 +676,7 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkButton" id="night_mode_button"> + <object class="GtkButton" id="settings_button"> <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> @@ -746,7 +695,7 @@ Author: Tobias Frisch <object class="GtkImage"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="icon-name">weather-clear-night-symbolic</property> + <property name="icon-name">emblem-system-symbolic</property> <property name="icon_size">3</property> </object> <packing> @@ -756,10 +705,10 @@ Author: Tobias Frisch </packing> </child> <child> - <object class="GtkLabel" id="night-mode-label"> + <object class="GtkLabel" id="settings-label"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes">Night Mode</property> + <property name="label" translatable="yes">Settings</property> <property name="xalign">0</property> </object> <packing> @@ -774,7 +723,7 @@ Author: Tobias Frisch <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">5</property> + <property name="position">6</property> </packing> </child> </object> @@ -1686,18 +1635,18 @@ Author: Tobias Frisch <property name="can-focus">False</property> <property name="title" translatable="yes">Messenger</property> <property name="subtitle" translatable="yes">GNUnet</property> + <property name="show-close-button">True</property> <property name="interpolate-size">True</property> </object> </child> </object> <object class="GtkSizeGroup"> <widgets> + <widget name="new-contact-label"/> <widget name="new-group-label"/> <widget name="new-platform-label"/> <widget name="contacts-label"/> - <widget name="calls-label"/> <widget name="settings-label"/> - <widget name="night-mode-label"/> </widgets> </object> <object class="GtkSizeGroup"> diff --git a/src/application.c b/src/application.c @@ -56,6 +56,8 @@ application_init(MESSENGER_Application *app, int argc, char **argv) { + memset(app, 0, sizeof(*app)); + app->argc = argc; app->argv = argv; diff --git a/src/ui/messenger.c b/src/ui/messenger.c @@ -103,71 +103,85 @@ ui_messenger_init(MESSENGER_Application *app, GTK_WINDOW(handle->main_window) ); - handle->profile_avatar = HDY_AVATAR( - gtk_builder_get_object(builder, "profile_avatar") + gtk_window_set_default_size( + GTK_WINDOW(handle->main_window), + 1100, 700 ); - handle->profile_label = GTK_LABEL( - gtk_builder_get_object(builder, "profile_label") + handle->leaflet_chat = HDY_LEAFLET( + gtk_builder_get_object(builder, "leaflet_chat") + ); + + handle->flap_user_details = HDY_FLAP( + gtk_builder_get_object(builder, "flap_user_details") + ); + + handle->flap_chat_details = HDY_FLAP( + gtk_builder_get_object(builder, "flap_chat_details") ); handle->title_bar = HDY_HEADER_BAR( gtk_builder_get_object(builder, "title_bar") ); - handle->leaflet_chat = HDY_LEAFLET( - gtk_builder_get_object(builder, "leaflet_chat") + g_object_bind_property( + handle->leaflet_chat, + "folded", + handle->title_bar, + "show-close-button", + G_BINDING_INVERT_BOOLEAN ); if (app->ui.mobile) - { g_object_bind_property( - handle->leaflet_chat, - "folded", - handle->title_bar, - "visible", - G_BINDING_SYNC_CREATE | - G_BINDING_INVERT_BOOLEAN + handle->leaflet_chat, + "folded", + handle->title_bar, + "visible", + G_BINDING_SYNC_CREATE | + G_BINDING_INVERT_BOOLEAN ); - } - hdy_leaflet_set_homogeneous(handle->leaflet_chat, FALSE, GTK_ORIENTATION_HORIZONTAL, FALSE); + handle->back_button = GTK_BUTTON( + gtk_builder_get_object(builder, "back_button") + ); - handle->chats_listbox = GTK_LIST_BOX( - gtk_builder_get_object(builder, "chats_listbox") + g_object_bind_property( + handle->leaflet_chat, + "folded", + handle->back_button, + "visible", + G_BINDING_SYNC_CREATE ); g_signal_connect( - handle->chats_listbox, - "row-activated", - G_CALLBACK(handle_chats_listbox_row_activated), + handle->back_button, + "clicked", + G_CALLBACK(handle_back_button_click), handle->leaflet_chat ); - handle->user_details_button = GTK_BUTTON( - gtk_builder_get_object(builder, "user_details_button") + handle->profile_avatar = HDY_AVATAR( + gtk_builder_get_object(builder, "profile_avatar") ); - handle->hide_user_details_button = GTK_BUTTON( - gtk_builder_get_object(builder, "hide_user_details_button") + handle->profile_label = GTK_LABEL( + gtk_builder_get_object(builder, "profile_label") ); - handle->flap_user_details = HDY_FLAP( - gtk_builder_get_object(builder, "flap_user_details") + handle->hide_user_details_button = GTK_BUTTON( + gtk_builder_get_object(builder, "hide_user_details_button") ); g_signal_connect( - handle->user_details_button, + handle->hide_user_details_button, "clicked", G_CALLBACK(handle_flap_via_button_click), handle->flap_user_details ); - g_signal_connect( - handle->hide_user_details_button, - "clicked", - G_CALLBACK(handle_flap_via_button_click), - handle->flap_user_details + handle->favourites_button = GTK_BUTTON( + gtk_builder_get_object(builder, "favourites_button") ); handle->account_details_button = GTK_BUTTON( @@ -185,35 +199,54 @@ ui_messenger_init(MESSENGER_Application *app, handle->account_details_revealer ); - handle->back_button = GTK_BUTTON( - gtk_builder_get_object(builder, "back_button") + handle->accounts_listbox = GTK_LIST_BOX( + gtk_builder_get_object(builder, "accounts_listbox") + ); + + handle->new_contact_button = GTK_BUTTON( + gtk_builder_get_object(builder, "new_contact_button") + ); + + handle->new_group_button = GTK_BUTTON( + gtk_builder_get_object(builder, "new_group_button") + ); + + handle->new_platform_button = GTK_BUTTON( + gtk_builder_get_object(builder, "new_platform_button") + ); + + handle->contacts_button = GTK_BUTTON( + gtk_builder_get_object(builder, "contacts_button") + ); + + handle->settings_button = GTK_BUTTON( + gtk_builder_get_object(builder, "settings_button") + ); + + handle->user_details_button = GTK_BUTTON( + gtk_builder_get_object(builder, "user_details_button") ); g_signal_connect( - handle->back_button, + handle->user_details_button, "clicked", - G_CALLBACK(handle_back_button_click), - handle->leaflet_chat + G_CALLBACK(handle_flap_via_button_click), + handle->flap_user_details ); - g_object_bind_property( - handle->leaflet_chat, - "folded", - handle->back_button, - "visible", - G_BINDING_SYNC_CREATE + handle->chats_search = GTK_SEARCH_ENTRY( + gtk_builder_get_object(builder, "chats_search") ); - g_object_bind_property( - handle->leaflet_chat, - "folded", - handle->title_bar, - "show-close-button", - G_BINDING_INVERT_BOOLEAN + handle->chats_listbox = GTK_LIST_BOX( + gtk_builder_get_object(builder, "chats_listbox") ); - handle->flap_chat_details = HDY_FLAP( - gtk_builder_get_object(builder, "flap_chat_details") + g_signal_connect( + handle->chats_listbox, + "row-activated", + G_CALLBACK(handle_chats_listbox_row_activated), + handle->leaflet_chat ); handle->chat_title = GTK_LABEL( @@ -228,10 +261,6 @@ ui_messenger_init(MESSENGER_Application *app, gtk_builder_get_object(builder, "chat_details_button") ); - handle->hide_chat_details_button = GTK_BUTTON( - gtk_builder_get_object(builder, "hide_chat_details_button") - ); - g_signal_connect( handle->chat_details_button, "clicked", @@ -239,6 +268,10 @@ ui_messenger_init(MESSENGER_Application *app, handle->flap_chat_details ); + handle->hide_chat_details_button = GTK_BUTTON( + gtk_builder_get_object(builder, "hide_chat_details_button") + ); + g_signal_connect( handle->hide_chat_details_button, "clicked", diff --git a/src/ui/messenger.h b/src/ui/messenger.h @@ -52,12 +52,11 @@ typedef struct UI_MESSENGER_Handle GtkRevealer *account_details_revealer; GtkListBox *accounts_listbox; + GtkButton *new_contact_button; GtkButton *new_group_button; GtkButton *new_platform_button; GtkButton *contacts_button; - GtkButton *calls_button; GtkButton *settings_button; - GtkButton *night_mode_button; GtkButton *user_details_button; GtkSearchEntry *chats_search;