//*********************************************************************************************************************
//ZH修改2021年8月26日15:26:44
//*********************************************************************************************************************
#include "GUI_VC66_Menu_User.h"
#include "GUI_VC66_General.h"
#include "Menu.h"
typedef struct
{
    uint16_t selected;
    uint16_t unselected;
}menu_item_selected_and_unselected;
//************************************************************************************************************************************************
const menu_item_selected_and_unselected Menu_item_picture[MENU_ITEM_MAX][2] = //[菜单项图片枚举][语言]
{
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//TRIPA 平均油耗/平均车速显示画面
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//TRIPB 平均油耗/平均车速显示画面
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一电压计显示画面
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//一一一一一一一日期/时钟显示画面
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//一一一一一计时表/油温计显示画面
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//一一一一一一一DPD堆积量显示画面
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//一一一一一一DPD再生进度显示画面
                                                                                                             //*******************************
                                                                                                             //*******************************
    {   {CN_User_Menu1_01black          , CN_User_Menu1_01white          },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一故障代码
    {   {CN_User_Menu1_02black          , CN_User_Menu1_02white          },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一维修通知
    {   {CN_User_Menu1_03black          , CN_User_Menu1_03white          },     {SpriteSize, SpriteSize}   },//-一一一一一一一一维修通知的设定
    {   {CN_User_Menu1_04black          , CN_User_Menu1_04white          },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一用户设定
    {   {CN_User_Menu1_06black          , CN_User_Menu1_06white          },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一系统演示模式
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一轮胎状态显示
    {   {CN_User_Menu2_02_01black       , CN_User_Menu2_02_01white       },     {SpriteSize, SpriteSize}   },//-一一一一一一发动机机油和滤清器
    {   {CN_User_Menu2_02_02black       , CN_User_Menu2_02_02white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一燃油滤清器
    {   {CN_User_Menu2_02_03black       , CN_User_Menu2_02_03white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一变速箱油
    {   {CN_User_Menu2_02_04black       , CN_User_Menu2_02_04white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一差速器油
    {   {CN_User_Menu2_02_06black       , CN_User_Menu2_02_06white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一空气干燥器干燥剂
    {   {CN_User_Menu2_02_07black       , CN_User_Menu2_02_07white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一动力转向液
    {   {CN_User_Menu2_02_08black       , CN_User_Menu2_02_08white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一一一轮胎
    {   {CN_User_Menu2_02_09black       , CN_User_Menu2_02_09white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一一起动机
    {   {CN_User_Menu2_03_01black       , CN_User_Menu2_03_01white       },     {SpriteSize, SpriteSize}   },//-一一一一更换发动机机油和滤清器
    {   {CN_User_Menu2_03_02black       , CN_User_Menu2_03_02white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一更换燃油滤清器
    {   {CN_User_Menu2_03_03black       , CN_User_Menu2_03_03white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一更换变速箱油
    {   {CN_User_Menu2_03_04black       , CN_User_Menu2_03_04white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一更换差速器油
    {   {CN_User_Menu2_03_05black       , CN_User_Menu2_03_05white       },     {SpriteSize, SpriteSize}   },//一一一一一一一一SMOOTHER离合器油
    {   {CN_User_Menu2_03_07black       , CN_User_Menu2_03_07white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一更换动力转向液
    {   {CN_User_Menu2_03_08black       , CN_User_Menu2_03_08white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一更换轮胎
    {   {CN_User_Menu2_03_09black       , CN_User_Menu2_03_09white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一更换起动机
    {   {CN_User_Menu2_05_01black       , CN_User_Menu2_05_01white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一设定日期
    {   {CN_User_Menu2_05_02black       , CN_User_Menu2_05_02white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一设定时间
    {   {CN_User_Menu2_05_03black       , CN_User_Menu2_05_03white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一设定显示
    {   {CN_User_Menu2_05_04black       , CN_User_Menu2_05_04white       },     {SpriteSize, SpriteSize}   },//-一一一一一一一设定节油驾驶建议
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一设定车间距报警音量
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一仪表设定
    {   {CN_User_Menu2_04_01black       , CN_User_Menu2_04_01white       },     {SpriteSize, SpriteSize}   },//一一一一一一一一一LDWS 警报演示
    {   {CN_User_Menu2_04_02black       , CN_User_Menu2_04_02white       },     {SpriteSize, SpriteSize}   },//一一一一一一一一AEBS第1警报演示
    {   {CN_User_Menu2_04_03black       , CN_User_Menu2_04_03white       },     {SpriteSize, SpriteSize}   },//一一一一一一一一AEBS第2警报演示
    {   {CN_User_Menu2_04_04black       , CN_User_Menu2_04_04white       },     {SpriteSize, SpriteSize}   },//一一一一一一AEBS全力制动警报演示
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一轮胎气压
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一轮胎温度
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一一设定年
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一一设定月
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一一设定日
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一设定小时
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一设定分钟
    {   {CN_User_Menu3_03_14_02black    , CN_User_Menu3_03_14_02white    },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一一一时间
    {   {CN_User_Menu3_03_14_01black    , CN_User_Menu3_03_14_01white    },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一一一一日期
    {   {CN_User_Menu3_03_07_01black    , CN_User_Menu3_03_07_01white    },     {SpriteSize, SpriteSize}   },//-一一一一一一一速度设定－高速路
    {   {CN_User_Menu3_03_07_02black    , CN_User_Menu3_03_07_02white    },     {SpriteSize, SpriteSize}   },//-一一一一一一一速度设定－一般路
    {   {CN_User_Menu3_03_07_03black    , CN_User_Menu3_03_07_03white    },     {SpriteSize, SpriteSize}   },//-一一一一一一一一发动机转速设定
    {   {CN_User_Menu3_03_07_04black    , CN_User_Menu3_03_07_04white    },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一急加速设定
    {   {CN_User_Menu3_03_07_05black    , CN_User_Menu3_03_07_05white    },     {SpriteSize, SpriteSize}   },//-一一一一一一一一一一急减速设定
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一一长时间怠速设定
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-一一一一一一一辅助驻车解除设定
    {   {SpriteSize                     , SpriteSize                     },     {SpriteSize, SpriteSize}   },//-设定车间距报警音量（图形界面）
};

//************************************************************************************************************************************************

const uint16_t Menu_title_picture[MENU_INTERFACE_MAX][2] = 
{
    {SpriteSize, SpriteSize},/*入口*/
    {SpriteSize, SpriteSize},/*行车信息 通常显示*/
//*************************************************************************************
    {CN_User_Menu1_wenzi        , SpriteSize},//一级菜单
    {CN_User_Menu2_02_wenzi     , SpriteSize},//二级菜单---维修通知(保养通知)
    {CN_User_Menu2_03wenzi      , SpriteSize},//二级菜单---维修通知的设定(保养通知的设定)
    {CN_User_Menu2_05wenzi      , SpriteSize},//二级菜单---用户设定
    {CN_User_Menu2_04wenzi      , SpriteSize},//二级菜单---系统演示模式
    {SpriteSize                 , SpriteSize},//二级菜单---轮胎状态显示
    {CN_User_Menu2_05wenzi      , SpriteSize},//三级菜单---设定日期（年）
    {CN_User_Menu2_05wenzi      , SpriteSize},//四级菜单---设定日期（月）
    {CN_User_Menu2_05wenzi      , SpriteSize},//五级菜单---设定日期（日）
    {CN_User_Menu2_05wenzi      , SpriteSize},//三级菜单---设定时间（小时）
    {CN_User_Menu2_05wenzi      , SpriteSize},//四级菜单---设定时间（分钟）
    {CN_User_Menu2_05wenzi      , SpriteSize},//三级菜单---设定显示
    {CN_User_Menu2_05wenzi      , SpriteSize},//三级菜单---设定节油驾驶建议
    {SpriteSize                 , SpriteSize},//三级菜单---设定车间距报警音量
};
//*************************************************************************************************************************************
//ZH:
uint16_t the_first_item_in_each_Interface[MENU_INTERFACE_MAX]={0};//各个菜单界面里的第一个菜单项

//**************************************************************************************************************************************
//**************************************************************************************************************************************

 void find_the_first_item_in_each_Interface(void);
 Menu_Interface_en_t menu_interface(Menu_Item_en_t menu_item);
//---------------------------------------------------------
//菜单项刷图
//---------------------------------------------------------

/*-------------------------------------------------------------------------
 * Function Name  : GUI_Display_Menu_Item
 * Description    : 显示菜单
 * Input          : Cursor - 当前光标     Language - 语言
 * Output         : None
 * Return         : None
 * other         : None
--------------------------------------------------------------------------*/

static int size1;
void GUI_Display_Menu_Item(uint8_t Cursor, uint8_t Language)
{
    size1 = sizeof(Menu_item_picture);
    uint16_t current_interface = 0u;//当前界面
    uint16_t current_interface_first_item = 0u;//当前界面首行 的菜单项
    uint16_t current_screen_first_item = 0u;//当前屏幕首行 的菜单项


    find_the_first_item_in_each_Interface();
    current_interface = menu_interface(Cursor);//当前界面
    current_interface_first_item = the_first_item_in_each_Interface[current_interface];//当前界面首行 的菜单项
    current_screen_first_item = current_interface_first_item;//当前屏幕首行 的菜单项
//******************************************************************************
//确定当前屏幕首行
    if (Cursor <= current_interface_first_item + 3u)
    {
        current_screen_first_item = current_interface_first_item;
    }
    else
    {
        current_screen_first_item = Cursor-3u;
    }
//*******************************************************************************
//*******************************************************************************
//屏幕 第 1 行
    if (menu_interface(current_screen_first_item) == current_interface)
    {
        if (current_screen_first_item == Cursor)
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item][Language].selected, 423u,221u, GUI_BLENDMODE_SRC_OVER); //;
            
        }
        else
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item][Language].unselected, 423u,221u, GUI_BLENDMODE_SRC_OVER); //
        }
    }
    else
    {
        GUI_General_Display(MultiPurpose_Sprite, SpriteSize, GUI_BLENDMODE_SRC_OVER);//
    }

//*******************************************************************************
//屏幕 第 2 行
    if (menu_interface(current_screen_first_item + 1u) == current_interface)
    {
        if (current_screen_first_item + 1u == Cursor)
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item + 1u][Language].selected, 423u,256u, GUI_BLENDMODE_SRC_OVER); //
        }
        else
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item + 1u][Language].unselected, 423u,256u, GUI_BLENDMODE_SRC_OVER); //
        }
    }
    else
    {
        GUI_General_Display(MultiPurpose_Sprite, SpriteSize, GUI_BLENDMODE_SRC_OVER);//
    }

//*******************************************************************************
//屏幕 第 3 行

    if (menu_interface(current_screen_first_item + 2u) == current_interface)
    {
        if (current_screen_first_item + 2u == Cursor)
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item + 2u][Language].selected, 423u,292u, GUI_BLENDMODE_SRC_OVER); //
        }
        else
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item + 2u][Language].unselected, 423u,292u, GUI_BLENDMODE_SRC_OVER); //
        }
    }
    else
    {
        GUI_General_Display(MultiPurpose_Sprite, SpriteSize, GUI_BLENDMODE_SRC_OVER);//
    }

//*******************************************************************************
//屏幕 第 4 行

    if (menu_interface(current_screen_first_item + 3u) == current_interface)
    {
        if (current_screen_first_item + 3u == Cursor)
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item + 3u][Language].selected, 423u,327u, GUI_BLENDMODE_SRC_OVER); //
        }
        else
        {
            GUI_Translate_Display(MultiPurpose_Sprite, Menu_item_picture[current_screen_first_item + 3u][Language].unselected, 423u,327u, GUI_BLENDMODE_SRC_OVER); //
        }
    }
    else
    {
        GUI_General_Display(MultiPurpose_Sprite, SpriteSize, GUI_BLENDMODE_SRC_OVER);//
    }

//*******************************************************************************
//显示菜单标题：
    GUI_General_Display(MultiPurpose_Sprite, Menu_title_picture[current_interface][Language], GUI_BLENDMODE_SRC_OVER);//

    if (Menu_title_picture[current_interface][Language] == SpriteSize)
    {
        ;
    }
    else
    {
        GUI_General_Display(MultiPurpose_Sprite, fengexian, GUI_BLENDMODE_SRC_OVER);//刷菜单界面标题分割线。
        GUI_General_Display(MultiPurpose_Sprite, gundongtiao, GUI_BLENDMODE_SRC_OVER);//刷菜单界面滚动条。
    }
    
    

}
//************************************************************************************************
//************************************************************************************************

//ZH:
void find_the_first_item_in_each_Interface(void)//此函数运行一次会自动填写一个数组，数组的下标为“菜单界面”枚举，数组元素 为 相应的菜单界面 的 首行菜单项 的枚举。(本函数仅在单片机复位后执行一次，之后即使调用也不会执行)
{
    static uint8_t Execute_only_once = 0u;//此变量为0时，下面的for循环才执行。
    Menu_Item_en_t i = 0u;//for循环 使用的变量。

    if (Execute_only_once == 0u)
    {
        Execute_only_once = 1u;
        for (i = MENU_ITEM_MAX; i > 0u; i--)
        {
            if (menu_interface(i - 1u) < MENU_INTERFACE_MAX)
            {
                the_first_item_in_each_Interface[ menu_interface(i - 1u) ] = (i - 1u);
            }
            else
            {
                ;
            }
        }
        
        
    }
    else
    {
        ;
    }

}

Menu_Interface_en_t menu_interface(Menu_Item_en_t menu_item)//本函数 查表返回 一个菜单界面。用于获知一个 菜单项 属于哪一 菜单界面。
{
    Menu_Interface_en_t menu_interface = 0u;
    menu_interface = stMenuItemAttribute[menu_item].enMenuLocateInterface;

    return menu_interface;
}


