| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- #pragma once
- #include <furi.h>
- #include <gui/canvas.h>
- #include <gui/modules/file_browser.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- /****************** COMMON ******************/
- #define RECORD_DIALOGS "dialogs"
- typedef struct DialogsApp DialogsApp;
- /****************** FILE BROWSER ******************/
- /**
- * File browser dialog extra options
- * @param extension file extension to be offered for selection
- * @param base_path root folder path for navigation with back key
- * @param skip_assets true - do not show assets folders
- * @param hide_dot_files true - hide dot files
- * @param icon file icon pointer, NULL for default icon
- * @param hide_ext true - hide extensions for files
- * @param item_loader_callback callback function for providing custom icon & entry name
- * @param hide_ext callback context
- */
- typedef struct {
- const char* extension;
- const char* base_path;
- bool skip_assets;
- bool hide_dot_files;
- const Icon* icon;
- bool hide_ext;
- FileBrowserLoadItemCallback item_loader_callback;
- void* item_loader_context;
- } DialogsFileBrowserOptions;
- /**
- * Initialize file browser dialog options
- * and set default values
- * @param options pointer to options structure
- * @param extension file extension to filter
- * @param icon file icon pointer, NULL for default icon
- */
- void dialog_file_browser_set_basic_options(
- DialogsFileBrowserOptions* options,
- const char* extension,
- const Icon* icon);
- /**
- * Shows and processes the file browser dialog
- * @param context api pointer
- * @param result_path selected file path string pointer
- * @param path preselected file path string pointer
- * @param options file browser dialog extra options, may be null
- * @return bool whether a file was selected
- */
- bool dialog_file_browser_show(
- DialogsApp* context,
- FuriString* result_path,
- FuriString* path,
- const DialogsFileBrowserOptions* options);
- /****************** MESSAGE ******************/
- /**
- * Message result type
- */
- typedef enum {
- DialogMessageButtonBack,
- DialogMessageButtonLeft,
- DialogMessageButtonCenter,
- DialogMessageButtonRight,
- } DialogMessageButton;
- /**
- * Message struct
- */
- typedef struct DialogMessage DialogMessage;
- /**
- * Allocate and fill message
- * @return DialogMessage*
- */
- DialogMessage* dialog_message_alloc();
- /**
- * Free message struct
- * @param message message pointer
- */
- void dialog_message_free(DialogMessage* message);
- /**
- * Set message text
- * @param message message pointer
- * @param text text, can be NULL if you don't want to display the text
- * @param x x position
- * @param y y position
- * @param horizontal horizontal alignment
- * @param vertical vertical alignment
- */
- void dialog_message_set_text(
- DialogMessage* message,
- const char* text,
- uint8_t x,
- uint8_t y,
- Align horizontal,
- Align vertical);
- /**
- * Set message header
- * @param message message pointer
- * @param text text, can be NULL if you don't want to display the header
- * @param x x position
- * @param y y position
- * @param horizontal horizontal alignment
- * @param vertical vertical alignment
- */
- void dialog_message_set_header(
- DialogMessage* message,
- const char* text,
- uint8_t x,
- uint8_t y,
- Align horizontal,
- Align vertical);
- /**
- * Set message icon
- * @param message message pointer
- * @param icon icon pointer, can be NULL if you don't want to display the icon
- * @param x x position
- * @param y y position
- */
- void dialog_message_set_icon(DialogMessage* message, const Icon* icon, uint8_t x, uint8_t y);
- /**
- * Set message buttons text, button text can be NULL if you don't want to display and process some buttons
- * @param message message pointer
- * @param left left button text, can be NULL if you don't want to display the left button
- * @param center center button text, can be NULL if you don't want to display the center button
- * @param right right button text, can be NULL if you don't want to display the right button
- */
- void dialog_message_set_buttons(
- DialogMessage* message,
- const char* left,
- const char* center,
- const char* right);
- /**
- * Show message from filled struct
- * @param context api pointer
- * @param message message struct pointer to be shown
- * @return DialogMessageButton type
- */
- DialogMessageButton dialog_message_show(DialogsApp* context, const DialogMessage* message);
- /**
- * Show SD error message (with question sign)
- * @param context
- * @param error_text
- */
- void dialog_message_show_storage_error(DialogsApp* context, const char* error_text);
- #ifdef __cplusplus
- }
- #endif
|