summaryrefslogtreecommitdiff
path: root/xfa/fwl/core/cfwl_listbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fwl/core/cfwl_listbox.cpp')
-rw-r--r--xfa/fwl/core/cfwl_listbox.cpp136
1 files changed, 24 insertions, 112 deletions
diff --git a/xfa/fwl/core/cfwl_listbox.cpp b/xfa/fwl/core/cfwl_listbox.cpp
index cefee8ca87..bf7798978a 100644
--- a/xfa/fwl/core/cfwl_listbox.cpp
+++ b/xfa/fwl/core/cfwl_listbox.cpp
@@ -34,35 +34,38 @@ void CFWL_ListBox::Initialize() {
CFWL_Widget::Initialize();
}
+CFWL_ListItem* CFWL_ListBox::GetItem(const IFWL_Widget* pWidget,
+ int32_t nIndex) const {
+ return GetWidget() ? ToListBox(GetWidget())->GetItem(pWidget, nIndex)
+ : nullptr;
+}
+
+void CFWL_ListBox::GetItemText(IFWL_Widget* pWidget,
+ CFWL_ListItem* pItem,
+ CFX_WideString& wsText) {
+ if (GetWidget())
+ ToListBox(GetWidget())->GetItemText(pWidget, pItem, wsText);
+}
+
CFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd,
bool bSelect) {
- std::unique_ptr<CFWL_ListItem> pItem(new CFWL_ListItem);
- pItem->m_dwStates = 0;
- pItem->m_wsText = wsAdd;
- pItem->m_dwStates = bSelect ? FWL_ITEMSTATE_LTB_Selected : 0;
- m_ItemArray.push_back(std::move(pItem));
- return m_ItemArray.back().get();
+ return GetWidget() ? ToListBox(GetWidget())->AddString(wsAdd, bSelect)
+ : nullptr;
}
bool CFWL_ListBox::DeleteString(CFWL_ListItem* pItem) {
- int32_t nIndex = GetItemIndex(GetWidget(), pItem);
- if (nIndex < 0 || static_cast<size_t>(nIndex) >= m_ItemArray.size())
- return false;
-
- int32_t iSel = nIndex + 1;
- if (iSel >= CountItems(m_pIface.get()))
- iSel = nIndex - 1;
- if (iSel >= 0) {
- CFWL_ListItem* pSel =
- static_cast<CFWL_ListItem*>(GetItem(m_pIface.get(), iSel));
- pSel->m_dwStates |= FWL_ITEMSTATE_LTB_Selected;
- }
- m_ItemArray.erase(m_ItemArray.begin() + nIndex);
- return true;
+ return GetWidget() && ToListBox(GetWidget())->DeleteString(pItem);
}
void CFWL_ListBox::DeleteAll() {
- m_ItemArray.clear();
+ if (GetWidget())
+ ToListBox(GetWidget())->DeleteAll();
+}
+
+uint32_t CFWL_ListBox::GetItemStates(CFWL_ListItem* pItem) {
+ if (!pItem)
+ return 0;
+ return pItem->m_dwStates | pItem->m_dwCheckState;
}
int32_t CFWL_ListBox::CountSelItems() {
@@ -81,94 +84,3 @@ void CFWL_ListBox::SetSelItem(CFWL_ListItem* pItem, bool bSelect) {
if (GetWidget())
ToListBox(GetWidget())->SetSelItem(pItem, bSelect);
}
-
-void CFWL_ListBox::GetItemText(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem,
- CFX_WideString& wsText) {
- if (pItem)
- wsText = static_cast<CFWL_ListItem*>(pItem)->m_wsText;
-}
-
-uint32_t CFWL_ListBox::GetItemStates(CFWL_ListItem* pItem) {
- if (!pItem)
- return 0;
- return pItem->m_dwStates | pItem->m_dwCheckState;
-}
-
-int32_t CFWL_ListBox::CountItems(const IFWL_Widget* pWidget) const {
- return pdfium::CollectionSize<int32_t>(m_ItemArray);
-}
-
-CFWL_ListItem* CFWL_ListBox::GetItem(const IFWL_Widget* pWidget,
- int32_t nIndex) const {
- if (nIndex < 0 || nIndex >= CountItems(pWidget))
- return nullptr;
- return m_ItemArray[nIndex].get();
-}
-
-int32_t CFWL_ListBox::GetItemIndex(IFWL_Widget* pWidget, CFWL_ListItem* pItem) {
- auto it = std::find_if(
- m_ItemArray.begin(), m_ItemArray.end(),
- [pItem](const std::unique_ptr<CFWL_ListItem>& candidate) {
- return candidate.get() == static_cast<CFWL_ListItem*>(pItem);
- });
- return it != m_ItemArray.end() ? it - m_ItemArray.begin() : -1;
-}
-
-uint32_t CFWL_ListBox::GetItemStyles(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem) {
- return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_dwStates : 0;
-}
-
-void CFWL_ListBox::GetItemRect(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem,
- CFX_RectF& rtItem) {
- if (pItem)
- rtItem = static_cast<CFWL_ListItem*>(pItem)->m_rtItem;
-}
-
-void* CFWL_ListBox::GetItemData(IFWL_Widget* pWidget, CFWL_ListItem* pItem) {
- return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr;
-}
-
-void CFWL_ListBox::SetItemStyles(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem,
- uint32_t dwStyle) {
- if (pItem)
- static_cast<CFWL_ListItem*>(pItem)->m_dwStates = dwStyle;
-}
-
-void CFWL_ListBox::SetItemRect(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem,
- const CFX_RectF& rtItem) {
- if (pItem)
- static_cast<CFWL_ListItem*>(pItem)->m_rtItem = rtItem;
-}
-
-CFX_DIBitmap* CFWL_ListBox::GetItemIcon(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem) {
- return static_cast<CFWL_ListItem*>(pItem)->m_pDIB;
-}
-
-void CFWL_ListBox::GetItemCheckRect(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem,
- CFX_RectF& rtCheck) {
- rtCheck = static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox;
-}
-
-void CFWL_ListBox::SetItemCheckRect(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem,
- const CFX_RectF& rtCheck) {
- static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox = rtCheck;
-}
-
-uint32_t CFWL_ListBox::GetItemCheckState(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem) {
- return static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState;
-}
-
-void CFWL_ListBox::SetItemCheckState(IFWL_Widget* pWidget,
- CFWL_ListItem* pItem,
- uint32_t dwCheckState) {
- static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState = dwCheckState;
-}