将菜单的架构改成 MVP,并且进一步优化视图层和模型层的逻辑

This commit is contained in:
2026-04-01 19:42:05 +08:00
parent 0690d6a00e
commit 8b44b84d4c
54 changed files with 5362 additions and 2200 deletions

View File

@@ -0,0 +1,69 @@
#ifndef MENU_MODEL_H
#define MENU_MODEL_H
#include "display.h"
typedef struct tagMenuModel
{
uint8_t byClass;
uint8_t byName[50];
uint8_t byTip[50];
uint8_t byAttrib;
uint16_t wPassword;
uint16_t wPara;
FUNCPTR pfnWinProc;
} tagMenuModel;
typedef struct MenuItem MenuItem;
typedef MenuItem *tagPMenuItem;
typedef MenuItem tagMenuItem;
typedef struct
{
MenuItem *higher;
MenuItem *lower;
MenuItem *before;
MenuItem *behind;
} MenuLinks;
typedef struct
{
uint16_t wPos;
uint16_t wNum;
uint16_t wSPosX;
uint16_t wSPosY;
uint16_t wEPosX;
uint16_t wEPosY;
} MenuRect;
struct MenuItem
{
MenuLinks links;
tagMenuModel menuDef;
MenuRect rect;
};
typedef struct
{
uint8_t by0LevelNum;
tagPMenuItem ptHead;
tagPMenuItem ptCurrent;
tagPMenuItem ptRoute[4];
tagPMenuItem ptCurBak;
tagPMenuItem pt0Level;
} tagMenuCtrl;
typedef struct menu_model_t menu_model_t;
struct menu_model_t
{
uint16_t maxItem;
tagMenuItem menuItems[300];
uint16_t by0LevelNum;
};
void MenuModel_Init(menu_model_t *model);
#endif