cui/source/dialogs/insrc.cxx | 20 cui/source/dialogs/splitcelldlg.cxx | 30 cui/source/factory/dlgfact.cxx | 434 ++++----- cui/source/inc/insrc.hxx | 19 cui/source/inc/splitcelldlg.hxx | 20 cui/source/inc/treeopt.hxx | 10 include/vcl/abstdlgimpl.hxx | 84 + sw/source/ui/dialog/swdlgfact.cxx | 1654 +++++++++++++++--------------------- sw/source/ui/dialog/swdlgfact.hxx | 706 --------------- 9 files changed, 1023 insertions(+), 1954 deletions(-)
New commits: commit e04d5aef350a2cee7bdc7d661be1d10a90d75086 Author: Mike Kaganski <[email protected]> AuthorDate: Thu Dec 19 12:41:31 2024 +0500 Commit: Mike Kaganski <[email protected]> CommitDate: Sat Dec 21 22:18:22 2024 +0100 Simplify abstract dialog impls using vcl::AbstractDialogImpl* in sw Change-Id: Ie2816ab4f4ad5f4d703d4f6669ae16a9fa60933e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178984 Tested-by: Jenkins Reviewed-by: Mike Kaganski <[email protected]> diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index 086c7f4fd451..343dd34850dc 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -23,6 +23,7 @@ #include "swdlgfact.hxx" #include <svl/style.hxx> +#include <vcl/abstdlgimpl.hxx> #include <globals.hrc> #include <wordcountdialog.hxx> @@ -93,907 +94,114 @@ #include <formatlinebreak.hxx> #include <translatelangselect.hxx> -using namespace ::com::sun::star; using namespace css::frame; using namespace css::uno; -short AbstractSwWordCountFloatDlg_Impl::Execute() +namespace { - return m_xDlg->run(); -} - -short AbstractSwInsertAbstractDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractSwInsertAbstractDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short SwAbstractSfxController_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool SwAbstractSfxController_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractNumFormatDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractNumFormatDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return SfxSingleTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwAsciiFilterDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSplitTableDialog_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractSplitTableDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwTableWidthDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractSwTableWidthDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwTableHeightDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractSwTableHeightDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwMergeTableDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSwPageNumberDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractSwPageNumberDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractGenericDialog_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractGenericDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwSortDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractSwSortDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractMultiTOXMarkDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractTabController_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractNumBulletDialog_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSwConvertTableDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSwInsertDBColAutoPilot_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractSwInsertDBColAutoPilot_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractDropDownFieldDialog_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractDropDownFormFieldDialog_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractDropDownFormFieldDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractDateFormFieldDialog_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractDateFormFieldDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwLabDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSwSelGlossaryDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSwAutoFormatDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractSwAutoFormatDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwFieldDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSwRenameXNamedDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractSwRenameXNamedDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext& rCtx) -{ - return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -bool AbstractSwContentControlListItemDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext& rCtx) -{ - return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractSwContentControlListItemDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractSwModalRedlineAcceptDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractSwModalRedlineAcceptDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext& rCtx) -{ - return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractGlossaryDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractGlossaryDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractFieldInputDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractInsFootNoteDlg_Impl::Execute() -{ - assert(false); - return -1; -} - -bool AbstractInsFootNoteDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractJavaEditDialog_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractMailMergeDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractMailMergeCreateFromDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractMailMergeFieldConnectionsDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractMultiTOXTabDialog_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractMultiTOXTabDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return SfxTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractEditRegionDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractEditRegionDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractInsertSectionTabDialog_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool AbstractInsertSectionTabDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return SfxTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -short AbstractIndexMarkFloatDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -short AbstractAuthMarkFloatDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -void AbstractTabController_Impl::SetCurPageId( const OUString &rName ) -{ - m_xDlg->SetCurPageId( rName ); -} - -const SfxItemSet* AbstractTabController_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -WhichRangesContainer AbstractTabController_Impl::GetInputRanges(const SfxItemPool& pItem ) +// This base disallows synchronous execution +template <class Base, class Dialog> +class AbstractDialogImpl_NoSync : public vcl::AbstractDialogImpl_Async<Base, Dialog> { - return m_xDlg->GetInputRanges( pItem ); -} - -void AbstractTabController_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -bool AbstractTabController_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return SfxTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -//From class Window. -void AbstractTabController_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -void AbstractNumBulletDialog_Impl::SetCurPageId( const OUString &rName ) -{ - m_xDlg->SetCurPageId( rName ); -} - -const SfxItemSet* AbstractNumBulletDialog_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -const SfxItemSet* AbstractNumBulletDialog_Impl::GetInputItemSet() const -{ - return m_xDlg->GetInputItemSet(); -} - -WhichRangesContainer AbstractNumBulletDialog_Impl::GetInputRanges(const SfxItemPool& pItem ) -{ - return m_xDlg->GetInputRanges( pItem ); -} - -void AbstractNumBulletDialog_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -bool AbstractNumBulletDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return SfxTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -//From class Window. -void AbstractNumBulletDialog_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -IMPL_LINK_NOARG(AbstractApplyTabController_Impl, ApplyHdl, weld::Button&, void) -{ - if (m_xDlg->Apply()) +public: + using vcl::AbstractDialogImpl_Async<Base, Dialog>::AbstractDialogImpl_Async; + short Execute() override { - m_aHandler.Call(nullptr); - m_xDlg->Applied(); + assert(false); + return -1; } -} - -void AbstractApplyTabController_Impl::SetApplyHdl( const Link<LinkParamNone*,void>& rLink ) -{ - m_aHandler = rLink; - m_xDlg->SetApplyHandler(LINK(this, AbstractApplyTabController_Impl, ApplyHdl)); -} - -sal_uInt8 AbstractSwInsertAbstractDlg_Impl::GetLevel() const -{ - return m_xDlg->GetLevel(); -} - -sal_uInt8 AbstractSwInsertAbstractDlg_Impl::GetPara() const -{ - return m_xDlg->GetPara(); -} - -const SfxItemSet* SwAbstractSfxController_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -const SfxItemSet* AbstractNumFormatDlg_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -void SwAbstractSfxController_Impl::SetText(const OUString& rStr) -{ - m_xDlg->set_title(rStr); -} - -void AbstractNumFormatDlg_Impl::SetText(const OUString& rStr) -{ - m_xDlg->set_title(rStr); -} - -void AbstractSwAsciiFilterDlg_Impl::FillOptions( SwAsciiOptions& rOptions ) -{ - m_xDlg->FillOptions(rOptions); -} - -SplitTable_HeadlineOption AbstractSplitTableDialog_Impl::GetSplitMode() -{ - return m_xDlg->GetSplitMode(); -} - -OUString AbstractSwBreakDlg_Impl::GetTemplateName() -{ - SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); - if (pDlg) - return pDlg->GetTemplateName(); - - return u""_ustr; -} - -sal_uInt16 AbstractSwBreakDlg_Impl:: GetKind() -{ - SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); - if (pDlg) - return pDlg->GetKind(); - - return 0; -} - -::std::optional<sal_uInt16> AbstractSwBreakDlg_Impl:: GetPageNumber() -{ - SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); - if (pDlg) - return pDlg->GetPageNumber(); - - return 0; -} - -std::optional<SwLineBreakClear> AbstractSwBreakDlg_Impl::GetClear() -{ - SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); - if (pDlg) - return pDlg->GetClear(); - - return SwLineBreakClear::NONE; -} - -void AbstractSwConvertTableDlg_Impl::GetValues( sal_Unicode& rDelim,SwInsertTableOptions& rInsTableFlags, - SwTableAutoFormat const*& prTAFormat) -{ - m_xDlg->GetValues(rDelim,rInsTableFlags, prTAFormat); -} - -void AbstractSwInsertDBColAutoPilot_Impl::DataToDoc( const uno::Sequence< uno::Any >& rSelection, - uno::Reference< sdbc::XDataSource> rxSource, - uno::Reference< sdbc::XConnection> xConnection, - uno::Reference< sdbc::XResultSet > xResultSet) -{ -#if HAVE_FEATURE_DBCONNECTIVITY && !ENABLE_FUZZERS - m_xDlg->DataToDoc(rSelection, rxSource, xConnection, xResultSet); -#else - (void) rSelection; - (void) rxSource; - (void) xConnection; - (void) xResultSet; -#endif -} - -bool AbstractDropDownFieldDialog_Impl::PrevButtonPressed() const -{ - return m_xDlg->PrevButtonPressed(); -} - -bool AbstractDropDownFieldDialog_Impl::NextButtonPressed() const -{ - return m_xDlg->NextButtonPressed(); -} - -void AbstractSwLabDlg_Impl::SetCurPageId( const OUString &rName ) -{ - m_xDlg->SetCurPageId( rName ); -} - -const SfxItemSet* AbstractSwLabDlg_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -WhichRangesContainer AbstractSwLabDlg_Impl::GetInputRanges(const SfxItemPool& pItem ) -{ - return m_xDlg->GetInputRanges( pItem ); -} - -void AbstractSwLabDlg_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -void AbstractSwLabDlg_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -const OUString& AbstractSwLabDlg_Impl::GetBusinessCardStr() const -{ - return m_xDlg->GetBusinessCardStr(); -} - -Printer * AbstractSwLabDlg_Impl::GetPrt() -{ - return m_xDlg->GetPrt(); -} - -void AbstractSwSelGlossaryDlg_Impl::InsertGlos(const OUString &rRegion, const OUString &rGlosName) -{ - m_xDlg->InsertGlos( rRegion, rGlosName ); -} - -sal_Int32 AbstractSwSelGlossaryDlg_Impl::GetSelectedIdx() const -{ - return m_xDlg->GetSelectedIdx(); -} - -void AbstractSwSelGlossaryDlg_Impl::SelectEntryPos(sal_Int32 nIdx) -{ - m_xDlg->SelectEntryPos( nIdx ); -} - -std::unique_ptr<SwTableAutoFormat> AbstractSwAutoFormatDlg_Impl::FillAutoFormatOfIndex() const -{ - return m_xDlg->FillAutoFormatOfIndex(); -} - -void AbstractSwFieldDlg_Impl::SetCurPageId( const OUString &rName ) -{ - m_xDlg->SetCurPageId( rName ); -} - -const SfxItemSet* AbstractSwFieldDlg_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -WhichRangesContainer AbstractSwFieldDlg_Impl::GetInputRanges(const SfxItemPool& pItem ) -{ - return m_xDlg->GetInputRanges( pItem ); -} - -void AbstractSwFieldDlg_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -void AbstractSwFieldDlg_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -bool AbstractSwFieldDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - auto xDlg = m_xDlg; - return SfxTabDialogController::runAsync(m_xDlg, [rCtx, xDlg=std::move(xDlg)](sal_Int32 nResult){ - xDlg->Close(); - if (rCtx.isSet()) - rCtx.maEndDialogFn(nResult); - }); -} - -void AbstractSwFieldDlg_Impl::Initialize(SfxChildWinInfo *pInfo) -{ - m_xDlg->Initialize( pInfo ); -} - -void AbstractSwFieldDlg_Impl::ReInitDlg() -{ - m_xDlg->ReInitDlg(); -} - -void AbstractSwFieldDlg_Impl::ActivateDatabasePage() -{ - m_xDlg->ActivateDatabasePage(); -} - -void AbstractSwFieldDlg_Impl::ShowReferencePage() -{ - m_xDlg->ShowReferencePage(); -} - -std::shared_ptr<SfxDialogController> AbstractSwFieldDlg_Impl::GetController() -{ - return m_xDlg; -} - -void AbstractSwRenameXNamedDlg_Impl::SetForbiddenChars( const OUString& rSet ) -{ - m_xDlg->SetForbiddenChars( rSet ); -} - -void AbstractSwRenameXNamedDlg_Impl::SetAlternativeAccess( - css::uno::Reference< css::container::XNameAccess > & xSecond, - css::uno::Reference< css::container::XNameAccess > & xThird ) -{ - m_xDlg->SetAlternativeAccess( xSecond, xThird); -} - -OUString AbstractGlossaryDlg_Impl::GetCurrGrpName() const -{ - return m_xDlg->GetCurrGrpName(); -} - -OUString AbstractGlossaryDlg_Impl::GetCurrShortName() const -{ - return m_xDlg->GetCurrShortName(); -} - -void AbstractFieldInputDlg_Impl::EndDialog(sal_Int32 n) -{ - m_xDlg->response(n); -} - -bool AbstractFieldInputDlg_Impl::PrevButtonPressed() const -{ - return m_xDlg->PrevButtonPressed(); -} - -bool AbstractFieldInputDlg_Impl::NextButtonPressed() const -{ - return m_xDlg->NextButtonPressed(); -} - -OUString AbstractInsFootNoteDlg_Impl::GetFontName() -{ - return m_xDlg->GetFontName(); -} - -int AbstractSwPageNumberDlg_Impl::GetPageNumberPosition() const -{ - return m_xDlg->GetPageNumberPosition(); -} - -int AbstractSwPageNumberDlg_Impl::GetPageNumberAlignment() const -{ - return m_xDlg->GetPageNumberAlignment(); -} - -bool AbstractSwPageNumberDlg_Impl::GetMirrorOnEvenPages() const -{ - return m_xDlg->GetMirrorOnEvenPages(); -} - -bool AbstractSwPageNumberDlg_Impl::GetIncludePageTotal() const -{ - return m_xDlg->GetIncludePageTotal(); -} - -bool AbstractSwPageNumberDlg_Impl::GetFitIntoExistingMargins() const -{ - return m_xDlg->GetFitIntoExistingMargins(); -} - -SvxNumType AbstractSwPageNumberDlg_Impl::GetPageNumberType() const -{ - return m_xDlg->GetPageNumberType(); -} - -void AbstractSwPageNumberDlg_Impl::SetPageNumberType(SvxNumType nSet) -{ - m_xDlg->SetPageNumberType(nSet); -} - -bool AbstractInsFootNoteDlg_Impl::IsEndNote() -{ - return m_xDlg->IsEndNote(); -} - -OUString AbstractInsFootNoteDlg_Impl::GetStr() -{ - return m_xDlg->GetStr(); -} - -void AbstractInsFootNoteDlg_Impl::SetHelpId(const OUString& rHelpId) -{ - m_xDlg->set_help_id(rHelpId); -} - -void AbstractInsFootNoteDlg_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -void AbstractInsTableDlg_Impl::GetValues( OUString& rName, sal_uInt16& rRow, sal_uInt16& rCol, - SwInsertTableOptions& rInsTableFlags, OUString& rTableAutoFormatName, - std::unique_ptr<SwTableAutoFormat>& prTAFormat ) -{ - SwInsTableDlg* pDlg = dynamic_cast<SwInsTableDlg*>(m_xDlg.get()); - if (pDlg) - pDlg->GetValues(rName, rRow, rCol, rInsTableFlags, rTableAutoFormatName, prTAFormat); -} - -OUString AbstractJavaEditDialog_Impl::GetScriptText() const -{ - return m_xDlg->GetScriptText(); -} - -OUString AbstractJavaEditDialog_Impl::GetScriptType() const -{ - return m_xDlg->GetScriptType(); -} - -bool AbstractJavaEditDialog_Impl::IsUrl() const -{ - return m_xDlg->IsUrl(); -} - -bool AbstractJavaEditDialog_Impl::IsNew() const -{ - return m_xDlg->IsNew(); -} - -bool AbstractJavaEditDialog_Impl::IsUpdate() const -{ - return m_xDlg->IsUpdate(); -} - -DBManagerOptions AbstractMailMergeDlg_Impl::GetMergeType() -{ - return m_xDlg->GetMergeType(); -} - -const OUString& AbstractMailMergeDlg_Impl::GetSaveFilter() const -{ - return m_xDlg->GetSaveFilter(); -} - -css::uno::Sequence< css::uno::Any > AbstractMailMergeDlg_Impl::GetSelection() const -{ - return m_xDlg->GetSelection(); -} - -uno::Reference< sdbc::XResultSet> AbstractMailMergeDlg_Impl::GetResultSet() const -{ - return m_xDlg->GetResultSet(); -} - -bool AbstractMailMergeDlg_Impl::IsSaveSingleDoc() const -{ - return m_xDlg->IsSaveSingleDoc(); -} - -bool AbstractMailMergeDlg_Impl::IsGenerateFromDataBase() const -{ - return m_xDlg->IsGenerateFromDataBase(); -} - -bool AbstractMailMergeDlg_Impl::IsFileEncryptedFromDataBase() const -{ - return m_xDlg->IsFileEncryptedFromDataBase(); -} - -OUString AbstractMailMergeDlg_Impl::GetColumnName() const -{ - return m_xDlg->GetColumnName(); -} - -OUString AbstractMailMergeDlg_Impl::GetPasswordColumnName() const -{ - return m_xDlg->GetPasswordColumnName(); -} - -OUString AbstractMailMergeDlg_Impl::GetTargetURL() const -{ - return m_xDlg->GetTargetURL(); -} - -bool AbstractMailMergeCreateFromDlg_Impl::IsThisDocument() const -{ - return m_xDlg->IsThisDocument(); -} - -bool AbstractMailMergeFieldConnectionsDlg_Impl::IsUseExistingConnections() const -{ - return m_xDlg->IsUseExistingConnections(); -} - -CurTOXType AbstractMultiTOXTabDialog_Impl::GetCurrentTOXType() const -{ - return m_xDlg->GetCurrentTOXType(); -} - -SwTOXDescription& AbstractMultiTOXTabDialog_Impl::GetTOXDescription(CurTOXType eTOXTypes) -{ - return m_xDlg->GetTOXDescription(eTOXTypes); -} +}; -const SfxItemSet* AbstractMultiTOXTabDialog_Impl::GetOutputItemSet() const +class AbstractSwBreakDlg_Impl : public AbstractSwBreakDlg { - return m_xDlg->GetOutputItemSet(); -} + std::shared_ptr<weld::DialogController> m_xDlg; -void AbstractEditRegionDlg_Impl::SelectSection(const OUString& rSectionName) -{ - m_xDlg->SelectSection(rSectionName); -} +public: + explicit AbstractSwBreakDlg_Impl(std::shared_ptr<weld::DialogController> p) + : m_xDlg(std::move(p)) + { + } + OUString GetTemplateName() override; + sal_uInt16 GetKind() override; + std::optional<sal_uInt16> GetPageNumber() override; + std::optional<SwLineBreakClear> GetClear() override; -void -AbstractInsertSectionTabDialog_Impl::SetSectionData(SwSectionData const& rSect) -{ - m_xDlg->SetSectionData(rSect); -} + std::shared_ptr<weld::DialogController> getDialogController() override { return m_xDlg; } +}; -void AbstractIndexMarkFloatDlg_Impl::ReInitDlg(SwWrtShell& rWrtShell) +class AbstractSwTranslateLangSelectDlg_Impl : public AbstractSwTranslateLangSelectDlg { - m_xDlg->ReInitDlg( rWrtShell); -} + std::shared_ptr<weld::DialogController> m_xDlg; -std::shared_ptr<SfxDialogController> AbstractIndexMarkFloatDlg_Impl::GetController() -{ - return m_xDlg; -} +public: + explicit AbstractSwTranslateLangSelectDlg_Impl(std::shared_ptr<weld::DialogController> p) + : m_xDlg(std::move(p)) + { + } -void AbstractAuthMarkFloatDlg_Impl::ReInitDlg(SwWrtShell& rWrtShell) -{ - m_xDlg->ReInitDlg(rWrtShell); -} + std::shared_ptr<weld::DialogController> getDialogController() override { return m_xDlg; } + std::optional<SwLanguageListItem> GetSelectedLanguage() override; +}; -std::shared_ptr<SfxDialogController> AbstractAuthMarkFloatDlg_Impl::GetController() +class AbstractInsTableDlg_Impl : public AbstractInsTableDlg { - return m_xDlg; -} + std::shared_ptr<weld::DialogController> m_xDlg; -std::shared_ptr<SfxDialogController> AbstractSwWordCountFloatDlg_Impl::GetController() -{ - return m_xDlg; +public: + explicit AbstractInsTableDlg_Impl(std::shared_ptr<weld::DialogController> p) + : m_xDlg(std::move(p)) + { + } + void GetValues(OUString& rName, sal_uInt16& rRow, sal_uInt16& rCol, + SwInsertTableOptions& rInsTableFlags, OUString& rTableAutoFormatName, + std::unique_ptr<SwTableAutoFormat>& prTAFormat) override; + std::shared_ptr<weld::DialogController> getDialogController() override { return m_xDlg; } +}; } -void AbstractSwWordCountFloatDlg_Impl::UpdateCounts() +OUString AbstractSwBreakDlg_Impl::GetTemplateName() { - m_xDlg->UpdateCounts(); -} + SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); + if (pDlg) + return pDlg->GetTemplateName(); -void AbstractSwWordCountFloatDlg_Impl::SetCounts(const SwDocStat &rCurrCnt, const SwDocStat &rDocStat) -{ - m_xDlg->SetCounts(rCurrCnt, rDocStat); + return u""_ustr; } -AbstractMailMergeWizard_Impl::~AbstractMailMergeWizard_Impl() +sal_uInt16 AbstractSwBreakDlg_Impl:: GetKind() { -} + SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); + if (pDlg) + return pDlg->GetKind(); -bool AbstractMailMergeWizard_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - // SwMailMergeWizardExecutor wants to run the lifecycle of this dialog - // so clear mxOwner here and leave it up to SwMailMergeWizardExecutor - rCtx.mxOwner.clear(); - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); + return 0; } -short AbstractMailMergeWizard_Impl::Execute() +::std::optional<sal_uInt16> AbstractSwBreakDlg_Impl:: GetPageNumber() { - return m_xDlg->run(); -} + SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); + if (pDlg) + return pDlg->GetPageNumber(); -OUString AbstractMailMergeWizard_Impl::GetReloadDocument() const -{ - return m_xDlg->GetReloadDocument(); + return 0; } -void AbstractMailMergeWizard_Impl::ShowPage( sal_uInt16 nLevel ) +std::optional<SwLineBreakClear> AbstractSwBreakDlg_Impl::GetClear() { - m_xDlg->skipUntil(nLevel); + SwBreakDlg* pDlg = dynamic_cast<SwBreakDlg*>(m_xDlg.get()); + if (pDlg) + return pDlg->GetClear(); + + return SwLineBreakClear::NONE; } -sal_uInt16 AbstractMailMergeWizard_Impl::GetRestartPage() const +void AbstractInsTableDlg_Impl::GetValues( OUString& rName, sal_uInt16& rRow, sal_uInt16& rCol, + SwInsertTableOptions& rInsTableFlags, OUString& rTableAutoFormatName, + std::unique_ptr<SwTableAutoFormat>& prTAFormat ) { - return m_xDlg->GetRestartPage(); + SwInsTableDlg* pDlg = dynamic_cast<SwInsTableDlg*>(m_xDlg.get()); + if (pDlg) + pDlg->GetValues(rName, rRow, rCol, rInsTableFlags, rTableAutoFormatName, prTAFormat); } std::optional<SwLanguageListItem> AbstractSwTranslateLangSelectDlg_Impl::GetSelectedLanguage() @@ -1005,69 +213,113 @@ std::optional<SwLanguageListItem> AbstractSwTranslateLangSelectDlg_Impl::GetSele #endif } -short AbstractChangeDbDialog_Impl::Execute() +namespace { - assert(false); - return -1; +class AbstractSwInsertAbstractDlg_Impl + : public AbstractDialogImpl_NoSync<AbstractSwInsertAbstractDlg, SwInsertAbstractDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + sal_uInt8 GetLevel() const override { return m_pDlg->GetLevel(); } + sal_uInt8 GetPara() const override { return m_pDlg->GetPara(); } +}; } -bool AbstractChangeDbDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) +VclPtr<AbstractSwInsertAbstractDlg> SwAbstractDialogFactory_Impl::CreateSwInsertAbstractDlg(weld::Window* pParent) { - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); + return VclPtr<AbstractSwInsertAbstractDlg_Impl>::Create(pParent); } -VclPtr<AbstractSwInsertAbstractDlg> SwAbstractDialogFactory_Impl::CreateSwInsertAbstractDlg(weld::Window* pParent) +namespace +{ +template <class Dialog> +class SwAbstractSfxController_Impl : public vcl::AbstractDialogImpl_Async<SfxAbstractDialog, Dialog> { - return VclPtr<AbstractSwInsertAbstractDlg_Impl>::Create(std::make_unique<SwInsertAbstractDlg>(pParent)); +public: + using vcl::AbstractDialogImpl_Async<SfxAbstractDialog, Dialog>::AbstractDialogImpl_Async; + const SfxItemSet* GetOutputItemSet() const override { return this->m_pDlg->GetOutputItemSet(); } + void SetText(const OUString& rStr) override { this->m_pDlg->set_title(rStr); } +}; } VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwAddressAbstractDlg(weld::Window* pParent, const SfxItemSet& rSet) { - return VclPtr<SwAbstractSfxController_Impl>::Create(std::make_unique<SwAddrDlg>(pParent, rSet)); + return VclPtr<SwAbstractSfxController_Impl<SwAddrDlg>>::Create(pParent, rSet); } VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwDropCapsDialog(weld::Window* pParent, const SfxItemSet& rSet) { - return VclPtr<SwAbstractSfxController_Impl>::Create(std::make_unique<SwDropCapsDlg>(pParent, rSet)); + return VclPtr<SwAbstractSfxController_Impl<SwDropCapsDlg>>::Create(pParent, rSet); } VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwBackgroundDialog(weld::Window* pParent, const SfxItemSet& rSet) { - return VclPtr<SwAbstractSfxController_Impl>::Create(std::make_unique<SwBackgroundDlg>(pParent, rSet)); + return VclPtr<SwAbstractSfxController_Impl<SwBackgroundDlg>>::Create(pParent, rSet); +} + +namespace +{ +class AbstractNumFormatDlg_Impl + : public vcl::AbstractDialogImpl_Async<SfxAbstractDialog, SwNumFormatDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } +}; } VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateNumFormatDialog(weld::Widget* pParent, const SfxItemSet& rSet) { - return VclPtr<AbstractNumFormatDlg_Impl>::Create(std::make_shared<SwNumFormatDlg>(pParent, rSet)); + return VclPtr<AbstractNumFormatDlg_Impl>::Create(pParent, rSet); +} + +namespace +{ +class AbstractSwAsciiFilterDlg_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractSwAsciiFilterDlg, SwAsciiFilterDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void FillOptions(SwAsciiOptions& rOptions) override { m_pDlg->FillOptions(rOptions); } +}; } VclPtr<AbstractSwAsciiFilterDlg> SwAbstractDialogFactory_Impl::CreateSwAsciiFilterDlg(weld::Window* pParent, SwDocShell& rDocSh, SvStream* pStream) { - return VclPtr<AbstractSwAsciiFilterDlg_Impl>::Create(std::make_unique<SwAsciiFilterDlg>(pParent, rDocSh, pStream)); + return VclPtr<AbstractSwAsciiFilterDlg_Impl>::Create(pParent, rDocSh, pStream); +} + +namespace +{ +template <class Dialog> +using AbstractGenericDialog_Impl = vcl::AbstractDialogImpl_Async<VclAbstractDialog, Dialog>; } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwInsertBookmarkDlg(weld::Window *pParent, SwWrtShell &rSh, OUString const*const pSelected) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwInsertBookmarkDlg>(pParent, rSh, pSelected)); + return VclPtr<AbstractGenericDialog_Impl<SwInsertBookmarkDlg>>::Create(pParent, rSh, pSelected); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwContentControlDlg(weld::Window* pParent, SwWrtShell &rSh) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwContentControlDlg>(pParent, rSh)); + return VclPtr<AbstractGenericDialog_Impl<SwContentControlDlg>>::Create(pParent, rSh); } VclPtr<AbstractSwContentControlListItemDlg> SwAbstractDialogFactory_Impl::CreateSwContentControlListItemDlg(weld::Window* pParent, SwContentControlListItem& rItem) { - return VclPtr<AbstractSwContentControlListItemDlg_Impl>::Create( - std::make_shared<SwContentControlListItemDlg>(pParent, rItem)); + using AbstractSwContentControlListItemDlg_Impl + = vcl::AbstractDialogImpl_Async<AbstractSwContentControlListItemDlg, + SwContentControlListItemDlg>; + return VclPtr<AbstractSwContentControlListItemDlg_Impl>::Create(pParent, rItem); } std::shared_ptr<AbstractSwBreakDlg> SwAbstractDialogFactory_Impl::CreateSwBreakDlg(weld::Window* pParent, SwWrtShell &rSh) @@ -1086,31 +338,99 @@ std::shared_ptr<AbstractSwTranslateLangSelectDlg> SwAbstractDialogFactory_Impl:: #endif } +namespace +{ +class AbstractChangeDbDialog_Impl + : public AbstractDialogImpl_NoSync<AbstractChangeDbDialog, SwChangeDBDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + virtual void UpdateFields() override { m_pDlg->UpdateFields(); } +}; +} + VclPtr<AbstractChangeDbDialog> SwAbstractDialogFactory_Impl::CreateSwChangeDBDlg(SwView& rVw) { #if HAVE_FEATURE_DBCONNECTIVITY && !ENABLE_FUZZERS - return VclPtr<AbstractChangeDbDialog_Impl>::Create(std::make_shared<SwChangeDBDlg>(rVw)); + return VclPtr<AbstractChangeDbDialog_Impl>::Create(rVw); #else (void) rVw; return nullptr; #endif } +namespace +{ +template<class AbstractTabDialog_t, class Dialog> +class AbstractTabController_Impl_BASE + : public vcl::AbstractDialogImpl_Async<AbstractTabDialog_t, Dialog> +{ +public: + using vcl::AbstractDialogImpl_Async<AbstractTabDialog_t, Dialog>::AbstractDialogImpl_Async; + void SetCurPageId(const OUString& rName) override { this->m_pDlg->SetCurPageId(rName); } + const SfxItemSet* GetOutputItemSet() const override { return this->m_pDlg->GetOutputItemSet(); } + WhichRangesContainer GetInputRanges(const SfxItemPool& pItem) override + { + return this->m_pDlg->GetInputRanges(pItem); + } + void SetInputSet(const SfxItemSet* pInSet) override { this->m_pDlg->SetInputSet(pInSet); } + // From class Window. + void SetText(const OUString& rStr) override { this->m_pDlg->set_title(rStr); } +}; + +template <class Dialog> +using AbstractTabController_Impl = AbstractTabController_Impl_BASE<SfxAbstractTabDialog, Dialog>; +} + VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwCharDlg(weld::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, SwCharDlgMode nDialogMode, const OUString* pFormatStr) { - return VclPtr<AbstractTabController_Impl>::Create(std::make_shared<SwCharDlg>(pParent, pVw, rCoreSet, nDialogMode, pFormatStr)); + return VclPtr<AbstractTabController_Impl<SwCharDlg>>::Create(pParent, pVw, rCoreSet, nDialogMode, pFormatStr); +} + +namespace +{ +class AbstractSwConvertTableDlg_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractSwConvertTableDlg, SwConvertTableDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void GetValues(sal_Unicode& rDelim, SwInsertTableOptions& rInsTableFlags, + SwTableAutoFormat const*& prTAFormat) override + { + m_pDlg->GetValues(rDelim, rInsTableFlags, prTAFormat); + } +}; } VclPtr<AbstractSwConvertTableDlg> SwAbstractDialogFactory_Impl::CreateSwConvertTableDlg(SwView& rView, bool bToTable) { - return VclPtr<AbstractSwConvertTableDlg_Impl>::Create(std::make_unique<SwConvertTableDlg>(rView, bToTable)); + return VclPtr<AbstractSwConvertTableDlg_Impl>::Create(rView, bToTable); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwCaptionDialog(weld::Window *pParent, SwView &rV) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwCaptionDialog>(pParent, rV)); + return VclPtr<AbstractGenericDialog_Impl<SwCaptionDialog>>::Create(pParent, rV); +} + +#if HAVE_FEATURE_DBCONNECTIVITY && !ENABLE_FUZZERS +namespace +{ +class AbstractSwInsertDBColAutoPilot_Impl + : public AbstractDialogImpl_NoSync<AbstractSwInsertDBColAutoPilot, SwInsertDBColAutoPilot> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void DataToDoc(const css::uno::Sequence<css::uno::Any>& rSelection, + css::uno::Reference<css::sdbc::XDataSource> rxSource, + css::uno::Reference<css::sdbc::XConnection> xConnection, + css::uno::Reference<css::sdbc::XResultSet> xResultSet) override + { + m_pDlg->DataToDoc(rSelection, rxSource, xConnection, xResultSet); + } +}; } +#endif VclPtr<AbstractSwInsertDBColAutoPilot> SwAbstractDialogFactory_Impl::CreateSwInsertDBColAutoPilot( SwView& rView, uno::Reference< sdbc::XDataSource> rxSource, @@ -1118,7 +438,7 @@ VclPtr<AbstractSwInsertDBColAutoPilot> SwAbstractDialogFactory_Impl::CreateSwIns const SwDBData& rData) { #if HAVE_FEATURE_DBCONNECTIVITY && !ENABLE_FUZZERS - return VclPtr<AbstractSwInsertDBColAutoPilot_Impl>::Create(std::make_unique<SwInsertDBColAutoPilot>(rView, rxSource, xColSupp, rData)); + return VclPtr<AbstractSwInsertDBColAutoPilot_Impl>::Create(rView, rxSource, xColSupp, rData); #else (void) rView; (void) rxSource; @@ -1130,36 +450,90 @@ VclPtr<AbstractSwInsertDBColAutoPilot> SwAbstractDialogFactory_Impl::CreateSwIns VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwFootNoteOptionDlg(weld::Window *pParent, SwWrtShell &rSh) { - return VclPtr<AbstractTabController_Impl>::Create(std::make_shared<SwFootNoteOptionDlg>(pParent, rSh)); + return VclPtr<AbstractTabController_Impl<SwFootNoteOptionDlg>>::Create(pParent, rSh); +} + +namespace +{ +class AbstractDropDownFieldDialog_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractDropDownFieldDialog, sw::DropDownFieldDialog> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + bool PrevButtonPressed() const override { return m_pDlg->PrevButtonPressed(); } + bool NextButtonPressed() const override { return m_pDlg->NextButtonPressed(); } +}; } VclPtr<AbstractDropDownFieldDialog> SwAbstractDialogFactory_Impl::CreateDropDownFieldDialog(weld::Widget *pParent, SwWrtShell &rSh, SwField* pField, bool bPrevButton, bool bNextButton) { - return VclPtr<AbstractDropDownFieldDialog_Impl>::Create(std::make_unique<sw::DropDownFieldDialog>(pParent, rSh, pField, bPrevButton, bNextButton)); + return VclPtr<AbstractDropDownFieldDialog_Impl>::Create(pParent, rSh, pField, bPrevButton, bNextButton); +} + +namespace +{ +class AbstractDropDownFormFieldDialog_Impl + : public AbstractDialogImpl_NoSync<AbstractDropDownFormFieldDialog, sw::DropDownFormFieldDialog> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void Apply() override { m_pDlg->Apply(); } +}; } VclPtr<AbstractDropDownFormFieldDialog> SwAbstractDialogFactory_Impl::CreateDropDownFormFieldDialog(weld::Widget *pParent, sw::mark::Fieldmark* pDropDownField) { - return VclPtr<AbstractDropDownFormFieldDialog_Impl>::Create(std::make_unique<sw::DropDownFormFieldDialog>(pParent, pDropDownField)); + return VclPtr<AbstractDropDownFormFieldDialog_Impl>::Create(pParent, pDropDownField); +} + +namespace +{ +class AbstractDateFormFieldDialog_Impl + : public AbstractDialogImpl_NoSync<AbstractDateFormFieldDialog, sw::DateFormFieldDialog> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void Apply() override { m_pDlg->Apply(); } +}; } VclPtr<AbstractDateFormFieldDialog> SwAbstractDialogFactory_Impl::CreateDateFormFieldDialog(weld::Widget *pParent, sw::mark::DateFieldmark* pDateField, SwDoc& rDoc) { - return VclPtr<AbstractDateFormFieldDialog_Impl>::Create(std::make_unique<sw::DateFormFieldDialog>(pParent, pDateField, rDoc)); + return VclPtr<AbstractDateFormFieldDialog_Impl>::Create(pParent, pDateField, rDoc); } VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwEnvDlg(weld::Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, bool bInsert) { - return VclPtr<AbstractTabController_Impl>::Create(std::make_shared<SwEnvDlg>(pParent, rSet, pWrtSh,pPrt, bInsert)); + return VclPtr<AbstractTabController_Impl<SwEnvDlg>>::Create(pParent, rSet, pWrtSh,pPrt, bInsert); +} + +namespace +{ +class AbstractSwLabDlg_Impl : public vcl::AbstractDialogImpl_Sync<AbstractSwLabDlg, SwLabDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void SetCurPageId(const OUString& rName) override { m_pDlg->SetCurPageId(rName); } + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } + WhichRangesContainer GetInputRanges(const SfxItemPool& pItem) override + { + return m_pDlg->GetInputRanges(pItem); + } + void SetInputSet(const SfxItemSet* pInSet) override { m_pDlg->SetInputSet(pInSet); } + // From class Window. + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } + const OUString& GetBusinessCardStr() const override { return m_pDlg->GetBusinessCardStr(); } + Printer* GetPrt() override { return m_pDlg->GetPrt(); } +}; } VclPtr<AbstractSwLabDlg> SwAbstractDialogFactory_Impl::CreateSwLabDlg(weld::Window* pParent, const SfxItemSet& rSet, SwDBManager* pDBManager, bool bLabel) { - return VclPtr<AbstractSwLabDlg_Impl>::Create(std::make_unique<SwLabDlg>(pParent, rSet, pDBManager, bLabel)); + return VclPtr<AbstractSwLabDlg_Impl>::Create(pParent, rSet, pDBManager, bLabel); } SwLabDlgMethod SwAbstractDialogFactory_Impl::GetSwLabDlgStaticMethod () @@ -1172,70 +546,178 @@ VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwParaDlg(weld: bool bDraw , const OUString& sDefPage) { - return VclPtr<AbstractTabController_Impl>::Create(std::make_shared<SwParaDlg>(pParent, rVw, rCoreSet, DLG_STD, nullptr, bDraw, sDefPage)); + return VclPtr<AbstractTabController_Impl<SwParaDlg>>::Create(pParent, rVw, rCoreSet, DLG_STD, nullptr, bDraw, sDefPage); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwAutoMarkDialog(weld::Window *pParent, SwWrtShell &rSh) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwAuthMarkModalDlg>(pParent, rSh)); + return VclPtr<AbstractGenericDialog_Impl<SwAuthMarkModalDlg>>::Create(pParent, rSh); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwColumnDialog(weld::Window *pParent, SwWrtShell &rSh) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwColumnDlg>(pParent, rSh)); + return VclPtr<AbstractGenericDialog_Impl<SwColumnDlg>>::Create(pParent, rSh); +} + +namespace +{ +class AbstractSwTableHeightDlg_Impl + : public AbstractDialogImpl_NoSync<AbstractSwTableHeightDlg, SwTableHeightDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void Apply() override { m_pDlg->Apply(); } +}; } VclPtr<AbstractSwTableHeightDlg> SwAbstractDialogFactory_Impl::CreateSwTableHeightDialog(weld::Window *pParent, SwWrtShell &rSh) { - return VclPtr<AbstractSwTableHeightDlg_Impl>::Create(std::make_unique<SwTableHeightDlg>(pParent, rSh)); + return VclPtr<AbstractSwTableHeightDlg_Impl>::Create(pParent, rSh); +} + +namespace +{ +class AbstractSwSortDlg_Impl : public AbstractDialogImpl_NoSync<AbstractSwSortDlg, SwSortDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void Apply() override { m_pDlg->Apply(); } +}; } VclPtr<AbstractSwSortDlg> SwAbstractDialogFactory_Impl::CreateSwSortingDialog(weld::Window *pParent, SwWrtShell &rSh) { - return VclPtr<AbstractSwSortDlg_Impl>::Create(std::make_unique<SwSortDlg>(pParent, rSh)); + return VclPtr<AbstractSwSortDlg_Impl>::Create(pParent, rSh); +} + +namespace +{ +class AbstractSplitTableDialog_Impl + : public vcl::AbstractDialogImpl_Async<AbstractSplitTableDialog, SwSplitTableDlg> // add for +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + SplitTable_HeadlineOption GetSplitMode() override { return m_pDlg->GetSplitMode(); } +}; } VclPtr<AbstractSplitTableDialog> SwAbstractDialogFactory_Impl::CreateSplitTableDialog(weld::Window *pParent, SwWrtShell &rSh) { - return VclPtr<AbstractSplitTableDialog_Impl>::Create(std::make_shared<SwSplitTableDlg>(pParent, rSh)); + return VclPtr<AbstractSplitTableDialog_Impl>::Create(pParent, rSh); +} + +namespace +{ +class AbstractSwSelGlossaryDlg_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractSwSelGlossaryDlg, SwSelGlossaryDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void InsertGlos(const OUString& rRegion, const OUString& rGlosName) override + { + m_pDlg->InsertGlos(rRegion, rGlosName); + } + sal_Int32 GetSelectedIdx() const override { return m_pDlg->GetSelectedIdx(); } + void SelectEntryPos(sal_Int32 nIdx) override { m_pDlg->SelectEntryPos(nIdx); } +}; } VclPtr<AbstractSwSelGlossaryDlg> SwAbstractDialogFactory_Impl::CreateSwSelGlossaryDlg(weld::Window *pParent, const OUString &rShortName) { - return VclPtr<AbstractSwSelGlossaryDlg_Impl>::Create(std::make_unique<SwSelGlossaryDlg>(pParent, rShortName)); + return VclPtr<AbstractSwSelGlossaryDlg_Impl>::Create(pParent, rShortName); +} + +namespace +{ +class AbstractSwAutoFormatDlg_Impl + : public AbstractDialogImpl_NoSync<AbstractSwAutoFormatDlg, SwAutoFormatDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + std::unique_ptr<SwTableAutoFormat> FillAutoFormatOfIndex() const override + { + return m_pDlg->FillAutoFormatOfIndex(); + } + void Apply() override { m_pDlg->Apply(); } +}; } VclPtr<AbstractSwAutoFormatDlg> SwAbstractDialogFactory_Impl::CreateSwAutoFormatDlg(weld::Window* pParent, SwWrtShell* pShell, bool bSetAutoFormat, const SwTableAutoFormat* pSelFormat) { - return VclPtr<AbstractSwAutoFormatDlg_Impl>::Create( - std::make_shared<SwAutoFormatDlg>(pParent, pShell, bSetAutoFormat, pSelFormat)); + return VclPtr<AbstractSwAutoFormatDlg_Impl>::Create(pParent, pShell, bSetAutoFormat, pSelFormat); } VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwBorderDlg(weld::Window* pParent, SfxItemSet& rSet, SwBorderModes nType ) { - return VclPtr<SwAbstractSfxController_Impl>::Create(std::make_unique<SwBorderDlg>(pParent, rSet, nType)); + return VclPtr<SwAbstractSfxController_Impl<SwBorderDlg>>::Create(pParent, rSet, nType); } VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwWrapDlg(weld::Window* pParent, const SfxItemSet& rSet, SwWrtShell* pSh) { - return VclPtr<SwAbstractSfxController_Impl>::Create(std::make_unique<SwWrapDlg>(pParent, rSet, pSh, true/*bDrawMode*/)); + return VclPtr<SwAbstractSfxController_Impl<SwWrapDlg>>::Create(pParent, rSet, pSh, true/*bDrawMode*/); +} + +namespace +{ +class AbstractSwTableWidthDlg_Impl + : public AbstractDialogImpl_NoSync<AbstractSwTableWidthDlg, SwTableWidthDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void Apply() override { m_pDlg->Apply(); } +}; } VclPtr<AbstractSwTableWidthDlg> SwAbstractDialogFactory_Impl::CreateSwTableWidthDlg(weld::Window *pParent, SwWrtShell *pShell) { - return VclPtr<AbstractSwTableWidthDlg_Impl>::Create(std::make_unique<SwTableWidthDlg>(pParent, pShell)); + return VclPtr<AbstractSwTableWidthDlg_Impl>::Create(pParent, pShell); } VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwTableTabDlg(weld::Window* pParent, const SfxItemSet* pItemSet, SwWrtShell* pSh) { - return VclPtr<AbstractTabController_Impl>::Create(std::make_shared<SwTableTabDlg>(pParent, pItemSet, pSh)); + return VclPtr<AbstractTabController_Impl<SwTableTabDlg>>::Create(pParent, pItemSet, pSh); +} + +namespace +{ +class AbstractSwFieldDlg_Impl : public vcl::AbstractDialogImpl_Async<AbstractSwFieldDlg, SwFieldDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + bool StartExecuteAsync(AsyncContext& rCtx) override; + void SetCurPageId(const OUString& rName) override { m_pDlg->SetCurPageId(rName); } + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } + WhichRangesContainer GetInputRanges(const SfxItemPool& pItem) override + { + return m_pDlg->GetInputRanges(pItem); + } + void SetInputSet(const SfxItemSet* pInSet) override { m_pDlg->SetInputSet(pInSet); } + // From class Window. + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } + void ShowReferencePage() override { m_pDlg->ShowReferencePage(); } + void Initialize(SfxChildWinInfo* pInfo) override { m_pDlg->Initialize(pInfo); } + void ReInitDlg() override { m_pDlg->ReInitDlg(); } + void ActivateDatabasePage() override { m_pDlg->ActivateDatabasePage(); } + std::shared_ptr<SfxDialogController> GetController() override { return m_pDlg; } +}; + +bool AbstractSwFieldDlg_Impl::StartExecuteAsync(AsyncContext& rCtx) +{ + return SfxTabDialogController::runAsync(m_pDlg, + [rCtx, pDlg = m_pDlg](sal_Int32 nResult) + { + pDlg->Close(); + if (rCtx.isSet()) + rCtx.maEndDialogFn(nResult); + }); +} } VclPtr<AbstractSwFieldDlg> SwAbstractDialogFactory_Impl::CreateSwFieldDlg(SfxBindings* pB, SwChildWinWrapper* pCW, weld::Window *pParent) { - return VclPtr<AbstractSwFieldDlg_Impl>::Create(std::make_shared<SwFieldDlg>(pB, pCW, pParent)); + return VclPtr<AbstractSwFieldDlg_Impl>::Create(pB, pCW, pParent); } VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwFieldEditDlg(SwView& rVw) @@ -1244,29 +726,67 @@ VclPtr<SfxAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwFieldEditDlg(SwV // without TabPage no dialog if (!xDlg->GetTabPage()) return nullptr; - return VclPtr<SwAbstractSfxController_Impl>::Create(std::move(xDlg)); + return VclPtr<SwAbstractSfxController_Impl<SwFieldEditDlg>>::Create(std::move(xDlg)); +} + +namespace +{ +class AbstractSwRenameXNamedDlg_Impl + : public vcl::AbstractDialogImpl_Async<AbstractSwRenameXNamedDlg, SwRenameXNamedDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void SetForbiddenChars(const OUString& rSet) override { m_pDlg->SetForbiddenChars(rSet); } + void SetAlternativeAccess(css::uno::Reference<css::container::XNameAccess>& xSecond, + css::uno::Reference<css::container::XNameAccess>& xThird) override + { + m_pDlg->SetAlternativeAccess(xSecond, xThird); + } +}; } VclPtr<AbstractSwRenameXNamedDlg> SwAbstractDialogFactory_Impl::CreateSwRenameXNamedDlg(weld::Widget* pParent, css::uno::Reference< css::container::XNamed > & xNamed, css::uno::Reference< css::container::XNameAccess > & xNameAccess) { - return VclPtr<AbstractSwRenameXNamedDlg_Impl>::Create(std::make_unique<SwRenameXNamedDlg>(pParent,xNamed, xNameAccess)); + return VclPtr<AbstractSwRenameXNamedDlg_Impl>::Create(pParent,xNamed, xNameAccess); } VclPtr<AbstractSwModalRedlineAcceptDlg> SwAbstractDialogFactory_Impl::CreateSwModalRedlineAcceptDlg(weld::Window *pParent) { - return VclPtr<AbstractSwModalRedlineAcceptDlg_Impl>::Create(std::make_unique<SwModalRedlineAcceptDlg>(pParent)); + using AbstractSwModalRedlineAcceptDlg_Impl + = AbstractDialogImpl_NoSync<AbstractSwModalRedlineAcceptDlg, SwModalRedlineAcceptDlg>; + return VclPtr<AbstractSwModalRedlineAcceptDlg_Impl>::Create(pParent); +} + +namespace +{ +/// Interface implementation for the insert -> fields -> page number wizard dialog +class AbstractSwPageNumberDlg_Impl + : public vcl::AbstractDialogImpl_Async<AbstractSwPageNumberDlg, SwPageNumberDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + int GetPageNumberPosition() const override { return m_pDlg->GetPageNumberPosition(); }; + int GetPageNumberAlignment() const override { return m_pDlg->GetPageNumberAlignment(); } + bool GetMirrorOnEvenPages() const override { return m_pDlg->GetMirrorOnEvenPages(); } + bool GetIncludePageTotal() const override { return m_pDlg->GetIncludePageTotal(); } + bool GetFitIntoExistingMargins() const override { return m_pDlg->GetFitIntoExistingMargins(); } + SvxNumType GetPageNumberType() const override { return m_pDlg->GetPageNumberType(); } + void SetPageNumberType(SvxNumType nSet) override { m_pDlg->SetPageNumberType(nSet); } +}; } VclPtr<AbstractSwPageNumberDlg> SwAbstractDialogFactory_Impl::CreateSwPageNumberDlg(weld::Window *pParent) { - return VclPtr<AbstractSwPageNumberDlg_Impl>::Create(std::make_shared<SwPageNumberDlg>(pParent)); + return VclPtr<AbstractSwPageNumberDlg_Impl>::Create(pParent); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateTableMergeDialog(weld::Window* pParent, bool& rWithPrev) { - return VclPtr<AbstractSwMergeTableDlg_Impl>::Create(std::make_unique<SwMergeTableDlg>(pParent, rWithPrev)); + using AbstractSwMergeTableDlg_Impl + = vcl::AbstractDialogImpl_Sync<VclAbstractDialog, SwMergeTableDlg>; + return VclPtr<AbstractSwMergeTableDlg_Impl>::Create(pParent, rWithPrev); } VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateFrameTabDialog(const OUString &rDialogType, @@ -1275,7 +795,37 @@ VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateFrameTabDialog( bool bNewFrame, const OUString& sDefPage ) { - return VclPtr<AbstractTabController_Impl>::Create(std::make_shared<SwFrameDlg>(rFrame, pParent, rCoreSet, bNewFrame, rDialogType, false/*bFormat*/, sDefPage, nullptr)); + return VclPtr<AbstractTabController_Impl<SwFrameDlg>>::Create(rFrame, pParent, rCoreSet, bNewFrame, rDialogType, false/*bFormat*/, sDefPage, nullptr); +} + +namespace +{ +class AbstractApplyTabController_Impl + : public AbstractTabController_Impl_BASE<SfxAbstractApplyTabDialog, SwTemplateDlgController> +{ +public: + using AbstractTabController_Impl_BASE::AbstractTabController_Impl_BASE; + DECL_LINK(ApplyHdl, weld::Button&, void); + +private: + Link<LinkParamNone*, void> m_aHandler; + void SetApplyHdl(const Link<LinkParamNone*, void>& rLink) override; +}; + +IMPL_LINK_NOARG(AbstractApplyTabController_Impl, ApplyHdl, weld::Button&, void) +{ + if (m_pDlg->Apply()) + { + m_aHandler.Call(nullptr); + m_pDlg->Applied(); + } +} + +void AbstractApplyTabController_Impl::SetApplyHdl(const Link<LinkParamNone*, void>& rLink) +{ + m_aHandler = rLink; + m_pDlg->SetApplyHandler(LINK(this, AbstractApplyTabController_Impl, ApplyHdl)); +} } VclPtr<SfxAbstractApplyTabDialog> SwAbstractDialogFactory_Impl::CreateTemplateDialog( @@ -1286,36 +836,78 @@ VclPtr<SfxAbstractApplyTabDialog> SwAbstractDialogFactory_Impl::CreateTemplateDi SwWrtShell* pActShell, bool bNew ) { - return VclPtr<AbstractApplyTabController_Impl>::Create(std::make_shared<SwTemplateDlgController>(pParent, rBase, nRegion, - sPage, pActShell, bNew)); + return VclPtr<AbstractApplyTabController_Impl>::Create(pParent, rBase, nRegion, sPage, pActShell, bNew); +} + +namespace +{ +class AbstractGlossaryDlg_Impl + : public AbstractDialogImpl_NoSync<AbstractGlossaryDlg, SwGlossaryDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void Apply() override { m_pDlg->Apply(); } + OUString GetCurrGrpName() const override { return m_pDlg->GetCurrGrpName(); } + OUString GetCurrShortName() const override { return m_pDlg->GetCurrShortName(); } +}; } VclPtr<AbstractGlossaryDlg> SwAbstractDialogFactory_Impl::CreateGlossaryDlg(SfxViewFrame& rViewFrame, SwGlossaryHdl* pGlosHdl, SwWrtShell *pWrtShell) { - return VclPtr<AbstractGlossaryDlg_Impl>::Create(std::make_unique<SwGlossaryDlg>(rViewFrame, pGlosHdl, pWrtShell)); + return VclPtr<AbstractGlossaryDlg_Impl>::Create(rViewFrame, pGlosHdl, pWrtShell); +} + +namespace +{ +class AbstractFieldInputDlg_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractFieldInputDlg, SwFieldInputDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void EndDialog(sal_Int32 n) override { m_pDlg->response(n); } + bool PrevButtonPressed() const override { return m_pDlg->PrevButtonPressed(); } + bool NextButtonPressed() const override { return m_pDlg->NextButtonPressed(); } +}; } VclPtr<AbstractFieldInputDlg> SwAbstractDialogFactory_Impl::CreateFieldInputDlg(weld::Widget *pParent, SwWrtShell &rSh, SwField* pField, bool bPrevButton, bool bNextButton) { - return VclPtr<AbstractFieldInputDlg_Impl>::Create(std::make_unique<SwFieldInputDlg>(pParent, rSh, pField, bPrevButton, bNextButton)); + return VclPtr<AbstractFieldInputDlg_Impl>::Create(pParent, rSh, pField, bPrevButton, bNextButton); +} + +namespace +{ +class AbstractInsFootNoteDlg_Impl + : public AbstractDialogImpl_NoSync<AbstractInsFootNoteDlg, SwInsFootNoteDlg> +{ +public: + using AbstractDialogImpl_NoSync::AbstractDialogImpl_NoSync; + void Apply() override { m_pDlg->Apply(); } + OUString GetFontName() override { return m_pDlg->GetFontName(); } + bool IsEndNote() override { return m_pDlg->IsEndNote(); } + OUString GetStr() override { return m_pDlg->GetStr(); } + // from class Window + void SetHelpId(const OUString& sHelpId) override { m_pDlg->set_help_id(sHelpId); } + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } +}; } VclPtr<AbstractInsFootNoteDlg> SwAbstractDialogFactory_Impl::CreateInsFootNoteDlg( weld::Window * pParent, SwWrtShell &rSh, bool bEd ) { - return VclPtr<AbstractInsFootNoteDlg_Impl>::Create(std::make_unique<SwInsFootNoteDlg>(pParent, rSh, bEd)); + return VclPtr<AbstractInsFootNoteDlg_Impl>::Create(pParent, rSh, bEd); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateTitlePageDlg(weld::Window *pParent) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwTitlePageDlg>(pParent)); + return VclPtr<AbstractGenericDialog_Impl<SwTitlePageDlg>>::Create(pParent); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateVclSwViewDialog(SwView& rView) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwLineNumberingDlg>(rView)); + return VclPtr<AbstractGenericDialog_Impl<SwLineNumberingDlg>>::Create(rView); } std::shared_ptr<AbstractInsTableDlg> SwAbstractDialogFactory_Impl::CreateInsTableDlg(SwView& rView) @@ -1323,10 +915,54 @@ std::shared_ptr<AbstractInsTableDlg> SwAbstractDialogFactory_Impl::CreateInsTabl return std::make_shared<AbstractInsTableDlg_Impl>(std::make_shared<SwInsTableDlg>(rView)); } +namespace +{ +class AbstractJavaEditDialog_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractJavaEditDialog, SwJavaEditDialog> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + OUString GetScriptText() const override { return m_pDlg->GetScriptText(); } + OUString GetScriptType() const override { return m_pDlg->GetScriptType(); } + bool IsUrl() const override { return m_pDlg->IsUrl(); } + bool IsNew() const override { return m_pDlg->IsNew(); } + bool IsUpdate() const override { return m_pDlg->IsUpdate(); } +}; +} + VclPtr<AbstractJavaEditDialog> SwAbstractDialogFactory_Impl::CreateJavaEditDialog( weld::Window* pParent, SwWrtShell* pWrtSh) { - return VclPtr<AbstractJavaEditDialog_Impl>::Create(std::make_unique<SwJavaEditDialog>(pParent, pWrtSh)); + return VclPtr<AbstractJavaEditDialog_Impl>::Create(pParent, pWrtSh); +} + +namespace +{ +class AbstractMailMergeDlg_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractMailMergeDlg, SwMailMergeDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + DBManagerOptions GetMergeType() override { return m_pDlg->GetMergeType(); } + const OUString& GetSaveFilter() const override { return m_pDlg->GetSaveFilter(); } + css::uno::Sequence<css::uno::Any> GetSelection() const override + { + return m_pDlg->GetSelection(); + } + css::uno::Reference<css::sdbc::XResultSet> GetResultSet() const override + { + return m_pDlg->GetResultSet(); + } + bool IsSaveSingleDoc() const override { return m_pDlg->IsSaveSingleDoc(); } + bool IsGenerateFromDataBase() const override { return m_pDlg->IsGenerateFromDataBase(); } + bool IsFileEncryptedFromDataBase() const override + { + return m_pDlg->IsFileEncryptedFromDataBase(); + } + OUString GetColumnName() const override { return m_pDlg->GetColumnName(); } + OUString GetPasswordColumnName() const override { return m_pDlg->GetPasswordColumnName(); } + OUString GetTargetURL() const override { return m_pDlg->GetTargetURL(); } +}; } VclPtr<AbstractMailMergeDlg> SwAbstractDialogFactory_Impl::CreateMailMergeDlg( @@ -1336,53 +972,152 @@ VclPtr<AbstractMailMergeDlg> SwAbstractDialogFactory_Impl::CreateMailMergeDlg( sal_Int32 nCommandType, const uno::Reference< sdbc::XConnection>& xConnection ) { - return VclPtr<AbstractMailMergeDlg_Impl>::Create(std::make_unique<SwMailMergeDlg>(pParent, rSh, rSourceName, rTableName, nCommandType, xConnection, nullptr)); + return VclPtr<AbstractMailMergeDlg_Impl>::Create(pParent, rSh, rSourceName, rTableName, nCommandType, xConnection, nullptr); +} + +namespace +{ +class AbstractMailMergeCreateFromDlg_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractMailMergeCreateFromDlg, SwMailMergeCreateFromDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + bool IsThisDocument() const override { return m_pDlg->IsThisDocument(); } +}; } VclPtr<AbstractMailMergeCreateFromDlg> SwAbstractDialogFactory_Impl::CreateMailMergeCreateFromDlg(weld::Window* pParent) { - return VclPtr<AbstractMailMergeCreateFromDlg_Impl>::Create(std::make_unique<SwMailMergeCreateFromDlg>(pParent)); + return VclPtr<AbstractMailMergeCreateFromDlg_Impl>::Create(pParent); +} + +namespace +{ +class AbstractMailMergeFieldConnectionsDlg_Impl + : public vcl::AbstractDialogImpl_Sync<AbstractMailMergeFieldConnectionsDlg, + SwMailMergeFieldConnectionsDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + bool IsUseExistingConnections() const override { return m_pDlg->IsUseExistingConnections(); } +}; } VclPtr<AbstractMailMergeFieldConnectionsDlg> SwAbstractDialogFactory_Impl::CreateMailMergeFieldConnectionsDlg(weld::Window* pParent) { - return VclPtr<AbstractMailMergeFieldConnectionsDlg_Impl>::Create(std::make_unique<SwMailMergeFieldConnectionsDlg>(pParent)); + return VclPtr<AbstractMailMergeFieldConnectionsDlg_Impl>::Create(pParent); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateMultiTOXMarkDlg(weld::Window* pParent, SwTOXMgr &rTOXMgr) { - return VclPtr<AbstractMultiTOXMarkDlg_Impl>::Create(std::make_unique<SwMultiTOXMarkDlg>(pParent, rTOXMgr)); + using AbstractMultiTOXMarkDlg_Impl + = vcl::AbstractDialogImpl_Sync<VclAbstractDialog, SwMultiTOXMarkDlg>; + return VclPtr<AbstractMultiTOXMarkDlg_Impl>::Create(pParent, rTOXMgr); +} + +namespace +{ +class AbstractNumBulletDialog_Impl + : public vcl::AbstractDialogImpl_Async<AbstractNumBulletDialog, SwSvxNumBulletTabDialog> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void SetCurPageId(const OUString& rName) override { m_pDlg->SetCurPageId(rName); } + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } + const SfxItemSet* GetInputItemSet() const override { return m_pDlg->GetInputItemSet(); } + WhichRangesContainer GetInputRanges(const SfxItemPool& pItem) override + { + return m_pDlg->GetInputRanges(pItem); + } + void SetInputSet(const SfxItemSet* pInSet) override { m_pDlg->SetInputSet(pInSet); } + // From class Window. + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } +}; } VclPtr<AbstractNumBulletDialog> SwAbstractDialogFactory_Impl::CreateSvxNumBulletTabDialog(weld::Window* pParent, const SfxItemSet& rSwItemSet, SwWrtShell & rWrtSh) { - return VclPtr<AbstractNumBulletDialog_Impl>::Create(std::make_shared<SwSvxNumBulletTabDialog>(pParent, rSwItemSet, rWrtSh)); + return VclPtr<AbstractNumBulletDialog_Impl>::Create(pParent, rSwItemSet, rWrtSh); } VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateOutlineTabDialog(weld::Window* pParent, const SfxItemSet* pSwItemSet, SwWrtShell & rWrtSh ) { - return VclPtr<AbstractTabController_Impl>::Create(std::make_shared<SwOutlineTabDialog>(pParent, pSwItemSet, rWrtSh)); + return VclPtr<AbstractTabController_Impl<SwOutlineTabDialog>>::Create(pParent, pSwItemSet, rWrtSh); +} + +namespace +{ +class AbstractMultiTOXTabDialog_Impl + : public vcl::AbstractDialogImpl_Async<AbstractMultiTOXTabDialog, SwMultiTOXTabDialog> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + CurTOXType GetCurrentTOXType() const override { return m_pDlg->GetCurrentTOXType(); } + SwTOXDescription& GetTOXDescription(CurTOXType eTOXTypes) override + { + return m_pDlg->GetTOXDescription(eTOXTypes); + } + // from SfxTabDialog + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } +}; } VclPtr<AbstractMultiTOXTabDialog> SwAbstractDialogFactory_Impl::CreateMultiTOXTabDialog(weld::Widget* pParent, const SfxItemSet& rSet, SwWrtShell &rShell, SwTOXBase* pCurTOX, bool bGlobal) { - return VclPtr<AbstractMultiTOXTabDialog_Impl>::Create(std::make_shared<SwMultiTOXTabDialog>(pParent, rSet, rShell, pCurTOX, USHRT_MAX, bGlobal)); + return VclPtr<AbstractMultiTOXTabDialog_Impl>::Create(pParent, rSet, rShell, pCurTOX, USHRT_MAX, bGlobal); +} + +namespace +{ +class AbstractEditRegionDlg_Impl + : public vcl::AbstractDialogImpl_Async<AbstractEditRegionDlg, SwEditRegionDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void SelectSection(const OUString& rSectionName) override + { + m_pDlg->SelectSection(rSectionName); + } +}; } VclPtr<AbstractEditRegionDlg> SwAbstractDialogFactory_Impl::CreateEditRegionDlg(weld::Window* pParent, SwWrtShell& rWrtSh) { - return VclPtr<AbstractEditRegionDlg_Impl>::Create(std::make_shared<SwEditRegionDlg>(pParent, rWrtSh)); + return VclPtr<AbstractEditRegionDlg_Impl>::Create(pParent, rWrtSh); +} + +namespace +{ +class AbstractInsertSectionTabDialog_Impl + : public vcl::AbstractDialogImpl_Async<AbstractInsertSectionTabDialog, SwInsertSectionTabDialog> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void SetSectionData(SwSectionData const& rSect) override { m_pDlg->SetSectionData(rSect); } +}; } VclPtr<AbstractInsertSectionTabDialog> SwAbstractDialogFactory_Impl::CreateInsertSectionTabDialog(weld::Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh) { - return VclPtr<AbstractInsertSectionTabDialog_Impl>::Create(std::make_shared<SwInsertSectionTabDialog>(pParent, rSet, rSh)); + return VclPtr<AbstractInsertSectionTabDialog_Impl>::Create(pParent, rSet, rSh); +} + +namespace +{ +class AbstractIndexMarkFloatDlg_Impl + : public vcl::AbstractDialogImpl_Sync_Shared<AbstractMarkFloatDlg, SwIndexMarkFloatDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void ReInitDlg(SwWrtShell& rWrtShell) override { m_pDlg->ReInitDlg(rWrtShell); } + std::shared_ptr<SfxDialogController> GetController() override { return m_pDlg; } +}; } VclPtr<AbstractMarkFloatDlg> SwAbstractDialogFactory_Impl::CreateIndexMarkFloatDlg( @@ -1391,7 +1126,19 @@ VclPtr<AbstractMarkFloatDlg> SwAbstractDialogFactory_Impl::CreateIndexMarkFloatD weld::Window *pParent, SfxChildWinInfo* pInfo ) { - return VclPtr<AbstractIndexMarkFloatDlg_Impl>::Create(std::make_shared<SwIndexMarkFloatDlg>(pBindings, pChild, pParent, pInfo, true/*bNew*/)); + return VclPtr<AbstractIndexMarkFloatDlg_Impl>::Create(pBindings, pChild, pParent, pInfo, true/*bNew*/); +} + +namespace +{ +class AbstractAuthMarkFloatDlg_Impl + : public vcl::AbstractDialogImpl_Sync_Shared<AbstractMarkFloatDlg, SwAuthMarkFloatDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void ReInitDlg(SwWrtShell& rWrtShell) override { m_pDlg->ReInitDlg(rWrtShell); } + std::shared_ptr<SfxDialogController> GetController() override { return m_pDlg; } +}; } VclPtr<AbstractMarkFloatDlg> SwAbstractDialogFactory_Impl::CreateAuthMarkFloatDlg( @@ -1400,7 +1147,23 @@ VclPtr<AbstractMarkFloatDlg> SwAbstractDialogFactory_Impl::CreateAuthMarkFloatDl weld::Window *pParent, SfxChildWinInfo* pInfo) { - return VclPtr<AbstractAuthMarkFloatDlg_Impl>::Create(std::make_shared<SwAuthMarkFloatDlg>(pBindings, pChild, pParent, pInfo, true/*bNew*/)); + return VclPtr<AbstractAuthMarkFloatDlg_Impl>::Create(pBindings, pChild, pParent, pInfo, true/*bNew*/); +} + +namespace +{ +class AbstractSwWordCountFloatDlg_Impl + : public vcl::AbstractDialogImpl_Sync_Shared<AbstractSwWordCountFloatDlg, SwWordCountFloatDlg> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void UpdateCounts() override { m_pDlg->UpdateCounts(); } + void SetCounts(const SwDocStat& rCurrCnt, const SwDocStat& rDocStat) override + { + m_pDlg->SetCounts(rCurrCnt, rDocStat); + } + std::shared_ptr<SfxDialogController> GetController() override { return m_pDlg; } +}; } VclPtr<AbstractSwWordCountFloatDlg> SwAbstractDialogFactory_Impl::CreateSwWordCountDialog( @@ -1409,19 +1172,42 @@ VclPtr<AbstractSwWordCountFloatDlg> SwAbstractDialogFactory_Impl::CreateSwWordCo weld::Window *pParent, SfxChildWinInfo* pInfo) { - return VclPtr<AbstractSwWordCountFloatDlg_Impl>::Create(std::make_shared<SwWordCountFloatDlg>(pBindings, pChild, pParent, pInfo)); + return VclPtr<AbstractSwWordCountFloatDlg_Impl>::Create(pBindings, pChild, pParent, pInfo); } VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateIndexMarkModalDlg(weld::Window *pParent, SwWrtShell& rSh, SwTOXMark* pCurTOXMark ) { - return VclPtr<AbstractGenericDialog_Impl>::Create(std::make_shared<SwIndexMarkModalDlg>(pParent, rSh, pCurTOXMark)); + return VclPtr<AbstractGenericDialog_Impl<SwIndexMarkModalDlg>>::Create(pParent, rSh, pCurTOXMark); +} + +namespace +{ +class AbstractMailMergeWizard_Impl + : public vcl::AbstractDialogImpl_Async<AbstractMailMergeWizard, SwMailMergeWizard> +{ +public: + using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + bool StartExecuteAsync(VclAbstractDialog::AsyncContext& rCtx) override; + + OUString GetReloadDocument() const override { return m_pDlg->GetReloadDocument(); } + void ShowPage(sal_uInt16 nLevel) override { m_pDlg->skipUntil(nLevel); } + sal_uInt16 GetRestartPage() const override { return m_pDlg->GetRestartPage(); } +}; + +bool AbstractMailMergeWizard_Impl::StartExecuteAsync(AsyncContext& rCtx) +{ + // SwMailMergeWizardExecutor wants to run the lifecycle of this dialog + // so clear mxOwner here and leave it up to SwMailMergeWizardExecutor + rCtx.mxOwner.clear(); + return AbstractDialogImpl_BASE::StartExecuteAsync(rCtx); +} } VclPtr<AbstractMailMergeWizard> SwAbstractDialogFactory_Impl::CreateMailMergeWizard( SwView& rView, std::shared_ptr<SwMailMergeConfigItem>& rConfigItem) { #if HAVE_FEATURE_DBCONNECTIVITY && !ENABLE_FUZZERS - return VclPtr<AbstractMailMergeWizard_Impl>::Create(std::make_shared<SwMailMergeWizard>(rView, rConfigItem)); + return VclPtr<AbstractMailMergeWizard_Impl>::Create(rView, rConfigItem); #else (void) rView; (void) rConfigItem; diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index 3875fe8d997f..f33460a21840 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -59,712 +59,6 @@ #include <pagenumberdlg.hxx> #include <changedb.hxx> - -class SwInsertAbstractDlg; -class SwAsciiFilterDlg; -class SwBreakDlg; -class SwMultiTOXMarkDlg; -class SwSortDlg; -class SwTableHeightDlg; -class SwTableWidthDlg; -class SwMergeTableDlg; -class SfxTabDialog; -class SwConvertTableDlg; -class SwInsertDBColAutoPilot; -class SwLabDlg; -class SwSelGlossaryDlg; -class SwAutoFormatDlg; -class SwFieldDlg; -class SwRenameXNamedDlg; -class SwModalRedlineAcceptDlg; -class SwTOXMark; -class SwSplitTableDlg; -namespace sw -{ -class DropDownFieldDialog; -class DropDownFormFieldDialog; -class DateFormFieldDialog; -} -class SwWordCountFloatDlg; - - -class AbstractSwWordCountFloatDlg_Impl : public AbstractSwWordCountFloatDlg -{ - std::shared_ptr<SwWordCountFloatDlg> m_xDlg; -public: - explicit AbstractSwWordCountFloatDlg_Impl(std::shared_ptr<SwWordCountFloatDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void UpdateCounts() override; - virtual void SetCounts(const SwDocStat &rCurrCnt, const SwDocStat &rDocStat) override; - virtual std::shared_ptr<SfxDialogController> GetController() override; -}; - -class AbstractSwInsertAbstractDlg_Impl : public AbstractSwInsertAbstractDlg -{ - std::shared_ptr<SwInsertAbstractDlg> m_xDlg; -public: - explicit AbstractSwInsertAbstractDlg_Impl(std::shared_ptr<SwInsertAbstractDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual sal_uInt8 GetLevel() const override ; - virtual sal_uInt8 GetPara() const override ; -}; - -class SwAbstractSfxController_Impl : public SfxAbstractDialog -{ - std::shared_ptr<SfxSingleTabDialogController> m_xDlg; -public: - explicit SwAbstractSfxController_Impl(std::shared_ptr<SfxSingleTabDialogController> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual void SetText(const OUString& rStr) override; -}; - -class AbstractNumFormatDlg_Impl : public SfxAbstractDialog -{ - std::shared_ptr<SfxSingleTabDialogController> m_xDlg; -public: - explicit AbstractNumFormatDlg_Impl(std::shared_ptr<SfxSingleTabDialogController> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual void SetText(const OUString& rStr) override; -}; - -class AbstractSwAsciiFilterDlg_Impl : public AbstractSwAsciiFilterDlg -{ - std::unique_ptr<SwAsciiFilterDlg> m_xDlg; -public: - explicit AbstractSwAsciiFilterDlg_Impl(std::unique_ptr<SwAsciiFilterDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void FillOptions( SwAsciiOptions& rOptions ) override; -}; - -/// Interface implementation for the insert -> fields -> page number wizard dialog -class AbstractSwPageNumberDlg_Impl : public AbstractSwPageNumberDlg -{ - std::shared_ptr<SwPageNumberDlg> m_xDlg; -public: - explicit AbstractSwPageNumberDlg_Impl(std::shared_ptr<SwPageNumberDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual int GetPageNumberPosition() const override; - virtual int GetPageNumberAlignment() const override; - bool GetMirrorOnEvenPages() const override; - bool GetIncludePageTotal() const override; - bool GetFitIntoExistingMargins() const override; - SvxNumType GetPageNumberType() const override; - void SetPageNumberType(SvxNumType nSet) override; -}; - -class AbstractGenericDialog_Impl : public VclAbstractDialog -{ - std::shared_ptr<weld::GenericDialogController> m_xDlg; -public: - explicit AbstractGenericDialog_Impl(std::shared_ptr<weld::GenericDialogController> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; -}; - -class AbstractSwSortDlg_Impl : public AbstractSwSortDlg -{ - std::shared_ptr<SwSortDlg> m_xDlg; -public: - explicit AbstractSwSortDlg_Impl(std::shared_ptr<SwSortDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void Apply() override { m_xDlg->Apply(); } -}; - -class AbstractMultiTOXMarkDlg_Impl : public VclAbstractDialog -{ - std::unique_ptr<SwMultiTOXMarkDlg> m_xDlg; -public: - explicit AbstractMultiTOXMarkDlg_Impl(std::unique_ptr<SwMultiTOXMarkDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; -}; - -class AbstractNumBulletDialog_Impl : public AbstractNumBulletDialog -{ -protected: - std::shared_ptr<SfxTabDialogController> m_xDlg; -public: - explicit AbstractNumBulletDialog_Impl(std::shared_ptr<SfxTabDialogController> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void SetCurPageId( const OUString &rName ) override; - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual const SfxItemSet* GetInputItemSet() const override; - virtual WhichRangesContainer GetInputRanges( const SfxItemPool& pItem ) override; - virtual void SetInputSet( const SfxItemSet* pInSet ) override; - //From class Window. - virtual void SetText( const OUString& rStr ) override; -}; - -class AbstractSwBreakDlg_Impl : public AbstractSwBreakDlg -{ - std::shared_ptr<weld::DialogController> m_xDlg; -public: - explicit AbstractSwBreakDlg_Impl(std::shared_ptr<weld::DialogController> p) - : m_xDlg(std::move(p)) - { - } - virtual OUString GetTemplateName() override; - virtual sal_uInt16 GetKind() override; - virtual ::std::optional<sal_uInt16> GetPageNumber() override; - std::optional<SwLineBreakClear> GetClear() override; - - virtual std::shared_ptr<weld::DialogController> getDialogController() override { return m_xDlg; } -}; - -class AbstractSwTranslateLangSelectDlg_Impl : public AbstractSwTranslateLangSelectDlg -{ - std::shared_ptr<weld::DialogController> m_xDlg; -public: - explicit AbstractSwTranslateLangSelectDlg_Impl(std::shared_ptr<weld::DialogController> p) - : m_xDlg(std::move(p)) - { - } - - virtual std::shared_ptr<weld::DialogController> getDialogController() override { return m_xDlg; } - virtual std::optional<SwLanguageListItem> GetSelectedLanguage() override; -}; - -class AbstractSwTableWidthDlg_Impl : public AbstractSwTableWidthDlg -{ - std::shared_ptr<SwTableWidthDlg> m_xDlg; -public: - explicit AbstractSwTableWidthDlg_Impl(std::shared_ptr<SwTableWidthDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void Apply() override { m_xDlg->Apply(); } -}; - -class AbstractSwTableHeightDlg_Impl : public AbstractSwTableHeightDlg -{ - std::shared_ptr<SwTableHeightDlg> m_xDlg; -public: - explicit AbstractSwTableHeightDlg_Impl(std::shared_ptr<SwTableHeightDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void Apply() override { m_xDlg->Apply(); } -}; - -class AbstractSwMergeTableDlg_Impl : public VclAbstractDialog -{ - std::unique_ptr<SwMergeTableDlg> m_xDlg; -public: - explicit AbstractSwMergeTableDlg_Impl(std::unique_ptr<SwMergeTableDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; -}; - -class AbstractSplitTableDialog_Impl : public AbstractSplitTableDialog // add for -{ - std::shared_ptr<SwSplitTableDlg> m_xDlg; -public: - explicit AbstractSplitTableDialog_Impl(std::shared_ptr<SwSplitTableDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual SplitTable_HeadlineOption GetSplitMode() override; -}; - -class AbstractTabController_Impl : virtual public SfxAbstractTabDialog -{ -protected: - std::shared_ptr<SfxTabDialogController> m_xDlg; -public: - explicit AbstractTabController_Impl(std::shared_ptr<SfxTabDialogController> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void SetCurPageId( const OUString &rName ) override; - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual WhichRangesContainer GetInputRanges( const SfxItemPool& pItem ) override; - virtual void SetInputSet( const SfxItemSet* pInSet ) override; - //From class Window. - virtual void SetText( const OUString& rStr ) override; -}; - -class AbstractApplyTabController_Impl : public AbstractTabController_Impl, virtual public SfxAbstractApplyTabDialog -{ -public: - explicit AbstractApplyTabController_Impl(std::shared_ptr<SfxTabDialogController> p) - : AbstractTabController_Impl(std::move(p)) - { - } - DECL_LINK(ApplyHdl, weld::Button&, void); -private: - Link<LinkParamNone*,void> m_aHandler; - virtual void SetApplyHdl( const Link<LinkParamNone*,void>& rLink ) override; -}; - -class AbstractSwConvertTableDlg_Impl : public AbstractSwConvertTableDlg -{ - std::unique_ptr<SwConvertTableDlg> m_xDlg; -public: - explicit AbstractSwConvertTableDlg_Impl(std::unique_ptr<SwConvertTableDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void GetValues( sal_Unicode& rDelim,SwInsertTableOptions& rInsTableFlags, - SwTableAutoFormat const*& prTAFormat) override; -}; - -class AbstractSwInsertDBColAutoPilot_Impl : public AbstractSwInsertDBColAutoPilot -{ - std::shared_ptr<SwInsertDBColAutoPilot> m_xDlg; -public: - explicit AbstractSwInsertDBColAutoPilot_Impl(std::shared_ptr<SwInsertDBColAutoPilot> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void DataToDoc( const css::uno::Sequence< css::uno::Any >& rSelection, - css::uno::Reference< css::sdbc::XDataSource> rxSource, - css::uno::Reference< css::sdbc::XConnection> xConnection, - css::uno::Reference< css::sdbc::XResultSet > xResultSet) override; -}; - -class AbstractDropDownFieldDialog_Impl : public AbstractDropDownFieldDialog -{ - std::unique_ptr<sw::DropDownFieldDialog> m_xDlg; -public: - explicit AbstractDropDownFieldDialog_Impl(std::unique_ptr<sw::DropDownFieldDialog> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool PrevButtonPressed() const override; - virtual bool NextButtonPressed() const override; -}; - -class AbstractDropDownFormFieldDialog_Impl : public AbstractDropDownFormFieldDialog -{ - std::shared_ptr<sw::DropDownFormFieldDialog> m_xDlg; -public: - explicit AbstractDropDownFormFieldDialog_Impl(std::shared_ptr<sw::DropDownFormFieldDialog> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void Apply() override { m_xDlg->Apply(); } -}; - -class AbstractDateFormFieldDialog_Impl : public AbstractDateFormFieldDialog -{ - std::shared_ptr<sw::DateFormFieldDialog> m_xDlg; -public: - explicit AbstractDateFormFieldDialog_Impl(std::shared_ptr<sw::DateFormFieldDialog> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void Apply() override { m_xDlg->Apply(); } -}; - -class AbstractSwLabDlg_Impl : public AbstractSwLabDlg -{ - std::unique_ptr<SwLabDlg> m_xDlg; -public: - explicit AbstractSwLabDlg_Impl(std::unique_ptr<SwLabDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void SetCurPageId( const OUString &rName ) override; - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual WhichRangesContainer GetInputRanges( const SfxItemPool& pItem ) override; - virtual void SetInputSet( const SfxItemSet* pInSet ) override; - //From class Window. - virtual void SetText( const OUString& rStr ) override; - virtual const OUString& GetBusinessCardStr() const override; - virtual Printer *GetPrt() override; -}; - -class AbstractSwSelGlossaryDlg_Impl : public AbstractSwSelGlossaryDlg -{ - std::unique_ptr<SwSelGlossaryDlg> m_xDlg; -public: - explicit AbstractSwSelGlossaryDlg_Impl(std::unique_ptr<SwSelGlossaryDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void InsertGlos(const OUString &rRegion, const OUString &rGlosName) override; // inline - virtual sal_Int32 GetSelectedIdx() const override; // inline - virtual void SelectEntryPos(sal_Int32 nIdx) override; // inline -}; - -class AbstractSwAutoFormatDlg_Impl : public AbstractSwAutoFormatDlg -{ - std::shared_ptr<SwAutoFormatDlg> m_xDlg; -public: - explicit AbstractSwAutoFormatDlg_Impl(std::shared_ptr<SwAutoFormatDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual std::unique_ptr<SwTableAutoFormat> FillAutoFormatOfIndex() const override; - virtual void Apply() override { m_xDlg->Apply(); } -}; - -class AbstractSwFieldDlg_Impl : public AbstractSwFieldDlg -{ - std::shared_ptr<SwFieldDlg> m_xDlg; -public: - explicit AbstractSwFieldDlg_Impl(std::shared_ptr<SwFieldDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void SetCurPageId( const OUString &rName ) override; - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual WhichRangesContainer GetInputRanges( const SfxItemPool& pItem ) override; - virtual void SetInputSet( const SfxItemSet* pInSet ) override; - //From class Window. - virtual void SetText( const OUString& rStr ) override; - virtual void ShowReferencePage() override; - virtual void Initialize(SfxChildWinInfo *pInfo) override; - virtual void ReInitDlg() override; - virtual void ActivateDatabasePage() override; - virtual std::shared_ptr<SfxDialogController> GetController() override; -}; - -class AbstractSwRenameXNamedDlg_Impl : public AbstractSwRenameXNamedDlg -{ - std::shared_ptr<SwRenameXNamedDlg> m_xDlg; -public: - explicit AbstractSwRenameXNamedDlg_Impl(std::unique_ptr<SwRenameXNamedDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; - virtual void SetForbiddenChars( const OUString& rSet ) override; - virtual void SetAlternativeAccess( - css::uno::Reference< css::container::XNameAccess > & xSecond, - css::uno::Reference< css::container::XNameAccess > & xThird ) override; -}; - -/** - * Implementation of AbstractSwContentControlListItemDlg, that is only visible to - * SwAbstractDialogFactory_Impl::CreateSwContentControlListItemDlg(). - */ -class AbstractSwContentControlListItemDlg_Impl : public AbstractSwContentControlListItemDlg -{ - std::shared_ptr<SwContentControlListItemDlg> m_xDlg; - -public: - explicit AbstractSwContentControlListItemDlg_Impl( - std::shared_ptr<SwContentControlListItemDlg> xDlg) - : m_xDlg(std::move(xDlg)) - { - } - - short Execute() override; - bool StartExecuteAsync(VclAbstractDialog::AsyncContext &) override; -}; - -class AbstractSwModalRedlineAcceptDlg_Impl : public AbstractSwModalRedlineAcceptDlg -{ - std::shared_ptr<SwModalRedlineAcceptDlg> m_xDlg; -public: - explicit AbstractSwModalRedlineAcceptDlg_Impl(std::shared_ptr<SwModalRedlineAcceptDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &) override; -}; - -class SwGlossaryDlg; -class AbstractGlossaryDlg_Impl : public AbstractGlossaryDlg -{ - std::shared_ptr<SwGlossaryDlg> m_xDlg; -public: - explicit AbstractGlossaryDlg_Impl(std::shared_ptr<SwGlossaryDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void Apply() override { m_xDlg->Apply(); } - virtual OUString GetCurrGrpName() const override; - virtual OUString GetCurrShortName() const override; -}; - -class SwFieldInputDlg; -class AbstractFieldInputDlg_Impl : public AbstractFieldInputDlg -{ - std::unique_ptr<SwFieldInputDlg> m_xDlg; -public: - explicit AbstractFieldInputDlg_Impl(std::unique_ptr<SwFieldInputDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void EndDialog(sal_Int32) override; - virtual bool PrevButtonPressed() const override; - virtual bool NextButtonPressed() const override; -}; - -class SwInsFootNoteDlg; -class AbstractInsFootNoteDlg_Impl : public AbstractInsFootNoteDlg -{ - std::shared_ptr<SwInsFootNoteDlg> m_xDlg; -public: - explicit AbstractInsFootNoteDlg_Impl(std::shared_ptr<SwInsFootNoteDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void Apply() override { m_xDlg->Apply(); } - virtual OUString GetFontName() override; - virtual bool IsEndNote() override; - virtual OUString GetStr() override; - //from class Window - virtual void SetHelpId( const OUString& sHelpId ) override; - virtual void SetText( const OUString& rStr ) override; -}; - -class SwInsTableDlg; -class AbstractInsTableDlg_Impl : public AbstractInsTableDlg -{ - std::shared_ptr<weld::DialogController> m_xDlg; -public: - explicit AbstractInsTableDlg_Impl(std::shared_ptr<weld::DialogController> p) - : m_xDlg(std::move(p)) - { - } - virtual void GetValues( OUString& rName, sal_uInt16& rRow, sal_uInt16& rCol, - SwInsertTableOptions& rInsTableFlags, OUString& rTableAutoFormatName, - std::unique_ptr<SwTableAutoFormat>& prTAFormat ) override; - virtual std::shared_ptr<weld::DialogController> getDialogController() override { return m_xDlg; } -}; - -class SwJavaEditDialog; -class AbstractJavaEditDialog_Impl : public AbstractJavaEditDialog -{ - std::unique_ptr<SwJavaEditDialog> m_xDlg; -public: - explicit AbstractJavaEditDialog_Impl(std::unique_ptr<SwJavaEditDialog> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual OUString GetScriptText() const override; - virtual OUString GetScriptType() const override; - virtual bool IsUrl() const override; - virtual bool IsNew() const override; - virtual bool IsUpdate() const override; -}; - -class SwMailMergeDlg; -class AbstractMailMergeDlg_Impl : public AbstractMailMergeDlg -{ - std::unique_ptr<SwMailMergeDlg> m_xDlg; -public: - explicit AbstractMailMergeDlg_Impl(std::unique_ptr<SwMailMergeDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual DBManagerOptions GetMergeType() override ; - virtual const OUString& GetSaveFilter() const override; - virtual css::uno::Sequence< css::uno::Any > GetSelection() const override ; - virtual css::uno::Reference< css::sdbc::XResultSet> GetResultSet() const override; - virtual bool IsSaveSingleDoc() const override; - virtual bool IsGenerateFromDataBase() const override; - virtual bool IsFileEncryptedFromDataBase() const override; - virtual OUString GetColumnName() const override; - virtual OUString GetPasswordColumnName() const override; - virtual OUString GetTargetURL() const override; -}; - -class SwMailMergeCreateFromDlg; -class AbstractMailMergeCreateFromDlg_Impl : public AbstractMailMergeCreateFromDlg -{ - std::unique_ptr<SwMailMergeCreateFromDlg> m_xDlg; -public: - explicit AbstractMailMergeCreateFromDlg_Impl(std::unique_ptr<SwMailMergeCreateFromDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool IsThisDocument() const override ; -}; - -class SwMailMergeFieldConnectionsDlg; -class AbstractMailMergeFieldConnectionsDlg_Impl : public AbstractMailMergeFieldConnectionsDlg -{ - std::unique_ptr<SwMailMergeFieldConnectionsDlg> m_xDlg; -public: - explicit AbstractMailMergeFieldConnectionsDlg_Impl(std::unique_ptr<SwMailMergeFieldConnectionsDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool IsUseExistingConnections() const override ; -}; - -class SwMultiTOXTabDialog; -class AbstractMultiTOXTabDialog_Impl : public AbstractMultiTOXTabDialog -{ - std::shared_ptr<SwMultiTOXTabDialog> m_xDlg; -public: - explicit AbstractMultiTOXTabDialog_Impl(std::shared_ptr<SwMultiTOXTabDialog> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; - virtual CurTOXType GetCurrentTOXType() const override ; - virtual SwTOXDescription& GetTOXDescription(CurTOXType eTOXTypes) override; - //from SfxTabDialog - virtual const SfxItemSet* GetOutputItemSet() const override; -}; - -class SwEditRegionDlg; -class AbstractEditRegionDlg_Impl : public AbstractEditRegionDlg -{ - std::shared_ptr<SwEditRegionDlg> m_xDlg; -public: - explicit AbstractEditRegionDlg_Impl(std::shared_ptr<SwEditRegionDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void SelectSection(const OUString& rSectionName) override; -}; - -class SwInsertSectionTabDialog; -class AbstractInsertSectionTabDialog_Impl : public AbstractInsertSectionTabDialog -{ - std::shared_ptr<SwInsertSectionTabDialog> m_xDlg; -public: - explicit AbstractInsertSectionTabDialog_Impl(std::shared_ptr<SwInsertSectionTabDialog> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void SetSectionData(SwSectionData const& rSect) override; -}; - -class SwIndexMarkFloatDlg; -class AbstractIndexMarkFloatDlg_Impl : public AbstractMarkFloatDlg -{ - std::shared_ptr<SwIndexMarkFloatDlg> m_xDlg; -public: - explicit AbstractIndexMarkFloatDlg_Impl(std::shared_ptr<SwIndexMarkFloatDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void ReInitDlg(SwWrtShell& rWrtShell) override; - virtual std::shared_ptr<SfxDialogController> GetController() override; -}; - -class SwAuthMarkFloatDlg; -class AbstractAuthMarkFloatDlg_Impl : public AbstractMarkFloatDlg -{ - std::shared_ptr<SwAuthMarkFloatDlg> m_xDlg; -public: - explicit AbstractAuthMarkFloatDlg_Impl(std::shared_ptr<SwAuthMarkFloatDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual void ReInitDlg(SwWrtShell& rWrtShell) override; - virtual std::shared_ptr<SfxDialogController> GetController() override; -}; - -class SwMailMergeWizard; -class AbstractMailMergeWizard_Impl : public AbstractMailMergeWizard -{ - std::shared_ptr<SwMailMergeWizard> m_xDlg; - -public: - explicit AbstractMailMergeWizard_Impl(std::shared_ptr<SwMailMergeWizard> p) - : m_xDlg(std::move(p)) - { - } - virtual ~AbstractMailMergeWizard_Impl() override; - virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; - virtual short Execute() override; - - virtual OUString GetReloadDocument() const override; - virtual void ShowPage( sal_uInt16 nLevel ) override; - virtual sal_uInt16 GetRestartPage() const override; -}; - -class AbstractChangeDbDialog_Impl : public AbstractChangeDbDialog -{ - std::shared_ptr<SwChangeDBDlg> m_xDlg; -public: - explicit AbstractChangeDbDialog_Impl(std::shared_ptr<SwChangeDBDlg> p) - : m_xDlg(std::move(p)) - { - } - virtual short Execute() override; - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - virtual void UpdateFields() override { m_xDlg->UpdateFields(); } -}; - - //AbstractDialogFactory_Impl implementations class SwAbstractDialogFactory_Impl : public SwAbstractDialogFactory { commit 99df3eb3702b00268774287c242ccd16a272c899 Author: Mike Kaganski <[email protected]> AuthorDate: Thu Dec 19 12:24:07 2024 +0500 Commit: Mike Kaganski <[email protected]> CommitDate: Sat Dec 21 22:18:11 2024 +0100 Factor out AbstractDialogImpl template for reuse Add a ctor to /opt/lo/bin/clang-format -i include/vcl/abstdlgimpl.hxx to construct the dialog in-place, to simplify factory methods. And move two abstract dialog impls where all others are in cui Change-Id: Ia3f3a5d6c1aaa5a9aca9c11990f833842e4536e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178983 Reviewed-by: Mike Kaganski <[email protected]> Tested-by: Jenkins diff --git a/cui/source/dialogs/insrc.cxx b/cui/source/dialogs/insrc.cxx index c26e713181f9..715734bcb0d7 100644 --- a/cui/source/dialogs/insrc.cxx +++ b/cui/source/dialogs/insrc.cxx @@ -51,24 +51,4 @@ SvxInsRowColDlg::SvxInsRowColDlg(weld::Window* pParent, bool bColumn, const OUSt m_xDialog->set_help_id(rHelpId); } -short SvxAbstractInsRowColDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - -bool SvxAbstractInsRowColDlg_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -bool SvxAbstractInsRowColDlg_Impl::isInsertBefore() const -{ - return m_xDlg->isInsertBefore(); -} - -sal_uInt16 SvxAbstractInsRowColDlg_Impl::getInsertCount() const -{ - return m_xDlg->getInsertCount(); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/dialogs/splitcelldlg.cxx b/cui/source/dialogs/splitcelldlg.cxx index 0d44106cc457..90008db8740d 100644 --- a/cui/source/dialogs/splitcelldlg.cxx -e ... etc. - the rest is truncated
