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

Reply via email to