summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-09-20 20:29:36 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-09-26 09:54:18 +0200
commita37e559ed123789f6bc8f7972242d6461ce692ab (patch)
tree7c6304b4541335b2bb706efda58b882132fe3819 /svtools
parentb3f249c1351642be6f2774230ff80a6d20bd1401 (diff)
disinherit OWizardPage and SfxTabPage from vcl TabPage
Now that there's no need to support weld/unwelded mixes of pages in dialog any more. inherit from a BuilderPage which contains a Builder and Toplevel container BuilderPage Activate and Deactivate replace TabPage ActivatePage and DeactivatePage, allowing disambiguation wrt SfxTabPage ActivatePage and DeactivatePage. Change-Id: I5706e50fd92f712a25328ee9791e054bb9ad9812 Reviewed-on: https://gerrit.libreoffice.org/79317 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/uno/wizard/wizardpagecontroller.cxx39
-rw-r--r--svtools/source/uno/wizard/wizardpagecontroller.hxx5
-rw-r--r--svtools/source/uno/wizard/wizardshell.cxx40
-rw-r--r--svtools/source/uno/wizard/wizardshell.hxx9
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;