From e54762baa8019d02cadd311e750f6ff0d276f67b Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Tue, 16 Apr 2019 17:17:58 +0100 Subject: weld ScTPValidationValue and ScValidationDlg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I74b1569fe378f42c1cc78ca8d9b758c6e585c979 Reviewed-on: https://gerrit.libreoffice.org/70845 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- sc/source/ui/inc/anyrefdg.hxx | 70 ++++++++-------------- sc/source/ui/inc/reffact.hxx | 1 - sc/source/ui/inc/validate.hxx | 133 +++++++++++++++++------------------------- 3 files changed, 77 insertions(+), 127 deletions(-) (limited to 'sc/source/ui/inc') diff --git a/sc/source/ui/inc/anyrefdg.hxx b/sc/source/ui/inc/anyrefdg.hxx index 3a5726123654..99c57edf5320 100644 --- a/sc/source/ui/inc/anyrefdg.hxx +++ b/sc/source/ui/inc/anyrefdg.hxx @@ -98,7 +98,7 @@ public: static void enableInput(bool _bInput); public: - static bool CanInputStart( const formula::RefEdit *pEdit ){ return !!pEdit; } + static bool CanInputStart( const formula::WeldRefEdit *pEdit ){ return !!pEdit; } bool CanInputDone( bool bForced ){ return (m_pRefEdit || m_pWeldRefEdit) && (bForced || !(m_pRefBtn || m_pWeldRefBtn)); } }; @@ -134,7 +134,7 @@ protected: public: ScRefHandler( vcl::Window &rWindow, SfxBindings* pB, bool bBindRef ); - ScRefHandler( SfxModelessDialogController &rController, SfxBindings* pB, bool bBindRef ); + ScRefHandler( SfxDialogController &rController, SfxBindings* pB, bool bBindRef ); virtual ~ScRefHandler() override; virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ) override = 0; @@ -160,7 +160,7 @@ public: public: bool EnterRefMode(); bool LeaveRefMode(); - static inline bool CanInputStart( const formula::RefEdit *pEdit ); + static inline bool CanInputStart( const formula::WeldRefEdit *pEdit ); inline bool CanInputDone( bool bForced ); }; @@ -245,74 +245,50 @@ template< class TWindow, bool bBindRef = true > class ScRefHdlrControllerImplBase: public TWindow, public ScRefHandler { private: - template - ScRefHdlrControllerImplBase( TBindings* pB, TChildWindow* pCW, - TParentWindow* pParent, const OUString& rUIXMLDescription, const OString& rID ); + ScRefHdlrControllerImplBase(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, const OUString& rUIXMLDescription, const OString& rID) + : TWindow(pB, pCW, pParent, rUIXMLDescription, rID) + , ScRefHandler(*static_cast(this), pB, bBindRef) + { + } - template - ScRefHdlrControllerImplBase(TParentWindow* pParent, const OUString& rUIXMLDescription, const OString& rID, const TArg &rArg, SfxBindings *pB); + ScRefHdlrControllerImplBase(weld::Window* pParent, const OUString& rUIXMLDescription, const OString& rID, const SfxItemSet* pArg, SfxBindings *pB) + : TWindow(pParent, rUIXMLDescription, rID, pArg) + , ScRefHandler(*static_cast(this), pB, bBindRef) + { + } - virtual ~ScRefHdlrControllerImplBase() override; + virtual ~ScRefHdlrControllerImplBase() override + { + } template friend struct ScRefHdlrControllerImpl; }; -template -ScRefHdlrControllerImplBase::~ScRefHdlrControllerImplBase(){} - -template -template -ScRefHdlrControllerImplBase::ScRefHdlrControllerImplBase(TBindings* pB, TChildWindow* pCW, - TParentWindow* pParent, const OUString& rUIXMLDescription, const OString& rID) - : TWindow(pB, pCW, pParent, rUIXMLDescription, rID) - , ScRefHandler( *static_cast(this), pB, bBindRef ) -{ -} - -template -template -ScRefHdlrControllerImplBase::ScRefHdlrControllerImplBase(TParentWindow* pParent, const OUString& rUIXMLDescription, const OString& rID, - const TArg &rArg, SfxBindings *pB) - : TWindow(pParent, rUIXMLDescription, rID, rArg) - , ScRefHandler( *static_cast(this), pB, bBindRef ) -{ -} - template -struct ScRefHdlrControllerImpl: ScRefHdlrControllerImplBase< TBase, bBindRef > +struct ScRefHdlrControllerImpl : ScRefHdlrControllerImplBase { enum { UNKNOWN_SLOTID = 0U, SLOTID = UNKNOWN_SLOTID }; - template - ScRefHdlrControllerImpl( const T1 & rt1, const T2 & rt2, const T3& rt3, const T4& rt4 ) - : ScRefHdlrControllerImplBase(rt1, rt2, rt3, rt4) - { - SC_MOD()->RegisterRefController( static_cast( TDerived::SLOTID ), this ); - } - - template - ScRefHdlrControllerImpl( const T1 & rt1, const T2 & rt2, const T3& rt3, const T4& rt4, const T5& rt5 ) + ScRefHdlrControllerImpl(weld::Window* rt1, const OUString& rt2, const OString& rt3, const SfxItemSet* rt4, SfxBindings *rt5) : ScRefHdlrControllerImplBase(rt1, rt2, rt3, rt4, rt5) { - SC_MOD()->RegisterRefController( static_cast( TDerived::SLOTID ), this ); } - ~ScRefHdlrControllerImpl() + ScRefHdlrControllerImpl(SfxBindings* rt1, SfxChildWindow* rt2, weld::Window* rt3, const OUString& rt4, const OString& rt5) + : ScRefHdlrControllerImplBase(rt1, rt2, rt3, rt4, rt5) { - SC_MOD()->UnregisterRefController( static_cast( TDerived::SLOTID ), this ); } }; -struct ScAnyRefDlgController : ::ScRefHdlrControllerImpl +struct ScAnyRefDlgController : ScRefHdlrControllerImpl { - template - ScAnyRefDlgController( const T1 & rt1, const T2 & rt2, const T3& rt3, const T4& rt4, const T5& rt5 ) + ScAnyRefDlgController(SfxBindings* rt1, SfxChildWindow* rt2, weld::Window* rt3, const OUString& rt4, const OString& rt5) : ScRefHdlrControllerImpl(rt1, rt2, rt3, rt4, rt5) { } }; -inline bool ScRefHandler::CanInputStart( const formula::RefEdit *pEdit ) +inline bool ScRefHandler::CanInputStart( const formula::WeldRefEdit *pEdit ) { return ScFormulaReferenceHelper::CanInputStart( pEdit ); } diff --git a/sc/source/ui/inc/reffact.hxx b/sc/source/ui/inc/reffact.hxx index 09c83aaf5632..45dd4f6a9db0 100644 --- a/sc/source/ui/inc/reffact.hxx +++ b/sc/source/ui/inc/reffact.hxx @@ -200,7 +200,6 @@ class SC_DLLPUBLIC ScValidityRefChildWin : public SfxChildWindow { bool m_bVisibleLock:1; bool m_bFreeWindowLock:1; - VclPtr m_pSavedWndParent; public: ScValidityRefChildWin( vcl::Window*, sal_uInt16, const SfxBindings*, SfxChildWinInfo* ); SFX_DECL_CHILDWINDOW_WITHID(ScValidityRefChildWin); diff --git a/sc/source/ui/inc/validate.hxx b/sc/source/ui/inc/validate.hxx index c29d8b6c7335..d28ee58192cd 100644 --- a/sc/source/ui/inc/validate.hxx +++ b/sc/source/ui/inc/validate.hxx @@ -41,7 +41,7 @@ protected: #endif void (ScRefHandlerCaller::*m_pSetReferenceHdl)( const ScRange& , const ScDocument* ); void (ScRefHandlerCaller::*m_pSetActiveHdl)(); - void (ScRefHandlerCaller::*m_pRefInputStartPreHdl)( formula::RefEdit* pEdit, const formula::RefButton* pButton ); + void (ScRefHandlerCaller::*m_pRefInputStartPreHdl)( formula::WeldRefEdit* pEdit, const formula::WeldRefButton* pButton ); void (ScRefHandlerCaller::*m_pRefInputDonePostHdl)(); #if defined( _WIN32) #pragma pack(pop) @@ -50,7 +50,7 @@ protected: public: typedef void (ScRefHandlerCaller::*PFUNCSETREFHDLTYPE)( const ScRange& , const ScDocument* ); typedef void (ScRefHandlerCaller::*PCOMMONHDLTYPE)(); - typedef void (ScRefHandlerCaller::*PINPUTSTARTDLTYPE)( formula::RefEdit* pEdit, const formula::RefButton* pButton ); + typedef void (ScRefHandlerCaller::*PINPUTSTARTDLTYPE)( formula::WeldRefEdit* pEdit, const formula::WeldRefButton* pButton ); void SetSetRefHdl( PFUNCSETREFHDLTYPE pNewHdl ) { @@ -79,10 +79,10 @@ class ScTPValidationValue : public ScRefHandlerCaller, public SfxTabPage { static const sal_uInt16 pValueRanges[]; public: - explicit ScTPValidationValue( vcl::Window* pParent, const SfxItemSet& rArgSet ); - virtual ~ScTPValidationValue() override; + explicit ScTPValidationValue(TabPageParent pParent, const SfxItemSet& rArgSet); virtual void dispose() override; - static VclPtr Create( TabPageParent pParent, const SfxItemSet* rArgSet ); + virtual ~ScTPValidationValue() override; + static VclPtr Create( TabPageParent pParent, const SfxItemSet* rArgSet ); static const sal_uInt16* GetRanges() { return pValueRanges; } virtual bool FillItemSet( SfxItemSet* rArgSet ) override; @@ -97,22 +97,8 @@ private: void SetFirstFormula( const OUString& rFmlaStr ); void SetSecondFormula( const OUString& rFmlaStr ); - DECL_LINK(SelectHdl, ListBox&, void); - DECL_LINK(CheckHdl, Button*, void); - - VclPtr m_pLbAllow; - VclPtr m_pCbAllow; /// Allow blank cells. - VclPtr m_pCbShow; /// Show selection list in cell. - VclPtr m_pCbSort; /// Sort selection list in cell. - VclPtr m_pFtValue; - VclPtr m_pLbValue; - VclPtr m_pFtMin; - VclPtr m_pMinGrid; - VclPtr m_pEdMin; - VclPtr m_pEdList; /// Entries for explicit list - VclPtr m_pFtMax; - VclPtr m_pEdMax; - VclPtr m_pFtHint; /// Hint text for cell range validity. + DECL_LINK(SelectHdl, weld::ComboBox&, void); + DECL_LINK(CheckHdl, weld::Button&, void); OUString const maStrMin; OUString const maStrMax; @@ -122,75 +108,65 @@ private: OUString const maStrList; sal_Unicode mcFmlaSep; /// List separator in formulas. - DECL_LINK( EditSetFocusHdl, Control&, void ); - DECL_LINK( KillFocusHdl, Control&, void ); - void OnClick( const Button *pBtn ); - VclPtr m_pRefEdit; -public: - class ScRefButtonEx : public ::formula::RefButton - { - VclPtr m_pPage; - virtual void Click() override; - public: - ScRefButtonEx(vcl::Window* pParent, WinBits nStyle) - : ::formula::RefButton(pParent, nStyle) - , m_pPage(nullptr) - { - } - virtual ~ScRefButtonEx() override; - virtual void dispose() override; - void SetParentPage(ScTPValidationValue *pPage) - { - m_pPage = pPage; - } - ScTPValidationValue* GetParentPage() - { - return m_pPage; - } - }; -private: - VclPtr m_pBtnRef; - VclPtr m_pRefGrid; - friend class ScRefButtonEx; + DECL_LINK( EditSetFocusHdl, formula::WeldRefEdit&, void ); + DECL_LINK( KillEditFocusHdl, formula::WeldRefEdit&, void ); + DECL_LINK( KillButtonFocusHdl, formula::WeldRefButton&, void ); + DECL_LINK( ClickHdl, formula::WeldRefButton&, void ); + + formula::WeldRefEdit* m_pRefEdit; + + std::unique_ptr m_xLbAllow; + std::unique_ptr m_xCbAllow; /// Allow blank cells. + std::unique_ptr m_xCbShow; /// Show selection list in cell. + std::unique_ptr m_xCbSort; /// Sort selection list in cell. + std::unique_ptr m_xFtValue; + std::unique_ptr m_xLbValue; + std::unique_ptr m_xFtMin; + std::unique_ptr m_xMinGrid; + std::unique_ptr m_xEdMin; + std::unique_ptr m_xEdList; /// Entries for explicit list + std::unique_ptr m_xFtMax; + std::unique_ptr m_xEdMax; + std::unique_ptr m_xFtHint; /// Hint text for cell range validity. + std::unique_ptr m_xBtnRef; + std::unique_ptr m_xRefGrid; + + weld::Container* m_pRefEditParent; + weld::Container* m_pBtnRefParent; + void SetReferenceHdl( const ScRange& , const ScDocument* ); void SetActiveHdl(); - void RefInputStartPreHdl( formula::RefEdit* pEdit, const formula::RefButton* pButton ); + void RefInputStartPreHdl(formula::WeldRefEdit* pEdit, const formula::WeldRefButton* pButton); void RefInputDonePostHdl(); ScValidationDlg * GetValidationDlg(); public: void SetupRefDlg(); - void RemoveRefDlg(); + void RemoveRefDlg(bool bRestoreModal); }; /** The "Validity" tab dialog. */ class ScValidationDlg - : public ScRefHdlrImpl + : public ScRefHdlrControllerImpl , public ScRefHandlerHelper { - typedef ScRefHdlrImpl ScValidationDlgBase; + typedef ScRefHdlrControllerImpl ScValidationDlgBase; ScTabViewShell * const m_pTabVwSh; - VclPtr m_pHBox; - sal_uInt16 m_nValuePageId; + OString m_sValuePageId; bool m_bOwnRefHdlr:1; bool m_bRefInputting:1; + std::unique_ptr m_xHBox; + bool EnterRefStatus(); bool LeaveRefStatus(); public: - explicit ScValidationDlg( vcl::Window* pParent, const SfxItemSet* pArgSet, ScTabViewShell * pTabViewSh ); - virtual ~ScValidationDlg() override; - virtual void dispose() override - { - if( m_bOwnRefHdlr ) - RemoveRefDlg( false ); - m_pHBox.clear(); - ScRefHdlrImpl::dispose(); - } - static ScValidationDlg * Find1AliveObject( vcl::Window *pAncestor ) + explicit ScValidationDlg(weld::Window* pParent, const SfxItemSet* pArgSet, ScTabViewShell* pTabViewSh); + virtual ~ScValidationDlg() override; + static std::shared_ptr Find1AliveObject(weld::Window *pAncestor) { - return static_cast( SC_MOD()->Find1RefWindow( SLOTID, pAncestor ) ); + return SC_MOD()->Find1RefWindow(SLOTID, pAncestor); } ScTabViewShell *GetTabViewShell() { @@ -198,9 +174,9 @@ public: } bool SetupRefDlg(); - bool RemoveRefDlg( bool bRestoreModal ); + bool RemoveRefDlg(bool bRestoreModal); - void SetModal( bool bModal ){ ScValidationDlgBase::SetModalInputMode( bModal ); } + void SetModal(bool bModal) { m_xDialog->set_modal(bModal); } virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ) override { @@ -215,9 +191,9 @@ public: } bool IsRefInputting(){ return m_bRefInputting; } - vcl::Window* get_refinput_shrink_parent() { return m_pHBox; } + weld::Container* get_refinput_shrink_parent() { return m_xHBox.get(); } - virtual void RefInputStart( formula::RefEdit* pEdit, formula::RefButton* pButton = nullptr ) override + virtual void RefInputStart( formula::WeldRefEdit* pEdit, formula::WeldRefButton* pButton = nullptr ) override { if( !CanInputStart( pEdit ) ) return; @@ -228,7 +204,7 @@ public: ScValidationDlgBase::RefInputStart( pEdit, pButton ); } - virtual void RefInputStart( formula::WeldRefEdit* /*pEdit*/, formula::WeldRefButton* /*pButton*/ = nullptr ) override + virtual void RefInputStart( formula::RefEdit* /*pEdit*/, formula::RefButton* /*pButton*/ = nullptr ) override { assert(false); } @@ -249,15 +225,14 @@ public: enum { SLOTID = SID_VALIDITY_REFERENCE }; - bool Close() override + virtual void Close() override { - if( m_bOwnRefHdlr ) + if (m_bOwnRefHdlr) { - if (SfxTabPage* pPage = GetTabPage(m_nValuePageId)) - static_cast(pPage)->RemoveRefDlg(); + if (SfxTabPage* pPage = GetTabPage(m_sValuePageId)) + static_cast(pPage)->RemoveRefDlg(false); } - - return ScValidationDlgBase::Close(); + ScValidationDlgBase::Close(); } }; -- cgit