diff options
Diffstat (limited to 'src/messenger_gtk.c')
-rw-r--r-- | src/messenger_gtk.c | 77 |
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 | ||
30 | G_MODULE_EXPORT void handle_user_details_button_click(GtkButton* button, | 30 | void 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 | ||
42 | G_MODULE_EXPORT void handle_account_details_button_click(GtkButton* button, | 42 | void 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 | ||
54 | void 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 | |||
67 | void 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 | |||
54 | int main(int argc, char** argv) { | 79 | int 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); |