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_FWL_LIGHTWIDGET_CFWL_LISTBOX_H_ | |
8 #define XFA_FWL_LIGHTWIDGET_CFWL_LISTBOX_H_ | |
9 | |
10 #include <memory> | |
11 #include <vector> | |
12 | |
13 #include "xfa/fwl/core/fwl_error.h" | |
14 #include "xfa/fwl/core/ifwl_listbox.h" | |
15 #include "xfa/fwl/core/ifwl_widget.h" | |
16 #include "xfa/fwl/lightwidget/cfwl_widget.h" | |
17 | |
18 class CFWL_ListItem; | |
19 | |
20 class CFWL_ListBox : public CFWL_Widget { | |
21 public: | |
22 CFWL_ListBox(); | |
23 ~CFWL_ListBox() override; | |
24 | |
25 IFWL_ListBox* GetWidget() override; | |
26 const IFWL_ListBox* GetWidget() const override; | |
27 | |
28 FWL_Error Initialize(const CFWL_WidgetProperties* pProperties = nullptr); | |
29 FWL_Error AddDIBitmap(CFX_DIBitmap* pDIB, IFWL_ListItem* pItem); | |
30 IFWL_ListItem* AddString(const CFX_WideStringC& wsAdd, | |
31 FX_BOOL bSelect = FALSE); | |
32 FX_BOOL DeleteString(IFWL_ListItem* pItem); | |
33 void DeleteAll(); | |
34 int32_t CountSelItems(); | |
35 IFWL_ListItem* GetSelItem(int32_t nIndexSel); | |
36 int32_t GetSelIndex(int32_t nIndex); | |
37 FWL_Error SetSelItem(IFWL_ListItem* pItem, FX_BOOL bSelect = TRUE); | |
38 FWL_Error GetItemText(IFWL_ListItem* pItem, CFX_WideString& wsText); | |
39 FWL_Error GetScrollPos(FX_FLOAT& fPos, FX_BOOL bVert = TRUE); | |
40 FWL_Error SetItemHeight(FX_FLOAT fItemHeight); | |
41 IFWL_ListItem* GetFocusItem(); | |
42 FWL_Error SetFocusItem(IFWL_ListItem* pItem); | |
43 int32_t CountItems(); | |
44 IFWL_ListItem* GetItem(int32_t nIndex); | |
45 FWL_Error SetItemString(IFWL_ListItem* pItem, const CFX_WideStringC& wsText); | |
46 FWL_Error GetItemString(IFWL_ListItem* pItem, CFX_WideString& wsText); | |
47 FWL_Error SetItemData(IFWL_ListItem* pItem, void* pData); | |
48 void* GetItemData(IFWL_ListItem* pItem); | |
49 IFWL_ListItem* GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy); | |
50 uint32_t GetItemStates(IFWL_ListItem* pItem); | |
51 | |
52 protected: | |
53 class CFWL_ListBoxDP : public IFWL_ListBoxDP { | |
54 public: | |
55 CFWL_ListBoxDP(); | |
56 ~CFWL_ListBoxDP() override; | |
57 | |
58 // IFWL_DataProvider: | |
59 FWL_Error GetCaption(IFWL_Widget* pWidget, | |
60 CFX_WideString& wsCaption) override; | |
61 | |
62 // IFWL_ListBoxDP: | |
63 int32_t CountItems(const IFWL_Widget* pWidget) override; | |
64 IFWL_ListItem* GetItem(const IFWL_Widget* pWidget, int32_t nIndex) override; | |
65 int32_t GetItemIndex(IFWL_Widget* pWidget, IFWL_ListItem* pItem) override; | |
66 FX_BOOL SetItemIndex(IFWL_Widget* pWidget, | |
67 IFWL_ListItem* pItem, | |
68 int32_t nIndex) override; | |
69 uint32_t GetItemStyles(IFWL_Widget* pWidget, IFWL_ListItem* pItem) override; | |
70 FWL_Error GetItemText(IFWL_Widget* pWidget, | |
71 IFWL_ListItem* pItem, | |
72 CFX_WideString& wsText) override; | |
73 FWL_Error GetItemRect(IFWL_Widget* pWidget, | |
74 IFWL_ListItem* pItem, | |
75 CFX_RectF& rtItem) override; | |
76 void* GetItemData(IFWL_Widget* pWidget, IFWL_ListItem* pItem) override; | |
77 FWL_Error SetItemStyles(IFWL_Widget* pWidget, | |
78 IFWL_ListItem* pItem, | |
79 uint32_t dwStyle) override; | |
80 FWL_Error SetItemText(IFWL_Widget* pWidget, | |
81 IFWL_ListItem* pItem, | |
82 const FX_WCHAR* pszText) override; | |
83 FWL_Error SetItemRect(IFWL_Widget* pWidget, | |
84 IFWL_ListItem* pItem, | |
85 const CFX_RectF& rtItem) override; | |
86 FX_FLOAT GetItemHeight(IFWL_Widget* pWidget) override; | |
87 CFX_DIBitmap* GetItemIcon(IFWL_Widget* pWidget, | |
88 IFWL_ListItem* pItem) override; | |
89 FWL_Error GetItemCheckRect(IFWL_Widget* pWidget, | |
90 IFWL_ListItem* pItem, | |
91 CFX_RectF& rtCheck) override; | |
92 FWL_Error SetItemCheckRect(IFWL_Widget* pWidget, | |
93 IFWL_ListItem* pItem, | |
94 const CFX_RectF& rtCheck) override; | |
95 uint32_t GetItemCheckState(IFWL_Widget* pWidget, | |
96 IFWL_ListItem* pItem) override; | |
97 FWL_Error SetItemCheckState(IFWL_Widget* pWidget, | |
98 IFWL_ListItem* pItem, | |
99 uint32_t dwCheckState) override; | |
100 | |
101 std::vector<std::unique_ptr<CFWL_ListItem>> m_ItemArray; | |
102 CFX_WideString m_wsData; | |
103 FX_FLOAT m_fItemHeight; | |
104 }; | |
105 | |
106 CFWL_ListBoxDP m_ListBoxDP; | |
107 }; | |
108 | |
109 class CFWL_ListItem : public IFWL_ListItem { | |
110 public: | |
111 CFWL_ListItem(); | |
112 ~CFWL_ListItem(); | |
113 | |
114 CFX_RectF m_rtItem; | |
115 uint32_t m_dwStates; | |
116 CFX_WideString m_wsText; | |
117 CFX_DIBitmap* m_pDIB; | |
118 void* m_pData; | |
119 uint32_t m_dwCheckState; | |
120 CFX_RectF m_rtCheckBox; | |
121 }; | |
122 | |
123 #endif // XFA_FWL_LIGHTWIDGET_CFWL_LISTBOX_H_ | |
OLD | NEW |