diff options
Diffstat (limited to 'chart2/source/controller/main/ChartController_Properties.cxx')
-rw-r--r-- | chart2/source/controller/main/ChartController_Properties.cxx | 222 |
1 files changed, 116 insertions, 106 deletions
diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx index df0da042a218..62b7ad8a6beb 100644 --- a/chart2/source/controller/main/ChartController_Properties.cxx +++ b/chart2/source/controller/main/ChartController_Properties.cxx @@ -18,7 +18,7 @@ */ #include <ChartController.hxx> -#include <ChartWindow.hxx> +#include <ChartView.hxx> #include <chartview/DrawModelWrapper.hxx> #include <chartview/ChartSfxItemIds.hxx> #include <ObjectIdentifier.hxx> @@ -34,16 +34,20 @@ #include <MultipleChartConverters.hxx> #include <TitleItemConverter.hxx> #include <LegendItemConverter.hxx> +#include <DataTableItemConverter.hxx> #include <RegressionCurveItemConverter.hxx> #include <RegressionEquationItemConverter.hxx> #include <ErrorBarItemConverter.hxx> #include <ChartModelHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <TitleHelper.hxx> +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <ChartModel.hxx> #include <ColorPerPointHelper.hxx> -#include <DiagramHelper.hxx> +#include <DataSeries.hxx> +#include <DataSeriesProperties.hxx> #include <Diagram.hxx> #include <ControllerLockGuard.hxx> #include "UndoGuard.hxx" @@ -52,28 +56,28 @@ #include <strings.hrc> #include <ReferenceSizeProvider.hxx> #include <RegressionCurveHelper.hxx> -#include <com/sun/star/chart2/XChartDocument.hpp> +#include <RegressionCurveModel.hxx> +#include <o3tl/string_view.hxx> #include <com/sun/star/util/CloseVetoException.hpp> -#include <com/sun/star/chart2/XRegressionCurveContainer.hpp> -#include <comphelper/servicehelper.hxx> #include <memory> #include <vcl/svapp.hxx> #include <svx/ActionDescriptionProvider.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> namespace chart { using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; +using namespace ::chart::DataSeriesProperties; using ::com::sun::star::uno::Reference; namespace { wrapper::ItemConverter* createItemConverter( - const OUString & aObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel, + std::u16string_view aObjectCID, const rtl::Reference<::chart::ChartModel>& xChartModel, const uno::Reference<uno::XComponentContext>& xContext, SdrModel& rDrawModel, ExplicitValueProvider* pExplicitValueProvider, ReferenceSizeProvider const * pRefSizeProvider ) { @@ -87,8 +91,8 @@ wrapper::ItemConverter* createItemConverter( return nullptr; } - OUString aParticleID = ObjectIdentifier::getParticleID( aObjectCID ); - bool bAffectsMultipleObjects = aParticleID == "ALLELEMENTS"; + std::u16string_view aParticleID = ObjectIdentifier::getParticleID( aObjectCID ); + bool bAffectsMultipleObjects = aParticleID == u"ALLELEMENTS"; if( !bAffectsMultipleObjects ) { uno::Reference< beans::XPropertySet > xObjectProperties = @@ -106,26 +110,26 @@ wrapper::ItemConverter* createItemConverter( break; case OBJECTTYPE_TITLE: { - std::unique_ptr<awt::Size> pRefSize; + std::optional<awt::Size> pRefSize; if (pRefSizeProvider) - pRefSize.reset(new awt::Size(pRefSizeProvider->getPageSize())); + pRefSize.emplace(pRefSizeProvider->getPageSize()); pItemConverter = new wrapper::TitleItemConverter( xObjectProperties, rDrawModel.GetItemPool(), rDrawModel, xChartModel, - pRefSize.get()); + pRefSize); } break; case OBJECTTYPE_LEGEND: { - std::unique_ptr<awt::Size> pRefSize; + std::optional<awt::Size> pRefSize; if (pRefSizeProvider) - pRefSize.reset( new awt::Size( pRefSizeProvider->getPageSize())); + pRefSize.emplace( pRefSizeProvider->getPageSize() ); pItemConverter = new wrapper::LegendItemConverter( xObjectProperties, rDrawModel.GetItemPool(), rDrawModel, xChartModel, - pRefSize.get()); + pRefSize); } break; case OBJECTTYPE_LEGEND_ENTRY: @@ -141,9 +145,9 @@ wrapper::ItemConverter* createItemConverter( break; case OBJECTTYPE_AXIS: { - std::unique_ptr<awt::Size> pRefSize; + std::optional<awt::Size> pRefSize; if (pRefSizeProvider) - pRefSize.reset( new awt::Size( pRefSizeProvider->getPageSize())); + pRefSize.emplace( pRefSizeProvider->getPageSize() ); // the second property set contains the property CoordinateOrigin // nOriginIndex is the index of the corresponding index of the @@ -153,7 +157,7 @@ wrapper::ItemConverter* createItemConverter( ExplicitIncrementData aExplicitIncrement; if( pExplicitValueProvider ) pExplicitValueProvider->getExplicitValuesForAxis( - uno::Reference< XAxis >( xObjectProperties, uno::UNO_QUERY ), + dynamic_cast< Axis* >( xObjectProperties.get() ), aExplicitScale, aExplicitIncrement ); pItemConverter = new wrapper::AxisItemConverter( @@ -161,7 +165,7 @@ wrapper::ItemConverter* createItemConverter( rDrawModel, xChartModel, &aExplicitScale, &aExplicitIncrement, - pRefSize.get() ); + pRefSize ); } break; case OBJECTTYPE_AXIS_UNITLABEL: @@ -169,11 +173,11 @@ wrapper::ItemConverter* createItemConverter( case OBJECTTYPE_DATA_LABELS: case OBJECTTYPE_DATA_LABEL: { - std::unique_ptr<awt::Size> pRefSize; + std::optional<awt::Size> pRefSize; if (pRefSizeProvider) - pRefSize.reset( new awt::Size( pRefSizeProvider->getPageSize())); + pRefSize.emplace( pRefSizeProvider->getPageSize() ); - uno::Reference<XDataSeries> xSeries = ObjectIdentifier::getDataSeriesForCID(aObjectCID, xChartModel); + rtl::Reference<DataSeries> xSeries = ObjectIdentifier::getDataSeriesForCID(aObjectCID, xChartModel); bool bDataSeries = eObjectType == OBJECTTYPE_DATA_LABELS; @@ -183,25 +187,25 @@ wrapper::ItemConverter* createItemConverter( pItemConverter = new wrapper::TextLabelItemConverter( xChartModel, xObjectProperties, xSeries, - rDrawModel.GetItemPool(), pRefSize.get(), bDataSeries, + rDrawModel.GetItemPool(), pRefSize, bDataSeries, nNumberFormat, nPercentNumberFormat); } break; case OBJECTTYPE_DATA_SERIES: case OBJECTTYPE_DATA_POINT: { - std::unique_ptr<awt::Size> pRefSize; + std::optional<awt::Size> pRefSize; if (pRefSizeProvider) - pRefSize.reset( new awt::Size( pRefSizeProvider->getPageSize())); + pRefSize.emplace( pRefSizeProvider->getPageSize() ); wrapper::GraphicObjectType eMapTo = wrapper::GraphicObjectType::FilledDataPoint; - uno::Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( aObjectCID, xChartModel ); - uno::Reference< XChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries ); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( aObjectCID, xChartModel ); + rtl::Reference< ChartType > xChartType = ChartModelHelper::getChartTypeOfSeries( xChartModel, xSeries ); - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); - sal_Int32 nDimensionCount = DiagramHelper::getDimension( xDiagram ); + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); + sal_Int32 nDimensionCount = xDiagram->getDimension(); if( !ChartTypeHelper::isSupportingAreaProperties( xChartType, nDimensionCount ) ) eMapTo = wrapper::GraphicObjectType::LineDataPoint; @@ -213,14 +217,14 @@ wrapper::ItemConverter* createItemConverter( sal_Int32 nPointIndex = -1; /*-1 for whole series*/ if(!bDataSeries) { - nPointIndex = aParticleID.toInt32(); - uno::Reference< beans::XPropertySet > xSeriesProp( xSeries, uno::UNO_QUERY ); + nPointIndex = o3tl::toInt32(aParticleID); bool bVaryColorsByPoint = false; - if( xSeriesProp.is() && - (xSeriesProp->getPropertyValue("VaryColorsByPoint") >>= bVaryColorsByPoint) && + if( xSeries.is() && + // "VaryColorsByPoint" + (xSeries->getFastPropertyValue(PROP_DATASERIES_VARY_COLORS_BY_POINT) >>= bVaryColorsByPoint) && bVaryColorsByPoint ) { - if( !ColorPerPointHelper::hasPointOwnColor( xSeriesProp, nPointIndex, xObjectProperties ) ) + if( !ColorPerPointHelper::hasPointOwnColor( xSeries, nPointIndex, xObjectProperties ) ) { bUseSpecialFillColor = true; OSL_ASSERT( xDiagram.is()); @@ -237,7 +241,7 @@ wrapper::ItemConverter* createItemConverter( pItemConverter = new wrapper::DataPointItemConverter( xChartModel, xContext, xObjectProperties, xSeries, rDrawModel.GetItemPool(), rDrawModel, xChartModel, - eMapTo, pRefSize.get(), bDataSeries, bUseSpecialFillColor, nSpecialFillColor, true, + eMapTo, pRefSize, bDataSeries, bUseSpecialFillColor, nSpecialFillColor, true, nNumberFormat, nPercentNumberFormat, nPointIndex ); break; } @@ -260,21 +264,21 @@ wrapper::ItemConverter* createItemConverter( case OBJECTTYPE_DATA_CURVE: pItemConverter = new wrapper::RegressionCurveItemConverter( - xObjectProperties, uno::Reference< chart2::XRegressionCurveContainer >( - ObjectIdentifier::getDataSeriesForCID( aObjectCID, xChartModel ), uno::UNO_QUERY ), - rDrawModel.GetItemPool(), rDrawModel, - xChartModel); + xObjectProperties, + ObjectIdentifier::getDataSeriesForCID( aObjectCID, xChartModel ), + rDrawModel.GetItemPool(), rDrawModel, + xChartModel); break; case OBJECTTYPE_DATA_CURVE_EQUATION: { - std::unique_ptr<awt::Size> pRefSize; + std::optional<awt::Size> pRefSize; if (pRefSizeProvider) - pRefSize.reset(new awt::Size(pRefSizeProvider->getPageSize())); + pRefSize.emplace(pRefSizeProvider->getPageSize()); pItemConverter = new wrapper::RegressionEquationItemConverter( xObjectProperties, rDrawModel.GetItemPool(), rDrawModel, xChartModel, - pRefSize.get()); + pRefSize); break; } case OBJECTTYPE_DATA_STOCK_RANGE: @@ -286,6 +290,13 @@ wrapper::ItemConverter* createItemConverter( rDrawModel, xChartModel, wrapper::GraphicObjectType::LineAndFillProperties ); break; + case OBJECTTYPE_DATA_TABLE: + { + pItemConverter = new wrapper::DataTableItemConverter( + xObjectProperties, rDrawModel.GetItemPool(), + rDrawModel, xChartModel); + } + break; default: //OBJECTTYPE_UNKNOWN break; } @@ -301,13 +312,13 @@ wrapper::ItemConverter* createItemConverter( break; case OBJECTTYPE_AXIS: { - std::unique_ptr<awt::Size> pRefSize; + std::optional<awt::Size> pRefSize; if (pRefSizeProvider) - pRefSize.reset( new awt::Size( pRefSizeProvider->getPageSize())); + pRefSize.emplace( pRefSizeProvider->getPageSize() ); pItemConverter = new wrapper::AllAxisItemConverter( xChartModel, rDrawModel.GetItemPool(), - rDrawModel, pRefSize.get()); + rDrawModel, pRefSize ); } break; case OBJECTTYPE_GRID: @@ -342,7 +353,7 @@ OUString lcl_getTitleCIDForCommand( std::string_view rDispatchCommand, const rtl else if( rDispatchCommand == "SecondaryYTitle" ) nTitleType = TitleHelper::SECONDARY_Y_AXIS_TITLE; - uno::Reference< XTitle > xTitle( TitleHelper::getTitle( nTitleType, xChartModel ) ); + rtl::Reference< Title > xTitle( TitleHelper::getTitle( nTitleType, xChartModel ) ); return ObjectIdentifier::createClassifiedIdentifierForObject( xTitle, xChartModel ); } @@ -374,14 +385,14 @@ OUString lcl_getAxisCIDForCommand( std::string_view rDispatchCommand, const rtl: nDimensionIndex=1; bMainAxis=false; } - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); - uno::Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ) ); + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ); return ObjectIdentifier::createClassifiedIdentifierForObject( xAxis, xChartModel ); } OUString lcl_getGridCIDForCommand( std::string_view rDispatchCommand, const rtl::Reference<::chart::ChartModel>& xChartModel ) { - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); + rtl::Reference< Diagram > xDiagram = xChartModel->getFirstChartDiagram(); if( rDispatchCommand == "DiagramGridAll") return ObjectIdentifier::createClassifiedIdentifier( OBJECTTYPE_GRID, u"ALLELEMENTS" ); @@ -416,7 +427,7 @@ OUString lcl_getGridCIDForCommand( std::string_view rDispatchCommand, const rtl: nDimensionIndex=2; bMainGrid=false; } - uno::Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, true/*bMainAxis*/, xDiagram ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, true/*bMainAxis*/, xDiagram ); sal_Int32 nSubGridIndex= bMainGrid ? -1 : 0; OUString aCID( ObjectIdentifier::createClassifiedIdentifierForGrid( xAxis, xChartModel, nSubGridIndex ) ); @@ -436,8 +447,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt ObjectType eObjectType = OBJECTTYPE_UNKNOWN; const ObjectType eSelectedType = ObjectIdentifier::getObjectType( rSelectedCID ); - uno::Reference< XDataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSelectedCID, xChartDocument ); - uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt( xSeries, uno::UNO_QUERY ); + rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSelectedCID, xChartDocument ); //legend if( rDispatchCommand == "Legend" || rDispatchCommand == "FormatLegend" ) @@ -527,7 +537,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt return rSelectedCID; else { - sal_Int32 nPointIndex = ObjectIdentifier::getParticleID( rSelectedCID ).toInt32(); + sal_Int32 nPointIndex = o3tl::toInt32(ObjectIdentifier::getParticleID( rSelectedCID )); if( nPointIndex>=0 ) { OUString aSeriesParticle = ObjectIdentifier::getSeriesParticleFromCID( rSelectedCID ); @@ -548,8 +558,8 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt else return ObjectIdentifier::createDataCurveCID( ObjectIdentifier::getSeriesParticleFromCID( rSelectedCID ), - RegressionCurveHelper::getRegressionCurveIndex( xRegCurveCnt, - RegressionCurveHelper::getMeanValueLine( xRegCurveCnt ) ), true ); + RegressionCurveHelper::getRegressionCurveIndex( xSeries, + RegressionCurveHelper::getMeanValueLine( xSeries ) ), true ); } //trend line else if( rDispatchCommand == "FormatTrendline" ) @@ -559,8 +569,8 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt else return ObjectIdentifier::createDataCurveCID( ObjectIdentifier::getSeriesParticleFromCID( rSelectedCID ), - RegressionCurveHelper::getRegressionCurveIndex( xRegCurveCnt, - RegressionCurveHelper::getFirstCurveNotMeanValueLine( xRegCurveCnt ) ), false ); + RegressionCurveHelper::getRegressionCurveIndex( xSeries, + RegressionCurveHelper::getFirstCurveNotMeanValueLine( xSeries ) ), false ); } //trend line equation else if( rDispatchCommand == "FormatTrendlineEquation" ) @@ -570,8 +580,8 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt else return ObjectIdentifier::createDataCurveEquationCID( ObjectIdentifier::getSeriesParticleFromCID( rSelectedCID ), - RegressionCurveHelper::getRegressionCurveIndex( xRegCurveCnt, - RegressionCurveHelper::getFirstCurveNotMeanValueLine( xRegCurveCnt ) ) ); + RegressionCurveHelper::getRegressionCurveIndex( xSeries, + RegressionCurveHelper::getFirstCurveNotMeanValueLine( xSeries ) ) ); } // y error bars else if( rDispatchCommand == "FormatXErrorBars" ) @@ -590,7 +600,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt return rSelectedCID; else { - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); return ObjectIdentifier::createClassifiedIdentifierForObject( xAxis , xChartDocument ); } } @@ -601,7 +611,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt return rSelectedCID; else { - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); return ObjectIdentifier::createClassifiedIdentifierForGrid( xAxis, xChartDocument ); } @@ -613,7 +623,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt return rSelectedCID; else { - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); return ObjectIdentifier::createClassifiedIdentifierForGrid( xAxis, xChartDocument, 0 /*sub grid index*/ ); } } @@ -674,7 +684,7 @@ OUString lcl_getFormatCIDforSelectedCID( const OUString& rSelectedCID ) // some legend entries are handled as if they were data series if( eObjectType==OBJECTTYPE_LEGEND_ENTRY ) { - OUString aParentParticle( ObjectIdentifier::getFullParentParticle( rSelectedCID ) ); + std::u16string_view aParentParticle( ObjectIdentifier::getFullParentParticle( rSelectedCID ) ); aFormatCID = ObjectIdentifier::createClassifiedIdentifierForParticle( aParentParticle ); } @@ -691,24 +701,22 @@ void ChartController::executeDlg_ObjectProperties( const OUString& rSelectedObje { OUString aObjectCID = lcl_getFormatCIDforSelectedCID( rSelectedObjectCID ); - UndoGuard aUndoGuard( ActionDescriptionProvider::createDescription( - ActionDescriptionProvider::ActionType::Format, - ObjectNameProvider::getName( ObjectIdentifier::getObjectType( aObjectCID ))), - m_xUndoManager ); + auto xUndoGuard = std::make_shared<UndoGuard>( + ActionDescriptionProvider::createDescription( + ActionDescriptionProvider::ActionType::Format, + ObjectNameProvider::getName( ObjectIdentifier::getObjectType( aObjectCID ))), + m_xUndoManager ); - bool bSuccess = ChartController::executeDlg_ObjectProperties_withoutUndoGuard( aObjectCID, false ); - if( bSuccess ) - aUndoGuard.commit(); + ChartController::executeDlg_ObjectProperties_withUndoGuard(std::move(xUndoGuard), aObjectCID, false ); } -bool ChartController::executeDlg_ObjectProperties_withoutUndoGuard( - const OUString& rObjectCID, bool bSuccessOnUnchanged ) +void ChartController::executeDlg_ObjectProperties_withUndoGuard( + std::shared_ptr<UndoGuard> xUndoGuard, const OUString& rObjectCID, bool bSuccessOnUnchanged ) { //return true if the properties were changed successfully - bool bRet = false; if( rObjectCID.isEmpty() ) { - return bRet; + return; } try { @@ -716,26 +724,28 @@ bool ChartController::executeDlg_ObjectProperties_withoutUndoGuard( ObjectType eObjectType = ObjectIdentifier::getObjectType( rObjectCID ); if( eObjectType==OBJECTTYPE_UNKNOWN ) { - return bRet; + return; } if( eObjectType==OBJECTTYPE_DIAGRAM_WALL || eObjectType==OBJECTTYPE_DIAGRAM_FLOOR ) { - if( !DiagramHelper::isSupportingFloorAndWall( getFirstDiagram() ) ) - return bRet; + if( !getFirstDiagram()->isSupportingFloorAndWall() ) + return; } //convert properties to ItemSet - std::unique_ptr<ReferenceSizeProvider> pRefSizeProv(impl_createReferenceSizeProvider()); + ReferenceSizeProvider aRefSizeProv(impl_createReferenceSizeProvider()); - std::unique_ptr<wrapper::ItemConverter> pItemConverter( - createItemConverter( rObjectCID, getChartModel(), m_xCC, + rtl::Reference<::chart::ChartModel> xChartDoc(getChartModel()); + + std::shared_ptr<wrapper::ItemConverter> pItemConverter( + createItemConverter( rObjectCID, xChartDoc, m_xCC, m_pDrawModelWrapper->getSdrModel(), - comphelper::getFromUnoTunnel<ExplicitValueProvider>(m_xChartView), - pRefSizeProv.get())); + m_xChartView.get(), + &aRefSizeProv)); if (!pItemConverter) - return bRet; + return; SfxItemSet aItemSet = pItemConverter->CreateEmptyItemSet(); @@ -746,52 +756,53 @@ bool ChartController::executeDlg_ObjectProperties_withoutUndoGuard( //prepare dialog ObjectPropertiesDialogParameter aDialogParameter( rObjectCID ); - aDialogParameter.init( getChartModel() ); + aDialogParameter.init(xChartDoc); ViewElementListProvider aViewElementListProvider( m_pDrawModelWrapper.get() ); SolarMutexGuard aGuard; - SchAttribTabDlg aDlg( - GetChartFrame(), &aItemSet, &aDialogParameter, - &aViewElementListProvider, - uno::Reference< util::XNumberFormatsSupplier >( - getModel(), uno::UNO_QUERY ) ); + std::shared_ptr<SchAttribTabDlg> aDlgPtr = std::make_shared<SchAttribTabDlg>( + GetChartFrame(), &aItemSet, &aDialogParameter, + &aViewElementListProvider, + xChartDoc); if(aDialogParameter.HasSymbolProperties()) { uno::Reference< beans::XPropertySet > xObjectProperties = - ObjectIdentifier::getObjectPropertySet( rObjectCID, getChartModel() ); - wrapper::DataPointItemConverter aSymbolItemConverter( getChartModel(), m_xCC - , xObjectProperties, ObjectIdentifier::getDataSeriesForCID( rObjectCID, getChartModel() ) + ObjectIdentifier::getObjectPropertySet( rObjectCID, xChartDoc ); + wrapper::DataPointItemConverter aSymbolItemConverter( xChartDoc, m_xCC + , xObjectProperties, ObjectIdentifier::getDataSeriesForCID( rObjectCID, xChartDoc ) , m_pDrawModelWrapper->getSdrModel().GetItemPool() , m_pDrawModelWrapper->getSdrModel() - , getChartModel() + , xChartDoc , wrapper::GraphicObjectType::FilledDataPoint ); SfxItemSet aSymbolShapeProperties(aSymbolItemConverter.CreateEmptyItemSet() ); aSymbolItemConverter.FillItemSet( aSymbolShapeProperties ); sal_Int32 const nStandardSymbol=0;//@todo get from somewhere - std::unique_ptr<Graphic> pAutoSymbolGraphic(new Graphic( aViewElementListProvider.GetSymbolGraphic( nStandardSymbol, &aSymbolShapeProperties ) )); + std::optional<Graphic> oAutoSymbolGraphic(std::in_place, aViewElementListProvider.GetSymbolGraphic( nStandardSymbol, &aSymbolShapeProperties ) ); // note: the dialog takes the ownership of pSymbolShapeProperties and pAutoSymbolGraphic - aDlg.setSymbolInformation( std::move(aSymbolShapeProperties), std::move(pAutoSymbolGraphic) ); + aDlgPtr->setSymbolInformation( std::move(aSymbolShapeProperties), std::move(oAutoSymbolGraphic) ); } if( aDialogParameter.HasStatisticProperties() ) { - aDlg.SetAxisMinorStepWidthForErrorBarDecimals( - InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getChartModel(), m_xChartView, rObjectCID ) ); + aDlgPtr->SetAxisMinorStepWidthForErrorBarDecimals( + InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( xChartDoc, m_xChartView, rObjectCID ) ); } //open the dialog - if (aDlg.run() == RET_OK || (bSuccessOnUnchanged && aDlg.DialogWasClosedWithOK())) + SfxTabDialogController::runAsync(aDlgPtr, [aDlgPtr, xChartDoc, pItemConverter,bSuccessOnUnchanged, + xUndoGuard=std::move(xUndoGuard)] (int nResult) { - const SfxItemSet* pOutItemSet = aDlg.GetOutputItemSet(); - if(pOutItemSet) - { - ControllerLockGuardUNO aCLGuard( getChartModel()); - (void)pItemConverter->ApplyItemSet(*pOutItemSet); //model should be changed now - bRet = true; + if (nResult == RET_OK || (bSuccessOnUnchanged && aDlgPtr->DialogWasClosedWithOK())) { + const SfxItemSet* pOutItemSet = aDlgPtr->GetOutputItemSet(); + if(pOutItemSet) { + ControllerLockGuardUNO aCLGuard(xChartDoc); + (void)pItemConverter->ApplyItemSet(*pOutItemSet); //model should be changed now + xUndoGuard->commit(); + } } - } + }); } catch( const util::CloseVetoException& ) { @@ -799,7 +810,6 @@ bool ChartController::executeDlg_ObjectProperties_withoutUndoGuard( catch( const uno::RuntimeException& ) { } - return bRet; } void ChartController::executeDispatch_View3D() |