diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2017-01-30 22:01:45 -0500 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-02-08 13:34:50 +0000 |
commit | 4b8101530deabf28e439b5892490e58fdf06cccb (patch) | |
tree | 0a897beb61ff3f0ff864254987f0744c91fdb671 | |
parent | 24ed49a2547349634cc8fa2f0f65f52bfc7c3d63 (diff) |
tdf#105629: Let's move the advanced-filter specific stuff ...
to the place where we actually parse the filtering rules for advanced
filter queries.
Change-Id: I87650227e15fa54303efd720530d31ecf9827226
Reviewed-on: https://gerrit.libreoffice.org/33816
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
(cherry picked from commit 42e472b5870278058537d43d03d457dc80b16166)
Reviewed-on: https://gerrit.libreoffice.org/33853
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/source/core/data/table3.cxx | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index 5bf37f7d62c4..afe21d794e5a 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -2839,26 +2839,15 @@ public: void operator() (ScQueryEntry::Item& rItem) { - if (rItem.meType != ScQueryEntry::ByString && rItem.meType != ScQueryEntry::ByDate) + // Double-check if the query by date is really appropriate. + + if (rItem.meType != ScQueryEntry::ByDate) return; sal_uInt32 nIndex = 0; bool bNumber = mrDoc.GetFormatTable()-> IsNumberFormat(rItem.maString.getString(), nIndex, rItem.mfVal); - // Advanced Filter creates only ByString queries that need to be - // converted to ByValue if appropriate. rItem.mfVal now holds the value - // if bNumber==true. - - if (rItem.meType == ScQueryEntry::ByString) - { - if (bNumber) - rItem.meType = ScQueryEntry::ByValue; - return; - } - - // Double-check if the query by date is really appropriate. - if (bNumber && ((nIndex % SV_COUNTRY_LANGUAGE_OFFSET) != 0)) { const SvNumberformat* pEntry = mrDoc.GetFormatTable()->GetEntry(nIndex); @@ -3223,12 +3212,22 @@ bool ScTable::CreateQueryParam(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow if (!bValid) bValid = CreateExcelQuery(nCol1, nRow1, nCol2, nRow2, rQueryParam); + SvNumberFormatter* pFormatter = pDocument->GetFormatTable(); nCount = rQueryParam.GetEntryCount(); + if (bValid) { // bQueryByString must be set for (i=0; i < nCount; i++) - rQueryParam.GetEntry(i).GetQueryItem().meType = ScQueryEntry::ByString; + { + ScQueryEntry::Item& rItem = rQueryParam.GetEntry(i).GetQueryItem(); + + sal_uInt32 nIndex = 0; + bool bNumber = pFormatter->IsNumberFormat( + rItem.maString.getString(), nIndex, rItem.mfVal); + + rItem.meType = bNumber ? ScQueryEntry::ByValue : ScQueryEntry::ByString; + } } else { |