messenger-gtk

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

new_tag.h (2285B)


      1 /*
      2    This file is part of GNUnet.
      3    Copyright (C) 2024 GNUnet e.V.
      4 
      5    GNUnet is free software: you can redistribute it and/or modify it
      6    under the terms of the GNU Affero General Public License as published
      7    by the Free Software Foundation, either version 3 of the License,
      8    or (at your option) any later version.
      9 
     10    GNUnet is distributed in the hope that it will be useful, but
     11    WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13    Affero General Public License for more details.
     14 
     15    You should have received a copy of the GNU Affero General Public License
     16    along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 
     18    SPDX-License-Identifier: AGPL3.0-or-later
     19  */
     20 /*
     21  * @author Tobias Frisch
     22  * @file ui/new_tag.h
     23  */
     24 
     25 #ifndef UI_NEW_TAG_H_
     26 #define UI_NEW_TAG_H_
     27 
     28 #include "messenger.h"
     29 
     30 typedef void
     31 (*UI_NEW_TAG_Callback) (
     32   MESSENGER_Application *app,
     33 	GList *selected,
     34 	const char *tag,
     35   gpointer user_data
     36 );
     37 
     38 typedef struct UI_NEW_TAG_Handle
     39 {
     40   GList *selected;
     41   gpointer user_data;
     42 
     43   UI_NEW_TAG_Callback callback;
     44 
     45   GtkBuilder *builder;
     46   GtkDialog *dialog;
     47 
     48   HdyAvatar *tag_avatar;
     49   GtkEntry *tag_entry;
     50 
     51   GtkButton *cancel_button;
     52   GtkButton *confirm_button;
     53 } UI_NEW_TAG_Handle;
     54 
     55 /**
     56  * Initializes a handle for the new tag dialog
     57  * of a given messenger application.
     58  *
     59  * @param app Messenger application
     60  * @param handle New tag dialog handle
     61  */
     62 void
     63 ui_new_tag_dialog_init(MESSENGER_Application *app,
     64                        UI_NEW_TAG_Handle *handle);
     65 
     66 /**
     67  * Links a custom list and a callback to a
     68  * given new tag dialog which will be used 
     69  * to handle the event of tagging.
     70  *
     71  * @param handle New tag dialog handle
     72  * @param callback New tag callback
     73  * @param selected Selected messages
     74  * @param user_data User data
     75  */
     76 void
     77 ui_new_tag_dialog_link(UI_NEW_TAG_Handle *handle,
     78                        UI_NEW_TAG_Callback callback,
     79                        GList *selected,
     80                        gpointer user_data);
     81 
     82 /**
     83  * Cleans up the allocated resources and resets the
     84  * state of a given new tag dialog handle.
     85  *
     86  * @param handle New tag dialog handle
     87  */
     88 void
     89 ui_new_tag_dialog_cleanup(UI_NEW_TAG_Handle *handle);
     90 
     91 #endif /* UI_NEW_TAG_H_ */