diff options
Diffstat (limited to 'chart2/source/controller/main/ControllerCommandDispatch.cxx')
-rw-r--r-- | chart2/source/controller/main/ControllerCommandDispatch.cxx | 573 |
1 files changed, 387 insertions, 186 deletions
diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx b/chart2/source/controller/main/ControllerCommandDispatch.cxx index 2f0e13f56155..e6abe080a655 100644 --- a/chart2/source/controller/main/ControllerCommandDispatch.cxx +++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx @@ -18,34 +18,35 @@ */ #include "ControllerCommandDispatch.hxx" -#include <ChartModelHelper.hxx> #include <ChartModel.hxx> -#include <DiagramHelper.hxx> +#include <Diagram.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <TitleHelper.hxx> #include <LegendHelper.hxx> #include <ObjectIdentifier.hxx> +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <ChartController.hxx> #include <RegressionCurveHelper.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <StatisticsHelper.hxx> #include <ReferenceSizeProvider.hxx> +#include <RegressionCurveModel.hxx> #include "ShapeController.hxx" +#include <CharacterProperties.hxx> #include <vcl/svapp.hxx> #include <sal/log.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <comphelper/lok.hxx> #include <sfx2/viewsh.hxx> #include <sfx2/objsh.hxx> -#include <com/sun/star/util/XModifyBroadcaster.hpp> -#include <com/sun/star/frame/XStorable.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart2/XRegressionCurve.hpp> -#include <com/sun/star/chart2/XRegressionCurveContainer.hpp> #include <com/sun/star/chart2/XDataProviderAccess.hpp> +#include <com/sun/star/frame/status/FontHeight.hpp> // only needed until #i68864# is fixed #include <com/sun/star/frame/XLayoutManager.hpp> @@ -68,14 +69,34 @@ bool lcl_isStatusBarVisible( const Reference< frame::XController > & xController if( xPropSet.is() ) { uno::Reference< css::frame::XLayoutManager > xLayoutManager; - xPropSet->getPropertyValue( "LayoutManager" ) >>= xLayoutManager; + xPropSet->getPropertyValue( u"LayoutManager"_ustr ) >>= xLayoutManager; if ( xLayoutManager.is() ) - bIsStatusBarVisible = xLayoutManager->isElementVisible( "private:resource/statusbar/statusbar" ); + bIsStatusBarVisible = xLayoutManager->isElementVisible( u"private:resource/statusbar/statusbar"_ustr ); } } return bIsStatusBarVisible; } +bool lcl_arePropertiesSame(std::vector<Reference<beans::XPropertySet>>& xProperties, + const OUString& aPropName) +{ + if (xProperties.size() == 1) + return true; + if (xProperties.size() < 1) + return false; + + if (!xProperties[0]) + return false; + + uno::Any aValue = xProperties[0]->getPropertyValue(aPropName); + for (std::size_t i = 1; i < xProperties.size(); i++) + { + if (xProperties[i] && aValue != xProperties[i]->getPropertyValue(aPropName)) + return false; + } + return true; +} + } // anonymous namespace namespace chart @@ -106,7 +127,7 @@ struct ControllerState ControllerState(); void update( const Reference< frame::XController > & xController, - const Reference< frame::XModel > & xModel ); + const rtl::Reference<::chart::ChartModel> & xModel ); // -- State variables ------- bool bHasSelectedObject; @@ -173,7 +194,7 @@ ControllerState::ControllerState() : void ControllerState::update( const Reference< frame::XController > & xController, - const Reference< frame::XModel > & xModel ) + const rtl::Reference<::chart::ChartModel> & xModel ) { Reference< view::XSelectionSupplier > xSelectionSupplier( xController, uno::UNO_QUERY ); @@ -184,7 +205,7 @@ void ControllerState::update( uno::Any aSelObj( xSelectionSupplier->getSelection() ); ObjectIdentifier aSelOID( aSelObj ); - OUString aSelObjCID( aSelOID.getObjectCID() ); + const OUString& aSelObjCID( aSelOID.getObjectCID() ); bHasSelectedObject = aSelOID.isValid(); @@ -193,24 +214,22 @@ void ControllerState::update( bIsPositionableObject = (aObjectType != OBJECTTYPE_DATA_POINT) && aSelOID.isDragableObject(); bIsTextObject = aObjectType == OBJECTTYPE_TITLE; - uno::Reference< chart2::XDiagram > xDiagram( ChartModelHelper::findDiagram( xModel )); + rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram(); bIsFormateableObjectSelected = bHasSelectedObject && aSelOID.isAutoGeneratedObject(); if( aObjectType==OBJECTTYPE_DIAGRAM || aObjectType==OBJECTTYPE_DIAGRAM_WALL || aObjectType==OBJECTTYPE_DIAGRAM_FLOOR ) - bIsFormateableObjectSelected = DiagramHelper::isSupportingFloorAndWall( xDiagram ); + bIsFormateableObjectSelected = xDiagram->isSupportingFloorAndWall(); - uno::Reference< chart2::XDataSeries > xGivenDataSeries( + rtl::Reference< DataSeries > xGivenDataSeries = ObjectIdentifier::getDataSeriesForCID( - aSelObjCID, xModel ) ); + aSelObjCID, xModel ); bIsDeleteableObjectSelected = ChartController::isObjectDeleteable( aSelObj ); - bMayMoveSeriesForward = (aObjectType!=OBJECTTYPE_DATA_POINT) && DiagramHelper::isSeriesMoveable( - ChartModelHelper::findDiagram( xModel ), + bMayMoveSeriesForward = (aObjectType!=OBJECTTYPE_DATA_POINT) && xDiagram && xDiagram->isSeriesMoveable( xGivenDataSeries, MOVE_SERIES_FORWARD ); - bMayMoveSeriesBackward = (aObjectType!=OBJECTTYPE_DATA_POINT) && DiagramHelper::isSeriesMoveable( - ChartModelHelper::findDiagram( xModel ), + bMayMoveSeriesBackward = (aObjectType!=OBJECTTYPE_DATA_POINT) && xDiagram && xDiagram->isSeriesMoveable( xGivenDataSeries, MOVE_SERIES_BACKWARD ); @@ -238,29 +257,25 @@ void ControllerState::update( if( xGivenDataSeries.is()) { bMayAddMenuTrendline = true; - sal_Int32 nDimensionCount = DiagramHelper::getDimension( xDiagram ); - uno::Reference< chart2::XChartType > xFirstChartType( + sal_Int32 nDimensionCount = xDiagram->getDimension(); + rtl::Reference< ::chart::ChartType > xFirstChartType( DataSeriesHelper::getChartTypeOfSeries( xGivenDataSeries, xDiagram )); // trend lines/mean value line if( (aObjectType == OBJECTTYPE_DATA_SERIES || aObjectType == OBJECTTYPE_DATA_POINT) - && ChartTypeHelper::isSupportingRegressionProperties( xFirstChartType, nDimensionCount )) + && xFirstChartType.is() ? xFirstChartType->isSupportingRegressionProperties(nDimensionCount) : true) { - uno::Reference< chart2::XRegressionCurveContainer > xRegCurveCnt( xGivenDataSeries, uno::UNO_QUERY ); - if( xRegCurveCnt.is()) - { - // Trendline - bMayAddTrendline = true; + // Trendline + bMayAddTrendline = true; - // Mean Value - bMayFormatMeanValue = bMayDeleteMeanValue = RegressionCurveHelper::hasMeanValueLine( xRegCurveCnt ); - bMayAddMeanValue = ! bMayDeleteMeanValue; - } + // Mean Value + bMayFormatMeanValue = bMayDeleteMeanValue = RegressionCurveHelper::hasMeanValueLine( xGivenDataSeries ); + bMayAddMeanValue = ! bMayDeleteMeanValue; } // error bars if( (aObjectType == OBJECTTYPE_DATA_SERIES || aObjectType == OBJECTTYPE_DATA_POINT) - && ChartTypeHelper::isSupportingStatisticProperties( xFirstChartType, nDimensionCount )) + && xFirstChartType.is() ? xFirstChartType->isSupportingStatisticProperties(nDimensionCount) : true) { bMayFormatXErrorBars = bMayDeleteXErrorBars = StatisticsHelper::hasErrorBars( xGivenDataSeries, false ); bMayAddXErrorBars = ! bMayDeleteXErrorBars; @@ -283,29 +298,34 @@ void ControllerState::update( { bMayFormatTrendline = true; bMayDeleteTrendline = true; - uno::Reference< chart2::XRegressionCurve > xRegCurve( - ObjectIdentifier::getObjectPropertySet( aSelObjCID, xModel ), uno::UNO_QUERY ); + rtl::Reference< RegressionCurveModel > xRegCurve( + dynamic_cast<RegressionCurveModel*>(ObjectIdentifier::getObjectPropertySet( aSelObjCID, xModel ).get()) ); // Trendline Equation bMayFormatTrendlineEquation = bMayDeleteTrendlineEquation = RegressionCurveHelper::hasEquation( xRegCurve ); bMayAddTrendlineEquation = !bMayDeleteTrendlineEquation; + bMayAddR2Value = RegressionCurveHelper::MayHaveCorrelationCoefficient( xRegCurve ) && bMayAddTrendlineEquation; } else if( aObjectType == OBJECTTYPE_DATA_CURVE_EQUATION ) { bMayFormatTrendlineEquation = true; bool bHasR2Value = false; + bool bMayHaveR2 = true; try { uno::Reference< beans::XPropertySet > xEquationProperties = ObjectIdentifier::getObjectPropertySet( aSelObjCID, xModel ); if( xEquationProperties.is() ) - xEquationProperties->getPropertyValue( "ShowCorrelationCoefficient" ) >>= bHasR2Value; + { + xEquationProperties->getPropertyValue( u"ShowCorrelationCoefficient"_ustr ) >>= bHasR2Value; + xEquationProperties->getPropertyValue( u"MayHaveCorrelationCoefficient"_ustr ) >>= bMayHaveR2; + } } catch(const uno::RuntimeException&) { TOOLS_WARN_EXCEPTION("chart2", "" ); } - bMayAddR2Value = !bHasR2Value; + bMayAddR2Value = !bHasR2Value && bMayHaveR2; bMayDeleteR2Value = bHasR2Value; } } @@ -325,7 +345,7 @@ struct ModelState { ModelState(); - void update( const Reference< frame::XModel > & xModel ); + void update( const rtl::Reference<::chart::ChartModel> & xModel ); bool HasAnyAxis() const; bool HasAnyGrid() const; @@ -364,6 +384,8 @@ struct ModelState bool bSupportsStatistics; bool bSupportsAxes; + + bool bDataTable = false; }; ModelState::ModelState() : @@ -397,28 +419,27 @@ ModelState::ModelState() : bSupportsAxes(false) {} -void ModelState::update( const Reference< frame::XModel > & xModel ) +void ModelState::update( const rtl::Reference<::chart::ChartModel> & xModel ) { - Reference< chart2::XChartDocument > xChartDoc( xModel, uno::UNO_QUERY ); - Reference< chart2::XDiagram > xDiagram( ChartModelHelper::findDiagram( xModel )); + rtl::Reference< Diagram > xDiagram = xModel->getFirstChartDiagram(); - bIsReadOnly = true; - Reference< frame::XStorable > xStorable( xModel, uno::UNO_QUERY ); - if( xStorable.is()) - bIsReadOnly = xStorable->isReadonly(); + bIsReadOnly = xModel->isReadonly(); - sal_Int32 nDimensionCount = DiagramHelper::getDimension( xDiagram ); + sal_Int32 nDimensionCount = 0; + if (xDiagram) + nDimensionCount = xDiagram->getDimension(); - uno::Reference< chart2::XChartType > xFirstChartType( DiagramHelper::getChartTypeByIndex( xDiagram, 0 ) ); - bSupportsStatistics = ChartTypeHelper::isSupportingStatisticProperties( xFirstChartType, nDimensionCount ); - bSupportsAxes = ChartTypeHelper::isSupportingMainAxis( xFirstChartType, nDimensionCount, 0 ); + rtl::Reference<ChartType> xFirstChartType; + if (xDiagram) + xFirstChartType = xDiagram->getChartTypeByIndex( 0 ); + bSupportsStatistics = xFirstChartType.is() ? xFirstChartType->isSupportingStatisticProperties(nDimensionCount) : true; + bSupportsAxes = xFirstChartType.is() ? xFirstChartType->isSupportingMainAxis(nDimensionCount, 0) : true; bIsThreeD = (nDimensionCount == 3); - if (xChartDoc.is()) + if (xModel.is()) { - ChartModel& rModel = dynamic_cast<ChartModel&>(*xChartDoc); - bHasOwnData = rModel.hasInternalDataProvider(); - bHasDataFromPivotTable = !bHasOwnData && rModel.isDataFromPivotTable(); + bHasOwnData = xModel->hasInternalDataProvider(); + bHasDataFromPivotTable = !bHasOwnData && xModel->isDataFromPivotTable(); } bHasMainTitle = TitleHelper::getTitle( TitleHelper::MAIN_TITLE, xModel ).is(); @@ -443,12 +464,14 @@ void ModelState::update( const Reference< frame::XModel > & xModel ) bHasHelpZGrid = bSupportsAxes && AxisHelper::isGridShown( 2, 0, false, xDiagram ); bHasAutoScaledText = - (ReferenceSizeProvider::getAutoResizeState( xChartDoc ) == + (ReferenceSizeProvider::getAutoResizeState( xModel ) == ReferenceSizeProvider::AUTO_RESIZE_YES); bHasLegend = LegendHelper::hasLegend( xDiagram ); - bHasWall = DiagramHelper::isSupportingFloorAndWall( xDiagram ); + bHasWall = xDiagram && xDiagram->isSupportingFloorAndWall(); bHasFloor = bHasWall && bIsThreeD; + + bDataTable = xDiagram.is() && xDiagram->getDataTable().is(); } bool ModelState::HasAnyAxis() const @@ -491,11 +514,10 @@ void ControllerCommandDispatch::initialize() if( !m_xChartController.is()) return; - Reference< frame::XModel > xModel( m_xChartController->getModel()); - Reference< util::XModifyBroadcaster > xModifyBroadcaster( xModel, uno::UNO_QUERY ); - OSL_ASSERT( xModifyBroadcaster.is()); - if( xModifyBroadcaster.is()) - xModifyBroadcaster->addModifyListener( this ); + rtl::Reference<::chart::ChartModel> xModel( m_xChartController->getChartModel()); + OSL_ASSERT( xModel.is()); + if( xModel.is()) + xModel->addModifyListener( this ); // Listen selection modifications (Arrangement feature - issue 63017). if( m_xSelectionSupplier.is() ) @@ -532,6 +554,7 @@ void ControllerCommandDispatch::updateCommandAvailability() // read-only bool bIsWritable = bModelStateIsValid && (! m_apModelState->bIsReadOnly); bool bShapeContext = m_xChartController.is() && m_xChartController->isShapeContext(); + bool bIsTextEdit = m_xChartController.is() && m_xChartController->IsTextEdit(); bool bEnableDataTableDialog = false; bool bCanCreateDataProvider = false; @@ -543,7 +566,7 @@ void ControllerCommandDispatch::updateCommandAvailability() { try { - xProps->getPropertyValue("EnableDataTableDialog") >>= bEnableDataTableDialog; + xProps->getPropertyValue(u"EnableDataTableDialog"_ustr) >>= bEnableDataTableDialog; } catch( const uno::Exception& ) { @@ -551,160 +574,338 @@ void ControllerCommandDispatch::updateCommandAvailability() } } - Reference< chart2::XChartDocument > xChartDoc(m_xChartController->getModel(), uno::UNO_QUERY); - OSL_ENSURE(xChartDoc.is(), "Invalid XChartDocument"); - if ( xChartDoc.is() ) + rtl::Reference< ChartModel > xChartModel = m_xChartController->getChartModel(); + OSL_ENSURE(xChartModel.is(), "Invalid XChartDocument"); + if ( xChartModel.is() ) { - ChartModel& rModel = dynamic_cast<ChartModel&>(*xChartDoc); - css::uno::Reference< com::sun::star::chart2::XDataProviderAccess > xCreatorDoc(rModel.getParent(), uno::UNO_QUERY); + css::uno::Reference< css::chart2::XDataProviderAccess > xCreatorDoc(xChartModel->getParent(), uno::UNO_QUERY); bCanCreateDataProvider = xCreatorDoc.is(); } } // edit commands - m_aCommandAvailability[ ".uno:Cut" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bIsDeleteableObjectSelected; - m_aCommandAvailability[ ".uno:Copy" ] = bControllerStateIsValid && m_apControllerState->bHasSelectedObject; - m_aCommandAvailability[ ".uno:Paste" ] = bIsWritable; + m_aCommandAvailability[ u".uno:Cut"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bIsDeleteableObjectSelected; + m_aCommandAvailability[ u".uno:Copy"_ustr ] = bControllerStateIsValid && m_apControllerState->bHasSelectedObject; + m_aCommandAvailability[ u".uno:Paste"_ustr ] = bIsWritable; // toolbar commands - m_aCommandAvailability[ ".uno:ToggleGridHorizontal" ] = bIsWritable; - m_aCommandArguments[ ".uno:ToggleGridHorizontal" ] <<= m_apModelState->bHasMainYGrid; - m_aCommandAvailability[ ".uno:ToggleGridVertical" ] = bIsWritable; - m_aCommandArguments[ ".uno:ToggleGridVertical" ] <<= m_apModelState->bHasMainXGrid; - - m_aCommandAvailability[ ".uno:ToggleLegend" ] = bIsWritable; - m_aCommandArguments[ ".uno:ToggleLegend" ] <<= m_apModelState->bHasLegend; - - m_aCommandAvailability[ ".uno:NewArrangement" ] = bIsWritable; - m_aCommandAvailability[ ".uno:Update" ] = bIsWritable; - m_aCommandAvailability[ ".uno:DefaultColors" ] = bIsWritable; - m_aCommandAvailability[ ".uno:BarWidth" ] = bIsWritable; - m_aCommandAvailability[ ".uno:NumberOfLines" ] = bIsWritable; - m_aCommandAvailability[ ".uno:ArrangeRow" ] = + m_aCommandAvailability[ u".uno:ToggleGridHorizontal"_ustr ] = bIsWritable; + m_aCommandArguments[ u".uno:ToggleGridHorizontal"_ustr ] <<= bModelStateIsValid && m_apModelState->bHasMainYGrid; + m_aCommandAvailability[ u".uno:ToggleGridVertical"_ustr ] = bIsWritable; + m_aCommandArguments[ u".uno:ToggleGridVertical"_ustr ] <<= bModelStateIsValid && m_apModelState->bHasMainXGrid; + + m_aCommandAvailability[ u".uno:ToggleLegend"_ustr ] = bIsWritable; + m_aCommandArguments[ u".uno:ToggleLegend"_ustr ] <<= bModelStateIsValid && m_apModelState->bHasLegend; + + m_aCommandAvailability[ u".uno:NewArrangement"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:Update"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:DefaultColors"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:BarWidth"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:NumberOfLines"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:ArrangeRow"_ustr ] = bShapeContext || ( bIsWritable && bControllerStateIsValid && ( m_apControllerState->bMayMoveSeriesForward || m_apControllerState->bMayMoveSeriesBackward ) ); // insert objects - m_aCommandAvailability[ ".uno:InsertTitles" ] = m_aCommandAvailability[ ".uno:InsertMenuTitles" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertLegend" ] = m_aCommandAvailability[ ".uno:InsertMenuLegend" ] = bIsWritable; - m_aCommandAvailability[ ".uno:DeleteLegend" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertMenuDataLabels" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertRemoveAxes" ] = m_aCommandAvailability[ ".uno:InsertMenuAxes" ] = bIsWritable && m_apModelState->bSupportsAxes; - m_aCommandAvailability[ ".uno:InsertMenuGrids" ] = bIsWritable && m_apModelState->bSupportsAxes; - m_aCommandAvailability[ ".uno:InsertMenuTrendlines" ] = bIsWritable && m_apModelState->bSupportsStatistics && m_apControllerState->bMayAddMenuTrendline; - m_aCommandAvailability[ ".uno:InsertMenuMeanValues" ] = bIsWritable && m_apModelState->bSupportsStatistics; - m_aCommandAvailability[ ".uno:InsertMenuXErrorBars" ] = bIsWritable && m_apModelState->bSupportsStatistics; - m_aCommandAvailability[ ".uno:InsertMenuYErrorBars" ] = bIsWritable && m_apModelState->bSupportsStatistics; - m_aCommandAvailability[ ".uno:InsertSymbol" ] = bIsWritable && m_apControllerState->bIsTextObject; + m_aCommandAvailability[ u".uno:InsertTitles"_ustr ] = m_aCommandAvailability[ u".uno:InsertMenuTitles"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertLegend"_ustr ] = m_aCommandAvailability[ u".uno:InsertMenuLegend"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:DeleteLegend"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertMenuDataLabels"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertRemoveAxes"_ustr ] = m_aCommandAvailability[ u".uno:InsertMenuAxes"_ustr ] = bIsWritable && m_apModelState->bSupportsAxes; + m_aCommandAvailability[ u".uno:InsertMenuGrids"_ustr ] = bIsWritable && m_apModelState->bSupportsAxes; + m_aCommandAvailability[ u".uno:InsertMenuTrendlines"_ustr ] = bIsWritable && m_apModelState->bSupportsStatistics && bControllerStateIsValid && m_apControllerState->bMayAddMenuTrendline; + m_aCommandAvailability[ u".uno:InsertMenuMeanValues"_ustr ] = bIsWritable && m_apModelState->bSupportsStatistics; + m_aCommandAvailability[ u".uno:InsertMenuXErrorBars"_ustr ] = bIsWritable && m_apModelState->bSupportsStatistics; + m_aCommandAvailability[ u".uno:InsertMenuYErrorBars"_ustr ] = bIsWritable && m_apModelState->bSupportsStatistics; + m_aCommandAvailability[ u".uno:InsertSymbol"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bIsTextObject; + m_aCommandAvailability[ u".uno:InsertMenuDataTable"_ustr ] = bIsWritable; // format objects bool bFormatObjectAvailable = bIsWritable && bControllerStateIsValid && m_apControllerState->bIsFormateableObjectSelected; - m_aCommandAvailability[ ".uno:FormatSelection" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatAxis" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatTitle" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatDataSeries" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatDataPoint" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatDataLabels" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatDataLabel" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatXErrorBars" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatXErrorBars; - m_aCommandAvailability[ ".uno:FormatYErrorBars" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatYErrorBars; - m_aCommandAvailability[ ".uno:FormatMeanValue" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatMeanValue; - m_aCommandAvailability[ ".uno:FormatTrendline" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatTrendline; - m_aCommandAvailability[ ".uno:FormatTrendlineEquation" ] = bFormatObjectAvailable && bControllerStateIsValid && m_apControllerState->bMayFormatTrendlineEquation; - m_aCommandAvailability[ ".uno:FormatStockLoss" ] = bFormatObjectAvailable; - m_aCommandAvailability[ ".uno:FormatStockGain" ] = bFormatObjectAvailable; - - m_aCommandAvailability[ ".uno:DiagramType" ] = bIsWritable; - m_aCommandAvailability[ ".uno:Legend" ] = bIsWritable && m_apModelState->bHasLegend; - m_aCommandAvailability[ ".uno:DiagramWall" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasWall; - m_aCommandAvailability[ ".uno:DiagramArea" ] = bIsWritable; - - m_aCommandAvailability[ ".uno:TransformDialog" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bHasSelectedObject && m_apControllerState->bIsPositionableObject; + m_aCommandAvailability[ u".uno:FormatSelection"_ustr ] = bFormatObjectAvailable && !bIsTextEdit; + m_aCommandAvailability[ u".uno:FontDialog"_ustr ] = (bShapeContext ? isShapeControllerCommandAvailable(u".uno:FontDialog"_ustr) : + bFormatObjectAvailable) && bIsTextEdit; + m_aCommandAvailability[ u".uno:FormatAxis"_ustr ] = bFormatObjectAvailable; + m_aCommandAvailability[ u".uno:FormatTitle"_ustr ] = bFormatObjectAvailable && !bIsTextEdit; + m_aCommandAvailability[ u".uno:FormatDataSeries"_ustr ] = bFormatObjectAvailable; + m_aCommandAvailability[ u".uno:FormatDataPoint"_ustr ] = bFormatObjectAvailable; + m_aCommandAvailability[ u".uno:FormatDataLabels"_ustr ] = bFormatObjectAvailable; + m_aCommandAvailability[ u".uno:FormatDataLabel"_ustr ] = bFormatObjectAvailable; + m_aCommandAvailability[ u".uno:FormatXErrorBars"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatXErrorBars; + m_aCommandAvailability[ u".uno:FormatYErrorBars"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatYErrorBars; + m_aCommandAvailability[ u".uno:FormatMeanValue"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatMeanValue; + m_aCommandAvailability[ u".uno:FormatTrendline"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatTrendline; + m_aCommandAvailability[ u".uno:FormatTrendlineEquation"_ustr ] = bFormatObjectAvailable && bControllerStateIsValid && m_apControllerState->bMayFormatTrendlineEquation; + m_aCommandAvailability[ u".uno:FormatStockLoss"_ustr ] = bFormatObjectAvailable; + m_aCommandAvailability[ u".uno:FormatStockGain"_ustr ] = bFormatObjectAvailable; + + m_aCommandAvailability[ u".uno:DiagramType"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:Legend"_ustr ] = bIsWritable && m_apModelState->bHasLegend; + m_aCommandAvailability[ u".uno:DiagramWall"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasWall; + m_aCommandAvailability[ u".uno:DiagramArea"_ustr ] = bIsWritable; + + m_aCommandAvailability[ u".uno:TransformDialog"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bHasSelectedObject && m_apControllerState->bIsPositionableObject; // 3d commands - m_aCommandAvailability[ ".uno:View3D" ] = bIsWritable && bModelStateIsValid && m_apModelState->bIsThreeD; - m_aCommandAvailability[ ".uno:DiagramFloor" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasFloor; + m_aCommandAvailability[ u".uno:View3D"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bIsThreeD; + m_aCommandAvailability[ u".uno:DiagramFloor"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasFloor; //some more format commands with different ui text - m_aCommandAvailability[ ".uno:FormatWall" ] = m_aCommandAvailability[ ".uno:DiagramWall" ]; - m_aCommandAvailability[ ".uno:FormatFloor" ] = m_aCommandAvailability[ ".uno:DiagramFloor" ]; - m_aCommandAvailability[ ".uno:FormatChartArea" ] = m_aCommandAvailability[ ".uno:DiagramArea" ]; - m_aCommandAvailability[ ".uno:FormatLegend" ] = m_aCommandAvailability[ ".uno:Legend" ]; + m_aCommandAvailability[ u".uno:FormatWall"_ustr ] = m_aCommandAvailability[ u".uno:DiagramWall"_ustr ]; + m_aCommandAvailability[ u".uno:FormatFloor"_ustr ] = m_aCommandAvailability[ u".uno:DiagramFloor"_ustr ]; + m_aCommandAvailability[ u".uno:FormatChartArea"_ustr ] = m_aCommandAvailability[ u".uno:DiagramArea"_ustr ]; + m_aCommandAvailability[ u".uno:FormatLegend"_ustr ] = m_aCommandAvailability[ u".uno:Legend"_ustr ]; // depending on own data and ability to create new data provider - m_aCommandAvailability[".uno:DataRanges"] = bIsWritable && bModelStateIsValid && !m_apModelState->bHasDataFromPivotTable + m_aCommandAvailability[u".uno:DataRanges"_ustr] = bIsWritable && bModelStateIsValid && !m_apModelState->bHasDataFromPivotTable && ((m_apModelState->bHasOwnData && bCanCreateDataProvider) || !m_apModelState->bHasOwnData); - m_aCommandAvailability[ ".uno:DiagramData" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasOwnData && bEnableDataTableDialog; + m_aCommandAvailability[ u".uno:DiagramData"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasOwnData && bEnableDataTableDialog; // titles - m_aCommandAvailability[ ".uno:MainTitle" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainTitle; - m_aCommandAvailability[ ".uno:SubTitle" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasSubTitle; - m_aCommandAvailability[ ".uno:XTitle" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasXAxisTitle; - m_aCommandAvailability[ ".uno:YTitle" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasYAxisTitle; - m_aCommandAvailability[ ".uno:ZTitle" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasZAxisTitle; - m_aCommandAvailability[ ".uno:SecondaryXTitle" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasSecondaryXAxisTitle; - m_aCommandAvailability[ ".uno:SecondaryYTitle" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasSecondaryYAxisTitle; - m_aCommandAvailability[ ".uno:AllTitles" ] = bIsWritable && bModelStateIsValid && m_apModelState->HasAnyTitle(); + m_aCommandAvailability[ u".uno:MainTitle"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainTitle; + m_aCommandAvailability[ u".uno:SubTitle"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasSubTitle; + m_aCommandAvailability[ u".uno:XTitle"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasXAxisTitle; + m_aCommandAvailability[ u".uno:YTitle"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasYAxisTitle; + m_aCommandAvailability[ u".uno:ZTitle"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasZAxisTitle; + m_aCommandAvailability[ u".uno:SecondaryXTitle"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasSecondaryXAxisTitle; + m_aCommandAvailability[ u".uno:SecondaryYTitle"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasSecondaryYAxisTitle; + m_aCommandAvailability[ u".uno:AllTitles"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->HasAnyTitle(); // text - m_aCommandAvailability[ ".uno:ScaleText" ] = bIsWritable && bModelStateIsValid ; - m_aCommandArguments[ ".uno:ScaleText" ] <<= m_apModelState->bHasAutoScaledText; + m_aCommandAvailability[ u".uno:ScaleText"_ustr ] = bIsWritable && bModelStateIsValid ; + m_aCommandArguments[ u".uno:ScaleText"_ustr ] <<= bModelStateIsValid && m_apModelState->bHasAutoScaledText; + + bool bTitleIsInEditMode = false; + try + { + OUString aObjectCID2 = m_xChartController->getSelectionMember().getSelectedCID(); + if (!aObjectCID2.isEmpty()) + if (ObjectIdentifier::getObjectType(aObjectCID2) == OBJECTTYPE_TITLE) + if (m_xChartController->GetDrawViewWrapper()) + if (m_xChartController->GetDrawViewWrapper()->GetTextEditOutlinerView()) + bTitleIsInEditMode = true; + } + catch (const uno::Exception&) { TOOLS_WARN_EXCEPTION("chart2", ""); } + + bool bEnableUnoCommands = bIsWritable && bModelStateIsValid && !bTitleIsInEditMode; + m_aCommandAvailability[u".uno:Bold"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Strikeout"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:CharFontName"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:FontHeight"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Italic"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Underline"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Shadowed"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Color"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:FontColor"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Grow"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Shrink"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:SuperScript"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:SubScript"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:Spacing"_ustr] = bEnableUnoCommands; + m_aCommandAvailability[u".uno:ResetAttributes"_ustr] = bEnableUnoCommands; + + if (!bTitleIsInEditMode) + { + // at default they are not filled in the sidebar + m_aCommandArguments[u".uno:CharFontName"_ustr] <<= false; + m_aCommandArguments[u".uno:FontHeight"_ustr] <<= false; + m_aCommandArguments[u".uno:Bold"_ustr] <<= false; + m_aCommandArguments[u".uno:Strikeout"_ustr] <<= false; + m_aCommandArguments[u".uno:Italic"_ustr] <<= false; + m_aCommandArguments[u".uno:Underline"_ustr] <<= false; + m_aCommandArguments[u".uno:Shadowed"_ustr] <<= false; + m_aCommandArguments[u".uno:Color"_ustr] <<= false; + m_aCommandArguments[u".uno:FontColor"_ustr] <<= false; + m_aCommandArguments[u".uno:SuperScript"_ustr] <<= false; + m_aCommandArguments[u".uno:SubScript"_ustr] <<= false; + m_aCommandArguments[u".uno:Spacing"_ustr] <<= false; + m_aCommandArguments[u".uno:ResetAttributes"_ustr] <<= false; + } + + // They are filled based on the text properties.. if there are only 1 + // but only those properties that are true for the whole text + try + { + // if title is selected, and in edit mode, then the font panel should be disabled + // enable the uno commands only if the title is not in edit mode + // Todo: enable font panel here if the panel will be able to handle edited title. + OUString aObjectCID = m_xChartController->getSelectionMember().getSelectedCID(); + if (!aObjectCID.isEmpty() && !bTitleIsInEditMode) + { + // If the selected is not title, then we should check the text properties.. + // or the selected text properties? + std::vector<Reference<beans::XPropertySet>> xProperties; + xProperties.emplace(xProperties.end(), + ObjectIdentifier::getObjectPropertySet( + aObjectCID, m_xChartController->getChartModel())); + + if (ObjectIdentifier::getObjectType(aObjectCID) == OBJECTTYPE_TITLE) + { + Reference<chart2::XTitle> xTitle(xProperties[0], uno::UNO_QUERY); + if (xTitle.is()) + { + const Sequence<Reference<chart2::XFormattedString>> aStrings(xTitle->getText()); + xProperties.pop_back(); + for (int i = 0; i < aStrings.getLength(); i++) + { + Reference<beans::XPropertySet> xTitlePropSet(aStrings[i], uno::UNO_QUERY); + xProperties.push_back(xTitlePropSet); + } + } + } + + Reference<beans::XMultiPropertySet> aMObjProps(xProperties[0], uno::UNO_QUERY); + if (aMObjProps) + { + awt::FontDescriptor aFont + = CharacterProperties::createFontDescriptorFromPropertySet(aMObjProps); + + if (!aFont.Name.isEmpty()) + { + OUString aPropName = u"CharFontName"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + m_aCommandArguments[u".uno:CharFontName"_ustr] <<= aFont; + } + } + } + OUString aPropName = u"CharHeight"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + uno::Any aAny = xProperties[0]->getPropertyValue(aPropName); + frame::status::FontHeight aFontHeight; + aAny >>= aFontHeight.Height; + // another type is needed here, so + m_aCommandArguments[u".uno:FontHeight"_ustr] <<= aFontHeight; + } + + aPropName = u"CharWeight"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + float nFontWeight(0.0); + xProperties[0]->getPropertyValue(aPropName) >>= nFontWeight; + bool bFontWeight = (nFontWeight > 100.0); + m_aCommandArguments[u".uno:Bold"_ustr] <<= bFontWeight; + } + + aPropName = u"CharPosture"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + awt::FontSlant nFontItalic; + xProperties[0]->getPropertyValue(aPropName) >>= nFontItalic; + bool bItalic = (nFontItalic == awt::FontSlant_ITALIC); + m_aCommandArguments[u".uno:Italic"_ustr] <<= bItalic; + } + + aPropName = u"CharStrikeout"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + sal_Int16 nFontStrikeout(0); + xProperties[0]->getPropertyValue(aPropName) >>= nFontStrikeout; + bool bFontStrikeout = (nFontStrikeout > 0); + m_aCommandArguments[u".uno:Strikeout"_ustr] <<= bFontStrikeout; + } + + aPropName = u"CharUnderline"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + sal_Int16 nFontUnderline(0); + xProperties[0]->getPropertyValue(aPropName) >>= nFontUnderline; + bool bFontUnderline = (nFontUnderline > 0); + m_aCommandArguments[u".uno:Underline"_ustr] <<= bFontUnderline; + } + + aPropName = u"CharShadowed"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + bool bShadowed = false; + xProperties[0]->getPropertyValue(aPropName) >>= bShadowed; + m_aCommandArguments[u".uno:Shadowed"_ustr] <<= bShadowed; + } + + // Font color is not set in panel... it is just enabled to use + m_aCommandArguments[u".uno:Color"_ustr] <<= false; + m_aCommandArguments[u".uno:FontColor"_ustr] <<= false; + + aPropName = u"CharEscapement"_ustr; + if (lcl_arePropertiesSame(xProperties, aPropName)) + { + sal_Int32 nCharEscapement = 0; + xProperties[0]->getPropertyValue(aPropName) >>= nCharEscapement; + m_aCommandArguments[u".uno:SuperScript"_ustr] <<= (nCharEscapement > 0); + m_aCommandArguments[u".uno:SubScript"_ustr] <<= (nCharEscapement < 0); + } + + // Font Spacing is not set in panel... it is just enabled to use + m_aCommandArguments[u".uno:Spacing"_ustr] <<= false; + } + } + catch (const uno::Exception&) + { + TOOLS_WARN_EXCEPTION("chart2", ""); + } // axes - m_aCommandAvailability[ ".uno:DiagramAxisX" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasXAxis; - m_aCommandAvailability[ ".uno:DiagramAxisY" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasYAxis; - m_aCommandAvailability[ ".uno:DiagramAxisZ" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasZAxis; - m_aCommandAvailability[ ".uno:DiagramAxisA" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasAAxis; - m_aCommandAvailability[ ".uno:DiagramAxisB" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasBAxis; - m_aCommandAvailability[ ".uno:DiagramAxisAll" ] = bIsWritable && bModelStateIsValid && m_apModelState->HasAnyAxis(); + m_aCommandAvailability[ u".uno:DiagramAxisX"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasXAxis; + m_aCommandAvailability[ u".uno:DiagramAxisY"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasYAxis; + m_aCommandAvailability[ u".uno:DiagramAxisZ"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasZAxis; + m_aCommandAvailability[ u".uno:DiagramAxisA"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasAAxis; + m_aCommandAvailability[ u".uno:DiagramAxisB"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasBAxis; + m_aCommandAvailability[ u".uno:DiagramAxisAll"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->HasAnyAxis(); // grids // note: x and y are swapped in the commands! - m_aCommandAvailability[ ".uno:DiagramGridYMain" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainXGrid; - m_aCommandAvailability[ ".uno:DiagramGridXMain" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainYGrid; - m_aCommandAvailability[ ".uno:DiagramGridZMain" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainZGrid; - m_aCommandAvailability[ ".uno:DiagramGridYHelp" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasHelpXGrid; - m_aCommandAvailability[ ".uno:DiagramGridXHelp" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasHelpYGrid; - m_aCommandAvailability[ ".uno:DiagramGridZHelp" ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasHelpZGrid; - m_aCommandAvailability[ ".uno:DiagramGridAll" ] = bIsWritable && bModelStateIsValid && m_apModelState->HasAnyGrid(); + m_aCommandAvailability[ u".uno:DiagramGridYMain"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainXGrid; + m_aCommandAvailability[ u".uno:DiagramGridXMain"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainYGrid; + m_aCommandAvailability[ u".uno:DiagramGridZMain"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasMainZGrid; + m_aCommandAvailability[ u".uno:DiagramGridYHelp"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasHelpXGrid; + m_aCommandAvailability[ u".uno:DiagramGridXHelp"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasHelpYGrid; + m_aCommandAvailability[ u".uno:DiagramGridZHelp"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bHasHelpZGrid; + m_aCommandAvailability[ u".uno:DiagramGridAll"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->HasAnyGrid(); // series arrangement - m_aCommandAvailability[ ".uno:Forward" ] = ( bShapeContext ? isShapeControllerCommandAvailable( ".uno:Forward" ) : + m_aCommandAvailability[ u".uno:Forward"_ustr ] = ( bShapeContext ? isShapeControllerCommandAvailable( u".uno:Forward"_ustr ) : ( bIsWritable && bControllerStateIsValid && m_apControllerState->bMayMoveSeriesForward && bEnableDataTableDialog ) ); - m_aCommandAvailability[ ".uno:Backward" ] = ( bShapeContext ? isShapeControllerCommandAvailable( ".uno:Backward" ) : + m_aCommandAvailability[ u".uno:Backward"_ustr ] = ( bShapeContext ? isShapeControllerCommandAvailable( u".uno:Backward"_ustr ) : ( bIsWritable && bControllerStateIsValid && m_apControllerState->bMayMoveSeriesBackward && bEnableDataTableDialog ) ); - m_aCommandAvailability[ ".uno:InsertDataLabels" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertDataLabel" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertMeanValue" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddMeanValue; - m_aCommandAvailability[ ".uno:InsertTrendline" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddTrendline; - m_aCommandAvailability[ ".uno:InsertTrendlineEquation" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddTrendlineEquation; - m_aCommandAvailability[ ".uno:InsertTrendlineEquationAndR2" ] = m_aCommandAvailability[ ".uno:InsertTrendlineEquation" ]; - m_aCommandAvailability[ ".uno:InsertR2Value" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddR2Value; - m_aCommandAvailability[ ".uno:DeleteR2Value" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteR2Value; - - m_aCommandAvailability[ ".uno:InsertXErrorBars" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddXErrorBars; - m_aCommandAvailability[ ".uno:InsertYErrorBars" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddYErrorBars; - - m_aCommandAvailability[ ".uno:DeleteDataLabels" ] = bIsWritable; - m_aCommandAvailability[ ".uno:DeleteDataLabel" ] = bIsWritable; - m_aCommandAvailability[ ".uno:DeleteTrendline" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteTrendline; - m_aCommandAvailability[ ".uno:DeleteTrendlineEquation" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteTrendlineEquation; - m_aCommandAvailability[ ".uno:DeleteMeanValue" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteMeanValue; - m_aCommandAvailability[ ".uno:DeleteXErrorBars" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteXErrorBars; - m_aCommandAvailability[ ".uno:DeleteYErrorBars" ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteYErrorBars; - - m_aCommandAvailability[ ".uno:ResetDataPoint" ] = bIsWritable; - m_aCommandAvailability[ ".uno:ResetAllDataPoints" ] = bIsWritable; - - m_aCommandAvailability[ ".uno:InsertAxis" ] = bIsWritable; - m_aCommandAvailability[ ".uno:DeleteAxis" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertAxisTitle" ] = bIsWritable; - m_aCommandAvailability[ ".uno:FormatMajorGrid" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertMajorGrid" ] = bIsWritable; - m_aCommandAvailability[ ".uno:DeleteMajorGrid" ] = bIsWritable; - m_aCommandAvailability[ ".uno:FormatMinorGrid" ] = bIsWritable; - m_aCommandAvailability[ ".uno:InsertMinorGrid" ] = bIsWritable; - m_aCommandAvailability[ ".uno:DeleteMinorGrid" ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertDataLabels"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertDataLabel"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertMeanValue"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddMeanValue; + m_aCommandAvailability[ u".uno:InsertTrendline"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddTrendline; + const bool bInsertTrendlineEquation = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddTrendlineEquation; + m_aCommandAvailability[ u".uno:InsertTrendlineEquation"_ustr ] = bInsertTrendlineEquation; + m_aCommandAvailability[ u".uno:InsertTrendlineEquationAndR2"_ustr ] = bInsertTrendlineEquation && m_apControllerState->bMayAddR2Value; + m_aCommandAvailability[ u".uno:InsertR2Value"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddR2Value + && !m_apControllerState->bMayAddTrendlineEquation; + m_aCommandAvailability[ u".uno:DeleteR2Value"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteR2Value; + + m_aCommandAvailability[ u".uno:InsertXErrorBars"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddXErrorBars; + m_aCommandAvailability[ u".uno:InsertYErrorBars"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddYErrorBars; + + m_aCommandAvailability[ u".uno:DeleteDataLabels"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:DeleteDataLabel"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:DeleteTrendline"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteTrendline; + m_aCommandAvailability[ u".uno:DeleteTrendlineEquation"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteTrendlineEquation; + m_aCommandAvailability[ u".uno:DeleteMeanValue"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteMeanValue; + m_aCommandAvailability[ u".uno:DeleteXErrorBars"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteXErrorBars; + m_aCommandAvailability[ u".uno:DeleteYErrorBars"_ustr ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteYErrorBars; + + m_aCommandAvailability[ u".uno:ResetDataPoint"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:ResetAllDataPoints"_ustr ] = bIsWritable; + + m_aCommandAvailability[ u".uno:InsertAxis"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:DeleteAxis"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertAxisTitle"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:FormatMajorGrid"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertMajorGrid"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:DeleteMajorGrid"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:FormatMinorGrid"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:InsertMinorGrid"_ustr ] = bIsWritable; + m_aCommandAvailability[ u".uno:DeleteMinorGrid"_ustr ] = bIsWritable; + + // data table + m_aCommandAvailability[ u".uno:InsertDataTable"_ustr ] = bIsWritable && bModelStateIsValid && !m_apModelState->bDataTable; + m_aCommandAvailability[ u".uno:DeleteDataTable"_ustr ] = bIsWritable && bModelStateIsValid && m_apModelState->bDataTable; } bool ControllerCommandDispatch::commandAvailable( const OUString & rCommand ) @@ -741,7 +942,7 @@ void ControllerCommandDispatch::fireStatusEvent( { uno::Any aArg; aArg <<= Reference< frame::XController >(m_xChartController); - fireStatusEventForURL( ".uno:ChartElementSelector", aArg, true, xSingleListener ); + fireStatusEventForURL( u".uno:ChartElementSelector"_ustr, aArg, true, xSingleListener ); } if( rURL.isEmpty() ) @@ -757,7 +958,7 @@ void ControllerCommandDispatch::fireStatusEvent( if( rURL.isEmpty() || rURL == ".uno:StatusBarVisible" ) { bool bIsStatusBarVisible( lcl_isStatusBarVisible( m_xChartController )); - fireStatusEventForURL( ".uno:StatusBarVisible", uno::Any( bIsStatusBarVisible ), true, xSingleListener ); + fireStatusEventForURL( u".uno:StatusBarVisible"_ustr, uno::Any( bIsStatusBarVisible ), true, xSingleListener ); } } @@ -772,7 +973,7 @@ void SAL_CALL ControllerCommandDispatch::dispatch( // ____ WeakComponentImplHelperBase ____ /// is called when this is disposed -void SAL_CALL ControllerCommandDispatch::disposing() +void ControllerCommandDispatch::disposing(std::unique_lock<std::mutex>& /*rGuard*/) { m_xChartController.clear(); m_xDispatch.clear(); @@ -795,14 +996,14 @@ void SAL_CALL ControllerCommandDispatch::modified( const lang::EventObject& aEve // Update the "ModelState" Struct. if( m_apModelState && m_xChartController.is()) { - m_apModelState->update( m_xChartController->getModel()); + m_apModelState->update( m_xChartController->getChartModel()); bUpdateCommandAvailability = true; } // Update the "ControllerState" Struct. if( m_apControllerState && m_xChartController.is()) { - m_apControllerState->update( m_xChartController, m_xChartController->getModel()); + m_apControllerState->update( m_xChartController, m_xChartController->getChartModel()); bUpdateCommandAvailability = true; } @@ -825,7 +1026,7 @@ void SAL_CALL ControllerCommandDispatch::selectionChanged( const lang::EventObje // Update the "ControllerState" Struct. if( m_apControllerState && m_xChartController.is()) { - m_apControllerState->update( m_xChartController, m_xChartController->getModel()); + m_apControllerState->update( m_xChartController, m_xChartController->getChartModel()); updateCommandAvailability(); } |