diff options
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/source/uno/wizard/wizardpagecontroller.cxx | 39 | ||||
-rw-r--r-- | svtools/source/uno/wizard/wizardpagecontroller.hxx | 5 | ||||
-rw-r--r-- | svtools/source/uno/wizard/wizardshell.cxx | 40 | ||||
-rw-r--r-- | svtools/source/uno/wizard/wizardshell.hxx | 9 |
4 files changed, 30 insertions, 63 deletions
diff --git a/svtools/source/uno/wizard/wizardpagecontroller.cxx b/svtools/source/uno/wizard/wizardpagecontroller.cxx index 35f3d171f9aa..3faf68258b10 100644 --- a/svtools/source/uno/wizard/wizardpagecontroller.cxx +++ b/svtools/source/uno/wizard/wizardpagecontroller.cxx @@ -45,7 +45,7 @@ namespace svt { namespace uno //= WizardPageController - WizardPageController::WizardPageController( TabPageParent aParent, const Reference< XWizardController >& i_rController, + WizardPageController::WizardPageController(weld::Container* pParent, const Reference< XWizardController >& i_rController, const sal_Int16 i_nPageId ) :m_xController( i_rController ) ,m_xWizardPage() @@ -54,14 +54,10 @@ namespace svt { namespace uno try { // Plug a toplevel SalFrame into the native page which can host our awt widgetry - m_xWizardPage.set(m_xController->createPage(aParent.pPage->CreateChildFrame(), i_nPageId), UNO_SET_THROW); + m_xWizardPage.set(m_xController->createPage(pParent->CreateChildFrame(), i_nPageId), UNO_SET_THROW); - Reference< XWindow > xPageWindow( m_xWizardPage->getWindow(), UNO_SET_THROW ); + Reference< XWindow > xPageWindow(m_xWizardPage->getWindow(), UNO_SET_THROW); xPageWindow->setVisible( true ); - - TabPage* pTabPage( getTabPage() ); - if ( pTabPage ) - pTabPage->SetStyle( pTabPage->GetStyle() | WB_CHILDDLGCTRL | WB_DIALOGCONTROL ); } catch( const Exception& ) { @@ -69,7 +65,6 @@ namespace svt { namespace uno } } - WizardPageController::~WizardPageController() { try @@ -83,34 +78,6 @@ namespace svt { namespace uno } } - - TabPage* WizardPageController::getTabPage() const - { - ENSURE_OR_RETURN( m_xWizardPage.is(), "WizardPageController::getTabPage: no external wizard page!", nullptr ); - try - { - Reference< XWindow > xPageWindow( m_xWizardPage->getWindow(), UNO_SET_THROW ); - VclPtr<vcl::Window> pPageWindow = VCLUnoHelper::GetWindow( xPageWindow ); - if ( pPageWindow ) - { - // windows created via the XContainerWindowProvider might be controls, not real windows, so resolve - // that one indirection - const Reference< XControl > xPageControl( m_xWizardPage->getWindow(), UNO_QUERY_THROW ); - xPageWindow.set( xPageControl->getPeer(), UNO_QUERY_THROW ); - pPageWindow = VCLUnoHelper::GetWindow( xPageWindow ); - } - - OSL_ENSURE( pPageWindow, "WizardPageController::getTabPage: unable to find the Window implementation for the page's window!" ); - return dynamic_cast< TabPage* >( pPageWindow.get() ); - } - catch( const Exception& ) - { - DBG_UNHANDLED_EXCEPTION("svtools.uno"); - } - return nullptr; - } - - void WizardPageController::initializePage() { if ( !m_xWizardPage.is() ) diff --git a/svtools/source/uno/wizard/wizardpagecontroller.hxx b/svtools/source/uno/wizard/wizardpagecontroller.hxx index 0ce9f479067d..1a0161084867 100644 --- a/svtools/source/uno/wizard/wizardpagecontroller.hxx +++ b/svtools/source/uno/wizard/wizardpagecontroller.hxx @@ -21,10 +21,8 @@ #define INCLUDED_SVTOOLS_SOURCE_UNO_WIZARD_WIZARDPAGECONTROLLER_HXX #include <vcl/wizardmachine.hxx> - #include <com/sun/star/ui/dialogs/XWizardController.hpp> - namespace svt { namespace uno { @@ -38,7 +36,7 @@ namespace svt { namespace uno { public: WizardPageController( - TabPageParent aParent, + weld::Container* pParent, const css::uno::Reference< css::ui::dialogs::XWizardController >& i_rController, const sal_Int16 i_nPageId ); @@ -51,7 +49,6 @@ namespace svt { namespace uno const css::uno::Reference< css::ui::dialogs::XWizardPage >& getWizardPage() const { return m_xWizardPage; } - TabPage* getTabPage() const; private: const css::uno::Reference< css::ui::dialogs::XWizardController > m_xController; diff --git a/svtools/source/uno/wizard/wizardshell.cxx b/svtools/source/uno/wizard/wizardshell.cxx index 6cca7478f0ce..6d72a1219a50 100644 --- a/svtools/source/uno/wizard/wizardshell.cxx +++ b/svtools/source/uno/wizard/wizardshell.cxx @@ -143,7 +143,7 @@ namespace svt { namespace uno } - PWizardPageController WizardShell::impl_getController( TabPage* i_pPage ) const + PWizardPageController WizardShell::impl_getController(BuilderPage* i_pPage) const { Page2ControllerMap::const_iterator pos = m_aPageControllers.find( i_pPage ); ENSURE_OR_RETURN( pos != m_aPageControllers.end(), "WizardShell::impl_getController: no controller for this page!", PWizardPageController() ); @@ -161,14 +161,27 @@ namespace svt { namespace uno return pController->getWizardPage(); } - void WizardShell::enablePage( const sal_Int16 i_nPageID, const bool i_bEnable ) { enableState( impl_pageIdToState( i_nPageID ), i_bEnable ); } + namespace + { + class EmptyPage : public BuilderPage + { + public: + EmptyPage(weld::Widget* pParent, weld::DialogController* pController) + : BuilderPage(pParent, pController, "svt/ui/emptypage.ui", "EmptyPage") + { + m_xContainer->set_size_request(m_xContainer->get_approximate_digit_width() * 70, + m_xContainer->get_text_height() * 45); + } + weld::Container* GetContainer() const { return m_xContainer.get(); } + }; + } - VclPtr<TabPage> WizardShell::createPage( WizardState i_nState ) + std::unique_ptr<BuilderPage> WizardShell::createPage( WizardState i_nState ) { ENSURE_OR_RETURN( m_xController.is(), "WizardShell::createPage: no WizardController!", nullptr ); @@ -176,29 +189,20 @@ namespace svt { namespace uno OString sIdent(OString::number(nPageId)); weld::Container* pPageContainer = m_xAssistant->append_page(sIdent); - // TODO eventually pass DialogController as distinct argument instead of bundling into TabPageParent - TabPageParent aParent(pPageContainer, this); - std::shared_ptr< WizardPageController > pController(new WizardPageController(aParent, m_xController, nPageId)); - VclPtr<TabPage> pPage = pController->getTabPage(); - OSL_ENSURE( pPage, "WizardShell::createPage: illegal tab page!" ); - if (!pPage) - { - // fallback for ill-behaved clients: empty page - pPage = VclPtr<vcl::OWizardPage>::Create(aParent, "svt/ui/emptypage.ui", "EmptyPage"); - pPage->SetSizePixel(pPage->LogicToPixel(Size(280, 185), MapMode(MapUnit::MapAppFont))); - } + auto xPage = std::make_unique<EmptyPage>(pPageContainer, this); + std::shared_ptr< WizardPageController > pController(new WizardPageController(xPage->GetContainer(), m_xController, nPageId)); - m_aPageControllers[ pPage ] = pController; - return pPage; + m_aPageControllers[xPage.get()] = pController; + + return xPage; } - vcl::IWizardPageController* WizardShell::getPageController( TabPage* i_pCurrentPage ) const + vcl::IWizardPageController* WizardShell::getPageController(BuilderPage* i_pCurrentPage) const { return impl_getController( i_pCurrentPage ).get(); } - OUString WizardShell::getStateDisplayName( WizardState i_nState ) const { try diff --git a/svtools/source/uno/wizard/wizardshell.hxx b/svtools/source/uno/wizard/wizardshell.hxx index 94ad406d84b2..391df0f7769e 100644 --- a/svtools/source/uno/wizard/wizardshell.hxx +++ b/svtools/source/uno/wizard/wizardshell.hxx @@ -53,14 +53,13 @@ namespace svt { namespace uno virtual short run() override; // OWizardMachine overridables - virtual VclPtr<TabPage> createPage( WizardState i_nState ) override; + virtual std::unique_ptr<BuilderPage> createPage( WizardState i_nState ) override; virtual void enterState( WizardState i_nState ) override; virtual bool leaveState( WizardState i_nState ) override; virtual OUString getStateDisplayName( WizardState i_nState ) const override; virtual bool canAdvance() const override; virtual bool onFinish() override; - virtual vcl::IWizardPageController* - getPageController( TabPage* _pCurrentPage ) const override; + virtual vcl::IWizardPageController* getPageController(BuilderPage* pCurrentPage) const override; static sal_Int16 convertCommitReasonToTravelType( const CommitPageReason i_eReason ); @@ -107,7 +106,7 @@ namespace svt { namespace uno return static_cast<WizardState>(i_nPageId - m_nFirstPageID); } - PWizardPageController impl_getController( TabPage* i_pPage ) const; + PWizardPageController impl_getController(BuilderPage* i_pPage) const; // prevent outside access to some base class members using WizardShell_Base::skip; @@ -117,7 +116,7 @@ namespace svt { namespace uno using WizardShell_Base::activatePath; private: - typedef ::std::map< VclPtr<TabPage>, PWizardPageController > Page2ControllerMap; + typedef std::map<BuilderPage*, PWizardPageController> Page2ControllerMap; const css::uno::Reference< css::ui::dialogs::XWizardController > m_xController; const sal_Int16 m_nFirstPageID; |