text/plain
•
2.23 KB
•
80 lines
#include "ui.h"
#include "lvgl.h"
#include "storage.h"
#include <stdlib.h>
#include <string.h>
char string_buffer[256];
lv_obj_t *bvs_list_add_button(lv_obj_t *list, const void *icon,
const char *txt) {
lv_obj_t *ret = lv_list_add_button(list, icon, txt);
lv_obj_set_style_pad_hor(ret, 2, 0);
lv_obj_set_style_pad_ver(ret, 1, 0);
return ret;
}
lv_obj_t *bvs_list_add_header(lv_obj_t *list, const char *txt) {
lv_obj_t *header = lv_list_add_text(list, txt);
lv_obj_set_style_bg_color(header, lv_palette_main(LV_PALETTE_LIGHT_BLUE), 0);
lv_obj_set_style_bg_opa(header, LV_OPA_COVER, 0);
lv_obj_set_style_text_color(header, lv_color_white(), 0);
return header;
}
lv_obj_t *bvs_list_create(void) {
lv_obj_t *list = lv_list_create(lv_screen_active());
lv_obj_set_style_pad_hor(list, 4, 0);
lv_obj_set_size(list, LV_PCT(100), LV_PCT(100));
lv_obj_center(list);
return list;
}
void bvs_list_clear(lv_obj_t *list) {
if (!list)
return;
uint32_t count = lv_obj_get_child_count(list);
for (uint32_t i = 0; i < count; i++)
lv_group_remove_obj(lv_obj_get_child(list, i));
lv_obj_delete(list);
}
void path_parent(const char *path, char *parent, size_t parent_size,
char *basename, size_t basename_size) {
strncpy(parent, path, parent_size);
parent[parent_size - 1] = '\0';
char *last_slash = strrchr(parent, '/');
if (!last_slash || last_slash == parent) {
strncpy(basename, parent + 1, basename_size);
basename[basename_size - 1] = '\0';
strcpy(parent, "/");
} else {
strncpy(basename, last_slash + 1, basename_size);
basename[basename_size - 1] = '\0';
*last_slash = '\0';
}
}
int entry_name_cmp(const void *a, const void *b) {
const storage_entry_t *ea = a;
const storage_entry_t *eb = b;
return strcmp(ea->name, eb->name);
}
int get_sorted_entries(const char *dir, storage_entry_t *entries,
int max_entries) {
int count = storage_list_dir(dir, entries, max_entries);
if (count <= 0)
return 0;
qsort(entries, (size_t)count, sizeof(storage_entry_t), entry_name_cmp);
int visible = 0;
for (int i = 0; i < count; i++) {
if (entries[i].name[0] != '.')
entries[visible++] = entries[i];
}
return visible;
}