Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: xfa/fwl/core/ifwl_combobox.h

Issue 2432423002: Merge the CFWL_*Imp classes into the IFWL_* classes. (Closed)
Patch Set: Review feedback Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fwl/core/ifwl_checkbox.cpp ('k') | xfa/fwl/core/ifwl_combobox.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef XFA_FWL_BASEWIDGET_FWL_COMBOBOXIMP_H_ 7 #ifndef XFA_FWL_CORE_IFWL_COMBOBOX_H_
8 #define XFA_FWL_BASEWIDGET_FWL_COMBOBOXIMP_H_ 8 #define XFA_FWL_CORE_IFWL_COMBOBOX_H_
9 9
10 #include <memory> 10 #include "xfa/fwl/core/ifwl_form.h"
11 #include "xfa/fwl/core/ifwl_listbox.h"
12 #include "xfa/fxgraphics/cfx_graphics.h"
11 13
12 #include "xfa/fwl/basewidget/fwl_editimp.h" 14 class CFWL_ComboBoxImpDelegate;
13 #include "xfa/fwl/basewidget/fwl_listboximp.h" 15 class CFWL_ComboEditImpDelegate;
14 16 class CFWL_ComboListImpDelegate;
15 class CFWL_WidgetImp; 17 class CFWL_ComboProxyImpDelegate;
18 class CFWL_ListBoxImpDelegate;
16 class CFWL_WidgetImpProperties; 19 class CFWL_WidgetImpProperties;
17 class CFWL_WidgetImpDelegate; 20 class CFWL_WidgetImpDelegate;
18 class CFWL_ListBoxImp; 21 class IFWL_ComboBox;
19 class CFWL_ListBoxImpDelegate; 22 class IFWL_ComboEdit;
20 class CFWL_FormProxyImp; 23 class IFWL_ComboList;
24 class IFWL_FormProxy;
25 class IFWL_ListBox;
21 class IFWL_Widget; 26 class IFWL_Widget;
22 class CFWL_ComboEditImp; 27
23 class CFWL_ComboEditImpDelegate; 28 #define FWL_CLASS_ComboBox L"FWL_COMBOBOX"
24 class CFWL_ComboListImp; 29 #define FWL_STYLEEXT_CMB_DropList (0L << 0)
25 class CFWL_ComboListImpDelegate; 30 #define FWL_STYLEEXT_CMB_DropDown (1L << 0)
26 class CFWL_ComboBoxImp; 31 #define FWL_STYLEEXT_CMB_Sort (1L << 1)
27 class CFWL_ComboBoxImpDelegate; 32 #define FWL_STYLEEXT_CMB_ListDrag (1L << 2)
28 class CFWL_ComboProxyImpDelegate; 33 #define FWL_STYLEEXT_CMB_OwnerDraw (1L << 3)
29 class CFWL_ComboEditImp : public CFWL_EditImp { 34 #define FWL_STYLEEXT_CMB_EditHNear (0L << 4)
35 #define FWL_STYLEEXT_CMB_EditHCenter (1L << 4)
36 #define FWL_STYLEEXT_CMB_EditHFar (2L << 4)
37 #define FWL_STYLEEXT_CMB_EditVNear (0L << 6)
38 #define FWL_STYLEEXT_CMB_EditVCenter (1L << 6)
39 #define FWL_STYLEEXT_CMB_EditVFar (2L << 6)
40 #define FWL_STYLEEXT_CMB_EditJustified (1L << 8)
41 #define FWL_STYLEEXT_CMB_EditDistributed (2L << 8)
42 #define FWL_STYLEEXT_CMB_EditHAlignMask (3L << 4)
43 #define FWL_STYLEEXT_CMB_EditVAlignMask (3L << 6)
44 #define FWL_STYLEEXT_CMB_EditHAlignModeMask (3L << 8)
45 #define FWL_STYLEEXT_CMB_ListItemLeftAlign (0L << 10)
46 #define FWL_STYLEEXT_CMB_ListItemCenterAlign (1L << 10)
47 #define FWL_STYLEEXT_CMB_ListItemRightAlign (2L << 10)
48 #define FWL_STYLEEXT_CMB_ListItemAlignMask (3L << 10)
49 #define FWL_STYLEEXT_CMB_ListItemText (0L << 12)
50 #define FWL_STYLEEXT_CMB_ListItemIconText (1L << 12)
51 #define FWL_STYLEEXT_CMB_ReadOnly (1L << 13)
52
53 FWL_EVENT_DEF(CFWL_EvtCmbPreDropDown, CFWL_EventType::PreDropDown)
54
55 FWL_EVENT_DEF(CFWL_EvtCmbPostDropDown, CFWL_EventType::PostDropDown)
56
57 FWL_EVENT_DEF(CFWL_EvtCmbCloseUp, CFWL_EventType::CloseUp)
58
59 FWL_EVENT_DEF(CFWL_EvtCmbEditChanged,
60 CFWL_EventType::EditChanged,
61 int32_t nChangeType;
62 CFX_WideString wsInsert;
63 CFX_WideString wsDelete;)
64
65 FWL_EVENT_DEF(CFWL_EvtCmbSelChanged,
66 CFWL_EventType::SelectChanged,
67 CFX_Int32Array iArraySels;
68 FX_BOOL bLButtonUp;)
69
70 FWL_EVENT_DEF(CFWL_EvtCmbHoverChanged,
71 CFWL_EventType::HoverChanged,
72 int32_t m_iCurHover;)
73
74 FWL_EVENT_DEF(CFWL_EvtCmbDrawItem,
75 CFWL_EventType::DrawItem,
76 CFX_Graphics* m_pGraphics;
77 CFX_Matrix m_matrix;
78 int32_t m_index;
79 CFX_RectF m_rtItem;)
80
81 class IFWL_ComboBoxDP : public IFWL_ListBoxDP {
30 public: 82 public:
31 CFWL_ComboEditImp(const CFWL_WidgetImpProperties& properties, 83 virtual FX_FLOAT GetListHeight(IFWL_Widget* pWidget) = 0;
32 IFWL_Widget* pOuter); 84 };
33 85
34 void ClearSelected(); 86 class IFWL_ComboBox : public IFWL_Widget {
35 void SetSelected(); 87 public:
36 void EndCaret(); 88 static IFWL_ComboBox* Create(const CFWL_WidgetImpProperties& properties);
37 void FlagFocus(FX_BOOL bSet);
38 89
39 protected: 90 IFWL_ComboBox(const CFWL_WidgetImpProperties& properties,
40 void SetComboBoxFocus(FX_BOOL bSet); 91 IFWL_Widget* pOuter);
41 CFWL_ComboBoxImp* m_pOuter; 92 ~IFWL_ComboBox() override;
42 friend class CFWL_ComboEditImpDelegate;
43 };
44 class CFWL_ComboEditImpDelegate : public CFWL_EditImpDelegate {
45 public:
46 CFWL_ComboEditImpDelegate(CFWL_ComboEditImp* pOwner);
47 void OnProcessMessage(CFWL_Message* pMessage) override;
48 93
49 protected: 94 // IFWL_Widget
50 CFWL_ComboEditImp* m_pOwner;
51 };
52 class CFWL_ComboListImp : public CFWL_ListBoxImp {
53 public:
54 CFWL_ComboListImp(const CFWL_WidgetImpProperties& properties,
55 IFWL_Widget* pOuter);
56
57 // CFWL_WidgetImp
58 FWL_Error Initialize() override;
59 FWL_Error Finalize() override;
60
61 int32_t MatchItem(const CFX_WideString& wsMatch);
62 void ChangeSelected(int32_t iSel);
63 int32_t CountItems();
64 void GetItemRect(int32_t nIndex, CFX_RectF& rtItem);
65 void ClientToOuter(FX_FLOAT& fx, FX_FLOAT& fy);
66 void SetFocus(FX_BOOL bSet);
67
68 FX_BOOL m_bNotifyOwner;
69
70 friend class CFWL_ComboListImpDelegate;
71 friend class CFWL_ComboBoxImp;
72 };
73 class CFWL_ComboListImpDelegate : public CFWL_ListBoxImpDelegate {
74 public:
75 CFWL_ComboListImpDelegate(CFWL_ComboListImp* pOwner);
76 void OnProcessMessage(CFWL_Message* pMessage) override;
77
78 protected:
79 void OnDropListFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet = TRUE);
80 int32_t OnDropListMouseMove(CFWL_MsgMouse* pMsg);
81 int32_t OnDropListLButtonDown(CFWL_MsgMouse* pMsg);
82 int32_t OnDropListLButtonUp(CFWL_MsgMouse* pMsg);
83 int32_t OnDropListKey(CFWL_MsgKey* pKey);
84 void OnDropListKeyDown(CFWL_MsgKey* pKey);
85 CFWL_ComboListImp* m_pOwner;
86 };
87 class CFWL_ComboBoxImp : public CFWL_WidgetImp {
88 public:
89 CFWL_ComboBoxImp(const CFWL_WidgetImpProperties& properties,
90 IFWL_Widget* pOuter);
91 ~CFWL_ComboBoxImp() override;
92
93 // CFWL_WidgetImp
94 FWL_Error GetClassName(CFX_WideString& wsClass) const override; 95 FWL_Error GetClassName(CFX_WideString& wsClass) const override;
95 FWL_Type GetClassID() const override; 96 FWL_Type GetClassID() const override;
96 FWL_Error Initialize() override; 97 FWL_Error Initialize() override;
97 FWL_Error Finalize() override; 98 FWL_Error Finalize() override;
98 FWL_Error GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize = FALSE) override; 99 FWL_Error GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize = FALSE) override;
99 FWL_Error ModifyStylesEx(uint32_t dwStylesExAdded, 100 FWL_Error ModifyStylesEx(uint32_t dwStylesExAdded,
100 uint32_t dwStylesExRemoved) override; 101 uint32_t dwStylesExRemoved) override;
101 void SetStates(uint32_t dwStates, FX_BOOL bSet = TRUE) override; 102 void SetStates(uint32_t dwStates, FX_BOOL bSet = TRUE) override;
102 FWL_Error Update() override; 103 FWL_Error Update() override;
103 FWL_WidgetHit HitTest(FX_FLOAT fx, FX_FLOAT fy) override; 104 FWL_WidgetHit HitTest(FX_FLOAT fx, FX_FLOAT fy) override;
(...skipping 29 matching lines...) Expand all
133 FX_BOOL EditCut(CFX_WideString& wsCut); 134 FX_BOOL EditCut(CFX_WideString& wsCut);
134 FX_BOOL EditPaste(const CFX_WideString& wsPaste); 135 FX_BOOL EditPaste(const CFX_WideString& wsPaste);
135 FX_BOOL EditSelectAll(); 136 FX_BOOL EditSelectAll();
136 FX_BOOL EditDelete(); 137 FX_BOOL EditDelete();
137 FX_BOOL EditDeSelect(); 138 FX_BOOL EditDeSelect();
138 FWL_Error GetBBox(CFX_RectF& rect); 139 FWL_Error GetBBox(CFX_RectF& rect);
139 FWL_Error EditModifyStylesEx(uint32_t dwStylesExAdded, 140 FWL_Error EditModifyStylesEx(uint32_t dwStylesExAdded,
140 uint32_t dwStylesExRemoved); 141 uint32_t dwStylesExRemoved);
141 142
142 protected: 143 protected:
143 friend class CFWL_ComboListImp; 144 friend class CFWL_ComboBoxImpDelegate;
144 friend class CFWL_ComboEditImp;
145 friend class CFWL_ComboEditImpDelegate; 145 friend class CFWL_ComboEditImpDelegate;
146 friend class CFWL_ComboListImpDelegate; 146 friend class CFWL_ComboListImpDelegate;
147 friend class CFWL_ComboBoxImpDelegate;
148 friend class CFWL_ComboProxyImpDelegate; 147 friend class CFWL_ComboProxyImpDelegate;
148 friend class IFWL_ComboEdit;
149 friend class IFWL_ComboList;
149 150
150 void DrawStretchHandler(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix); 151 void DrawStretchHandler(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix);
151 FX_FLOAT GetListHeight(); 152 FX_FLOAT GetListHeight();
152 void ShowDropList(FX_BOOL bActivate); 153 void ShowDropList(FX_BOOL bActivate);
153 FX_BOOL IsDropListShowed(); 154 FX_BOOL IsDropListShowed();
154 FX_BOOL IsDropDownStyle() const; 155 FX_BOOL IsDropDownStyle() const;
155 void MatchEditText(); 156 void MatchEditText();
156 void SynchrEditText(int32_t iListItem); 157 void SynchrEditText(int32_t iListItem);
157 void Layout(); 158 void Layout();
158 void ReSetTheme(); 159 void ReSetTheme();
(...skipping 14 matching lines...) Expand all
173 const CFX_Matrix* pMatrix = nullptr); 174 const CFX_Matrix* pMatrix = nullptr);
174 FWL_Error DisForm_GetBBox(CFX_RectF& rect); 175 FWL_Error DisForm_GetBBox(CFX_RectF& rect);
175 void DisForm_Layout(); 176 void DisForm_Layout();
176 177
177 CFX_RectF m_rtClient; 178 CFX_RectF m_rtClient;
178 CFX_RectF m_rtContent; 179 CFX_RectF m_rtContent;
179 CFX_RectF m_rtBtn; 180 CFX_RectF m_rtBtn;
180 CFX_RectF m_rtList; 181 CFX_RectF m_rtList;
181 CFX_RectF m_rtProxy; 182 CFX_RectF m_rtProxy;
182 CFX_RectF m_rtHandler; 183 CFX_RectF m_rtHandler;
183 std::unique_ptr<IFWL_Edit> m_pEdit; 184 std::unique_ptr<IFWL_ComboEdit> m_pEdit;
184 std::unique_ptr<IFWL_ListBox> m_pListBox; 185 std::unique_ptr<IFWL_ComboList> m_pListBox;
185 IFWL_Form* m_pForm; 186 IFWL_FormProxy* m_pForm;
186 FX_BOOL m_bLButtonDown; 187 FX_BOOL m_bLButtonDown;
187 FX_BOOL m_bUpFormHandler; 188 FX_BOOL m_bUpFormHandler;
188 int32_t m_iCurSel; 189 int32_t m_iCurSel;
189 int32_t m_iBtnState; 190 int32_t m_iBtnState;
190 FX_FLOAT m_fComboFormHandler; 191 FX_FLOAT m_fComboFormHandler;
191 FX_FLOAT m_fItemHeight; 192 FX_FLOAT m_fItemHeight;
192 FX_BOOL m_bNeedShowList; 193 FX_BOOL m_bNeedShowList;
193 CFWL_FormProxyImp* m_pProxy;
194 CFWL_ComboProxyImpDelegate* m_pListProxyDelegate; 194 CFWL_ComboProxyImpDelegate* m_pListProxyDelegate;
195 }; 195 };
196
196 class CFWL_ComboBoxImpDelegate : public CFWL_WidgetImpDelegate { 197 class CFWL_ComboBoxImpDelegate : public CFWL_WidgetImpDelegate {
197 public: 198 public:
198 CFWL_ComboBoxImpDelegate(CFWL_ComboBoxImp* pOwner); 199 CFWL_ComboBoxImpDelegate(IFWL_ComboBox* pOwner);
199 void OnProcessMessage(CFWL_Message* pMessage) override; 200 void OnProcessMessage(CFWL_Message* pMessage) override;
200 void OnProcessEvent(CFWL_Event* pEvent) override; 201 void OnProcessEvent(CFWL_Event* pEvent) override;
201 void OnDrawWidget(CFX_Graphics* pGraphics, 202 void OnDrawWidget(CFX_Graphics* pGraphics,
202 const CFX_Matrix* pMatrix = nullptr) override; 203 const CFX_Matrix* pMatrix = nullptr) override;
203 204
204 protected: 205 protected:
205 void OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet = TRUE); 206 void OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet = TRUE);
206 void OnLButtonDown(CFWL_MsgMouse* pMsg); 207 void OnLButtonDown(CFWL_MsgMouse* pMsg);
207 void OnLButtonUp(CFWL_MsgMouse* pMsg); 208 void OnLButtonUp(CFWL_MsgMouse* pMsg);
208 void OnMouseMove(CFWL_MsgMouse* pMsg); 209 void OnMouseMove(CFWL_MsgMouse* pMsg);
209 void OnMouseLeave(CFWL_MsgMouse* pMsg); 210 void OnMouseLeave(CFWL_MsgMouse* pMsg);
210 void OnKey(CFWL_MsgKey* pMsg); 211 void OnKey(CFWL_MsgKey* pMsg);
211 void DoSubCtrlKey(CFWL_MsgKey* pMsg); 212 void DoSubCtrlKey(CFWL_MsgKey* pMsg);
212
213 protected:
214 void DisForm_OnProcessMessage(CFWL_Message* pMessage); 213 void DisForm_OnProcessMessage(CFWL_Message* pMessage);
215 void DisForm_OnLButtonDown(CFWL_MsgMouse* pMsg); 214 void DisForm_OnLButtonDown(CFWL_MsgMouse* pMsg);
216 void DisForm_OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet = TRUE); 215 void DisForm_OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet = TRUE);
217 void DisForm_OnKey(CFWL_MsgKey* pMsg); 216 void DisForm_OnKey(CFWL_MsgKey* pMsg);
218 217
219 protected: 218 IFWL_ComboBox* m_pOwner;
220 CFWL_ComboBoxImp* m_pOwner;
221 friend class CFWL_ComboEditImpDelegate; 219 friend class CFWL_ComboEditImpDelegate;
222 friend class CFWL_ComboListImpDelegate; 220 friend class CFWL_ComboListImpDelegate;
223 }; 221 };
222
224 class CFWL_ComboProxyImpDelegate : public CFWL_WidgetImpDelegate { 223 class CFWL_ComboProxyImpDelegate : public CFWL_WidgetImpDelegate {
225 public: 224 public:
226 CFWL_ComboProxyImpDelegate(IFWL_Form* pForm, CFWL_ComboBoxImp* pComboBox); 225 CFWL_ComboProxyImpDelegate(IFWL_Form* pForm, IFWL_ComboBox* pComboBox);
227 void OnProcessMessage(CFWL_Message* pMessage) override; 226 void OnProcessMessage(CFWL_Message* pMessage) override;
228 void OnDrawWidget(CFX_Graphics* pGraphics, 227 void OnDrawWidget(CFX_Graphics* pGraphics,
229 const CFX_Matrix* pMatrix = nullptr) override; 228 const CFX_Matrix* pMatrix = nullptr) override;
230 void Reset() { m_bLButtonUpSelf = FALSE; } 229 void Reset() { m_bLButtonUpSelf = FALSE; }
231 230
232 protected: 231 protected:
233 void OnLButtonDown(CFWL_MsgMouse* pMsg); 232 void OnLButtonDown(CFWL_MsgMouse* pMsg);
234 void OnLButtonUp(CFWL_MsgMouse* pMsg); 233 void OnLButtonUp(CFWL_MsgMouse* pMsg);
235 void OnMouseMove(CFWL_MsgMouse* pMsg); 234 void OnMouseMove(CFWL_MsgMouse* pMsg);
236 void OnDeactive(CFWL_MsgDeactivate* pMsg); 235 void OnDeactive(CFWL_MsgDeactivate* pMsg);
237 void OnFocusChanged(CFWL_MsgKillFocus* pMsg, FX_BOOL bSet); 236 void OnFocusChanged(CFWL_MsgKillFocus* pMsg, FX_BOOL bSet);
238 FX_BOOL m_bLButtonDown; 237 FX_BOOL m_bLButtonDown;
239 FX_BOOL m_bLButtonUpSelf; 238 FX_BOOL m_bLButtonUpSelf;
240 FX_FLOAT m_fStartPos; 239 FX_FLOAT m_fStartPos;
241 IFWL_Form* m_pForm; 240 IFWL_Form* m_pForm;
242 CFWL_ComboBoxImp* m_pComboBox; 241 IFWL_ComboBox* m_pComboBox;
243 }; 242 };
244 243
245 #endif // XFA_FWL_BASEWIDGET_FWL_COMBOBOXIMP_H_ 244 #endif // XFA_FWL_CORE_IFWL_COMBOBOX_H_
OLDNEW
« no previous file with comments | « xfa/fwl/core/ifwl_checkbox.cpp ('k') | xfa/fwl/core/ifwl_combobox.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698