From 0ced827f257344a1f5804aa96df538f3e783bd10 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Wed, 23 Nov 2016 12:20:47 -0500 Subject: Remove listbox providers and build into listbox This CL removes the IFWL_ListBox::DataProvider and builds the data storage for the list directly into IFWL_ListBox. This removes the need for the provider in CFWL_ComboBox and CFWL_ListBox. Change-Id: I74c2286757a0b73083908f1cc630a88e7d730fd9 Reviewed-on: https://pdfium-review.googlesource.com/2050 Commit-Queue: dan sinclair Reviewed-by: Tom Sepez --- xfa/fwl/core/ifwl_listbox.h | 72 ++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 37 deletions(-) (limited to 'xfa/fwl/core/ifwl_listbox.h') diff --git a/xfa/fwl/core/ifwl_listbox.h b/xfa/fwl/core/ifwl_listbox.h index ea1c54e3a3..7b23881c21 100644 --- a/xfa/fwl/core/ifwl_listbox.h +++ b/xfa/fwl/core/ifwl_listbox.h @@ -8,6 +8,7 @@ #define XFA_FWL_CORE_IFWL_LISTBOX_H_ #include +#include #include "xfa/fwl/core/cfwl_event.h" #include "xfa/fwl/core/cfwl_listitem.h" @@ -39,43 +40,6 @@ class CFX_DIBitmap; class IFWL_ListBox : public IFWL_Widget { public: - class DataProvider : public IFWL_Widget::DataProvider { - public: - virtual int32_t CountItems(const IFWL_Widget* pWidget) const = 0; - virtual CFWL_ListItem* GetItem(const IFWL_Widget* pWidget, - int32_t nIndex) const = 0; - virtual int32_t GetItemIndex(IFWL_Widget* pWidget, - CFWL_ListItem* pItem) = 0; - virtual uint32_t GetItemStyles(IFWL_Widget* pWidget, - CFWL_ListItem* pItem) = 0; - virtual void GetItemText(IFWL_Widget* pWidget, - CFWL_ListItem* pItem, - CFX_WideString& wsText) = 0; - virtual void GetItemRect(IFWL_Widget* pWidget, - CFWL_ListItem* pItem, - CFX_RectF& rtItem) = 0; - virtual void* GetItemData(IFWL_Widget* pWidget, CFWL_ListItem* pItem) = 0; - virtual void SetItemStyles(IFWL_Widget* pWidget, - CFWL_ListItem* pItem, - uint32_t dwStyle) = 0; - virtual void SetItemRect(IFWL_Widget* pWidget, - CFWL_ListItem* pItem, - const CFX_RectF& rtItem) = 0; - virtual CFX_DIBitmap* GetItemIcon(IFWL_Widget* pWidget, - CFWL_ListItem* pItem) = 0; - virtual void GetItemCheckRect(IFWL_Widget* pWidget, - CFWL_ListItem* pItem, - CFX_RectF& rtCheck) = 0; - virtual void SetItemCheckRect(IFWL_Widget* pWidget, - CFWL_ListItem* pItem, - const CFX_RectF& rtCheck) = 0; - virtual uint32_t GetItemCheckState(IFWL_Widget* pWidget, - CFWL_ListItem* pItem) = 0; - virtual void SetItemCheckState(IFWL_Widget* pWidget, - CFWL_ListItem* pItem, - uint32_t dwCheckState) = 0; - }; - IFWL_ListBox(const CFWL_App* app, std::unique_ptr properties, IFWL_Widget* pOuter); @@ -94,6 +58,39 @@ class IFWL_ListBox : public IFWL_Widget { void OnDrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) override; + int32_t CountItems(const IFWL_Widget* pWidget) const; + CFWL_ListItem* GetItem(const IFWL_Widget* pWidget, int32_t nIndex) const; + int32_t GetItemIndex(IFWL_Widget* pWidget, CFWL_ListItem* pItem); + uint32_t GetItemStyles(IFWL_Widget* pWidget, CFWL_ListItem* pItem); + void GetItemText(IFWL_Widget* pWidget, + CFWL_ListItem* pItem, + CFX_WideString& wsText); + void GetItemRect(IFWL_Widget* pWidget, + CFWL_ListItem* pItem, + CFX_RectF& rtItem); + void* GetItemData(IFWL_Widget* pWidget, CFWL_ListItem* pItem); + void SetItemStyles(IFWL_Widget* pWidget, + CFWL_ListItem* pItem, + uint32_t dwStyle); + void SetItemRect(IFWL_Widget* pWidget, + CFWL_ListItem* pItem, + const CFX_RectF& rtItem); + CFX_DIBitmap* GetItemIcon(IFWL_Widget* pWidget, CFWL_ListItem* pItem); + void GetItemCheckRect(IFWL_Widget* pWidget, + CFWL_ListItem* pItem, + CFX_RectF& rtCheck); + void SetItemCheckRect(IFWL_Widget* pWidget, + CFWL_ListItem* pItem, + const CFX_RectF& rtCheck); + uint32_t GetItemCheckState(IFWL_Widget* pWidget, CFWL_ListItem* pItem); + void SetItemCheckState(IFWL_Widget* pWidget, + CFWL_ListItem* pItem, + uint32_t dwCheckState); + CFWL_ListItem* AddString(const CFX_WideStringC& wsAdd, bool bSelect = false); + bool RemoveAt(int32_t iIndex); + bool DeleteString(CFWL_ListItem* pItem); + void DeleteAll(); + int32_t CountSelItems(); CFWL_ListItem* GetSelItem(int32_t nIndexSel); int32_t GetSelIndex(int32_t nIndex); @@ -165,6 +162,7 @@ class IFWL_ListBox : public IFWL_Widget { FX_FLOAT m_fScorllBarWidth; bool m_bLButtonDown; IFWL_ThemeProvider* m_pScrollBarTP; + std::vector> m_ItemArray; }; #endif // XFA_FWL_CORE_IFWL_LISTBOX_H_ -- cgit v1.2.3