[Libreoffice-commits] core.git: sc/source
Kohei Yoshida
kohei.yoshida at collabora.com
Thu Feb 2 05:02:33 UTC 2017
sc/source/core/data/table3.cxx | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
New commits:
commit 42e472b5870278058537d43d03d457dc80b16166
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Jan 30 22:01:45 2017 -0500
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 at libreoffice.org>
Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index 64c082b..17cc5b3 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -2888,26 +2888,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);
@@ -3272,12 +3261,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
{
More information about the Libreoffice-commits
mailing list