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_FORMFILLER_CFFL_COMBOBOX_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FPDFSDK_FORMFILLER_CFFL_COMBOBOX_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/widestring.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/formfiller/cffl_textobject.h" 14*3ac0a46fSAndroid Build Coastguard Worker 15*3ac0a46fSAndroid Build Coastguard Worker class CPWL_ComboBox; 16*3ac0a46fSAndroid Build Coastguard Worker 17*3ac0a46fSAndroid Build Coastguard Worker struct FFL_ComboBoxState { 18*3ac0a46fSAndroid Build Coastguard Worker int nIndex = 0; 19*3ac0a46fSAndroid Build Coastguard Worker int nStart = 0; 20*3ac0a46fSAndroid Build Coastguard Worker int nEnd = 0; 21*3ac0a46fSAndroid Build Coastguard Worker WideString sValue; 22*3ac0a46fSAndroid Build Coastguard Worker }; 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Worker class CFFL_ComboBox final : public CFFL_TextObject { 25*3ac0a46fSAndroid Build Coastguard Worker public: 26*3ac0a46fSAndroid Build Coastguard Worker CFFL_ComboBox(CFFL_InteractiveFormFiller* pFormFiller, 27*3ac0a46fSAndroid Build Coastguard Worker CPDFSDK_Widget* pWidget); 28*3ac0a46fSAndroid Build Coastguard Worker ~CFFL_ComboBox() override; 29*3ac0a46fSAndroid Build Coastguard Worker 30*3ac0a46fSAndroid Build Coastguard Worker // CFFL_TextObject: 31*3ac0a46fSAndroid Build Coastguard Worker CPWL_Wnd::CreateParams GetCreateParam() override; 32*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<CPWL_Wnd> NewPWLWindow( 33*3ac0a46fSAndroid Build Coastguard Worker const CPWL_Wnd::CreateParams& cp, 34*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<IPWL_FillerNotify::PerWindowData> pAttachedData) override; 35*3ac0a46fSAndroid Build Coastguard Worker bool OnChar(CPDFSDK_Widget* pWidget, 36*3ac0a46fSAndroid Build Coastguard Worker uint32_t nChar, 37*3ac0a46fSAndroid Build Coastguard Worker Mask<FWL_EVENTFLAG> nFlags) override; 38*3ac0a46fSAndroid Build Coastguard Worker bool IsDataChanged(const CPDFSDK_PageView* pPageView) override; 39*3ac0a46fSAndroid Build Coastguard Worker void SaveData(const CPDFSDK_PageView* pPageView) override; 40*3ac0a46fSAndroid Build Coastguard Worker void GetActionData(const CPDFSDK_PageView* pPageView, 41*3ac0a46fSAndroid Build Coastguard Worker CPDF_AAction::AActionType type, 42*3ac0a46fSAndroid Build Coastguard Worker CFFL_FieldAction& fa) override; 43*3ac0a46fSAndroid Build Coastguard Worker void SetActionData(const CPDFSDK_PageView* pPageView, 44*3ac0a46fSAndroid Build Coastguard Worker CPDF_AAction::AActionType type, 45*3ac0a46fSAndroid Build Coastguard Worker const CFFL_FieldAction& fa) override; 46*3ac0a46fSAndroid Build Coastguard Worker void SavePWLWindowState(const CPDFSDK_PageView* pPageView) override; 47*3ac0a46fSAndroid Build Coastguard Worker void RecreatePWLWindowFromSavedState( 48*3ac0a46fSAndroid Build Coastguard Worker const CPDFSDK_PageView* pPageView) override; 49*3ac0a46fSAndroid Build Coastguard Worker bool SetIndexSelected(int index, bool selected) override; 50*3ac0a46fSAndroid Build Coastguard Worker bool IsIndexSelected(int index) override; 51*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA 52*3ac0a46fSAndroid Build Coastguard Worker bool IsFieldFull(const CPDFSDK_PageView* pPageView) override; 53*3ac0a46fSAndroid Build Coastguard Worker #endif 54*3ac0a46fSAndroid Build Coastguard Worker 55*3ac0a46fSAndroid Build Coastguard Worker // CPWL_Wnd::ProviderIface: 56*3ac0a46fSAndroid Build Coastguard Worker void OnSetFocusForEdit(CPWL_Edit* pEdit) override; 57*3ac0a46fSAndroid Build Coastguard Worker 58*3ac0a46fSAndroid Build Coastguard Worker private: 59*3ac0a46fSAndroid Build Coastguard Worker WideString GetSelectExportText(); 60*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* GetPWLComboBox(const CPDFSDK_PageView* pPageView) const; 61*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* CreateOrUpdatePWLComboBox(const CPDFSDK_PageView* pPageView); 62*3ac0a46fSAndroid Build Coastguard Worker 63*3ac0a46fSAndroid Build Coastguard Worker FFL_ComboBoxState m_State; 64*3ac0a46fSAndroid Build Coastguard Worker }; 65*3ac0a46fSAndroid Build Coastguard Worker 66*3ac0a46fSAndroid Build Coastguard Worker #endif // FPDFSDK_FORMFILLER_CFFL_COMBOBOX_H_ 67