[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