summaryrefslogtreecommitdiff
path: root/reportdesign
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2013-08-30 17:59:33 +0200
committerLionel Elie Mamane <lionel@mamane.lu>2013-08-30 18:36:52 +0200
commit2a0b2d9371b47689d34fc238c73ebc1126cba5b1 (patch)
treed31c892d54f2f1e730df9a18f1fe0cf66ab90ff9 /reportdesign
parent6d4c69ff8446184ac725713b8b53a66f0ee56701 (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.cxx28
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() )
{