#pragma once #include "uiBase.h" #include "OptionItem.h" class cOptionListControl { private: std::vector m_Categorys; std::vector m_ItemArray; public: cOptionListControl(); ~cOptionListControl(); void LoadPage( DWORD PageIndex ); void UpdateVisibleItemArray( std::vector& Array ); void RestoreOptionValue(); void ApplyOptionValue(); cOptionCategory* FindCategory( const std::string& CategoryName ); }; class uiOptionView : public uiBase { public: //keymap only enum eOPTION_POS { eKEYMAP_CHECK_C004,//C004 eOPTION_MAX, }; private: BOOL m_Initialized; std::vector m_PageList; DWORD m_PageIndex; class sOptionControlItem { public: sOptionControlItem( WzID Left, WzID Center, WzID Right ) : m_Left(Left), m_Center(Center), m_Right(Right) {} WzID m_Left; WzID m_Center; WzID m_Right; }; std::vector m_ControlArray; std::vector m_VisibleItemArray; CCtrlVScrollWZ* m_pScroll; std::vector m_CheckButtonArray; RECT m_ViewRect; cOptionComboItem* m_PopupItem; CControlWZ* m_pComboBackground; CCtrlVScrollWZ* m_pComboScroll; CTimerSimple Update_Counter_timer_; int m_iArrayIndex; struct sPopupItem { std::string m_Text; RECT m_Rect; }; std::vector m_PopupItemRect; public: uiOptionView(InterfaceManager* ui_man); virtual ~uiOptionView(void); virtual VOID Release(); void SetActivePageIndex( int ActiveTabIndex ); DWORD GetPageIndex() { return m_PageIndex; } protected: void Init( CDrawBase * pDrawBase ); virtual void OnShowWindow( BOOL val ); private: virtual void OnRenderSolarDialog(); virtual void OnUpdateSolarDialog(); virtual void MessageProc( SI_MESSAGE * pMessage ); //void UpdateScroll(); cOptionListControl* GetPageList() { return m_PageIndex < m_PageList.size() ? m_PageList[m_PageIndex] : NULL; } void SetPageIndex( DWORD Index ) { m_PageIndex = Index; } void MoveComboScroll( int Move ); void MoveScroll( int Move ); void UpdateMouseWheel(); void InitializeOptionView(); void UpdateControlState(); cOptionItemBase* PickItem(); void SetPopupItem( cOptionComboItem* pItem ); //static void DrawListImage(CControlWZ* control_ptr, void* parameter);\ protected: CControlWZ * getControl( POSTYPE AtPos ); POSTYPE getCtrlIDToPos( WzID wzId ); private: static WzID m_wzId[eOPTION_MAX]; };