summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-01-07 22:13:07 -0500
committerEike Rathke <erack@redhat.com>2014-01-08 13:29:06 +0000
commit06a5bad8e1feb1972059d4f9c4d89eb59ae43ae2 (patch)
tree9f99880a187ffbc3d5c162d86781aff8b35d048b
parent8308f6e5f50bcdd5cd4e5511a8a3bd5c64c93e2b (diff)
fdo#72774: Generate correct group items for the year group.
This changes bring it back to the same algorithm used in 3.5. Change-Id: I16855cef1de133a1f886baa823d5b0d2b148e781 (cherry picked from commit c2e88a32314012afb799e321ec1d658f99f71781) Reviewed-on: https://gerrit.libreoffice.org/7305 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
-rw-r--r--sc/inc/dputil.hxx2
-rw-r--r--sc/source/core/data/dpdimsave.cxx4
-rw-r--r--sc/source/core/data/dpgroup.cxx2
-rw-r--r--sc/source/core/data/dputil.cxx13
4 files changed, 12 insertions, 9 deletions
diff --git a/sc/inc/dputil.hxx b/sc/inc/dputil.hxx
index e4ed831c2713..9568e9591ab4 100644
--- a/sc/inc/dputil.hxx
+++ b/sc/inc/dputil.hxx
@@ -45,7 +45,7 @@ public:
SvNumberFormatter* pFormatter);
static sal_Int32 getDatePartValue(
- double fValue, const ScDPNumGroupInfo& rInfo, sal_Int32 nDatePart,
+ double fValue, const ScDPNumGroupInfo* pInfo, sal_Int32 nDatePart,
SvNumberFormatter* pFormatter);
static OUString getDisplayedMeasureName(const OUString& rName, ScSubTotalFunc eFunc);
diff --git a/sc/source/core/data/dpdimsave.cxx b/sc/source/core/data/dpdimsave.cxx
index d200971d50ab..3f51268c91ff 100644
--- a/sc/source/core/data/dpdimsave.cxx
+++ b/sc/source/core/data/dpdimsave.cxx
@@ -337,8 +337,8 @@ void fillDateGroupDimension(
{
case sheet::DataPilotFieldGroupBy::YEARS:
nStart = ScDPUtil::getDatePartValue(
- fSourceMin, rDateInfo, sheet::DataPilotFieldGroupBy::YEARS, pFormatter);
- nEnd = ScDPUtil::getDatePartValue(fSourceMax, rDateInfo, sheet::DataPilotFieldGroupBy::YEARS, pFormatter);
+ fSourceMin, NULL, sheet::DataPilotFieldGroupBy::YEARS, pFormatter);
+ nEnd = ScDPUtil::getDatePartValue(fSourceMax, NULL, sheet::DataPilotFieldGroupBy::YEARS, pFormatter);
break;
case sheet::DataPilotFieldGroupBy::QUARTERS: nStart = 1; nEnd = 4; break;
case sheet::DataPilotFieldGroupBy::MONTHS: nStart = 1; nEnd = 12; break;
diff --git a/sc/source/core/data/dpgroup.cxx b/sc/source/core/data/dpgroup.cxx
index f79a7403e5f0..e5da7993859c 100644
--- a/sc/source/core/data/dpgroup.cxx
+++ b/sc/source/core/data/dpgroup.cxx
@@ -911,7 +911,7 @@ void ScDPGroupTableData::FillGroupValues(vector<SCROW>& rItems, const vector<lon
{
SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
sal_Int32 nPartValue = ScDPUtil::getDatePartValue(
- pData->GetValue(), *pNumInfo, nDatePart, pFormatter);
+ pData->GetValue(), pNumInfo, nDatePart, pFormatter);
ScDPItemData aItem(nDatePart, nPartValue);
rItems[i] = pCache->GetIdByItemData(nColumn, aItem);
diff --git a/sc/source/core/data/dputil.cxx b/sc/source/core/data/dputil.cxx
index e21b2a86bbef..03f585c9308a 100644
--- a/sc/source/core/data/dputil.cxx
+++ b/sc/source/core/data/dputil.cxx
@@ -290,16 +290,19 @@ OUString ScDPUtil::getNumGroupName(
}
sal_Int32 ScDPUtil::getDatePartValue(
- double fValue, const ScDPNumGroupInfo& rInfo, sal_Int32 nDatePart,
+ double fValue, const ScDPNumGroupInfo* pInfo, sal_Int32 nDatePart,
SvNumberFormatter* pFormatter)
{
// Start and end are inclusive
// (End date without a time value is included, with a time value it's not)
- if (fValue < rInfo.mfStart && !rtl::math::approxEqual(fValue, rInfo.mfStart))
- return ScDPItemData::DateFirst;
- if (fValue > rInfo.mfEnd && !rtl::math::approxEqual(fValue, rInfo.mfEnd))
- return ScDPItemData::DateLast;
+ if (pInfo)
+ {
+ if (fValue < pInfo->mfStart && !rtl::math::approxEqual(fValue, pInfo->mfStart))
+ return ScDPItemData::DateFirst;
+ if (fValue > pInfo->mfEnd && !rtl::math::approxEqual(fValue, pInfo->mfEnd))
+ return ScDPItemData::DateLast;
+ }
sal_Int32 nResult = 0;