diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-05-29 12:41:16 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-05-31 10:31:17 +0200 |
commit | d6e4c97c8e8ab96ca099dd4f8a3fe35204dea8c1 (patch) | |
tree | 205d51c8b8a0656fc24bbb408071ac7683f38d1c /sfx2 | |
parent | 389491aedd659a3c4b24b9902b6cb54075874d3e (diff) |
remove newly unused SfxTabDialog
Change-Id: Iebbfe2ab66ff6e058c90c85de747f549cbc36aa5
Reviewed-on: https://gerrit.libreoffice.org/73156
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/Library_sfx.mk | 1 | ||||
-rw-r--r-- | sfx2/inc/uitest/sfx_uiobject.hxx | 39 | ||||
-rw-r--r-- | sfx2/source/dialog/dinfdlg.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/dialog/tabdlg.cxx | 952 | ||||
-rw-r--r-- | sfx2/source/uitest/sfx_uiobject.cxx | 87 |
5 files changed, 3 insertions, 1078 deletions
diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk index d4fb4cf6b972..fe6f24c6dd98 100644 --- a/sfx2/Library_sfx.mk +++ b/sfx2/Library_sfx.mk @@ -291,7 +291,6 @@ $(eval $(call gb_Library_add_exception_objects,sfx,\ sfx2/source/statbar/stbitem \ sfx2/source/styles/StyleManager \ sfx2/source/toolbox/tbxitem \ - sfx2/source/uitest/sfx_uiobject \ sfx2/source/view/classificationcontroller \ sfx2/source/view/classificationhelper \ sfx2/source/view/frame \ diff --git a/sfx2/inc/uitest/sfx_uiobject.hxx b/sfx2/inc/uitest/sfx_uiobject.hxx deleted file mode 100644 index b240a2745aa3..000000000000 --- a/sfx2/inc/uitest/sfx_uiobject.hxx +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include <vcl/uitest/uiobject.hxx> -#include <memory> - -class SfxTabDialog; - -class SfxTabDialogUIObject : public WindowUIObject -{ -private: - - VclPtr<SfxTabDialog> mxTabDialog; - -public: - - SfxTabDialogUIObject(const VclPtr<SfxTabDialog>& xTabDialog); - - virtual ~SfxTabDialogUIObject() override; - - virtual StringMap get_state() override; - - virtual void execute(const OUString& rAction, - const StringMap& rParameters) override; - - static std::unique_ptr<UIObject> create(vcl::Window* pWindow); - -protected: - - virtual OUString get_name() const override; -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/dialog/dinfdlg.cxx b/sfx2/source/dialog/dinfdlg.cxx index 02afc0af8452..71612ce19235 100644 --- a/sfx2/source/dialog/dinfdlg.cxx +++ b/sfx2/source/dialog/dinfdlg.cxx @@ -814,7 +814,7 @@ void SfxDocumentPage::ImplUpdateSignatures() try { xD = security::DocumentDigitalSignatures::createDefault(comphelper::getProcessComponentContext()); - xD->setParentWindow(VCLUnoHelper::GetInterface(GetTabDialog())); + xD->setParentWindow(GetDialogController()->getDialog()->GetXWindow()); } catch ( const css::uno::DeploymentException& ) { diff --git a/sfx2/source/dialog/tabdlg.cxx b/sfx2/source/dialog/tabdlg.cxx index 79e2ad750ada..f75b78a1a9f7 100644 --- a/sfx2/source/dialog/tabdlg.cxx +++ b/sfx2/source/dialog/tabdlg.cxx @@ -33,7 +33,6 @@ #include <sfx2/bindings.hxx> #include <sfx2/sfxdlg.hxx> #include <sfx2/viewsh.hxx> -#include <uitest/sfx_uiobject.hxx> #include <unotools/viewoptions.hxx> #include <vcl/builder.hxx> #include <vcl/IDialogRenderable.hxx> @@ -52,7 +51,6 @@ using namespace ::com::sun::star::uno; struct TabPageImpl { bool mbStandard; - VclPtr<SfxTabDialog> mxDialog; SfxOkDialogController* mpDialogController; css::uno::Reference< css::frame::XFrame > mxFrame; @@ -61,7 +59,6 @@ struct TabPageImpl struct Data_Impl { - sal_uInt16 const nId; // The ID OString const sId; // The ID CreateTabPage fnCreatePage; // Pointer to Factory GetTabPageRanges fnGetRanges; // Pointer to Ranges-Function @@ -69,22 +66,15 @@ struct Data_Impl bool bRefresh; // Flag: Page must be re-initialized // Constructor - Data_Impl( sal_uInt16 Id, const OString& rId, CreateTabPage fnPage, + Data_Impl( const OString& rId, CreateTabPage fnPage, GetTabPageRanges fnRanges ) : - nId ( Id ), sId ( rId ), fnCreatePage( fnPage ), fnGetRanges ( fnRanges ), pTabPage ( nullptr ), bRefresh ( false ) { - if ( !fnCreatePage ) - { - SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); - fnCreatePage = pFact->GetTabPageCreatorFunc( nId ); - fnGetRanges = pFact->GetTabPageRangesFunc( nId ); - } } }; @@ -119,25 +109,6 @@ struct TabDlg_Impl } }; - -static Data_Impl* Find( const SfxTabDlgData_Impl& rArr, sal_uInt16 nId, sal_uInt16* pPos = nullptr) -{ - const sal_uInt16 nCount = rArr.size(); - - for ( sal_uInt16 i = 0; i < nCount; ++i ) - { - Data_Impl* pObj = rArr[i]; - - if ( pObj->nId == nId ) - { - if ( pPos ) - *pPos = i; - return pObj; - } - } - return nullptr; -} - static Data_Impl* Find( const SfxTabDlgData_Impl& rArr, const OString& rId, sal_uInt16* pPos = nullptr) { const sal_uInt16 nCount = rArr.size(); @@ -320,16 +291,6 @@ void SfxTabPage::ChangesApplied() { } -void SfxTabPage::SetTabDialog(SfxTabDialog* pDialog) -{ - pImpl->mxDialog = pDialog; -} - -SfxTabDialog* SfxTabPage::GetTabDialog() const -{ - return pImpl->mxDialog; -} - void SfxTabPage::SetDialogController(SfxOkDialogController* pDialog) { pImpl->mpDialogController = pDialog; @@ -361,918 +322,9 @@ const SfxItemSet* SfxTabPage::GetDialogExampleSet() const { if (pImpl->mpDialogController) return pImpl->mpDialogController->GetExampleSet(); - if (pImpl->mxDialog) - return pImpl->mxDialog->GetExampleSet(); - return nullptr; -} - -SfxTabDialog::SfxTabDialog - -/* [Description] - - Constructor, temporary without Frame -*/ - -( - vcl::Window* pParent, // Parent Window - const OUString& rID, const OUString& rUIXMLDescription, //Dialog Name, Dialog .ui path - const SfxItemSet* pItemSet // Itemset with the data; - // can be NULL, when Pages are onDemand -) - : TabDialog(pParent, rID, rUIXMLDescription) - , m_pSet(pItemSet ? new SfxItemSet(*pItemSet) : nullptr) - , m_nAppPageId(USHRT_MAX) - , m_bStandardPushed(false) - , m_pExampleSet(nullptr) -{ - Init_Impl(); - - sal_uInt16 nPageCount = m_pTabCtrl->GetPageCount(); - for (sal_uInt16 nPage = 0; nPage < nPageCount; ++nPage) - { - sal_uInt16 nPageId = m_pTabCtrl->GetPageId(nPage); - m_pTabCtrl->SetTabPage(nPageId, nullptr); - } -} - -SfxTabDialog::~SfxTabDialog() -{ - disposeOnce(); -} - -void SfxTabDialog::dispose() -{ - SavePosAndId(); - - for (auto & elem : m_pImpl->aData) - { - if ( elem->pTabPage ) - { - // save settings of all pages (user data) - elem->pTabPage->FillUserData(); - OUString aPageData( elem->pTabPage->GetUserData() ); - if ( !aPageData.isEmpty() ) - { - // save settings of all pages (user data) - OUString sConfigId = OStringToOUString(elem->pTabPage->GetConfigId(), - RTL_TEXTENCODING_UTF8); - if (sConfigId.isEmpty()) - { - SAL_WARN("sfx.dialog", "Tabpage needs to be converted to .ui format"); - sConfigId = OUString::number(elem->nId); - } - - SvtViewOptions aPageOpt(EViewType::TabPage, sConfigId); - aPageOpt.SetUserItem( USERITEM_NAME, makeAny( aPageData ) ); - } - - elem->pTabPage.disposeAndClear(); - } - delete elem; - elem = nullptr; - } - - m_pImpl.reset(); - m_pSet.reset(); - m_pOutSet.reset(); - delete m_pExampleSet; - m_pExampleSet = nullptr; - m_pRanges.reset(); - - if (m_bOwnsBaseFmtBtn) - m_pBaseFmtBtn.disposeAndClear(); - if (m_bOwnsResetBtn) - m_pResetBtn.disposeAndClear(); - if (m_bOwnsHelpBtn) - m_pHelpBtn.disposeAndClear(); - if (m_bOwnsCancelBtn) - m_pCancelBtn.disposeAndClear(); - if (m_bOwnsOKBtn) - m_pOKBtn.disposeAndClear(); - m_pBox.clear(); - m_pTabCtrl.clear(); - m_pOKBtn.clear(); - m_pUserBtn.clear(); - m_pCancelBtn.clear(); - m_pHelpBtn.clear(); - m_pResetBtn.clear(); - m_pBaseFmtBtn.clear(); - m_pActionArea.clear(); - - TabDialog::dispose(); -} - -void SfxTabDialog::Init_Impl() -/* [Description] - - internal initialization of the dialogue -*/ -{ - m_pBox = get_content_area(); - assert(m_pBox); - m_pUIBuilder->get(m_pTabCtrl, "tabcontrol"); - - m_pImpl.reset( new TabDlg_Impl(m_pTabCtrl->GetPageCount()) ); - - m_pActionArea = get_action_area(); - assert(m_pActionArea); - - m_pOKBtn = m_pUIBuilder->get<PushButton>("ok"); - m_bOwnsOKBtn = m_pOKBtn == nullptr; - if (m_bOwnsOKBtn) - m_pOKBtn = VclPtr<OKButton>::Create(m_pActionArea); - - m_pCancelBtn = m_pUIBuilder->get<CancelButton>("cancel"); - m_bOwnsCancelBtn = m_pCancelBtn == nullptr; - if (m_bOwnsCancelBtn) - m_pCancelBtn = VclPtr<CancelButton>::Create(m_pActionArea); - - m_pHelpBtn = m_pUIBuilder->get<HelpButton>("help"); - m_bOwnsHelpBtn = m_pHelpBtn == nullptr; - if (m_bOwnsHelpBtn) - m_pHelpBtn = VclPtr<HelpButton>::Create(m_pActionArea); - - m_pResetBtn = m_pUIBuilder->get<PushButton>("reset"); - m_bOwnsResetBtn = m_pResetBtn == nullptr; - if (m_bOwnsResetBtn) - { - m_pResetBtn = VclPtr<PushButton>::Create(m_pActionArea.get()); - m_pResetBtn->set_id("reset"); - } - else - m_pImpl->bHideResetBtn = !m_pResetBtn->IsVisible(); - - m_pBaseFmtBtn = m_pUIBuilder->get<PushButton>("standard"); - m_bOwnsBaseFmtBtn = m_pBaseFmtBtn == nullptr; - if (m_bOwnsBaseFmtBtn) - { - m_pBaseFmtBtn = VclPtr<PushButton>::Create(m_pActionArea.get()); - m_pBaseFmtBtn->set_id("standard"); - } - - m_pOKBtn->SetClickHdl( LINK( this, SfxTabDialog, OkHdl ) ); - m_pCancelBtn->SetClickHdl( LINK( this, SfxTabDialog, CancelHdl ) ); - m_pResetBtn->SetClickHdl( LINK( this, SfxTabDialog, ResetHdl ) ); - m_pResetBtn->SetText( SfxResId( STR_RESET ) ); - m_pTabCtrl->SetActivatePageHdl( - LINK( this, SfxTabDialog, ActivatePageHdl ) ); - m_pTabCtrl->SetDeactivatePageHdl( - LINK( this, SfxTabDialog, DeactivatePageHdl ) ); - m_pActionArea->Show(); - m_pBox->Show(); - m_pTabCtrl->Show(); - m_pOKBtn->Show(); - m_pCancelBtn->Show(); - m_pHelpBtn->Show(); - m_pResetBtn->Show(); - m_pResetBtn->SetHelpId( HID_TABDLG_RESET_BTN ); - - if ( m_pUserBtn ) - { - m_pUserBtn->SetClickHdl( LINK( this, SfxTabDialog, UserHdl ) ); - m_pUserBtn->Show(); - } - - if ( m_pSet ) - { - m_pExampleSet = new SfxItemSet( *m_pSet ); - m_pOutSet.reset(new SfxItemSet( *m_pSet->GetPool(), m_pSet->GetRanges() )); - } -} - -short SfxTabDialog::Execute() -{ - if ( !m_pTabCtrl->GetPageCount() ) - return RET_CANCEL; - Start_Impl(); - - return TabDialog::Execute(); -} - -bool SfxTabDialog::StartExecuteAsync( VclAbstractDialog::AsyncContext &rCtx ) -{ - if ( !m_pTabCtrl->GetPageCount() ) - { - rCtx.mxOwner.disposeAndClear(); - return false; - } - Start_Impl(); - return TabDialog::StartExecuteAsync( rCtx ); -} - -void SfxTabDialog::Start_Impl() -{ - assert(m_pImpl->aData.size() == m_pTabCtrl->GetPageCount() - && "not all pages registered"); - sal_uInt16 nActPage = m_pTabCtrl->GetPageId( 0 ); - - // load old settings, when exists - SvtViewOptions aDlgOpt(EViewType::TabDialog, OStringToOUString(GetHelpId(),RTL_TEXTENCODING_UTF8)); - if ( aDlgOpt.Exists() ) - { - SetWindowState(OUStringToOString(aDlgOpt.GetWindowState(), RTL_TEXTENCODING_ASCII_US)); - - // initial TabPage from Program/Help/config - nActPage = m_pTabCtrl->GetPageId(aDlgOpt.GetPageID()); - - if ( USHRT_MAX != m_nAppPageId ) - nActPage = m_nAppPageId; - - if ( TAB_PAGE_NOTFOUND == m_pTabCtrl->GetPagePos( nActPage ) ) - nActPage = m_pTabCtrl->GetPageId( 0 ); - } - else if ( USHRT_MAX != m_nAppPageId && TAB_PAGE_NOTFOUND != m_pTabCtrl->GetPagePos( m_nAppPageId ) ) - nActPage = m_nAppPageId; - - m_pTabCtrl->SetCurPageId( nActPage ); - ActivatePageHdl( m_pTabCtrl ); -} - -/* - Adds a page to the dialog. The Name must correspond to a entry in the - TabControl in the dialog .ui -*/ -sal_uInt16 SfxTabDialog::AddTabPage -( - const OString &rName, // Page ID - CreateTabPage pCreateFunc // Pointer to the Factory Method -) -{ - sal_uInt16 nId = m_pTabCtrl->GetPageId(rName); - m_pImpl->aData.push_back(new Data_Impl(nId, rName, pCreateFunc, nullptr)); - return nId; -} - -void SfxTabDialog::AddTabPage - -/* [Description] - - Add a page to the dialog. The Rider text is passed on, the page has no - counterpart in the TabControl in the resource of the dialogue. -*/ - -( - sal_uInt16 nId, - const OUString& rRiderText, - CreateTabPage pCreateFunc, - sal_uInt16 nPos -) -{ - DBG_ASSERT( TAB_PAGE_NOTFOUND == m_pTabCtrl->GetPagePos( nId ), - "Double Page-Ids in the Tabpage" ); - m_pTabCtrl->InsertPage( nId, rRiderText, nPos ); - m_pImpl->aData.push_back( new Data_Impl(nId, "", pCreateFunc, nullptr ) ); -} - -void SfxTabDialog::PageCreated - -/* [Description] - - Default implementation of the virtual method. This is called immediately - after creating a page. Here the dialogue can call the TabPage Method - directly. -*/ - -( - sal_uInt16, // Id of the created page - SfxTabPage& // Reference to the created page -) -{ -} - - -SfxItemSet* SfxTabDialog::GetInputSetImpl() - -/* [Description] - - Derived classes may create new storage for the InputSet. This has to be - released in the Destructor. To do this, this method must be called. -*/ - -{ - return m_pSet.get(); -} - - -SfxTabPage* SfxTabDialog::GetTabPage( sal_uInt16 nPageId ) const - -/* [Description] - - Return TabPage with the specified Id. -*/ - -{ - sal_uInt16 nPos = 0; - Data_Impl* pDataObject = Find( m_pImpl->aData, nPageId, &nPos ); - - if ( pDataObject ) - return pDataObject->pTabPage; return nullptr; } -void SfxTabDialog::SavePosAndId() -{ - // save settings (screen position and current page) - SvtViewOptions aDlgOpt(EViewType::TabDialog, OStringToOUString(GetHelpId(),RTL_TEXTENCODING_UTF8)); - aDlgOpt.SetWindowState(OStringToOUString(GetWindowState(WindowStateMask::Pos),RTL_TEXTENCODING_ASCII_US)); - // to-do replace with name of page when all pages are converted to .ui - aDlgOpt.SetPageID(m_pTabCtrl->GetPageName(m_pTabCtrl->GetCurPageId())); -} - - -short SfxTabDialog::Ok() - -/* [Description] - - Ok handler for the Dialogue. - - Dialog's current location and current page are saved for the next time - the dialog is shown. - - The OutputSet is created and for each page this or the special OutputSet - is set by calling the method <SfxTabPage::FillItemSet(SfxItemSet &)>, to - insert the entered data by the user into the set. - - [Return value] - - RET_OK: if at least one page has returned from FillItemSet, - otherwise RET_CANCEL. -*/ -{ - SavePosAndId(); //See fdo#38828 "Apply" resetting window position - - if ( !m_pOutSet ) - { - if ( m_pExampleSet ) - m_pOutSet.reset(new SfxItemSet( *m_pExampleSet )); - else if ( m_pSet ) - m_pOutSet = m_pSet->Clone( false ); // without Items - } - bool bModified = false; - - for (auto const& elem : m_pImpl->aData) - { - SfxTabPage* pTabPage = elem->pTabPage; - - if ( pTabPage ) - { - if ( m_pSet && !pTabPage->HasExchangeSupport() ) - { - SfxItemSet aTmp( *m_pSet->GetPool(), m_pSet->GetRanges() ); - - if ( pTabPage->FillItemSet( &aTmp ) ) - { - bModified = true; - if (m_pExampleSet) - m_pExampleSet->Put( aTmp ); - m_pOutSet->Put( aTmp ); - } - } - } - } - - if ( m_pOutSet && m_pOutSet->Count() > 0 ) - bModified = true; - - if (m_bStandardPushed) - bModified = true; - return bModified ? RET_OK : RET_CANCEL; -} - -IMPL_LINK_NOARG(SfxTabDialog, CancelHdl, Button*, void) -{ - EndDialog( RET_USER_CANCEL ); -} - - -SfxItemSet* SfxTabDialog::CreateInputItemSet( sal_uInt16 ) - -/* [Description] - - Default implementation of the virtual Method. - This is called when pages create their sets onDemand. -*/ - -{ - SAL_WARN( "sfx.dialog", "CreateInputItemSet not implemented" ); - return new SfxAllItemSet( SfxGetpApp()->GetPool() ); -} - - -IMPL_LINK_NOARG(SfxTabDialog, OkHdl, Button*, void) - -/* [Description] - - Handler of the Ok-Buttons - This calls the current page <SfxTabPage::DeactivatePage(SfxItemSet *)>. - Returns <DeactivateRC::LeavePage>, <SfxTabDialog::Ok()> is called - and the Dialog is ended. -*/ - -{ - if (PrepareLeaveCurrentPage()) - { - if ( m_pImpl->bModal ) - EndDialog( Ok() ); - else - { - Ok(); - Close(); - } - } -} - -bool SfxTabDialog::PrepareLeaveCurrentPage() -{ - sal_uInt16 const nId = m_pTabCtrl->GetCurPageId(); - SfxTabPage* pPage = dynamic_cast<SfxTabPage*> (m_pTabCtrl->GetTabPage( nId )); - bool bEnd = !pPage; - - if ( pPage ) - { - DeactivateRC nRet = DeactivateRC::LeavePage; - if ( m_pSet ) - { - SfxItemSet aTmp( *m_pSet->GetPool(), m_pSet->GetRanges() ); - - if ( pPage->HasExchangeSupport() ) - nRet = pPage->DeactivatePage( &aTmp ); - else - nRet = pPage->DeactivatePage( nullptr ); - - if ( ( DeactivateRC::LeavePage & nRet ) == DeactivateRC::LeavePage - && aTmp.Count() ) - { - m_pExampleSet->Put( aTmp ); - m_pOutSet->Put( aTmp ); - } - } - else - nRet = pPage->DeactivatePage( nullptr ); - bEnd = nRet != DeactivateRC::KeepPage; - } - - return bEnd; -} - - -IMPL_LINK_NOARG(SfxTabDialog, UserHdl, Button*, void) - -/* [Description] - - Handler of the User-Buttons - This calls the current page <SfxTabPage::DeactivatePage(SfxItemSet *)>. - returns this <DeactivateRC::LeavePage> and <SfxTabDialog::Ok()> is called. - Then the Dialog is ended with the Return value <SfxTabDialog::Ok()> -*/ - -{ - if ( PrepareLeaveCurrentPage () ) - { - short nRet = Ok(); - - if ( RET_OK == nRet ) - nRet = RET_USER; - else - nRet = RET_USER_CANCEL; - EndDialog( nRet ); - } -} - - -IMPL_LINK_NOARG(SfxTabDialog, ResetHdl, Button*, void) - -/* [Description] - - Handler behind the reset button. - The Current Page is new initialized with their initial data, all the - settings that the user has made on this page are repealed. -*/ - -{ - const sal_uInt16 nId = m_pTabCtrl->GetCurPageId(); - Data_Impl* pDataObject = Find( m_pImpl->aData, nId ); - DBG_ASSERT( pDataObject, "Id not known" ); - - pDataObject->pTabPage->Reset( m_pSet.get() ); - // Also reset relevant items of ExampleSet and OutSet to initial state - if (!pDataObject->fnGetRanges) - return; - - if (!m_pExampleSet) - m_pExampleSet = new SfxItemSet(*m_pSet); - - const SfxItemPool* pPool = m_pSet->GetPool(); - const sal_uInt16* pTmpRanges = (pDataObject->fnGetRanges)(); - - while (*pTmpRanges) - { - const sal_uInt16* pU = pTmpRanges + 1; - - // Correct Range with multiple values - sal_uInt16 nTmp = *pTmpRanges, nTmpEnd = *pU; - DBG_ASSERT(nTmp <= nTmpEnd, "Range is sorted the wrong way"); - - if (nTmp > nTmpEnd) - { - // If really sorted wrongly, then set new - std::swap(nTmp, nTmpEnd); - } - - while (nTmp && nTmp <= nTmpEnd) - { - // Iterate over the Range and set the Items - sal_uInt16 nWh = pPool->GetWhich(nTmp); - const SfxPoolItem* pItem; - if (SfxItemState::SET == m_pSet->GetItemState(nWh, false, &pItem)) - { - m_pExampleSet->Put(*pItem); - m_pOutSet->Put(*pItem); - } - else - { - m_pExampleSet->ClearItem(nWh); - m_pOutSet->ClearItem(nWh); - } - nTmp++; - } - // Go to the next pair - pTmpRanges += 2; - } -} - - -IMPL_LINK_NOARG(SfxTabDialog, BaseFmtHdl, Button*, void) - -/* [Description] - - Handler behind the Standard-Button. - This button is available when editing style sheets. All the set attributes - in the edited stylesheet are deleted. -*/ - -{ - m_bStandardPushed = true; - - const sal_uInt16 nId = m_pTabCtrl->GetCurPageId(); - Data_Impl* pDataObject = Find( m_pImpl->aData, nId ); - DBG_ASSERT( pDataObject, "Id not known" ); - - if ( !pDataObject->fnGetRanges ) - return; - - if ( !m_pExampleSet ) - m_pExampleSet = new SfxItemSet( *m_pSet ); - - const SfxItemPool* pPool = m_pSet->GetPool(); - const sal_uInt16* pTmpRanges = (pDataObject->fnGetRanges)(); - SfxItemSet aTmpSet( *m_pExampleSet ); - - while ( *pTmpRanges ) - { - const sal_uInt16* pU = pTmpRanges + 1; - - // Correct Range with multiple values - sal_uInt16 nTmp = *pTmpRanges, nTmpEnd = *pU; - DBG_ASSERT( nTmp <= nTmpEnd, "Range is sorted the wrong way" ); - - if ( nTmp > nTmpEnd ) - { - // If really sorted wrongly, then set new - std::swap(nTmp, nTmpEnd); - } - - while ( nTmp && nTmp <= nTmpEnd ) // guard against overflow - { - // Iterate over the Range and set the Items - sal_uInt16 nWh = pPool->GetWhich( nTmp ); - m_pExampleSet->ClearItem( nWh ); - aTmpSet.ClearItem( nWh ); - // At the Outset of InvalidateItem, - // so that the change takes effect - m_pOutSet->InvalidateItem( nWh ); - nTmp++; - } - // Go to the next pair - pTmpRanges += 2; - } - // Set all Items as new -> the call the current Page Reset() - DBG_ASSERT( pDataObject->pTabPage, "the Page is gone" ); - pDataObject->pTabPage->Reset( &aTmpSet ); - pDataObject->pTabPage->pImpl->mbStandard = true; -} - - -IMPL_LINK( SfxTabDialog, ActivatePageHdl, TabControl *, pTabCtrl, void ) - -/* [Description] - - Handler that is called by StarView for switching to a different page. - If the page not exist yet then it is created and the virtual Method - <SfxTabDialog::PageCreated( sal_uInt16, SfxTabPage &)> is called. If the page - exist, then the if possible the <SfxTabPage::Reset(const SfxItemSet &)> or - <SfxTabPage::ActivatePage(const SfxItemSet &)> is called. -*/ - -{ - sal_uInt16 nId = pTabCtrl->GetCurPageId(); - - DBG_ASSERT( m_pImpl->aData.size(), "no Pages registered" ); - - // Tab Page already there? - VclPtr<SfxTabPage> pTabPage = dynamic_cast<SfxTabPage*> (pTabCtrl->GetTabPage( nId )); - Data_Impl* pDataObject = Find( m_pImpl->aData, nId ); - - // fallback to 1st page when requested one does not exist - if(!pDataObject && pTabCtrl->GetPageCount()) - { - pTabCtrl->SetCurPageId(pTabCtrl->GetPageId(0)); - nId = pTabCtrl->GetCurPageId(); - pTabPage = dynamic_cast< SfxTabPage* >(pTabCtrl->GetTabPage(nId)); - pDataObject = Find(m_pImpl->aData, nId); - } - - if (!pDataObject) - { - SAL_WARN("sfx.dialog", "Tab Page ID not known, this is pretty serious and needs investigation"); - return; - } - - // Create TabPage if possible: - if ( !pTabPage ) - { - if ( m_pSet ) - pTabPage = (pDataObject->fnCreatePage)(static_cast<vcl::Window*>(pTabCtrl), m_pSet.get()); - else - pTabPage = (pDataObject->fnCreatePage)(pTabCtrl, CreateInputItemSet(nId)); - DBG_ASSERT( nullptr == pDataObject->pTabPage, "create TabPage more than once" ); - pDataObject->pTabPage = pTabPage; - pTabPage->SetTabDialog(this); - - OUString sConfigId = OStringToOUString(pTabPage->GetConfigId(), RTL_TEXTENCODING_UTF8); - if (sConfigId.isEmpty()) - { - SAL_WARN("sfx.dialog", "Tabpage needs to be converted to .ui format"); - sConfigId = OUString::number(pDataObject->nId); - } - SvtViewOptions aPageOpt(EViewType::TabPage, sConfigId); - OUString sUserData; - Any aUserItem = aPageOpt.GetUserItem( USERITEM_NAME ); - OUString aTemp; - if ( aUserItem >>= aTemp ) - sUserData = aTemp; - pTabPage->SetUserData( sUserData ); - Size aSiz = pTabPage->GetSizePixel(); - - Size aCtrlSiz = pTabCtrl->GetTabPageSizePixel(); - // Only set Size on TabControl when < as TabPage - if ( aCtrlSiz.Width() < aSiz.Width() || - aCtrlSiz.Height() < aSiz.Height() ) - { - pTabCtrl->SetTabPageSizePixel( aSiz ); - } - - PageCreated( nId, *pTabPage ); - - pTabPage->Reset( m_pSet.get() ); - - pTabCtrl->SetTabPage( nId, pTabPage ); - } - else if ( pDataObject->bRefresh ) - pTabPage->Reset( m_pSet.get() ); - pDataObject->bRefresh = false; - - if ( m_pExampleSet ) - pTabPage->ActivatePage( *m_pExampleSet ); - - if ( pTabPage->IsReadOnly() || m_pImpl->bHideResetBtn ) - m_pResetBtn->Hide(); - else - m_pResetBtn->Show(); -} - - -IMPL_LINK( SfxTabDialog, DeactivatePageHdl, TabControl *, pTabCtrl, bool ) - -/* [Description] - - Handler that is called by StarView before leaving a page. - - [Cross-reference] - - <SfxTabPage::DeactivatePage(SfxItemSet *)> -*/ - -{ - sal_uInt16 nId = pTabCtrl->GetCurPageId(); - SfxTabPage *pPage = dynamic_cast<SfxTabPage*> (pTabCtrl->GetTabPage( nId )); - DBG_ASSERT( pPage, "no active Page" ); - if (!pPage) - return false; -#ifdef DBG_UTIL - Data_Impl* pDataObject = Find( m_pImpl->aData, pTabCtrl->GetCurPageId() ); - DBG_ASSERT( pDataObject, "no Data structure for current page" ); -#endif - - DeactivateRC nRet = DeactivateRC::LeavePage; - - if ( !m_pExampleSet && pPage->HasExchangeSupport() && m_pSet ) - m_pExampleSet = new SfxItemSet( *m_pSet->GetPool(), m_pSet->GetRanges() ); - - if ( m_pSet ) - { - SfxItemSet aTmp( *m_pSet->GetPool(), m_pSet->GetRanges() ); - - if ( pPage->HasExchangeSupport() ) - nRet = pPage->DeactivatePage( &aTmp ); - else - nRet = pPage->DeactivatePage( nullptr ); - if ( ( DeactivateRC::LeavePage & nRet ) == DeactivateRC::LeavePage && - aTmp.Count() && m_pExampleSet) - { - m_pExampleSet->Put( aTmp ); - m_pOutSet->Put( aTmp ); - } - } - else - { - if ( pPage->HasExchangeSupport() ) //!!! - { - if ( !m_pExampleSet ) - { - SfxItemPool* pPool = pPage->GetItemSet().GetPool(); - m_pExampleSet = - new SfxItemSet( *pPool, GetInputRanges( *pPool ) ); - } - nRet = pPage->DeactivatePage( m_pExampleSet ); - } - else - nRet = pPage->DeactivatePage( nullptr ); - } - - if ( nRet & DeactivateRC::RefreshSet ) - { - // Flag all Pages as to be initialized as new - - for (auto const& elem : m_pImpl->aData) - { - elem->bRefresh = ( elem->pTabPage.get() != pPage ); // Do not refresh own Page anymore - } - } - return static_cast<bool>(nRet & DeactivateRC::LeavePage); -} - - -void SfxTabDialog::ShowPage( sal_uInt16 nId ) - -/* [Description] - - The TabPage is activated with the specified Id. -*/ - -{ - m_pTabCtrl->SetCurPageId( nId ); - ActivatePageHdl( m_pTabCtrl ); -} - -OString SfxTabDialog::GetScreenshotId() const -{ - SfxTabPage *pActiveTabPage = GetCurTabPage(); - OString aScreenshotId = GetHelpId(); - - if ( pActiveTabPage ) - { - vcl::Window* pToplevelBox = pActiveTabPage->GetWindow( GetWindowType::FirstChild ); - - if ( pToplevelBox ) - aScreenshotId = pToplevelBox->GetHelpId(); - } - - return aScreenshotId; -} - -const sal_uInt16* SfxTabDialog::GetInputRanges( const SfxItemPool& rPool ) - -/* [Description] - - Makes the set over the range of all pages of the dialogue. Pages have the - static method for querying their range in AddTabPage, ie deliver their - sets onDemand. - - [Return value] - - Pointer to a null-terminated array of sal_uInt16. This array belongs to the - dialog and is deleted when the dialogue is destroy. - - [Cross-reference] - - <SfxTabDialog::AddTabPage(sal_uInt16, CreateTabPage, GetTabPageRanges, bool)> - <SfxTabDialog::AddTabPage(sal_uInt16, const String &, CreateTabPage, GetTabPageRanges, bool, sal_uInt16)> - <SfxTabDialog::AddTabPage(sal_uInt16, const Bitmap &, CreateTabPage, GetTabPageRanges, bool, sal_uInt16)> -*/ - -{ - if ( m_pSet ) - { - SAL_WARN( "sfx.dialog", "Set already exists!" ); - return m_pSet->GetRanges(); - } - - if ( m_pRanges ) - return m_pRanges.get(); - std::vector<sal_uInt16> aUS; - - for (auto const& elem : m_pImpl->aData) - { - - if ( elem->fnGetRanges ) - { - const sal_uInt16* pTmpRanges = (elem->fnGetRanges)(); - const sal_uInt16* pIter = pTmpRanges; - - sal_uInt16 nLen; - for( nLen = 0; *pIter; ++nLen, ++pIter ) - ; - aUS.insert( aUS.end(), pTmpRanges, pTmpRanges + nLen ); - } - } - - //! Remove duplicated Ids? - { - for (auto & elem : aUS) - elem = rPool.GetWhich(elem); - } - - // sort - if ( aUS.size() > 1 ) - { - std::sort( aUS.begin(), aUS.end() ); - } - - m_pRanges.reset(new sal_uInt16[aUS.size() + 1]); - std::copy( aUS.begin(), aUS.end(), m_pRanges.get() ); - m_pRanges[aUS.size()] = 0; - return m_pRanges.get(); -} - -void SfxTabDialog::SetPageName(sal_uInt16 nPageId, const OString& rName) const -{ - m_pTabCtrl->SetPageName(nPageId, rName); -} - -FactoryFunction SfxTabDialog::GetUITestFactory() const -{ - return SfxTabDialogUIObject::create; -} - -std::vector<OString> SfxTabDialog::getAllPageUIXMLDescriptions() const -{ - std::vector<OString> aRetval; - - for (auto const& elem : m_pImpl->aData) - { - SfxTabPage* pCandidate = GetTabPage(elem->nId); - - if (!pCandidate) - { - // force SfxTabPage creation - const_cast<SfxTabDialog*>(this)->ShowPage(elem->nId); - pCandidate = GetTabPage(elem->nId); - } - - if (pCandidate) - { - // use UIXMLDescription (without '.ui', with '/') - aRetval.push_back(pCandidate->getUIFile()); - } - } - - return aRetval; -} - -bool SfxTabDialog::selectPageByUIXMLDescription(const OString& rUIXMLDescription) -{ - for (auto const& elem : m_pImpl->aData) - { - SfxTabPage* pCandidate = elem->pTabPage; - - if (!pCandidate) - { - // force SfxTabPage creation - ShowPage(elem->nId); - pCandidate = GetTabPage(elem->nId); - } - - if (pCandidate && pCandidate->getUIFile() == rUIXMLDescription) - { - ShowPage(elem->nId); - return true; - } - } - - return false; -} - SfxTabDialogController::SfxTabDialogController ( weld::Window* pParent, // Parent Window @@ -1817,7 +869,7 @@ void SfxTabDialogController::AddTabPage(const OString &rName /* Page ID */, CreateTabPage pCreateFunc /* Pointer to the Factory Method */, GetTabPageRanges pRangesFunc /* Pointer to the Method for querying Ranges onDemand */) { - m_pImpl->aData.push_back(new Data_Impl(m_pImpl->aData.size(), rName, pCreateFunc, pRangesFunc)); + m_pImpl->aData.push_back(new Data_Impl(rName, pCreateFunc, pRangesFunc)); } void SfxTabDialogController::AddTabPage(const OString &rName /* Page ID */, diff --git a/sfx2/source/uitest/sfx_uiobject.cxx b/sfx2/source/uitest/sfx_uiobject.cxx deleted file mode 100644 index 5a56b4168e18..000000000000 --- a/sfx2/source/uitest/sfx_uiobject.cxx +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include <memory> -#include <uitest/sfx_uiobject.hxx> - -#include <sfx2/tabdlg.hxx> - -SfxTabDialogUIObject::SfxTabDialogUIObject(const VclPtr<SfxTabDialog>& xTabDialog): - WindowUIObject(xTabDialog), - mxTabDialog(xTabDialog) -{ -} - -SfxTabDialogUIObject::~SfxTabDialogUIObject() -{ -} - -StringMap SfxTabDialogUIObject::get_state() -{ - StringMap aMap = WindowUIObject::get_state(); - sal_uInt16 nPageId = mxTabDialog->GetCurPageId(); - std::vector<sal_uInt16> aPageIds = mxTabDialog->m_pTabCtrl->GetPageIDs(); - OUString aStrIds; - OUString aStrNames; - for (auto const& pageId : aPageIds) - { - aStrIds = aStrIds + OUString::number(pageId) + ";"; - aStrNames = aStrNames + mxTabDialog->GetPageText(pageId) + ";"; - } - - aMap["PageIds"] = aStrIds; - aMap["PageNames"] = aStrNames; - aMap["CurrentPageID"] = OUString::number(nPageId); - aMap["CurrentPageText"] = mxTabDialog->GetPageText(nPageId); - return aMap; -} - -void SfxTabDialogUIObject::execute(const OUString& rAction, - const StringMap& rParameters) -{ - if (rAction != "SELECT") - return; - - if (rParameters.find("POS") != rParameters.end()) - { - auto itr = rParameters.find("POS"); - sal_uInt32 nPos = itr->second.toUInt32(); - std::vector<sal_uInt16> aIds = mxTabDialog->m_pTabCtrl->GetPageIDs(); - sal_uInt16 nPageId = aIds[nPos]; - mxTabDialog->ShowPage(nPageId); - } - else if (rParameters.find("NAME") != rParameters.end()) - { - auto itr = rParameters.find("NAME"); - OUString aName = itr->second; - std::vector<sal_uInt16> aIds = mxTabDialog->m_pTabCtrl->GetPageIDs(); - for (auto const& elem : aIds) - { - if (mxTabDialog->GetPageText(elem) == aName) - { - mxTabDialog->ShowPage(elem); - break; - } - } - } -} - -std::unique_ptr<UIObject> SfxTabDialogUIObject::create(vcl::Window* pWindow) -{ - SfxTabDialog* pDialog = dynamic_cast<SfxTabDialog*>(pWindow); - assert(pDialog); - return std::unique_ptr<UIObject>(new SfxTabDialogUIObject(pDialog)); -} - -OUString SfxTabDialogUIObject::get_name() const -{ - return OUString("SfxTabDialogUIObject"); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |