aboutsummaryrefslogtreecommitdiff
path: root/src/messenger_gtk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger_gtk.c')
-rw-r--r--src/messenger_gtk.c77
1 files changed, 73 insertions, 4 deletions
diff --git a/src/messenger_gtk.c b/src/messenger_gtk.c
index cfc4b84..a07e6b3 100644
--- a/src/messenger_gtk.c
+++ b/src/messenger_gtk.c
@@ -27,8 +27,8 @@
27 27
28#include <gnunet/gnunet_chat_lib.h> 28#include <gnunet/gnunet_chat_lib.h>
29 29
30G_MODULE_EXPORT void handle_user_details_button_click(GtkButton* button, 30void handle_user_details_button_click(GtkButton* button,
31 gpointer user_data) 31 gpointer user_data)
32{ 32{
33 HdyFlap* flap = HDY_FLAP(user_data); 33 HdyFlap* flap = HDY_FLAP(user_data);
34 34
@@ -39,8 +39,8 @@ G_MODULE_EXPORT void handle_user_details_button_click(GtkButton* button,
39 } 39 }
40} 40}
41 41
42G_MODULE_EXPORT void handle_account_details_button_click(GtkButton* button, 42void handle_account_details_button_click(GtkButton* button,
43 gpointer user_data) 43 gpointer user_data)
44{ 44{
45 GtkRevealer* revealer = GTK_REVEALER(user_data); 45 GtkRevealer* revealer = GTK_REVEALER(user_data);
46 46
@@ -51,6 +51,31 @@ G_MODULE_EXPORT void handle_account_details_button_click(GtkButton* button,
51 } 51 }
52} 52}
53 53
54void handle_chats_listbox_row_activated(GtkListBox* listbox,
55 GtkListBoxRow* row,
56 gpointer user_data)
57{
58 HdyLeaflet* leaflet = HDY_LEAFLET(user_data);
59
60 GList* children = gtk_container_get_children(GTK_CONTAINER(leaflet));
61
62 if ((children) && (children->next)) {
63 hdy_leaflet_set_visible_child(leaflet, GTK_WIDGET(children->next->data));
64 }
65}
66
67void handle_back_button_click(GtkButton* button,
68 gpointer user_data)
69{
70 HdyLeaflet* leaflet = HDY_LEAFLET(user_data);
71
72 GList* children = gtk_container_get_children(GTK_CONTAINER(leaflet));
73
74 if (children) {
75 hdy_leaflet_set_visible_child(leaflet, GTK_WIDGET(children->data));
76 }
77}
78
54int main(int argc, char** argv) { 79int main(int argc, char** argv) {
55 gtk_init(&argc, &argv); 80 gtk_init(&argc, &argv);
56 81
@@ -84,6 +109,23 @@ int main(int argc, char** argv) {
84 gtk_builder_get_object(builder, "title_bar") 109 gtk_builder_get_object(builder, "title_bar")
85 ); 110 );
86 111
112 HdyLeaflet* leaflet_chat = HDY_LEAFLET(
113 gtk_builder_get_object(builder, "leaflet_chat")
114 );
115
116 hdy_leaflet_set_homogeneous(leaflet_chat, FALSE, GTK_ORIENTATION_HORIZONTAL, FALSE);
117
118 GtkListBox* chats_listbox = GTK_LIST_BOX(
119 gtk_builder_get_object(builder, "chats_listbox")
120 );
121
122 g_signal_connect(
123 chats_listbox,
124 "row-activated",
125 G_CALLBACK(handle_chats_listbox_row_activated),
126 leaflet_chat
127 );
128
87 GtkButton* user_details_button = GTK_BUTTON( 129 GtkButton* user_details_button = GTK_BUTTON(
88 gtk_builder_get_object(builder, "user_details_button") 130 gtk_builder_get_object(builder, "user_details_button")
89 ); 131 );
@@ -125,6 +167,33 @@ int main(int argc, char** argv) {
125 account_details_revealer 167 account_details_revealer
126 ); 168 );
127 169
170 GtkButton* back_button = GTK_BUTTON(
171 gtk_builder_get_object(builder, "back_button")
172 );
173
174 g_signal_connect(
175 back_button,
176 "clicked",
177 G_CALLBACK(handle_back_button_click),
178 leaflet_chat
179 );
180
181 g_object_bind_property(
182 leaflet_chat,
183 "folded",
184 back_button,
185 "visible",
186 G_BINDING_SYNC_CREATE
187 );
188
189 g_object_bind_property(
190 leaflet_chat,
191 "folded",
192 title_bar,
193 "show-close-button",
194 G_BINDING_INVERT_BOOLEAN
195 );
196
128 gtk_widget_show(GTK_WIDGET(window)); 197 gtk_widget_show(GTK_WIDGET(window));
129 198
130 g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); 199 g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);