initial commit
This commit is contained in:
233
libraries/lvgl/src/extra/widgets/menu/lv_menu.h
Normal file
233
libraries/lvgl/src/extra/widgets/menu/lv_menu.h
Normal file
@@ -0,0 +1,233 @@
|
||||
/**
|
||||
* @file lv_menu.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_MENU_H
|
||||
#define LV_MENU_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "../../../core/lv_obj.h"
|
||||
|
||||
#if LV_USE_MENU
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
enum {
|
||||
LV_MENU_HEADER_TOP_FIXED, /* Header is positioned at the top */
|
||||
LV_MENU_HEADER_TOP_UNFIXED, /* Header is positioned at the top and can be scrolled out of view*/
|
||||
LV_MENU_HEADER_BOTTOM_FIXED /* Header is positioned at the bottom */
|
||||
};
|
||||
typedef uint8_t lv_menu_mode_header_t;
|
||||
|
||||
enum {
|
||||
LV_MENU_ROOT_BACK_BTN_DISABLED,
|
||||
LV_MENU_ROOT_BACK_BTN_ENABLED
|
||||
};
|
||||
typedef uint8_t lv_menu_mode_root_back_btn_t;
|
||||
|
||||
typedef struct lv_menu_load_page_event_data_t {
|
||||
lv_obj_t * menu;
|
||||
lv_obj_t * page;
|
||||
} lv_menu_load_page_event_data_t;
|
||||
|
||||
typedef struct {
|
||||
lv_obj_t * page;
|
||||
} lv_menu_history_t;
|
||||
|
||||
typedef struct {
|
||||
lv_obj_t obj;
|
||||
lv_obj_t * storage; /* a pointer to obj that is the parent of all pages not displayed */
|
||||
lv_obj_t * main;
|
||||
lv_obj_t * main_page;
|
||||
lv_obj_t * main_header;
|
||||
lv_obj_t *
|
||||
main_header_back_btn; /* a pointer to obj that on click triggers back btn event handler, can be same as 'main_header' */
|
||||
lv_obj_t * main_header_title;
|
||||
lv_obj_t * sidebar;
|
||||
lv_obj_t * sidebar_page;
|
||||
lv_obj_t * sidebar_header;
|
||||
lv_obj_t *
|
||||
sidebar_header_back_btn; /* a pointer to obj that on click triggers back btn event handler, can be same as 'sidebar_header' */
|
||||
lv_obj_t * sidebar_header_title;
|
||||
lv_obj_t * selected_tab;
|
||||
lv_ll_t history_ll;
|
||||
uint8_t cur_depth;
|
||||
uint8_t prev_depth;
|
||||
uint8_t sidebar_generated : 1;
|
||||
lv_menu_mode_header_t mode_header : 2;
|
||||
lv_menu_mode_root_back_btn_t mode_root_back_btn : 1;
|
||||
} lv_menu_t;
|
||||
|
||||
typedef struct {
|
||||
lv_obj_t obj;
|
||||
char * title;
|
||||
} lv_menu_page_t;
|
||||
|
||||
extern const lv_obj_class_t lv_menu_class;
|
||||
extern const lv_obj_class_t lv_menu_page_class;
|
||||
extern const lv_obj_class_t lv_menu_cont_class;
|
||||
extern const lv_obj_class_t lv_menu_section_class;
|
||||
extern const lv_obj_class_t lv_menu_separator_class;
|
||||
extern const lv_obj_class_t lv_menu_sidebar_cont_class;
|
||||
extern const lv_obj_class_t lv_menu_main_cont_class;
|
||||
extern const lv_obj_class_t lv_menu_sidebar_header_cont_class;
|
||||
extern const lv_obj_class_t lv_menu_main_header_cont_class;
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**
|
||||
* Create a menu object
|
||||
* @param parent pointer to an object, it will be the parent of the new menu
|
||||
* @return pointer to the created menu
|
||||
*/
|
||||
lv_obj_t * lv_menu_create(lv_obj_t * parent);
|
||||
|
||||
/**
|
||||
* Create a menu page object
|
||||
* @param parent pointer to menu object
|
||||
* @param title pointer to text for title in header (NULL to not display title)
|
||||
* @return pointer to the created menu page
|
||||
*/
|
||||
lv_obj_t * lv_menu_page_create(lv_obj_t * parent, char * title);
|
||||
|
||||
/**
|
||||
* Create a menu cont object
|
||||
* @param parent pointer to an object, it will be the parent of the new menu cont object
|
||||
* @return pointer to the created menu cont
|
||||
*/
|
||||
lv_obj_t * lv_menu_cont_create(lv_obj_t * parent);
|
||||
|
||||
/**
|
||||
* Create a menu section object
|
||||
* @param parent pointer to an object, it will be the parent of the new menu section object
|
||||
* @return pointer to the created menu section
|
||||
*/
|
||||
lv_obj_t * lv_menu_section_create(lv_obj_t * parent);
|
||||
|
||||
/**
|
||||
* Create a menu separator object
|
||||
* @param parent pointer to an object, it will be the parent of the new menu separator object
|
||||
* @return pointer to the created menu separator
|
||||
*/
|
||||
lv_obj_t * lv_menu_separator_create(lv_obj_t * parent);
|
||||
/*=====================
|
||||
* Setter functions
|
||||
*====================*/
|
||||
/**
|
||||
* Set menu page to display in main
|
||||
* @param obj pointer to the menu
|
||||
* @param page pointer to the menu page to set (NULL to clear main and clear menu history)
|
||||
*/
|
||||
void lv_menu_set_page(lv_obj_t * obj, lv_obj_t * page);
|
||||
|
||||
/**
|
||||
* Set menu page to display in sidebar
|
||||
* @param obj pointer to the menu
|
||||
* @param page pointer to the menu page to set (NULL to clear sidebar)
|
||||
*/
|
||||
void lv_menu_set_sidebar_page(lv_obj_t * obj, lv_obj_t * page);
|
||||
|
||||
/**
|
||||
* Set the how the header should behave and its position
|
||||
* @param obj pointer to a menu
|
||||
* @param mode_header
|
||||
*/
|
||||
void lv_menu_set_mode_header(lv_obj_t * obj, lv_menu_mode_header_t mode_header);
|
||||
|
||||
/**
|
||||
* Set whether back button should appear at root
|
||||
* @param obj pointer to a menu
|
||||
* @param mode_root_back_btn
|
||||
*/
|
||||
void lv_menu_set_mode_root_back_btn(lv_obj_t * obj, lv_menu_mode_root_back_btn_t mode_root_back_btn);
|
||||
|
||||
/**
|
||||
* Add menu to the menu item
|
||||
* @param menu pointer to the menu
|
||||
* @param obj pointer to the obj
|
||||
* @param page pointer to the page to load when obj is clicked
|
||||
*/
|
||||
void lv_menu_set_load_page_event(lv_obj_t * menu, lv_obj_t * obj, lv_obj_t * page);
|
||||
|
||||
/*=====================
|
||||
* Getter functions
|
||||
*====================*/
|
||||
/**
|
||||
* Get a pointer to menu page that is currently displayed in main
|
||||
* @param obj pointer to the menu
|
||||
* @return pointer to current page
|
||||
*/
|
||||
lv_obj_t * lv_menu_get_cur_main_page(lv_obj_t * obj);
|
||||
|
||||
/**
|
||||
* Get a pointer to menu page that is currently displayed in sidebar
|
||||
* @param obj pointer to the menu
|
||||
* @return pointer to current page
|
||||
*/
|
||||
lv_obj_t * lv_menu_get_cur_sidebar_page(lv_obj_t * obj);
|
||||
|
||||
/**
|
||||
* Get a pointer to main header obj
|
||||
* @param obj pointer to the menu
|
||||
* @return pointer to main header obj
|
||||
*/
|
||||
lv_obj_t * lv_menu_get_main_header(lv_obj_t * obj);
|
||||
|
||||
/**
|
||||
* Get a pointer to main header back btn obj
|
||||
* @param obj pointer to the menu
|
||||
* @return pointer to main header back btn obj
|
||||
*/
|
||||
lv_obj_t * lv_menu_get_main_header_back_btn(lv_obj_t * obj);
|
||||
|
||||
/**
|
||||
* Get a pointer to sidebar header obj
|
||||
* @param obj pointer to the menu
|
||||
* @return pointer to sidebar header obj
|
||||
*/
|
||||
lv_obj_t * lv_menu_get_sidebar_header(lv_obj_t * obj);
|
||||
|
||||
/**
|
||||
* Get a pointer to sidebar header obj
|
||||
* @param obj pointer to the menu
|
||||
* @return pointer to sidebar header back btn obj
|
||||
*/
|
||||
lv_obj_t * lv_menu_get_sidebar_header_back_btn(lv_obj_t * obj);
|
||||
|
||||
/**
|
||||
* Check if an obj is a root back btn
|
||||
* @param menu pointer to the menu
|
||||
* @return true if it is a root back btn
|
||||
*/
|
||||
bool lv_menu_back_btn_is_root(lv_obj_t * menu, lv_obj_t * obj);
|
||||
|
||||
/**
|
||||
* Clear menu history
|
||||
* @param obj pointer to the menu
|
||||
*/
|
||||
void lv_menu_clear_history(lv_obj_t * obj);
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#endif /*LV_USE_MENU*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*LV_MENU_H*/
|
||||
Reference in New Issue
Block a user