CustomFilter Example
#ifndef WINDOW_H
#define WINDOW_H
#include <QDate>
#include <DevMachines/QtitanGrid>
#include "DemoMainWindow.h"
class Window : public DemoMainWindow
{
Q_OBJECT
public:
Window();
private Q_SLOTS:
void contextMenu(ContextMenuEventArgs* args);
void applyFilter();
void setShadeColor(const QColor& color) override;
void saveFilter();
void loadFilter();
void focusRowChanged(int oldRowIndex, int rowIndex);
private:
Qtitan::Grid* m_grid;
};
class CustomFilterCondition: public GridFilterCondition {
public:
CustomFilterCondition(GridFilter* filter = Q_NULL);
bool isTrue(const QModelIndex& index) override;
GridFilterCondition* clone() const override;
QString createPresentation() const override;
int conditionCount() const override;
#ifndef QTN_NOUSE_XML_MODULE
bool saveToXML(IXmlStreamWriter *) override;
bool loadFromXML(IXmlStreamReader *) override;
#endif
static QString xml_name;
public:
void addRow(int modelRowIndex);
void removeRow(int modelRowIndex);
private:
QSet<int> m_modelRows;
};
class CustomFilterModel: public QAbstractItemModel
{
Q_OBJECT
public:
CustomFilterModel(QObject *parent = 0);
virtual QVariant headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const;
virtual QModelIndex parent(const QModelIndex &child) const;
virtual bool hasChildren(const QModelIndex &parent) const;
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
virtual Qt::ItemFlags flags(const QModelIndex &index) const;
private:
struct DataItem
{
int v0;
QString v1;
QDate v2;
QTime v3;
DataItem() : v0(0) {}
};
QVector<DataItem> m_values;
};
#endif