summaryrefslogtreecommitdiffstats
path: root/sc/inc/dpobject.hxx
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2012-03-14 00:31:56 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2012-03-14 00:35:29 -0400
commit49d3e30ec975a348b7b3d82c37137eb8ff6bb52e (patch)
tree24406babfbffc1700442367369ddb6684e9eb758 /sc/inc/dpobject.hxx
parentRe-added ClearSource() which will only clear the source. Nothing else. (diff)
downloadcore-49d3e30ec975a348b7b3d82c37137eb8ff6bb52e.tar.gz
core-49d3e30ec975a348b7b3d82c37137eb8ff6bb52e.zip
When changing grouping in one pivot table, update all linked tables.
We need to do this now because we now store the group field data directly in the pivot cache, which is shared by all referencing tables. Also, actions involving modification of the cache is not undoable, and making it undoable would significantly increase Calc's runtime memory footprint. So, no way.
Diffstat (limited to 'sc/inc/dpobject.hxx')
-rw-r--r--sc/inc/dpobject.hxx9
1 files changed, 9 insertions, 0 deletions
diff --git a/sc/inc/dpobject.hxx b/sc/inc/dpobject.hxx
index 5b16b599ebbc..917759d495bf 100644
--- a/sc/inc/dpobject.hxx
+++ b/sc/inc/dpobject.hxx
@@ -137,6 +137,7 @@ public:
void InvalidateData();
void ClearTableData();
+ void ReloadGroupTableData();
void Output( const ScAddress& rPos );
ScRange GetNewOutputRange( bool& rOverflow );
@@ -286,6 +287,8 @@ public:
UpdateRefMode eMode, const ScRange& r, SCsCOL nDx, SCsROW nDy, SCsTAB nDz);
private:
+ ScDPCache* getExistingCache(const ScRange& rRange);
+
void updateCache(const ScRange& rRange, const ScDPDimensionSaveData* pDimData, std::set<ScDPObject*>& rRefs);
bool remove(const ScDPCache* p);
};
@@ -306,6 +309,8 @@ public:
const ::rtl::OUString& rName, const ScRange& rRange, const ScDPDimensionSaveData* pDimData);
size_t size() const;
private:
+ ScDPCache* getExistingCache(const rtl::OUString& rName);
+
void updateCache(
const rtl::OUString& rName, const ScRange& rRange,
const ScDPDimensionSaveData* pDimData, std::set<ScDPObject*>& rRefs);
@@ -346,6 +351,9 @@ public:
const ScDPDimensionSaveData* pDimData);
private:
+ ScDPCache* getExistingCache(
+ sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand);
+
com::sun::star::uno::Reference<com::sun::star::sdbc::XRowSet> createRowSet(
sal_Int32 nSdbType, const ::rtl::OUString& rDBName, const ::rtl::OUString& rCommand);
@@ -359,6 +367,7 @@ public:
~ScDPCollection();
sal_uLong ReloadCache(ScDPObject* pDPObj, std::set<ScDPObject*>& rRefs);
+ bool ReloadGroupsInCache(ScDPObject* pDPObj, std::set<ScDPObject*>& rRefs);
SC_DLLPUBLIC size_t GetCount() const;
SC_DLLPUBLIC ScDPObject* operator[](size_t nIndex);