aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/XUI/XUI_Ctrl_4JList.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Common/XUI/XUI_Ctrl_4JList.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_Ctrl_4JList.h')
-rw-r--r--Minecraft.Client/Common/XUI/XUI_Ctrl_4JList.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_Ctrl_4JList.h b/Minecraft.Client/Common/XUI/XUI_Ctrl_4JList.h
new file mode 100644
index 00000000..11bdd456
--- /dev/null
+++ b/Minecraft.Client/Common/XUI/XUI_Ctrl_4JList.h
@@ -0,0 +1,78 @@
+#pragma once
+
+
+class CXuiCtrl4JList : public CXuiListImpl
+{
+public:
+ enum
+ {
+ eSortList_Date = 0,
+ eSortList_Alphabetical,
+ eSortList_Index,
+ };
+
+ // Information for one list item.
+ typedef struct _LIST_ITEM_INFO
+ {
+ LPCWSTR pwszText;
+ LPCWSTR pwszImage;
+ HXUIBRUSH hXuiBrush;
+ BOOL fChecked;
+ BOOL fEnabled;
+ bool bIsDamaged; // damaged save
+ FILETIME fTime;
+ int iData; // user data
+ int iIndex; // used for internal list sorting
+ int iSortIndex; // used to force an order for DLC
+ }
+ LIST_ITEM_INFO,*PLIST_ITEM_INFO;
+
+ typedef std::vector <PLIST_ITEM_INFO> LISTITEMINFOARRAY;
+
+ XUI_IMPLEMENT_CLASS(CXuiCtrl4JList, L"CXuiCtrl4JList", XUI_CLASS_LIST);
+
+ void AddData( const LIST_ITEM_INFO& ItemInfo , int iSortListFromIndex=-1, int iSortFunction=CXuiCtrl4JList::eSortList_Date);
+ void RemoveAllData( );
+ void UpdateText(int iItem,LPCWSTR pwszText );
+ void SelectByUserData(int iData);
+ int GetIndexByUserData(int iData);
+
+ void UpdateGraphic(int iItem,HXUIBRUSH hXuiBrush );
+ void UpdateGraphic(FILETIME *pfTime,HXUIBRUSH hXuiBrush );
+ void UpdateGraphicFromiData(int iData,HXUIBRUSH hXuiBrush );
+ LIST_ITEM_INFO& GetData(DWORD dw);
+ LIST_ITEM_INFO& GetData(FILETIME *pFileTime);
+ LIST_ITEM_INFO& GetDataiData(int iData);
+ HRESULT SetBorder(DWORD dw,BOOL bShow); // for a highlight around the current selected item in the controls layout
+ void SetSelectionChangedHandle(HXUIOBJ hObj);
+protected:
+
+ XUI_BEGIN_MSG_MAP()
+ XUI_ON_XM_INIT(OnInit)
+ XUI_ON_XM_GET_SOURCE_TEXT(OnGetSourceDataText)
+ XUI_ON_XM_GET_ITEMCOUNT_ALL(OnGetItemCountAll)
+ XUI_ON_XM_GET_SOURCE_IMAGE(OnGetSourceDataImage)
+ XUI_ON_XM_GET_ITEMENABLE(OnGetItemEnable)
+ XUI_ON_XM_DESTROY( OnDestroy )
+ XUI_ON_XM_NOTIFY_SELCHANGED( OnNotifySelChanged )
+ XUI_END_MSG_MAP()
+
+
+ HRESULT OnInit( XUIMessageInit* pInitData, BOOL& bHandled );
+ HRESULT OnGetSourceDataText(XUIMessageGetSourceText *pGetSourceTextData, BOOL& bHandled);
+ HRESULT OnGetItemCountAll(XUIMessageGetItemCount *pGetItemCountData, BOOL& bHandled);
+ HRESULT OnGetSourceDataImage(XUIMessageGetSourceImage *pGetSourceImageData,BOOL& bHandled);
+ HRESULT OnGetItemEnable(XUIMessageGetItemEnable *pGetItemEnableData,BOOL& bHandled);
+ HRESULT OnDestroy();
+ HRESULT OnNotifySelChanged( HXUIOBJ hObjSource, XUINotifySelChanged* pNotifySelChangedData, BOOL& bHandled );
+
+ LISTITEMINFOARRAY m_vListData;
+ CRITICAL_SECTION m_AccessListData;
+
+private:
+ static bool AlphabeticSortFn(const void *a, const void *b);
+ static bool TimeSortFn(const void *a, const void *b);
+ static bool IndexSortFn(const void *a, const void *b);
+
+ HXUIOBJ m_hSelectionChangedHandlerObj;
+};