//************************************************************************************************** // (c) Copyright S2 Software Ltd. - ALL RIGHTS RESERVED // This document is the CONFIDENTIAL property of S2 Software Ltd. //************************************************************************************************** // // File Name: sc_menu.h // // Description: The tree of main menu screens // // Project: // // Creation Date: 2014/5/21 Add by Gordon // //************************************************************************************************** #ifndef __APP_MEMU_TREE_H__ #define __APP_MEMU_TREE_H__ #include "app_gui.h" #include "app_guiobj_adjust.h" #include "app_guiobj_popmsg.h" #ifdef CONFIG_ATV_SUPPORT #include "al_cc.h" #include "al_parent_control.h" #endif #ifdef CONFIG_BT_RDA5856 #include "al_bluetooth_ctrl.h" #endif typedef unsigned char U8BIT; typedef signed char S8BIT; typedef unsigned short U16BIT; typedef signed short S16BIT; typedef unsigned int U32BIT; typedef signed int S32BIT; typedef U8BIT BOOLEAN; #ifndef BOOL #define BOOL unsigned char #endif typedef void (*MenuSettingFunc_PTR) (BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); /**************************************** Node define**************************************/ typedef enum _MENU_NODE_ID_ { ID_Root, ID_Luminance, ID_ImageSetup, ID_ColorTempSetup, ID_ColorBoost, ID_OSDSetup, ID_Extra, /****** Luminance ******/ //layer1 //layer2 ID_Contrast, ID_Brightness, ID_EcoMode, ID_DynamicContrast, ID_BlueLight, /****** ImageSetup ******/ //layer1 //layer2 ID_Clock, ID_Phase, ID_ImageHPosition, ID_ImageVPosition, ID_ImageRatio, /****** ID_ColorTempSetup ******/ //layer1 //layer2 ID_ColorTemp, ID_ColorTemp_Red, ID_ColorTemp_Green, ID_ColorTemp_Blue, /****** ColorBoost ******/ //layer1 //layer2 ID_FullEnhance, ID_NatureSkin, ID_GreenField, ID_SkyBlue, ID_AutoDetect, //ID_Demo, /****** OSDSetup ******/ //layer1 //layer2 ID_Volume, ID_OsdHPosition, ID_OsdVPosition, ID_OsdTimeout, ID_OsdLanguage, /****** Extra ******/ //layer1 //layer2 ID_InputSelect, ID_DDCCI, ID_OffTimer, ID_Reset, ID_Infomation, //layer3 ID_Reset_No, ID_Reset_Yes, ID_Infomation_detail, MENU_NODE_NUM, ID_NULL = 0xffff } MENU_NODE_ID; #define FIRST_ENTER_FROM_MENUHOME (0x1 << 0x10) /**************************************** Type Definition**************************************/ #define MENU_CTRL_TYPE_NONE 0 // type none #define MENU_CTRL_TYPE_PUSHBUTTON 1 // push to the another ui or execute the function #define MENU_CTRL_TYPE_RADIOBUTTON 2 // node have one more leave can be selected #define MENU_CTRL_TYPE_SLIDER 3 //slider type #define MENU_CTRL_TYPE_PASSWD_INPUT 4 //only for enterpassword or new password #define MENU_CTRL_TYPE_DATETIME 5 //datetime node #define MENU_CTRL_TYPE_SLIDER_LEAVE 6 // slider and switch the other ui #define MENU_CTRL_TYPE_POPBUTTON 7 //pop out a confirm dialog to choice #define MENU_CTRL_TYPE_CHOICEINPUT 8 // #define MENU_NODE_TYPE_CHOICE 9 #define MENU_CTRL_TYPE_DATESETTING 10 #define MENU_CTRL_TYPE_TIMESETTING 11 #define MENU_CTRL_TYPE_CUSTOMIZED_CEC 12 #define MENU_CTRL_TYPE_SILDERNUMBERINPUT 13 #define MENU_CTRL_TYPE_DAYNAMICSTRING 14 /**************************************** leave Structure**************************************/ typedef enum { PUSH_NONE = 0x10, PUSH_DESTROY_MENU, PUSH_NON_DESTROY_MENU, PUSH_MAX } MENU_PUSH_TYPE; typedef struct { U32BIT strID; int value; U32BIT bIsDefault; } MENU_RADIO_BUTTON; typedef struct { U16BIT strID; MENU_PUSH_TYPE Push_Type; } MENU_PUSH_BUTTON; typedef struct { PopmsgType_t poptype; int subtype; UINT16 exitkey; } MENU_POP_BUTTON; typedef struct { U16BIT strID; int nMin; int nMax; int nValue; int AdjustItem; } MENU_SLIDER; typedef struct { U16BIT strID; int nMax; int nMin; int nStep; int nValue; } MENU_COMBO_BUTTON; typedef struct { U16BIT strID; } MENU_PASSWORD_INPUT; typedef struct { U32BIT strID; int min; int max; int digitMin; int digitMax; int mode; } MENU_CHOICE_INPUT; typedef struct { U16BIT strID; int min, max, step; } MENU_CHOICEBTN; typedef struct { U16BIT str; } MENU_DYNAMIC_STRING; typedef struct { MenuSettingFunc_PTR MenuSettingFun; U32BIT type; U32BIT nItems; void *leaves; } NODE_FUNCTION; typedef struct { U32BIT strID; U32BIT parentID; U32BIT nextID; U32BIT childID; NODE_FUNCTION *pThis; } MENU_NODE; /**************************************** Leave Structure**************************************/ #ifdef DECLARE_MENU_NODE //layer2-Luminance ParenetId:ID_Luminance //ID_Contrast void Menu_Contrast(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_Contrast[] = { {TV_IDS_String_NULL, 0, 100, 0, ADJUST_CONTRAST} }; static NODE_FUNCTION Fun_Contrast = { Menu_Contrast, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_Contrast) / sizeof(MENU_SLIDER), L_Contrast }; //ID_Brightness, void Menu_Brightness(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_Brightness[] = { {TV_IDS_String_NULL, 0, 100, 0, ADJUST_BRIGHTNESS} }; static NODE_FUNCTION Fun_Brightness = { Menu_Brightness, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_Brightness) / sizeof(MENU_SLIDER), L_Brightness }; //ID_EcoMode, void Menu_EcoMode(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_EcoMode[] = { {TV_IDS_String_Standard, APP_VIDEO_PQ_MODE_STANDARD, 1}, {TV_IDS_String_Text, APP_VIDEO_PQ_MODE_TEXT, 0}, {TV_IDS_String_Internet, APP_VIDEO_PQ_MODE_INTERNET, 0}, {TV_IDS_String_Game, APP_VIDEO_PQ_MODE_GAME, 0}, {TV_IDS_String_Movie, APP_VIDEO_PQ_MODE_MOVIE, 0}, {TV_IDS_String_Sports, APP_VIDEO_PQ_MODE_SPORTS, 0}, }; static NODE_FUNCTION Fun_EcoMode = { Menu_EcoMode, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_EcoMode) / sizeof(MENU_RADIO_BUTTON), L_EcoMode }; //ID_DynamicContrast, void Menu_DynamicContrast(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_DynamicContrast[] = { {TV_IDS_String_Off, MID_OFF, 1}, {TV_IDS_String_On, MID_ON, 0}, }; static NODE_FUNCTION Fun_DynamicContrast = { Menu_DynamicContrast, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_DynamicContrast) / sizeof(MENU_RADIO_BUTTON), L_DynamicContrast }; //ID_BlueLight, void Menu_BlueLight(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_BlueLight[] = { {TV_IDS_String_Off, MID_BL_OFF, 1}, {TV_IDS_String_50_Percent, MID_BL_50, 0}, {TV_IDS_String_60_Percent, MID_BL_60, 0}, {TV_IDS_String_70_Percent, MID_BL_70, 0}, {TV_IDS_String_80_Percent, MID_BL_80, 0}, }; static NODE_FUNCTION Fun_BlueLight = { Menu_BlueLight, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_BlueLight) / sizeof(MENU_RADIO_BUTTON), L_BlueLight }; //layer2-ImageSetup ParenetId:ID_ImageSetup //ID_Clock void Menu_PcClock(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_Clock[] = { {TV_IDS_String_NULL, -30, 30, 50, ADJUST_PC_CLOCK} }; static NODE_FUNCTION Fun_Clock = { Menu_PcClock, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_Clock) / sizeof(MENU_SLIDER), L_Clock }; //ID_Phase void Menu_PcPhase(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_Phase[] = { {TV_IDS_String_NULL, 0, 31, 0, ADJUST_PC_PHASE} }; static NODE_FUNCTION Fun_Phase = { Menu_PcPhase, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_Phase) / sizeof(MENU_SLIDER), L_Phase }; //ID_ImageHPosition void Menu_ImageHPosition(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_ImageHPosition[] = { {TV_IDS_String_NULL, 0, 100, APP_PC_HPOS_DEF, ADJUST_PC_HPOSITION} }; static NODE_FUNCTION Fun_ImageHPosition = { Menu_ImageHPosition, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_ImageHPosition) / sizeof(MENU_SLIDER), L_ImageHPosition }; //ID_ImageVPosition void Menu_ImageVPosition(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_ImageVPosition[] = { {TV_IDS_String_NULL, 0, 100, APP_PC_VPOS_DEF, ADJUST_PC_VPOSITION} }; static NODE_FUNCTION Fun_ImageVPosition = { Menu_ImageVPosition, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_ImageVPosition) / sizeof(MENU_SLIDER), L_ImageVPosition }; //ID_ImageRatio void Menu_ImageRatio(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_ImageRatio[] = { {TV_IDS_String_43, APP_VIDEO_ASPECT_RATIO_4_3, 0}, {TV_IDS_String_Wide, APP_VIDEO_ASPECT_RATIO_REAL, 1}, }; static NODE_FUNCTION Fun_ImageRatio = { Menu_ImageRatio, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_ImageRatio) / sizeof(MENU_RADIO_BUTTON), L_ImageRatio }; //layer2-ColorTempSetup ParenetId:ID_ColorTempSetup //ID_ColorTemp, void Menu_ColorTemp(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_ColorTemp[] = { {TV_IDS_String_Warm, MID_COLORTEMP_WARM, 0}, {TV_IDS_String_Normal, MID_COLORTEMP_STD, 1}, {TV_IDS_String_Cool, MID_COLORTEMP_COOL, 0}, {TV_IDS_String_sRGB, MID_COLORTEMP_sRGB, 0}, {TV_IDS_String_User, MID_COLORTEMP_USER, 0}, }; static NODE_FUNCTION Fun_ColorTemp = { Menu_ColorTemp, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_ColorTemp) / sizeof(MENU_RADIO_BUTTON), L_ColorTemp }; //ID_ColorTemp_Red void Menu_ColorTemp_Red(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_ColorTemp_Red[] = { {TV_IDS_String_NULL, 0, 100, 50, ADJUST_COLORTEMP_RED} }; static NODE_FUNCTION Fun_ColorTemp_Red = { Menu_ColorTemp_Red, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_ColorTemp_Red) / sizeof(MENU_SLIDER), L_ColorTemp_Red }; //ID_ColorTemp_Green void Menu_ColorTemp_Green(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_ColorTemp_Green[] = { {TV_IDS_String_NULL, 0, 100, 50, ADJUST_COLORTEMP_GREEN} }; static NODE_FUNCTION Fun_ColorTemp_Green = { Menu_ColorTemp_Green, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_ColorTemp_Green) / sizeof(MENU_SLIDER), L_ColorTemp_Green }; //ID_ColorTemp_Blue void Menu_ColorTemp_Blue(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_ColorTemp_Blue[] = { {TV_IDS_String_NULL, 0, 100, 50, ADJUST_COLORTEMP_BLUE} }; static NODE_FUNCTION Fun_ColorTemp_Blue = { Menu_ColorTemp_Blue, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_ColorTemp_Blue) / sizeof(MENU_SLIDER), L_ColorTemp_Blue }; //layer2-ColorBoost ParenetId:ID_ColorBoost //ID_FullEnhance void Menu_FullEnhance(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_FullEnhance[] = { {TV_IDS_String_Off, MID_OFF, 1}, {TV_IDS_String_On, MID_ON, 0}, }; static NODE_FUNCTION Fun_FullEnhance = { Menu_FullEnhance, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_FullEnhance) / sizeof(MENU_RADIO_BUTTON), L_FullEnhance }; //ID_NatureSkin void Menu_NatureSkin(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_NatureSkin[] = { {TV_IDS_String_Off, MID_OFF, 1}, {TV_IDS_String_On, MID_ON, 0}, }; static NODE_FUNCTION Fun_NatureSkin = { Menu_NatureSkin, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_NatureSkin) / sizeof(MENU_RADIO_BUTTON), L_NatureSkin }; //ID_GreenField void Menu_GreenField(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_GreenField[] = { {TV_IDS_String_Off, MID_OFF, 1}, {TV_IDS_String_On, MID_ON, 0}, }; static NODE_FUNCTION Fun_GreenField = { Menu_GreenField, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_GreenField) / sizeof(MENU_RADIO_BUTTON), L_GreenField }; //ID_SkyBlue void Menu_SkyBlue(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_SkyBlue[] = { {TV_IDS_String_Off, MID_OFF, 1}, {TV_IDS_String_On, MID_ON, 0}, }; static NODE_FUNCTION Fun_SkyBlue = { Menu_SkyBlue, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_SkyBlue) / sizeof(MENU_RADIO_BUTTON), L_SkyBlue }; //ID_AutoDetect void Menu_AutoDetect(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_AutoDetect[] = { {TV_IDS_String_Off, MID_OFF, 1}, {TV_IDS_String_On, MID_ON, 0}, }; static NODE_FUNCTION Fun_AutoDetect = { Menu_AutoDetect, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_AutoDetect) / sizeof(MENU_RADIO_BUTTON), L_AutoDetect }; #if 0 //ID_Demo void Menu_Demo(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_Demo[] = { {TV_IDS_String_Off, MID_OFF, 1}, {TV_IDS_String_On, MID_ON, 0}, }; static NODE_FUNCTION Fun_Demo = { Menu_Demo, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_Demo) / sizeof(MENU_RADIO_BUTTON), L_Demo }; #endif //layer2-OSD Setup ParenetId:ID_OSDSetup //ID_Volume void Menu_Volume(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_Volume[] = { {TV_IDS_String_NULL, 0, 100, 50, ADJUST_VOLUME} }; static NODE_FUNCTION Fun_Volume = { Menu_Volume, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_Volume) / sizeof(MENU_SLIDER), L_Volume }; //ID_OsdHPosition void Menu_OsdHPosition(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_OsdHPosition[] = { {TV_IDS_String_NULL, 0, 100, 50, ADJUST_OSD_HPOSITION} }; static NODE_FUNCTION Fun_OsdHPosition = { Menu_OsdHPosition, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_OsdHPosition) / sizeof(MENU_SLIDER), L_OsdHPosition }; //ID_OsdVPosition void Menu_OsdVPosition(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_OsdVPosition[] = { {TV_IDS_String_NULL, 0, 100, 50, ADJUST_OSD_VPOSITION} }; static NODE_FUNCTION Fun_OsdVPosition = { Menu_OsdVPosition, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_OsdVPosition) / sizeof(MENU_SLIDER), L_OsdVPosition }; //ID_OsdTimeout void Menu_OsdTimeout(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_OsdTimeout[] = { {TV_IDS_String_NULL, 5, 100, 10, ADJUST_OSD_TIMEOUT} }; static NODE_FUNCTION Fun_OsdTimeout = { Menu_OsdTimeout, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_OsdTimeout) / sizeof(MENU_SLIDER), L_OsdTimeout }; //ID_OsdLanguage void Menu_OsdLanguage(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_OsdLang[] = { {TV_IDS_String_TChinese, APP_OSDLANG_TCHINESE, 0}, {TV_IDS_String_English, APP_OSDLANG_ENGLISH, 1}, {TV_IDS_String_French, APP_OSDLANG_FRENCH, 0}, {TV_IDS_String_German, APP_OSDLANG_GERMAN, 0}, {TV_IDS_String_Italian, APP_OSDLANG_ITALIAN, 0}, #ifdef CONFIG_SUPPORT_JAPANESE_CP932 {TV_IDS_String_Japanese, APP_OSDLANG_JAPAN, 0}, #endif {TV_IDS_String_Korean, APP_OSDLANG_KOREAN, 0}, {TV_IDS_String_Russian, APP_OSDLANG_RUSSIA, 0}, {TV_IDS_String_Spanish, APP_OSDLANG_SPAIN, 0}, {TV_IDS_String_Swedish, APP_OSDLANG_SWEDISH, 0}, {TV_IDS_String_Turkish, APP_OSDLANG_TURKISH, 0}, {TV_IDS_String_SChinese, APP_OSDLANG_SCHINESE, 0}, {TV_IDS_String_Portuguese, APP_OSDLANG_PORTUGUESE, 0}, {TV_IDS_String_Czech, APP_OSDLANG_CZECH, 0}, {TV_IDS_String_Dutch, APP_OSDLANG_NEDERLANDS, 0}, {TV_IDS_String_Finnish, APP_OSDLANG_SUOMI, 0}, {TV_IDS_String_Polish, APP_OSDLANG_POLISH, 0}, }; static NODE_FUNCTION Fun_OsdLang = { Menu_OsdLanguage, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_OsdLang) / sizeof(MENU_RADIO_BUTTON), L_OsdLang }; //layer2-Extra ParenetId:ID_Extra //ID_InputSelect void Menu_InputSelect(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_InputSelect[] = { {TV_IDS_String_Auto, APP_MENUSOURCETYPE_AUTO, 1}, {TV_IDS_String_HDMI1, APP_MENUSOURCETYPE_HDMI, 0}, {TV_IDS_String_PC, APP_MENUSOURCETYPE_PC, 0}, {TV_IDS_String_AV, APP_MENUSOURCETYPE_AV, 0}, }; static NODE_FUNCTION Fun_InputSelect = { Menu_InputSelect, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_InputSelect) / sizeof(MENU_RADIO_BUTTON), L_InputSelect }; //ID_DDCCI void Menu_DDCCI(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_RADIO_BUTTON L_DDCCI[] = { {TV_IDS_String_Off, MID_OFF, 0}, {TV_IDS_String_On, MID_ON, 1}, }; static NODE_FUNCTION Fun_DDCCI = { Menu_DDCCI, MENU_CTRL_TYPE_RADIOBUTTON, sizeof(L_DDCCI) / sizeof(MENU_RADIO_BUTTON), L_DDCCI }; //ID_OffTimer void Menu_OffTimer(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_SLIDER L_OffTimer[] = { {TV_IDS_String_NULL, 0, 100, 0, ADJUST_OFFTIMER} }; static NODE_FUNCTION Fun_OffTimer = { Menu_OffTimer, MENU_CTRL_TYPE_SLIDER_LEAVE, sizeof(L_OffTimer) / sizeof(MENU_SLIDER), L_OffTimer }; //ID_Reset_No void Menu_Reset_No(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_PUSH_BUTTON L_Reset_No[] = { {TV_IDS_String_NULL, PUSH_NON_DESTROY_MENU} }; static NODE_FUNCTION Fun_Reset_No = { Menu_Reset_No, MENU_CTRL_TYPE_PUSHBUTTON, sizeof(L_Reset_No) / sizeof(MENU_PUSH_BUTTON), L_Reset_No }; //ID_Reset_Yes void Menu_RestoreFactoryDefault(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_PUSH_BUTTON L_MenuRestoreFactoryDefault[] = { {TV_IDS_String_NULL, PUSH_NON_DESTROY_MENU} }; static NODE_FUNCTION Fun_MenuRestoreFactoryDefault = { Menu_RestoreFactoryDefault, MENU_CTRL_TYPE_PUSHBUTTON, sizeof(L_MenuRestoreFactoryDefault) / sizeof(MENU_PUSH_BUTTON), L_MenuRestoreFactoryDefault }; //ID_Infomation_detail void Menu_Infomation(BOOL bSet, BOOL path, int *pValue, BOOL bDefault, HWND * phGuiArr, UINT8 *pCount); static MENU_DYNAMIC_STRING L_Infomation[] = { {TV_IDS_String_NULL} }; static NODE_FUNCTION Fun_Infomation = { Menu_Infomation, MENU_CTRL_TYPE_DAYNAMICSTRING, sizeof(L_Infomation) / sizeof(MENU_DYNAMIC_STRING), L_Infomation }; MENU_NODE MenuNode[] = { //{strID, parent_ID, next_ID, child_ID, pThis} //ID_Root, {TV_IDS_String_NULL, ID_NULL, ID_NULL, ID_Luminance, NULL} , //0 {TV_IDS_String_Luminance, ID_Root, ID_ImageSetup, ID_Contrast, NULL} , //ID_Luminance {TV_IDS_String_Image_Setup, ID_Root, ID_ColorTempSetup, ID_Clock, NULL} , //ID_ImageSetup {TV_IDS_String_Color_Temp, ID_Root, ID_ColorBoost, ID_ColorTemp, NULL} , //ID_ColorTempSetup {TV_IDS_String_Color_Boost, ID_Root, ID_OSDSetup, ID_FullEnhance, NULL} , //ID_ColorBoost {TV_IDS_String_OSD_Setup, ID_Root, ID_Extra, ID_Volume, NULL} , //ID_OSDSetup {TV_IDS_String_Extra, ID_Root, ID_NULL, ID_InputSelect, NULL} , //ID_Extra /****** Luminance ******/ //layer1 //layer2 {TV_IDS_String_Contrast, ID_Luminance, ID_Brightness, ID_NULL, &Fun_Contrast} , //ID_Contrast {TV_IDS_String_Brightness, ID_Luminance, ID_EcoMode, ID_NULL, &Fun_Brightness} , //ID_Brightness {TV_IDS_String_ECO_Mode, ID_Luminance, ID_DynamicContrast, ID_NULL, &Fun_EcoMode} , //ID_EcoMode {TV_IDS_String_DynamicContrast, ID_Luminance, ID_BlueLight, ID_NULL, &Fun_DynamicContrast} , //ID_DynamicContrast {TV_IDS_String_BlueLight, ID_Luminance, ID_NULL, ID_NULL, &Fun_BlueLight} , //ID_BlueLight /****** ImageSetup ******/ //layer1 //layer2 {TV_IDS_String_Clock, ID_ImageSetup, ID_Phase, ID_NULL, &Fun_Clock} , //ID_Clock {TV_IDS_String_Phase, ID_ImageSetup, ID_ImageHPosition, ID_NULL, &Fun_Phase} , //ID_Phase {TV_IDS_String_HPosition, ID_ImageSetup, ID_ImageVPosition, ID_NULL, &Fun_ImageHPosition} , //ID_ImageHPosition {TV_IDS_String_VPosition, ID_ImageSetup, ID_ImageRatio, ID_NULL, &Fun_ImageVPosition} , //ID_ImageVPosition {TV_IDS_String_Image_Ratio, ID_ImageSetup, ID_NULL, ID_NULL, &Fun_ImageRatio} , //ID_ImageRatio /****** ColorTempSetup ******/ //layer1 //layer2 {TV_IDS_String_Color_Temp, ID_ColorTempSetup, ID_ColorTemp_Red, ID_NULL, &Fun_ColorTemp} , //ID_ColorTemp {TV_IDS_String_Red, ID_ColorTempSetup, ID_ColorTemp_Green, ID_NULL, &Fun_ColorTemp_Red} , //ID_ColorTemp_Red {TV_IDS_String_Green, ID_ColorTempSetup, ID_ColorTemp_Blue, ID_NULL, &Fun_ColorTemp_Green} , //ID_ColorTemp_Green {TV_IDS_String_Blue, ID_ColorTempSetup, ID_NULL, ID_NULL, &Fun_ColorTemp_Blue} , //ID_ColorTemp_Blue /****** ColorBoost ******/ //layer1 //layer2 {TV_IDS_String_FullEnhance, ID_ColorBoost, ID_NatureSkin, ID_NULL, &Fun_FullEnhance} , //ID_FullEnhance {TV_IDS_String_NatureSkin, ID_ColorBoost, ID_GreenField, ID_NULL, &Fun_NatureSkin} , //ID_NatureSkin {TV_IDS_String_GreenField, ID_ColorBoost, ID_SkyBlue, ID_NULL, &Fun_GreenField} , //ID_GreenField {TV_IDS_String_SkyBlue, ID_ColorBoost, ID_AutoDetect, ID_NULL, &Fun_SkyBlue} , //ID_SkyBlue {TV_IDS_String_AutoDetect, ID_ColorBoost, ID_NULL, ID_NULL, &Fun_AutoDetect} , //ID_AutoDetect //{TV_IDS_String_Demo, ID_ColorBoost, ID_NULL, ID_NULL, &Fun_Demo} //, //ID_Demo /****** OSDSetup ******/ //layer1 //layer2 {TV_IDS_String_Volume, ID_OSDSetup, ID_OsdHPosition, ID_NULL, &Fun_Volume} , //ID_Volume {TV_IDS_String_HPosition, ID_OSDSetup, ID_OsdVPosition, ID_NULL, &Fun_OsdHPosition} , //ID_OsdHPosition {TV_IDS_String_VPosition, ID_OSDSetup, ID_OsdTimeout, ID_NULL, &Fun_OsdVPosition} , //ID_OsdVPosition {TV_IDS_String_TimeOut, ID_OSDSetup, ID_OsdLanguage, ID_NULL, &Fun_OsdTimeout} , //ID_OsdTimeout {TV_IDS_String_Language, ID_OSDSetup, ID_NULL, ID_NULL, &Fun_OsdLang} , //ID_OsdLanguage /****** Extra ******/ //layer1 //layer2 /* Time Settings */ {TV_IDS_String_InputSelect, ID_Extra, ID_DDCCI, ID_NULL, &Fun_InputSelect} , //ID_InputSelect {TV_IDS_String_DDC_CI, ID_Extra, ID_OffTimer, ID_NULL, &Fun_DDCCI} , //ID_DDCCI {TV_IDS_String_OffTimer, ID_Extra, ID_Reset, ID_NULL, &Fun_OffTimer} , //ID_OffTimer {TV_IDS_String_Reset, ID_Extra, ID_Infomation, ID_Reset_No, NULL} , //ID_Reset {TV_IDS_String_Infomation, ID_Extra, ID_NULL, ID_Infomation_detail, NULL} , //ID_Infomation //layer3 {TV_IDS_String_No, ID_Reset, ID_Reset_Yes, ID_NULL, &Fun_Reset_No} , //ID_Reset_No {TV_IDS_String_Yes, ID_Reset, ID_NULL, ID_NULL, &Fun_MenuRestoreFactoryDefault} , //ID_Reset_Yes {TV_IDS_String_NULL, ID_Reset, ID_NULL, ID_NULL, &Fun_Infomation} , //ID_Infomation_detail }; #endif MENU_NODE_ID APP_MENU_GetCurrentNode(void); #endif