diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-18 16:20:24 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-18 16:20:24 -0500 |
commit | 43cab25e27f944fedae0e19eecd072914817016f (patch) | |
tree | 4bd49e19005e877cfe6c3c342d914c93ec0b28ce /sc/source/ui/view/gridwin.cxx | |
parent | aaad72db3376f236ea49a755c39bac21c53a0704 (diff) |
Get top10, empty and non-empty special queries to work.
Diffstat (limited to 'sc/source/ui/view/gridwin.cxx')
-rw-r--r-- | sc/source/ui/view/gridwin.cxx | 47 |
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); |