init Files
This commit is contained in:
18
libraries/lvgl/examples/others/file_explorer/index.rst
Normal file
18
libraries/lvgl/examples/others/file_explorer/index.rst
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
Simple File Explorer
|
||||
--------------------
|
||||
|
||||
.. lv_example:: others/file_explorer/lv_example_file_explorer_1
|
||||
:language: c
|
||||
|
||||
Control File Explorer
|
||||
---------------------
|
||||
|
||||
.. lv_example:: others/file_explorer/lv_example_file_explorer_2
|
||||
:language: c
|
||||
|
||||
Custom sort
|
||||
-----------
|
||||
|
||||
.. lv_example:: others/file_explorer/lv_example_file_explorer_3
|
||||
:language: c
|
||||
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* @file lv_example_file_explorer.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LV_EX_FILE_EXPLORER_H
|
||||
#define LV_EX_FILE_EXPLORER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
void lv_example_file_explorer_1(void);
|
||||
void lv_example_file_explorer_2(void);
|
||||
void lv_example_file_explorer_3(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*LV_EX_FILE_EXPLORER_H*/
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
#include "../../lv_examples.h"
|
||||
|
||||
#if LV_USE_TABLE && LV_USE_FILE_EXPLORER && (LV_USE_FS_STDIO || LV_USE_FS_POSIX || LV_USE_FS_WIN32 || LV_USE_FS_FATFS) && LV_BUILD_EXAMPLES
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static void file_explorer_event_handler(lv_event_t * e)
|
||||
{
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_obj_t * obj = lv_event_get_target(e);
|
||||
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
const char * cur_path = lv_file_explorer_get_current_path(obj);
|
||||
const char * sel_fn = lv_file_explorer_get_selected_file_name(obj);
|
||||
LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
}
|
||||
}
|
||||
|
||||
void lv_example_file_explorer_1(void)
|
||||
{
|
||||
lv_obj_t * file_explorer = lv_file_explorer_create(lv_screen_active());
|
||||
lv_file_explorer_set_sort(file_explorer, LV_EXPLORER_SORT_KIND);
|
||||
|
||||
#if LV_USE_FS_WIN32
|
||||
lv_file_explorer_open_dir(file_explorer, "D:");
|
||||
#if LV_FILE_EXPLORER_QUICK_ACCESS
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_HOME_DIR, "C:/Users/Public/Desktop");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_VIDEO_DIR, "C:/Users/Public/Videos");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_PICTURES_DIR, "C:/Users/Public/Pictures");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_MUSIC_DIR, "C:/Users/Public/Music");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_DOCS_DIR, "C:/Users/Public/Documents");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_FS_DIR, "D:");
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* linux */
|
||||
lv_file_explorer_open_dir(file_explorer, "A:/");
|
||||
|
||||
#if LV_FILE_EXPLORER_QUICK_ACCESS
|
||||
char * envvar = "HOME";
|
||||
char home_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(home_dir, "A:");
|
||||
/* get the user's home directory from the HOME environment variable*/
|
||||
strcat(home_dir, getenv(envvar));
|
||||
LV_LOG_USER("home_dir: %s\n", home_dir);
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_HOME_DIR, home_dir);
|
||||
char video_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(video_dir, home_dir);
|
||||
strcat(video_dir, "/Videos");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_VIDEO_DIR, video_dir);
|
||||
char picture_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(picture_dir, home_dir);
|
||||
strcat(picture_dir, "/Pictures");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_PICTURES_DIR, picture_dir);
|
||||
char music_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(music_dir, home_dir);
|
||||
strcat(music_dir, "/Music");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_MUSIC_DIR, music_dir);
|
||||
char document_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(document_dir, home_dir);
|
||||
strcat(document_dir, "/Documents");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_DOCS_DIR, document_dir);
|
||||
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_FS_DIR, "A:/");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
lv_obj_add_event_cb(file_explorer, file_explorer_event_handler, LV_EVENT_ALL, NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
#include "../../lv_examples.h"
|
||||
|
||||
#if LV_USE_TABLE && LV_USE_DROPDOWN && LV_USE_FILE_EXPLORER && (LV_USE_FS_STDIO || LV_USE_FS_POSIX || LV_USE_FS_WIN32 || LV_USE_FS_FATFS) && LV_BUILD_EXAMPLES
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static void file_explorer_event_handler(lv_event_t * e)
|
||||
{
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_obj_t * obj = lv_event_get_target(e);
|
||||
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
const char * cur_path = lv_file_explorer_get_current_path(obj);
|
||||
const char * sel_fn = lv_file_explorer_get_selected_file_name(obj);
|
||||
|
||||
LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
}
|
||||
}
|
||||
|
||||
static void btn_event_handler(lv_event_t * e)
|
||||
{
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_obj_t * btn = lv_event_get_target(e);
|
||||
lv_obj_t * file_explorer = lv_event_get_user_data(e);
|
||||
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
if(lv_obj_has_state(btn, LV_STATE_CHECKED))
|
||||
lv_obj_add_flag(file_explorer, LV_OBJ_FLAG_HIDDEN);
|
||||
else
|
||||
lv_obj_remove_flag(file_explorer, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
static void dd_event_handler(lv_event_t * e)
|
||||
{
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_obj_t * dd = lv_event_get_target(e);
|
||||
lv_obj_t * fe_quick_access_obj = lv_event_get_user_data(e);
|
||||
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
char buf[32];
|
||||
lv_dropdown_get_selected_str(dd, buf, sizeof(buf));
|
||||
if(strcmp(buf, "NONE") == 0) {
|
||||
lv_file_explorer_set_sort(fe_quick_access_obj, LV_EXPLORER_SORT_NONE);
|
||||
}
|
||||
else if(strcmp(buf, "KIND") == 0) {
|
||||
lv_file_explorer_set_sort(fe_quick_access_obj, LV_EXPLORER_SORT_KIND);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void lv_example_file_explorer_2(void)
|
||||
{
|
||||
lv_obj_t * file_explorer = lv_file_explorer_create(lv_screen_active());
|
||||
|
||||
#if LV_USE_FS_WIN32
|
||||
lv_file_explorer_open_dir(file_explorer, "D:");
|
||||
#if LV_FILE_EXPLORER_QUICK_ACCESS
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_HOME_DIR, "C:/Users/Public/Desktop");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_VIDEO_DIR, "C:/Users/Public/Videos");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_PICTURES_DIR, "C:/Users/Public/Pictures");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_MUSIC_DIR, "C:/Users/Public/Music");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_DOCS_DIR, "C:/Users/Public/Documents");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_FS_DIR, "D:");
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* linux */
|
||||
lv_file_explorer_open_dir(file_explorer, "A:/");
|
||||
#if LV_FILE_EXPLORER_QUICK_ACCESS
|
||||
char * envvar = "HOME";
|
||||
char home_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(home_dir, "A:");
|
||||
/* get the user's home directory from the HOME environment variable*/
|
||||
strcat(home_dir, getenv(envvar));
|
||||
LV_LOG_USER("home_dir: %s\n", home_dir);
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_HOME_DIR, home_dir);
|
||||
char video_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(video_dir, home_dir);
|
||||
strcat(video_dir, "/Videos");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_VIDEO_DIR, video_dir);
|
||||
char picture_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(picture_dir, home_dir);
|
||||
strcat(picture_dir, "/Pictures");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_PICTURES_DIR, picture_dir);
|
||||
char music_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(music_dir, home_dir);
|
||||
strcat(music_dir, "/Music");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_MUSIC_DIR, music_dir);
|
||||
char document_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(document_dir, home_dir);
|
||||
strcat(document_dir, "/Documents");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_DOCS_DIR, document_dir);
|
||||
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_FS_DIR, "A:/");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
lv_obj_add_event_cb(file_explorer, file_explorer_event_handler, LV_EVENT_ALL, NULL);
|
||||
|
||||
/*Quick access status control button*/
|
||||
lv_obj_t * fe_quick_access_obj = lv_file_explorer_get_quick_access_area(file_explorer);
|
||||
lv_obj_t * fe_header_obj = lv_file_explorer_get_header(file_explorer);
|
||||
lv_obj_t * btn = lv_button_create(fe_header_obj);
|
||||
lv_obj_set_style_radius(btn, 2, 0);
|
||||
lv_obj_set_style_pad_all(btn, 4, 0);
|
||||
lv_obj_align(btn, LV_ALIGN_LEFT_MID, 0, 0);
|
||||
lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE);
|
||||
|
||||
lv_obj_t * label = lv_label_create(btn);
|
||||
lv_label_set_text(label, LV_SYMBOL_LIST);
|
||||
lv_obj_center(label);
|
||||
|
||||
lv_obj_add_event_cb(btn, btn_event_handler, LV_EVENT_VALUE_CHANGED, fe_quick_access_obj);
|
||||
|
||||
/*Sort control*/
|
||||
static const char * opts = "NONE\n"
|
||||
"KIND";
|
||||
|
||||
lv_obj_t * dd = lv_dropdown_create(fe_header_obj);
|
||||
lv_obj_set_style_radius(dd, 4, 0);
|
||||
lv_obj_set_style_pad_all(dd, 0, 0);
|
||||
lv_obj_set_size(dd, LV_PCT(30), LV_SIZE_CONTENT);
|
||||
lv_dropdown_set_options_static(dd, opts);
|
||||
lv_obj_align(dd, LV_ALIGN_RIGHT_MID, 0, 0);
|
||||
|
||||
lv_obj_add_event_cb(dd, dd_event_handler, LV_EVENT_VALUE_CHANGED, file_explorer);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,116 @@
|
||||
|
||||
#include "../../lv_examples.h"
|
||||
|
||||
#if LV_USE_TABLE && LV_USE_FILE_EXPLORER && (LV_USE_FS_STDIO || LV_USE_FS_POSIX || LV_USE_FS_WIN32 || LV_USE_FS_FATFS) && LV_BUILD_EXAMPLES
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
static void exch_table_item(lv_obj_t * tb, int16_t i, int16_t j)
|
||||
{
|
||||
const char * tmp;
|
||||
tmp = lv_table_get_cell_value(tb, i, 0);
|
||||
lv_table_set_cell_value(tb, 0, 2, tmp);
|
||||
lv_table_set_cell_value(tb, i, 0, lv_table_get_cell_value(tb, j, 0));
|
||||
lv_table_set_cell_value(tb, j, 0, lv_table_get_cell_value(tb, 0, 2));
|
||||
|
||||
tmp = lv_table_get_cell_value(tb, i, 1);
|
||||
lv_table_set_cell_value(tb, 0, 2, tmp);
|
||||
lv_table_set_cell_value(tb, i, 1, lv_table_get_cell_value(tb, j, 1));
|
||||
lv_table_set_cell_value(tb, j, 1, lv_table_get_cell_value(tb, 0, 2));
|
||||
}
|
||||
|
||||
/*Quick sort 3 way*/
|
||||
static void sort_by_file_kind(lv_obj_t * tb, int16_t lo, int16_t hi)
|
||||
{
|
||||
if(lo >= hi) return;
|
||||
|
||||
int16_t lt = lo;
|
||||
int16_t i = lo + 1;
|
||||
int16_t gt = hi;
|
||||
const char * v = lv_table_get_cell_value(tb, lo, 1);
|
||||
while(i <= gt) {
|
||||
if(strcmp(lv_table_get_cell_value(tb, i, 1), v) < 0)
|
||||
exch_table_item(tb, lt++, i++);
|
||||
else if(strcmp(lv_table_get_cell_value(tb, i, 1), v) > 0)
|
||||
exch_table_item(tb, i, gt--);
|
||||
else
|
||||
i++;
|
||||
}
|
||||
|
||||
sort_by_file_kind(tb, lo, lt - 1);
|
||||
sort_by_file_kind(tb, gt + 1, hi);
|
||||
}
|
||||
|
||||
static void file_explorer_event_handler(lv_event_t * e)
|
||||
{
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_obj_t * obj = lv_event_get_target(e);
|
||||
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
const char * cur_path = lv_file_explorer_get_current_path(obj);
|
||||
const char * sel_fn = lv_file_explorer_get_selected_file_name(obj);
|
||||
|
||||
LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
}
|
||||
else if(code == LV_EVENT_READY) {
|
||||
lv_obj_t * tb = lv_file_explorer_get_file_table(obj);
|
||||
uint16_t sum = lv_table_get_row_count(tb);
|
||||
|
||||
sort_by_file_kind(tb, 0, (sum - 1));
|
||||
}
|
||||
}
|
||||
|
||||
void lv_example_file_explorer_3(void)
|
||||
{
|
||||
lv_obj_t * file_explorer = lv_file_explorer_create(lv_screen_active());
|
||||
/*Before custom sort, please set the default sorting to NONE. The default is NONE.*/
|
||||
lv_file_explorer_set_sort(file_explorer, LV_EXPLORER_SORT_NONE);
|
||||
|
||||
#if LV_USE_FS_WIN32
|
||||
lv_file_explorer_open_dir(file_explorer, "D:");
|
||||
#if LV_FILE_EXPLORER_QUICK_ACCESS
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_HOME_DIR, "C:/Users/Public/Desktop");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_VIDEO_DIR, "C:/Users/Public/Videos");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_PICTURES_DIR, "C:/Users/Public/Pictures");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_MUSIC_DIR, "C:/Users/Public/Music");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_DOCS_DIR, "C:/Users/Public/Documents");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_FS_DIR, "D:");
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* linux */
|
||||
lv_file_explorer_open_dir(file_explorer, "A:/");
|
||||
#if LV_FILE_EXPLORER_QUICK_ACCESS
|
||||
char * envvar = "HOME";
|
||||
char home_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(home_dir, "A:");
|
||||
/* get the user's home directory from the HOME environment variable*/
|
||||
strcat(home_dir, getenv(envvar));
|
||||
LV_LOG_USER("home_dir: %s\n", home_dir);
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_HOME_DIR, home_dir);
|
||||
char video_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(video_dir, home_dir);
|
||||
strcat(video_dir, "/Videos");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_VIDEO_DIR, video_dir);
|
||||
char picture_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(picture_dir, home_dir);
|
||||
strcat(picture_dir, "/Pictures");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_PICTURES_DIR, picture_dir);
|
||||
char music_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(music_dir, home_dir);
|
||||
strcat(music_dir, "/Music");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_MUSIC_DIR, music_dir);
|
||||
char document_dir[LV_FS_MAX_PATH_LENGTH];
|
||||
strcpy(document_dir, home_dir);
|
||||
strcat(document_dir, "/Documents");
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_DOCS_DIR, document_dir);
|
||||
|
||||
lv_file_explorer_set_quick_access_path(file_explorer, LV_EXPLORER_FS_DIR, "A:/");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
lv_obj_add_event_cb(file_explorer, file_explorer_event_handler, LV_EVENT_ALL, NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user