Kaydet (Commit) 855d5e3b authored tarafından Armin Le Grand's avatar Armin Le Grand

i120559 Corrected load for charts without RangeString bu twith local row-oriented data

üst 335891f6
...@@ -75,8 +75,13 @@ class InternalDataProvider : ...@@ -75,8 +75,13 @@ class InternalDataProvider :
{ {
public: public:
explicit InternalDataProvider(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & _xContext); explicit InternalDataProvider(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & _xContext);
explicit InternalDataProvider( const ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XChartDocument > & xChartDoc, bool bConnectToModel ); // #120559# allow handing over a default for data orientation (DataInColumns) that will
// be used when no data is available
explicit InternalDataProvider(
const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > & xChartDoc,
bool bConnectToModel,
bool bDefaultDataInColumns );
explicit InternalDataProvider( const InternalDataProvider & rOther ); explicit InternalDataProvider( const InternalDataProvider & rOther );
virtual ~InternalDataProvider(); virtual ~InternalDataProvider();
......
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
// header for define DBG_ASSERT // header for define DBG_ASSERT
#include <tools/debug.hxx> #include <tools/debug.hxx>
#include <com/sun/star/chart/XChartDocument.hpp>
#include <com/sun/star/chart/ChartDataRowSource.hpp>
//............................................................................. //.............................................................................
namespace chart namespace chart
{ {
...@@ -59,7 +62,35 @@ uno::Reference< chart2::data::XRangeHighlighter > ChartModelHelper::createRangeH ...@@ -59,7 +62,35 @@ uno::Reference< chart2::data::XRangeHighlighter > ChartModelHelper::createRangeH
uno::Reference< chart2::data::XDataProvider > ChartModelHelper::createInternalDataProvider( uno::Reference< chart2::data::XDataProvider > ChartModelHelper::createInternalDataProvider(
const uno::Reference< ::com::sun::star::chart2::XChartDocument >& xChartDoc, bool bConnectToModel ) const uno::Reference< ::com::sun::star::chart2::XChartDocument >& xChartDoc, bool bConnectToModel )
{ {
return new InternalDataProvider( xChartDoc, bConnectToModel ); bool bDefaultDataInColumns(true);
// #120559# Try to access the current state of "DataRowSource" fo rthe chart data and
// use it as default for creating a new InternalDataProvider
if(xChartDoc.is())
{
::com::sun::star::uno::Reference< ::com::sun::star::chart::XChartDocument > xDoc(xChartDoc, uno::UNO_QUERY);
if(xDoc.is())
{
::com::sun::star::uno::Reference< ::com::sun::star::chart::XDiagram > aDiagram = xDoc->getDiagram();
if(aDiagram.is())
{
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xProp(aDiagram, uno::UNO_QUERY);
if(xProp.is())
{
::com::sun::star::chart::ChartDataRowSource aDataRowSource(::com::sun::star::chart::ChartDataRowSource_COLUMNS);
xProp->getPropertyValue( ::rtl::OUString::createFromAscii("DataRowSource")) >>= aDataRowSource;
bDefaultDataInColumns = (::com::sun::star::chart::ChartDataRowSource_COLUMNS == aDataRowSource);
}
}
}
}
return new InternalDataProvider( xChartDoc, bConnectToModel, bDefaultDataInColumns );
} }
uno::Reference< XDiagram > ChartModelHelper::findDiagram( const uno::Reference< frame::XModel >& xModel ) uno::Reference< XDiagram > ChartModelHelper::findDiagram( const uno::Reference< frame::XModel >& xModel )
......
...@@ -337,8 +337,11 @@ InternalDataProvider::InternalDataProvider( const Reference< uno::XComponentCont ...@@ -337,8 +337,11 @@ InternalDataProvider::InternalDataProvider( const Reference< uno::XComponentCont
: m_bDataInColumns( true ) : m_bDataInColumns( true )
{} {}
InternalDataProvider::InternalDataProvider( const Reference< chart2::XChartDocument > & xChartDoc, bool bConnectToModel ) InternalDataProvider::InternalDataProvider(
: m_bDataInColumns( true ) const Reference< chart2::XChartDocument > & xChartDoc,
bool bConnectToModel,
bool bDefaultDataInColumns)
: m_bDataInColumns( bDefaultDataInColumns )
{ {
try try
{ {
...@@ -353,7 +356,15 @@ InternalDataProvider::InternalDataProvider( const Reference< chart2::XChartDocum ...@@ -353,7 +356,15 @@ InternalDataProvider::InternalDataProvider( const Reference< chart2::XChartDocum
bool bFirstCellAsLabel = true; bool bFirstCellAsLabel = true;
bool bHasCategories = true; bool bHasCategories = true;
uno::Sequence< sal_Int32 > aSequenceMapping; uno::Sequence< sal_Int32 > aSequenceMapping;
DataSourceHelper::detectRangeSegmentation( xChartModel, aRangeString, aSequenceMapping, m_bDataInColumns, bFirstCellAsLabel, bHasCategories ); const bool bSomethingDetected(
DataSourceHelper::detectRangeSegmentation(
xChartModel, aRangeString, aSequenceMapping, m_bDataInColumns, bFirstCellAsLabel, bHasCategories ));
// #120559# if no data was available, restore default
if(!bSomethingDetected && m_bDataInColumns != bDefaultDataInColumns)
{
m_bDataInColumns = bDefaultDataInColumns;
}
} }
// categories // categories
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment