[Libreoffice-commits] .: Branch 'feature/dp-named-range-source' - sc/inc sc/source
Kohei Yoshida
kohei at kemper.freedesktop.org
Thu Jan 20 18:21:36 PST 2011
sc/inc/dpshttab.hxx | 30 ++++++++++++++-------
sc/source/core/data/dpshttab.cxx | 40 +++++++++++++++++++++++++++-
sc/source/filter/xml/XMLExportDataPilot.cxx | 2 -
sc/source/filter/xml/xmldpimp.cxx | 2 -
sc/source/ui/unoobj/datauno.cxx | 4 +-
sc/source/ui/view/gridwin2.cxx | 4 +-
sc/source/ui/view/pivotsh.cxx | 4 +-
7 files changed, 68 insertions(+), 18 deletions(-)
New commits:
commit 8f7e6f23f63355e3180bfef14e604fd57e33cc64
Author: Kohei Yoshida <kyoshida at novell.com>
Date: Thu Jan 20 20:22:52 2011 -0500
Added range name as a data member to ScSheetSourceDesc.
Also added accessor methods for all its data members. I'll properly
encapsulate them later.
diff --git a/sc/inc/dpshttab.hxx b/sc/inc/dpshttab.hxx
index 7979472..105a237 100644
--- a/sc/inc/dpshttab.hxx
+++ b/sc/inc/dpshttab.hxx
@@ -44,19 +44,31 @@ namespace com { namespace sun { namespace star { namespace sheet {
class ScDPDimension;
class ScDPItemData;
+/**
+ * This class contains authoritative information on the internal reference
+ * used as the data source for datapilot table. <i>The range name takes
+ * precedence over the source range when it's non-empty.</i> When the range
+ * name is empty, the source range gets used.
+ */
struct ScSheetSourceDesc
{
- ScRange aSourceRange;
- ScQueryParam aQueryParam;
-
- BOOL operator== ( const ScSheetSourceDesc& rOther ) const
- { return aSourceRange == rOther.aSourceRange &&
- aQueryParam == rOther.aQueryParam; }
+ ScRange aSourceRange;
+ ::rtl::OUString maRangeName;
+ ScQueryParam aQueryParam;
+
+ void SetSourceRange(const ScRange& rRange);
+ const ScRange& GetSourceRange() const;
+ void SetRangeName(const ::rtl::OUString& rName);
+ const ::rtl::OUString& GetRangeName() const;
+ void SetQueryParam(const ScQueryParam& rParam);
+ const ScQueryParam& GetQueryParam() const;
+
+ bool operator== ( const ScSheetSourceDesc& rOther ) const;
ScDPTableDataCache* CreateCache( ScDocument* pDoc, long nID = -1) const;
- ULONG CheckValidate( ScDocument* pDoc ) const;
+ ULONG CheckValidate( ScDocument* pDoc ) const;
ScDPTableDataCache* GetCache( ScDocument* pDoc, long nID ) const;
- ScDPTableDataCache* GetExistDPObjectCache ( ScDocument* pDoc ) const;
- long GetCacheId( ScDocument* pDoc, long nID ) const;
+ ScDPTableDataCache* GetExistDPObjectCache ( ScDocument* pDoc ) const;
+ long GetCacheId( ScDocument* pDoc, long nID ) const;
};
// --------------------------------------------------------------------
diff --git a/sc/source/core/data/dpshttab.cxx b/sc/source/core/data/dpshttab.cxx
index 20e4346..0e9a57e 100644
--- a/sc/source/core/data/dpshttab.cxx
+++ b/sc/source/core/data/dpshttab.cxx
@@ -53,6 +53,7 @@
using namespace ::com::sun::star;
using ::com::sun::star::uno::Any;
using ::com::sun::star::uno::Sequence;
+using ::rtl::OUString;
using ::std::vector;
using ::std::hash_map;
using ::std::hash_set;
@@ -61,7 +62,7 @@ using ::std::hash_set;
ScSheetDPData::ScSheetDPData( ScDocument* pD, const ScSheetSourceDesc& rDesc , long nCacheId) :
ScDPTableData(pD, rDesc.GetCacheId( pD, nCacheId) ), // DataPilot Migration - Cache&&Performance
- aQuery ( rDesc.aQueryParam ),
+ aQuery ( rDesc.GetQueryParam() ),
pSpecial(NULL),
bIgnoreEmptyRows( FALSE ),
bRepeatIfEmpty(FALSE),
@@ -232,6 +233,43 @@ const ScDPCacheTable& ScSheetDPData::GetCacheTable() const
return aCacheTable;
}
+void ScSheetSourceDesc::SetSourceRange(const ScRange& rRange)
+{
+ aSourceRange = rRange;
+ maRangeName = OUString(); // overwrite existing range name if any.
+}
+
+const ScRange& ScSheetSourceDesc::GetSourceRange() const
+{
+ return aSourceRange;
+}
+
+void ScSheetSourceDesc::SetRangeName(const OUString& rName)
+{
+ maRangeName = rName;
+}
+
+const OUString& ScSheetSourceDesc::GetRangeName() const
+{
+ return maRangeName;
+}
+
+void ScSheetSourceDesc::SetQueryParam(const ScQueryParam& rParam)
+{
+ aQueryParam = rParam;
+}
+
+const ScQueryParam& ScSheetSourceDesc::GetQueryParam() const
+{
+ return aQueryParam;
+}
+
+bool ScSheetSourceDesc::operator== (const ScSheetSourceDesc& rOther) const
+{
+ return aSourceRange == rOther.aSourceRange &&
+ maRangeName == rOther.maRangeName &&
+ aQueryParam == rOther.aQueryParam;
+}
ScDPTableDataCache* ScSheetSourceDesc::CreateCache( ScDocument* pDoc , long nID ) const
{
diff --git a/sc/source/filter/xml/XMLExportDataPilot.cxx b/sc/source/filter/xml/XMLExportDataPilot.cxx
index 1bcfa37..42f0e31 100644
--- a/sc/source/filter/xml/XMLExportDataPilot.cxx
+++ b/sc/source/filter/xml/XMLExportDataPilot.cxx
@@ -845,7 +845,7 @@ void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreads
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CELL_RANGE_ADDRESS, sCellRangeAddress);
SvXMLElementExport aElemSCR(rExport, XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE, sal_True, sal_True);
rExport.CheckAttrList();
- WriteDPFilter(pSheetSource->aQueryParam);
+ WriteDPFilter(pSheetSource->GetQueryParam());
}
else if ((*pDPs)[i]->IsImportData())
{
diff --git a/sc/source/filter/xml/xmldpimp.cxx b/sc/source/filter/xml/xmldpimp.cxx
index d515637..774e622 100644
--- a/sc/source/filter/xml/xmldpimp.cxx
+++ b/sc/source/filter/xml/xmldpimp.cxx
@@ -447,7 +447,7 @@ void ScXMLDataPilotTableContext::EndElement()
{
ScSheetSourceDesc aSheetDesc;
aSheetDesc.aSourceRange = aSourceCellRangeAddress;
- aSheetDesc.aQueryParam = aSourceQueryParam;
+ aSheetDesc.SetQueryParam(aSourceQueryParam);
pDPObject->SetSheetDesc(aSheetDesc);
}
}
diff --git a/sc/source/ui/unoobj/datauno.cxx b/sc/source/ui/unoobj/datauno.cxx
index da7632b..7d95014 100644
--- a/sc/source/ui/unoobj/datauno.cxx
+++ b/sc/source/ui/unoobj/datauno.cxx
@@ -1588,7 +1588,7 @@ void ScDataPilotFilterDescriptor::GetData( ScQueryParam& rParam ) const
{
ScDPObject* pDPObj = pParent->GetDPObject();
if (pDPObj && pDPObj->IsSheetData())
- rParam = pDPObj->GetSheetDesc()->aQueryParam;
+ rParam = pDPObj->GetSheetDesc()->GetQueryParam();
}
}
@@ -1602,7 +1602,7 @@ void ScDataPilotFilterDescriptor::PutData( const ScQueryParam& rParam )
ScSheetSourceDesc aSheetDesc;
if (pDPObj->IsSheetData())
aSheetDesc = *pDPObj->GetSheetDesc();
- aSheetDesc.aQueryParam = rParam;
+ aSheetDesc.SetQueryParam(rParam);
pDPObj->SetSheetDesc(aSheetDesc);
pParent->SetDPObject(pDPObj);
}
diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx
index d09910f..1c018e2 100644
--- a/sc/source/ui/view/gridwin2.cxx
+++ b/sc/source/ui/view/gridwin2.cxx
@@ -210,7 +210,7 @@ void ScGridWindow::DoPushButton( SCCOL nCol, SCROW nRow, const MouseEvent& rMEvt
DBG_ASSERT(pDesc, "no sheet source for filter button");
if (pDesc)
{
- aQueryParam = pDesc->aQueryParam;
+ aQueryParam = pDesc->GetQueryParam();
nSrcTab = pDesc->aSourceRange.aStart.Tab();
}
@@ -232,7 +232,7 @@ void ScGridWindow::DoPushButton( SCCOL nCol, SCROW nRow, const MouseEvent& rMEvt
aNewDesc = *pDesc;
const ScQueryItem& rQueryItem = pDlg->GetOutputItem();
- aNewDesc.aQueryParam = rQueryItem.GetQueryData();
+ aNewDesc.SetQueryParam(rQueryItem.GetQueryData());
ScDPObject aNewObj( *pDPObj );
aNewObj.SetSheetDesc( aNewDesc );
diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx
index 00600cf..9381b3a 100644
--- a/sc/source/ui/view/pivotsh.cxx
+++ b/sc/source/ui/view/pivotsh.cxx
@@ -115,7 +115,7 @@ void ScPivotShell::Execute( SfxRequest& rReq )
DBG_ASSERT( pDesc, "no sheet source for DP filter dialog" );
if( pDesc )
{
- aQueryParam = pDesc->aQueryParam;
+ aQueryParam = pDesc->GetQueryParam();
nSrcTab = pDesc->aSourceRange.aStart.Tab();
}
@@ -139,7 +139,7 @@ void ScPivotShell::Execute( SfxRequest& rReq )
aNewDesc = *pDesc;
const ScQueryItem& rQueryItem = pDlg->GetOutputItem();
- aNewDesc.aQueryParam = rQueryItem.GetQueryData();
+ aNewDesc.SetQueryParam(rQueryItem.GetQueryData());
ScDPObject aNewObj( *pDPObj );
aNewObj.SetSheetDesc( aNewDesc );
More information about the Libreoffice-commits
mailing list