acid-drop

- Hacking the planet from a LilyGo T-Deck using custom firmware
git clone git://git.acid.vegas/acid-drop.git
Log | Files | Refs | Archive | README | LICENSE

lv_menu.h (6451B)

      1 /**
      2  * @file lv_menu.h
      3  *
      4  */
      5 
      6 #ifndef LV_MENU_H
      7 #define LV_MENU_H
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13 /*********************
     14  *      INCLUDES
     15  *********************/
     16 #include "../../../core/lv_obj.h"
     17 
     18 #if LV_USE_MENU
     19 
     20 /*********************
     21  *      DEFINES
     22  *********************/
     23 
     24 /**********************
     25  *      TYPEDEFS
     26  **********************/
     27 
     28 enum {
     29     LV_MENU_HEADER_TOP_FIXED, /* Header is positioned at the top */
     30     LV_MENU_HEADER_TOP_UNFIXED, /* Header is positioned at the top and can be scrolled out of view*/
     31     LV_MENU_HEADER_BOTTOM_FIXED /* Header is positioned at the bottom */
     32 };
     33 typedef uint8_t lv_menu_mode_header_t;
     34 
     35 enum {
     36     LV_MENU_ROOT_BACK_BTN_DISABLED,
     37     LV_MENU_ROOT_BACK_BTN_ENABLED
     38 };
     39 typedef uint8_t lv_menu_mode_root_back_btn_t;
     40 
     41 typedef struct lv_menu_load_page_event_data_t {
     42     lv_obj_t * menu;
     43     lv_obj_t * page;
     44 } lv_menu_load_page_event_data_t;
     45 
     46 typedef struct {
     47     lv_obj_t * page;
     48 } lv_menu_history_t;
     49 
     50 typedef struct {
     51     lv_obj_t obj;
     52     lv_obj_t * storage; /* a pointer to obj that is the parent of all pages not displayed */
     53     lv_obj_t * main;
     54     lv_obj_t * main_page;
     55     lv_obj_t * main_header;
     56     lv_obj_t *
     57     main_header_back_btn; /* a pointer to obj that on click triggers back btn event handler, can be same as 'main_header' */
     58     lv_obj_t * main_header_title;
     59     lv_obj_t * sidebar;
     60     lv_obj_t * sidebar_page;
     61     lv_obj_t * sidebar_header;
     62     lv_obj_t *
     63     sidebar_header_back_btn; /* a pointer to obj that on click triggers back btn event handler, can be same as 'sidebar_header' */
     64     lv_obj_t * sidebar_header_title;
     65     lv_obj_t * selected_tab;
     66     lv_ll_t history_ll;
     67     uint8_t cur_depth;
     68     uint8_t prev_depth;
     69     uint8_t sidebar_generated : 1;
     70     lv_menu_mode_header_t mode_header : 2;
     71     lv_menu_mode_root_back_btn_t mode_root_back_btn : 1;
     72 } lv_menu_t;
     73 
     74 typedef struct {
     75     lv_obj_t obj;
     76     char * title;
     77 } lv_menu_page_t;
     78 
     79 extern const lv_obj_class_t lv_menu_class;
     80 extern const lv_obj_class_t lv_menu_page_class;
     81 extern const lv_obj_class_t lv_menu_cont_class;
     82 extern const lv_obj_class_t lv_menu_section_class;
     83 extern const lv_obj_class_t lv_menu_separator_class;
     84 extern const lv_obj_class_t lv_menu_sidebar_cont_class;
     85 extern const lv_obj_class_t lv_menu_main_cont_class;
     86 extern const lv_obj_class_t lv_menu_sidebar_header_cont_class;
     87 extern const lv_obj_class_t lv_menu_main_header_cont_class;
     88 /**********************
     89  * GLOBAL PROTOTYPES
     90  **********************/
     91 
     92 /**
     93  * Create a menu object
     94  * @param parent pointer to an object, it will be the parent of the new menu
     95  * @return pointer to the created menu
     96  */
     97 lv_obj_t * lv_menu_create(lv_obj_t * parent);
     98 
     99 /**
    100  * Create a menu page object
    101  * @param parent pointer to menu object
    102  * @param title pointer to text for title in header (NULL to not display title)
    103  * @return pointer to the created menu page
    104  */
    105 lv_obj_t * lv_menu_page_create(lv_obj_t * parent, char * title);
    106 
    107 /**
    108  * Create a menu cont object
    109  * @param parent pointer to an object, it will be the parent of the new menu cont object
    110  * @return pointer to the created menu cont
    111  */
    112 lv_obj_t * lv_menu_cont_create(lv_obj_t * parent);
    113 
    114 /**
    115  * Create a menu section object
    116  * @param parent pointer to an object, it will be the parent of the new menu section object
    117  * @return pointer to the created menu section
    118  */
    119 lv_obj_t * lv_menu_section_create(lv_obj_t * parent);
    120 
    121 /**
    122  * Create a menu separator object
    123  * @param parent pointer to an object, it will be the parent of the new menu separator object
    124  * @return pointer to the created menu separator
    125  */
    126 lv_obj_t * lv_menu_separator_create(lv_obj_t * parent);
    127 /*=====================
    128  * Setter functions
    129  *====================*/
    130 /**
    131  * Set menu page to display in main
    132  * @param obj pointer to the menu
    133  * @param page pointer to the menu page to set (NULL to clear main and clear menu history)
    134  */
    135 void lv_menu_set_page(lv_obj_t * obj, lv_obj_t * page);
    136 
    137 /**
    138  * Set menu page to display in sidebar
    139  * @param obj pointer to the menu
    140  * @param page pointer to the menu page to set (NULL to clear sidebar)
    141  */
    142 void lv_menu_set_sidebar_page(lv_obj_t * obj, lv_obj_t * page);
    143 
    144 /**
    145  * Set the how the header should behave and its position
    146  * @param obj pointer to a menu
    147  * @param mode_header
    148  */
    149 void lv_menu_set_mode_header(lv_obj_t * obj, lv_menu_mode_header_t mode_header);
    150 
    151 /**
    152  * Set whether back button should appear at root
    153  * @param obj pointer to a menu
    154  * @param mode_root_back_btn
    155  */
    156 void lv_menu_set_mode_root_back_btn(lv_obj_t * obj, lv_menu_mode_root_back_btn_t mode_root_back_btn);
    157 
    158 /**
    159  * Add menu to the menu item
    160  * @param menu pointer to the menu
    161  * @param obj pointer to the obj
    162  * @param page pointer to the page to load when obj is clicked
    163  */
    164 void lv_menu_set_load_page_event(lv_obj_t * menu, lv_obj_t * obj, lv_obj_t * page);
    165 
    166 /*=====================
    167  * Getter functions
    168  *====================*/
    169 /**
    170 * Get a pointer to menu page that is currently displayed in main
    171 * @param obj pointer to the menu
    172 * @return pointer to current page
    173 */
    174 lv_obj_t * lv_menu_get_cur_main_page(lv_obj_t * obj);
    175 
    176 /**
    177 * Get a pointer to menu page that is currently displayed in sidebar
    178 * @param obj pointer to the menu
    179 * @return pointer to current page
    180 */
    181 lv_obj_t * lv_menu_get_cur_sidebar_page(lv_obj_t * obj);
    182 
    183 /**
    184 * Get a pointer to main header obj
    185 * @param obj pointer to the menu
    186 * @return pointer to main header obj
    187 */
    188 lv_obj_t * lv_menu_get_main_header(lv_obj_t * obj);
    189 
    190 /**
    191 * Get a pointer to main header back btn obj
    192 * @param obj pointer to the menu
    193 * @return pointer to main header back btn obj
    194 */
    195 lv_obj_t * lv_menu_get_main_header_back_btn(lv_obj_t * obj);
    196 
    197 /**
    198 * Get a pointer to sidebar header obj
    199 * @param obj pointer to the menu
    200 * @return pointer to sidebar header obj
    201 */
    202 lv_obj_t * lv_menu_get_sidebar_header(lv_obj_t * obj);
    203 
    204 /**
    205 * Get a pointer to sidebar header obj
    206 * @param obj pointer to the menu
    207 * @return pointer to sidebar header back btn obj
    208 */
    209 lv_obj_t * lv_menu_get_sidebar_header_back_btn(lv_obj_t * obj);
    210 
    211 /**
    212  * Check if an obj is a root back btn
    213  * @param menu pointer to the menu
    214  * @return true if it is a root back btn
    215  */
    216 bool lv_menu_back_btn_is_root(lv_obj_t * menu, lv_obj_t * obj);
    217 
    218 /**
    219  * Clear menu history
    220  * @param obj pointer to the menu
    221  */
    222 void lv_menu_clear_history(lv_obj_t * obj);
    223 /**********************
    224  *      MACROS
    225  **********************/
    226 
    227 #endif /*LV_USE_MENU*/
    228 
    229 #ifdef __cplusplus
    230 } /*extern "C"*/
    231 #endif
    232 
    233 #endif /*LV_MENU_H*/