diff options
Diffstat (limited to 'chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx')
-rw-r--r-- | chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx b/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx index 264bdf92af3b..571f98a56952 100644 --- a/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx +++ b/chart2/source/controller/itemsetwrapper/DataPointItemConverter.cxx @@ -25,11 +25,12 @@ #include <CharacterPropertyItemConverter.hxx> #include <StatisticsItemConverter.hxx> #include <SeriesOptionsItemConverter.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> -#include <DiagramHelper.hxx> +#include <DataSeriesProperties.hxx> #include <Diagram.hxx> #include <ChartModel.hxx> -#include <ChartModelHelper.hxx> +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <unonames.hxx> @@ -39,7 +40,6 @@ #include <com/sun/star/chart2/Symbol.hpp> #include <com/sun/star/chart2/RelativePosition.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/frame/XModel.hpp> #include <comphelper/sequence.hxx> #include <svx/xflclit.hxx> @@ -50,7 +50,7 @@ #include <editeng/brushitem.hxx> #include <svl/ilstitem.hxx> #include <svx/sdangitm.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <vcl/graph.hxx> #include <rtl/math.hxx> @@ -60,6 +60,7 @@ using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; +using namespace ::chart::DataSeriesProperties; using ::com::sun::star::uno::Reference; namespace chart::wrapper { @@ -105,7 +106,7 @@ bool lcl_NumberFormatFromItemToPropertySet( sal_uInt16 nWhichId, const SfxItemSe bool bChanged = false; if( !xPropertySet.is() ) return bChanged; - OUString aPropertyName = (nWhichId==SID_ATTR_NUMBERFORMAT_VALUE) ? OUString(CHART_UNONAME_NUMFMT) : OUString( "PercentageNumberFormat" ); + OUString aPropertyName = (nWhichId==SID_ATTR_NUMBERFORMAT_VALUE) ? CHART_UNONAME_NUMFMT : OUString( "PercentageNumberFormat" ); sal_uInt16 nSourceWhich = (nWhichId==SID_ATTR_NUMBERFORMAT_VALUE) ? SID_ATTR_NUMBERFORMAT_SOURCE : SCHATTR_PERCENT_NUMBERFORMAT_SOURCE; if( rItemSet.GetItemState( nSourceWhich ) != SfxItemState::SET ) @@ -131,7 +132,7 @@ bool lcl_NumberFormatFromItemToPropertySet( sal_uInt16 nWhichId, const SfxItemSe uno::Any aOldValue( xPropertySet->getPropertyValue(aPropertyName) ); if( bOverwriteAttributedDataPointsAlso ) { - Reference< chart2::XDataSeries > xSeries( xPropertySet, uno::UNO_QUERY); + rtl::Reference< DataSeries > xSeries( dynamic_cast<DataSeries*>(xPropertySet.get()) ); if( aValue != aOldValue || ::chart::DataSeriesHelper::hasAttributedDataPointDifferentValue( xSeries, aPropertyName, aOldValue ) ) { @@ -152,7 +153,7 @@ bool lcl_UseSourceFormatFromItemToPropertySet( sal_uInt16 nWhichId, const SfxIte bool bChanged = false; if( !xPropertySet.is() ) return bChanged; - OUString aPropertyName = (nWhichId==SID_ATTR_NUMBERFORMAT_SOURCE) ? OUString(CHART_UNONAME_NUMFMT) : OUString( "PercentageNumberFormat" ); + OUString aPropertyName = (nWhichId==SID_ATTR_NUMBERFORMAT_SOURCE) ? CHART_UNONAME_NUMFMT : OUString( "PercentageNumberFormat" ); sal_uInt16 nFormatWhich = (nWhichId==SID_ATTR_NUMBERFORMAT_SOURCE) ? SID_ATTR_NUMBERFORMAT_VALUE : SCHATTR_PERCENT_NUMBERFORMAT_VALUE; if( rItemSet.GetItemState( nWhichId ) != SfxItemState::SET ) @@ -179,7 +180,7 @@ bool lcl_UseSourceFormatFromItemToPropertySet( sal_uInt16 nWhichId, const SfxIte uno::Any aOldValue( xPropertySet->getPropertyValue(aPropertyName) ); if( bOverwriteAttributedDataPointsAlso ) { - Reference< chart2::XDataSeries > xSeries( xPropertySet, uno::UNO_QUERY); + rtl::Reference< DataSeries > xSeries( dynamic_cast<DataSeries*>(xPropertySet.get()) ); if( aNewValue != aOldValue || ::chart::DataSeriesHelper::hasAttributedDataPointDifferentValue( xSeries, aPropertyName, aOldValue ) ) { @@ -202,12 +203,12 @@ DataPointItemConverter::DataPointItemConverter( const rtl::Reference<::chart::ChartModel> & xChartModel, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< beans::XPropertySet > & rPropertySet, - const uno::Reference< XDataSeries > & xSeries, + const rtl::Reference< DataSeries > & xSeries, SfxItemPool& rItemPool, SdrModel& rDrawModel, const uno::Reference<lang::XMultiServiceFactory>& xNamedPropertyContainerFactory, GraphicObjectType eMapTo, - const awt::Size* pRefSize, + const std::optional<awt::Size>& pRefSize, bool bDataSeries, bool bUseSpecialFillColor, sal_Int32 nSpecialFillColor, @@ -232,15 +233,17 @@ DataPointItemConverter::DataPointItemConverter( m_aConverters.emplace_back( new CharacterPropertyItemConverter(rPropertySet, rItemPool, pRefSize, "ReferencePageSize")); if( bDataSeries ) { + assert(dynamic_cast<DataSeries*>(rPropertySet.get())); m_aConverters.emplace_back( new StatisticsItemConverter( xChartModel, rPropertySet, rItemPool )); - m_aConverters.emplace_back( new SeriesOptionsItemConverter( xChartModel, xContext, rPropertySet, rItemPool )); + m_aConverters.emplace_back( new SeriesOptionsItemConverter( xChartModel, xContext, + dynamic_cast<DataSeries*>(rPropertySet.get()), rItemPool )); } - rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram(xChartModel) ); - uno::Reference< XChartType > xChartType( DiagramHelper::getChartTypeOfSeries( xDiagram , xSeries ) ); + rtl::Reference< Diagram > xDiagram( xChartModel->getFirstChartDiagram() ); + rtl::Reference< ChartType > xChartType( xDiagram->getChartTypeOfSeries( xSeries ) ); bool bFound = false; bool bAmbiguous = false; - bool bSwapXAndY = DiagramHelper::getVertical( xDiagram, bFound, bAmbiguous ); + bool bSwapXAndY = xDiagram->getVertical( bFound, bAmbiguous ); m_aAvailableLabelPlacements = ChartTypeHelper::getSupportedLabelPlacements( xChartType, bSwapXAndY, xSeries ); m_bForbidPercentValue = ChartTypeHelper::getAxisType( xChartType, 0 ) != AxisType::CATEGORY; @@ -248,10 +251,10 @@ DataPointItemConverter::DataPointItemConverter( if (bDataSeries) return; - uno::Reference<beans::XPropertySet> xSeriesProp(xSeries, uno::UNO_QUERY); uno::Sequence<sal_Int32> deletedLegendEntriesSeq; - xSeriesProp->getPropertyValue("DeletedLegendEntries") >>= deletedLegendEntriesSeq; - for (const auto& deletedLegendEntry : std::as_const(deletedLegendEntriesSeq)) + // "DeletedLegendEntries" + xSeries->getFastPropertyValue(PROP_DATASERIES_DELETED_LEGEND_ENTRIES) >>= deletedLegendEntriesSeq; + for (const auto& deletedLegendEntry : deletedLegendEntriesSeq) { if (nPointIndex == deletedLegendEntry) { @@ -338,7 +341,7 @@ bool DataPointItemConverter::ApplySpecialItem( rValue = rItem.GetValue(); if( m_bOverwriteLabelsForAttributedDataPointsAlso ) { - Reference< chart2::XDataSeries > xSeries( GetPropertySet(), uno::UNO_QUERY); + rtl::Reference<DataSeries> xSeries(dynamic_cast<DataSeries*>(GetPropertySet().get())); if( bOldValue != bool(rValue) || DataSeriesHelper::hasAttributedDataPointDifferentValue( xSeries, CHART_UNONAME_LABEL , aOldValue ) ) { @@ -379,7 +382,7 @@ bool DataPointItemConverter::ApplySpecialItem( GetPropertySet()->getPropertyValue( "LabelSeparator" ) >>= aOldValue; if( m_bOverwriteLabelsForAttributedDataPointsAlso ) { - Reference< chart2::XDataSeries > xSeries( GetPropertySet(), uno::UNO_QUERY); + rtl::Reference<DataSeries> xSeries(dynamic_cast<DataSeries*>(GetPropertySet().get())); if( aOldValue != aNewValue || DataSeriesHelper::hasAttributedDataPointDifferentValue( xSeries, "LabelSeparator" , uno::Any( aOldValue ) ) ) { @@ -410,7 +413,7 @@ bool DataPointItemConverter::ApplySpecialItem( GetPropertySet()->getPropertyValue( "TextWordWrap" ) >>= bOld; if( m_bOverwriteLabelsForAttributedDataPointsAlso ) { - Reference< chart2::XDataSeries > xSeries( GetPropertySet(), uno::UNO_QUERY); + rtl::Reference<DataSeries> xSeries(dynamic_cast<DataSeries*>(GetPropertySet().get())); if( bOld!=bNew || DataSeriesHelper::hasAttributedDataPointDifferentValue( xSeries, "TextWordWrap", uno::Any( bOld ) ) ) { @@ -442,7 +445,7 @@ bool DataPointItemConverter::ApplySpecialItem( GetPropertySet()->getPropertyValue("LabelPlacement") >>= nOld; if( m_bOverwriteLabelsForAttributedDataPointsAlso ) { - Reference< chart2::XDataSeries > xSeries( GetPropertySet(), uno::UNO_QUERY); + rtl::Reference<DataSeries> xSeries(dynamic_cast<DataSeries*>(GetPropertySet().get())); if( nOld!=nNew || DataSeriesHelper::hasAttributedDataPointDifferentValue( xSeries, "LabelPlacement" , uno::Any( nOld ) ) ) { @@ -454,6 +457,7 @@ bool DataPointItemConverter::ApplySpecialItem( { GetPropertySet()->setPropertyValue("LabelPlacement", uno::Any(nNew)); GetPropertySet()->setPropertyValue("CustomLabelPosition", uno::Any()); + GetPropertySet()->setPropertyValue("CustomLabelSize", uno::Any()); bChanged = true; } } @@ -571,17 +575,18 @@ bool DataPointItemConverter::ApplySpecialItem( if (bHideLegendEntry != m_bHideLegendEntry) { uno::Sequence<sal_Int32> deletedLegendEntriesSeq; - Reference<beans::XPropertySet> xSeriesProp(m_xSeries, uno::UNO_QUERY); - xSeriesProp->getPropertyValue("DeletedLegendEntries") >>= deletedLegendEntriesSeq; + // "DeletedLegendEntries" + m_xSeries->getFastPropertyValue(PROP_DATASERIES_DELETED_LEGEND_ENTRIES) >>= deletedLegendEntriesSeq; std::vector<sal_Int32> deletedLegendEntries; - for (const auto& deletedLegendEntry : std::as_const(deletedLegendEntriesSeq)) + for (const auto& deletedLegendEntry : deletedLegendEntriesSeq) { if (bHideLegendEntry || m_nPointIndex != deletedLegendEntry) deletedLegendEntries.push_back(deletedLegendEntry); } if (bHideLegendEntry) deletedLegendEntries.push_back(m_nPointIndex); - xSeriesProp->setPropertyValue("DeletedLegendEntries", uno::makeAny(comphelper::containerToSequence(deletedLegendEntries))); + // "DeletedLegendEntries" + m_xSeries->setFastPropertyValue(PROP_DATASERIES_DELETED_LEGEND_ENTRIES, uno::Any(comphelper::containerToSequence(deletedLegendEntries))); } } break; @@ -592,10 +597,9 @@ bool DataPointItemConverter::ApplySpecialItem( { bool bNew = static_cast<const SfxBoolItem&>(rItemSet.Get(nWhichId)).GetValue(); bool bOld = true; - Reference<beans::XPropertySet> xSeriesProp(m_xSeries, uno::UNO_QUERY); - if( (xSeriesProp->getPropertyValue("ShowCustomLeaderLines") >>= bOld) && bOld != bNew ) + if( (m_xSeries->getFastPropertyValue(PROP_DATASERIES_SHOW_CUSTOM_LEADERLINES) >>= bOld) && bOld != bNew ) { - xSeriesProp->setPropertyValue("ShowCustomLeaderLines", uno::Any(bNew)); + m_xSeries->setFastPropertyValue(PROP_DATASERIES_SHOW_CUSTOM_LEADERLINES, uno::Any(bNew)); bChanged = true; } } @@ -634,7 +638,7 @@ void DataPointItemConverter::FillSpecialItem( if( m_bOverwriteLabelsForAttributedDataPointsAlso ) { if( DataSeriesHelper::hasAttributedDataPointDifferentValue( - Reference< chart2::XDataSeries >( GetPropertySet(), uno::UNO_QUERY), CHART_UNONAME_LABEL , uno::Any(aLabel) ) ) + dynamic_cast<DataSeries*>(GetPropertySet().get()), CHART_UNONAME_LABEL , uno::Any(aLabel) ) ) { rOutItemSet.InvalidateItem(nWhichId); } @@ -759,8 +763,7 @@ void DataPointItemConverter::FillSpecialItem( try { bool bValue = true; - Reference<beans::XPropertySet> xSeriesProp(m_xSeries, uno::UNO_QUERY); - if( xSeriesProp->getPropertyValue( "ShowCustomLeaderLines" ) >>= bValue ) + if( m_xSeries->getFastPropertyValue( PROP_DATASERIES_SHOW_CUSTOM_LEADERLINES ) >>= bValue ) rOutItemSet.Put(SfxBoolItem(nWhichId, bValue)); } catch (const uno::Exception&) @@ -804,7 +807,7 @@ void DataPointItemConverter::FillSpecialItem( if( GetPropertySet()->getPropertyValue( "TextRotation" ) >>= fValue ) { - rOutItemSet.Put( SdrAngleItem( nWhichId, Degree100(static_cast< sal_Int32 >( + rOutItemSet.Put( SdrAngleItem( SCHATTR_TEXT_DEGREES, Degree100(static_cast< sal_Int32 >( ::rtl::math::round( fValue * 100.0 ) ) ))); } } |