/* This file is part of GNUnet. Copyright (C) 2021 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 by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . SPDX-License-Identifier: AGPL3.0-or-later */ /* * @author Tobias Frisch * @file messenger_gtk.c */ #include #include #include G_MODULE_EXPORT void handle_user_details_button_click(GtkButton* button, gpointer user_data) { HdyFlap* flap = HDY_FLAP(user_data); if (TRUE == hdy_flap_get_reveal_flap(flap)) { hdy_flap_set_reveal_flap(flap, FALSE); } else { hdy_flap_set_reveal_flap(flap, TRUE); } } G_MODULE_EXPORT void handle_account_details_button_click(GtkButton* button, gpointer user_data) { GtkRevealer* revealer = GTK_REVEALER(user_data); if (TRUE == gtk_revealer_get_reveal_child(revealer)) { gtk_revealer_set_reveal_child(revealer, FALSE); } else { gtk_revealer_set_reveal_child(revealer, TRUE); } } int main(int argc, char** argv) { gtk_init(&argc, &argv); GtkBuilder* builder = gtk_builder_new(); gtk_builder_add_from_file( builder, "resources/ui/messenger.ui", NULL ); GtkApplicationWindow* window = GTK_APPLICATION_WINDOW( gtk_builder_get_object(builder, "main_window") ); GdkScreen* screen = gdk_screen_get_default(); GtkCssProvider* provider = gtk_css_provider_new(); gtk_css_provider_load_from_path( provider, "resources/css/style.css", NULL ); gtk_style_context_add_provider_for_screen( screen, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION ); HdyHeaderBar* title_bar = HDY_HEADER_BAR( gtk_builder_get_object(builder, "title_bar") ); GtkButton* user_details_button = GTK_BUTTON( gtk_builder_get_object(builder, "user_details_button") ); GtkButton* hide_user_details_button = GTK_BUTTON( gtk_builder_get_object(builder, "hide_user_details_button") ); HdyFlap* flap_user_details = HDY_FLAP( gtk_builder_get_object(builder, "flap_user_details") ); g_signal_connect( user_details_button, "clicked", G_CALLBACK(handle_user_details_button_click), flap_user_details ); g_signal_connect( hide_user_details_button, "clicked", G_CALLBACK(handle_user_details_button_click), flap_user_details ); GtkButton* account_details_button = GTK_BUTTON( gtk_builder_get_object(builder, "account_details_button") ); GtkRevealer* account_details_revealer = GTK_REVEALER( gtk_builder_get_object(builder, "account_details_revealer") ); g_signal_connect( account_details_button, "clicked", G_CALLBACK(handle_account_details_button_click), account_details_revealer ); gtk_widget_show(GTK_WIDGET(window)); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_main(); return 0; }