cui/source/factory/cuiexp.cxx | 3 cui/source/factory/dlgfact.cxx | 1504 ++++++++++++++++++++--------------------- cui/source/factory/dlgfact.hxx | 419 ----------- 3 files changed, 758 insertions(+), 1168 deletions(-)
New commits: commit c6f3ffe93afc0591e4121be9edc6655ef0bc2653 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Wed Dec 18 18:30:38 2024 +0500 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Wed Dec 18 18:24:48 2024 +0100 Simplify VCL dialog implementations, and drop some macros Change-Id: I6eec9c4ebfc795ca82ea014ab317b6c10bf931d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178722 Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> Tested-by: Jenkins diff --git a/cui/source/factory/cuiexp.cxx b/cui/source/factory/cuiexp.cxx index 788304de2e3e..eda044f5bd57 100644 --- a/cui/source/factory/cuiexp.cxx +++ b/cui/source/factory/cuiexp.cxx @@ -19,8 +19,11 @@ #include "dlgfact.hxx" #include <sal/types.h> +#include <cppuhelper/implbase.hxx> #include <cppuhelper/supportsservice.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/lang/XUnoTunnel.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> /// anonymous implementation namespace namespace diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index bb1561f4803c..d42dd37624c2 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -24,6 +24,9 @@ #include "dlgfact.hxx" #include <about.hxx> +#include <dlgname.hxx> +#include <securityoptions.hxx> +#include <AdditionsDialog.hxx> #include <sfx2/app.hxx> #include <sfx2/basedlgs.hxx> #include <sfx2/pageids.hxx> @@ -96,7 +99,6 @@ #include <MacroManagerDialog.hxx> -using namespace ::com::sun::star; using namespace ::com::sun::star::frame; using namespace ::com::sun::star::container; @@ -104,727 +106,53 @@ using ::com::sun::star::uno::Reference; using namespace svx; -IMPL_ABSTDLG_CLASS_ASYNC(AbstractAdditionsDialog, weld::GenericDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractDiagramDialog, DiagramDialog) -IMPL_ABSTDLG_CLASS(AbstractFmInputRecordNoDialog) -IMPL_ABSTDLG_CLASS(AbstractFmSearchDialog) -IMPL_ABSTDLG_CLASS(AbstractFmShowColsDialog) -IMPL_ABSTDLG_CLASS(AbstractGalleryIdDialog) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractGraphicFilterDialog, GraphicFilterDialog) -IMPL_ABSTDLG_CLASS(AbstractHangulHanjaConversionDialog) -IMPL_ABSTDLG_CLASS(AbstractInsertObjectDialog) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractLinksDialog, SvBaseLinksDlg) -IMPL_ABSTDLG_CLASS(AbstractScreenshotAnnotationDlg) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSignatureLineDialog, SignatureLineDialog) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSignSignatureLineDialog, SignSignatureLineDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxCharacterMapDialog) -IMPL_ABSTDLG_CLASS(AbstractSecurityOptionsDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxHpLinkDlg) -IMPL_ABSTDLG_CLASS(AbstractSvxJSearchOptionsDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxMultiPathDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxNameDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxNewDictionaryDialog) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSvxObjectNameDialog, SvxObjectNameDialog) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSvxObjectTitleDescDialog, SvxObjectTitleDescDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxPathSelectDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxPostItDialog) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSvxSearchSimilarityDialog,SvxSearchSimilarityDialog) -IMPL_ABSTDLG_CLASS(AbstractSvxZoomDialog) -IMPL_ABSTDLG_CLASS(AbstractTitleDialog) -IMPL_ABSTDLG_CLASS(AbstractURLDlg) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractPasswordToOpenModifyDialog,weld::DialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractQrCodeGenDialog,QrCodeGenDialog) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractPasteDialog,SfxDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractScriptSelectorDialog,SfxDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractMacroManagerDialog,SfxDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSpellDialog,SfxDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSvxAreaTabDialog,SfxTabDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSvxCaptionDialog,SfxTabDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractSvxTransformTabDialog,SfxTabDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(AbstractThesaurusDialog,SfxDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(CuiAbstractControllerAsync,weld::DialogController) -IMPL_ABSTDLG_CLASS_ASYNC(CuiAbstractTabController,SfxTabDialogController) -IMPL_ABSTDLG_CLASS(CuiAbstractController) -IMPL_ABSTDLG_CLASS_ASYNC(CuiAbstractSingleTabController, SfxSingleTabDialogController) -IMPL_ABSTDLG_CLASS_ASYNC(CuiAbstractWidgetTestControllerAsync,weld::GenericDialogController) - -short AbstractHyphenWordDialog_Impl::Execute() -{ -#if !ENABLE_WASM_STRIP_HUNSPELL - return m_xDlg->run(); -#else - return 0; -#endif -} - -const SfxItemSet* AbstractSvxCharacterMapDialog_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -void AbstractSvxCharacterMapDialog_Impl::SetText(const OUString& rStr) -{ - m_xDlg->set_title(rStr); -} - -bool AbstractSvxCharacterMapDialog_Impl::StartExecuteAsync(AsyncContext &rCtx) -{ - m_xDlg->prepForRun(); - return SvxCharacterMap::runAsync(m_xDlg, rCtx.maEndDialogFn); -} - -void CuiAbstractTabController_Impl::SetCurPageId( const OUString &rName ) -{ - m_xDlg->SetCurPageId( rName ); -} - -const SfxItemSet* CuiAbstractTabController_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -WhichRangesContainer CuiAbstractTabController_Impl::GetInputRanges(const SfxItemPool& pItem ) -{ - return m_xDlg->GetInputRanges( pItem ); -} - -void CuiAbstractTabController_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -//From class Window. -void CuiAbstractTabController_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -std::vector<OUString> CuiAbstractTabController_Impl::getAllPageUIXMLDescriptions() const -{ - return m_xDlg->getAllPageUIXMLDescriptions(); -} - -bool CuiAbstractTabController_Impl::selectPageByUIXMLDescription(const OUString& rUIXMLDescription) -{ - return m_xDlg->selectPageByUIXMLDescription(rUIXMLDescription); -} - -BitmapEx CuiAbstractTabController_Impl::createScreenshot() const -{ - return m_xDlg->createScreenshot(); -} - -OUString CuiAbstractTabController_Impl::GetScreenshotId() const -{ - return m_xDlg->GetScreenshotId(); -} - -const SfxItemSet* CuiAbstractSingleTabController_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -void CuiAbstractSingleTabController_Impl::SetText(const OUString& rStr) -{ - m_xDlg->set_title(rStr); -} - -void AbstractHangulHanjaConversionDialog_Impl::EndDialog(sal_Int32 nResult) -{ - m_xDlg->response(nResult); -} - -void AbstractHangulHanjaConversionDialog_Impl::EnableRubySupport( bool _bVal ) -{ - m_xDlg->EnableRubySupport(_bVal); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetByCharacter( bool _bByCharacter ) -{ - m_xDlg->SetByCharacter(_bByCharacter); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetConversionDirectionState( bool _bTryBothDirections, editeng::HangulHanjaConversion::ConversionDirection _ePrimaryConversionDirection ) -{ - m_xDlg->SetConversionDirectionState(_bTryBothDirections, _ePrimaryConversionDirection); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetConversionFormat( editeng::HangulHanjaConversion::ConversionFormat _eType ) -{ - m_xDlg->SetConversionFormat(_eType); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetOptionsChangedHdl( const Link<LinkParamNone*,void>& _rHdl ) -{ - m_xDlg->SetOptionsChangedHdl(_rHdl ); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetIgnoreHdl( const Link<weld::Button&,void>& _rHdl ) -{ - m_xDlg->SetIgnoreHdl(_rHdl ); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetIgnoreAllHdl(const Link<weld::Button&,void>& rHdl) -{ - m_xDlg->SetIgnoreAllHdl(rHdl); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetChangeHdl(const Link<weld::Button&,void>& rHdl) -{ - m_xDlg->SetChangeHdl(rHdl); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetChangeAllHdl( const Link<weld::Button&,void>& rHdl ) -{ - m_xDlg->SetChangeAllHdl(rHdl); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetClickByCharacterHdl( const Link<weld::Toggleable&,void>& _rHdl ) -{ - m_xDlg->SetClickByCharacterHdl(_rHdl ); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetConversionFormatChangedHdl(const Link<weld::Toggleable&,void>& rHdl) -{ - m_xDlg->SetConversionFormatChangedHdl(rHdl); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetFindHdl( const Link<weld::Button&,void>& rHdl ) -{ - m_xDlg->SetFindHdl(rHdl); -} - -bool AbstractHangulHanjaConversionDialog_Impl::GetUseBothDirections( ) const -{ - return m_xDlg->GetUseBothDirections(); -} - -editeng::HangulHanjaConversion::ConversionDirection AbstractHangulHanjaConversionDialog_Impl::GetDirection( editeng::HangulHanjaConversion::ConversionDirection _eDefaultDirection ) const -{ - return m_xDlg->GetDirection( _eDefaultDirection ); -} - -void AbstractHangulHanjaConversionDialog_Impl::SetCurrentString( - const OUString& _rNewString, - const css::uno::Sequence< OUString >& _rSuggestions, - bool _bOriginatesFromDocument - ) -{ - m_xDlg->SetCurrentString(_rNewString,_rSuggestions,_bOriginatesFromDocument); -} - -OUString AbstractHangulHanjaConversionDialog_Impl::GetCurrentString( ) const -{ - return m_xDlg->GetCurrentString(); -} - -editeng::HangulHanjaConversion::ConversionFormat AbstractHangulHanjaConversionDialog_Impl::GetConversionFormat( ) const -{ - return m_xDlg->GetConversionFormat(); -} - -void AbstractHangulHanjaConversionDialog_Impl::FocusSuggestion( ) -{ - m_xDlg->FocusSuggestion(); -} - -OUString AbstractHangulHanjaConversionDialog_Impl::GetCurrentSuggestion( ) const -{ - return m_xDlg->GetCurrentSuggestion(); -} - -OUString AbstractThesaurusDialog_Impl::GetWord() -{ - return m_xDlg->GetWord(); -}; - -Reference < css::embed::XEmbeddedObject > AbstractInsertObjectDialog_Impl::GetObject() -{ - return m_xDlg->GetObject(); -} - -bool AbstractInsertObjectDialog_Impl::IsCreateNew() -{ - return m_xDlg->IsCreateNew(); -} - -::Reference< css::io::XInputStream > AbstractInsertObjectDialog_Impl::GetIconIfIconified( OUString* pGraphicMediaType ) -{ - return m_xDlg->GetIconIfIconified( pGraphicMediaType ); -} - -void AbstractPasteDialog_Impl::Insert(SotClipboardFormatId nFormat, const OUString& rFormatName) -{ - m_xDlg->Insert(nFormat, rFormatName); -} - -void AbstractPasteDialog_Impl::InsertUno(const OUString& sCmd, const OUString& sLabel) -{ - m_xDlg->InsertUno(sCmd, sLabel); -} - -void AbstractPasteDialog_Impl::SetObjName(const SvGlobalName & rClass, const OUString& rObjName) -{ - m_xDlg->SetObjName(rClass, rObjName); -} - -void AbstractPasteDialog_Impl::PreGetFormat( const TransferableDataHelper& aHelper ) -{ - m_xDlg->PreGetFormat(aHelper); -} - -SotClipboardFormatId AbstractPasteDialog_Impl::GetFormatOnly() -{ - return m_xDlg->GetFormatOnly(); -} - -SotClipboardFormatId AbstractPasteDialog_Impl::GetFormat( const TransferableDataHelper& aHelper ) -{ - return m_xDlg->GetFormat(aHelper); -} - -void AbstractFmShowColsDialog_Impl::SetColumns(const ::Reference< css::container::XIndexContainer>& xCols) -{ - m_xDlg->SetColumns(xCols); -} - -void AbstractSvxZoomDialog_Impl::SetLimits( sal_uInt16 nMin, sal_uInt16 nMax ) -{ - m_xDlg->SetLimits( nMin, nMax ); -} - -void AbstractSvxZoomDialog_Impl::HideButton( ZoomButtonId nBtnId ) -{ - m_xDlg->HideButton( nBtnId ); -} - -const SfxItemSet* AbstractSvxZoomDialog_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -void AbstractSpellDialog_Impl::InvalidateDialog() -{ - m_xDlg->InvalidateDialog(); -} - -std::shared_ptr<SfxDialogController> AbstractSpellDialog_Impl::GetController() -{ - return m_xDlg; -} - -SfxBindings& AbstractSpellDialog_Impl::GetBindings() -{ - return m_xDlg->GetBindings(); -} - -OUString AbstractTitleDialog_Impl::GetTitle() const -{ - return m_xDlg->GetTitle(); -} - -sal_uInt32 AbstractGalleryIdDialog_Impl::GetId() const -{ - return m_xDlg->GetId(); -} - -OUString AbstractURLDlg_Impl::GetURL() const -{ - return m_xDlg->GetURL(); -} - -OUString AbstractURLDlg_Impl::GetAltText() const -{ - return m_xDlg->GetAltText(); -} - -OUString AbstractURLDlg_Impl::GetDesc() const -{ - return m_xDlg->GetDesc(); -} - -OUString AbstractURLDlg_Impl::GetTarget() const -{ - return m_xDlg->GetTarget(); -} - -OUString AbstractURLDlg_Impl::GetName() const -{ - return m_xDlg->GetName(); -} - -sal_uInt16 AbstractSvxSearchSimilarityDialog_Impl::GetOther() -{ - return m_xDlg->GetOther(); -} - -sal_uInt16 AbstractSvxSearchSimilarityDialog_Impl::GetShorter() -{ - return m_xDlg->GetShorter(); -} - -sal_uInt16 AbstractSvxSearchSimilarityDialog_Impl::GetLonger() -{ - return m_xDlg->GetLonger(); -} - -bool AbstractSvxSearchSimilarityDialog_Impl::IsRelaxed() -{ - return m_xDlg->IsRelaxed(); -} - -// AbstractSvxTransformTabDialog implementations just forwards everything to the dialog -void AbstractSvxTransformTabDialog_Impl::SetCurPageId( const OUString& rName ) -{ - m_xDlg->SetCurPageId( rName ); -} - -const SfxItemSet* AbstractSvxTransformTabDialog_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -WhichRangesContainer AbstractSvxTransformTabDialog_Impl::GetInputRanges(const SfxItemPool& pItem ) -{ - return m_xDlg->GetInputRanges( pItem ); -} - -void AbstractSvxTransformTabDialog_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -//From class Window. -void AbstractSvxTransformTabDialog_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -void AbstractSvxTransformTabDialog_Impl::SetValidateFramePosLink( const Link<SvxSwFrameValidation&,void>& rLink ) -{ - m_xDlg->SetValidateFramePosLink( rLink ); -} - -// AbstractSvxCaptionDialog implementations just forwards everything to the dialog -void AbstractSvxCaptionDialog_Impl::SetCurPageId( const OUString& rName ) -{ - m_xDlg->SetCurPageId(rName); -} - -const SfxItemSet* AbstractSvxCaptionDialog_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -WhichRangesContainer AbstractSvxCaptionDialog_Impl::GetInputRanges(const SfxItemPool& pItem ) -{ - return m_xDlg->GetInputRanges( pItem ); -} - -void AbstractSvxCaptionDialog_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -void AbstractSvxCaptionDialog_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -void AbstractSvxCaptionDialog_Impl::SetValidateFramePosLink( const Link<SvxSwFrameValidation&,void>& rLink ) -{ - m_xDlg->SetValidateFramePosLink( rLink ); -} - -TransliterationFlags AbstractSvxJSearchOptionsDialog_Impl::GetTransliterationFlags() const -{ - return m_xDlg->GetTransliterationFlags(); -} - -void AbstractFmInputRecordNoDialog_Impl::SetValue(tools::Long nNew) -{ - m_xDlg->SetValue(nNew); -} - -tools::Long AbstractFmInputRecordNoDialog_Impl::GetValue() const -{ - return m_xDlg->GetValue(); -} - -::Reference< css::linguistic2::XDictionary > AbstractSvxNewDictionaryDialog_Impl::GetNewDictionary() -{ - return m_xDlg->GetNewDictionary(); -} - -OUString AbstractSvxNameDialog_Impl::GetName() -{ - return m_xDlg->GetName(); -} - -void AbstractSvxNameDialog_Impl::SetCheckNameHdl( const Link<AbstractSvxNameDialog&,bool>& rLink ) -{ - aCheckNameHdl = rLink; - if( rLink.IsSet() ) - m_xDlg->SetCheckNameHdl( LINK(this, AbstractSvxNameDialog_Impl, CheckNameHdl) ); - else - m_xDlg->SetCheckNameHdl( Link<SvxNameDialog&,bool>() ); -} - -void AbstractSvxNameDialog_Impl::SetCheckNameTooltipHdl( const Link<AbstractSvxNameDialog&,OUString>& rLink) -{ - aCheckNameTooltipHdl = rLink; - if( rLink.IsSet() ) - m_xDlg->SetCheckNameTooltipHdl( LINK(this, AbstractSvxNameDialog_Impl, CheckNameTooltipHdl)); - else - m_xDlg->SetCheckNameTooltipHdl( Link<SvxNameDialog&,OUString>()); -} - -void AbstractSvxNameDialog_Impl::SetEditHelpId(const OUString& rHelpId) -{ - m_xDlg->SetEditHelpId(rHelpId); -} - -void AbstractSvxNameDialog_Impl::SetHelpId(const OUString& rHelpId) -{ - m_xDlg->set_help_id(rHelpId); -} - -void AbstractSvxNameDialog_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -IMPL_LINK_NOARG(AbstractSvxNameDialog_Impl, CheckNameHdl, SvxNameDialog&, bool) -{ - return aCheckNameHdl.Call(*this); -} - -IMPL_LINK_NOARG(AbstractSvxNameDialog_Impl, CheckNameTooltipHdl, SvxNameDialog&, OUString) -{ - return aCheckNameTooltipHdl.Call(*this); -} - -OUString AbstractSvxObjectNameDialog_Impl::GetName() +namespace { - return m_xDlg->GetName(); -} - -void AbstractSvxObjectNameDialog_Impl::SetCheckNameHdl(const Link<AbstractSvxObjectNameDialog&,bool>& rLink) +// Templated base class storing the dialog pointer, and implementing Execute, StartExecuteAsync, +// and the shared constructor used by derived classes +template <class Base, class Dialog, template <class...> class Ptr, bool Async> + requires std::is_base_of_v<VclAbstractDialog, Base> + && std::is_base_of_v<weld::DialogController, Dialog> +class ControllerImpl_BASE : public Base { - aCheckNameHdl = rLink; - - if(rLink.IsSet()) - { - m_xDlg->SetCheckNameHdl(LINK(this, AbstractSvxObjectNameDialog_Impl, CheckNameHdl)); - } - else +public: + explicit ControllerImpl_BASE(Ptr<Dialog> p) + : m_pDlg(std::move(p)) { - m_xDlg->SetCheckNameHdl(Link<SvxObjectNameDialog&,bool>()); } -} - -IMPL_LINK_NOARG(AbstractSvxObjectNameDialog_Impl, CheckNameHdl, SvxObjectNameDialog&, bool) -{ - return aCheckNameHdl.Call(*this); -} - -OUString AbstractSvxObjectTitleDescDialog_Impl::GetTitle() -{ - return m_xDlg->GetTitle(); -} - -OUString AbstractSvxObjectTitleDescDialog_Impl::GetDescription() -{ - return m_xDlg->GetDescription(); -} - -bool AbstractSvxObjectTitleDescDialog_Impl::IsDecorative() -{ - return m_xDlg->IsDecorative(); -} - -OUString AbstractSvxMultiPathDialog_Impl::GetPath() const -{ - return m_xDlg->GetPath(); -} - -void AbstractSvxMultiPathDialog_Impl::SetPath( const OUString& rPath ) -{ - m_xDlg->SetPath( rPath ); -} - -void AbstractSvxMultiPathDialog_Impl::SetTitle( const OUString& rNewTitle ) -{ - m_xDlg->SetTitle(rNewTitle); -} - -OUString AbstractSvxPathSelectDialog_Impl::GetPath() const -{ - return m_xDlg->GetPath(); -} - -void AbstractSvxPathSelectDialog_Impl::SetPath( const OUString& rPath ) -{ - m_xDlg->SetPath( rPath ); -} - -void AbstractSvxPathSelectDialog_Impl::SetTitle( const OUString& rNewTitle ) -{ - m_xDlg->SetTitle(rNewTitle); -} - -std::shared_ptr<SfxDialogController> AbstractSvxHpLinkDlg_Impl::GetController() -{ - return m_xDlg; -} - -bool AbstractSvxHpLinkDlg_Impl::QueryClose() -{ - return m_xDlg->QueryClose(); -} - -void AbstractFmSearchDialog_Impl::SetFoundHandler(const Link<FmFoundRecordInformation&,void>& lnk) -{ - m_xDlg->SetFoundHandler(lnk); -} - -void AbstractFmSearchDialog_Impl::SetCanceledNotFoundHdl(const Link<FmFoundRecordInformation&,void>& lnk) -{ - m_xDlg->SetCanceledNotFoundHdl(lnk); -} - -void AbstractFmSearchDialog_Impl::SetActiveField(const OUString& strField) -{ - m_xDlg->SetActiveField(strField); -} - -Graphic AbstractGraphicFilterDialog_Impl::GetFilteredGraphic(const Graphic& rGraphic, double fScaleX, double fScaleY) -{ - return m_xDlg->GetFilteredGraphic(rGraphic, fScaleX, fScaleY); -} - -// AbstractSvxAreaTabDialog implementations just forwards everything to the dialog -void AbstractSvxAreaTabDialog_Impl::SetCurPageId( const OUString& rName ) -{ - m_xDlg->SetCurPageId( rName ); -} - -const SfxItemSet* AbstractSvxAreaTabDialog_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -WhichRangesContainer AbstractSvxAreaTabDialog_Impl::GetInputRanges(const SfxItemPool& pItem ) -{ - return m_xDlg->GetInputRanges( pItem ); -} - -void AbstractSvxAreaTabDialog_Impl::SetInputSet( const SfxItemSet* pInSet ) -{ - m_xDlg->SetInputSet( pInSet ); -} - -void AbstractSvxAreaTabDialog_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -void AbstractSvxPostItDialog_Impl::SetText( const OUString& rStr ) -{ - m_xDlg->set_title(rStr); -} - -const SfxItemSet* AbstractSvxPostItDialog_Impl::GetOutputItemSet() const -{ - return m_xDlg->GetOutputItemSet(); -} - -void AbstractSvxPostItDialog_Impl::EnableTravel(bool bNext, bool bPrev) -{ - m_xDlg->EnableTravel( bNext, bPrev ); -} - -OUString AbstractSvxPostItDialog_Impl::GetNote() -{ - return m_xDlg->GetNote(); -} - -void AbstractSvxPostItDialog_Impl::SetNote(const OUString& rTxt) -{ - m_xDlg->SetNote( rTxt ); -} - -void AbstractSvxPostItDialog_Impl::ShowLastAuthor(const OUString& rAuthor, const OUString& rDate) -{ - m_xDlg->ShowLastAuthor( rAuthor, rDate ); -} - -void AbstractSvxPostItDialog_Impl::DontChangeAuthor() -{ - m_xDlg->DontChangeAuthor(); -} - -void AbstractSvxPostItDialog_Impl::HideAuthor() -{ - m_xDlg->HideAuthor(); -} - -void AbstractSvxPostItDialog_Impl::SetNextHdl( const Link<AbstractSvxPostItDialog&,void>& rLink ) -{ - aNextHdl = rLink; - if( rLink.IsSet() ) - m_xDlg->SetNextHdl( LINK(this, AbstractSvxPostItDialog_Impl, NextHdl ) ); - else - m_xDlg->SetNextHdl( Link<SvxPostItDialog&,void>() ); -} -void AbstractSvxPostItDialog_Impl::SetPrevHdl( const Link<AbstractSvxPostItDialog&,void>& rLink ) -{ - aPrevHdl = rLink; - if( rLink.IsSet() ) - m_xDlg->SetPrevHdl( LINK(this, AbstractSvxPostItDialog_Impl, PrevHdl ) ); - else - m_xDlg->SetPrevHdl( Link<SvxPostItDialog&,void>() ); -} + short Execute() override { return m_pDlg->run(); } -IMPL_LINK_NOARG(AbstractSvxPostItDialog_Impl, NextHdl, SvxPostItDialog&, void) -{ - aNextHdl.Call(*this); -} + bool StartExecuteAsync(VclAbstractDialog::AsyncContext& rCtx) override + { + if constexpr (Async) + return Dialog::runAsync(this->m_pDlg, rCtx.maEndDialogFn); + else + return Base::StartExecuteAsync(rCtx); // assert / fail + } -IMPL_LINK_NOARG(AbstractSvxPostItDialog_Impl, PrevHdl, SvxPostItDialog&, void) -{ - aPrevHdl.Call(*this); -} +protected: + Ptr<Dialog> m_pDlg; +}; -std::shared_ptr<weld::Dialog> AbstractSvxPostItDialog_Impl::GetDialog() -{ - return m_xDlg->GetDialog(); -} +// Base for synchronously called dialogs, using unique_ptr +template <class Base, class Dialog> +using ControllerImpl_Sync = ControllerImpl_BASE<Base, Dialog, std::unique_ptr, false>; -OUString AbstractPasswordToOpenModifyDialog_Impl::GetPasswordToOpen() const -{ - return m_xDlg->GetPasswordToOpen(); -} +// Base for synchronously called dialogs, using shared_ptr +template <class Base, class Dialog> +using ControllerImpl_Sync_Shared = ControllerImpl_BASE<Base, Dialog, std::shared_ptr, false>; -OUString AbstractPasswordToOpenModifyDialog_Impl::GetPasswordToModify() const -{ - return m_xDlg->GetPasswordToModify(); -} +// Base for asynchronously called dialogs +template <class Base, class Dialog> +using ControllerImpl_Async = ControllerImpl_BASE<Base, Dialog, std::shared_ptr, true>; -bool AbstractPasswordToOpenModifyDialog_Impl::IsRecommendToOpenReadonly() const -{ - return m_xDlg->IsRecommendToOpenReadonly(); -} +// Dialogs with simplest interface -void AbstractPasswordToOpenModifyDialog_Impl::Response(sal_Int32 nResult) -{ - m_xDlg->response(nResult); -} +using CuiAbstractController_Impl = ControllerImpl_Sync<VclAbstractDialog, weld::DialogController>; -void AbstractPasswordToOpenModifyDialog_Impl::AllowEmpty() -{ - m_xDlg->AllowEmpty(); +using CuiAbstractControllerAsync_Impl + = ControllerImpl_Async<VclAbstractDialog, weld::DialogController>; } // Create dialogs with simplest interface @@ -884,14 +212,52 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateFrameDialog(weld::Wi return nullptr; } +namespace +{ +class AbstractSecurityOptionsDialog_Impl final + : public ControllerImpl_Sync<AbstractSecurityOptionsDialog, SecurityOptionsDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + bool SetSecurityOptions() override { return m_pDlg->SetSecurityOptions(); } +}; +} + VclPtr<AbstractSecurityOptionsDialog> AbstractDialogFactory_Impl::CreateSvxSecurityOptionsDialog(weld::Window* pParent) { return VclPtr<AbstractSecurityOptionsDialog_Impl>::Create(std::make_unique<svx::SecurityOptionsDialog>(pParent)); } -bool AbstractSecurityOptionsDialog_Impl::SetSecurityOptions() +namespace +{ +class CuiAbstractTabController_Impl final + : public ControllerImpl_Async<SfxAbstractTabDialog, SfxTabDialogController> { - return m_xDlg->SetSecurityOptions(); +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + 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); } + + // screenshotting + std::vector<OUString> getAllPageUIXMLDescriptions() const override + { + return m_pDlg->getAllPageUIXMLDescriptions(); + } + bool selectPageByUIXMLDescription(const OUString& rUIXMLDescription) override + { + return m_pDlg->selectPageByUIXMLDescription(rUIXMLDescription); + } + BitmapEx createScreenshot() const override { return m_pDlg->createScreenshot(); } + OUString GetScreenshotId() const override { return m_pDlg->GetScreenshotId(); } +}; } // TabDialog outside the drawing layer @@ -917,6 +283,29 @@ VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateTextTabDialog(wel return VclPtr<CuiAbstractTabController_Impl>::Create(std::make_shared<SvxTextTabDialog>(pParent, pAttrSet, pView)); } +namespace +{ +// AbstractSvxCaptionDialog implementations just forwards everything to the dialog +class AbstractSvxCaptionDialog_Impl final + : public ControllerImpl_Async<AbstractSvxCaptionDialog, SvxCaptionTabDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void SetValidateFramePosLink(const Link<SvxSwFrameValidation&, void>& rLink) override + { + m_pDlg->SetValidateFramePosLink(rLink); + } + 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); } + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } +}; +} + // TabDialog that use functionality of the drawing layer and add AnchorTypes -- for SvxCaptionTabDialog VclPtr<AbstractSvxCaptionDialog> AbstractDialogFactory_Impl::CreateCaptionDialog(weld::Window* pParent, const SdrView* pView, @@ -925,11 +314,93 @@ VclPtr<AbstractSvxCaptionDialog> AbstractDialogFactory_Impl::CreateCaptionDialog return VclPtr<AbstractSvxCaptionDialog_Impl>::Create(std::make_shared<SvxCaptionTabDialog>(pParent, pView, nAnchorTypes)); } +namespace +{ +class AbstractHangulHanjaConversionDialog_Impl final + : public ControllerImpl_Sync<AbstractHangulHanjaConversionDialog, HangulHanjaConversionDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void EndDialog(sal_Int32 nResult) override { m_pDlg->response(nResult); } + void EnableRubySupport(bool bVal) override { m_pDlg->EnableRubySupport(bVal); } + void SetByCharacter(bool bByCharacter) override { m_pDlg->SetByCharacter(bByCharacter); } + void SetConversionDirectionState( + bool bTryBothDirections, + editeng::HangulHanjaConversion::ConversionDirection ePrimaryConversionDirection) override + { + m_pDlg->SetConversionDirectionState(bTryBothDirections, ePrimaryConversionDirection); + } + void SetConversionFormat(editeng::HangulHanjaConversion::ConversionFormat eType) override + { + m_pDlg->SetConversionFormat(eType); + } + void SetOptionsChangedHdl(const Link<LinkParamNone*, void>& rHdl) override + { + m_pDlg->SetOptionsChangedHdl(rHdl); + } + void SetIgnoreHdl(const Link<weld::Button&, void>& rHdl) override + { + m_pDlg->SetIgnoreHdl(rHdl); + } + void SetIgnoreAllHdl(const Link<weld::Button&, void>& rHdl) override + { + m_pDlg->SetIgnoreAllHdl(rHdl); + } + void SetChangeHdl(const Link<weld::Button&, void>& rHdl) override + { + m_pDlg->SetChangeHdl(rHdl); + } + void SetChangeAllHdl(const Link<weld::Button&, void>& rHdl) override + { + m_pDlg->SetChangeAllHdl(rHdl); + } + void SetClickByCharacterHdl(const Link<weld::Toggleable&, void>& rHdl) override + { + m_pDlg->SetClickByCharacterHdl(rHdl); + }; + void SetConversionFormatChangedHdl(const Link<weld::Toggleable&, void>& rHdl) override + { + m_pDlg->SetConversionFormatChangedHdl(rHdl); + }; + void SetFindHdl(const Link<weld::Button&, void>& _rHdl) override { m_pDlg->SetFindHdl(_rHdl); } + bool GetUseBothDirections() const override { return m_pDlg->GetUseBothDirections(); } + editeng::HangulHanjaConversion::ConversionDirection GetDirection( + editeng::HangulHanjaConversion::ConversionDirection eDefaultDirection) const override + { + return m_pDlg->GetDirection(eDefaultDirection); + } + void SetCurrentString(const OUString& rNewString, + const css::uno::Sequence<OUString>& rSuggestions, + bool bOriginatesFromDocument = true) override + { + m_pDlg->SetCurrentString(rNewString, rSuggestions, bOriginatesFromDocument); + } + OUString GetCurrentString() const override { return m_pDlg->GetCurrentString(); } + editeng::HangulHanjaConversion::ConversionFormat GetConversionFormat() const override + { + return m_pDlg->GetConversionFormat(); + } + void FocusSuggestion() override { m_pDlg->FocusSuggestion(); } + OUString GetCurrentSuggestion() const override { return m_pDlg->GetCurrentSuggestion(); } +}; +} + VclPtr<AbstractHangulHanjaConversionDialog> AbstractDialogFactory_Impl::CreateHangulHanjaConversionDialog(weld::Widget* pParent) { return VclPtr<AbstractHangulHanjaConversionDialog_Impl>::Create(std::make_unique<HangulHanjaConversionDialog>(pParent)); } +namespace +{ +class AbstractThesaurusDialog_Impl final + : public ControllerImpl_Async<AbstractThesaurusDialog, SvxThesaurusDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetWord() override { return m_pDlg->GetWord(); } +}; +} + VclPtr<AbstractThesaurusDialog> AbstractDialogFactory_Impl::CreateThesaurusDialog(weld::Widget* pParent, css::uno::Reference<css::linguistic2::XThesaurus> xThesaurus, const OUString &rWord, LanguageType nLanguage) @@ -937,6 +408,21 @@ VclPtr<AbstractThesaurusDialog> AbstractDialogFactory_Impl::CreateThesaurusDialo return VclPtr<AbstractThesaurusDialog_Impl>::Create(std::make_shared<SvxThesaurusDialog>(pParent, xThesaurus, rWord, nLanguage)); } +#if !ENABLE_WASM_STRIP_EXTRA +namespace +{ +class AbstractHyphenWordDialog_Impl final + : public ControllerImpl_Sync<AbstractHyphenWordDialog, SvxHyphenWordDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor +#if ENABLE_WASM_STRIP_HUNSPELL + short Execute() override { return 0; } +#endif +}; +} +#endif + VclPtr<AbstractHyphenWordDialog> AbstractDialogFactory_Impl::CreateHyphenWordDialog(weld::Widget* pParent, const OUString &rWord, LanguageType nLang, css::uno::Reference< css::linguistic2::XHyphenator > &xHyphen, @@ -954,16 +440,52 @@ VclPtr<AbstractHyphenWordDialog> AbstractDialogFactory_Impl::CreateHyphenWordDia #endif } +namespace +{ +class AbstractFmShowColsDialog_Impl final + : public ControllerImpl_Sync<AbstractFmShowColsDialog, FmShowColsDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void SetColumns(const Reference<XIndexContainer>& xCols) override { m_pDlg->SetColumns(xCols); } +}; +} + VclPtr<AbstractFmShowColsDialog> AbstractDialogFactory_Impl::CreateFmShowColsDialog(weld::Window* pParent) { return VclPtr<AbstractFmShowColsDialog_Impl>::Create(std::make_unique<FmShowColsDialog>(pParent)); } +namespace +{ +class AbstractSvxZoomDialog_Impl final + : public ControllerImpl_Sync<AbstractSvxZoomDialog, SvxZoomDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void SetLimits(sal_uInt16 nMin, sal_uInt16 nMax) override { m_pDlg->SetLimits(nMin, nMax); } + void HideButton(ZoomButtonId nBtnId) override { m_pDlg->HideButton(nBtnId); } + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } +}; +} + VclPtr<AbstractSvxZoomDialog> AbstractDialogFactory_Impl::CreateSvxZoomDialog(weld::Window* pParent, const SfxItemSet& rCoreSet) { return VclPtr<AbstractSvxZoomDialog_Impl>::Create(std::make_unique<SvxZoomDialog>(pParent, rCoreSet)); } +namespace +{ +class AbstractSpellDialog_Impl final : public ControllerImpl_Async<AbstractSpellDialog, SpellDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void InvalidateDialog() override { m_pDlg->InvalidateDialog(); } + std::shared_ptr<SfxDialogController> GetController() override { return m_pDlg; } + SfxBindings& GetBindings() override { return m_pDlg->GetBindings(); } +}; +} + VclPtr<AbstractSpellDialog> AbstractDialogFactory_Impl::CreateSvxSpellDialog( weld::Window* pParent, SfxBindings* pBindings, @@ -983,49 +505,49 @@ void AbstractDialogFactory_Impl::ShowAsyncScriptErrorDialog(weld::Window* pParen return SvxScriptErrorDialog::ShowAsyncErrorDialog(pParent, rException); } +namespace +{ +class AbstractScriptSelectorDialog_Impl final + : public ControllerImpl_Async<AbstractScriptSelectorDialog, SvxScriptSelectorDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetScriptURL() const override { return m_pDlg->GetScriptURL(); } + void SetRunLabel() override { m_pDlg->SetRunLabel(); } +}; +} + VclPtr<AbstractScriptSelectorDialog> AbstractDialogFactory_Impl::CreateScriptSelectorDialog(weld::Window* pParent, const Reference<frame::XFrame>& rxFrame) { return VclPtr<AbstractScriptSelectorDialog_Impl>::Create(std::make_shared<SvxScriptSelectorDialog>(pParent, rxFrame)); } -OUString AbstractScriptSelectorDialog_Impl::GetScriptURL() const +#if HAVE_FEATURE_SCRIPTING +namespace { - return m_xDlg->GetScriptURL(); -} - -void AbstractScriptSelectorDialog_Impl::SetRunLabel() +class AbstractMacroManagerDialog_Impl final + : public ControllerImpl_Async<AbstractMacroManagerDialog, MacroManagerDialog> { - m_xDlg->SetRunLabel(); +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetScriptURL() const override { return m_pDlg->GetScriptURL(); } + void LoadLastUsedMacro() const override { m_pDlg->LoadLastUsedMacro(); } +}; } +#endif VclPtr<AbstractMacroManagerDialog> AbstractDialogFactory_Impl::CreateMacroManagerDialog(weld::Window* pParent, - const Reference<frame::XFrame>& rxFrame) -{ -#if HAVE_FEATURE_SCRIPTING - return VclPtr<AbstractMacroManagerDialog_Impl>::Create( - std::make_shared<MacroManagerDialog>(pParent, rxFrame)); -#else - (void)pParent; - (void)rxFrame; - return nullptr; -#endif -} - -OUString AbstractMacroManagerDialog_Impl::GetScriptURL() const -{ -#if HAVE_FEATURE_SCRIPTING - return m_xDlg->GetScriptURL(); -#else - return OUString(); -#endif -} - -void AbstractMacroManagerDialog_Impl::LoadLastUsedMacro() const + const Reference<frame::XFrame>& rxFrame) { #if HAVE_FEATURE_SCRIPTING - m_xDlg->LoadLastUsedMacro(); + return VclPtr<AbstractMacroManagerDialog_Impl>::Create( + std::make_shared<MacroManagerDialog>(pParent, rxFrame)); +#else + (void)pParent; + (void)rxFrame; + return nullptr; #endif } @@ -1035,12 +557,33 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxScriptOrgDialog(w return VclPtr<CuiAbstractController_Impl>::Create(std::make_unique<SvxScriptOrgDialog>(pParent, rLanguage)); } +namespace +{ +class AbstractTitleDialog_Impl final : public ControllerImpl_Sync<AbstractTitleDialog, TitleDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetTitle() const override { return m_pDlg->GetTitle(); } +}; +} + VclPtr<AbstractTitleDialog> AbstractDialogFactory_Impl::CreateTitleDialog(weld::Widget* pParent, const OUString& rOldText) { return VclPtr<AbstractTitleDialog_Impl>::Create(std::make_unique<TitleDialog>(pParent, rOldText)); } +namespace +{ +class AbstractGalleryIdDialog_Impl final + : public ControllerImpl_Sync<AbstractGalleryIdDialog, GalleryIdDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + sal_uInt32 GetId() const override { return m_pDlg->GetId(); } +}; +} + VclPtr<AbstractGalleryIdDialog> AbstractDialogFactory_Impl::CreateGalleryIdDialog(weld::Widget* pParent, GalleryTheme* pThm) { @@ -1055,6 +598,20 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateGalleryThemeProperti pParent, pData, pItemSet)); } +namespace +{ +class AbstractURLDlg_Impl final : public ControllerImpl_Sync<AbstractURLDlg, URLDlg> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetURL() const override { return m_pDlg->GetURL(); } + OUString GetAltText() const override { return m_pDlg->GetAltText(); } + OUString GetDesc() const override { return m_pDlg->GetDesc(); } + OUString GetTarget() const override { return m_pDlg->GetTarget(); } + OUString GetName() const override { return m_pDlg->GetName(); } +}; +} + VclPtr<AbstractURLDlg> AbstractDialogFactory_Impl::CreateURLDialog(weld::Widget* pParent, const OUString& rURL, const OUString& rAltText, const OUString& rDescription, const OUString& rTarget, const OUString& rName, @@ -1079,6 +636,20 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxSearchAttributeDi return VclPtr<CuiAbstractController_Impl>::Create(std::make_unique<SvxSearchAttributeDialog>(pParent, rLst, pWhRanges)); } +namespace +{ +class AbstractSvxSearchSimilarityDialog_Impl final + : public ControllerImpl_Async<AbstractSvxSearchSimilarityDialog, SvxSearchSimilarityDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + sal_uInt16 GetOther() override { return m_pDlg->GetOther(); } + sal_uInt16 GetShorter() override { return m_pDlg->GetShorter(); } + sal_uInt16 GetLonger() override { return m_pDlg->GetLonger(); } + bool IsRelaxed() override { return m_pDlg->IsRelaxed(); } +}; +} + VclPtr<AbstractSvxSearchSimilarityDialog> AbstractDialogFactory_Impl::CreateSvxSearchSimilarityDialog(weld::Window* pParent, bool bRelax, sal_uInt16 nOther, @@ -1100,6 +671,30 @@ VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxBorderBackgrou bEnableDrawingLayerFillStyles)); } +namespace +{ +// AbstractSvxTransformTabDialog implementations just forwards everything to the dialog +class AbstractSvxTransformTabDialog_Impl final + : public ControllerImpl_Async<AbstractSvxTransformTabDialog, SvxTransformTabDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void SetValidateFramePosLink(const Link<SvxSwFrameValidation&, void>& rLink) override + { + m_pDlg->SetValidateFramePosLink(rLink); + } + 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); } +}; +} + VclPtr<AbstractSvxTransformTabDialog> AbstractDialogFactory_Impl::CreateSvxTransformTabDialog(weld::Window* pParent, const SfxItemSet* pAttr, const SdrView* pView, @@ -1120,6 +715,20 @@ VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSchTransformTabDi return VclPtr<CuiAbstractTabController_Impl>::Create(std::move(pDlg)); } +namespace +{ +class AbstractSvxJSearchOptionsDialog_Impl final + : public ControllerImpl_Sync<AbstractSvxJSearchOptionsDialog, SvxJSearchOptionsDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + TransliterationFlags GetTransliterationFlags() const override + { + return m_pDlg->GetTransliterationFlags(); + } +}; +} + VclPtr<AbstractSvxJSearchOptionsDialog> AbstractDialogFactory_Impl::CreateSvxJSearchOptionsDialog(weld::Window* pParent, const SfxItemSet& rOptionsSet, TransliterationFlags nInitialFlags) @@ -1127,11 +736,37 @@ VclPtr<AbstractSvxJSearchOptionsDialog> AbstractDialogFactory_Impl::CreateSvxJSe return VclPtr<AbstractSvxJSearchOptionsDialog_Impl>::Create(std::make_unique<SvxJSearchOptionsDialog>(pParent, rOptionsSet, nInitialFlags)); } +namespace +{ +class AbstractFmInputRecordNoDialog_Impl final + : public ControllerImpl_Sync<AbstractFmInputRecordNoDialog, FmInputRecordNoDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void SetValue(tools::Long nNew) override { m_pDlg->SetValue(nNew); } + tools::Long GetValue() const override { return m_pDlg->GetValue(); } +}; +} + VclPtr<AbstractFmInputRecordNoDialog> AbstractDialogFactory_Impl::CreateFmInputRecordNoDialog(weld::Window* pParent) { return VclPtr<AbstractFmInputRecordNoDialog_Impl>::Create(std::make_unique<FmInputRecordNoDialog>(pParent)); } +namespace +{ +class AbstractSvxNewDictionaryDialog_Impl final + : public ControllerImpl_Sync<AbstractSvxNewDictionaryDialog, SvxNewDictionaryDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + Reference<css::linguistic2::XDictionary> GetNewDictionary() override + { + return m_pDlg->GetNewDictionary(); + } +}; +} + VclPtr<AbstractSvxNewDictionaryDialog> AbstractDialogFactory_Impl::CreateSvxNewDictionaryDialog(weld::Window* pParent) { return VclPtr<AbstractSvxNewDictionaryDialog_Impl>::Create(std::make_unique<SvxNewDictionaryDialog>(pParent)); @@ -1142,37 +777,195 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxEditDictionaryDia return VclPtr<CuiAbstractController_Impl>::Create(std::make_unique<SvxEditDictionaryDialog>(pParent, rName)); } +namespace +{ +class AbstractSvxNameDialog_Impl final + : public ControllerImpl_Sync<AbstractSvxNameDialog, SvxNameDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetName() override { return m_pDlg->GetName(); } + void SetCheckNameHdl(const Link<AbstractSvxNameDialog&, bool>& rLink) override; + void SetCheckNameTooltipHdl(const Link<AbstractSvxNameDialog&, OUString>& rLink) override; + void SetEditHelpId(const OUString& rHelpId) override { m_pDlg->SetEditHelpId(rHelpId); } + //from class Window + void SetHelpId(const OUString& rHelpId) override { m_pDlg->set_help_id(rHelpId); } + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } + +private: + Link<AbstractSvxNameDialog&, bool> aCheckNameHdl; + Link<AbstractSvxNameDialog&, OUString> aCheckNameTooltipHdl; + DECL_LINK(CheckNameHdl, SvxNameDialog&, bool); + DECL_LINK(CheckNameTooltipHdl, SvxNameDialog&, OUString); +}; +} + +void AbstractSvxNameDialog_Impl::SetCheckNameHdl(const Link<AbstractSvxNameDialog&, bool>& rLink) +{ + aCheckNameHdl = rLink; + if (rLink.IsSet()) + m_pDlg->SetCheckNameHdl(LINK(this, AbstractSvxNameDialog_Impl, CheckNameHdl)); + else + m_pDlg->SetCheckNameHdl(Link<SvxNameDialog&, bool>()); +} + +void AbstractSvxNameDialog_Impl::SetCheckNameTooltipHdl( + const Link<AbstractSvxNameDialog&, OUString>& rLink) +{ + aCheckNameTooltipHdl = rLink; + if (rLink.IsSet()) + m_pDlg->SetCheckNameTooltipHdl(LINK(this, AbstractSvxNameDialog_Impl, CheckNameTooltipHdl)); + else + m_pDlg->SetCheckNameTooltipHdl(Link<SvxNameDialog&, OUString>()); +} + +IMPL_LINK_NOARG(AbstractSvxNameDialog_Impl, CheckNameHdl, SvxNameDialog&, bool) +{ + return aCheckNameHdl.Call(*this); +} + +IMPL_LINK_NOARG(AbstractSvxNameDialog_Impl, CheckNameTooltipHdl, SvxNameDialog&, OUString) +{ + return aCheckNameTooltipHdl.Call(*this); +} + VclPtr<AbstractSvxNameDialog> AbstractDialogFactory_Impl::CreateSvxNameDialog(weld::Window* pParent, const OUString& rName, const OUString& rDesc, const OUString& rTitle) { return VclPtr<AbstractSvxNameDialog_Impl>::Create(std::make_unique<SvxNameDialog>(pParent, rName, rDesc, rTitle)); } +namespace +{ +class AbstractSvxObjectNameDialog_Impl final + : public ControllerImpl_Async<AbstractSvxObjectNameDialog, SvxObjectNameDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetName() override { return m_pDlg->GetName(); } + void SetCheckNameHdl(const Link<AbstractSvxObjectNameDialog&, bool>& rLink) override; + +private: + Link<AbstractSvxObjectNameDialog&, bool> aCheckNameHdl; + DECL_LINK(CheckNameHdl, SvxObjectNameDialog&, bool); +}; +} + +void AbstractSvxObjectNameDialog_Impl::SetCheckNameHdl( + const Link<AbstractSvxObjectNameDialog&, bool>& rLink) +{ + aCheckNameHdl = rLink; + + if (rLink.IsSet()) + { + m_pDlg->SetCheckNameHdl(LINK(this, AbstractSvxObjectNameDialog_Impl, CheckNameHdl)); + } + else + { + m_pDlg->SetCheckNameHdl(Link<SvxObjectNameDialog&, bool>()); + } +} + +IMPL_LINK_NOARG(AbstractSvxObjectNameDialog_Impl, CheckNameHdl, SvxObjectNameDialog&, bool) +{ + return aCheckNameHdl.Call(*this); +} + VclPtr<AbstractSvxObjectNameDialog> AbstractDialogFactory_Impl::CreateSvxObjectNameDialog(weld::Window* pParent, const OUString& rName) { return VclPtr<AbstractSvxObjectNameDialog_Impl>::Create(std::make_unique<SvxObjectNameDialog>(pParent, rName)); } +namespace +{ +class AbstractSvxObjectTitleDescDialog_Impl final + : public ControllerImpl_Async<AbstractSvxObjectTitleDescDialog, SvxObjectTitleDescDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetTitle() override { return m_pDlg->GetTitle(); } + OUString GetDescription() override { return m_pDlg->GetDescription(); } + bool IsDecorative() override { return m_pDlg->IsDecorative(); } +}; +} + VclPtr<AbstractSvxObjectTitleDescDialog> AbstractDialogFactory_Impl::CreateSvxObjectTitleDescDialog(weld::Window* pParent, const OUString& rTitle, const OUString& rDescription, bool const isDecorative) { return VclPtr<AbstractSvxObjectTitleDescDialog_Impl>::Create(std::make_unique<SvxObjectTitleDescDialog>(pParent, rTitle, rDescription, isDecorative)); } +namespace +{ +class AbstractSvxMultiPathDialog_Impl final + : public ControllerImpl_Sync<AbstractSvxMultiPathDialog, SvxMultiPathDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetPath() const override { return m_pDlg->GetPath(); } + void SetPath(const OUString& rPath) override { m_pDlg->SetPath(rPath); } + void SetTitle(const OUString& rNewTitle) override { m_pDlg->SetTitle(rNewTitle); } +}; +} + VclPtr<AbstractSvxMultiPathDialog> AbstractDialogFactory_Impl::CreateSvxMultiPathDialog(weld::Window* pParent) { return VclPtr<AbstractSvxMultiPathDialog_Impl>::Create(std::make_unique<SvxMultiPathDialog>(pParent)); } +namespace +{ +class AbstractSvxPathSelectDialog_Impl final + : public ControllerImpl_Sync<AbstractSvxMultiPathDialog, SvxPathSelectDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetPath() const override { return m_pDlg->GetPath(); } + void SetPath(const OUString& rPath) override { m_pDlg->SetPath(rPath); } + void SetTitle(const OUString& rNewTitle) override { m_pDlg->SetTitle(rNewTitle); } +}; +} + VclPtr<AbstractSvxMultiPathDialog> AbstractDialogFactory_Impl::CreateSvxPathSelectDialog(weld::Window* pParent) { return VclPtr<AbstractSvxPathSelectDialog_Impl>::Create(std::make_unique<SvxPathSelectDialog>(pParent)); } +namespace +{ +class AbstractSvxHpLinkDlg_Impl final + : public ControllerImpl_Sync_Shared<AbstractSvxHpLinkDlg, SvxHpLinkDlg> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + std::shared_ptr<SfxDialogController> GetController() override { return m_pDlg; } + bool QueryClose() override { return m_pDlg->QueryClose(); } +}; +} + VclPtr<AbstractSvxHpLinkDlg> AbstractDialogFactory_Impl::CreateSvxHpLinkDlg(SfxChildWindow* pChild, SfxBindings* pBindings, weld::Window* pParent) { return VclPtr<AbstractSvxHpLinkDlg_Impl>::Create(std::make_shared<SvxHpLinkDlg>(pBindings, pChild, pParent)); } +namespace +{ +class AbstractFmSearchDialog_Impl final + : public ControllerImpl_Sync<AbstractFmSearchDialog, FmSearchDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void SetFoundHandler(const Link<FmFoundRecordInformation&, void>& lnk) override + { + m_pDlg->SetFoundHandler(lnk); + } + void SetCanceledNotFoundHdl(const Link<FmFoundRecordInformation&, void>& lnk) override + { + m_pDlg->SetCanceledNotFoundHdl(lnk); + } + void SetActiveField(const OUString& strField) override { m_pDlg->SetActiveField(strField); } +}; +} + VclPtr<AbstractFmSearchDialog> AbstractDialogFactory_Impl::CreateFmSearchDialog(weld::Window* pParent, const OUString& strInitialText, const std::vector< OUString >& _rContexts, @@ -1184,6 +977,20 @@ VclPtr<AbstractFmSearchDialog> AbstractDialogFactory_Impl::CreateFmSearchDialog( } +namespace +{ +class AbstractGraphicFilterDialog_Impl final + : public ControllerImpl_Async<AbstractGraphicFilterDialog, GraphicFilterDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + Graphic GetFilteredGraphic(const Graphic& rGraphic, double fScaleX, double fScaleY) override + { + return m_pDlg->GetFilteredGraphic(rGraphic, fScaleX, fScaleY); + } +}; +} + VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFilterEmboss(weld::Window* pParent, const Graphic& rGraphic) { @@ -1220,6 +1027,25 @@ VclPtr<AbstractGraphicFilterDialog> AbstractDialogFactory_Impl::CreateGraphicFil return VclPtr<AbstractGraphicFilterDialog_Impl>::Create(std::make_unique<GraphicFilterMosaic>(pParent, rGraphic, 4, 4, false /*bEnhanceEdges*/)); } +namespace +{ +// AbstractSvxAreaTabDialog implementations just forwards everything to the dialog +class AbstractSvxAreaTabDialog_Impl final + : public ControllerImpl_Async<AbstractSvxAreaTabDialog, SvxAreaTabDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + 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); } + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } +}; +} + VclPtr<AbstractSvxAreaTabDialog> AbstractDialogFactory_Impl::CreateSvxAreaTabDialog(weld::Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, @@ -1238,12 +1064,43 @@ VclPtr<SfxAbstractTabDialog> AbstractDialogFactory_Impl::CreateSvxLineTabDialog( return VclPtr<CuiAbstractTabController_Impl>::Create(std::make_shared<SvxLineTabDialog>(pParent, pAttr, pModel, pObj,bHasObj)); } +namespace +{ +class AbstractSvxCharacterMapDialog_Impl + : public ControllerImpl_Async<SfxAbstractDialog, SvxCharacterMap> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + bool StartExecuteAsync(AsyncContext& rCtx) override + { + m_pDlg->prepForRun(); + return SvxCharacterMap::runAsync(m_pDlg, rCtx.maEndDialogFn); + } + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } +}; +} + VclPtr<SfxAbstractDialog> AbstractDialogFactory_Impl::CreateCharMapDialog(weld::Window* pParent, const SfxItemSet& rAttr, const Reference< XFrame >& rDocumentFrame) { return VclPtr<AbstractSvxCharacterMapDialog_Impl>::Create(std::make_unique<SvxCharacterMap>(pParent, &rAttr, rDocumentFrame)); } +namespace +{ +class CuiAbstractSingleTabController_Impl final + : public ControllerImpl_Async<SfxAbstractDialog, SfxSingleTabDialogController> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } + + // From class Window. + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } +}; +} + VclPtr<SfxAbstractDialog> AbstractDialogFactory_Impl::CreateEventConfigDialog(weld::Widget* pParent, std::unique_ptr<const SfxItemSet> xAttr, const Reference< XFrame >& rDocumentFrame) @@ -1269,6 +1126,65 @@ VclPtr<SfxAbstractDialog> AbstractDialogFactory_Impl::CreateSfxDialog(weld::Wind return nullptr; } +namespace +{ +class AbstractSvxPostItDialog_Impl final + : public ControllerImpl_Sync<AbstractSvxPostItDialog, SvxPostItDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + // From class Window + void SetText(const OUString& rStr) override { m_pDlg->set_title(rStr); } + const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } + void SetPrevHdl(const Link<AbstractSvxPostItDialog&, void>& rLink) override; + void SetNextHdl(const Link<AbstractSvxPostItDialog&, void>& rLink) override; + void EnableTravel(bool bNext, bool bPrev) override { m_pDlg->EnableTravel(bNext, bPrev); } + OUString GetNote() override { return m_pDlg->GetNote(); } + void SetNote(const OUString& rTxt) override { m_pDlg->SetNote(rTxt); } + void ShowLastAuthor(const OUString& rAuthor, const OUString& rDate) override + { + m_pDlg->ShowLastAuthor(rAuthor, rDate); + } + void DontChangeAuthor() override { m_pDlg->DontChangeAuthor(); } + void HideAuthor() override { m_pDlg->HideAuthor(); } + std::shared_ptr<weld::Dialog> GetDialog() override { return m_pDlg->GetDialog(); } + +private: + Link<AbstractSvxPostItDialog&, void> aNextHdl; + Link<AbstractSvxPostItDialog&, void> aPrevHdl; + DECL_LINK(NextHdl, SvxPostItDialog&, void); + DECL_LINK(PrevHdl, SvxPostItDialog&, void); +}; + +void AbstractSvxPostItDialog_Impl::SetNextHdl(const Link<AbstractSvxPostItDialog&, void>& rLink) +{ + aNextHdl = rLink; + if (rLink.IsSet()) + m_pDlg->SetNextHdl(LINK(this, AbstractSvxPostItDialog_Impl, NextHdl)); + else + m_pDlg->SetNextHdl(Link<SvxPostItDialog&, void>()); +} + +void AbstractSvxPostItDialog_Impl::SetPrevHdl(const Link<AbstractSvxPostItDialog&, void>& rLink) +{ + aPrevHdl = rLink; + if (rLink.IsSet()) + m_pDlg->SetPrevHdl(LINK(this, AbstractSvxPostItDialog_Impl, PrevHdl)); + else + m_pDlg->SetPrevHdl(Link<SvxPostItDialog&, void>()); +} + +IMPL_LINK_NOARG(AbstractSvxPostItDialog_Impl, NextHdl, SvxPostItDialog&, void) +{ + aNextHdl.Call(*this); +} + +IMPL_LINK_NOARG(AbstractSvxPostItDialog_Impl, PrevHdl, SvxPostItDialog&, void) +{ + aPrevHdl.Call(*this); +} +} + VclPtr<AbstractSvxPostItDialog> AbstractDialogFactory_Impl::CreateSvxPostItDialog(weld::Widget* pParent, const SfxItemSet& rCoreSet, bool bPrevNext) @@ -1278,26 +1194,21 @@ VclPtr<AbstractSvxPostItDialog> AbstractDialogFactory_Impl::CreateSvxPostItDialo namespace { -class SvxMacroAssignDialog_Impl : public VclAbstractDialog +class SvxMacroAssignDialog_Impl : public ControllerImpl_Async<VclAbstractDialog, SvxMacroAssignDlg> { public: SvxMacroAssignDialog_Impl( weld::Window* _pParent, const Reference< XFrame >& _rxDocumentFrame, const bool _bUnoDialogMode, const Reference< XNameReplace >& _rxEvents, const sal_uInt16 _nInitiallySelectedEvent ) - :m_aItems( SfxGetpApp()->GetPool(), svl::Items<SID_ATTR_MACROITEM, SID_ATTR_MACROITEM> ) + : ControllerImpl_BASE(nullptr) + , m_aItems( SfxGetpApp()->GetPool(), svl::Items<SID_ATTR_MACROITEM, SID_ATTR_MACROITEM> ) { m_aItems.Put( SfxBoolItem( SID_ATTR_MACROITEM, _bUnoDialogMode ) ); - m_xDlg = std::make_shared<SvxMacroAssignDlg>(_pParent, _rxDocumentFrame, m_aItems, _rxEvents, _nInitiallySelectedEvent); + m_pDlg = std::make_shared<SvxMacroAssignDlg>(_pParent, _rxDocumentFrame, m_aItems, _rxEvents, _nInitiallySelectedEvent); } - virtual short Execute() override; - virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; - private: SfxItemSet m_aItems; - std::shared_ptr<SvxMacroAssignDlg> m_xDlg; }; - -IMPL_ABSTDLG_CLASS_ASYNC(SvxMacroAssignDialog, SvxMacroAssignDlg) } @@ -1450,6 +1361,22 @@ GetTabPageRanges AbstractDialogFactory_Impl::GetTabPageRangesFunc( sal_uInt16 nI return nullptr; } +namespace +{ +class AbstractInsertObjectDialog_Impl final + : public ControllerImpl_Sync<SfxAbstractInsertObjectDialog, InsertObjectDialog_Impl> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + Reference<css::embed::XEmbeddedObject> GetObject() override { return m_pDlg->GetObject(); } + Reference<css::io::XInputStream> GetIconIfIconified(OUString* pGraphicMediaType) override + { + return m_pDlg->GetIconIfIconified(pGraphicMediaType); + } + bool IsCreateNew() override { return m_pDlg->IsCreateNew(); } +}; +} + VclPtr<SfxAbstractInsertObjectDialog> AbstractDialogFactory_Impl::CreateInsertObjectDialog(weld::Window* pParent, const OUString& rCommand, const Reference <css::embed::XStorage>& xStor, const SvObjectServerList* pList) { @@ -1479,6 +1406,37 @@ VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateEditObjectDialog(wel return nullptr; } +namespace +{ +class AbstractPasteDialog_Impl final + : public ControllerImpl_Async<SfxAbstractPasteDialog, SvPasteObjectDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void Insert(SotClipboardFormatId nFormat, const OUString& rFormatName) override + { + m_pDlg->Insert(nFormat, rFormatName); + } + void InsertUno(const OUString& sCmd, const OUString& sLabel) override + { + m_pDlg->InsertUno(sCmd, sLabel); + } + void SetObjName(const SvGlobalName& rClass, const OUString& rObjName) override + { + m_pDlg->SetObjName(rClass, rObjName); + } + void PreGetFormat(const TransferableDataHelper& aHelper) override + { + m_pDlg->PreGetFormat(aHelper); + } + SotClipboardFormatId GetFormatOnly() override { return m_pDlg->GetFormatOnly(); } + SotClipboardFormatId GetFormat(const TransferableDataHelper& aHelper) override + { + return m_pDlg->GetFormat(aHelper); + } +}; +} + VclPtr<SfxAbstractPasteDialog> AbstractDialogFactory_Impl::CreatePasteDialog(weld::Window* pParent) { return VclPtr<AbstractPasteDialog_Impl>::Create(std::make_shared<SvPasteObjectDialog>(pParent)); @@ -1486,6 +1444,7 @@ VclPtr<SfxAbstractPasteDialog> AbstractDialogFactory_Impl::CreatePasteDialog(wel VclPtr<SfxAbstractLinksDialog> AbstractDialogFactory_Impl::CreateLinksDialog(weld::Window* pParent, sfx2::LinkManager* pMgr, bool bHTML, sfx2::SvBaseLink* p) { + using AbstractLinksDialog_Impl = ControllerImpl_Async<SfxAbstractLinksDialog, SvBaseLinksDlg>; auto xLinkDlg(std::make_unique<SvBaseLinksDlg>(pParent, pMgr, bHTML)); if (p) xLinkDlg->SetActLink(p); @@ -1517,6 +1476,21 @@ VclPtr<SvxAbstractInsRowColDlg> AbstractDialogFactory_Impl::CreateSvxInsRowColDl return VclPtr<SvxAbstractInsRowColDlg_Impl>::Create(std::make_shared<SvxInsRowColDlg>(pParent, bCol, rHelpId)); } +namespace +{ +class AbstractPasswordToOpenModifyDialog_Impl final + : public ControllerImpl_Async<AbstractPasswordToOpenModifyDialog, PasswordToOpenModifyDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + OUString GetPasswordToOpen() const override { return m_pDlg->GetPasswordToOpen(); } + OUString GetPasswordToModify() const override { return m_pDlg->GetPasswordToModify(); } + bool IsRecommendToOpenReadonly() const override { return m_pDlg->IsRecommendToOpenReadonly(); } + void Response(sal_Int32 nResult) override { m_pDlg->response(nResult); } + void AllowEmpty() override { m_pDlg->AllowEmpty(); } +}; +} + VclPtr<AbstractPasswordToOpenModifyDialog> AbstractDialogFactory_Impl::CreatePasswordToOpenModifyDialog( weld::Window * pParent, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify) { @@ -1525,9 +1499,23 @@ VclPtr<AbstractPasswordToOpenModifyDialog> AbstractDialogFactory_Impl::CreatePas VclPtr<AbstractScreenshotAnnotationDlg> AbstractDialogFactory_Impl::CreateScreenshotAnnotationDlg(weld::Dialog& rParentDialog) { + using AbstractScreenshotAnnotationDlg_Impl + = ControllerImpl_Sync<AbstractScreenshotAnnotationDlg, ScreenshotAnnotationDlg>; + return VclPtr<AbstractScreenshotAnnotationDlg_Impl>::Create(std::make_unique<ScreenshotAnnotationDlg>(rParentDialog)); } +namespace +{ +class AbstractSignatureLineDialog_Impl final + : public ControllerImpl_Async<AbstractSignatureLineDialog, SignatureLineDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void Apply() override { m_pDlg->Apply(); } +}; +} + VclPtr<AbstractSignatureLineDialog> AbstractDialogFactory_Impl::CreateSignatureLineDialog( weld::Window* pParent, const Reference<XModel> xModel, bool bEditExisting) { @@ -1535,6 +1523,17 @@ VclPtr<AbstractSignatureLineDialog> AbstractDialogFactory_Impl::CreateSignatureL std::make_unique<SignatureLineDialog>(pParent, xModel, bEditExisting)); } +namespace +{ +class AbstractSignSignatureLineDialog_Impl final + : public ControllerImpl_Async<AbstractSignSignatureLineDialog, SignSignatureLineDialog> +{ +public: + using ControllerImpl_BASE::ControllerImpl_BASE; // inherited ctor + void Apply() override { m_pDlg->Apply(); } +}; +} + VclPtr<AbstractSignSignatureLineDialog> AbstractDialogFactory_Impl::CreateSignSignatureLineDialog(weld::Window* pParent, const Reference<XModel> xModel) @@ -1546,6 +1545,8 @@ AbstractDialogFactory_Impl::CreateSignSignatureLineDialog(weld::Window* pParent, VclPtr<AbstractQrCodeGenDialog> AbstractDialogFactory_Impl::CreateQrCodeGenDialog( weld::Window* pParent, const Reference<XModel> xModel, bool bEditExisting) { + using AbstractQrCodeGenDialog_Impl + = ControllerImpl_Async<AbstractQrCodeGenDialog, QrCodeGenDialog>; return VclPtr<AbstractQrCodeGenDialog_Impl>::Create( std::make_shared<QrCodeGenDialog>(pParent, xModel, bEditExisting)); } @@ -1554,6 +1555,8 @@ VclPtr<AbstractAdditionsDialog> AbstractDialogFactory_Impl::CreateAdditionsDialo weld::Window* pParent, const OUString& sAdditionsTag) { #if HAVE_FEATURE_EXTENSIONS + using AbstractAdditionsDialog_Impl + = ControllerImpl_Async<AbstractAdditionsDialog, weld::GenericDialogController>; return VclPtr<AbstractAdditionsDialog_Impl>::Create( std::make_unique<AdditionsDialog>(pParent, sAdditionsTag)); #else @@ -1585,6 +1588,8 @@ AbstractDialogFactory_Impl::CreateTipOfTheDayDialog(weld::Window* pParent) VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateWidgetTestDialog(weld::Window* pParent) { + using CuiAbstractWidgetTestControllerAsync_Impl + = ControllerImpl_Async<VclAbstractDialog, weld::GenericDialogController>; return VclPtr<CuiAbstractWidgetTestControllerAsync_Impl>::Create( std::make_shared<WidgetTestDialog>(pParent)); } @@ -1601,6 +1606,7 @@ AbstractDialogFactory_Impl::CreateDiagramDialog( weld::Window* pParent, SdrObjGroup& rDiagram) { + using AbstractDiagramDialog_Impl = ControllerImpl_Async<AbstractDiagramDialog, DiagramDialog>; return VclPtr<AbstractDiagramDialog_Impl>::Create( std::make_unique<DiagramDialog>(pParent, rDiagram)); } diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx index 793cf193af09..caea8f6ee3ad 100644 --- a/cui/source/factory/dlgfact.hxx +++ b/cui/source/factory/dlgfact.hxx @@ -19,425 +19,6 @@ #pragma once #include <svx/svxdlg.hxx> -#include <svx/zoom_def.hxx> -#include <com/sun/star/container/XNameReplace.hpp> - -#include <tools/link.hxx> -#include <com/sun/star/frame/XFrame.hpp> - -#include <cfgutil.hxx> -#include <svx/cuicharmap.hxx> -#include <dlgname.hxx> -#include <cuifmsearch.hxx> -#include <cuigaldlg.hxx> -#include <cuigrfflt.hxx> -#include <cuihyperdlg.hxx> -#include <cuiimapwnd.hxx> -#include <cuisrchdlg.hxx> -#include <cuitabarea.hxx> -#include <cuitbxform.hxx> -#include <DiagramDialog.hxx> -#include <hangulhanjadlg.hxx> -#include <hyphen.hxx> -#include <insdlg.hxx> -#include <labdlg.hxx> -#include <linkdlg.hxx> -#include <multipat.hxx> -#include <optdict.hxx> -#include <passwdomdlg.hxx> -#include <pastedlg.hxx> -#include <postdlg.hxx> -#include <QrCodeGenDialog.hxx> -#include <screenshotannotationdlg.hxx> -#include <securityoptions.hxx> -#include <showcols.hxx> -#include <SignatureLineDialog.hxx> -#include <SignSignatureLineDialog.hxx> -#include <SpellDialog.hxx> -#include <srchxtra.hxx> -#include <thesdlg.hxx> -#include <transfrm.hxx> -#include <zoom.hxx> -#include <AdditionsDialog.hxx> - -#include <MacroManagerDialog.hxx> - -#define DECL_ABSTDLG_CLASS_(Class,Base,Dialog,StdPtr) \ -class Class##_Impl final : public Base \ -{ \ - StdPtr<Dialog> m_xDlg; \ -public: \ - explicit Class##_Impl(StdPtr<Dialog> p) : m_xDlg(std::move(p)) {} \ - virtual short Execute() override; - -#define DECL_ABSTDLG_CLASS_UNIQUE(Class,Base,Dialog) \ -DECL_ABSTDLG_CLASS_(Class,Base,Dialog,std::unique_ptr) - -#define DECL_ABSTDLG_CLASS_SHARED(Class,Base,Dialog) \ -DECL_ABSTDLG_CLASS_(Class,Base,Dialog,std::shared_ptr) - -#define IMPL_ABSTDLG_CLASS(Class) \ -short Class##_Impl::Execute() \ -{ \ - return m_xDlg->run(); \ -} - -#define DECL_ABSTDLG_CLASS(Class,Dialog) \ -DECL_ABSTDLG_CLASS_UNIQUE(Class,Class,Dialog) - -// Async AKA std::shared_ptr - -#define DECL_ABSTDLG_CLASS_SHARED_ASYNC(Class,Base,Dialog) \ -DECL_ABSTDLG_CLASS_SHARED(Class,Base,Dialog) \ - virtual bool StartExecuteAsync(AsyncContext &rCtx) override; - -#define DECL_ABSTDLG_CLASS_ASYNC(Class,Dialog) \ -DECL_ABSTDLG_CLASS_SHARED_ASYNC(Class,Class,Dialog) - -#define IMPL_ABSTDLG_CLASS_ASYNC(Class,Dialog) \ -short Class##_Impl::Execute() \ -{ \ - return m_xDlg->run(); \ -} \ -bool Class##_Impl::StartExecuteAsync(AsyncContext &rCtx) \ -{ \ - return Dialog::runAsync(m_xDlg, rCtx.maEndDialogFn); \ -} - -// CuiAbstractController_Impl -DECL_ABSTDLG_CLASS_UNIQUE(CuiAbstractController, VclAbstractDialog, weld::DialogController) -}; - -// CuiAbstractControllerAsync_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(CuiAbstractControllerAsync, VclAbstractDialog, weld::DialogController) -}; - -// CuiAbstractWidgetTestControllerAsync_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(CuiAbstractWidgetTestControllerAsync, VclAbstractDialog, weld::GenericDialogController) -}; - -// CuiAbstractSingleTabController_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(CuiAbstractSingleTabController, SfxAbstractDialog, SfxSingleTabDialogController) - virtual const SfxItemSet* GetOutputItemSet() const override; - //From class Window. - virtual void SetText( const OUString& rStr ) override; -}; - -// CuiAbstractTabController_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(CuiAbstractTabController, SfxAbstractTabDialog, SfxTabDialogController) - 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; - virtual void SetText( const OUString& rStr ) override; - - // screenshotting - virtual std::vector<OUString> getAllPageUIXMLDescriptions() const override; - virtual bool selectPageByUIXMLDescription(const OUString& rUIXMLDescription) override; - virtual BitmapEx createScreenshot() const override; - virtual OUString GetScreenshotId() const override; -}; - -// AbstractHangulHanjaConversionDialog_Impl -DECL_ABSTDLG_CLASS_UNIQUE(AbstractHangulHanjaConversionDialog,AbstractHangulHanjaConversionDialog,svx::HangulHanjaConversionDialog) - virtual void EndDialog(sal_Int32 nResult) override; - virtual void EnableRubySupport( bool _bVal ) override; - virtual void SetByCharacter( bool _bByCharacter ) override ; - virtual void SetConversionDirectionState( bool _bTryBothDirections, editeng::HangulHanjaConversion::ConversionDirection _ePrimaryConversionDirection ) override; - virtual void SetConversionFormat( editeng::HangulHanjaConversion::ConversionFormat _eType ) override; - virtual void SetOptionsChangedHdl( const Link<LinkParamNone*,void>& _rHdl ) override; - virtual void SetIgnoreHdl( const Link<weld::Button&,void>& _rHdl ) override; - virtual void SetIgnoreAllHdl( const Link<weld::Button&,void>& _rHdl ) override ; - virtual void SetChangeHdl( const Link<weld::Button&,void>& _rHdl ) override ; - virtual void SetChangeAllHdl( const Link<weld::Button&,void>& rHdl ) override ; - virtual void SetClickByCharacterHdl( const Link<weld::Toggleable&,void>& rHdl ) override ; - virtual void SetConversionFormatChangedHdl( const Link<weld::Toggleable&,void>& _rHdl ) override ; - virtual void SetFindHdl( const Link<weld::Button&,void>& _rHdl ) override; - virtual bool GetUseBothDirections( ) const override; - virtual editeng::HangulHanjaConversion::ConversionDirection - GetDirection( editeng::HangulHanjaConversion::ConversionDirection _eDefaultDirection ) const override; - virtual void SetCurrentString( - const OUString& _rNewString, - const css::uno::Sequence< OUString >& _rSuggestions, - bool _bOriginatesFromDocument = true - ) override; - virtual OUString GetCurrentString( ) const override ; - virtual editeng::HangulHanjaConversion::ConversionFormat - GetConversionFormat( ) const override ; - virtual void FocusSuggestion( ) override; - virtual OUString GetCurrentSuggestion( ) const override; -}; - -// AbstractThesaurusDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractThesaurusDialog,SvxThesaurusDialog) - virtual OUString GetWord() override; -}; - -// AbstractHyphenWordDialog_Impl -DECL_ABSTDLG_CLASS(AbstractHyphenWordDialog,SvxHyphenWordDialog) -}; - -// AbstractFmShowColsDialog_Impl -DECL_ABSTDLG_CLASS(AbstractFmShowColsDialog,FmShowColsDialog) - virtual void SetColumns(const css::uno::Reference< css::container::XIndexContainer>& xCols) override; -}; - -// AbstractSvxZoomDialog_Impl -DECL_ABSTDLG_CLASS(AbstractSvxZoomDialog,SvxZoomDialog) - virtual void SetLimits( sal_uInt16 nMin, sal_uInt16 nMax ) override; - virtual void HideButton( ZoomButtonId nBtnId ) override; - virtual const SfxItemSet* GetOutputItemSet() const override ; -}; - -// AbstractSpellDialog_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(AbstractSpellDialog, AbstractSpellDialog, svx::SpellDialog) - virtual void InvalidateDialog() override; - virtual std::shared_ptr<SfxDialogController> GetController() override; - virtual SfxBindings& GetBindings() override; -}; - -// AbstractTitleDialog_Impl -DECL_ABSTDLG_CLASS(AbstractTitleDialog,TitleDialog) - virtual OUString GetTitle() const override ; - -}; - -// AbstractScriptSelectorDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractScriptSelectorDialog,SvxScriptSelectorDialog) - virtual OUString GetScriptURL() const override; - virtual void SetRunLabel() override; -}; - - -// AbstractMacroManagerDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractMacroManagerDialog,MacroManagerDialog) - virtual OUString GetScriptURL() const override; - virtual void LoadLastUsedMacro() const override; -}; - -// AbstractGalleryIdDialog_Impl -DECL_ABSTDLG_CLASS(AbstractGalleryIdDialog,GalleryIdDialog) - virtual sal_uInt32 GetId() const override; -}; - -// AbstractURLDlg_Impl -DECL_ABSTDLG_CLASS(AbstractURLDlg, URLDlg) - virtual OUString GetURL() const override; - virtual OUString GetAltText() const override; - virtual OUString GetDesc() const override; - virtual OUString GetTarget() const override; - virtual OUString GetName() const override; -}; - -// AbstractSvxSearchSimilarityDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSvxSearchSimilarityDialog,SvxSearchSimilarityDialog) - virtual sal_uInt16 GetOther() override; - virtual sal_uInt16 GetShorter() override; - virtual sal_uInt16 GetLonger() override; - virtual bool IsRelaxed() override; -}; - -// AbstractSvxJSearchOptionsDialog_Impl -DECL_ABSTDLG_CLASS(AbstractSvxJSearchOptionsDialog,SvxJSearchOptionsDialog) - virtual TransliterationFlags GetTransliterationFlags() const override; -}; - -// AbstractSvxTransformTabDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSvxTransformTabDialog,SvxTransformTabDialog) - virtual void SetValidateFramePosLink( const Link<SvxSwFrameValidation&,void>& rLink ) 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; - virtual void SetText( const OUString& rStr ) override; -}; - -// AbstractSvxCaptionDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSvxCaptionDialog,SvxCaptionTabDialog) - virtual void SetValidateFramePosLink( const Link<SvxSwFrameValidation&,void>& rLink ) 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; - virtual void SetText( const OUString& rStr ) override; -}; - -// AbstractFmInputRecordNoDialog_Impl -DECL_ABSTDLG_CLASS(AbstractFmInputRecordNoDialog,FmInputRecordNoDialog) - virtual void SetValue(tools::Long nNew) override ; - virtual tools::Long GetValue() const override ; -}; - -// AbstractSvxNewDictionaryDialog_Impl -DECL_ABSTDLG_CLASS(AbstractSvxNewDictionaryDialog,SvxNewDictionaryDialog) - virtual css::uno::Reference< css::linguistic2::XDictionary > GetNewDictionary() override; -}; - -// AbstractSvxNameDialog_Impl -DECL_ABSTDLG_CLASS(AbstractSvxNameDialog,SvxNameDialog) - virtual OUString GetName() override; - virtual void SetCheckNameHdl( const Link<AbstractSvxNameDialog&,bool>& rLink ) override ; - virtual void SetCheckNameTooltipHdl( const Link<AbstractSvxNameDialog&, OUString>& rLink ) override ; - virtual void SetEditHelpId(const OUString&) override ; - //from class Window - virtual void SetHelpId( const OUString& ) override ; - virtual void SetText( const OUString& rStr ) override ; - -private: - Link<AbstractSvxNameDialog&,bool> aCheckNameHdl; - Link<AbstractSvxNameDialog&,OUString> aCheckNameTooltipHdl; - DECL_LINK(CheckNameHdl, SvxNameDialog&, bool); - DECL_LINK(CheckNameTooltipHdl, SvxNameDialog&, OUString); -}; - -class SvxObjectNameDialog; -class SvxObjectTitleDescDialog; - -// AbstractSvxObjectNameDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSvxObjectNameDialog,SvxObjectNameDialog) - virtual OUString GetName() override; - virtual void SetCheckNameHdl(const Link<AbstractSvxObjectNameDialog&,bool>& rLink) override; - -private: - Link<AbstractSvxObjectNameDialog&,bool> aCheckNameHdl; - DECL_LINK(CheckNameHdl, SvxObjectNameDialog&, bool); -}; - -// AbstractSvxObjectTitleDescDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSvxObjectTitleDescDialog,SvxObjectTitleDescDialog) - virtual OUString GetTitle() override; - virtual OUString GetDescription() override; - virtual bool IsDecorative() override; -}; - -// AbstractSvxMultiPathDialog_Impl -DECL_ABSTDLG_CLASS(AbstractSvxMultiPathDialog,SvxMultiPathDialog) - virtual OUString GetPath() const override; - virtual void SetPath( const OUString& rPath ) override; - virtual void SetTitle( const OUString& rNewTitle ) override; -}; - -// AbstractSvxPathSelectDialog_Impl -DECL_ABSTDLG_CLASS_UNIQUE(AbstractSvxPathSelectDialog,AbstractSvxMultiPathDialog,SvxPathSelectDialog) - virtual OUString GetPath() const override; - virtual void SetPath( const OUString& rPath ) override; - virtual void SetTitle( const OUString& rNewTitle ) override; -}; - -// AbstractSvxHpLinkDlg_Impl -DECL_ABSTDLG_CLASS_SHARED(AbstractSvxHpLinkDlg,AbstractSvxHpLinkDlg,SvxHpLinkDlg) - virtual std::shared_ptr<SfxDialogController> GetController() override; - virtual bool QueryClose() override; -}; - -// AbstractFmSearchDialog_Impl -struct FmFoundRecordInformation; -DECL_ABSTDLG_CLASS(AbstractFmSearchDialog,FmSearchDialog) - virtual void SetFoundHandler(const Link<FmFoundRecordInformation&,void>& lnk) override ; - virtual void SetCanceledNotFoundHdl(const Link<FmFoundRecordInformation&,void>& lnk) override; - virtual void SetActiveField(const OUString& strField) override; -}; - -// AbstractGraphicFilterDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractGraphicFilterDialog,GraphicFilterDialog) - virtual Graphic GetFilteredGraphic( const Graphic& rGraphic, double fScaleX, double fScaleY ) override; -}; - -// AbstractSvxAreaTabDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSvxAreaTabDialog,SvxAreaTabDialog) - 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; - virtual void SetText(const OUString& rStr) override; -}; - -// AbstractInsertObjectDialog_Impl -DECL_ABSTDLG_CLASS_UNIQUE(AbstractInsertObjectDialog,SfxAbstractInsertObjectDialog,InsertObjectDialog_Impl) - virtual css::uno::Reference < css::embed::XEmbeddedObject > GetObject() override; - virtual css::uno::Reference< css::io::XInputStream > GetIconIfIconified( OUString* pGraphicMediaType ) override; - virtual bool IsCreateNew() override; -}; - -// AbstractPasteDialog_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(AbstractPasteDialog,SfxAbstractPasteDialog,SvPasteObjectDialog) - virtual void Insert( SotClipboardFormatId nFormat, const OUString & rFormatName ) override; - virtual void InsertUno( const OUString & sCmd, const OUString& sLabel ) override; - virtual void SetObjName( const SvGlobalName & rClass, const OUString & rObjName ) override; - virtual void PreGetFormat( const TransferableDataHelper& aHelper ) override; - virtual SotClipboardFormatId GetFormatOnly() override; - virtual SotClipboardFormatId GetFormat( const TransferableDataHelper& aHelper ) override; -}; - -// AbstractLinksDialog_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(AbstractLinksDialog,SfxAbstractLinksDialog,SvBaseLinksDlg) -}; - -// AbstractSvxPostItDialog_Impl -DECL_ABSTDLG_CLASS(AbstractSvxPostItDialog,SvxPostItDialog) - virtual void SetText( const OUString& rStr ) override; //From class Window - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual void SetPrevHdl( const Link<AbstractSvxPostItDialog&,void>& rLink ) override; - virtual void SetNextHdl( const Link<AbstractSvxPostItDialog&,void>& rLink ) override; - virtual void EnableTravel(bool bNext, bool bPrev) override; - virtual OUString GetNote() override; - virtual void SetNote(const OUString& rTxt) override; - virtual void ShowLastAuthor(const OUString& rAuthor, const OUString& rDate) override; - virtual void DontChangeAuthor() override; - virtual void HideAuthor() override; - virtual std::shared_ptr<weld::Dialog> GetDialog() override; -private: - Link<AbstractSvxPostItDialog&,void> aNextHdl; - Link<AbstractSvxPostItDialog&,void> aPrevHdl; - DECL_LINK(NextHdl, SvxPostItDialog&, void); - DECL_LINK(PrevHdl, SvxPostItDialog&, void); -}; - -// AbstractPasswordToOpenModifyDialog_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(AbstractPasswordToOpenModifyDialog,AbstractPasswordToOpenModifyDialog, PasswordToOpenModifyDialog) - virtual OUString GetPasswordToOpen() const override; - virtual OUString GetPasswordToModify() const override; - virtual bool IsRecommendToOpenReadonly() const override; - virtual void Response(sal_Int32) override; - virtual void AllowEmpty() override; -}; - -// AbstractSvxCharacterMapDialog_Impl -DECL_ABSTDLG_CLASS_SHARED_ASYNC(AbstractSvxCharacterMapDialog,SfxAbstractDialog,SvxCharacterMap) - virtual const SfxItemSet* GetOutputItemSet() const override; - virtual void SetText(const OUString& rStr) override; -}; - -// AbstractScreenshotAnnotationDlg_Impl -DECL_ABSTDLG_CLASS(AbstractScreenshotAnnotationDlg,ScreenshotAnnotationDlg) -}; - -// AbstractSecurityOptionsDialog_Impl -DECL_ABSTDLG_CLASS(AbstractSecurityOptionsDialog, svx::SecurityOptionsDialog) - virtual bool SetSecurityOptions() override; -}; - -// AbstractSignatureLineDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSignatureLineDialog,SignatureLineDialog) - virtual void Apply() override { m_xDlg->Apply(); } -}; - -// AbstractQrCodeGenDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractQrCodeGenDialog,QrCodeGenDialog) -}; - -// AbstractSignSignatureLineDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractSignSignatureLineDialog,SignSignatureLineDialog) - virtual void Apply() override { m_xDlg->Apply(); } -}; - -// AbstractAdditionsDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractAdditionsDialog,weld::GenericDialogController) -}; - -// AbstractDiagramDialog_Impl -DECL_ABSTDLG_CLASS_ASYNC(AbstractDiagramDialog,DiagramDialog) -}; //AbstractDialogFactory_Impl implementations class AbstractDialogFactory_Impl : public SvxAbstractDialogFactory