UI for data filtering.

Icons for plugin grid operations.
This commit is contained in:
2015-12-29 16:09:55 +01:00
parent 94fba56dab
commit d2f391558a
23 changed files with 700 additions and 13 deletions
+32
View File
@@ -8,6 +8,7 @@
#include "define.h"
#include "core_global.h"
#include "exprevaluator.h"
template<class T>
class AutoTableModel : public QAbstractTableModel
@@ -17,6 +18,7 @@ public:
explicit AutoTableModel(QObject *parent = NULL)
:QAbstractTableModel(parent)
{
filtered = false;
}
virtual ~AutoTableModel() {}
@@ -139,8 +141,38 @@ public:
m_list = list;
}
public slots:
void filter(const QString &filter)
{
beginResetModel();
if (!filtered)
{
m_fullList = m_list;
filtered = true;
}
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); });
endResetModel();
}
void restore()
{
if (filtered)
{
beginResetModel();
m_list = m_fullList;
endResetModel();
filtered = false;
}
}
private:
QList<QSharedPointer<T> > m_list;
QList<QSharedPointer<T> > m_fullList;
bool filtered;
};