added logging to current loaded image

This commit is contained in:
Timo Niemann
2026-07-01 15:34:38 +02:00
parent 1298347404
commit a7738a63be
+29
View File
@@ -3,6 +3,7 @@
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include "lvgl.h" #include "lvgl.h"
@@ -24,13 +25,30 @@ static lv_obj_t *image_tileview = NULL;
static lv_timer_t *image_slideshow_timer = NULL; static lv_timer_t *image_slideshow_timer = NULL;
static size_t image_browser_image_count = 0; static size_t image_browser_image_count = 0;
static size_t image_browser_current_index = 0; static size_t image_browser_current_index = 0;
static const char **image_browser_names = NULL;
static size_t image_browser_last_logged_index = SIZE_MAX;
static const char *TAG = "ui"; static const char *TAG = "ui";
static void ui_image_browser_log_current(void){
if(image_browser_current_index == image_browser_last_logged_index) return;
image_browser_last_logged_index = image_browser_current_index;
const char *filename = "?";
if(image_browser_names != NULL && image_browser_current_index < image_browser_image_count){
filename = image_browser_names[image_browser_current_index];
}
ui_log_appendf("Show %u/%u: %s",
(unsigned int)(image_browser_current_index + 1),
(unsigned int)image_browser_image_count,
filename);
}
static void ui_image_browser_set_index(size_t image_index, lv_anim_enable_t anim_en){ static void ui_image_browser_set_index(size_t image_index, lv_anim_enable_t anim_en){
if(image_tileview == NULL || image_browser_image_count == 0) return; if(image_tileview == NULL || image_browser_image_count == 0) return;
image_browser_current_index = image_index % image_browser_image_count; image_browser_current_index = image_index % image_browser_image_count;
lv_tileview_set_tile_by_index(image_tileview, 0, (uint32_t)image_browser_current_index, anim_en); lv_tileview_set_tile_by_index(image_tileview, 0, (uint32_t)image_browser_current_index, anim_en);
ui_image_browser_log_current();
} }
static void ui_image_slideshow_timer_cb(lv_timer_t *timer){ static void ui_image_slideshow_timer_cb(lv_timer_t *timer){
@@ -52,6 +70,7 @@ static void ui_image_browser_value_changed_event_cb(lv_event_t *event){
if(active_tile == NULL) return; if(active_tile == NULL) return;
image_browser_current_index = (size_t)(uintptr_t)lv_obj_get_user_data(active_tile); image_browser_current_index = (size_t)(uintptr_t)lv_obj_get_user_data(active_tile);
ui_image_browser_log_current();
} }
static bool ui_char_equals_ignore_case(char left_char, char right_char){ static bool ui_char_equals_ignore_case(char left_char, char right_char){
@@ -250,6 +269,11 @@ static void ui_create_image_tile(lv_obj_t *tile, const char *filename, size_t im
lv_obj_set_width(error_label, LV_PCT(86)); lv_obj_set_width(error_label, LV_PCT(86));
lv_obj_align(error_label, LV_ALIGN_CENTER, 0, -18); lv_obj_align(error_label, LV_ALIGN_CENTER, 0, -18);
} }
else{
ui_log_appendf("Loaded %u/%u: %s (%dx%d)",
(unsigned int)(image_index + 1), (unsigned int)image_count, filename,
(int)lv_image_get_src_width(image), (int)lv_image_get_src_height(image));
}
} }
static void ui_create_image_browser_tiles(size_t image_count){ static void ui_create_image_browser_tiles(size_t image_count){
@@ -262,6 +286,7 @@ static void ui_create_image_browser_tiles(size_t image_count){
lv_obj_t *tile = lv_tileview_add_tile(image_tileview, 0, (uint32_t)image_index, ui_get_tile_directions(image_index, image_count)); lv_obj_t *tile = lv_tileview_add_tile(image_tileview, 0, (uint32_t)image_index, ui_get_tile_directions(image_index, image_count));
lv_obj_set_user_data(tile, (void *)(uintptr_t)image_index); lv_obj_set_user_data(tile, (void *)(uintptr_t)image_index);
if(image_browser_names != NULL) image_browser_names[image_index] = filename;
ui_create_image_tile(tile, filename, image_index, image_count); ui_create_image_tile(tile, filename, image_index, image_count);
image_index++; image_index++;
} }
@@ -287,6 +312,7 @@ void ui_image_browser_build_view(lv_obj_t *screen){
lv_obj_set_scrollbar_mode(image_tileview, LV_SCROLLBAR_MODE_OFF); lv_obj_set_scrollbar_mode(image_tileview, LV_SCROLLBAR_MODE_OFF);
lv_obj_add_event_cb(image_tileview, ui_image_browser_value_changed_event_cb, LV_EVENT_VALUE_CHANGED, NULL); lv_obj_add_event_cb(image_tileview, ui_image_browser_value_changed_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
image_browser_image_count = image_count; image_browser_image_count = image_count;
image_browser_names = calloc(image_count, sizeof(const char *));
ui_create_image_browser_tiles(image_count); ui_create_image_browser_tiles(image_count);
ui_image_browser_set_index(0, LV_ANIM_OFF); ui_image_browser_set_index(0, LV_ANIM_OFF);
@@ -299,9 +325,12 @@ void ui_image_browser_reset(void){
image_slideshow_timer = NULL; image_slideshow_timer = NULL;
} }
free((void *)image_browser_names);
image_browser_names = NULL;
image_tileview = NULL; image_tileview = NULL;
image_browser_image_count = 0; image_browser_image_count = 0;
image_browser_current_index = 0; image_browser_current_index = 0;
image_browser_last_logged_index = SIZE_MAX;
} }
size_t ui_image_browser_get_image_count(void){ size_t ui_image_browser_get_image_count(void){