diff options
Diffstat (limited to 'sc/source/ui/attrdlg')
-rw-r--r-- | sc/source/ui/attrdlg/attrdlg.cxx | 89 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scabstdlg.cxx | 58 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scdlgfact.cxx | 1278 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scdlgfact.hxx | 815 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/scuiexp.cxx | 42 | ||||
-rw-r--r-- | sc/source/ui/attrdlg/tabpages.cxx | 224 |
6 files changed, 2506 insertions, 0 deletions
diff --git a/sc/source/ui/attrdlg/attrdlg.cxx b/sc/source/ui/attrdlg/attrdlg.cxx new file mode 100644 index 000000000..6c3f1fa8f --- /dev/null +++ b/sc/source/ui/attrdlg/attrdlg.cxx @@ -0,0 +1,89 @@ +/* -*- 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 <sfx2/objsh.hxx> +#include <sfx2/tabdlg.hxx> +#include <sfx2/sfxdlg.hxx> +#include <svl/cjkoptions.hxx> + +#include <tabpages.hxx> +#include <attrdlg.hxx> +#include <svx/dialogs.hrc> +#include <svx/svxids.hrc> +#include <editeng/flstitem.hxx> +#include <osl/diagnose.h> + +ScAttrDlg::ScAttrDlg(weld::Window* pParent, const SfxItemSet* pCellAttrs) + : SfxTabDialogController(pParent, "modules/scalc/ui/formatcellsdialog.ui", + "FormatCellsDialog", pCellAttrs) +{ + SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); + + OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_NUMBERFORMAT ), "GetTabPageCreatorFunc fail!"); + AddTabPage( "numbers", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_NUMBERFORMAT ), nullptr ); + OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), "GetTabPageCreatorFunc fail!"); + AddTabPage( "font", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), nullptr ); + OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), "GetTabPageCreatorFunc fail!"); + AddTabPage( "fonteffects", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), nullptr ); + OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_ALIGNMENT ), "GetTabPageCreatorFunc fail!"); + AddTabPage( "alignment", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_ALIGNMENT ), nullptr ); + + SvtCJKOptions aCJKOptions; + if (aCJKOptions.IsAsianTypographyEnabled()) + { + OSL_ENSURE(pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), "GetTabPageCreatorFunc fail!"); + AddTabPage( "asiantypography", pFact->GetTabPageCreatorFunc(RID_SVXPAGE_PARA_ASIAN), nullptr ); + } + else + RemoveTabPage( "asiantypography" ); + OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), "GetTabPageCreatorFunc fail!"); + AddTabPage( "borders", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BORDER ), nullptr ); + OSL_ENSURE(pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BKG ), "GetTabPageCreatorFunc fail!"); + AddTabPage( "background", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BKG ), nullptr ); + AddTabPage( "cellprotection" , ScTabPageProtection::Create, nullptr ); +} + +ScAttrDlg::~ScAttrDlg() +{ +} + +void ScAttrDlg::PageCreated(const OString& rPageId, SfxTabPage& rTabPage) +{ + SfxObjectShell* pDocSh = SfxObjectShell::Current(); + SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool())); + if (rPageId == "numbers") + { + rTabPage.PageCreated(aSet); + } + else if (rPageId == "font") + { + const SfxPoolItem* pInfoItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST ); + assert(pInfoItem && "FontListItem not found :-("); + aSet.Put (SvxFontListItem(static_cast<const SvxFontListItem*>(pInfoItem)->GetFontList(), SID_ATTR_CHAR_FONTLIST )); + rTabPage.PageCreated(aSet); + } + else if (rPageId == "background") + { + rTabPage.PageCreated(aSet); + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/attrdlg/scabstdlg.cxx b/sc/source/ui/attrdlg/scabstdlg.cxx new file mode 100644 index 000000000..3d74406e0 --- /dev/null +++ b/sc/source/ui/attrdlg/scabstdlg.cxx @@ -0,0 +1,58 @@ +/* -*- 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 . + */ + +#include <scabstdlg.hxx> + +#include <osl/module.hxx> +#include <tools/svlibrary.h> +#include <rtl/ustrbuf.hxx> + +typedef ScAbstractDialogFactory* (*ScFuncPtrCreateDialogFactory)(); + +#ifndef DISABLE_DYNLOADING + +extern "C" { static void thisModule() {} } + +#else + +extern "C" ScAbstractDialogFactory* ScCreateDialogFactory(); + +#endif + +ScAbstractDialogFactory* ScAbstractDialogFactory::Create() +{ + ScFuncPtrCreateDialogFactory fp = nullptr; +#ifndef DISABLE_DYNLOADING + static ::osl::Module aDialogLibrary; + + OUString aStrBuf = SVLIBRARY("scui"); + + if ( aDialogLibrary.is() || aDialogLibrary.loadRelative( &thisModule, aStrBuf, + SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY ) ) + fp = reinterpret_cast<ScAbstractDialogFactory* (SAL_CALL*)()>( + aDialogLibrary.getFunctionSymbol( "ScCreateDialogFactory" )); +#else + fp = ScCreateDialogFactory; +#endif + if ( fp ) + return fp(); + return nullptr; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx new file mode 100644 index 000000000..e947993ca --- /dev/null +++ b/sc/source/ui/attrdlg/scdlgfact.cxx @@ -0,0 +1,1278 @@ +/* -*- 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 <scuiasciiopt.hxx> +#include <scuiautofmt.hxx> +#include <corodlg.hxx> +#include <dapidata.hxx> +#include <dapitype.hxx> +#include <delcldlg.hxx> +#include <delcodlg.hxx> +#include <filldlg.hxx> +#include <groupdlg.hxx> +#include <inscldlg.hxx> +#include <inscodlg.hxx> +#include <instbdlg.hxx> +#include <lbseldlg.hxx> +#include <linkarea.hxx> +#include <mtrindlg.hxx> +#include <mvtabdlg.hxx> +#include <namecrea.hxx> +#include <namepast.hxx> +#include <pfiltdlg.hxx> +#include <pvfundlg.hxx> +#include <dpgroupdlg.hxx> +#include <scendlg.hxx> +#include <shtabdlg.hxx> +#include <strindlg.hxx> +#include <tabbgcolordlg.hxx> +#include <scuiimoptdlg.hxx> +#include <attrdlg.hxx> +#include <hfedtdlg.hxx> +#include <styledlg.hxx> +#include <subtdlg.hxx> +#include <textdlgs.hxx> +#include <sortdlg.hxx> +#include <textimportoptions.hxx> +#include <opredlin.hxx> +#include <tpcalc.hxx> +#include <tpprint.hxx> +#include <tpstat.hxx> +#include <tpusrlst.hxx> +#include <tpview.hxx> +#include <tpformula.hxx> +#include <datafdlg.hxx> +#include <tpcompatibility.hxx> +#include <tpdefaults.hxx> +#include <condformatmgr.hxx> +#include <scres.hrc> +#include <svx/dialogs.hrc> +#include <sfx2/sfxdlg.hxx> +#include <conditio.hxx> + +short AbstractScImportAsciiDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +bool AbstractScImportAsciiDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) +{ + return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + +short AbstractScAutoFormatDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScColRowLabelDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScCondFormatManagerDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +bool AbstractScCondFormatManagerDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) +{ + return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + +short AbstractScDataPilotDatabaseDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDataPilotSourceTypeDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDataPilotServiceDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDeleteCellDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +//for dataform +short AbstractScDataFormDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +BitmapEx AbstractScDataFormDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScDataFormDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +short AbstractScDeleteContentsDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScFillSeriesDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScGroupDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScInsertCellDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScInsertContentsDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScInsertTableDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScSelEntryDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScMetricInputDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScMoveTableDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +BitmapEx AbstractScMoveTableDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScMoveTableDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +short AbstractScNameCreateDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScNamePasteDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScPivotFilterDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDPFunctionDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDPSubtotalDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDPNumGroupDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDPDateGroupDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScDPShowDetailDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScNewScenarioDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScShowTabDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +bool AbstractScShowTabDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) +{ + return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + +short AbstractScSortWarningDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScTabBgColorDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScImportOptionsDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +short AbstractScTextImportOptionsDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +AbstractScLinkedAreaDlg_Impl::~AbstractScLinkedAreaDlg_Impl() +{ +} + +short AbstractScLinkedAreaDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +void AbstractScImportAsciiDlg_Impl::GetOptions( ScAsciiOptions& rOpt ) +{ + m_xDlg->GetOptions( rOpt ); +} + +void AbstractScImportAsciiDlg_Impl::SaveParameters() +{ + m_xDlg->SaveParameters(); +} + +BitmapEx AbstractScImportAsciiDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScImportAsciiDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +sal_uInt16 AbstractScAutoFormatDlg_Impl::GetIndex() const +{ + return m_xDlg->GetIndex(); +} + +OUString AbstractScAutoFormatDlg_Impl::GetCurrFormatName() +{ + return m_xDlg->GetCurrFormatName(); +} + +bool AbstractScColRowLabelDlg_Impl::IsCol() +{ + return m_xDlg->IsCol(); +} + +bool AbstractScColRowLabelDlg_Impl::IsRow() +{ + return m_xDlg->IsRow(); +} + +BitmapEx AbstractScColRowLabelDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScColRowLabelDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +void AbstractScDataPilotDatabaseDlg_Impl::GetValues( ScImportSourceDesc& rDesc ) +{ + m_xDlg->GetValues(rDesc); +} + +BitmapEx AbstractScDataPilotDatabaseDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScDataPilotDatabaseDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +bool AbstractScDataPilotSourceTypeDlg_Impl::IsDatabase() const +{ + return m_xDlg->IsDatabase(); +} + +bool AbstractScDataPilotSourceTypeDlg_Impl::IsExternal() const +{ + return m_xDlg->IsExternal(); +} + +bool AbstractScDataPilotSourceTypeDlg_Impl::IsNamedRange() const +{ + return m_xDlg->IsNamedRange(); +} + +OUString AbstractScDataPilotSourceTypeDlg_Impl::GetSelectedNamedRange() const +{ + return m_xDlg->GetSelectedNamedRange(); +} + +void AbstractScDataPilotSourceTypeDlg_Impl::AppendNamedRange(const OUString& rName) +{ + m_xDlg->AppendNamedRange(rName); +} + +BitmapEx AbstractScDataPilotSourceTypeDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScDataPilotSourceTypeDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +OUString AbstractScDataPilotServiceDlg_Impl::GetServiceName() const +{ + return m_xDlg->GetServiceName(); +} + +OUString AbstractScDataPilotServiceDlg_Impl::GetParSource() const +{ + return m_xDlg->GetParSource(); +} + +OUString AbstractScDataPilotServiceDlg_Impl::GetParName() const +{ + return m_xDlg->GetParName(); +} + +OUString AbstractScDataPilotServiceDlg_Impl::GetParUser() const +{ + return m_xDlg->GetParUser(); +} + +OUString AbstractScDataPilotServiceDlg_Impl::GetParPass() const +{ + return m_xDlg->GetParPass(); +} + +DelCellCmd AbstractScDeleteCellDlg_Impl::GetDelCellCmd() const +{ + return m_xDlg->GetDelCellCmd(); +} + +BitmapEx AbstractScDeleteCellDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScDeleteCellDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +void AbstractScDeleteContentsDlg_Impl::DisableObjects() +{ + m_xDlg->DisableObjects(); +} + +InsertDeleteFlags AbstractScDeleteContentsDlg_Impl::GetDelContentsCmdBits() const +{ + return m_xDlg->GetDelContentsCmdBits(); +} + +BitmapEx AbstractScDeleteContentsDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScDeleteContentsDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +FillDir AbstractScFillSeriesDlg_Impl::GetFillDir() const +{ + return m_xDlg->GetFillDir(); +} + +FillCmd AbstractScFillSeriesDlg_Impl::GetFillCmd() const +{ + return m_xDlg->GetFillCmd(); +} + +FillDateCmd AbstractScFillSeriesDlg_Impl::GetFillDateCmd() const +{ + return m_xDlg->GetFillDateCmd(); +} + +double AbstractScFillSeriesDlg_Impl::GetStart() const +{ + return m_xDlg->GetStart(); +} + +double AbstractScFillSeriesDlg_Impl::GetStep() const +{ + return m_xDlg->GetStep(); +} + +double AbstractScFillSeriesDlg_Impl::GetMax() const +{ + return m_xDlg->GetMax(); +} + +OUString AbstractScFillSeriesDlg_Impl::GetStartStr() const +{ + return m_xDlg->GetStartStr(); +} + +void AbstractScFillSeriesDlg_Impl::SetEdStartValEnabled(bool bFlag) +{ + m_xDlg->SetEdStartValEnabled(bFlag); +} + +bool AbstractScGroupDlg_Impl::GetColsChecked() const +{ + return m_xDlg->GetColsChecked(); +} + +InsCellCmd AbstractScInsertCellDlg_Impl::GetInsCellCmd() const +{ + return m_xDlg->GetInsCellCmd(); +} + +InsertDeleteFlags AbstractScInsertContentsDlg_Impl::GetInsContentsCmdBits() const +{ + return m_xDlg->GetInsContentsCmdBits(); +} + +ScPasteFunc AbstractScInsertContentsDlg_Impl::GetFormulaCmdBits() const +{ + return m_xDlg->GetFormulaCmdBits(); +} + +bool AbstractScInsertContentsDlg_Impl::IsSkipEmptyCells() const +{ + return m_xDlg->IsSkipEmptyCells(); +} + +bool AbstractScInsertContentsDlg_Impl::IsLink() const +{ + return m_xDlg->IsLink(); +} + +void AbstractScInsertContentsDlg_Impl::SetFillMode( bool bSet ) +{ + m_xDlg->SetFillMode( bSet ); +} + +void AbstractScInsertContentsDlg_Impl::SetOtherDoc( bool bSet ) +{ + m_xDlg->SetOtherDoc( bSet ); +} + +bool AbstractScInsertContentsDlg_Impl::IsTranspose() const +{ + return m_xDlg->IsTranspose(); +} + +void AbstractScInsertContentsDlg_Impl::SetChangeTrack( bool bSet ) +{ + m_xDlg->SetChangeTrack( bSet ); +} + +void AbstractScInsertContentsDlg_Impl::SetCellShiftDisabled( CellShiftDisabledFlags nDisable ) +{ + m_xDlg->SetCellShiftDisabled( nDisable ); +} + +InsCellCmd AbstractScInsertContentsDlg_Impl::GetMoveMode() +{ + return m_xDlg->GetMoveMode(); +} + +BitmapEx AbstractScInsertContentsDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScInsertContentsDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +bool AbstractScInsertTableDlg_Impl::GetTablesFromFile() +{ + return m_xDlg->GetTablesFromFile(); +} + +bool AbstractScInsertTableDlg_Impl::GetTablesAsLink() +{ + return m_xDlg->GetTablesAsLink(); +} + +const OUString* AbstractScInsertTableDlg_Impl::GetFirstTable( sal_uInt16* pN ) +{ + return m_xDlg->GetFirstTable( pN ); +} + +ScDocShell* AbstractScInsertTableDlg_Impl::GetDocShellTables() +{ + return m_xDlg->GetDocShellTables(); +} + +bool AbstractScInsertTableDlg_Impl::IsTableBefore() +{ + return m_xDlg->IsTableBefore(); +} + +sal_uInt16 AbstractScInsertTableDlg_Impl::GetTableCount() +{ + return m_xDlg->GetTableCount(); +} + +const OUString* AbstractScInsertTableDlg_Impl::GetNextTable( sal_uInt16* pN ) +{ + return m_xDlg->GetNextTable( pN ); +} + +BitmapEx AbstractScInsertTableDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScInsertTableDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +OUString AbstractScSelEntryDlg_Impl::GetSelectedEntry() const +{ + return m_xDlg->GetSelectedEntry(); +} + +void AbstractScLinkedAreaDlg_Impl::InitFromOldLink( const OUString& rFile, const OUString& rFilter, + const OUString& rOptions, const OUString& rSource, + sal_uLong nRefresh ) +{ + m_xDlg->InitFromOldLink( rFile, rFilter, rOptions, rSource, nRefresh); +} + +OUString AbstractScLinkedAreaDlg_Impl::GetURL() +{ + return m_xDlg->GetURL(); +} + +OUString AbstractScLinkedAreaDlg_Impl::GetFilter() +{ + return m_xDlg->GetFilter(); +} + +OUString AbstractScLinkedAreaDlg_Impl::GetOptions() +{ + return m_xDlg->GetOptions(); +} + +OUString AbstractScLinkedAreaDlg_Impl::GetSource() +{ + return m_xDlg->GetSource(); +} + +sal_uLong AbstractScLinkedAreaDlg_Impl::GetRefresh() +{ + return m_xDlg->GetRefresh(); +} + +std::unique_ptr<ScConditionalFormatList> AbstractScCondFormatManagerDlg_Impl::GetConditionalFormatList() +{ + return m_xDlg->GetConditionalFormatList(); +} + +bool AbstractScCondFormatManagerDlg_Impl::CondFormatsChanged() const +{ + return m_xDlg->CondFormatsChanged(); +} + +void AbstractScCondFormatManagerDlg_Impl::SetModified() +{ + return m_xDlg->SetModified(); +} + +ScConditionalFormat* AbstractScCondFormatManagerDlg_Impl::GetCondFormatSelected() +{ + return m_xDlg->GetCondFormatSelected(); +} + +int AbstractScMetricInputDlg_Impl::GetInputValue() const +{ + return m_xDlg->GetInputValue(); +} + +sal_uInt16 AbstractScMoveTableDlg_Impl::GetSelectedDocument() const +{ + return m_xDlg->GetSelectedDocument(); +} + +sal_uInt16 AbstractScMoveTableDlg_Impl::GetSelectedTable() const +{ + return m_xDlg->GetSelectedTable(); +} + +bool AbstractScMoveTableDlg_Impl::GetCopyTable() const +{ + return m_xDlg->GetCopyTable(); +} + +bool AbstractScMoveTableDlg_Impl::GetRenameTable() const +{ + return m_xDlg->GetRenameTable(); +} + +void AbstractScMoveTableDlg_Impl::GetTabNameString( OUString& rString ) const +{ + m_xDlg->GetTabNameString( rString ); +} + +void AbstractScMoveTableDlg_Impl::SetForceCopyTable() +{ + return m_xDlg->SetForceCopyTable(); +} + +void AbstractScMoveTableDlg_Impl::EnableRenameTable(bool bFlag) +{ + return m_xDlg->EnableRenameTable( bFlag); +} + +CreateNameFlags AbstractScNameCreateDlg_Impl::GetFlags() const +{ + return m_xDlg->GetFlags(); +} + +BitmapEx AbstractScNameCreateDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScNameCreateDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +std::vector<OUString> AbstractScNamePasteDlg_Impl::GetSelectedNames() const +{ + return m_xDlg->GetSelectedNames(); +} + +const ScQueryItem& AbstractScPivotFilterDlg_Impl::GetOutputItem() +{ + return m_xDlg->GetOutputItem(); +} + +PivotFunc AbstractScDPFunctionDlg_Impl::GetFuncMask() const +{ + return m_xDlg->GetFuncMask(); +} + +css::sheet::DataPilotFieldReference AbstractScDPFunctionDlg_Impl::GetFieldRef() const +{ + return m_xDlg->GetFieldRef(); +} + +PivotFunc AbstractScDPSubtotalDlg_Impl::GetFuncMask() const +{ + return m_xDlg->GetFuncMask(); +} + +void AbstractScDPSubtotalDlg_Impl::FillLabelData( ScDPLabelData& rLabelData ) const +{ + m_xDlg->FillLabelData( rLabelData ); +} + +ScDPNumGroupInfo AbstractScDPNumGroupDlg_Impl::GetGroupInfo() const +{ + return m_xDlg->GetGroupInfo(); +} + +ScDPNumGroupInfo AbstractScDPDateGroupDlg_Impl::GetGroupInfo() const +{ + return m_xDlg->GetGroupInfo(); +} + +sal_Int32 AbstractScDPDateGroupDlg_Impl::GetDatePart() const +{ + return m_xDlg->GetDatePart(); +} + +OUString AbstractScDPShowDetailDlg_Impl::GetDimensionName() const +{ + return m_xDlg->GetDimensionName(); +} + +void AbstractScNewScenarioDlg_Impl::SetScenarioData( + const OUString& rName, const OUString& rComment, const Color& rColor, ScScenarioFlags nFlags ) +{ + m_xDlg->SetScenarioData(rName, rComment, rColor, nFlags); +} + +void AbstractScNewScenarioDlg_Impl::GetScenarioData( + OUString& rName, OUString& rComment, Color& rColor, ScScenarioFlags& rFlags ) const +{ + m_xDlg->GetScenarioData(rName, rComment, rColor, rFlags); +} + +void AbstractScShowTabDlg_Impl::Insert( const OUString& rString, bool bSelected ) +{ + m_xDlg->Insert(rString, bSelected); +} + +void AbstractScShowTabDlg_Impl::SetDescription( + const OUString& rTitle, const OUString& rFixedText, + const OString& sDlgHelpId, const OString& sLbHelpId ) +{ + m_xDlg->SetDescription( rTitle, rFixedText, sDlgHelpId, sLbHelpId ); +} + +std::vector<sal_Int32> AbstractScShowTabDlg_Impl::GetSelectedRows() const +{ + return m_xDlg->GetSelectedRows(); +} + +OUString AbstractScShowTabDlg_Impl::GetEntry(sal_Int32 nPos) const +{ + return m_xDlg->GetEntry(nPos); +} + +short AbstractScStringInputDlg_Impl::Execute() +{ + return m_xDlg->run(); +} + +OUString AbstractScStringInputDlg_Impl::GetInputString() const +{ + return m_xDlg->GetInputString(); +} + +BitmapEx AbstractScStringInputDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScStringInputDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +void AbstractScTabBgColorDlg_Impl::GetSelectedColor( Color& rColor ) const +{ + m_xDlg->GetSelectedColor( rColor ); +} + +BitmapEx AbstractScTabBgColorDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScTabBgColorDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +void AbstractScImportOptionsDlg_Impl::GetImportOptions( ScImportOptions& rOptions ) const +{ + m_xDlg->GetImportOptions(rOptions); +} + +void AbstractScImportOptionsDlg_Impl::SaveImportOptions() const +{ + m_xDlg->SaveImportOptions(); +} + +LanguageType AbstractScTextImportOptionsDlg_Impl::GetLanguageType() const +{ + return m_xDlg->getLanguageType(); +} + +bool AbstractScTextImportOptionsDlg_Impl::IsDateConversionSet() const +{ + return m_xDlg->isDateConversionSet(); +} + +BitmapEx AbstractScTextImportOptionsDlg_Impl::createScreenshot() const +{ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); + m_xDlg->getDialog()->draw(*xDialogSurface); + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); +} + +OString AbstractScTextImportOptionsDlg_Impl::GetScreenshotId() const +{ + return m_xDlg->get_help_id(); +} + +short ScAbstractTabController_Impl::Execute() +{ + return m_xDlg->run(); +} + +bool ScAbstractTabController_Impl::StartExecuteAsync(AsyncContext &rCtx) +{ + return SfxTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + +void ScAbstractTabController_Impl::SetCurPageId( const OString &rName ) +{ + m_xDlg->SetCurPageId( rName ); +} + +const SfxItemSet* ScAbstractTabController_Impl::GetOutputItemSet() const +{ + return m_xDlg->GetOutputItemSet(); +} + +const sal_uInt16* ScAbstractTabController_Impl::GetInputRanges(const SfxItemPool& pItem ) +{ + return m_xDlg->GetInputRanges( pItem ); +} + +void ScAbstractTabController_Impl::SetInputSet( const SfxItemSet* pInSet ) +{ + m_xDlg->SetInputSet( pInSet ); +} + +//From class Window. +void ScAbstractTabController_Impl::SetText( const OUString& rStr ) +{ + m_xDlg->set_title(rStr); +} + +std::vector<OString> ScAbstractTabController_Impl::getAllPageUIXMLDescriptions() const +{ + return m_xDlg->getAllPageUIXMLDescriptions(); +} + +bool ScAbstractTabController_Impl::selectPageByUIXMLDescription(const OString& rUIXMLDescription) +{ + return m_xDlg->selectPageByUIXMLDescription(rUIXMLDescription); +} + +BitmapEx ScAbstractTabController_Impl::createScreenshot() const +{ + return m_xDlg->createScreenshot(); +} + +OString ScAbstractTabController_Impl::GetScreenshotId() const +{ + return m_xDlg->GetScreenshotId(); +} + +// =========================Factories for createdialog =================== +VclPtr<AbstractScImportAsciiDlg> ScAbstractDialogFactory_Impl::CreateScImportAsciiDlg(weld::Window* pParent, + const OUString& aDatName, + SvStream* pInStream, ScImportAsciiCall eCall) +{ + return VclPtr<AbstractScImportAsciiDlg_Impl>::Create(std::make_shared<ScImportAsciiDlg>(pParent, aDatName,pInStream, eCall)); +} + +VclPtr<AbstractScTextImportOptionsDlg> ScAbstractDialogFactory_Impl::CreateScTextImportOptionsDlg(weld::Window* pParent) +{ + return VclPtr<AbstractScTextImportOptionsDlg_Impl>::Create(std::make_unique<ScTextImportOptionsDlg>(pParent)); +} + +VclPtr<AbstractScAutoFormatDlg> ScAbstractDialogFactory_Impl::CreateScAutoFormatDlg(weld::Window* pParent, + ScAutoFormat* pAutoFormat, + const ScAutoFormatData* pSelFormatData, + ScViewData *pViewData) +{ + return VclPtr<AbstractScAutoFormatDlg_Impl>::Create(std::make_unique<ScAutoFormatDlg>(pParent, pAutoFormat, pSelFormatData, pViewData)); +} + +VclPtr<AbstractScColRowLabelDlg> ScAbstractDialogFactory_Impl::CreateScColRowLabelDlg(weld::Window* pParent, + bool bCol, bool bRow) +{ + return VclPtr<AbstractScColRowLabelDlg_Impl>::Create(std::make_unique<ScColRowLabelDlg>(pParent, bCol, bRow)); +} + +VclPtr<AbstractScSortWarningDlg> ScAbstractDialogFactory_Impl::CreateScSortWarningDlg(weld::Window* pParent, const OUString& rExtendText, const OUString& rCurrentText) +{ + return VclPtr<AbstractScSortWarningDlg_Impl>::Create(std::make_unique<ScSortWarningDlg>(pParent, rExtendText, rCurrentText)); +} + +VclPtr<AbstractScCondFormatManagerDlg> ScAbstractDialogFactory_Impl::CreateScCondFormatMgrDlg(weld::Window* pParent, ScDocument* pDoc, const ScConditionalFormatList* pFormatList ) +{ + return VclPtr<AbstractScCondFormatManagerDlg_Impl>::Create(std::make_shared<ScCondFormatManagerDlg>(pParent, pDoc, pFormatList)); +} + +VclPtr<AbstractScDataPilotDatabaseDlg> ScAbstractDialogFactory_Impl::CreateScDataPilotDatabaseDlg(weld::Window* pParent) +{ + return VclPtr<AbstractScDataPilotDatabaseDlg_Impl>::Create(std::make_unique<ScDataPilotDatabaseDlg>(pParent)); +} + +VclPtr<AbstractScDataPilotSourceTypeDlg> ScAbstractDialogFactory_Impl::CreateScDataPilotSourceTypeDlg( + weld::Window* pParent, bool bEnableExternal) +{ + return VclPtr<AbstractScDataPilotSourceTypeDlg_Impl>::Create(std::make_unique<ScDataPilotSourceTypeDlg>(pParent, bEnableExternal)); +} + +VclPtr<AbstractScDataPilotServiceDlg> ScAbstractDialogFactory_Impl::CreateScDataPilotServiceDlg(weld::Window* pParent, + const std::vector<OUString>& rServices) +{ + return VclPtr<AbstractScDataPilotServiceDlg_Impl>::Create(std::make_unique<ScDataPilotServiceDlg>(pParent, rServices)); +} + +VclPtr<AbstractScDeleteCellDlg> ScAbstractDialogFactory_Impl::CreateScDeleteCellDlg(weld::Window* pParent, + bool bDisallowCellMove) +{ + return VclPtr<AbstractScDeleteCellDlg_Impl>::Create(std::make_unique<ScDeleteCellDlg>(pParent, bDisallowCellMove)); +} + +VclPtr<AbstractScDataFormDlg> ScAbstractDialogFactory_Impl::CreateScDataFormDlg(weld::Window* pParent, + ScTabViewShell* pTabViewShell) +{ + return VclPtr<AbstractScDataFormDlg_Impl>::Create(std::make_unique<ScDataFormDlg>(pParent, pTabViewShell)); +} + +VclPtr<AbstractScDeleteContentsDlg> ScAbstractDialogFactory_Impl::CreateScDeleteContentsDlg(weld::Window* pParent) +{ + return VclPtr<AbstractScDeleteContentsDlg_Impl>::Create(std::make_unique<ScDeleteContentsDlg>(pParent)); +} + +VclPtr<AbstractScFillSeriesDlg> 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<AbstractScFillSeriesDlg_Impl>::Create(std::make_unique<ScFillSeriesDlg>(pParent, rDocument,eFillDir, eFillCmd,eFillDateCmd, aStartStr,fStep,fMax,nSelectHeight,nSelectWidth,nPossDir)); +} + +VclPtr<AbstractScGroupDlg> ScAbstractDialogFactory_Impl::CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup) +{ + return VclPtr<AbstractScGroupDlg_Impl>::Create(std::make_unique<ScGroupDlg>(pParent, bUnGroup, true/*bRows*/)); +} + +VclPtr<AbstractScInsertCellDlg> ScAbstractDialogFactory_Impl::CreateScInsertCellDlg(weld::Window* pParent, + bool bDisallowCellMove) +{ + return VclPtr<AbstractScInsertCellDlg_Impl>::Create(std::make_unique<ScInsertCellDlg>(pParent, bDisallowCellMove)); +} + +VclPtr<AbstractScInsertContentsDlg> ScAbstractDialogFactory_Impl::CreateScInsertContentsDlg(weld::Window* pParent, + const OUString* pStrTitle) +{ + return VclPtr<AbstractScInsertContentsDlg_Impl>::Create(std::make_unique<ScInsertContentsDlg>(pParent, pStrTitle)); +} + +VclPtr<AbstractScInsertTableDlg> ScAbstractDialogFactory_Impl::CreateScInsertTableDlg(weld::Window* pParent, ScViewData& rViewData, + SCTAB nTabCount, bool bFromFile) +{ + return VclPtr<AbstractScInsertTableDlg_Impl>::Create(std::make_unique<ScInsertTableDlg>(pParent, rViewData,nTabCount, bFromFile)); +} + +VclPtr<AbstractScSelEntryDlg> ScAbstractDialogFactory_Impl::CreateScSelEntryDlg(weld::Window* pParent, + const std::vector<OUString> &rEntryList) +{ + return VclPtr<AbstractScSelEntryDlg_Impl>::Create(std::make_unique<ScSelEntryDlg>(pParent, rEntryList)); +} + +VclPtr<AbstractScLinkedAreaDlg> ScAbstractDialogFactory_Impl::CreateScLinkedAreaDlg(weld::Window* pParent) +{ + return VclPtr<AbstractScLinkedAreaDlg_Impl>::Create(std::make_unique<ScLinkedAreaDlg>(pParent)); +} + +VclPtr<AbstractScMetricInputDlg> ScAbstractDialogFactory_Impl::CreateScMetricInputDlg(weld::Window* pParent, + const OString& sDialogName, + long nCurrent, + long nDefault, + FieldUnit eFUnit, + sal_uInt16 nDecimals, + long nMaximum , + long nMinimum ) +{ + return VclPtr<AbstractScMetricInputDlg_Impl>::Create(std::make_unique<ScMetricInputDlg>(pParent, sDialogName, nCurrent ,nDefault, eFUnit, + nDecimals, nMaximum , nMinimum)); +} + +VclPtr<AbstractScMoveTableDlg> ScAbstractDialogFactory_Impl::CreateScMoveTableDlg(weld::Window* pParent, + const OUString& rDefault) +{ + return VclPtr<AbstractScMoveTableDlg_Impl>::Create(std::make_unique<ScMoveTableDlg>(pParent, rDefault)); +} + +VclPtr<AbstractScNameCreateDlg> ScAbstractDialogFactory_Impl::CreateScNameCreateDlg(weld::Window * pParent, CreateNameFlags nFlags) +{ + return VclPtr<AbstractScNameCreateDlg_Impl>::Create(std::make_unique<ScNameCreateDlg>(pParent, nFlags)); +} + +VclPtr<AbstractScNamePasteDlg> ScAbstractDialogFactory_Impl::CreateScNamePasteDlg(weld::Window * pParent, ScDocShell* pShell) +{ + return VclPtr<AbstractScNamePasteDlg_Impl>::Create(std::make_unique<ScNamePasteDlg>(pParent, pShell)); +} + +VclPtr<AbstractScPivotFilterDlg> ScAbstractDialogFactory_Impl::CreateScPivotFilterDlg(weld::Window* pParent, + const SfxItemSet& rArgSet, sal_uInt16 nSourceTab) +{ + return VclPtr<AbstractScPivotFilterDlg_Impl>::Create(std::make_unique<ScPivotFilterDlg>(pParent, rArgSet, nSourceTab)); +} + +VclPtr<AbstractScDPFunctionDlg> ScAbstractDialogFactory_Impl::CreateScDPFunctionDlg(weld::Widget* pParent, + const ScDPLabelDataVector& rLabelVec, + const ScDPLabelData& rLabelData, + const ScPivotFuncData& rFuncData) +{ + return VclPtr<AbstractScDPFunctionDlg_Impl>::Create(std::make_unique<ScDPFunctionDlg>(pParent, rLabelVec, rLabelData, rFuncData)); +} + +VclPtr<AbstractScDPSubtotalDlg> ScAbstractDialogFactory_Impl::CreateScDPSubtotalDlg(weld::Widget* pParent, + ScDPObject& rDPObj, + const ScDPLabelData& rLabelData, + const ScPivotFuncData& rFuncData, + const ScDPNameVec& rDataFields) +{ + return VclPtr<AbstractScDPSubtotalDlg_Impl>::Create(std::make_unique<ScDPSubtotalDlg>(pParent, rDPObj, rLabelData, rFuncData, rDataFields, true/*bEnableLayout*/)); +} + +VclPtr<AbstractScDPNumGroupDlg> ScAbstractDialogFactory_Impl::CreateScDPNumGroupDlg(weld::Window* pParent, const ScDPNumGroupInfo& rInfo) +{ + return VclPtr<AbstractScDPNumGroupDlg_Impl>::Create(std::make_unique<ScDPNumGroupDlg>(pParent, rInfo)); +} + +VclPtr<AbstractScDPDateGroupDlg> ScAbstractDialogFactory_Impl::CreateScDPDateGroupDlg( + weld::Window* pParent, const ScDPNumGroupInfo& rInfo, sal_Int32 nDatePart, const Date& rNullDate) +{ + return VclPtr<AbstractScDPDateGroupDlg_Impl>::Create(std::make_unique<ScDPDateGroupDlg>(pParent, rInfo, nDatePart, rNullDate)); +} + +VclPtr<AbstractScDPShowDetailDlg> ScAbstractDialogFactory_Impl::CreateScDPShowDetailDlg ( + weld::Window* pParent, ScDPObject& rDPObj, css::sheet::DataPilotFieldOrientation nOrient ) +{ + return VclPtr<AbstractScDPShowDetailDlg_Impl>::Create(std::make_unique<ScDPShowDetailDlg>(pParent, rDPObj, nOrient)); +} + +VclPtr<AbstractScNewScenarioDlg> ScAbstractDialogFactory_Impl::CreateScNewScenarioDlg(weld::Window* pParent, const OUString& rName, + bool bEdit, bool bSheetProtected) +{ + return VclPtr<AbstractScNewScenarioDlg_Impl>::Create(std::make_unique<ScNewScenarioDlg>(pParent, rName, bEdit, bSheetProtected)); +} + +VclPtr<AbstractScShowTabDlg> ScAbstractDialogFactory_Impl::CreateScShowTabDlg(weld::Window* pParent) +{ + return VclPtr<AbstractScShowTabDlg_Impl>::Create(std::make_shared<ScShowTabDlg>(pParent)); +} + +VclPtr<AbstractScStringInputDlg> ScAbstractDialogFactory_Impl::CreateScStringInputDlg(weld::Window* pParent, + const OUString& rTitle, const OUString& rEditTitle, const OUString& rDefault, const OString& rHelpId, + const OString& rEditHelpId) +{ + return VclPtr<AbstractScStringInputDlg_Impl>::Create(std::make_unique<ScStringInputDlg>(pParent, rTitle, rEditTitle, + rDefault, rHelpId, rEditHelpId)); +} + +VclPtr<AbstractScTabBgColorDlg> ScAbstractDialogFactory_Impl::CreateScTabBgColorDlg( + weld::Window* pParent, + const OUString& rTitle, + const OUString& rTabBgColorNoColorText, + const Color& rDefaultColor) +{ + return VclPtr<AbstractScTabBgColorDlg_Impl>::Create(std::make_unique<ScTabBgColorDlg>(pParent, rTitle, rTabBgColorNoColorText, rDefaultColor)); +} + +VclPtr<AbstractScImportOptionsDlg> ScAbstractDialogFactory_Impl::CreateScImportOptionsDlg(weld::Window* pParent, + bool bAscii, + const ScImportOptions* pOptions, + const OUString* pStrTitle, + bool bOnlyDbtoolsEncodings, + bool bImport) +{ + return VclPtr<AbstractScImportOptionsDlg_Impl>::Create(std::make_unique<ScImportOptionsDlg>(pParent, bAscii, pOptions, pStrTitle, true/*bMultiByte*/, bOnlyDbtoolsEncodings, bImport)); +} + +VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScAttrDlg(weld::Window* pParent, const SfxItemSet* pCellAttrs) +{ + return VclPtr<ScAbstractTabController_Impl>::Create(std::make_shared<ScAttrDlg>(pParent, pCellAttrs)); +} + +VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScHFEditDlg( weld::Window* pParent, + const SfxItemSet& rCoreSet, + const OUString& rPageStyle, + sal_uInt16 nResId ) +{ + std::shared_ptr<SfxTabDialogController> xDlg; + + switch (nResId) + { + case RID_SCDLG_HFED_HEADER: + case RID_SCDLG_HFEDIT_HEADER: + xDlg = std::make_shared<ScHFEditHeaderDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFED_FOOTER: + case RID_SCDLG_HFEDIT_FOOTER: + xDlg = std::make_shared<ScHFEditFooterDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFEDIT_LEFTHEADER: + xDlg = std::make_shared<ScHFEditLeftHeaderDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFEDIT_RIGHTHEADER: + xDlg = std::make_shared<ScHFEditRightHeaderDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFEDIT_LEFTFOOTER: + xDlg = std::make_shared<ScHFEditLeftFooterDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFEDIT_RIGHTFOOTER: + xDlg = std::make_shared<ScHFEditRightFooterDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFEDIT_SHDR: + xDlg = std::make_shared<ScHFEditSharedHeaderDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFEDIT_SFTR: + xDlg = std::make_shared<ScHFEditSharedFooterDlg>(pParent, rCoreSet, rPageStyle); + break; + case RID_SCDLG_HFEDIT_ALL: + xDlg = std::make_shared<ScHFEditAllDlg>(pParent, rCoreSet, rPageStyle); + break; + default: + case RID_SCDLG_HFEDIT: + xDlg = std::make_shared<ScHFEditActiveDlg>(pParent, rCoreSet, rPageStyle); + break; + } + + return xDlg ? VclPtr<ScAbstractTabController_Impl>::Create(std::move(xDlg)) : nullptr; +} + +VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScStyleDlg(weld::Window* pParent, + SfxStyleSheetBase& rStyleBase, + bool bPage) +{ + return VclPtr<ScAbstractTabController_Impl>::Create(std::make_shared<ScStyleDlg>(pParent, rStyleBase, bPage)); +} + +VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScSubTotalDlg(weld::Window* pParent, const SfxItemSet* pArgSet) +{ + return VclPtr<ScAbstractTabController_Impl>::Create(std::make_shared<ScSubTotalDlg>(pParent, pArgSet)); +} + +VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScCharDlg( + weld::Window* pParent, const SfxItemSet* pAttr, const SfxObjectShell* pDocShell, bool bDrawText) +{ + return VclPtr<ScAbstractTabController_Impl>::Create(std::make_shared<ScCharDlg>(pParent, pAttr, pDocShell, bDrawText)); +} + +VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScParagraphDlg( + weld::Window* pParent, const SfxItemSet* pAttr) +{ + return VclPtr<ScAbstractTabController_Impl>::Create(std::make_shared<ScParagraphDlg>(pParent, pAttr)); +} + +VclPtr<SfxAbstractTabDialog> ScAbstractDialogFactory_Impl::CreateScSortDlg(weld::Window* pParent, const SfxItemSet* pArgSet) +{ + return VclPtr<ScAbstractTabController_Impl>::Create(std::make_shared<ScSortDlg>(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: */ diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx new file mode 100644 index 000000000..ddcdef3ca --- /dev/null +++ b/sc/source/ui/attrdlg/scdlgfact.hxx @@ -0,0 +1,815 @@ +/* -*- 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 . + */ +#ifndef INCLUDED_SC_SOURCE_UI_ATTRDLG_SCDLGFACT_HXX +#define INCLUDED_SC_SOURCE_UI_ATTRDLG_SCDLGFACT_HXX + +#include <scabstdlg.hxx> +#include <sfx2/sfxdlg.hxx> +#include <vcl/virdev.hxx> + +#include <corodlg.hxx> +#include <condformatmgr.hxx> +#include <dapitype.hxx> +#include <dapidata.hxx> +#include <datafdlg.hxx> +#include <delcodlg.hxx> +#include <delcldlg.hxx> +#include <dpgroupdlg.hxx> +#include <filldlg.hxx> +#include <groupdlg.hxx> +#include <linkarea.hxx> +#include <lbseldlg.hxx> +#include <inscldlg.hxx> +#include <instbdlg.hxx> +#include <inscodlg.hxx> +#include <mtrindlg.hxx> +#include <mvtabdlg.hxx> +#include <namecrea.hxx> +#include <namepast.hxx> +#include <pfiltdlg.hxx> +#include <pvfundlg.hxx> +#include <shtabdlg.hxx> +#include <scendlg.hxx> +#include <scuiasciiopt.hxx> +#include <scuiautofmt.hxx> +#include <scuiimoptdlg.hxx> +#include <sortdlg.hxx> +#include <strindlg.hxx> +#include <tabbgcolordlg.hxx> +#include <textimportoptions.hxx> + +#define DECL_ABSTDLG_BASE(Class,DialogClass) \ + ScopedVclPtr<DialogClass> pDlg; \ +public: \ + explicit Class( DialogClass* p) \ + : pDlg(p) \ + {} \ + virtual ~Class() override; \ + virtual short Execute() override ; \ + virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; \ + std::vector<OString> getAllPageUIXMLDescriptions() const override; \ + bool selectPageByUIXMLDescription(const OString& rUIXMLDescription) override; \ + virtual BitmapEx createScreenshot() const override; \ + virtual OString GetScreenshotId() const override; \ + +#define IMPL_ABSTDLG_BASE(Class) \ +Class::~Class() \ +{ \ +} \ +short Class::Execute() \ +{ \ + return pDlg->Execute(); \ +} \ +bool Class::StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx)\ +{ \ + return pDlg->StartExecuteAsync( rCtx ); \ +} \ +std::vector<OString> Class::getAllPageUIXMLDescriptions() const \ +{ \ + return pDlg->getAllPageUIXMLDescriptions(); \ +} \ +bool Class::selectPageByUIXMLDescription(const OString& rUIXMLDescription) \ +{ \ + return pDlg->selectPageByUIXMLDescription(rUIXMLDescription); \ +} \ +BitmapEx Class::createScreenshot() const \ +{ \ + VclPtr<VirtualDevice> xDialogSurface(VclPtr<VirtualDevice>::Create(DeviceFormat::DEFAULT)); \ + pDlg->createScreenshot(*xDialogSurface); \ + return xDialogSurface->GetBitmapEx(Point(), xDialogSurface->GetOutputSizePixel()); \ +} \ +OString Class::GetScreenshotId() const \ +{ \ + return pDlg->GetScreenshotId(); \ +} + +class AbstractScImportAsciiDlg_Impl : public AbstractScImportAsciiDlg +{ + std::shared_ptr<ScImportAsciiDlg> m_xDlg; +public: + explicit AbstractScImportAsciiDlg_Impl(std::shared_ptr<ScImportAsciiDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; + virtual void GetOptions( ScAsciiOptions& rOpt ) override; + virtual void SaveParameters() override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScAutoFormatDlg_Impl : public AbstractScAutoFormatDlg +{ + std::unique_ptr<ScAutoFormatDlg> m_xDlg; +public: + explicit AbstractScAutoFormatDlg_Impl(std::unique_ptr<ScAutoFormatDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual sal_uInt16 GetIndex() const override; + virtual OUString GetCurrFormatName() override; +}; + +class AbstractScColRowLabelDlg_Impl : public AbstractScColRowLabelDlg +{ + std::unique_ptr<ScColRowLabelDlg> m_xDlg; +public: + explicit AbstractScColRowLabelDlg_Impl(std::unique_ptr<ScColRowLabelDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool IsCol() override; + virtual bool IsRow() override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScCondFormatManagerDlg_Impl : public AbstractScCondFormatManagerDlg +{ + std::shared_ptr<ScCondFormatManagerDlg> m_xDlg; +public: + explicit AbstractScCondFormatManagerDlg_Impl(std::shared_ptr<ScCondFormatManagerDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; + virtual std::unique_ptr<ScConditionalFormatList> GetConditionalFormatList() override; + virtual bool CondFormatsChanged() const override; + virtual void SetModified() override; + virtual ScConditionalFormat* GetCondFormatSelected() override; +}; + +class AbstractScDataPilotDatabaseDlg_Impl :public AbstractScDataPilotDatabaseDlg +{ + std::unique_ptr<ScDataPilotDatabaseDlg> m_xDlg; +public: + explicit AbstractScDataPilotDatabaseDlg_Impl(std::unique_ptr<ScDataPilotDatabaseDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual void GetValues( ScImportSourceDesc& rDesc ) override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScDataPilotSourceTypeDlg_Impl :public AbstractScDataPilotSourceTypeDlg +{ + std::unique_ptr<ScDataPilotSourceTypeDlg> m_xDlg; +public: + explicit AbstractScDataPilotSourceTypeDlg_Impl(std::unique_ptr<ScDataPilotSourceTypeDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool IsDatabase() const override; + virtual bool IsExternal() const override; + virtual bool IsNamedRange() const override; + virtual OUString GetSelectedNamedRange() const override; + virtual void AppendNamedRange(const OUString& rName) override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScDataPilotServiceDlg_Impl : public AbstractScDataPilotServiceDlg +{ + std::unique_ptr<ScDataPilotServiceDlg> m_xDlg; +public: + explicit AbstractScDataPilotServiceDlg_Impl(std::unique_ptr<ScDataPilotServiceDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual OUString GetServiceName() const override; + virtual OUString GetParSource() const override; + virtual OUString GetParName() const override; + virtual OUString GetParUser() const override; + virtual OUString GetParPass() const override; +}; + +class AbstractScDeleteCellDlg_Impl : public AbstractScDeleteCellDlg +{ + std::unique_ptr<ScDeleteCellDlg> m_xDlg; +public: + explicit AbstractScDeleteCellDlg_Impl(std::unique_ptr<ScDeleteCellDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual DelCellCmd GetDelCellCmd() const override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +//for dataform +class AbstractScDataFormDlg_Impl : public AbstractScDataFormDlg +{ + std::unique_ptr<ScDataFormDlg> m_xDlg; +public: + explicit AbstractScDataFormDlg_Impl(std::unique_ptr<ScDataFormDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScDeleteContentsDlg_Impl : public AbstractScDeleteContentsDlg +{ + std::unique_ptr<ScDeleteContentsDlg> m_xDlg; +public: + explicit AbstractScDeleteContentsDlg_Impl(std::unique_ptr<ScDeleteContentsDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual void DisableObjects() override; + virtual InsertDeleteFlags GetDelContentsCmdBits() const override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScFillSeriesDlg_Impl:public AbstractScFillSeriesDlg +{ + std::unique_ptr<ScFillSeriesDlg> m_xDlg; +public: + explicit AbstractScFillSeriesDlg_Impl(std::unique_ptr<ScFillSeriesDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual FillDir GetFillDir() const override; + virtual FillCmd GetFillCmd() const override; + virtual FillDateCmd GetFillDateCmd() const override; + virtual double GetStart() const override; + virtual double GetStep() const override; + virtual double GetMax() const override; + virtual OUString GetStartStr() const override; + virtual void SetEdStartValEnabled(bool bFlag) override; +}; + +class AbstractScGroupDlg_Impl : public AbstractScGroupDlg +{ + std::unique_ptr<ScGroupDlg> m_xDlg; +public: + explicit AbstractScGroupDlg_Impl(std::unique_ptr<ScGroupDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool GetColsChecked() const override; +}; + +class AbstractScInsertCellDlg_Impl : public AbstractScInsertCellDlg +{ + std::unique_ptr<ScInsertCellDlg> m_xDlg; +public: + explicit AbstractScInsertCellDlg_Impl(std::unique_ptr<ScInsertCellDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual InsCellCmd GetInsCellCmd() const override ; +}; + +class AbstractScInsertContentsDlg_Impl : public AbstractScInsertContentsDlg +{ + std::unique_ptr<ScInsertContentsDlg> m_xDlg; +public: + explicit AbstractScInsertContentsDlg_Impl(std::unique_ptr<ScInsertContentsDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual InsertDeleteFlags GetInsContentsCmdBits() const override; + virtual ScPasteFunc GetFormulaCmdBits() const override; + virtual bool IsSkipEmptyCells() const override; + virtual bool IsLink() const override; + virtual void SetFillMode( bool bSet ) override; + virtual void SetOtherDoc( bool bSet ) override; + virtual bool IsTranspose() const override; + virtual void SetChangeTrack( bool bSet ) override; + virtual void SetCellShiftDisabled( CellShiftDisabledFlags nDisable ) override; + virtual InsCellCmd GetMoveMode() override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScInsertTableDlg_Impl : public AbstractScInsertTableDlg +{ + std::unique_ptr<ScInsertTableDlg> m_xDlg; +public: + explicit AbstractScInsertTableDlg_Impl(std::unique_ptr<ScInsertTableDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool GetTablesFromFile() override; + virtual bool GetTablesAsLink() override; + virtual const OUString* GetFirstTable( sal_uInt16* pN = nullptr ) override; + virtual ScDocShell* GetDocShellTables() override; + virtual bool IsTableBefore() override; + virtual sal_uInt16 GetTableCount() override; + virtual const OUString* GetNextTable( sal_uInt16* pN ) override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScSelEntryDlg_Impl : public AbstractScSelEntryDlg +{ + std::unique_ptr<ScSelEntryDlg> m_xDlg; +public: + explicit AbstractScSelEntryDlg_Impl(std::unique_ptr<ScSelEntryDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual OUString GetSelectedEntry() const override; +}; + +class AbstractScLinkedAreaDlg_Impl : public AbstractScLinkedAreaDlg +{ + std::unique_ptr<ScLinkedAreaDlg> m_xDlg; +public: + explicit AbstractScLinkedAreaDlg_Impl(std::unique_ptr<ScLinkedAreaDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual ~AbstractScLinkedAreaDlg_Impl() override; + virtual short Execute() override; + virtual void InitFromOldLink( const OUString& rFile, const OUString& rFilter, + const OUString& rOptions, const OUString& rSource, + sal_uLong nRefresh ) override; + virtual OUString GetURL() override; + virtual OUString GetFilter() override; // may be empty + virtual OUString GetOptions() override; // filter options + virtual OUString GetSource() override; // separated by ";" + virtual sal_uLong GetRefresh() override; // 0 if disabled +}; + +class AbstractScMetricInputDlg_Impl : public AbstractScMetricInputDlg +{ + std::unique_ptr<ScMetricInputDlg> m_xDlg; +public: + explicit AbstractScMetricInputDlg_Impl(std::unique_ptr<ScMetricInputDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual int GetInputValue() const override; +}; + +class AbstractScMoveTableDlg_Impl : public AbstractScMoveTableDlg +{ + std::unique_ptr<ScMoveTableDlg> m_xDlg; +public: + explicit AbstractScMoveTableDlg_Impl(std::unique_ptr<ScMoveTableDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual sal_uInt16 GetSelectedDocument () const override; + virtual sal_uInt16 GetSelectedTable () const override; + virtual bool GetCopyTable () const override; + virtual bool GetRenameTable () const override; + virtual void GetTabNameString( OUString& rString ) const override; + virtual void SetForceCopyTable () override; + virtual void EnableRenameTable (bool bFlag) override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScNameCreateDlg_Impl : public AbstractScNameCreateDlg +{ + std::unique_ptr<ScNameCreateDlg> m_xDlg; +public: + explicit AbstractScNameCreateDlg_Impl(std::unique_ptr<ScNameCreateDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual CreateNameFlags GetFlags() const override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScNamePasteDlg_Impl : public AbstractScNamePasteDlg +{ + std::unique_ptr<ScNamePasteDlg> m_xDlg; +public: + explicit AbstractScNamePasteDlg_Impl(std::unique_ptr<ScNamePasteDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual std::vector<OUString> GetSelectedNames() const override; +}; + +class AbstractScPivotFilterDlg_Impl : public AbstractScPivotFilterDlg +{ + std::unique_ptr<ScPivotFilterDlg> m_xDlg; +public: + explicit AbstractScPivotFilterDlg_Impl(std::unique_ptr<ScPivotFilterDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual const ScQueryItem& GetOutputItem() override; +}; + +class AbstractScDPFunctionDlg_Impl : public AbstractScDPFunctionDlg +{ + std::unique_ptr<ScDPFunctionDlg> m_xDlg; +public: + explicit AbstractScDPFunctionDlg_Impl(std::unique_ptr<ScDPFunctionDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual PivotFunc GetFuncMask() const override; + virtual css::sheet::DataPilotFieldReference GetFieldRef() const override; +}; + +class AbstractScDPSubtotalDlg_Impl : public AbstractScDPSubtotalDlg +{ + std::unique_ptr<ScDPSubtotalDlg> m_xDlg; +public: + explicit AbstractScDPSubtotalDlg_Impl(std::unique_ptr<ScDPSubtotalDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual PivotFunc GetFuncMask() const override; + virtual void FillLabelData( ScDPLabelData& rLabelData ) const override; +}; + +class AbstractScDPNumGroupDlg_Impl : public AbstractScDPNumGroupDlg +{ + std::unique_ptr<ScDPNumGroupDlg> m_xDlg; +public: + explicit AbstractScDPNumGroupDlg_Impl(std::unique_ptr<ScDPNumGroupDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual ScDPNumGroupInfo GetGroupInfo() const override; +}; + +class AbstractScDPDateGroupDlg_Impl : public AbstractScDPDateGroupDlg +{ + std::unique_ptr<ScDPDateGroupDlg> m_xDlg; +public: + explicit AbstractScDPDateGroupDlg_Impl(std::unique_ptr<ScDPDateGroupDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual ScDPNumGroupInfo GetGroupInfo() const override; + virtual sal_Int32 GetDatePart() const override; +}; + +class AbstractScDPShowDetailDlg_Impl : public AbstractScDPShowDetailDlg +{ + std::unique_ptr<ScDPShowDetailDlg> m_xDlg; +public: + explicit AbstractScDPShowDetailDlg_Impl(std::unique_ptr<ScDPShowDetailDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual OUString GetDimensionName() const override; +}; + +class AbstractScNewScenarioDlg_Impl : public AbstractScNewScenarioDlg +{ + std::unique_ptr<ScNewScenarioDlg> m_xDlg; +public: + explicit AbstractScNewScenarioDlg_Impl(std::unique_ptr<ScNewScenarioDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + + virtual void SetScenarioData( const OUString& rName, const OUString& rComment, + const Color& rColor, ScScenarioFlags nFlags ) override; + + virtual void GetScenarioData( OUString& rName, OUString& rComment, + Color& rColor, ScScenarioFlags& rFlags ) const override; +}; + +class AbstractScShowTabDlg_Impl : public AbstractScShowTabDlg +{ + std::shared_ptr<ScShowTabDlg> m_xDlg; +public: + explicit AbstractScShowTabDlg_Impl(std::shared_ptr<ScShowTabDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override; + virtual void Insert( const OUString& rString, bool bSelected ) override; + virtual void SetDescription(const OUString& rTitle, const OUString& rFixedText, const OString& sDlgHelpId, const OString& sLbHelpId) override; + virtual OUString GetEntry(sal_Int32 nPos) const override; + virtual std::vector<sal_Int32> GetSelectedRows() const override; +}; + +class AbstractScSortWarningDlg_Impl : public AbstractScSortWarningDlg +{ + std::unique_ptr<ScSortWarningDlg> m_xDlg; +public: + explicit AbstractScSortWarningDlg_Impl(std::unique_ptr<ScSortWarningDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; +}; + +class AbstractScStringInputDlg_Impl : public AbstractScStringInputDlg +{ + std::unique_ptr<ScStringInputDlg> m_xDlg; +public: + explicit AbstractScStringInputDlg_Impl(std::unique_ptr<ScStringInputDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual OUString GetInputString() const override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScTabBgColorDlg_Impl : public AbstractScTabBgColorDlg +{ + std::unique_ptr<ScTabBgColorDlg> m_xDlg; +public: + explicit AbstractScTabBgColorDlg_Impl(std::unique_ptr<ScTabBgColorDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual void GetSelectedColor( Color& rColor ) const override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class AbstractScImportOptionsDlg_Impl : public AbstractScImportOptionsDlg +{ + std::unique_ptr<ScImportOptionsDlg> m_xDlg; +public: + explicit AbstractScImportOptionsDlg_Impl(std::unique_ptr<ScImportOptionsDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual void GetImportOptions( ScImportOptions& rOptions ) const override; + virtual void SaveImportOptions() const override; +}; + +class AbstractScTextImportOptionsDlg_Impl : public AbstractScTextImportOptionsDlg +{ + std::unique_ptr<ScTextImportOptionsDlg> m_xDlg; +public: + explicit AbstractScTextImportOptionsDlg_Impl(std::unique_ptr<ScTextImportOptionsDlg> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual LanguageType GetLanguageType() const override; + virtual bool IsDateConversionSet() const override; + + // screenshotting + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +class ScAbstractTabController_Impl : public SfxAbstractTabDialog +{ + std::shared_ptr<SfxTabDialogController> m_xDlg; +public: + explicit ScAbstractTabController_Impl(std::shared_ptr<SfxTabDialogController> p) + : m_xDlg(std::move(p)) + { + } + virtual short Execute() override; + virtual bool StartExecuteAsync(AsyncContext &rCtx) override; + virtual void SetCurPageId( const OString &rName ) override; + virtual const SfxItemSet* GetOutputItemSet() const override; + virtual const sal_uInt16* GetInputRanges( const SfxItemPool& pItem ) override; + virtual void SetInputSet( const SfxItemSet* pInSet ) override; + virtual void SetText( const OUString& rStr ) override; + + // screenshotting + virtual std::vector<OString> getAllPageUIXMLDescriptions() const override; + virtual bool selectPageByUIXMLDescription(const OString& rUIXMLDescription) override; + virtual BitmapEx createScreenshot() const override; + virtual OString GetScreenshotId() const override; +}; + +//AbstractDialogFactory_Impl implementations +class ScAbstractDialogFactory_Impl : public ScAbstractDialogFactory +{ + +public: + virtual ~ScAbstractDialogFactory_Impl() {} + + virtual VclPtr<AbstractScImportAsciiDlg> CreateScImportAsciiDlg(weld::Window* pParent, + const OUString& aDatName, + SvStream* pInStream, + ScImportAsciiCall eCall) override; + + virtual VclPtr<AbstractScTextImportOptionsDlg> CreateScTextImportOptionsDlg(weld::Window* pParent) override; + + virtual VclPtr<AbstractScAutoFormatDlg> CreateScAutoFormatDlg(weld::Window* pParent, + ScAutoFormat* pAutoFormat, + const ScAutoFormatData* pSelFormatData, + ScViewData *pViewData) override; + virtual VclPtr<AbstractScColRowLabelDlg> CreateScColRowLabelDlg (weld::Window* pParent, + bool bCol, + bool bRow) override; + + virtual VclPtr<AbstractScSortWarningDlg> CreateScSortWarningDlg(weld::Window* pParent, const OUString& rExtendText, const OUString& rCurrentText ) override; + + virtual VclPtr<AbstractScCondFormatManagerDlg> CreateScCondFormatMgrDlg(weld::Window* pParent, ScDocument* pDoc, const ScConditionalFormatList* pFormatList ) override; + + virtual VclPtr<AbstractScDataPilotDatabaseDlg> CreateScDataPilotDatabaseDlg(weld::Window* pParent) override; + + virtual VclPtr<AbstractScDataPilotSourceTypeDlg> CreateScDataPilotSourceTypeDlg(weld::Window* pParent, + bool bEnableExternal) override; + + virtual VclPtr<AbstractScDataPilotServiceDlg> CreateScDataPilotServiceDlg(weld::Window* pParent, + const std::vector<OUString>& rServices) override; + virtual VclPtr<AbstractScDeleteCellDlg> CreateScDeleteCellDlg(weld::Window* pParent, bool bDisallowCellMove ) override; + + //for dataform + virtual VclPtr<AbstractScDataFormDlg> CreateScDataFormDlg(weld::Window* pParent, ScTabViewShell* pTabViewShell) override; + + virtual VclPtr<AbstractScDeleteContentsDlg> CreateScDeleteContentsDlg(weld::Window* pParent) override; + + virtual VclPtr<AbstractScFillSeriesDlg> CreateScFillSeriesDlg(weld::Window* pParent, + ScDocument& rDocument, + FillDir eFillDir, + FillCmd eFillCmd, + FillDateCmd eFillDateCmd, + const OUString& aStartStr, + double fStep, + double fMax, + SCSIZE nSelectHeight, + SCSIZE nSelectWidth, + sal_uInt16 nPossDir) override; + virtual VclPtr<AbstractScGroupDlg> CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup = false) override; + + virtual VclPtr<AbstractScInsertCellDlg> CreateScInsertCellDlg(weld::Window* pParent, + bool bDisallowCellMove) override; + + virtual VclPtr<AbstractScInsertContentsDlg> CreateScInsertContentsDlg(weld::Window* pParent, + const OUString* pStrTitle = nullptr) override; + + virtual VclPtr<AbstractScInsertTableDlg> CreateScInsertTableDlg(weld::Window* pParent, ScViewData& rViewData, + SCTAB nTabCount, bool bFromFile) override; + + virtual VclPtr<AbstractScSelEntryDlg> CreateScSelEntryDlg(weld::Window* pParent, const std::vector<OUString> &rEntryList) override; + + virtual VclPtr<AbstractScLinkedAreaDlg> CreateScLinkedAreaDlg(weld::Window* pParent) override; + + virtual VclPtr<AbstractScMetricInputDlg> CreateScMetricInputDlg(weld::Window* pParent, + const OString& sDialogName, + long nCurrent, + long nDefault, + FieldUnit eFUnit, + sal_uInt16 nDecimals, + long nMaximum, + long nMinimum = 0 ) override; + + virtual VclPtr<AbstractScMoveTableDlg> CreateScMoveTableDlg(weld::Window * pParent, + const OUString& rDefault) override; + + virtual VclPtr<AbstractScNameCreateDlg> CreateScNameCreateDlg(weld::Window * pParent, + CreateNameFlags nFlags) override; + + virtual VclPtr<AbstractScNamePasteDlg> CreateScNamePasteDlg(weld::Window * pParent, ScDocShell* pShell) override; + + virtual VclPtr<AbstractScPivotFilterDlg> CreateScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, + sal_uInt16 nSourceTab) override; + + virtual VclPtr<AbstractScDPFunctionDlg> CreateScDPFunctionDlg(weld::Widget* pParent, + const ScDPLabelDataVector& rLabelVec, + const ScDPLabelData& rLabelData, + const ScPivotFuncData& rFuncData ) override; + + virtual VclPtr<AbstractScDPSubtotalDlg> CreateScDPSubtotalDlg(weld::Widget* pParent, + ScDPObject& rDPObj, + const ScDPLabelData& rLabelData, + const ScPivotFuncData& rFuncData, + const ScDPNameVec& rDataFields ) override; + + virtual VclPtr<AbstractScDPNumGroupDlg> CreateScDPNumGroupDlg(weld::Window* pParent, + const ScDPNumGroupInfo& rInfo) override; + + virtual VclPtr<AbstractScDPDateGroupDlg> CreateScDPDateGroupDlg(weld::Window* pParent, + const ScDPNumGroupInfo& rInfo, + sal_Int32 nDatePart, + const Date& rNullDate) override; + + virtual VclPtr<AbstractScDPShowDetailDlg> CreateScDPShowDetailDlg(weld::Window* pParent, + ScDPObject& rDPObj, + css::sheet::DataPilotFieldOrientation nOrient) override; + + virtual VclPtr<AbstractScNewScenarioDlg> CreateScNewScenarioDlg(weld::Window* pParent, const OUString& rName, + bool bEdit, bool bSheetProtected) override; + virtual VclPtr<AbstractScShowTabDlg> CreateScShowTabDlg(weld::Window* pParent) override; + + virtual VclPtr<AbstractScStringInputDlg> CreateScStringInputDlg(weld::Window* pParent, + const OUString& rTitle, + const OUString& rEditTitle, + const OUString& rDefault, + const OString& rHelpId, + const OString& rEditHelpId) override; + + virtual VclPtr<AbstractScTabBgColorDlg> CreateScTabBgColorDlg(weld::Window* pParent, + const OUString& rTitle, //Dialog Title + const OUString& rTabBgColorNoColorText, //Label for no tab color + const Color& rDefaultColor) override; //Currently selected Color + + virtual VclPtr<AbstractScImportOptionsDlg> CreateScImportOptionsDlg(weld::Window* pParent, bool bAscii, + const ScImportOptions* pOptions, + const OUString* pStrTitle, + bool bOnlyDbtoolsEncodings, + bool bImport = true) override; + + virtual VclPtr<SfxAbstractTabDialog> CreateScAttrDlg(weld::Window* pParent, + const SfxItemSet* pCellAttrs) override; + + virtual VclPtr<SfxAbstractTabDialog> CreateScHFEditDlg(weld::Window* pParent, + const SfxItemSet& rCoreSet, + const OUString& rPageStyle, + sal_uInt16 nResId ) override; + + virtual VclPtr<SfxAbstractTabDialog> CreateScStyleDlg(weld::Window* pParent, + SfxStyleSheetBase& rStyleBase, + bool bPage) override; + + virtual VclPtr<SfxAbstractTabDialog> CreateScSubTotalDlg(weld::Window* pParent, + const SfxItemSet* pArgSet) override; + virtual VclPtr<SfxAbstractTabDialog> CreateScCharDlg(weld::Window* pParent, + const SfxItemSet* pAttr, const SfxObjectShell* pDocShell, bool bDrawText) override; + + virtual VclPtr<SfxAbstractTabDialog> CreateScParagraphDlg(weld::Window* pParent, + const SfxItemSet* pAttr) override; + + virtual VclPtr<SfxAbstractTabDialog> CreateScSortDlg(weld::Window* pParent, const SfxItemSet* pArgSet) override; + + // For TabPage + virtual CreateTabPage GetTabPageCreatorFunc( sal_uInt16 nId ) override; + +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/attrdlg/scuiexp.cxx b/sc/source/ui/attrdlg/scuiexp.cxx new file mode 100644 index 000000000..66665ae8c --- /dev/null +++ b/sc/source/ui/attrdlg/scuiexp.cxx @@ -0,0 +1,42 @@ +/* -*- 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 <sal/types.h> + +namespace scui +{ + static ScAbstractDialogFactory_Impl* GetFactory() + { + static ScAbstractDialogFactory_Impl* pFactory = new ScAbstractDialogFactory_Impl; + return pFactory; + } +} + +extern "C" +{ + SAL_DLLPUBLIC_EXPORT ScAbstractDialogFactory* ScCreateDialogFactory() + { + return ::scui::GetFactory(); + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/attrdlg/tabpages.cxx b/sc/source/ui/attrdlg/tabpages.cxx new file mode 100644 index 000000000..572e1dc36 --- /dev/null +++ b/sc/source/ui/attrdlg/tabpages.cxx @@ -0,0 +1,224 @@ +/* -*- 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 <attrib.hxx> +#include <sc.hrc> + +#include <tabpages.hxx> +#include <osl/diagnose.h> + +const sal_uInt16 ScTabPageProtection::pProtectionRanges[] = +{ + SID_SCATTR_PROTECTION, + SID_SCATTR_PROTECTION, + 0 +}; + +// Zellschutz-Tabpage: + +ScTabPageProtection::ScTabPageProtection(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreAttrs) + : SfxTabPage(pPage, pController, "modules/scalc/ui/cellprotectionpage.ui", "CellProtectionPage", &rCoreAttrs) + , m_xBtnHideCell(m_xBuilder->weld_check_button("checkHideAll")) + , m_xBtnProtect(m_xBuilder->weld_check_button("checkProtected")) + , m_xBtnHideFormula(m_xBuilder->weld_check_button("checkHideFormula")) + , m_xBtnHidePrint(m_xBuilder->weld_check_button("checkHidePrinting")) +{ + // This Page need ExchangeSupport + SetExchangeSupport(); + + // States will be set in Reset + bTriEnabled = bDontCare = bProtect = bHideForm = bHideCell = bHidePrint = false; + + m_xBtnProtect->connect_toggled(LINK(this, ScTabPageProtection, ProtectClickHdl)); + m_xBtnHideCell->connect_toggled(LINK(this, ScTabPageProtection, HideCellClickHdl)); + m_xBtnHideFormula->connect_toggled(LINK(this, ScTabPageProtection, HideFormulaClickHdl)); + m_xBtnHidePrint->connect_toggled(LINK(this, ScTabPageProtection, HidePrintClickHdl)); +} + +ScTabPageProtection::~ScTabPageProtection() +{ +} + +std::unique_ptr<SfxTabPage> ScTabPageProtection::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet) +{ + return std::make_unique<ScTabPageProtection>(pPage, pController, *rAttrSet); +} + +void ScTabPageProtection::Reset( const SfxItemSet* rCoreAttrs ) +{ + // Initialize variables + + sal_uInt16 nWhich = GetWhich( SID_SCATTR_PROTECTION ); + const ScProtectionAttr* pProtAttr = nullptr; + SfxItemState eItemState = rCoreAttrs->GetItemState( nWhich, false, + reinterpret_cast<const SfxPoolItem**>(&pProtAttr) ); + + // Is this a Default-Item? + if ( eItemState == SfxItemState::DEFAULT ) + pProtAttr = static_cast<const ScProtectionAttr*>(&(rCoreAttrs->Get(nWhich))); + // At SfxItemState::DONTCARE let to 0 + + bTriEnabled = ( pProtAttr == nullptr ); // TriState, when DontCare + bDontCare = bTriEnabled; + if (bTriEnabled) + { + // Defaults which appear when a TriState will be clicked away: + // (because everything combined is an attribute, and also only + // everything combined as DontCare can be available - #38543#) + + bProtect = true; + bHideForm = bHideCell = bHidePrint = false; + } + else + { + bProtect = pProtAttr->GetProtection(); + bHideCell = pProtAttr->GetHideCell(); + bHideForm = pProtAttr->GetHideFormula(); + bHidePrint = pProtAttr->GetHidePrint(); + } + + aHideCellState.bTriStateEnabled = bTriEnabled; + aProtectState.bTriStateEnabled = bTriEnabled; + aHideFormulaState.bTriStateEnabled = bTriEnabled; + aHidePrintState.bTriStateEnabled = bTriEnabled; + + UpdateButtons(); +} + +bool ScTabPageProtection::FillItemSet( SfxItemSet* rCoreAttrs ) +{ + bool bAttrsChanged = false; + sal_uInt16 nWhich = GetWhich( SID_SCATTR_PROTECTION ); + const SfxPoolItem* pOldItem = GetOldItem( *rCoreAttrs, SID_SCATTR_PROTECTION ); + const SfxItemSet& rOldSet = GetItemSet(); + SfxItemState eItemState = rOldSet.GetItemState( nWhich, false ); + ScProtectionAttr aProtAttr; + + if ( !bDontCare ) + { + aProtAttr.SetProtection( bProtect ); + aProtAttr.SetHideCell( bHideCell ); + aProtAttr.SetHideFormula( bHideForm ); + aProtAttr.SetHidePrint( bHidePrint ); + + if ( bTriEnabled ) + bAttrsChanged = true; // DontCare -> properly value + else + bAttrsChanged = !pOldItem || aProtAttr != *static_cast<const ScProtectionAttr*>(pOldItem); + } + + if ( bAttrsChanged ) + rCoreAttrs->Put( aProtAttr ); + else if ( eItemState == SfxItemState::DEFAULT ) + rCoreAttrs->ClearItem( nWhich ); + + return bAttrsChanged; +} + +DeactivateRC ScTabPageProtection::DeactivatePage( SfxItemSet* pSetP ) +{ + if ( pSetP ) + FillItemSet( pSetP ); + + return DeactivateRC::LeavePage; +} + +IMPL_LINK(ScTabPageProtection, ProtectClickHdl, weld::ToggleButton&, rBox, void) +{ + aProtectState.ButtonToggled(rBox); + ButtonClick(rBox); +} + +IMPL_LINK(ScTabPageProtection, HideCellClickHdl, weld::ToggleButton&, rBox, void) +{ + aHideCellState.ButtonToggled(rBox); + ButtonClick(rBox); +} + +IMPL_LINK(ScTabPageProtection, HideFormulaClickHdl, weld::ToggleButton&, rBox, void) +{ + aHideFormulaState.ButtonToggled(rBox); + ButtonClick(rBox); +} + +IMPL_LINK(ScTabPageProtection, HidePrintClickHdl, weld::ToggleButton&, rBox, void) +{ + aHidePrintState.ButtonToggled(rBox); + ButtonClick(rBox); +} + +void ScTabPageProtection::ButtonClick(weld::ToggleButton& rBox) +{ + TriState eState = rBox.get_state(); + if (eState == TRISTATE_INDET) + bDontCare = true; // everything combined at DontCare + else + { + bDontCare = false; // DontCare from everywhere + bool bOn = eState == TRISTATE_TRUE; // from a selected value + + if (&rBox == m_xBtnProtect.get()) + bProtect = bOn; + else if (&rBox == m_xBtnHideCell.get()) + bHideCell = bOn; + else if (&rBox == m_xBtnHideFormula.get()) + bHideForm = bOn; + else if (&rBox == m_xBtnHidePrint.get()) + bHidePrint = bOn; + else + { + OSL_FAIL("Wrong button"); + } + } + + UpdateButtons(); // TriState and Logic-Enable +} + +void ScTabPageProtection::UpdateButtons() +{ + if (bDontCare) + { + m_xBtnProtect->set_state(TRISTATE_INDET); + m_xBtnHideCell->set_state(TRISTATE_INDET); + m_xBtnHideFormula->set_state(TRISTATE_INDET); + m_xBtnHidePrint->set_state(TRISTATE_INDET); + } + else + { + m_xBtnProtect->set_state(bProtect ? TRISTATE_TRUE : TRISTATE_FALSE); + m_xBtnHideCell->set_state(bHideCell ? TRISTATE_TRUE : TRISTATE_FALSE); + m_xBtnHideFormula->set_state(bHideForm ? TRISTATE_TRUE : TRISTATE_FALSE); + m_xBtnHidePrint->set_state(bHidePrint ? TRISTATE_TRUE : TRISTATE_FALSE); + } + + aHideCellState.eState = m_xBtnHideCell->get_state(); + aProtectState.eState = m_xBtnProtect->get_state(); + aHideFormulaState.eState = m_xBtnHideFormula->get_state(); + aHidePrintState.eState = m_xBtnHidePrint->get_state(); + + bool bEnable = (m_xBtnHideCell->get_state() != TRISTATE_TRUE); + { + m_xBtnProtect->set_sensitive(bEnable); + m_xBtnHideFormula->set_sensitive(bEnable); + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |