14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file. 44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#ifndef FPDFSDK_PWL_CPWL_LIST_BOX_H_ 8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define FPDFSDK_PWL_CPWL_LIST_BOX_H_ 94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "core/fxcrt/unowned_ptr.h" 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fpdfsdk/pwl/cpwl_wnd.h" 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannclass CPWL_ListCtrl; 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPWL_List_Notify; 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPWL_ListBox; 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass IPWL_Filler_Notify; 194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannstruct CPVT_WordPlace; 204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPWL_List_Notify { 224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann explicit CPWL_List_Notify(CPWL_ListBox* pList); 244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~CPWL_List_Notify(); 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void IOnSetScrollInfoY(float fPlateMin, 27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float fPlateMax, 28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float fContentMin, 29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float fContentMax, 30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float fSmallStep, 31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float fBigStep); 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void IOnSetScrollPosY(float fy); 334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void IOnInvalidateRect(CFX_FloatRect* pRect); 344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private: 36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann UnownedPtr<CPWL_ListBox> m_pList; 374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CPWL_ListBox : public CPWL_Wnd { 404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public: 414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPWL_ListBox(); 424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann ~CPWL_ListBox() override; 434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann // CPWL_Wnd 45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ByteString GetClassName() const override; 464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void OnCreated() override; 474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void OnDestroy() override; 484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void DrawThisAppearance(CFX_RenderDevice* pDevice, 49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const CFX_Matrix& mtUser2Device) override; 504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool OnKeyDown(uint16_t nChar, uint32_t nFlag) override; 514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool OnChar(uint16_t nChar, uint32_t nFlag) override; 5233357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool OnLButtonDown(const CFX_PointF& point, uint32_t nFlag) override; 5333357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool OnLButtonUp(const CFX_PointF& point, uint32_t nFlag) override; 5433357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann bool OnMouseMove(const CFX_PointF& point, uint32_t nFlag) override; 554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool OnMouseWheel(short zDelta, 5633357cad1fd1321a2b38d2963e2585f27ce980a2Philip P. Moltmann const CFX_PointF& point, 574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t nFlag) override; 584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void KillFocus() override; 59d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void SetScrollInfo(const PWL_SCROLL_INFO& info) override; 60d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void SetScrollPosition(float pos) override; 61d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void ScrollWindowVertically(float pos) override; 62d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool RePosChildWnd() override; 634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect GetFocusRect() const override; 64d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void SetFontSize(float fFontSize) override; 65d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float GetFontSize() const override; 664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 67d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann virtual WideString GetText() const; 684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 69d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool OnNotifySelectionChanged(bool bKeyDown, uint32_t nFlag); 704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 71d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann void AddString(const WideString& str); 724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetTopVisibleIndex(int32_t nItemIndex); 734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void ScrollToListItem(int32_t nItemIndex); 744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void ResetContent(); 754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void Reset(); 764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void Select(int32_t nItemIndex); 774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetCaret(int32_t nItemIndex); 784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetHoverSel(bool bHoverSel); 794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t GetCount() const; 814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsMultipleSel() const; 824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t GetCaretIndex() const; 834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t GetCurSel() const; 844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsItemSelected(int32_t nItemIndex) const; 854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann int32_t GetTopVisibleIndex() const; 86d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t FindNext(int32_t nIndex, wchar_t nChar) const; 874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect GetContentRect() const; 88d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann float GetFirstHeight() const; 894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect GetListRect() const; 904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetFillerNotify(IPWL_Filler_Notify* pNotify) { 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann m_pFillerNotify = pNotify; 934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void AttachFFLData(CFFL_FormFiller* pData) { m_pFormFiller = pData; } 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann protected: 98d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann std::unique_ptr<CPWL_ListCtrl> m_pList; 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CPWL_List_Notify> m_pListNotify; 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bMouseDown; 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bHoverSel; 102d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann UnownedPtr<IPWL_Filler_Notify> m_pFillerNotify; 1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private: 105d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann UnownedPtr<CFFL_FormFiller> m_pFormFiller; 1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}; 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 108d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#endif // FPDFSDK_PWL_CPWL_LIST_BOX_H_ 109