/* This file is part of GNUnet. Copyright (C) 2021--2022 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 ui/messenger.h */ #ifndef UI_MESSENGER_H_ #define UI_MESSENGER_H_ #include #include #include #include typedef struct MESSENGER_Application MESSENGER_Application; typedef struct UI_MESSENGER_Handle { MESSENGER_Application *app; GList *chat_entries; guint chat_selection; guint account_refresh; GtkBuilder *builder; GtkApplicationWindow *main_window; HdyLeaflet *leaflet_chat; HdyFlap *flap_user_details; HdyHeaderBar *title_bar; HdyAvatar *profile_avatar; GtkLabel *profile_label; GtkLabel *profile_key_label; GtkButton *hide_user_details_button; GtkButton *lobby_button; GtkButton *account_details_button; GtkImage *account_details_symbol; GtkRevealer *account_details_revealer; GtkListBox *accounts_listbox; GtkListBoxRow *add_account_listbox_row; GtkButton *new_contact_button; GtkButton *new_group_button; GtkButton *new_platform_button; GtkButton *contacts_button; GtkButton *settings_button; GtkButton *about_button; GtkButton *user_details_button; GtkSearchEntry *chats_search; GtkListBox *chats_listbox; GtkStack *chats_stack; GtkWidget *no_chat_box; } UI_MESSENGER_Handle; /** * Initializes a handle for the messenger main * window of a given messenger application. * * @param app Messenger application * @param handle Messenger window handle */ void ui_messenger_init(MESSENGER_Application *app, UI_MESSENGER_Handle *handle); /** * Refreshes a given messenger window handle with * the data of the current state from a given * messenger application. * * @param app Messenger application * @param handle Messenger window handle */ void ui_messenger_refresh(MESSENGER_Application *app, UI_MESSENGER_Handle *handle); /** * Returns whether a certain chat context is currently * visually represented via a chat UI handle. * * @param handle Messenger window handle * @param context Chat context * @return true if the context is viewed, otherwise false */ gboolean ui_messenger_is_context_active(UI_MESSENGER_Handle *handle, struct GNUNET_CHAT_Context *context); /** * Cleans up the allocated resources and resets the * state of a given messenger window handle. * * @param handle Messenger window handle */ void ui_messenger_cleanup(UI_MESSENGER_Handle *handle); #endif /* UI_MESSENGER_H_ */