mcu_ab568x/app/projects/AB5681F_240_32M/functions/func_menu.c
2025-05-30 18:03:10 +08:00

192 lines
4.7 KiB
C

#include "include.h"
#include "func.h"
#include "func_menu.h"
#include "app_variable.h"
#if TRACE_EN
#define TRACE(...) printf(__VA_ARGS__)
#else
#define TRACE(...)
#endif
//创建主菜单窗体,创建窗体中不要使用功能结构体 func_cb.f_cb
compo_form_t *func_menu_form_create(void)
{
printf("func_menu_form_create %d",SysVariable.menu_style);
switch (SysVariable.menu_style) {
case MENU_STYLE_HONEYCOMB:
return func_menu_sub_honeycomb_form_create();
case MENU_STYLE_WATERFALL:
return func_menu_sub_waterfall_form_create();
case MENU_STYLE_LIST:
case MENU_STYLE_CUM_FOURGRID:
return func_menu_sub_list_form_create();
#if defined(TJD_GUI_Sudoku_Show) || defined(TJD_GUI_Sudoku_hrz_Show)
case MENU_STYLE_SUDOKU:
case MENU_STYLE_SUDOKU_HRZ:
return func_menu_sub_sudoku_form_create();
#endif
case MENU_STYLE_GRID:
case MENU_STYLE_CUM_GRID:
return func_menu_sub_grid_form_create();
#if defined(TJD_GUI_Disk_Show)
case MENU_STYLE_DISK:
return func_menu_sub_disk_form_create();
#endif
case MENU_STYLE_RING:
return func_menu_sub_ring_form_create();
case MENU_STYLE_ROLLER:
return func_menu_sub_roller_form_create();
case MENU_STYLE_KALE:
return func_menu_sub_kale_form_create();
#if defined(TJD_GUI_Skyrer_Show)
case MENU_STYLE_SKYRER:
return func_menu_sub_skyrer_form_create();
#endif
case MENU_STYLE_CUM_SUDOKU:
return func_menu_sub_cum_sudoku_form_create();
case MENU_STYLE_CUM_HEXAGON:
return func_menu_sub_hexagon_form_create();
default:
halt(HALT_FUNC_MENU_SUBSTA);
return NULL;
}
}
//切换菜单样式
static void func_menu_switch_style(void)
{
func_cb.menu_idx = 0;
func_switching(FUNC_SWITCH_FADE_OUT | FUNC_SWITCH_AUTO, NULL);
func_cb.flag_animation = true;
SysVariable.menu_style ++;
sys_cb.motor_flag = 1;
set_func_motor(80, 2, 2, 1);
if(SysVariable.menu_style > MENU_STYLE_KALE)
SysVariable.menu_style = MENU_STYLE_HONEYCOMB;
}
//菜单样式公用消息
void func_menu_sub_message(size_msg_t msg)
{
switch (msg) {
case KU_BACK:
//不响应
break;
case KD_BACK:
if (tick_check_expire(func_cb.enter_tick, TICK_IGNORE_KEY)) {
#ifdef MENU_CHANGE_STYLE_DRUM
func_switch_to(FUNC_STYLE, FUNC_SWITCH_LR_ZOOM_RIGHT | FUNC_SWITCH_AUTO);
#else
func_menu_switch_style();
#endif
}
break;
default:
func_message(msg);
break;
}
}
//退出菜单样式
void func_menu_sub_exit(void)
{
compo_form_destroy(func_cb.frm_main);
func_free(func_cb.f_cb);
func_cb.frm_main = NULL;
func_cb.f_cb = NULL;
}
//进入主菜单功能
static void func_menu_enter(void)
{
#if defined(TJD_MENU_ADD_BACKGROUND)
sys_cb.switch_flag = false;
#endif
}
//退出主菜单功能
static void func_menu_exit(void)
{
func_cb.last = FUNC_MENU;
}
//主菜单功能
void func_menu(void)
{
printf("%s\n", __func__);
func_menu_enter();
while (func_cb.sta == FUNC_MENU) {
switch (SysVariable.menu_style) {
case MENU_STYLE_HONEYCOMB:
func_menu_sub_honeycomb();
break;
case MENU_STYLE_WATERFALL:
func_menu_sub_waterfall();
break;
case MENU_STYLE_LIST:
case MENU_STYLE_CUM_FOURGRID:
func_menu_sub_list();
break;
#if defined(TJD_GUI_Sudoku_Show) || defined(TJD_GUI_Sudoku_hrz_Show)
case MENU_STYLE_SUDOKU:
case MENU_STYLE_SUDOKU_HRZ:
func_menu_sub_sudoku();
break;
#endif
case MENU_STYLE_GRID:
case MENU_STYLE_CUM_GRID:
func_menu_sub_grid();
break;
#if defined(TJD_GUI_Disk_Show)
case MENU_STYLE_DISK:
func_menu_sub_disk();
break;
#endif
case MENU_STYLE_RING:
func_menu_sub_ring();
break;
case MENU_STYLE_ROLLER:
func_menu_sub_roller();
break;
case MENU_STYLE_KALE:
func_menu_sub_kale();
break;
#if defined(TJD_GUI_Skyrer_Show)
case MENU_STYLE_SKYRER:
func_menu_sub_skyrer();
break;
#endif
case MENU_STYLE_CUM_SUDOKU:
func_menu_sub_cum_sudoku();
break;
case MENU_STYLE_CUM_HEXAGON:
func_menu_sub_hexagon();
break;
default:
halt(HALT_FUNC_MENU_SUBSTA);
break;
}
}
func_menu_exit();
}