the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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};