Resurrect filtering of lists (playlist only for now)

This commit is contained in:
Andrzej Rybczak
2016-11-13 00:21:25 +01:00
parent 60e66b47b6
commit 29b1813c6d
14 changed files with 360 additions and 127 deletions

View File

@@ -31,6 +31,40 @@
#include "utility/type_conversions.h"
#include "utility/wide_string.h"
enum ReapplyFilter { Yes, No };
template <typename ItemT, ReapplyFilter reapplyFilter>
struct ScopedUnfilteredMenu
{
ScopedUnfilteredMenu(NC::Menu<ItemT> &menu)
: m_menu(menu)
{
m_is_filtered = m_menu.isFiltered();
if (m_is_filtered)
m_menu.showAllItems();
}
~ScopedUnfilteredMenu()
{
if (m_is_filtered)
{
switch (reapplyFilter)
{
case ReapplyFilter::Yes:
m_menu.reapplyFilter();
break;
case ReapplyFilter::No:
m_menu.showFilteredItems();
break;
}
}
}
private:
bool m_is_filtered;
NC::Menu<ItemT> &m_menu;
};
template <typename Iterator, typename PredicateT>
Iterator wrappedSearch(Iterator begin, Iterator current, Iterator end,
const PredicateT &pred, bool wrap, bool skip_current)