the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at master 78 lines 2.6 kB view raw
1#pragma once 2 3 4class CXuiCtrl4JList : public CXuiListImpl 5{ 6public: 7 enum 8 { 9 eSortList_Date = 0, 10 eSortList_Alphabetical, 11 eSortList_Index, 12 }; 13 14 // Information for one list item. 15 typedef struct _LIST_ITEM_INFO 16 { 17 LPCWSTR pwszText; 18 LPCWSTR pwszImage; 19 HXUIBRUSH hXuiBrush; 20 BOOL fChecked; 21 BOOL fEnabled; 22 bool bIsDamaged; // damaged save 23 FILETIME fTime; 24 int iData; // user data 25 int iIndex; // used for internal list sorting 26 int iSortIndex; // used to force an order for DLC 27 } 28 LIST_ITEM_INFO,*PLIST_ITEM_INFO; 29 30 typedef std::vector <PLIST_ITEM_INFO> LISTITEMINFOARRAY; 31 32 XUI_IMPLEMENT_CLASS(CXuiCtrl4JList, L"CXuiCtrl4JList", XUI_CLASS_LIST); 33 34 void AddData( const LIST_ITEM_INFO& ItemInfo , int iSortListFromIndex=-1, int iSortFunction=CXuiCtrl4JList::eSortList_Date); 35 void RemoveAllData( ); 36 void UpdateText(int iItem,LPCWSTR pwszText ); 37 void SelectByUserData(int iData); 38 int GetIndexByUserData(int iData); 39 40 void UpdateGraphic(int iItem,HXUIBRUSH hXuiBrush ); 41 void UpdateGraphic(FILETIME *pfTime,HXUIBRUSH hXuiBrush ); 42 void UpdateGraphicFromiData(int iData,HXUIBRUSH hXuiBrush ); 43 LIST_ITEM_INFO& GetData(DWORD dw); 44 LIST_ITEM_INFO& GetData(FILETIME *pFileTime); 45 LIST_ITEM_INFO& GetDataiData(int iData); 46 HRESULT SetBorder(DWORD dw,BOOL bShow); // for a highlight around the current selected item in the controls layout 47 void SetSelectionChangedHandle(HXUIOBJ hObj); 48protected: 49 50 XUI_BEGIN_MSG_MAP() 51 XUI_ON_XM_INIT(OnInit) 52 XUI_ON_XM_GET_SOURCE_TEXT(OnGetSourceDataText) 53 XUI_ON_XM_GET_ITEMCOUNT_ALL(OnGetItemCountAll) 54 XUI_ON_XM_GET_SOURCE_IMAGE(OnGetSourceDataImage) 55 XUI_ON_XM_GET_ITEMENABLE(OnGetItemEnable) 56 XUI_ON_XM_DESTROY( OnDestroy ) 57 XUI_ON_XM_NOTIFY_SELCHANGED( OnNotifySelChanged ) 58 XUI_END_MSG_MAP() 59 60 61 HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled ); 62 HRESULT OnGetSourceDataText(XUIMessageGetSourceText *pGetSourceTextData, BOOL& bHandled); 63 HRESULT OnGetItemCountAll(XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled); 64 HRESULT OnGetSourceDataImage(XUIMessageGetSourceImage *pGetSourceImageData,BOOL& bHandled); 65 HRESULT OnGetItemEnable(XUIMessageGetItemEnable *pGetItemEnableData,BOOL& bHandled); 66 HRESULT OnDestroy(); 67 HRESULT OnNotifySelChanged( HXUIOBJ hObjSource, XUINotifySelChanged* pNotifySelChangedData, BOOL& bHandled ); 68 69 LISTITEMINFOARRAY m_vListData; 70 CRITICAL_SECTION m_AccessListData; 71 72private: 73 static bool AlphabeticSortFn(const void *a, const void *b); 74 static bool TimeSortFn(const void *a, const void *b); 75 static bool IndexSortFn(const void *a, const void *b); 76 77 HXUIOBJ m_hSelectionChangedHandlerObj; 78};