summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2011-11-18 16:20:24 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2011-11-18 16:20:24 -0500
commit43cab25e27f944fedae0e19eecd072914817016f (patch)
tree4bd49e19005e877cfe6c3c342d914c93ec0b28ce
parentaaad72db3376f236ea49a755c39bac21c53a0704 (diff)
Get top10, empty and non-empty special queries to work.
-rw-r--r--sc/source/ui/view/gridwin.cxx47
1 files changed, 35 insertions, 12 deletions
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 884d5c6291cb..cb351dc61fa8 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -757,7 +757,7 @@ void ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode eMode)
ScQueryParam aParam;
pDBData->GetQueryParam(aParam);
- if (mpAutoFilterPopup->isAllSelected())
+ if (eMode == Normal && mpAutoFilterPopup->isAllSelected())
{
// Remove this entry.
aParam.RemoveEntryByField(rPos.Col());
@@ -775,19 +775,42 @@ void ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode eMode)
pEntry->nField = rPos.Col();
pEntry->eConnect = SC_AND;
- ScCheckListMenuWindow::ResultType aResult;
- mpAutoFilterPopup->getResult(aResult);
- std::vector<rtl::OUString> aSelected;
- ScCheckListMenuWindow::ResultType::const_iterator itr = aResult.begin(), itrEnd = aResult.end();
- for (; itr != itrEnd; ++itr)
+ switch (eMode)
{
- if (itr->second)
- aSelected.push_back(itr->first);
- }
+ case Normal:
+ {
+ pEntry->eOp = SC_EQUAL;
+
+ ScCheckListMenuWindow::ResultType aResult;
+ mpAutoFilterPopup->getResult(aResult);
+ std::vector<rtl::OUString> aSelected;
+ ScCheckListMenuWindow::ResultType::const_iterator itr = aResult.begin(), itrEnd = aResult.end();
+ for (; itr != itrEnd; ++itr)
+ {
+ if (itr->second)
+ aSelected.push_back(itr->first);
+ }
- ScQueryEntry::QueryItemsType& rItems = pEntry->GetQueryItems();
- rItems.clear();
- std::for_each(aSelected.begin(), aSelected.end(), AddItemToEntry(rItems));
+ ScQueryEntry::QueryItemsType& rItems = pEntry->GetQueryItems();
+ rItems.clear();
+ std::for_each(aSelected.begin(), aSelected.end(), AddItemToEntry(rItems));
+ }
+ break;
+ case Top10:
+ pEntry->eOp = SC_TOPVAL;
+ pEntry->GetQueryItem().meType = ScQueryEntry::ByString;
+ pEntry->GetQueryItem().maString = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("10"));
+ break;
+ case Empty:
+ pEntry->SetQueryByEmpty();
+ break;
+ case NonEmpty:
+ pEntry->SetQueryByNonEmpty();
+ break;
+ default:
+ // We don't know how to handle this!
+ return;
+ }
}
pViewData->GetView()->Query(aParam, NULL, true);