diff options
author | Lionel Elie Mamane <lionel@mamane.lu> | 2013-08-30 17:59:33 +0200 |
---|---|---|
committer | Lionel Elie Mamane <lionel@mamane.lu> | 2013-08-30 18:36:52 +0200 |
commit | 2a0b2d9371b47689d34fc238c73ebc1126cba5b1 (patch) | |
tree | d31c892d54f2f1e730df9a18f1fe0cf66ab90ff9 /reportdesign | |
parent | 6d4c69ff8446184ac725713b8b53a66f0ee56701 (diff) |
fdo#68663 open chart-in-report: actually test for categories presence
Change-Id: Icf8c8c1f3b1443bf051b3834f6407996e4ef2bfb
Diffstat (limited to 'reportdesign')
-rw-r--r-- | reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx b/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx index e75591fbdd55..65cbca5e25ab 100644 --- a/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx +++ b/reportdesign/source/filter/xml/xmlImportDocumentHandler.cxx @@ -21,6 +21,7 @@ #include <com/sun/star/sdb/CommandType.hpp> #include <com/sun/star/chart2/data/DatabaseDataProvider.hpp> #include <com/sun/star/chart2/data/XDataReceiver.hpp> +#include <com/sun/star/chart2/data/XDataSource.hpp> #include <com/sun/star/chart/XComplexDescriptionAccess.hpp> #include <com/sun/star/chart/ChartDataRowSource.hpp> #include <com/sun/star/reflection/ProxyFactory.hpp> @@ -118,10 +119,35 @@ void SAL_CALL ImportDocumentHandler::endDocument() throw (uno::RuntimeException, // this fills the chart again ::comphelper::NamedValueCollection aArgs; aArgs.put( "CellRangeRepresentation", OUString("all") ); - aArgs.put( "HasCategories", uno::makeAny( sal_True ) ); aArgs.put( "FirstCellAsLabel", uno::makeAny( sal_True ) ); aArgs.put( "DataRowSource", uno::makeAny( chart::ChartDataRowSource_COLUMNS ) ); + sal_Bool bHasCategories = sal_False; + + uno::Reference< chart2::data::XDataSource > xDataSource(m_xModel, uno::UNO_QUERY); + if( xDataSource.is()) + { + uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aSequences(xDataSource->getDataSequences()); + const sal_Int32 nCount( aSequences.getLength()); + for( sal_Int32 nIdx=0; nIdx<nCount; ++nIdx ) + { + if( aSequences[nIdx].is() ) + { + uno::Reference< beans::XPropertySet > xSeqProp( aSequences[nIdx]->getValues(), uno::UNO_QUERY ); + OUString aRole; + if ( xSeqProp.is() + && ( xSeqProp->getPropertyValue( "Role" ) >>= aRole ) + && aRole == "categories" + ) + { + bHasCategories = sal_True; + break; + } + } + } + } + aArgs.put( "HasCategories", uno::makeAny( bHasCategories ) ); + uno::Reference< chart::XComplexDescriptionAccess > xDataProvider(m_xModel->getDataProvider(),uno::UNO_QUERY); if ( xDataProvider.is() ) { |