4#include "GUIDefinitions.h"
5#include "GUITreeCtrlBase.h"
11 class CGUIMenuItemBase;
12 class CGUIDialogAddSNAPNodeDisplay;
13 class CGUIPaneExampleSNAP;
17 typedef struct sMatchResult
20 sMatchResult(int32_t _i32Start, int32_t _i32End, int32_t _i32AliasIndex)
21 : i32Start(_i32Start), i32End(_i32End), i32AliasIndex(_i32AliasIndex){}
25 int32_t i32AliasIndex;
28 class FL_EXPORT CGUITreeCtrl :
public CGUITreeCtrlBase
31 CGUITreeCtrl() noexcept;
32 CGUITreeCtrl(const CGUITreeCtrl& rh);
33 virtual ~CGUITreeCtrl();
44 virtual
bool RecursiveExpand(HTREEITEM hItem, UINT nCode,
bool bWriteFileSystem = true) override;
53 virtual
void GetVerticalRange(HTREEITEM hItemRangeStart, HTREEITEM hItemRangeEnd, std::set<HTREEITEM>& setOut);
59 virtual
void ClearMultiselectItems();
68 virtual HTREEITEM FindHandle(
void* pData, HTREEITEM hParent = 0);
77 virtual HTREEITEM FindHandle(const Base::CFLString<
wchar_t>& strPath, HTREEITEM hParent = 0);
85 virtual HTREEITEM FindHandleByFullPath(const Base::CFLString<
wchar_t>& strFullPath);
96 virtual const CResult SortTreeItem(HTREEITEM hItem = NULL, ESortOrder eSortOrder = ESortOrder_Ascending);
106 virtual const CResult SetRootItemName(const Base::CFLString<
wchar_t>& strRootItemName);
114 virtual const Base::CFLString<
wchar_t>& GetRootItemName();
123 virtual const CResult EnableDragAndDropItem(
bool bEnable);
130 virtual
bool IsDragAndDropItemEnabled();
138 virtual const CResult SetDefaultImageList();
140 virtual
bool SearchNext();
141 virtual
bool SearchPrev();
142 virtual
bool SearchFirst();
143 virtual
bool SearchLast();
145 virtual
void SetParentPane(CGUIPaneBase* pParentPane);
146 virtual CGUIPaneBase* GetParentPane();
148 virtual
void SetParentPaneType(EPaneType eParentPaneType);
149 virtual EPaneType GetParentPaneType();
151 virtual
void SetFoundIndex(int32_t i32Idx);
152 virtual int32_t GetFoundIndex();
153 virtual int32_t GetFoundIndex(HTREEITEM hItem);
154 virtual int32_t GetFoundCount();
155 virtual HTREEITEM GetFoundItem(int32_t i32Index);
157 virtual
void EnableItem(CGUIMenuItemBase* pMenuItem,
bool bEnable);
159 virtual HTREEITEM MoveTreeItem(HTREEITEM hItem, HTREEITEM hItemTo, HTREEITEM hItemPos = TVI_LAST);
162 DECLARE_MESSAGE_MAP()
163 virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
164 afx_msg
void OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult);
165 afx_msg
void OnNMClick(NMHDR* pNMHDR, LRESULT* pResult);
166 afx_msg
void OnLButtonDblClk(UINT nFlags, CPoint point);
167 afx_msg
void OnLButtonDown(UINT nFlags, CPoint point);
168 afx_msg
void OnLButtonUp(UINT nFlags, CPoint point);
169 afx_msg
void OnMouseMove(UINT nFlags, CPoint point);
170 afx_msg HBRUSH CtlColor(CDC* , UINT );
171 afx_msg BOOL OnEraseBkgnd(CDC* pDC);
172 afx_msg
void OnTvnItemexpanded(NMHDR* pNMHDR, LRESULT* pResult);
173 afx_msg
void OnTvnSelchanging(NMHDR* pNMHDR, LRESULT* pResult);
174 afx_msg
void OnTvnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);
175 afx_msg
void OnTvnItemChanged(NMHDR* pNMHDR, LRESULT* pResult);
176 afx_msg
void OnTvnItemChanging(NMHDR* pNMHDR, LRESULT* pResult);
177 afx_msg
void OnTvnBegindrag(NMHDR* pNMHDR, LRESULT* pResult);
178 afx_msg
void OnTvnBeginrdrag(NMHDR* pNMHDR, LRESULT* pResult);
179 afx_msg
void OnTvnDeleteitem(NMHDR* pNMHDR, LRESULT* pResult);
180 afx_msg BOOL OnMouseWheel(UINT nFlags,
short zDelta, CPoint pt);
182 afx_msg LRESULT OnCancelAddNode(WPARAM wParam, LPARAM lParam);
183 afx_msg LRESULT OnUnselectItem(WPARAM wParam, LPARAM lParam);
185 virtual BOOL PreTranslateMessage(MSG* pMsg);
188 virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
191 CGUIMenuItemBase* GetSNAPNodePropertyMenu(HTREEITEM hItem);
192 virtual
void InternalSortTreeItem(HTREEITEM hItem, ESortOrder eSortOrder,
bool bAllowRoot = false);
193 static
int CALLBACK CompareDesendingProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
194 static
int CALLBACK CompareAscendingProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
197 Base::CFLString<
wchar_t> m_strRootItemName;
198 int32_t m_i32FoundIdx;
199 std::vector<std::pair<HTREEITEM, std::vector<SMatchResult>>>& m_vctFound;
200 std::set<CGUIMenuItemBase*>& m_setMenuItemOnFavorite;
201 std::set<CGUIMenuItemBase*>& m_setMenuItemHided;
202 HTREEITEM m_hItemVertStart;
203 std::set<HTREEITEM>& m_setMultiSelect;
204 CImageList m_imgListDefault;
207 bool m_bUnselectItem;
208 bool m_bEnableDragAndDropItem;
210 HTREEITEM m_hItemUnselect;
211 HTREEITEM m_hItemLButtonDown;
212 EPaneType m_eParentPaneType;
215 CGUIDialogAddSNAPNodeDisplay* m_pDlgAddNode;
216 CGUIPaneBase* m_pParentPane;
218 friend class CGUIManager;
219 friend class CGUIPaneMenu;
220 friend class CGUIPaneExampleSNAP;
221 friend class CGUITreeCtrlSearchUtils;