void SearchNotesWidget::perform_search() { // For some reason, the matches column must be rebuilt // every time because otherwise, it's not sortable. remove_matches_column(); Search search(m_manager); Glib::ustring text = m_search_text; if(text.empty()) { m_current_matches.clear(); m_store_filter->refilter(); if(m_tree->get_realized()) { m_tree->scroll_to_point (0, 0); } return; } text = text.lowercase(); m_current_matches.clear(); // Search using the currently selected notebook notebooks::Notebook::Ptr selected_notebook = get_selected_notebook(); if(dynamic_pointer_cast<notebooks::SpecialNotebook>(selected_notebook)) { selected_notebook = notebooks::Notebook::Ptr(); } Search::ResultsPtr results = search.search_notes(text, false, selected_notebook); // if no results found in current notebook ask user whether // to search in all notebooks if(results->size() == 0 && selected_notebook != NULL) { no_matches_found_action(); } else { for(Search::Results::const_reverse_iterator iter = results->rbegin(); iter != results->rend(); iter++) { m_current_matches[iter->second->uri()] = iter->first; } add_matches_column(); m_store_filter->refilter(); if(m_tree->get_realized()) { m_tree->scroll_to_point(0, 0); } } }
std::vector< std::string > RemoteControl::SearchNotes(const std::string& query, const bool& case_sensitive) { if (query.empty()) return std::vector< std::string >(); Search search(m_manager); std::vector< std::string > list; Search::ResultsPtr results = search.search_notes(query, case_sensitive, notebooks::Notebook::Ptr()); for(Search::Results::const_reverse_iterator iter = results->rbegin(); iter != results->rend(); iter++) { list.push_back(iter->second->uri()); } return list; }