#ifndef MENU_VIEW_H
#define MENU_VIEW_H

#include "types.h"
#include "display.h"
#include "def.h"
#include "../global/renderer_lcd.h"




typedef struct menu_view_t menu_view_t;

/* -------------------------------------------------------------------------
 * 结构体名: menu_view_t
 * 功能:
 *   菜单页面 View 层对象，封装对外绘制接口函数指针。
 *
 * 字段说明:
 *   update_selection_new_level  - 新层级切换时的层级窗口重绘与高亮更新
 *   update_selection_same_level - 同层移动时的局部反显更新（降低闪烁）
 *   full_refresh                - 整页刷新入口（顶部 + 多层菜单内容）
 *
 * 说明:
 *   - Presenter 通过该结构体调用 View 能力，避免直接依赖 view.c 内部实现细节。
 *   - 函数指针在 MenuView_Init() 中完成绑定。
 * ------------------------------------------------------------------------- */
struct menu_view_t
{
    void (*update_selection_new_level)(struct menu_view_t *self, const tagPMenuItem currentLevel, const tagPMenuItem nextLevel);
    void (*update_selection_same_level)(struct menu_view_t *self, const tagPMenuItem oldItem, const tagPMenuItem newItem);
    void (*full_refresh)(struct menu_view_t *self, const tagMenuCtrl *menuCtrl, MenuMode mode);
};

typedef menu_view_t MenuView;


void MenuView_Init(MenuView *view);

#ifdef UNIT_TEST
const PageRenderPort *MenuView_GetPortForTest(void);
#endif

#endif
