OLD | NEW |
| (Empty) |
1 // Copyright 2014 PDFium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
6 | |
7 #ifndef XFA_INCLUDE_FWL_LIGHTWIDGET_LISTBOX_H_ | |
8 #define XFA_INCLUDE_FWL_LIGHTWIDGET_LISTBOX_H_ | |
9 | |
10 #include <memory> | |
11 #include <vector> | |
12 | |
13 #include "xfa/fwl/basewidget/ifwl_listbox.h" | |
14 #include "xfa/fwl/core/fwl_error.h" | |
15 #include "xfa/fwl/core/ifwl_widget.h" | |
16 #include "xfa/include/fwl/lightwidget/widget.h" | |
17 | |
18 class CFWL_ListItem; | |
19 | |
20 class CFWL_ListBox : public CFWL_Widget { | |
21 public: | |
22 static CFWL_ListBox* Create(); | |
23 FWL_ERR Initialize(const CFWL_WidgetProperties* pProperties = NULL); | |
24 FWL_ERR AddDIBitmap(CFX_DIBitmap* pDIB, FWL_HLISTITEM hItem); | |
25 FWL_HLISTITEM AddString(const CFX_WideStringC& wsAdd, | |
26 FX_BOOL bSelect = FALSE); | |
27 FX_BOOL DeleteString(FWL_HLISTITEM hItem); | |
28 void DeleteAll(); | |
29 int32_t CountSelItems(); | |
30 FWL_HLISTITEM GetSelItem(int32_t nIndexSel); | |
31 int32_t GetSelIndex(int32_t nIndex); | |
32 FWL_ERR SetSelItem(FWL_HLISTITEM hItem, FX_BOOL bSelect = TRUE); | |
33 FWL_ERR GetItemText(FWL_HLISTITEM hItem, CFX_WideString& wsText); | |
34 FWL_ERR GetScrollPos(FX_FLOAT& fPos, FX_BOOL bVert = TRUE); | |
35 FWL_ERR SetItemHeight(FX_FLOAT fItemHeight); | |
36 FWL_HLISTITEM GetFocusItem(); | |
37 FWL_ERR SetFocusItem(FWL_HLISTITEM hItem); | |
38 FWL_ERR* Sort(IFWL_ListBoxCompare* pCom); | |
39 int32_t CountItems(); | |
40 FWL_HLISTITEM GetItem(int32_t nIndex); | |
41 FWL_ERR SetItemString(FWL_HLISTITEM hItem, const CFX_WideStringC& wsText); | |
42 FWL_ERR GetItemString(FWL_HLISTITEM hItem, CFX_WideString& wsText); | |
43 FWL_ERR SetItemData(FWL_HLISTITEM hItem, void* pData); | |
44 void* GetItemData(FWL_HLISTITEM hItem); | |
45 FWL_HLISTITEM GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy); | |
46 uint32_t GetItemStates(FWL_HLISTITEM hItem); | |
47 CFWL_ListBox(); | |
48 virtual ~CFWL_ListBox(); | |
49 | |
50 protected: | |
51 class CFWL_ListBoxDP : public IFWL_ListBoxDP { | |
52 public: | |
53 CFWL_ListBoxDP(); | |
54 ~CFWL_ListBoxDP(); | |
55 | |
56 // IFWL_DataProvider: | |
57 FWL_ERR GetCaption(IFWL_Widget* pWidget, | |
58 CFX_WideString& wsCaption) override; | |
59 | |
60 // IFWL_ListBoxDP: | |
61 int32_t CountItems(IFWL_Widget* pWidget) override; | |
62 FWL_HLISTITEM GetItem(IFWL_Widget* pWidget, int32_t nIndex) override; | |
63 int32_t GetItemIndex(IFWL_Widget* pWidget, FWL_HLISTITEM hItem) override; | |
64 FX_BOOL SetItemIndex(IFWL_Widget* pWidget, | |
65 FWL_HLISTITEM hItem, | |
66 int32_t nIndex) override; | |
67 uint32_t GetItemStyles(IFWL_Widget* pWidget, FWL_HLISTITEM hItem) override; | |
68 FWL_ERR GetItemText(IFWL_Widget* pWidget, | |
69 FWL_HLISTITEM hItem, | |
70 CFX_WideString& wsText) override; | |
71 FWL_ERR GetItemRect(IFWL_Widget* pWidget, | |
72 FWL_HLISTITEM hItem, | |
73 CFX_RectF& rtItem) override; | |
74 void* GetItemData(IFWL_Widget* pWidget, FWL_HLISTITEM hItem) override; | |
75 FWL_ERR SetItemStyles(IFWL_Widget* pWidget, | |
76 FWL_HLISTITEM hItem, | |
77 uint32_t dwStyle) override; | |
78 FWL_ERR SetItemText(IFWL_Widget* pWidget, | |
79 FWL_HLISTITEM hItem, | |
80 const FX_WCHAR* pszText) override; | |
81 FWL_ERR SetItemRect(IFWL_Widget* pWidget, | |
82 FWL_HLISTITEM hItem, | |
83 const CFX_RectF& rtItem) override; | |
84 FX_FLOAT GetItemHeight(IFWL_Widget* pWidget) override; | |
85 CFX_DIBitmap* GetItemIcon(IFWL_Widget* pWidget, | |
86 FWL_HLISTITEM hItem) override; | |
87 FWL_ERR GetItemCheckRect(IFWL_Widget* pWidget, | |
88 FWL_HLISTITEM hItem, | |
89 CFX_RectF& rtCheck) override; | |
90 FWL_ERR SetItemCheckRect(IFWL_Widget* pWidget, | |
91 FWL_HLISTITEM hItem, | |
92 const CFX_RectF& rtCheck) override; | |
93 uint32_t GetItemCheckState(IFWL_Widget* pWidget, | |
94 FWL_HLISTITEM hItem) override; | |
95 FWL_ERR SetItemCheckState(IFWL_Widget* pWidget, | |
96 FWL_HLISTITEM hItem, | |
97 uint32_t dwCheckState) override; | |
98 | |
99 std::vector<std::unique_ptr<CFWL_ListItem>> m_ItemArray; | |
100 CFX_WideString m_wsData; | |
101 FX_FLOAT m_fItemHeight; | |
102 }; | |
103 | |
104 CFWL_ListBoxDP m_ListBoxDP; | |
105 }; | |
106 | |
107 class CFWL_ListItem { | |
108 public: | |
109 CFWL_ListItem() { | |
110 m_rtItem.Reset(); | |
111 m_dwStates = 0; | |
112 m_wsText = L""; | |
113 m_pDIB = NULL; | |
114 m_pData = NULL; | |
115 m_dwCheckState = 0; | |
116 m_rtCheckBox.Reset(); | |
117 } | |
118 CFX_RectF m_rtItem; | |
119 uint32_t m_dwStates; | |
120 CFX_WideString m_wsText; | |
121 CFX_DIBitmap* m_pDIB; | |
122 void* m_pData; | |
123 uint32_t m_dwCheckState; | |
124 CFX_RectF m_rtCheckBox; | |
125 }; | |
126 | |
127 #endif // XFA_INCLUDE_FWL_LIGHTWIDGET_LISTBOX_H_ | |
OLD | NEW |