chart2/source/controller/dialogs/ObjectNameProvider.cxx | 28 +++++ chart2/source/controller/dialogs/Strings_Statistic.src | 14 +- chart2/source/inc/RegressionCurveHelper.hxx | 19 +++ chart2/source/tools/RegressionCurveHelper.cxx | 78 +++++++++++++--- 4 files changed, 118 insertions(+), 21 deletions(-)
New commits: commit 09687cf4288b8ef6dbaf4908b3c7ee2ea093d928 Author: Tomaž Vajngerl <qui...@gmail.com> Date: Mon Dec 9 23:01:48 2013 +0100 More clearly name the trendline in chart's element selection box. Change-Id: I5f787eb064524a3b2399d591866a5b8cbdee6294 diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx index 648a6c7..73d8416 100644 --- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx +++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx @@ -747,8 +747,8 @@ OUString ObjectNameProvider::getNameForCID( case OBJECTTYPE_DATA_ERRORS_X: case OBJECTTYPE_DATA_ERRORS_Y: case OBJECTTYPE_DATA_ERRORS_Z: - case OBJECTTYPE_DATA_CURVE: case OBJECTTYPE_DATA_AVERAGE_LINE: + case OBJECTTYPE_DATA_CURVE: case OBJECTTYPE_DATA_CURVE_EQUATION: { OUString aRet = lcl_getFullSeriesName( rObjectCID, xModel ); @@ -766,8 +766,30 @@ OUString ObjectNameProvider::getNameForCID( aRet += getName( OBJECTTYPE_DATA_LABEL ); } } + else if (eType == OBJECTTYPE_DATA_CURVE || eType == OBJECTTYPE_DATA_CURVE_EQUATION) + { + Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xModel )); + Reference< chart2::XRegressionCurveContainer > xCurveCnt( xSeries, uno::UNO_QUERY ); + + aRet += " "; + aRet += getName(eType); + + if( xCurveCnt.is()) + { + sal_Int32 nCurveIndex = ObjectIdentifier::getIndexFromParticleOrCID( rObjectCID ); + Reference< chart2::XRegressionCurve > xCurve( RegressionCurveHelper::getRegressionCurveAtIndex(xCurveCnt, nCurveIndex) ); + if( xCurve.is()) + { + aRet += " ("; + aRet += RegressionCurveHelper::getRegressionCurveName(xCurve); + aRet += ")"; + } + } + } else + { aRet += getName( eType ); + } return aRet; } default: diff --git a/chart2/source/controller/dialogs/Strings_Statistic.src b/chart2/source/controller/dialogs/Strings_Statistic.src index 7469f66..0be3a37 100644 --- a/chart2/source/controller/dialogs/Strings_Statistic.src +++ b/chart2/source/controller/dialogs/Strings_Statistic.src @@ -43,32 +43,32 @@ String STR_CONTROLTEXT_ERROR_BARS_FROM_DATA String STR_REGRESSION_LINEAR { - Text [ en-US ] = "Linear (%SERIESNAME)" ; + Text [ en-US ] = "Linear" ; }; String STR_REGRESSION_LOG { - Text [ en-US ] = "Logarithmic (%SERIESNAME)" ; + Text [ en-US ] = "Logarithmic" ; }; String STR_REGRESSION_EXP { - Text [ en-US ] = "Exponential (%SERIESNAME)" ; + Text [ en-US ] = "Exponential" ; }; String STR_REGRESSION_POWER { - Text [ en-US ] = "Power (%SERIESNAME)" ; + Text [ en-US ] = "Power" ; }; String STR_REGRESSION_POLYNOMIAL { - Text [ en-US ] = "Polynomial (%SERIESNAME)" ; + Text [ en-US ] = "Polynomial" ; }; String STR_REGRESSION_MOVING_AVERAGE { - Text [ en-US ] = "Moving average (%SERIESNAME)" ; + Text [ en-US ] = "Moving average" ; }; String STR_REGRESSION_MEAN { - Text [ en-US ] = "Mean (%SERIESNAME)" ; + Text [ en-US ] = "Mean" ; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/inc/RegressionCurveHelper.hxx b/chart2/source/inc/RegressionCurveHelper.hxx index f9637e2..58da00c 100644 --- a/chart2/source/inc/RegressionCurveHelper.hxx +++ b/chart2/source/inc/RegressionCurveHelper.hxx @@ -201,6 +201,18 @@ public: static OUString getUINameForRegressionCurve( const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XRegressionCurve >& xCurve ); + static OUString getRegressionCurveName( + const ::com::sun::star::uno::Reference< + ::com::sun::star::chart2::XRegressionCurve >& xCurve ); + + static OUString getRegressionCurveGenericName( + const ::com::sun::star::uno::Reference< + ::com::sun::star::chart2::XRegressionCurve >& xCurve ); + + static OUString getRegressionCurveSpecificName( + const ::com::sun::star::uno::Reference< + ::com::sun::star::chart2::XRegressionCurve >& xCurve ); + static ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XRegressionCurve > > getAllRegressionCurvesNotMeanValueLine( const ::com::sun::star::uno::Reference< diff --git a/chart2/source/tools/RegressionCurveHelper.cxx b/chart2/source/tools/RegressionCurveHelper.cxx index e7a5d5c..d7c9dc4 100644 --- a/chart2/source/tools/RegressionCurveHelper.cxx +++ b/chart2/source/tools/RegressionCurveHelper.cxx @@ -78,6 +78,7 @@ OUString lcl_getServiceNameForType( ::chart::RegressionCurveHelper::tRegressionT } return aServiceName; } + } // anonymous namespace namespace chart @@ -609,24 +610,30 @@ RegressionCurveHelper::tRegressionType RegressionCurveHelper::getFirstRegressTyp OUString RegressionCurveHelper::getUINameForRegressionCurve( const Reference< XRegressionCurve >& xRegressionCurve ) { + OUString aResult = getRegressionCurveSpecificName(xRegressionCurve); + if (aResult.isEmpty()) + { + aResult = getRegressionCurveGenericName(xRegressionCurve); + if (!aResult.isEmpty()) + { + aResult += " (%SERIESNAME)"; + } + } + return aResult; +} + +OUString RegressionCurveHelper::getRegressionCurveGenericName(const Reference< XRegressionCurve >& xRegressionCurve) +{ OUString aResult; + if(!xRegressionCurve.is()) + return aResult; + Reference< lang::XServiceName > xServiceName( xRegressionCurve, uno::UNO_QUERY ); if(!xServiceName.is()) return aResult; - Reference<XPropertySet> xProperties( xRegressionCurve, uno::UNO_QUERY ); - if( xProperties.is() ) - { - OUString aValue = OUString(); - if(xProperties->getPropertyValue("CurveName") >>= aValue) - { - if (!aValue.isEmpty()) - return aValue; - } - } + OUString aServiceName(xServiceName->getServiceName()); - // Did not get the curve name - OUString aServiceName( xServiceName->getServiceName()); if( aServiceName == "com.sun.star.chart2.MeanValueRegressionCurve" ) { aResult = SCH_RESSTR(STR_REGRESSION_MEAN); @@ -655,7 +662,30 @@ OUString RegressionCurveHelper::getUINameForRegressionCurve( const Reference< XR { aResult = SCH_RESSTR(STR_REGRESSION_MOVING_AVERAGE); } + return aResult; +} + +OUString RegressionCurveHelper::getRegressionCurveSpecificName(const Reference< XRegressionCurve >& xRegressionCurve) +{ + OUString aResult; + + if(!xRegressionCurve.is()) + return aResult; + Reference<XPropertySet> xProperties( xRegressionCurve, uno::UNO_QUERY ); + if(!xProperties.is()) + return aResult; + + xProperties->getPropertyValue("CurveName") >>= aResult; + + return aResult; +} + +OUString RegressionCurveHelper::getRegressionCurveName( const Reference< XRegressionCurve >& xRegressionCurve ) +{ + OUString aResult = getRegressionCurveSpecificName(xRegressionCurve); + if (aResult.isEmpty()) + return getRegressionCurveGenericName(xRegressionCurve); return aResult; } commit 211a1a52d3bedecff07b095884a49869e9dbaf5a Author: Tomaž Vajngerl <qui...@gmail.com> Date: Mon Dec 9 21:18:12 2013 +0100 Display correct equation with multiple trendlines in chart. When there were multiple trendlines for one data series and one was selected, always the equation and R^2 of the first trendline was displayed in status bar. Change-Id: I320261e129c51bbdd1228173ca2f1d8447fdcb89 diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx index 81146d3..648a6c7 100644 --- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx +++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx @@ -552,9 +552,11 @@ OUString ObjectNameProvider::getHelpText( const OUString& rObjectCID, const Refe aRet = SCH_RESSTR( STR_OBJECT_CURVE_WITH_PARAMETERS ); Reference< chart2::XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel )); Reference< chart2::XRegressionCurveContainer > xCurveCnt( xSeries, uno::UNO_QUERY ); + if( xCurveCnt.is()) { - Reference< chart2::XRegressionCurve > xCurve( RegressionCurveHelper::getFirstCurveNotMeanValueLine( xCurveCnt )); + sal_Int32 nCurveIndex = ObjectIdentifier::getIndexFromParticleOrCID( rObjectCID ); + Reference< chart2::XRegressionCurve > xCurve( RegressionCurveHelper::getRegressionCurveAtIndex(xCurveCnt, nCurveIndex) ); if( xCurve.is()) { try diff --git a/chart2/source/inc/RegressionCurveHelper.hxx b/chart2/source/inc/RegressionCurveHelper.hxx index dd6c8b7..f9637e2 100644 --- a/chart2/source/inc/RegressionCurveHelper.hxx +++ b/chart2/source/inc/RegressionCurveHelper.hxx @@ -104,6 +104,13 @@ public: const com::sun::star::uno::Reference< com::sun::star::chart2::XRegressionCurveContainer >& xCurveContainer ); + /** Returns the regression curve found at the index provided. + */ + static com::sun::star::uno::Reference<com::sun::star::chart2::XRegressionCurve > + getRegressionCurveAtIndex( + const com::sun::star::uno::Reference<com::sun::star::chart2::XRegressionCurveContainer >& xCurveContainer, + sal_Int32 aIndex); + /** Returns the type of the first regression curve found that is not of type mean-value line */ diff --git a/chart2/source/tools/RegressionCurveHelper.cxx b/chart2/source/tools/RegressionCurveHelper.cxx index a19affd..e7a5d5c 100644 --- a/chart2/source/tools/RegressionCurveHelper.cxx +++ b/chart2/source/tools/RegressionCurveHelper.cxx @@ -509,6 +509,30 @@ uno::Reference< chart2::XRegressionCurve > RegressionCurveHelper::getFirstCurveN return NULL; } +uno::Reference< chart2::XRegressionCurve > RegressionCurveHelper::getRegressionCurveAtIndex( + const Reference< XRegressionCurveContainer >& xCurveContainer, + sal_Int32 aIndex ) +{ + if( !xCurveContainer.is()) + return NULL; + + try + { + uno::Sequence< uno::Reference< chart2::XRegressionCurve > > aCurves(xCurveContainer->getRegressionCurves()); + if(0 <= aIndex && aIndex < aCurves.getLength()) + { + if(!isMeanValueLine(aCurves[aIndex])) + return aCurves[aIndex]; + } + } + catch( const Exception & ex ) + { + ASSERT_EXCEPTION( ex ); + } + + return NULL; +} + RegressionCurveHelper::tRegressionType RegressionCurveHelper::getRegressionType( const Reference< XRegressionCurve > & xCurve ) {
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits