代码拉取完成,页面将自动刷新
/**
* @file m_lv_file_select.h
* @brief
* @author PanLin (786005498@qq.com)
* @version 1.0
* @date 2023-10-09
*
* @copyright Copyright (c) 2023
*/
#ifndef _M_LV_FILE_SELECT_H_
#define _M_LV_FILE_SELECT_H_
#ifdef __cplusplus
extern "C"
{
#endif
#include "../../lvgl/src/lv_conf_internal.h"
#include "../../lvgl/src/core/lv_obj.h"
/*是否支持基于stdio通用文件系统*/
#define M_FILE_SELECT_SUPPORT_STDIO_FS //注释则不支持
#if (LV_USE_FS_STDIO|| LV_USE_FS_POSIX || LV_USE_FS_WIN32 ||LV_USE_FS_FATFS)
#define M_FILE_SELECT_SUPPORT_LVGL_FS
#endif
#define M_FILE_SELECT_DIR_MAX_LEN 256 /*当前路径最大长度*/
#define M_FILE_SELECT_FILE_NAME_LEN 64 /*文件名最大长度*/
#define M_FILE_SELECT_FILTER_MAX_LEN 64 /*筛选文本最大长度*/
#define M_FILE_SELECT_OPEN_LIST_MAX_LEN 256 /*打开文件列表最大长度*/
#define M_FILE_SELECT_COLOR 0x338fff /*选中颜色*/
#define M_FILE_SELECT_LABLE_COLOR 0xFFFFFF /*选中字体颜色*/
/*图标*/
#define M_FILE_SELECT_ICON_BACK LV_SYMBOL_LEFT
#define M_FILE_SELECT_ICON_CURDIR LV_SYMBOL_EYE_OPEN
#define M_FILE_SELECT_ICON_CLOSE LV_SYMBOL_CLOSE
#define M_FILE_SELECT_ICON_OK LV_SYMBOL_OK
#define M_FILE_SELECT_ICON_DIR LV_SYMBOL_DIRECTORY
#define M_FILE_SELECT_ICON_FILE LV_SYMBOL_FILE
#define M_FILE_SELECT_ICON_IMAGE LV_SYMBOL_IMAGE
#define M_FILE_SELECT_ICON_VIDEO LV_SYMBOL_VIDEO
#define M_FILE_SELECT_ICON_AUDIO LV_SYMBOL_AUDIO
/**
* @brief m_lv_file_select_mode_t
* @note FILE_SELECT_MODE_ALL 和 FILE_SELECT_MODE_DIR 只能选一个。
* @note FILE_SELECT_MODE_ONE 和 FILE_SELECT_MODE_MULTI只能选一个。
* @note FILE_SELECT_MODE_ALL时,不能选择文件夹,只能选择文件
*/
typedef enum
{
FILE_SELECT_MODE_ALL = 0, //目录和文件都查看
FILE_SELECT_MODE_DIR = 1, //只查看目录
FILE_SELECT_MODE_ONE = (1 << 4), //单选模式
FILE_SELECT_MODE_MULTI = (1 << 5), //多选模式
} m_lv_file_select_mode_t;
typedef struct
{
uint16_t id;
char *text;
bool is_dir;
bool selct;
} selct_list_t;
typedef struct
{
lv_obj_t obj;
lv_obj_t *table;
lv_obj_t *cur_dir_lab;
lv_obj_t *ok_lab;
char cur_dir[M_FILE_SELECT_DIR_MAX_LEN];
char filter[M_FILE_SELECT_FILTER_MAX_LEN];
uint16_t row;
uint16_t selct_count;
uint16_t open_list_len;
char *selct_str;
selct_list_t *open_list[M_FILE_SELECT_OPEN_LIST_MAX_LEN];
bool (*srot)(const char*,const char*,bool);
bool srot_flag;
uint8_t mode;
bool select_flag;
} m_lv_file_select_t;
/**
* @brief 创建文件选择器
* @param parent 文件选择器的父对象
* @return 返回文件查看器指针
*/
lv_obj_t *m_lv_file_select_create(lv_obj_t *parent);
/**
* @brief 打开目录
* @param obj 文件选择器的指针
* @param dir 目录,它作为选择器的根目录
* @param mode 打开模式,目录,文件,多选,可以用 | 操作。
* @param filter 如果为NULL则显示所有文件,如果打开指定文件则输入后缀,例如: ".a .o .xxx",多个用空格隔开。
* @return 成功返回LV_FS_RES_OK,其他返回lv_fs_res_t的枚举。
*/
lv_fs_res_t m_lv_file_select_open(lv_obj_t *obj, const char *dir, m_lv_file_select_mode_t mode, const char *filter);
/**
* @brief 获取当前的目录
* @param obj 文件选择器的指针
* @return 当前的目录
*/
const char *m_lv_file_select_get_dir(lv_obj_t *obj);
/**
* @brief 读取当前选中的文件或目录
* @param obj 文件选择器的指针
* @return 返回字符串列表,使用 '\n' 隔开。
*/
const char *m_lv_file_select_read(lv_obj_t *obj);
/**
* @brief 设置排序方式
* @param obj 文件选择器的指针
* @param flag true:升序 | false:降序
*/
void m_lv_file_select_set_srot_flag(lv_obj_t *obj,bool flag);
/**
* @brief 设置自定义排序功能函数
* @param obj 文件选择器的指针
* @param fn 自定义的回调函数
* @note fn parame0:需要做比较的字符串1
* @note fn parame1:需要做比较的字符串2
* @note fn parame2:升序true,降序false.
* @note fn return: 交换ture,不交换false
*/
void m_lv_file_select_set_srot(lv_obj_t *obj,bool(*fn)(const char*,const char*,bool));
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /*_M_LV_FILE_SELECT_H_*/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。