124 lines
2.9 KiB
C
124 lines
2.9 KiB
C
|
/**
|
||
|
* @file lv_templ.c
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/*********************
|
||
|
* INCLUDES
|
||
|
*********************/
|
||
|
|
||
|
/*********************
|
||
|
* DEFINES
|
||
|
*********************/
|
||
|
|
||
|
/**********************
|
||
|
* TYPEDEFS
|
||
|
**********************/
|
||
|
|
||
|
/*This typedef exists purely to keep -Wpedantic happy when the file is empty.*/
|
||
|
/*It can be removed.*/
|
||
|
typedef int _keep_pedantic_happy;
|
||
|
|
||
|
/**********************
|
||
|
* STATIC PROTOTYPES
|
||
|
**********************/
|
||
|
|
||
|
/**********************
|
||
|
* STATIC VARIABLES
|
||
|
**********************/
|
||
|
|
||
|
/**********************
|
||
|
* MACROS
|
||
|
**********************/
|
||
|
|
||
|
/**********************
|
||
|
* GLOBAL FUNCTIONS
|
||
|
**********************/
|
||
|
|
||
|
/**********************
|
||
|
* STATIC FUNCTIONS
|
||
|
**********************/
|
||
|
/**
|
||
|
* @file lv_gridnav.h
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef LV_GRIDFOCUS_H
|
||
|
#define LV_GRIDFOCUS_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*********************
|
||
|
* INCLUDES
|
||
|
*********************/
|
||
|
#include "../../../core/lv_obj.h"
|
||
|
|
||
|
#if LV_USE_GRIDNAV
|
||
|
|
||
|
/*********************
|
||
|
* DEFINES
|
||
|
*********************/
|
||
|
|
||
|
/**********************
|
||
|
* TYPEDEFS
|
||
|
**********************/
|
||
|
typedef enum {
|
||
|
LV_GRIDNAV_CTRL_NONE = 0x0,
|
||
|
|
||
|
/**
|
||
|
* If there is no next/previous object in a direction,
|
||
|
* the focus goes to the object in the next/previous row (on left/right keys)
|
||
|
* or first/last row (on up/down keys)
|
||
|
*/
|
||
|
LV_GRIDNAV_CTRL_ROLLOVER = 0x1,
|
||
|
|
||
|
/**
|
||
|
* If an arrow is pressed and the focused object can be scrolled in that direction
|
||
|
* then it will be scrolled instead of going to the next/previous object.
|
||
|
* If there is no more room for scrolling the next/previous object will be focused normally */
|
||
|
LV_GRIDNAV_CTRL_SCROLL_FIRST = 0x2,
|
||
|
|
||
|
} lv_gridnav_ctrl_t;
|
||
|
|
||
|
/**********************
|
||
|
* GLOBAL PROTOTYPES
|
||
|
**********************/
|
||
|
|
||
|
/**
|
||
|
* Add grid navigation feature to an object. It expects the children to be arranged
|
||
|
* into a grid-like layout. Although it's not required to have pixel perfect alignment.
|
||
|
* This feature makes possible to use keys to navigate among the children and focus them.
|
||
|
* The keys other than arrows and press/release related events
|
||
|
* are forwarded to the focused child.
|
||
|
* @param obj pointer to an object on which navigation should be applied.
|
||
|
* @param ctrl control flags from `lv_gridnav_ctrl_t`.
|
||
|
*/
|
||
|
void lv_gridnav_add(lv_obj_t * obj, lv_gridnav_ctrl_t ctrl);
|
||
|
|
||
|
/**
|
||
|
* Remove the grid navigation support from an object
|
||
|
* @param obj pointer to an object
|
||
|
*/
|
||
|
void lv_gridnav_remove(lv_obj_t * obj);
|
||
|
|
||
|
/**
|
||
|
* Manually focus an object on gridnav container
|
||
|
* @param cont pointer to a gridnav container
|
||
|
* @param to_focus pointer to an object to focus
|
||
|
* @param anim_en LV_ANIM_ON/OFF
|
||
|
*/
|
||
|
void lv_gridnav_set_focused(lv_obj_t * cont, lv_obj_t * to_focus, lv_anim_enable_t anim_en);
|
||
|
|
||
|
/**********************
|
||
|
* MACROS
|
||
|
**********************/
|
||
|
#endif /*LV_USE_GRIDNAV*/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /*extern "C"*/
|
||
|
#endif
|
||
|
|
||
|
#endif /*LV_GRIDFOCUS_H*/
|