summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2017-01-30 22:01:45 -0500
committerKohei Yoshida <libreoffice@kohei.us>2017-02-02 05:01:53 +0000
commit42e472b5870278058537d43d03d457dc80b16166 (patch)
tree68f9c7526463dc004f58a5c9a3bc81547b2b233f
parent5f33745c1d6750126e53a02b2a95355a3e5b16a0 (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>
-rw-r--r--sc/source/core/data/table3.cxx29
1 files changed, 14 insertions, 15 deletions
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index 64c082b1fc61..17cc5b3872fa 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
{