| OLD | NEW |
| 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 #include "xfa/fwl/core/cfwl_listbox.h" | 7 #include "xfa/fwl/core/cfwl_listbox.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 | 25 |
| 26 void CFWL_ListBox::Initialize() { | 26 void CFWL_ListBox::Initialize() { |
| 27 ASSERT(!m_pIface); | 27 ASSERT(!m_pIface); |
| 28 | 28 |
| 29 m_pIface = pdfium::MakeUnique<IFWL_ListBox>( | 29 m_pIface = pdfium::MakeUnique<IFWL_ListBox>( |
| 30 m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(this), nullptr); | 30 m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(this), nullptr); |
| 31 | 31 |
| 32 CFWL_Widget::Initialize(); | 32 CFWL_Widget::Initialize(); |
| 33 } | 33 } |
| 34 | 34 |
| 35 FWL_Error CFWL_ListBox::AddDIBitmap(CFX_DIBitmap* pDIB, IFWL_ListItem* pItem) { | 35 FWL_Error CFWL_ListBox::AddDIBitmap(CFX_DIBitmap* pDIB, CFWL_ListItem* pItem) { |
| 36 static_cast<CFWL_ListItem*>(pItem)->m_pDIB = pDIB; | 36 static_cast<CFWL_ListItem*>(pItem)->m_pDIB = pDIB; |
| 37 return FWL_Error::Succeeded; | 37 return FWL_Error::Succeeded; |
| 38 } | 38 } |
| 39 | 39 |
| 40 IFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd, | 40 CFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd, |
| 41 bool bSelect) { | 41 bool bSelect) { |
| 42 std::unique_ptr<CFWL_ListItem> pItem(new CFWL_ListItem); | 42 std::unique_ptr<CFWL_ListItem> pItem(new CFWL_ListItem); |
| 43 pItem->m_dwStates = 0; | 43 pItem->m_dwStates = 0; |
| 44 pItem->m_wsText = wsAdd; | 44 pItem->m_wsText = wsAdd; |
| 45 pItem->m_dwStates = bSelect ? FWL_ITEMSTATE_LTB_Selected : 0; | 45 pItem->m_dwStates = bSelect ? FWL_ITEMSTATE_LTB_Selected : 0; |
| 46 m_ItemArray.push_back(std::move(pItem)); | 46 m_ItemArray.push_back(std::move(pItem)); |
| 47 return m_ItemArray.back().get(); | 47 return m_ItemArray.back().get(); |
| 48 } | 48 } |
| 49 | 49 |
| 50 bool CFWL_ListBox::DeleteString(IFWL_ListItem* pItem) { | 50 bool CFWL_ListBox::DeleteString(CFWL_ListItem* pItem) { |
| 51 int32_t nIndex = GetItemIndex(GetWidget(), pItem); | 51 int32_t nIndex = GetItemIndex(GetWidget(), pItem); |
| 52 if (nIndex < 0 || static_cast<size_t>(nIndex) >= m_ItemArray.size()) { | 52 if (nIndex < 0 || static_cast<size_t>(nIndex) >= m_ItemArray.size()) { |
| 53 return false; | 53 return false; |
| 54 } | 54 } |
| 55 int32_t iCount = CountItems(m_pIface.get()); | 55 int32_t iCount = CountItems(m_pIface.get()); |
| 56 int32_t iSel = nIndex + 1; | 56 int32_t iSel = nIndex + 1; |
| 57 if (iSel >= iCount) { | 57 if (iSel >= iCount) { |
| 58 iSel = nIndex - 1; | 58 iSel = nIndex - 1; |
| 59 if (iSel < 0) { | 59 if (iSel < 0) { |
| 60 iSel = -1; | 60 iSel = -1; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 72 void CFWL_ListBox::DeleteAll() { | 72 void CFWL_ListBox::DeleteAll() { |
| 73 m_ItemArray.clear(); | 73 m_ItemArray.clear(); |
| 74 } | 74 } |
| 75 | 75 |
| 76 int32_t CFWL_ListBox::CountSelItems() { | 76 int32_t CFWL_ListBox::CountSelItems() { |
| 77 if (!GetWidget()) | 77 if (!GetWidget()) |
| 78 return 0; | 78 return 0; |
| 79 return ToListBox(GetWidget())->CountSelItems(); | 79 return ToListBox(GetWidget())->CountSelItems(); |
| 80 } | 80 } |
| 81 | 81 |
| 82 IFWL_ListItem* CFWL_ListBox::GetSelItem(int32_t nIndexSel) { | 82 CFWL_ListItem* CFWL_ListBox::GetSelItem(int32_t nIndexSel) { |
| 83 if (!GetWidget()) | 83 if (!GetWidget()) |
| 84 return nullptr; | 84 return nullptr; |
| 85 return ToListBox(GetWidget())->GetSelItem(nIndexSel); | 85 return ToListBox(GetWidget())->GetSelItem(nIndexSel); |
| 86 } | 86 } |
| 87 | 87 |
| 88 int32_t CFWL_ListBox::GetSelIndex(int32_t nIndex) { | 88 int32_t CFWL_ListBox::GetSelIndex(int32_t nIndex) { |
| 89 if (!GetWidget()) | 89 if (!GetWidget()) |
| 90 return 0; | 90 return 0; |
| 91 return ToListBox(GetWidget())->GetSelIndex(nIndex); | 91 return ToListBox(GetWidget())->GetSelIndex(nIndex); |
| 92 } | 92 } |
| 93 | 93 |
| 94 FWL_Error CFWL_ListBox::SetSelItem(IFWL_ListItem* pItem, bool bSelect) { | 94 FWL_Error CFWL_ListBox::SetSelItem(CFWL_ListItem* pItem, bool bSelect) { |
| 95 if (!GetWidget()) | 95 if (!GetWidget()) |
| 96 return FWL_Error::Indefinite; | 96 return FWL_Error::Indefinite; |
| 97 return ToListBox(GetWidget())->SetSelItem(pItem, bSelect); | 97 return ToListBox(GetWidget())->SetSelItem(pItem, bSelect); |
| 98 } | 98 } |
| 99 | 99 |
| 100 FWL_Error CFWL_ListBox::GetItemText(IFWL_ListItem* pItem, | 100 FWL_Error CFWL_ListBox::GetItemText(CFWL_ListItem* pItem, |
| 101 CFX_WideString& wsText) { | 101 CFX_WideString& wsText) { |
| 102 if (!GetWidget()) | 102 if (!GetWidget()) |
| 103 return FWL_Error::Indefinite; | 103 return FWL_Error::Indefinite; |
| 104 return ToListBox(GetWidget())->GetItemText(pItem, wsText); | 104 return ToListBox(GetWidget())->GetItemText(pItem, wsText); |
| 105 } | 105 } |
| 106 | 106 |
| 107 FWL_Error CFWL_ListBox::GetScrollPos(FX_FLOAT& fPos, bool bVert) { | 107 FWL_Error CFWL_ListBox::GetScrollPos(FX_FLOAT& fPos, bool bVert) { |
| 108 if (!GetWidget()) | 108 if (!GetWidget()) |
| 109 return FWL_Error::Indefinite; | 109 return FWL_Error::Indefinite; |
| 110 return ToListBox(GetWidget())->GetScrollPos(fPos, bVert); | 110 return ToListBox(GetWidget())->GetScrollPos(fPos, bVert); |
| 111 } | 111 } |
| 112 | 112 |
| 113 FWL_Error CFWL_ListBox::SetItemHeight(FX_FLOAT fItemHeight) { | 113 FWL_Error CFWL_ListBox::SetItemHeight(FX_FLOAT fItemHeight) { |
| 114 m_fItemHeight = fItemHeight; | 114 m_fItemHeight = fItemHeight; |
| 115 return FWL_Error::Succeeded; | 115 return FWL_Error::Succeeded; |
| 116 } | 116 } |
| 117 | 117 |
| 118 IFWL_ListItem* CFWL_ListBox::GetFocusItem() { | 118 CFWL_ListItem* CFWL_ListBox::GetFocusItem() { |
| 119 for (const auto& pItem : m_ItemArray) { | 119 for (const auto& pItem : m_ItemArray) { |
| 120 if (pItem->m_dwStates & FWL_ITEMSTATE_LTB_Focused) | 120 if (pItem->m_dwStates & FWL_ITEMSTATE_LTB_Focused) |
| 121 return pItem.get(); | 121 return pItem.get(); |
| 122 } | 122 } |
| 123 return nullptr; | 123 return nullptr; |
| 124 } | 124 } |
| 125 | 125 |
| 126 FWL_Error CFWL_ListBox::SetFocusItem(IFWL_ListItem* pItem) { | 126 FWL_Error CFWL_ListBox::SetFocusItem(CFWL_ListItem* pItem) { |
| 127 int32_t nIndex = GetItemIndex(GetWidget(), pItem); | 127 int32_t nIndex = GetItemIndex(GetWidget(), pItem); |
| 128 m_ItemArray[nIndex]->m_dwStates |= FWL_ITEMSTATE_LTB_Focused; | 128 m_ItemArray[nIndex]->m_dwStates |= FWL_ITEMSTATE_LTB_Focused; |
| 129 return FWL_Error::Succeeded; | 129 return FWL_Error::Succeeded; |
| 130 } | 130 } |
| 131 | 131 |
| 132 int32_t CFWL_ListBox::CountItems() { | 132 int32_t CFWL_ListBox::CountItems() { |
| 133 return pdfium::CollectionSize<int32_t>(m_ItemArray); | 133 return pdfium::CollectionSize<int32_t>(m_ItemArray); |
| 134 } | 134 } |
| 135 | 135 |
| 136 IFWL_ListItem* CFWL_ListBox::GetItem(int32_t nIndex) { | 136 CFWL_ListItem* CFWL_ListBox::GetItem(int32_t nIndex) { |
| 137 if (nIndex < 0 || nIndex >= CountItems()) | 137 if (nIndex < 0 || nIndex >= CountItems()) |
| 138 return nullptr; | 138 return nullptr; |
| 139 | 139 |
| 140 return m_ItemArray[nIndex].get(); | 140 return m_ItemArray[nIndex].get(); |
| 141 } | 141 } |
| 142 | 142 |
| 143 FWL_Error CFWL_ListBox::SetItemString(IFWL_ListItem* pItem, | 143 FWL_Error CFWL_ListBox::SetItemString(CFWL_ListItem* pItem, |
| 144 const CFX_WideStringC& wsText) { | 144 const CFX_WideStringC& wsText) { |
| 145 if (!pItem) | 145 if (!pItem) |
| 146 return FWL_Error::Indefinite; | 146 return FWL_Error::Indefinite; |
| 147 static_cast<CFWL_ListItem*>(pItem)->m_wsText = wsText; | 147 static_cast<CFWL_ListItem*>(pItem)->m_wsText = wsText; |
| 148 return FWL_Error::Succeeded; | 148 return FWL_Error::Succeeded; |
| 149 } | 149 } |
| 150 | 150 |
| 151 FWL_Error CFWL_ListBox::GetItemString(IFWL_ListItem* pItem, | 151 FWL_Error CFWL_ListBox::GetItemString(CFWL_ListItem* pItem, |
| 152 CFX_WideString& wsText) { | 152 CFX_WideString& wsText) { |
| 153 if (!pItem) | 153 if (!pItem) |
| 154 return FWL_Error::Indefinite; | 154 return FWL_Error::Indefinite; |
| 155 wsText = static_cast<CFWL_ListItem*>(pItem)->m_wsText; | 155 wsText = static_cast<CFWL_ListItem*>(pItem)->m_wsText; |
| 156 return FWL_Error::Succeeded; | 156 return FWL_Error::Succeeded; |
| 157 } | 157 } |
| 158 | 158 |
| 159 FWL_Error CFWL_ListBox::SetItemData(IFWL_ListItem* pItem, void* pData) { | 159 FWL_Error CFWL_ListBox::SetItemData(CFWL_ListItem* pItem, void* pData) { |
| 160 if (!pItem) | 160 if (!pItem) |
| 161 return FWL_Error::Indefinite; | 161 return FWL_Error::Indefinite; |
| 162 static_cast<CFWL_ListItem*>(pItem)->m_pData = pData; | 162 static_cast<CFWL_ListItem*>(pItem)->m_pData = pData; |
| 163 return FWL_Error::Succeeded; | 163 return FWL_Error::Succeeded; |
| 164 } | 164 } |
| 165 | 165 |
| 166 void* CFWL_ListBox::GetItemData(IFWL_ListItem* pItem) { | 166 void* CFWL_ListBox::GetItemData(CFWL_ListItem* pItem) { |
| 167 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr; | 167 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr; |
| 168 } | 168 } |
| 169 | 169 |
| 170 IFWL_ListItem* CFWL_ListBox::GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy) { | 170 CFWL_ListItem* CFWL_ListBox::GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy) { |
| 171 CFX_RectF rtClient; | 171 CFX_RectF rtClient; |
| 172 GetWidget()->GetClientRect(rtClient); | 172 GetWidget()->GetClientRect(rtClient); |
| 173 fx -= rtClient.left; | 173 fx -= rtClient.left; |
| 174 fy -= rtClient.top; | 174 fy -= rtClient.top; |
| 175 FX_FLOAT fPosX = 0; | 175 FX_FLOAT fPosX = 0; |
| 176 FX_FLOAT fPosY = 0; | 176 FX_FLOAT fPosY = 0; |
| 177 ToListBox(GetWidget())->GetScrollPos(fx); | 177 ToListBox(GetWidget())->GetScrollPos(fx); |
| 178 ToListBox(GetWidget())->GetScrollPos(fy, false); | 178 ToListBox(GetWidget())->GetScrollPos(fy, false); |
| 179 int32_t nCount = CountItems(nullptr); | 179 int32_t nCount = CountItems(nullptr); |
| 180 for (int32_t i = 0; i < nCount; i++) { | 180 for (int32_t i = 0; i < nCount; i++) { |
| 181 IFWL_ListItem* pItem = GetItem(nullptr, i); | 181 CFWL_ListItem* pItem = GetItem(nullptr, i); |
| 182 if (!pItem) { | 182 if (!pItem) { |
| 183 continue; | 183 continue; |
| 184 } | 184 } |
| 185 CFX_RectF rtItem; | 185 CFX_RectF rtItem; |
| 186 GetItemRect(nullptr, pItem, rtItem); | 186 GetItemRect(nullptr, pItem, rtItem); |
| 187 rtItem.Offset(-fPosX, -fPosY); | 187 rtItem.Offset(-fPosX, -fPosY); |
| 188 if (rtItem.Contains(fx, fy)) { | 188 if (rtItem.Contains(fx, fy)) { |
| 189 return pItem; | 189 return pItem; |
| 190 } | 190 } |
| 191 } | 191 } |
| 192 return nullptr; | 192 return nullptr; |
| 193 } | 193 } |
| 194 | 194 |
| 195 uint32_t CFWL_ListBox::GetItemStates(IFWL_ListItem* pItem) { | 195 uint32_t CFWL_ListBox::GetItemStates(CFWL_ListItem* pItem) { |
| 196 if (!pItem) | 196 if (!pItem) |
| 197 return 0; | 197 return 0; |
| 198 CFWL_ListItem* pListItem = static_cast<CFWL_ListItem*>(pItem); | 198 CFWL_ListItem* pListItem = static_cast<CFWL_ListItem*>(pItem); |
| 199 return pListItem->m_dwStates | pListItem->m_dwCheckState; | 199 return pListItem->m_dwStates | pListItem->m_dwCheckState; |
| 200 } | 200 } |
| 201 | 201 |
| 202 FWL_Error CFWL_ListBox::GetCaption(IFWL_Widget* pWidget, | 202 FWL_Error CFWL_ListBox::GetCaption(IFWL_Widget* pWidget, |
| 203 CFX_WideString& wsCaption) { | 203 CFX_WideString& wsCaption) { |
| 204 wsCaption = m_wsData; | 204 wsCaption = m_wsData; |
| 205 return FWL_Error::Succeeded; | 205 return FWL_Error::Succeeded; |
| 206 } | 206 } |
| 207 | 207 |
| 208 int32_t CFWL_ListBox::CountItems(const IFWL_Widget* pWidget) { | 208 int32_t CFWL_ListBox::CountItems(const IFWL_Widget* pWidget) { |
| 209 return pdfium::CollectionSize<int32_t>(m_ItemArray); | 209 return pdfium::CollectionSize<int32_t>(m_ItemArray); |
| 210 } | 210 } |
| 211 | 211 |
| 212 IFWL_ListItem* CFWL_ListBox::GetItem(const IFWL_Widget* pWidget, | 212 CFWL_ListItem* CFWL_ListBox::GetItem(const IFWL_Widget* pWidget, |
| 213 int32_t nIndex) { | 213 int32_t nIndex) { |
| 214 if (nIndex < 0 || nIndex >= CountItems(pWidget)) | 214 if (nIndex < 0 || nIndex >= CountItems(pWidget)) |
| 215 return nullptr; | 215 return nullptr; |
| 216 | 216 |
| 217 return m_ItemArray[nIndex].get(); | 217 return m_ItemArray[nIndex].get(); |
| 218 } | 218 } |
| 219 | 219 |
| 220 int32_t CFWL_ListBox::GetItemIndex(IFWL_Widget* pWidget, IFWL_ListItem* pItem) { | 220 int32_t CFWL_ListBox::GetItemIndex(IFWL_Widget* pWidget, CFWL_ListItem* pItem) { |
| 221 auto it = std::find_if( | 221 auto it = std::find_if( |
| 222 m_ItemArray.begin(), m_ItemArray.end(), | 222 m_ItemArray.begin(), m_ItemArray.end(), |
| 223 [pItem](const std::unique_ptr<CFWL_ListItem>& candidate) { | 223 [pItem](const std::unique_ptr<CFWL_ListItem>& candidate) { |
| 224 return candidate.get() == static_cast<CFWL_ListItem*>(pItem); | 224 return candidate.get() == static_cast<CFWL_ListItem*>(pItem); |
| 225 }); | 225 }); |
| 226 return it != m_ItemArray.end() ? it - m_ItemArray.begin() : -1; | 226 return it != m_ItemArray.end() ? it - m_ItemArray.begin() : -1; |
| 227 } | 227 } |
| 228 | 228 |
| 229 bool CFWL_ListBox::SetItemIndex(IFWL_Widget* pWidget, | 229 bool CFWL_ListBox::SetItemIndex(IFWL_Widget* pWidget, |
| 230 IFWL_ListItem* pItem, | 230 CFWL_ListItem* pItem, |
| 231 int32_t nIndex) { | 231 int32_t nIndex) { |
| 232 if (nIndex < 0 || nIndex >= CountItems(pWidget)) | 232 if (nIndex < 0 || nIndex >= CountItems(pWidget)) |
| 233 return false; | 233 return false; |
| 234 m_ItemArray[nIndex].reset(static_cast<CFWL_ListItem*>(pItem)); | 234 m_ItemArray[nIndex].reset(static_cast<CFWL_ListItem*>(pItem)); |
| 235 return true; | 235 return true; |
| 236 } | 236 } |
| 237 | 237 |
| 238 uint32_t CFWL_ListBox::GetItemStyles(IFWL_Widget* pWidget, | 238 uint32_t CFWL_ListBox::GetItemStyles(IFWL_Widget* pWidget, |
| 239 IFWL_ListItem* pItem) { | 239 CFWL_ListItem* pItem) { |
| 240 if (!pItem) | 240 if (!pItem) |
| 241 return 0; | 241 return 0; |
| 242 return static_cast<CFWL_ListItem*>(pItem)->m_dwStates; | 242 return static_cast<CFWL_ListItem*>(pItem)->m_dwStates; |
| 243 } | 243 } |
| 244 | 244 |
| 245 FWL_Error CFWL_ListBox::GetItemText(IFWL_Widget* pWidget, | 245 FWL_Error CFWL_ListBox::GetItemText(IFWL_Widget* pWidget, |
| 246 IFWL_ListItem* pItem, | 246 CFWL_ListItem* pItem, |
| 247 CFX_WideString& wsText) { | 247 CFX_WideString& wsText) { |
| 248 if (!pItem) | 248 if (!pItem) |
| 249 return FWL_Error::Indefinite; | 249 return FWL_Error::Indefinite; |
| 250 wsText = static_cast<CFWL_ListItem*>(pItem)->m_wsText; | 250 wsText = static_cast<CFWL_ListItem*>(pItem)->m_wsText; |
| 251 return FWL_Error::Succeeded; | 251 return FWL_Error::Succeeded; |
| 252 } | 252 } |
| 253 | 253 |
| 254 FWL_Error CFWL_ListBox::GetItemRect(IFWL_Widget* pWidget, | 254 FWL_Error CFWL_ListBox::GetItemRect(IFWL_Widget* pWidget, |
| 255 IFWL_ListItem* pItem, | 255 CFWL_ListItem* pItem, |
| 256 CFX_RectF& rtItem) { | 256 CFX_RectF& rtItem) { |
| 257 if (!pItem) | 257 if (!pItem) |
| 258 return FWL_Error::Indefinite; | 258 return FWL_Error::Indefinite; |
| 259 rtItem = static_cast<CFWL_ListItem*>(pItem)->m_rtItem; | 259 rtItem = static_cast<CFWL_ListItem*>(pItem)->m_rtItem; |
| 260 return FWL_Error::Succeeded; | 260 return FWL_Error::Succeeded; |
| 261 } | 261 } |
| 262 | 262 |
| 263 void* CFWL_ListBox::GetItemData(IFWL_Widget* pWidget, IFWL_ListItem* pItem) { | 263 void* CFWL_ListBox::GetItemData(IFWL_Widget* pWidget, CFWL_ListItem* pItem) { |
| 264 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr; | 264 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr; |
| 265 } | 265 } |
| 266 | 266 |
| 267 FWL_Error CFWL_ListBox::SetItemStyles(IFWL_Widget* pWidget, | 267 FWL_Error CFWL_ListBox::SetItemStyles(IFWL_Widget* pWidget, |
| 268 IFWL_ListItem* pItem, | 268 CFWL_ListItem* pItem, |
| 269 uint32_t dwStyle) { | 269 uint32_t dwStyle) { |
| 270 if (!pItem) | 270 if (!pItem) |
| 271 return FWL_Error::Indefinite; | 271 return FWL_Error::Indefinite; |
| 272 static_cast<CFWL_ListItem*>(pItem)->m_dwStates = dwStyle; | 272 static_cast<CFWL_ListItem*>(pItem)->m_dwStates = dwStyle; |
| 273 return FWL_Error::Succeeded; | 273 return FWL_Error::Succeeded; |
| 274 } | 274 } |
| 275 | 275 |
| 276 FWL_Error CFWL_ListBox::SetItemText(IFWL_Widget* pWidget, | 276 FWL_Error CFWL_ListBox::SetItemText(IFWL_Widget* pWidget, |
| 277 IFWL_ListItem* pItem, | 277 CFWL_ListItem* pItem, |
| 278 const FX_WCHAR* pszText) { | 278 const FX_WCHAR* pszText) { |
| 279 if (!pItem) | 279 if (!pItem) |
| 280 return FWL_Error::Indefinite; | 280 return FWL_Error::Indefinite; |
| 281 static_cast<CFWL_ListItem*>(pItem)->m_wsText = pszText; | 281 static_cast<CFWL_ListItem*>(pItem)->m_wsText = pszText; |
| 282 return FWL_Error::Succeeded; | 282 return FWL_Error::Succeeded; |
| 283 } | 283 } |
| 284 | 284 |
| 285 FWL_Error CFWL_ListBox::SetItemRect(IFWL_Widget* pWidget, | 285 FWL_Error CFWL_ListBox::SetItemRect(IFWL_Widget* pWidget, |
| 286 IFWL_ListItem* pItem, | 286 CFWL_ListItem* pItem, |
| 287 const CFX_RectF& rtItem) { | 287 const CFX_RectF& rtItem) { |
| 288 if (!pItem) | 288 if (!pItem) |
| 289 return FWL_Error::Indefinite; | 289 return FWL_Error::Indefinite; |
| 290 static_cast<CFWL_ListItem*>(pItem)->m_rtItem = rtItem; | 290 static_cast<CFWL_ListItem*>(pItem)->m_rtItem = rtItem; |
| 291 return FWL_Error::Succeeded; | 291 return FWL_Error::Succeeded; |
| 292 } | 292 } |
| 293 | 293 |
| 294 FX_FLOAT CFWL_ListBox::GetItemHeight(IFWL_Widget* pWidget) { | 294 FX_FLOAT CFWL_ListBox::GetItemHeight(IFWL_Widget* pWidget) { |
| 295 return m_fItemHeight; | 295 return m_fItemHeight; |
| 296 } | 296 } |
| 297 | 297 |
| 298 CFX_DIBitmap* CFWL_ListBox::GetItemIcon(IFWL_Widget* pWidget, | 298 CFX_DIBitmap* CFWL_ListBox::GetItemIcon(IFWL_Widget* pWidget, |
| 299 IFWL_ListItem* pItem) { | 299 CFWL_ListItem* pItem) { |
| 300 return static_cast<CFWL_ListItem*>(pItem)->m_pDIB; | 300 return static_cast<CFWL_ListItem*>(pItem)->m_pDIB; |
| 301 } | 301 } |
| 302 | 302 |
| 303 FWL_Error CFWL_ListBox::GetItemCheckRect(IFWL_Widget* pWidget, | 303 FWL_Error CFWL_ListBox::GetItemCheckRect(IFWL_Widget* pWidget, |
| 304 IFWL_ListItem* pItem, | 304 CFWL_ListItem* pItem, |
| 305 CFX_RectF& rtCheck) { | 305 CFX_RectF& rtCheck) { |
| 306 rtCheck = static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox; | 306 rtCheck = static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox; |
| 307 return FWL_Error::Succeeded; | 307 return FWL_Error::Succeeded; |
| 308 } | 308 } |
| 309 | 309 |
| 310 FWL_Error CFWL_ListBox::SetItemCheckRect(IFWL_Widget* pWidget, | 310 FWL_Error CFWL_ListBox::SetItemCheckRect(IFWL_Widget* pWidget, |
| 311 IFWL_ListItem* pItem, | 311 CFWL_ListItem* pItem, |
| 312 const CFX_RectF& rtCheck) { | 312 const CFX_RectF& rtCheck) { |
| 313 static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox = rtCheck; | 313 static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox = rtCheck; |
| 314 return FWL_Error::Succeeded; | 314 return FWL_Error::Succeeded; |
| 315 } | 315 } |
| 316 | 316 |
| 317 uint32_t CFWL_ListBox::GetItemCheckState(IFWL_Widget* pWidget, | 317 uint32_t CFWL_ListBox::GetItemCheckState(IFWL_Widget* pWidget, |
| 318 IFWL_ListItem* pItem) { | 318 CFWL_ListItem* pItem) { |
| 319 return static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState; | 319 return static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState; |
| 320 } | 320 } |
| 321 | 321 |
| 322 FWL_Error CFWL_ListBox::SetItemCheckState(IFWL_Widget* pWidget, | 322 FWL_Error CFWL_ListBox::SetItemCheckState(IFWL_Widget* pWidget, |
| 323 IFWL_ListItem* pItem, | 323 CFWL_ListItem* pItem, |
| 324 uint32_t dwCheckState) { | 324 uint32_t dwCheckState) { |
| 325 static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState = dwCheckState; | 325 static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState = dwCheckState; |
| 326 return FWL_Error::Succeeded; | 326 return FWL_Error::Succeeded; |
| 327 } | 327 } |
| 328 | |
| 329 CFWL_ListItem::CFWL_ListItem() { | |
| 330 m_rtItem.Reset(); | |
| 331 m_dwStates = 0; | |
| 332 m_wsText = L""; | |
| 333 m_pDIB = nullptr; | |
| 334 m_pData = nullptr; | |
| 335 m_dwCheckState = 0; | |
| 336 m_rtCheckBox.Reset(); | |
| 337 } | |
| 338 | |
| 339 CFWL_ListItem::~CFWL_ListItem() {} | |
| OLD | NEW |