summaryrefslogtreecommitdiff
path: root/xfa/fwl/core/ifwl_listbox.h
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2016-11-23 12:20:47 -0500
committerChromium commit bot <commit-bot@chromium.org>2016-11-23 17:38:32 +0000
commit0ced827f257344a1f5804aa96df538f3e783bd10 (patch)
tree5387c8a2d18be8b86d9b2a72a8f829118f0e42bb /xfa/fwl/core/ifwl_listbox.h
parent209821f79d0bbeeaeadf4e82ff643ee20d676222 (diff)
downloadpdfium-0ced827f257344a1f5804aa96df538f3e783bd10.tar.xz
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 <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'xfa/fwl/core/ifwl_listbox.h')
-rw-r--r--xfa/fwl/core/ifwl_listbox.h72
1 files changed, 35 insertions, 37 deletions
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 <memory>
+#include <vector>
#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<CFWL_WidgetProperties> 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<std::unique_ptr<CFWL_ListItem>> m_ItemArray;
};
#endif // XFA_FWL_CORE_IFWL_LISTBOX_H_