| 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_combobox.h" | 7 #include "xfa/fwl/core/cfwl_combobox.h" |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "third_party/base/ptr_util.h" | 11 #include "third_party/base/ptr_util.h" |
| 12 #include "xfa/fwl/core/fwl_error.h" | 12 #include "xfa/fwl/core/fwl_error.h" |
| 13 #include "xfa/fwl/core/ifwl_widget.h" | 13 #include "xfa/fwl/core/ifwl_widget.h" |
| 14 | 14 |
| 15 namespace { | 15 namespace { |
| 16 | 16 |
| 17 IFWL_ComboBox* ToComboBox(IFWL_Widget* widget) { | 17 IFWL_ComboBox* ToComboBox(IFWL_Widget* widget) { |
| 18 return static_cast<IFWL_ComboBox*>(widget); | 18 return static_cast<IFWL_ComboBox*>(widget); |
| 19 } | 19 } |
| 20 | 20 |
| 21 const IFWL_ComboBox* ToComboBox(const IFWL_Widget* widget) { | 21 const IFWL_ComboBox* ToComboBox(const IFWL_Widget* widget) { |
| 22 return static_cast<const IFWL_ComboBox*>(widget); | 22 return static_cast<const IFWL_ComboBox*>(widget); |
| 23 } | 23 } |
| 24 | 24 |
| 25 } // namespace | 25 } // namespace |
| 26 | 26 |
| 27 CFWL_ComboBox::CFWL_ComboBox(const IFWL_App* app) | 27 CFWL_ComboBox::CFWL_ComboBox(const IFWL_App* app) |
| 28 : CFWL_Widget(app), m_fMaxListHeight(0), m_fItemHeight(0) {} | 28 : CFWL_Widget(app), m_fMaxListHeight(0) {} |
| 29 | 29 |
| 30 CFWL_ComboBox::~CFWL_ComboBox() {} | 30 CFWL_ComboBox::~CFWL_ComboBox() {} |
| 31 | 31 |
| 32 void CFWL_ComboBox::Initialize() { | 32 void CFWL_ComboBox::Initialize() { |
| 33 ASSERT(!m_pIface); | 33 ASSERT(!m_pIface); |
| 34 | 34 |
| 35 m_pIface = pdfium::MakeUnique<IFWL_ComboBox>( | 35 m_pIface = pdfium::MakeUnique<IFWL_ComboBox>( |
| 36 m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(this)); | 36 m_pApp, pdfium::MakeUnique<CFWL_WidgetProperties>(this)); |
| 37 | 37 |
| 38 CFWL_Widget::Initialize(); | 38 CFWL_Widget::Initialize(); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 int32_t CFWL_ComboBox::GetItemIndex(IFWL_Widget* pWidget, | 174 int32_t CFWL_ComboBox::GetItemIndex(IFWL_Widget* pWidget, |
| 175 CFWL_ListItem* pItem) { | 175 CFWL_ListItem* pItem) { |
| 176 auto it = std::find_if( | 176 auto it = std::find_if( |
| 177 m_ItemArray.begin(), m_ItemArray.end(), | 177 m_ItemArray.begin(), m_ItemArray.end(), |
| 178 [pItem](const std::unique_ptr<CFWL_ListItem>& candidate) { | 178 [pItem](const std::unique_ptr<CFWL_ListItem>& candidate) { |
| 179 return candidate.get() == static_cast<CFWL_ListItem*>(pItem); | 179 return candidate.get() == static_cast<CFWL_ListItem*>(pItem); |
| 180 }); | 180 }); |
| 181 return it != m_ItemArray.end() ? it - m_ItemArray.begin() : -1; | 181 return it != m_ItemArray.end() ? it - m_ItemArray.begin() : -1; |
| 182 } | 182 } |
| 183 | 183 |
| 184 bool CFWL_ComboBox::SetItemIndex(IFWL_Widget* pWidget, | |
| 185 CFWL_ListItem* pItem, | |
| 186 int32_t nIndex) { | |
| 187 if (nIndex < 0 || static_cast<size_t>(nIndex) >= m_ItemArray.size()) | |
| 188 return false; | |
| 189 | |
| 190 m_ItemArray[nIndex].reset(static_cast<CFWL_ListItem*>(pItem)); | |
| 191 return true; | |
| 192 } | |
| 193 | |
| 194 uint32_t CFWL_ComboBox::GetItemStyles(IFWL_Widget* pWidget, | 184 uint32_t CFWL_ComboBox::GetItemStyles(IFWL_Widget* pWidget, |
| 195 CFWL_ListItem* pItem) { | 185 CFWL_ListItem* pItem) { |
| 196 if (!pItem) | 186 if (!pItem) |
| 197 return 0; | 187 return 0; |
| 198 return static_cast<CFWL_ListItem*>(pItem)->m_dwStyles; | 188 return static_cast<CFWL_ListItem*>(pItem)->m_dwStyles; |
| 199 } | 189 } |
| 200 | 190 |
| 201 void CFWL_ComboBox::GetItemText(IFWL_Widget* pWidget, | 191 void CFWL_ComboBox::GetItemText(IFWL_Widget* pWidget, |
| 202 CFWL_ListItem* pItem, | 192 CFWL_ListItem* pItem, |
| 203 CFX_WideString& wsText) { | 193 CFX_WideString& wsText) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 219 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr; | 209 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr; |
| 220 } | 210 } |
| 221 | 211 |
| 222 void CFWL_ComboBox::SetItemStyles(IFWL_Widget* pWidget, | 212 void CFWL_ComboBox::SetItemStyles(IFWL_Widget* pWidget, |
| 223 CFWL_ListItem* pItem, | 213 CFWL_ListItem* pItem, |
| 224 uint32_t dwStyle) { | 214 uint32_t dwStyle) { |
| 225 if (pItem) | 215 if (pItem) |
| 226 static_cast<CFWL_ListItem*>(pItem)->m_dwStyles = dwStyle; | 216 static_cast<CFWL_ListItem*>(pItem)->m_dwStyles = dwStyle; |
| 227 } | 217 } |
| 228 | 218 |
| 229 void CFWL_ComboBox::SetItemText(IFWL_Widget* pWidget, | |
| 230 CFWL_ListItem* pItem, | |
| 231 const FX_WCHAR* pszText) { | |
| 232 if (pItem) | |
| 233 static_cast<CFWL_ListItem*>(pItem)->m_wsText = pszText; | |
| 234 } | |
| 235 | |
| 236 void CFWL_ComboBox::SetItemRect(IFWL_Widget* pWidget, | 219 void CFWL_ComboBox::SetItemRect(IFWL_Widget* pWidget, |
| 237 CFWL_ListItem* pItem, | 220 CFWL_ListItem* pItem, |
| 238 const CFX_RectF& rtItem) { | 221 const CFX_RectF& rtItem) { |
| 239 if (pItem) | 222 if (pItem) |
| 240 static_cast<CFWL_ListItem*>(pItem)->m_rtItem = rtItem; | 223 static_cast<CFWL_ListItem*>(pItem)->m_rtItem = rtItem; |
| 241 } | 224 } |
| 242 | 225 |
| 243 FX_FLOAT CFWL_ComboBox::GetItemHeight(IFWL_Widget* pWidget) { | |
| 244 return m_fItemHeight; | |
| 245 } | |
| 246 | |
| 247 CFX_DIBitmap* CFWL_ComboBox::GetItemIcon(IFWL_Widget* pWidget, | 226 CFX_DIBitmap* CFWL_ComboBox::GetItemIcon(IFWL_Widget* pWidget, |
| 248 CFWL_ListItem* pItem) { | 227 CFWL_ListItem* pItem) { |
| 249 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pDIB : nullptr; | 228 return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pDIB : nullptr; |
| 250 } | 229 } |
| 251 | 230 |
| 252 void CFWL_ComboBox::GetItemCheckRect(IFWL_Widget* pWidget, | 231 void CFWL_ComboBox::GetItemCheckRect(IFWL_Widget* pWidget, |
| 253 CFWL_ListItem* pItem, | 232 CFWL_ListItem* pItem, |
| 254 CFX_RectF& rtCheck) { | 233 CFX_RectF& rtCheck) { |
| 255 rtCheck = static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox; | 234 rtCheck = static_cast<CFWL_ListItem*>(pItem)->m_rtCheckBox; |
| 256 } | 235 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 268 | 247 |
| 269 void CFWL_ComboBox::SetItemCheckState(IFWL_Widget* pWidget, | 248 void CFWL_ComboBox::SetItemCheckState(IFWL_Widget* pWidget, |
| 270 CFWL_ListItem* pItem, | 249 CFWL_ListItem* pItem, |
| 271 uint32_t dwCheckState) { | 250 uint32_t dwCheckState) { |
| 272 static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState = dwCheckState; | 251 static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState = dwCheckState; |
| 273 } | 252 } |
| 274 | 253 |
| 275 FX_FLOAT CFWL_ComboBox::GetListHeight(IFWL_Widget* pWidget) { | 254 FX_FLOAT CFWL_ComboBox::GetListHeight(IFWL_Widget* pWidget) { |
| 276 return m_fMaxListHeight; | 255 return m_fMaxListHeight; |
| 277 } | 256 } |
| OLD | NEW |