diff options
author | Eike Rathke <erack@redhat.com> | 2016-06-06 19:29:18 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2016-06-06 20:22:12 +0000 |
commit | f88f6bcfce233c336c9025d466c5c2fb0b671de3 (patch) | |
tree | 4985b09359bd5474ba95d2d9962af894ea2d5ed5 /sc/source/core/data/dptabres.cxx | |
parent | 82f93bff42c0ce3b138ca61040c964f42632d000 (diff) |
Resolves: tdf#35247 introduce a locale independent numeric field filter
... that tries to match a locale independent query string.
Going via string queries is likely only necessary for the ugly
alternative "fieldname[member]" syntax, if it is actually unnecessary
for the field1,item1,... syntax needs to be evaluated and if so a
distinct GetPivotData() function evaluating numeric contraints as well
could be introduced.
Change-Id: I2c1fc81c1022b0bba5eef8d86c0c815bb6e31f2d
Reviewed-on: https://gerrit.libreoffice.org/25975
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc/source/core/data/dptabres.cxx')
-rw-r--r-- | sc/source/core/data/dptabres.cxx | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sc/source/core/data/dptabres.cxx b/sc/source/core/data/dptabres.cxx index 136a5b69779c..af5ad122efd8 100644 --- a/sc/source/core/data/dptabres.cxx +++ b/sc/source/core/data/dptabres.cxx @@ -110,9 +110,10 @@ public: mrFilters.push_back(ScDPResultFilter(rName, bDataLayout)); } - void pushDimValue(const OUString& rValue) + void pushDimValue(const OUString& rValueName, const OUString& rValue) { ScDPResultFilter& rFilter = mrFilters.back(); + rFilter.maValueName = rValueName; rFilter.maValue = rValue; rFilter.mbHasValue = true; } @@ -953,12 +954,12 @@ OUString ScDPResultMember::GetName() const { const ScDPMember* pMemberDesc = GetDPMember(); if (pMemberDesc) - return pMemberDesc->GetNameStr(); + return pMemberDesc->GetNameStr( false ); else return ScGlobal::GetRscString(STR_PIVOT_TOTAL); // root member } -OUString ScDPResultMember::GetDisplayName() const +OUString ScDPResultMember::GetDisplayName( bool bLocaleIndependent ) const { const ScDPMember* pDPMember = GetDPMember(); if (!pDPMember) @@ -969,7 +970,7 @@ OUString ScDPResultMember::GetDisplayName() const if (aParentDimData.mpParentDim) { long nDim = aParentDimData.mpParentDim->GetDimension(); - return pResultData->GetSource().GetData()->GetFormattedString(nDim, aItem); + return pResultData->GetSource().GetData()->GetFormattedString(nDim, aItem, bLocaleIndependent); } return aItem.GetString(); @@ -1324,7 +1325,7 @@ void ScDPResultMember::FillMemberResults( if (aParentDimData.mpParentDim) { long nDim = aParentDimData.mpParentDim->GetDimension(); - aName = pResultData->GetSource().GetData()->GetFormattedString(nDim, aItemData); + aName = pResultData->GetSource().GetData()->GetFormattedString(nDim, aItemData, false); } else { @@ -1332,7 +1333,7 @@ void ScDPResultMember::FillMemberResults( const ScDPMember* pMem = GetDPMember(); if (pMem) nDim = pMem->GetDim(); - aName = pResultData->GetSource().GetData()->GetFormattedString(nDim, aItemData); + aName = pResultData->GetSource().GetData()->GetFormattedString(nDim, aItemData, false); } ScDPItemData::Type eType = aItemData.GetType(); @@ -1511,9 +1512,8 @@ void ScDPResultMember::FillDataResults( if (pDPMember) { // Root result has no corresponding DP member. Only take the non-root results. - OUString aMemStr = GetDisplayName(); pFilterStack.reset(new FilterStack(rFilterCxt.maFilters)); - pFilterStack->pushDimValue(aMemStr); + pFilterStack->pushDimValue( GetDisplayName( false), GetDisplayName( true)); } // IsVisible() test is in ScDPResultDimension::FillDataResults @@ -2017,7 +2017,7 @@ void ScDPDataMember::FillDataRow( // since its immediate parent result member is linked to the same // dimension member. pFilterStack.reset(new FilterStack(rFilterCxt.maFilters)); - pFilterStack->pushDimValue(pResultMember->GetDisplayName()); + pFilterStack->pushDimValue( pResultMember->GetDisplayName( false), pResultMember->GetDisplayName( true)); } OSL_ENSURE( pRefMember == pResultMember || !pResultMember, "bla" ); |