1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FPDFSDK_PWL_CPWL_COMBO_BOX_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FPDFSDK_PWL_CPWL_COMBO_BOX_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/pwl/cpwl_wnd.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/pwl/ipwl_fillernotify.h" 15*3ac0a46fSAndroid Build Coastguard Worker 16*3ac0a46fSAndroid Build Coastguard Worker class CPWL_Edit; 17*3ac0a46fSAndroid Build Coastguard Worker class CPWL_CBButton; 18*3ac0a46fSAndroid Build Coastguard Worker class CPWL_CBListBox; 19*3ac0a46fSAndroid Build Coastguard Worker class IPWL_FillerNotify; 20*3ac0a46fSAndroid Build Coastguard Worker 21*3ac0a46fSAndroid Build Coastguard Worker class CPWL_ComboBox final : public CPWL_Wnd { 22*3ac0a46fSAndroid Build Coastguard Worker public: 23*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox( 24*3ac0a46fSAndroid Build Coastguard Worker const CreateParams& cp, 25*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<IPWL_FillerNotify::PerWindowData> pAttachedData); 26*3ac0a46fSAndroid Build Coastguard Worker ~CPWL_ComboBox() override; 27*3ac0a46fSAndroid Build Coastguard Worker GetEdit()28*3ac0a46fSAndroid Build Coastguard Worker CPWL_Edit* GetEdit() const { return m_pEdit; } 29*3ac0a46fSAndroid Build Coastguard Worker 30*3ac0a46fSAndroid Build Coastguard Worker // CPWL_Wnd: 31*3ac0a46fSAndroid Build Coastguard Worker void OnDestroy() override; 32*3ac0a46fSAndroid Build Coastguard Worker bool OnKeyDown(FWL_VKEYCODE nKeyCode, Mask<FWL_EVENTFLAG> nFlag) override; 33*3ac0a46fSAndroid Build Coastguard Worker bool OnChar(uint16_t nChar, Mask<FWL_EVENTFLAG> nFlag) override; 34*3ac0a46fSAndroid Build Coastguard Worker void NotifyLButtonDown(CPWL_Wnd* child, const CFX_PointF& pos) override; 35*3ac0a46fSAndroid Build Coastguard Worker void NotifyLButtonUp(CPWL_Wnd* child, const CFX_PointF& pos) override; 36*3ac0a46fSAndroid Build Coastguard Worker void CreateChildWnd(const CreateParams& cp) override; 37*3ac0a46fSAndroid Build Coastguard Worker bool RepositionChildWnd() override; 38*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect GetFocusRect() const override; 39*3ac0a46fSAndroid Build Coastguard Worker void SetFocus() override; 40*3ac0a46fSAndroid Build Coastguard Worker void KillFocus() override; 41*3ac0a46fSAndroid Build Coastguard Worker WideString GetText() override; 42*3ac0a46fSAndroid Build Coastguard Worker WideString GetSelectedText() override; 43*3ac0a46fSAndroid Build Coastguard Worker void ReplaceAndKeepSelection(const WideString& text) override; 44*3ac0a46fSAndroid Build Coastguard Worker void ReplaceSelection(const WideString& text) override; 45*3ac0a46fSAndroid Build Coastguard Worker bool SelectAllText() override; 46*3ac0a46fSAndroid Build Coastguard Worker bool CanUndo() override; 47*3ac0a46fSAndroid Build Coastguard Worker bool CanRedo() override; 48*3ac0a46fSAndroid Build Coastguard Worker bool Undo() override; 49*3ac0a46fSAndroid Build Coastguard Worker bool Redo() override; 50*3ac0a46fSAndroid Build Coastguard Worker 51*3ac0a46fSAndroid Build Coastguard Worker void SetText(const WideString& text); 52*3ac0a46fSAndroid Build Coastguard Worker void AddString(const WideString& str); 53*3ac0a46fSAndroid Build Coastguard Worker int32_t GetSelect() const; 54*3ac0a46fSAndroid Build Coastguard Worker void SetSelect(int32_t nItemIndex); 55*3ac0a46fSAndroid Build Coastguard Worker 56*3ac0a46fSAndroid Build Coastguard Worker void SetEditSelection(int32_t nStartChar, int32_t nEndChar); 57*3ac0a46fSAndroid Build Coastguard Worker void ClearSelection(); 58*3ac0a46fSAndroid Build Coastguard Worker void SelectAll(); 59*3ac0a46fSAndroid Build Coastguard Worker bool IsPopup() const; 60*3ac0a46fSAndroid Build Coastguard Worker void SetSelectText(); 61*3ac0a46fSAndroid Build Coastguard Worker 62*3ac0a46fSAndroid Build Coastguard Worker private: 63*3ac0a46fSAndroid Build Coastguard Worker void CreateEdit(const CreateParams& cp); 64*3ac0a46fSAndroid Build Coastguard Worker void CreateButton(const CreateParams& cp); 65*3ac0a46fSAndroid Build Coastguard Worker void CreateListBox(const CreateParams& cp); 66*3ac0a46fSAndroid Build Coastguard Worker 67*3ac0a46fSAndroid Build Coastguard Worker // Returns |true| iff this instance is still allocated. 68*3ac0a46fSAndroid Build Coastguard Worker [[nodiscard]] bool SetPopup(bool bPopup); 69*3ac0a46fSAndroid Build Coastguard Worker 70*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CPWL_Edit> m_pEdit; 71*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CPWL_CBButton> m_pButton; 72*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CPWL_CBListBox> m_pList; 73*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect m_rcOldWindow; 74*3ac0a46fSAndroid Build Coastguard Worker bool m_bPopup = false; 75*3ac0a46fSAndroid Build Coastguard Worker bool m_bBottom = true; 76*3ac0a46fSAndroid Build Coastguard Worker int32_t m_nSelectItem = -1; 77*3ac0a46fSAndroid Build Coastguard Worker }; 78*3ac0a46fSAndroid Build Coastguard Worker 79*3ac0a46fSAndroid Build Coastguard Worker #endif // FPDFSDK_PWL_CPWL_COMBO_BOX_H_ 80