/** * @file lv_group_private.h * */ #ifndef LV_GROUP_PRIVATE_H #define LV_GROUP_PRIVATE_H #ifdef __cplusplus extern "C" { #endif /********************* * INCLUDES *********************/ #include "lv_group.h" /********************* * DEFINES *********************/ /********************** * TYPEDEFS **********************/ /** * Groups can be used to logically hold objects so that they can be individually focused. * They are NOT for laying out objects on a screen (try layouts for that). */ struct _lv_group_t { lv_ll_t obj_ll; /**< Linked list to store the objects in the group*/ lv_obj_t ** obj_focus; /**< The object in focus*/ lv_group_focus_cb_t focus_cb; /**< A function to call when a new object is focused (optional)*/ lv_group_edge_cb_t edge_cb; /**< A function to call when an edge is reached, no more focus targets are available in this direction (to allow edge feedback like a sound or a scroll bounce) */ void * user_data; uint8_t frozen : 1; /**< 1: can't focus to new object*/ uint8_t editing : 1; /**< 1: Edit mode, 0: Navigate mode*/ uint8_t refocus_policy : 1; /**< 1: Focus prev if focused on deletion. 0: Focus next if focused on deletion.*/ uint8_t wrap : 1; /**< 1: Focus next/prev can wrap at end of list. 0: Focus next/prev stops at end of list.*/ }; /********************** * GLOBAL PROTOTYPES **********************/ /** * Init the group module * @remarks Internal function, do not call directly. */ void lv_group_init(void); /** * Deinit the group module * @remarks Internal function, do not call directly. */ void lv_group_deinit(void); /********************** * MACROS **********************/ #ifdef __cplusplus } /*extern "C"*/ #endif #endif /*LV_GROUP_PRIVATE_H*/