/*
* Project: linux-kit
* Module: common
* File: common.c
* Created Date: 2023-03-17 17:51:06
* Author: wangshuqiang
* Description: common file
* -----
* todo: modified
* -----
* Copyright (c) 2023 - vDiscovery, Inc
*/
/* ======================================================================================
* log
*/
#include <src/core/lv_disp.h>
#include <src/core/lv_obj.h>
#include <src/widgets/lv_roller.h>
#include <stdio.h>
#include "base_type.h"
#include "src/core/lv_obj.h"
#include "src/core/lv_obj_pos.h"
#include "src/core/lv_obj_tree.h"
#include "vd_log.h"
#define LOG_ENABLE_DEBUG (1)
/* ======================================================================================
* includes
*/
// #include "app_video1.h"
#include "base.h"
#include <math.h>
#include "app_src_common.h"
#include "lvgl.h"
#include "src/resource/app_resource.h"
// #include "lvgl_json.h"
// #include "src/resource/app_resource.h"
/* ======================================================================================
* macros
*/
// 步进条相关
#define COMMON_STEPPER_STRIP_LENGTH 72 // 长条宽度
#define COMMON_STEPPER_POINT_LENGTH 10 // 圆点宽度
#define COMMON_STEPPER_GAP_HOME 35 // 距离
#define COMMON_STEPPER_GAP_AUTO_SELECT 15 // 距离
/* ======================================================================================
* types
*/
/* ======================================================================================
* declaration
*/
const char *tips_img_dscaddr[] = {
APP_LZO_IMG_PATH "strip" APP_PIC_FORMAT,
APP_LZO_IMG_PATH "black_point" APP_PIC_FORMAT,
};
/* ======================================================================================
* globals
*/
static lv_obj_t *tips_obj = vd_null;
static lv_obj_t *image_data[255] = {0};
/* ======================================================================================
* helper
*/
static uint32_t old_step_id = 0;
static uint32_t menu_id = 0;
static uint32_t steps_count = 0;
static uint32_t steps_start_x = 0;
static uint32_t common_stepper_gap = 35;
static lv_area_t old_coords = {0};
static lv_area_t new_coords = {0};
static lv_anim_t a1;
static lv_anim_t a2;
static lv_anim_t a3;
static lv_anim_t a4;
/* ======================================================================================
* private implementation
*/
/* ======================================================================================
* implementation
*/
static vd_void_t app_common_stepper_anim_callback(void *var, int value) {
lv_obj_set_x(var, value);
}
/**
* @Date: 2024-07-23 20:24:53
* @Function: app_common_stepper_create
* @Description: 创建步骤进度条
* @Param: steps_count_data 步骤总数
* @Return:
* @param {lv_obj_t} *obj
* @param {vd_int32_t} steps_count_data
*/
lv_obj_t *app_common_stepper_create(lv_obj_t *obj, vd_int32_t steps_count_data,
step_anim_mode_e mode) {
steps_count = steps_count_data;
if (mode == STEP_ANIM_MODE_E_HOME) {
common_stepper_gap = COMMON_STEPPER_GAP_HOME;
// 计算起始位置
#if 0
800/2 屏幕中心
所有控件的总长度/2(COMMON_STEPPER_STRIP_LENGTH+(steps_count-1)*common_stepper_gap+(steps_count-1)*COMMON_STEPPER_POINT_LENGTH)/2 总长度/2
#endif
steps_start_x =
800 / 2 -
(COMMON_STEPPER_STRIP_LENGTH + (steps_count - 1) * common_stepper_gap +
(steps_count - 1) * COMMON_STEPPER_POINT_LENGTH) /
2;
} else {
// 计算间距
common_stepper_gap = (800 - COMMON_STEPPER_STRIP_LENGTH) / (steps_count);
// common_stepper_gap = COMMON_STEPPER_GAP_AUTO_SELECT;
#if 0
800/2 屏幕中心
所有控件的总长度/2(COMMON_STEPPER_STRIP_LENGTH+(steps_count-1)*common_stepper_gap+(steps_count-1)*COMMON_STEPPER_POINT_LENGTH)/2 总长度/2
#endif
steps_start_x =
(800 - common_stepper_gap * steps_count - COMMON_STEPPER_STRIP_LENGTH)/2;
}
tips_obj = lv_obj_create(obj); // 创建一个父控件obj
lv_obj_remove_style_all(tips_obj);
lv_obj_set_size(tips_obj, 800, 480);
lv_obj_set_style_bg_opa(tips_obj, LV_OPA_0, LV_PART_MAIN);
lv_obj_set_style_bg_color(tips_obj, lv_color_black(), LV_PART_MAIN);
lv_obj_set_style_border_width(tips_obj, 0, LV_PART_MAIN);
lv_obj_set_pos(tips_obj, 0, 0);
// 向父控件内添加子控件
for (int i = 1; i < steps_count; i++) {
lv_obj_t *icon_img = lv_img_create(tips_obj);
image_data[i] = icon_img;
lv_img_set_src(icon_img, (tips_img_dscaddr[1]));
lv_obj_set_pos(icon_img,
i * common_stepper_gap + steps_start_x +
COMMON_STEPPER_STRIP_LENGTH,
450);
}
lv_obj_t *icon_img = lv_img_create(tips_obj);
image_data[0] = icon_img;
lv_img_set_src(icon_img, (tips_img_dscaddr[0]));
lv_obj_set_pos(icon_img, steps_start_x, 450);
return tips_obj;
}
vd_void_t app_common_stepper_set_current_step(int32_t current_step) {
menu_id = current_step;
// 新选项大于旧选项时处理
if (old_step_id < menu_id) {
// 当前是第一个选项,左旋切换到最后一个选项时处理
if (old_step_id == 0 && menu_id == steps_count - 1) {
lv_obj_get_coords(image_data[0], &old_coords);
lv_obj_get_coords(image_data[steps_count - 1], &new_coords);
lv_anim_init(&a3);
lv_anim_set_exec_cb(&a3, app_common_stepper_anim_callback);
lv_anim_set_var(&a3, image_data[0]);
lv_anim_set_values(&a3, old_coords.x1,
new_coords.x1 - COMMON_STEPPER_STRIP_LENGTH);
lv_anim_set_time(&a3, 200);
lv_anim_start(&a3);
for (int i = 1; i <= steps_count - 1; i++) {
lv_obj_get_coords(image_data[i], &new_coords);
static lv_anim_t a5;
lv_anim_init(&a5);
lv_anim_set_exec_cb(&a5, app_common_stepper_anim_callback);
lv_anim_set_var(&a5, image_data[i]);
lv_anim_set_values(
&a5, new_coords.x1,
new_coords.x1 - common_stepper_gap -
COMMON_STEPPER_STRIP_LENGTH); // 10为圆点宽度 72长条宽度
// 35位控件距离
lv_anim_set_time(&a5, 200);
lv_anim_start(&a5);
}
} // 选项依次递增的处理
else {
lv_obj_get_coords(image_data[0], &old_coords);
lv_obj_get_coords(image_data[menu_id], &new_coords);
lv_anim_init(&a3);
lv_anim_set_exec_cb(&a3, app_common_stepper_anim_callback);
lv_anim_set_var(&a3, image_data[0]);
lv_anim_set_values(&a3, old_coords.x1,
old_coords.x1 + common_stepper_gap);
lv_anim_set_time(&a3, 200);
lv_anim_init(&a4);
lv_anim_set_exec_cb(&a4, app_common_stepper_anim_callback);
lv_anim_set_var(&a4, image_data[menu_id]);
lv_anim_set_values(&a4, new_coords.x1, old_coords.x1);
lv_anim_set_time(&a4, 200);
lv_anim_start(&a3);
lv_anim_start(&a4);
}
} // 新选项小于旧选项时处理
else {
// 当前是最后1个选项,右旋切换到第一个选项时处理
if (old_step_id == steps_count - 1 && menu_id == 0) {
lv_obj_get_coords(image_data[0], &old_coords);
lv_obj_get_coords(image_data[1], &new_coords);
lv_anim_init(&a3);
lv_anim_set_exec_cb(&a3, app_common_stepper_anim_callback);
lv_anim_set_var(&a3, image_data[0]);
lv_anim_set_values(&a3, old_coords.x1, steps_start_x);
lv_anim_set_time(&a3, 200);
lv_anim_start(&a3);
for (int i = 1; i <= steps_count - 1; i++) {
lv_obj_get_coords(image_data[i], &new_coords);
static lv_anim_t a5;
lv_anim_init(&a5);
lv_anim_set_exec_cb(&a5, app_common_stepper_anim_callback);
lv_anim_set_var(&a5, image_data[i]);
lv_anim_set_values(&a5, new_coords.x1,
steps_start_x + COMMON_STEPPER_STRIP_LENGTH +
common_stepper_gap *
i); // 10为圆点宽度 72长条宽度 35位控件距离
lv_anim_set_time(&a5, 200);
lv_anim_start(&a5);
}
} else {
if (old_step_id != menu_id) {
lv_obj_get_coords(image_data[0], &old_coords);
lv_obj_get_coords(image_data[old_step_id], &new_coords);
lv_anim_init(&a3);
lv_anim_set_exec_cb(&a3, app_common_stepper_anim_callback);
lv_anim_set_var(&a3, image_data[0]);
lv_anim_set_values(&a3, old_coords.x1,
old_coords.x1 - common_stepper_gap);
lv_anim_set_time(&a3, 200);
lv_anim_init(&a4);
lv_anim_set_exec_cb(&a4, app_common_stepper_anim_callback);
lv_anim_set_var(&a4, image_data[old_step_id]);
lv_anim_set_values(
&a4, new_coords.x1,
new_coords.x1 + COMMON_STEPPER_STRIP_LENGTH + common_stepper_gap -
COMMON_STEPPER_POINT_LENGTH); // 10为圆点宽度 72长条宽度
// 35位控件距离
lv_anim_set_time(&a4, 200);
lv_anim_start(&a3);
lv_anim_start(&a4);
} else {
if (menu_id == 0) {
} else {
for (int i = 1; i <= menu_id; i++) {
lv_obj_set_pos(image_data[0],
steps_start_x + common_stepper_gap * i, 450);
lv_obj_set_pos(image_data[i],
steps_start_x + common_stepper_gap * (i - 1), 450);
}
}
}
}
}
old_step_id = menu_id;
}
vd_void_t app_common_stepper_current_step_destroy() {
old_step_id = 0;
menu_id = 0;
// steps_start_x = 0;
if (tips_obj != NULL) {
lv_obj_del(tips_obj);
tips_obj = NULL;
}
}
主菜单滑动实现:
/*
* Project: vdtools
* Module: module_name
* File: Untitled-1
* Created Date: 2024-07-22 10:36:32
* Author: vdtools
* Description: description
* -----
* todo: modified
* -----
* Copyright (c) 2021 - vDiscovery, Inc
*/
/* ======================================================================================
* log
*/
#include "lv_anim.h"
#include "lv_area.h"
#include "src/core/lv_disp.h"
#include "src/core/lv_obj.h"
#include "src/core/lv_obj_pos.h"
#include <stdio.h>
#define LOG_ENABLE_DEBUG (1)
/* ======================================================================================
* includes
*/
#include "app_manual_cooking.h"
#include "base.h"
#include "lvgl.h"
#include "lvgl_json.h"
#include "src/resource/app_resource.h"
/* ======================================================================================
* macros
*/
#define MENU_NUM 6
/* ======================================================================================
* types
*/
/* ======================================================================================
* declaration
*/
vd_void_t app_manual_cooking_on_create(lv_obj_t* scr, app_scr_info_t data);
vd_void_t app_manual_cooking_on_update(lv_obj_t* scr, app_scr_info_t data);
vd_void_t app_manual_cooking_on_destroy(lv_obj_t* scr);
/* ======================================================================================
* globals
*/
static lv_obj_t* menu_bg_img = vd_null;
static lv_obj_t* container = vd_null;
static lv_obj_t* btn_recipe = vd_null;
static lv_obj_t* tabview = vd_null;
static lv_obj_t* tips_obj = vd_null;
static lv_obj_t* obj_data[15] = {0};
static lv_obj_t* label_data[15] = {0};
static lv_obj_t* image_data[15] = {0};
static uint32_t menu_id = 0;
static uint32_t old_menu_id = 0;
static uint32_t last_menu_id = 0;
static uint32_t last_pos_x1 = 299;
static uint32_t last_pos_x2 = 396;
static lv_anim_t a1;
static lv_anim_t a2;
static lv_anim_t a3;
static lv_anim_t a4;
static lv_area_t old_coords={0};
static lv_area_t new_coords={0};
static lv_area_t last_coords={0};
const char* guide_img_dscaddr[] = {
APP_LZO_IMG_PATH"olive"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"orange"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"cookie_bowl"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"pesto"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"eggs"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"eggs"APP_PIC_FORMAT,
};
const char*mode_img_dscaddr[] = {
APP_LZO_IMG_PATH"component_98_1"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"component_100_1"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"component_102_1"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"component_104_1"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"component_112_1"APP_PIC_FORMAT,
APP_LZO_IMG_PATH"component_114_1"APP_PIC_FORMAT,
};
uint32_t x_pos[MENU_NUM] = {
568,
569,
594,
632,
521,
-100,
};
uint16_t y_pos[MENU_NUM] = {180, 323, 217, 130, 148, 148,};
char* buf_txt[MENU_NUM] = {
"MANUEL\nPİŞİRME",
"OTOMATİK\nPİŞİRME",
"OZEL\nFONKSIYON",
"KADEMELI\nPISIRME",
"SON\nKULLANLAN",
"AYARLAR",
};
/* ======================================================================================
* helper
*/
/* ======================================================================================
* private implementation
*/
static void set_pos_x_label(void* bar, int32_t value) {
lv_obj_set_x(bar, value);
}
void lv_obj_anim_ready_cb(lv_anim_t* a) {
lv_obj_scroll_to_view(lv_obj_get_child(container, menu_id), LV_ANIM_ON);
// lv_obj_t* old_child1 = lv_obj_get_child(container, old_menu_id);
// lv_obj_t* new_child1 = lv_obj_get_child(container, menu_id);
// lv_obj_set_style_width(old_child1, 85, 0);
// lv_obj_set_style_width(new_child1, 357, 0);
}
static void lv_obj_anim_start_cb(lv_anim_t* a) {
lv_tabview_set_act(tabview, menu_id, LV_ANIM_ON);
lv_obj_set_scroll_snap_x(container, LV_SCROLL_SNAP_CENTER);
}
static void set_weight_label(void* bar, int32_t value) {
lv_obj_set_style_width(bar, value, 0);
lv_obj_add_flag(label_data[old_menu_id], LV_OBJ_FLAG_HIDDEN);
lv_obj_clear_flag(label_data[menu_id], LV_OBJ_FLAG_HIDDEN);
}
static void set_x(void* bar, int32_t value) {
lv_obj_set_x(bar, value);
}
/* ======================================================================================
* implementation
*/
vd_void_t app_manual_cooking_on_create(lv_obj_t* scr, app_scr_info_t data) {
lv_json_bind(scr, APP_LAYOUT_MANUAL_COOKING_JSON_STR);
menu_bg_img = lv_json_find_widget(scr, APP_ID_MANUAL_COOKING_MENU_BG_IMG);
lv_img_set_src(menu_bg_img, APP_LZO_IMG_PATH "default_bkg" APP_PIC_FORMAT);
tabview = lv_tabview_create(menu_bg_img, LV_DIR_TOP, 50);
lv_obj_set_style_bg_opa(tabview, LV_OPA_TRANSP, APP_DEFAULT_SELECTOR);
lv_obj_t* btns = lv_tabview_get_tab_btns(tabview);
lv_obj_set_style_size(btns, 0, 0);
lv_obj_set_size(tabview, LV_HOR_RES+120, LV_VER_RES);
//创建全局状态栏
app_common_statusbar_create();
for (int i = 0; i < MENU_NUM; i++) {
lv_obj_t* tab1 = lv_tabview_add_tab(tabview, "");
lv_obj_set_scrollbar_mode(tab1, LV_SCROLLBAR_MODE_OFF);
lv_obj_set_scroll_dir(tab1, LV_DIR_VER);
lv_obj_t* img1 = lv_img_create(tab1);
lv_img_set_src(img1, (guide_img_dscaddr[i]));
lv_obj_set_pos(img1, x_pos[i], y_pos[i]);
}
container = lv_obj_create(menu_bg_img); //创建一个父控件obj
lv_obj_set_size(container, LV_HOR_RES, LV_VER_RES-40);
lv_obj_set_scrollbar_mode(container, LV_SCROLLBAR_MODE_OFF);
lv_obj_set_scroll_dir(container, LV_DIR_HOR); //设置滚动方向
lv_obj_set_flex_flow(container, LV_FLEX_FLOW_ROW); //设置布局
lv_obj_set_flex_align(container, LV_FLEX_ALIGN_CENTER, LV_SCROLL_SNAP_CENTER, LV_SCROLL_SNAP_CENTER);
lv_obj_set_scroll_snap_x(container, LV_SCROLL_SNAP_CENTER);
lv_obj_set_style_pad_all(container, 0, 0);
lv_obj_set_style_bg_opa(container, LV_OPA_0, LV_PART_MAIN);
lv_obj_set_style_bg_color(container, lv_color_black(), LV_PART_MAIN);
lv_obj_set_style_border_width(container, 0, LV_PART_MAIN);
lv_obj_set_style_pad_column(container, 10, LV_PART_MAIN); // 图标之间的间隙
lv_obj_set_pos(container, 0, 40);
// 向父控件内添加子控件
for (int i = 0; i < MENU_NUM; i++) {
btn_recipe = lv_obj_create(container);
obj_data[i] = btn_recipe;
lv_obj_remove_style_all(btn_recipe);
lv_obj_set_style_border_width(btn_recipe, 0, 0);
lv_obj_set_style_pad_all(btn_recipe, 0, 0);
lv_obj_set_style_bg_color(btn_recipe, lv_color_hex(0x888888), LV_PART_MAIN);
lv_obj_set_style_bg_opa(btn_recipe, LV_OPA_60, LV_PART_MAIN);
lv_obj_set_style_radius(btn_recipe, 10, 0);
if (i == 0) {
lv_obj_set_size(btn_recipe, 357, 336);
} else {
lv_obj_set_size(btn_recipe, 85, 336);
}
lv_obj_align(btn_recipe, LV_ALIGN_CENTER, 0, 96);
lv_obj_t* mode_img = lv_img_create(btn_recipe);
lv_img_set_src(mode_img, (mode_img_dscaddr[i]));
lv_obj_align(mode_img, LV_ALIGN_TOP_RIGHT, -10, 20);
lv_obj_t* label1 = lv_label_create(btn_recipe);
label_data[i] = label1;
lv_label_set_text_fmt(label1, "%s", buf_txt[i]);
lv_obj_set_style_text_font(label1, g_leaguespartan_bold_42.font, LV_PART_MAIN);
lv_label_set_recolor(label1, true);
lv_label_set_long_mode(label1, LV_LABEL_LONG_WRAP);
lv_obj_set_style_text_color(label1, lv_color_hex(0xffffff), LV_PART_MAIN);
lv_obj_set_style_text_align(label1, LV_TEXT_ALIGN_CENTER, 0);
lv_obj_align(label1, LV_ALIGN_BOTTOM_MID, 0, 0);
lv_obj_add_flag(label1, LV_OBJ_FLAG_HIDDEN);
if (i == 0) {
lv_obj_clear_flag(label1, LV_OBJ_FLAG_HIDDEN);
}
}
lv_obj_scroll_to_view(lv_obj_get_child(container, 0), LV_ANIM_OFF);
lv_obj_add_flag(container, LV_OBJ_FLAG_SCROLL_MOMENTUM);
#if DEF_TEST
app_common_stepper_create(lv_scr_act(),MENU_NUM,STEP_ANIM_MODE_E_HOME);
#else
tips_obj = lv_obj_create(lv_scr_act()); //创建一个父控件obj
lv_obj_set_size(tips_obj, 250, 20);
lv_obj_set_scrollbar_mode(tips_obj, LV_SCROLLBAR_MODE_OFF);
lv_obj_set_scroll_dir(tips_obj, LV_DIR_HOR); //设置滚动方向
lv_obj_set_flex_flow(tips_obj, LV_FLEX_FLOW_ROW); //设置布局
lv_obj_set_flex_align(tips_obj, LV_FLEX_ALIGN_CENTER, LV_SCROLL_SNAP_CENTER, LV_SCROLL_SNAP_CENTER);
lv_obj_set_scroll_snap_x(tips_obj, LV_SCROLL_SNAP_CENTER);
lv_obj_set_style_bg_opa(tips_obj, LV_OPA_0, LV_PART_MAIN);
lv_obj_set_style_bg_color(tips_obj, lv_color_black(), LV_PART_MAIN);
lv_obj_set_style_border_width(tips_obj, 0, LV_PART_MAIN);
lv_obj_set_style_pad_column(tips_obj, 10, LV_PART_MAIN); // 图标之间的间隙
lv_obj_align(tips_obj, LV_ALIGN_BOTTOM_MID, 0, -19);
// 向父控件内添加子控件
for (int i = 0; i < MENU_NUM; i++) {
lv_obj_t* icon_img = lv_img_create(tips_obj);
image_data[i] = icon_img;
lv_img_set_src(icon_img, (tips_img_dscaddr[i]));
lv_obj_align(icon_img, LV_ALIGN_CENTER, 0, 0);
}
lv_obj_scroll_to_view(lv_obj_get_child(tips_obj, 0), LV_ANIM_OFF);
lv_obj_add_flag(tips_obj, LV_OBJ_FLAG_SCROLL_MOMENTUM);
#endif
if (data != NULL) {
app_manual_cooking_on_update(scr, data);
}
}
vd_void_t app_manual_cooking_on_update(lv_obj_t* scr, app_scr_info_t data) {
menu_info_t* menu = (menu_info_t*)data;
menu_id = menu->menu_info_id;
//下一次更新到来,动画未运行完时,删除动画
lv_anim_del_all();
lv_anim_init(&a1);
lv_anim_set_exec_cb(&a1, set_weight_label);
lv_anim_set_time(&a1, lv_obj_get_scrollbar_anim_time());
lv_anim_set_ready_cb(&a1, lv_obj_anim_ready_cb);
lv_anim_set_start_cb(&a1, lv_obj_anim_start_cb);
lv_anim_init(&a2);
lv_anim_set_exec_cb(&a2, set_weight_label);
lv_anim_set_time(&a2, lv_obj_get_scrollbar_anim_time());
lv_anim_set_ready_cb(&a2, lv_obj_anim_ready_cb);
lv_anim_set_start_cb(&a2, lv_obj_anim_start_cb);
if (old_menu_id < menu_id) {
lv_anim_set_var(&a1, obj_data[old_menu_id]);
lv_anim_set_values(&a1, 357, 85);
lv_anim_set_var(&a2, obj_data[menu_id]);
lv_anim_set_values(&a2, 85, 357);
//避免快速切换删除动画导致动画运行不完整
if (old_menu_id>0) {
lv_obj_set_style_width(obj_data[old_menu_id-1], 85, 0);
lv_obj_set_style_width(obj_data[old_menu_id], 357, 0);
}
} else {
lv_anim_set_var(&a1, obj_data[old_menu_id]);
lv_anim_set_values(&a1, 357, 85);
lv_anim_set_var(&a2, obj_data[menu_id]);
lv_anim_set_values(&a2, 85, 357);
//避免快速切换删除动画导致动画运行不完整
if (old_menu_id<MENU_NUM-1) {
lv_obj_set_style_width(obj_data[old_menu_id], 357, 0);
lv_obj_set_style_width(obj_data[old_menu_id+1], 85, 0);
}
}
lv_anim_start(&a1);
lv_anim_start(&a2);
#if 1
#if DEF_TEST
app_common_stepper_set_current_step(menu_id);
#else
lv_obj_t* old_child = lv_obj_get_child(tips_obj, old_menu_id);
lv_obj_t* new_child = lv_obj_get_child(tips_obj, menu_id);
lv_obj_move_to_index(old_child, menu_id);
lv_obj_scroll_to_view(lv_obj_get_child(tips_obj, menu_id), LV_ANIM_ON);
#endif
#endif
old_menu_id = menu_id;
}
vd_void_t app_manual_cooking_on_destroy(lv_obj_t* scr) {
lv_anim_del_all();
app_common_stepper_current_step_destroy();
}
/*
* Project: linux-kit
* Module:
* File: app_manual_cooking.h
* Created Date: 2024-07-22 10:36:32
* Author: vdtools
* Description: description
* -----
* todo: modified
* -----
* Copyright (c) 2021 - vDiscovery, Inc
*/
#ifndef APP_MANUAL_COOKING_H
#define APP_MANUAL_COOKING_H
/* ======================================================================================
* includes
*/
#include "base.h"
#include "lvgl.h"
#include "src/resource/app_resource.h"
#include "../app_src_common.h"
#include <stdint.h>
/* ======================================================================================
* extern
*/
__vd_extern_c_enter__;
/* ======================================================================================
* macros
*/
#define DEF_TEST 1
/* ======================================================================================
* types
*/
/* ======================================================================================
* globals
*/
/* ======================================================================================
* declaration
*/
typedef enum {
HOME_PAGE_MODE_MANUAL, // 手动模式
HOME_PAGE_MODE_AUTO, // 自动模式
HOME_PAGE_MODE_SPECIAL, // 特殊功能模式
HOME_PAGE_MODE_STEP_COOKING, // 多步骤烹饪
HOME_PAGE_MODE_COLLECTION, // 收藏模式
HOME_PAGE_MODE_SETTING, // 设置模式
HOME_PAGE_MODE_MAX, // 最大值
} menu_info_e;
typedef struct {
menu_info_e menu_info_id; // 屏幕正中显示的模式id
} menu_info_t;
/* ======================================================================================
* extern
*/
__vd_extern_c_leave__
#endif // APP_MANUAL_COOKING_H