Implemented data filtering.

This commit is contained in:
2016-01-17 21:09:28 +01:00
parent d2f391558a
commit ac931e17a9
21 changed files with 695 additions and 21 deletions
+8 -7
View File
@@ -9,14 +9,15 @@
#include "define.h"
#include "core_global.h"
#include "exprevaluator.h"
#include "itablemodel.h"
template<class T>
class AutoTableModel : public QAbstractTableModel
class AutoTableModel : public ITableModel
{
public:
explicit AutoTableModel(QObject *parent = NULL)
:QAbstractTableModel(parent)
:ITableModel(parent)
{
filtered = false;
}
@@ -141,8 +142,8 @@ public:
m_list = list;
}
public slots:
void filter(const QString &filter)
protected:
void handleFilter(const QString &filter) override
{
beginResetModel();
if (!filtered)
@@ -152,13 +153,13 @@ public slots:
}
ExprEvaluator ev;
m_list.clear();
std::copy_if(ALL(m_fullList), m_list.begin(), [&filter, &ev](QSharedPointer<T> obj){ return ev.evaluate((QObject*)obj.pointer, filter); });
auto it = std::copy_if(ALL(m_fullList), m_list.begin(), [&filter, &ev](QSharedPointer<T> obj){ return ev.evaluate((QObject*)obj.data(), filter); });
m_list.erase(it, m_list.end());
endResetModel();
}
void restore()
void handleRestore() override
{
if (filtered)
{