/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #undef SC_DLLIMPLEMENTATION #include "scdlgfact.hxx" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace { template class ImplTemplate> class ScreenshottedDialog_Impl_BASE : public ImplTemplate { public: using ImplTemplate::ImplTemplate; // screenshotting BitmapEx createScreenshot() const override { VclPtr xDialogSurface(this->m_pDlg->getDialog()->screenshot()); return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); } OUString GetScreenshotId() const override { return this->m_pDlg->get_help_id(); } }; template using ScreenshottedDialog_Impl_Sync = ScreenshottedDialog_Impl_BASE; template using ScreenshottedDialog_Impl_Async = ScreenshottedDialog_Impl_BASE; } // =========================Factories for createdialog =================== namespace { class AbstractScImportAsciiDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; void GetOptions(ScAsciiOptions& rOpt) override { m_pDlg->GetOptions(rOpt); } void SaveParameters() override { m_pDlg->SaveParameters(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScImportAsciiDlg(weld::Window* pParent, const OUString& aDatName, SvStream* pInStream, ScImportAsciiCall eCall) { return VclPtr::Create(pParent, aDatName, pInStream, eCall); } namespace { class AbstractScTextImportOptionsDlg_Impl : public ScreenshottedDialog_Impl_Sync { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; LanguageType GetLanguageType() const override { return m_pDlg->getLanguageType(); } bool IsDateConversionSet() const override { return m_pDlg->isDateConversionSet(); } bool IsScientificConversionSet() const override { return m_pDlg->isScientificConversionSet(); } bool IsKeepAskingSet() const override { return m_pDlg->isKeepAskingSet(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScTextImportOptionsDlg(weld::Window* pParent) { return VclPtr::Create(pParent); } namespace { class AbstractScAutoFormatDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; sal_uInt16 GetIndex() const override { return m_pDlg->GetIndex(); } OUString GetCurrFormatName() override { return m_pDlg->GetCurrFormatName(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg(weld::Window* pParent, ScAutoFormat* pAutoFormat, const ScAutoFormatData* pSelFormatData, ScViewData& rViewData) { return VclPtr::Create(pParent, pAutoFormat, pSelFormatData, rViewData); } namespace { class AbstractScColRowLabelDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; bool IsCol() override { return m_pDlg->IsCol(); } bool IsRow() override { return m_pDlg->IsRow(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScColRowLabelDlg(weld::Window* pParent, bool bCol, bool bRow) { return VclPtr::Create(pParent, bCol, bRow); } VclPtr ScAbstractDialogFactory_Impl::CreateScSortWarningDlg(weld::Window* pParent, const OUString& rExtendText, const OUString& rCurrentText) { using AbstractScSortWarningDlg_Impl = vcl::AbstractDialogImpl_Sync; return VclPtr::Create(pParent, rExtendText, rCurrentText); } namespace { class AbstractScCondFormatManagerDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; std::unique_ptr GetConditionalFormatList() override { return m_pDlg->GetConditionalFormatList(); } bool CondFormatsChanged() const override { return m_pDlg->CondFormatsChanged(); } void SetModified() override { return m_pDlg->SetModified(); } ScConditionalFormat* GetCondFormatSelected() override { return m_pDlg->GetCondFormatSelected(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScCondFormatMgrDlg(weld::Window* pParent, ScDocument& rDoc, const ScConditionalFormatList* pFormatList ) { return VclPtr::Create(pParent, rDoc, pFormatList); } namespace { class AbstractScDataPilotDatabaseDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; void GetValues(ScImportSourceDesc& rDesc) override { m_pDlg->GetValues(rDesc); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDataPilotDatabaseDlg(weld::Window* pParent) { return VclPtr::Create(pParent); } namespace { class AbstractScDataPilotSourceTypeDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; bool IsDatabase() const override { return m_pDlg->IsDatabase(); } bool IsExternal() const override { return m_pDlg->IsExternal(); } bool IsNamedRange() const override { return m_pDlg->IsNamedRange(); } OUString GetSelectedNamedRange() const override { return m_pDlg->GetSelectedNamedRange(); } void AppendNamedRange(const OUString& rName) override { m_pDlg->AppendNamedRange(rName); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDataPilotSourceTypeDlg( weld::Window* pParent, bool bEnableExternal) { return VclPtr::Create(pParent, bEnableExternal); } namespace { class AbstractScDataPilotServiceDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; OUString GetServiceName() const override { return m_pDlg->GetServiceName(); } OUString GetParSource() const override { return m_pDlg->GetParSource(); } OUString GetParName() const override { return m_pDlg->GetParName(); } OUString GetParUser() const override { return m_pDlg->GetParUser(); } OUString GetParPass() const override { return m_pDlg->GetParPass(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDataPilotServiceDlg(weld::Window* pParent, const std::vector& rServices) { return VclPtr::Create(pParent, rServices); } namespace { class AbstractScDeleteCellDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; DelCellCmd GetDelCellCmd() const override { return m_pDlg->GetDelCellCmd(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDeleteCellDlg(weld::Window* pParent, bool bDisallowCellMove) { return VclPtr::Create(pParent, bDisallowCellMove); } VclPtr ScAbstractDialogFactory_Impl::CreateScDataFormDlg(weld::Window* pParent, ScTabViewShell* pTabViewShell) { // for dataform using AbstractScDataFormDlg_Impl = ScreenshottedDialog_Impl_Sync; return VclPtr::Create(pParent, pTabViewShell); } namespace { class AbstractScDeleteContentsDlg_Impl : public ScreenshottedDialog_Impl_Sync { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; void DisableObjects() override { m_pDlg->DisableObjects(); } InsertDeleteFlags GetDelContentsCmdBits() const override { return m_pDlg->GetDelContentsCmdBits(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDeleteContentsDlg(weld::Window* pParent) { return VclPtr::Create(pParent); } namespace { class AbstractScFillSeriesDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; FillDir GetFillDir() const override { return m_pDlg->GetFillDir(); } FillCmd GetFillCmd() const override { return m_pDlg->GetFillCmd(); } FillDateCmd GetFillDateCmd() const override { return m_pDlg->GetFillDateCmd(); } double GetStart() const override { return m_pDlg->GetStart(); } double GetStep() const override { return m_pDlg->GetStep(); } double GetMax() const override { return m_pDlg->GetMax(); } OUString GetStartStr() const override { return m_pDlg->GetStartStr(); } void SetEdStartValEnabled(bool bFlag) override { m_pDlg->SetEdStartValEnabled(bFlag); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScFillSeriesDlg(weld::Window* pParent, ScDocument& rDocument, FillDir eFillDir, FillCmd eFillCmd, FillDateCmd eFillDateCmd, const OUString& aStartStr, double fStep, double fMax, const SCSIZE nSelectHeight, const SCSIZE nSelectWidth, sal_uInt16 nPossDir) { return VclPtr::Create(pParent, rDocument,eFillDir, eFillCmd,eFillDateCmd, aStartStr,fStep,fMax,nSelectHeight,nSelectWidth,nPossDir); } namespace { class AbstractScGroupDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; bool GetColsChecked() const override { return m_pDlg->GetColsChecked(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup) { return VclPtr::Create(pParent, bUnGroup, true); } namespace { class AbstractScInsertCellDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; InsCellCmd GetInsCellCmd() const override { return m_pDlg->GetInsCellCmd(); } size_t GetCount() const override { return m_pDlg->GetCount(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove) { return VclPtr::Create(pParent, bDisallowCellMove); } namespace { class AbstractScInsertContentsDlg_Impl : public ScreenshottedDialog_Impl_Sync { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; InsertDeleteFlags GetInsContentsCmdBits() const override { return m_pDlg->GetInsContentsCmdBits(); } ScPasteFunc GetFormulaCmdBits() const override { return m_pDlg->GetFormulaCmdBits(); } bool IsSkipEmptyCells() const override { return m_pDlg->IsSkipEmptyCells(); } bool IsLink() const override { return m_pDlg->IsLink(); } void SetFillMode(bool bSet) override { m_pDlg->SetFillMode(bSet); } void SetOtherDoc(bool bSet) override { m_pDlg->SetOtherDoc(bSet); } bool IsTranspose() const override { return m_pDlg->IsTranspose(); } void SetChangeTrack(bool bSet) override { m_pDlg->SetChangeTrack(bSet); } void SetCellShiftDisabled(CellShiftDisabledFlags nDisable) override { m_pDlg->SetCellShiftDisabled(nDisable); } InsCellCmd GetMoveMode() override { return m_pDlg->GetMoveMode(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScInsertContentsDlg(weld::Window* pParent, const OUString* pStrTitle) { return VclPtr::Create(pParent, pStrTitle); } namespace { class AbstractScInsertTableDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; bool GetTablesFromFile() override { return m_pDlg->GetTablesFromFile(); } bool GetTablesAsLink() override { return m_pDlg->GetTablesAsLink(); } const OUString* GetFirstTable(sal_uInt16* pN) override { return m_pDlg->GetFirstTable(pN); } ScDocShell* GetDocShellTables() override { return m_pDlg->GetDocShellTables(); } bool IsTableBefore() override { return m_pDlg->IsTableBefore(); } sal_uInt16 GetTableCount() override { return m_pDlg->GetTableCount(); } const OUString* GetNextTable(sal_uInt16* pN) override { return m_pDlg->GetNextTable(pN); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScInsertTableDlg(weld::Window* pParent, ScViewData& rViewData, SCTAB nTabCount, bool bFromFile) { return VclPtr::Create(pParent, rViewData,nTabCount, bFromFile); } namespace { class AbstractScSelEntryDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; OUString GetSelectedEntry() const override { return m_pDlg->GetSelectedEntry(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScSelEntryDlg(weld::Window* pParent, const std::vector &rEntryList) { return VclPtr::Create(pParent, rEntryList); } namespace { class AbstractScLinkedAreaDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; void InitFromOldLink(const OUString& rFile, const OUString& rFilter, const OUString& rOptions, const OUString& rSource, sal_Int32 nRefreshDelaySeconds) override { m_pDlg->InitFromOldLink(rFile, rFilter, rOptions, rSource, nRefreshDelaySeconds); } OUString GetURL() override { return m_pDlg->GetURL(); } OUString GetFilter() override { return m_pDlg->GetFilter(); } OUString GetOptions() override { return m_pDlg->GetOptions(); } OUString GetSource() override { return m_pDlg->GetSource(); } sal_Int32 GetRefreshDelaySeconds() override { return m_pDlg->GetRefreshDelaySeconds(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScLinkedAreaDlg(weld::Widget* pParent) { return VclPtr::Create(pParent); } namespace { class AbstractScMetricInputDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; int GetInputValue() const override { return m_pDlg->GetInputValue(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScMetricInputDlg(weld::Window* pParent, const OUString& sDialogName, tools::Long nCurrent, tools::Long nDefault, FieldUnit eFUnit, sal_uInt16 nDecimals, tools::Long nMaximum , tools::Long nMinimum ) { return VclPtr::Create(pParent, sDialogName, nCurrent, nDefault, eFUnit, nDecimals, nMaximum, nMinimum); } namespace { class AbstractScMoveTableDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; sal_uInt16 GetSelectedDocument() const override { return m_pDlg->GetSelectedDocument(); } sal_uInt16 GetSelectedTable() const override { return m_pDlg->GetSelectedTable(); } bool GetCopyTable() const override { return m_pDlg->GetCopyTable(); } bool GetRenameTable() const override { return m_pDlg->GetRenameTable(); } void GetTabNameString(OUString& rString) const override { m_pDlg->GetTabNameString(rString); } void SetForceCopyTable() override { return m_pDlg->SetForceCopyTable(); } void EnableRenameTable(bool bFlag) override { return m_pDlg->EnableRenameTable(bFlag); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScMoveTableDlg(weld::Window* pParent, const OUString& rDefault) { return VclPtr::Create(pParent, rDefault); } namespace { class AbstractScNameCreateDlg_Impl : public ScreenshottedDialog_Impl_Sync { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; CreateNameFlags GetFlags() const override { return m_pDlg->GetFlags(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScNameCreateDlg(weld::Window * pParent, CreateNameFlags nFlags) { return VclPtr::Create(pParent, nFlags); } namespace { class AbstractScNamePasteDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; std::vector GetSelectedNames() const override { return m_pDlg->GetSelectedNames(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScNamePasteDlg(weld::Window * pParent, ScDocShell* pShell) { return VclPtr::Create(pParent, pShell); } namespace { class AbstractScPivotFilterDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; const ScQueryItem& GetOutputItem() override { return m_pDlg->GetOutputItem(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, sal_uInt16 nSourceTab) { return VclPtr::Create(pParent, rArgSet, nSourceTab); } namespace { class AbstractScDPFunctionDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; PivotFunc GetFuncMask() const override { return m_pDlg->GetFuncMask(); } css::sheet::DataPilotFieldReference GetFieldRef() const override { return m_pDlg->GetFieldRef(); } void Response(int nResponse) override { m_pDlg->response(nResponse); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDPFunctionDlg(weld::Widget* pParent, const ScDPLabelDataVector& rLabelVec, const ScDPLabelData& rLabelData, const ScPivotFuncData& rFuncData) { return VclPtr::Create(pParent, rLabelVec, rLabelData, rFuncData); } namespace { class AbstractScDPSubtotalDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; PivotFunc GetFuncMask() const override { return m_pDlg->GetFuncMask(); } void FillLabelData(ScDPLabelData& rLabelData) const override { m_pDlg->FillLabelData(rLabelData); } void Response(int nResponse) override { m_pDlg->response(nResponse); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDPSubtotalDlg(weld::Widget* pParent, ScDPObject& rDPObj, const ScDPLabelData& rLabelData, const ScPivotFuncData& rFuncData, const ScDPNameVec& rDataFields) { return VclPtr::Create(pParent, rDPObj, rLabelData, rFuncData, rDataFields, true/*bEnableLayout*/); } namespace { class AbstractScDPNumGroupDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; ScDPNumGroupInfo GetGroupInfo() const override { return m_pDlg->GetGroupInfo(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDPNumGroupDlg(weld::Window* pParent, const ScDPNumGroupInfo& rInfo) { return VclPtr::Create(pParent, rInfo); } namespace { class AbstractScDPDateGroupDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; ScDPNumGroupInfo GetGroupInfo() const override { return m_pDlg->GetGroupInfo(); } sal_Int32 GetDatePart() const override { return m_pDlg->GetDatePart(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDPDateGroupDlg( weld::Window* pParent, const ScDPNumGroupInfo& rInfo, sal_Int32 nDatePart, const Date& rNullDate) { return VclPtr::Create(pParent, rInfo, nDatePart, rNullDate); } namespace { class AbstractScDPShowDetailDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; OUString GetDimensionName() const override { return m_pDlg->GetDimensionName(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScDPShowDetailDlg ( weld::Window* pParent, ScDPObject& rDPObj, css::sheet::DataPilotFieldOrientation nOrient ) { return VclPtr::Create(pParent, rDPObj, nOrient); } namespace { class AbstractScNewScenarioDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; void SetScenarioData(const OUString& rName, const OUString& rComment, const Color& rColor, ScScenarioFlags nFlags) override { m_pDlg->SetScenarioData(rName, rComment, rColor, nFlags); } void GetScenarioData(OUString& rName, OUString& rComment, Color& rColor, ScScenarioFlags& rFlags) const override { m_pDlg->GetScenarioData(rName, rComment, rColor, rFlags); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScNewScenarioDlg(weld::Window* pParent, const OUString& rName, bool bEdit, bool bSheetProtected) { return VclPtr::Create(pParent, rName, bEdit, bSheetProtected); } namespace { class AbstractScShowTabDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; void Insert(const OUString& rString, bool bSelected) override { m_pDlg->Insert(rString, bSelected); } void SetDescription(const OUString& rTitle, const OUString& rFixedText, const OUString& sDlgHelpId, const OUString& sLbHelpId) override { m_pDlg->SetDescription(rTitle, rFixedText, sDlgHelpId, sLbHelpId); } OUString GetEntry(sal_Int32 nPos) const override { return m_pDlg->GetEntry(nPos); } std::vector GetSelectedRows() const override { return m_pDlg->GetSelectedRows(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScShowTabDlg(weld::Window* pParent) { return VclPtr::Create(pParent); } namespace { class AbstractScGoToTabDlg_Impl : public vcl::AbstractDialogImpl_Async { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; void Insert(const OUString& rString, bool bSelected) override { m_pDlg->Insert(rString, bSelected); } void SetDescription(const OUString& rTitle, const OUString& rEntryLabel, const OUString& rListLabel, const OUString& rDlgHelpId, const OUString& rEnHelpId, const OUString& rLbHelpId) override { m_pDlg->SetDescription(rTitle, rEntryLabel, rListLabel, rDlgHelpId, rEnHelpId, rLbHelpId); } OUString GetSelectedEntry() const override { return m_pDlg->GetSelectedEntry(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScGoToTabDlg(weld::Window* pParent) { return VclPtr::Create(pParent); } namespace { class AbstractScStringInputDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; OUString GetInputString() const override { return m_pDlg->GetInputString(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScStringInputDlg(weld::Window* pParent, const OUString& rTitle, const OUString& rEditTitle, const OUString& rDefault, const OUString& rHelpId, const OUString& rEditHelpId) { return VclPtr::Create(pParent, rTitle, rEditTitle, rDefault, rHelpId, rEditHelpId); } namespace { class AbstractScTabBgColorDlg_Impl : public ScreenshottedDialog_Impl_Async { public: using ScreenshottedDialog_Impl_BASE::ScreenshottedDialog_Impl_BASE; void GetSelectedColor(Color& rColor) const override { m_pDlg->GetSelectedColor(rColor); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScTabBgColorDlg( weld::Window* pParent, const OUString& rTitle, const OUString& rTabBgColorNoColorText, const Color& rDefaultColor) { return VclPtr::Create(pParent, rTitle, rTabBgColorNoColorText, rDefaultColor); } namespace { class AbstractScImportOptionsDlg_Impl : public vcl::AbstractDialogImpl_Sync { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; void GetImportOptions(ScImportOptions& rOptions) const override { m_pDlg->GetImportOptions(rOptions); } void SaveImportOptions() const override { m_pDlg->SaveImportOptions(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScImportOptionsDlg(weld::Window* pParent, bool bAscii, const ScImportOptions* pOptions, const OUString* pStrTitle, bool bOnlyDbtoolsEncodings, bool bImport) { return VclPtr::Create(pParent, bAscii, pOptions, pStrTitle, true/*bMultiByte*/, bOnlyDbtoolsEncodings, bImport); } namespace { template class ScAbstractTabController_Impl : public vcl::AbstractDialogImpl_Async { public: using vcl::AbstractDialogImpl_Async::AbstractDialogImpl_Async; void SetCurPageId(const OUString& rName) override { this->m_pDlg->SetCurPageId(rName); } const SfxItemSet* GetOutputItemSet() const override { return this->m_pDlg->GetOutputItemSet(); } WhichRangesContainer GetInputRanges(const SfxItemPool& pItem) override { return this->m_pDlg->GetInputRanges(pItem); } void SetInputSet(const SfxItemSet* pInSet) override { this->m_pDlg->SetInputSet(pInSet); } // From class Window. void SetText(const OUString& rStr) override { this->m_pDlg->set_title(rStr); } // screenshotting std::vector getAllPageUIXMLDescriptions() const override { return this->m_pDlg->getAllPageUIXMLDescriptions(); } bool selectPageByUIXMLDescription(const OUString& rUIXMLDescription) override { return this->m_pDlg->selectPageByUIXMLDescription(rUIXMLDescription); } BitmapEx createScreenshot() const override { return this->m_pDlg->createScreenshot(); } OUString GetScreenshotId() const override { return this->m_pDlg->GetScreenshotId(); } }; } VclPtr ScAbstractDialogFactory_Impl::CreateScAttrDlg(weld::Window* pParent, const SfxItemSet* pCellAttrs) { return VclPtr>::Create(pParent, pCellAttrs); } VclPtr ScAbstractDialogFactory_Impl::CreateScHFEditDlg( weld::Window* pParent, const SfxItemSet& rCoreSet, const OUString& rPageStyle, sal_uInt16 nResId ) { switch (nResId) { case RID_SCDLG_HFED_HEADER: case RID_SCDLG_HFEDIT_HEADER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFED_FOOTER: case RID_SCDLG_HFEDIT_FOOTER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_SHAREDFIRSTHEADER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_SHAREDLEFTHEADER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_SHAREDFIRSTFOOTER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_SHAREDLEFTFOOTER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_LEFTHEADER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_RIGHTHEADER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_LEFTFOOTER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_RIGHTFOOTER: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_SHDR: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_SFTR: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); case RID_SCDLG_HFEDIT_ALL: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); default: case RID_SCDLG_HFEDIT: return VclPtr>::Create(pParent, rCoreSet, rPageStyle); } } VclPtr ScAbstractDialogFactory_Impl::CreateScStyleDlg(weld::Window* pParent, SfxStyleSheetBase& rStyleBase, bool bPage) { return VclPtr>::Create(pParent, rStyleBase, bPage); } VclPtr ScAbstractDialogFactory_Impl::CreateScDrawStyleDlg(weld::Window* pParent, SfxStyleSheetBase& rStyleBase, SdrView* pView) { return VclPtr>::Create(pParent, rStyleBase, pView); } VclPtr ScAbstractDialogFactory_Impl::CreateScSubTotalDlg(weld::Window* pParent, const SfxItemSet& rArgSet) { return VclPtr>::Create(pParent, rArgSet); } VclPtr ScAbstractDialogFactory_Impl::CreateScCharDlg( weld::Window* pParent, const SfxItemSet* pAttr, const SfxObjectShell* pDocShell, bool bDrawText) { return VclPtr>::Create(pParent, pAttr, pDocShell, bDrawText); } VclPtr ScAbstractDialogFactory_Impl::CreateScParagraphDlg( weld::Window* pParent, const SfxItemSet* pAttr) { return VclPtr>::Create(pParent, pAttr); } namespace { class ScAsyncTabController_Impl : public ScAsyncTabController { std::shared_ptr m_pDlg; public: explicit ScAsyncTabController_Impl(std::shared_ptr p) : m_pDlg(std::move(p)) { } bool StartExecuteAsync(VclAbstractDialog::AsyncContext& rCtx) override { return SfxTabDialogController::runAsync(m_pDlg, rCtx.maEndDialogFn); } const SfxItemSet* GetOutputItemSet() const override { return m_pDlg->GetOutputItemSet(); } void SetCurPageId(const OUString& rName) override { m_pDlg->SetCurPageId(rName); } }; } std::shared_ptr ScAbstractDialogFactory_Impl::CreateScSortDlg(weld::Window* pParent, const SfxItemSet* pArgSet) { return std::make_shared(std::make_shared(pParent, pArgSet)); } //------------------ Factories for TabPages-------------------- CreateTabPage ScAbstractDialogFactory_Impl::GetTabPageCreatorFunc( sal_uInt16 nId ) { switch (nId) { case SID_SC_TP_CHANGES: return ScRedlineOptionsTabPage::Create; case SID_SC_TP_CALC: return ScTpCalcOptions::Create; case SID_SC_TP_FORMULA: return ScTpFormulaOptions::Create; case SID_SC_TP_COMPATIBILITY: return ScTpCompatOptions::Create; case RID_SC_TP_DEFAULTS: return ScTpDefaultsOptions::Create; case RID_SC_TP_PRINT: return ScTpPrintOptions::Create; case SID_SC_TP_STAT: return ScDocStatPage::Create; case SID_SC_TP_USERLISTS: return ScTpUserLists::Create; case SID_SC_TP_CONTENT: return ScTpContentOptions::Create; case SID_SC_TP_LAYOUT: return ScTpLayoutOptions::Create; default: break; } return nullptr; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */