test_sdk/core/gtl_selection_data_model.h

72 lines
1.9 KiB
C
Raw Permalink Normal View History

#ifndef GTL_SELELCTION_DATA_MODEL_H
#define GTL_SELELCTION_DATA_MODEL_H
#include <deque>
#include <QIdentityProxyModel>
#include <QDomElement>
#include "core/core_global.h"
#include "core/gtl_analog_data.h"
namespace gtl
{
class selection_list : public QAbstractListModel, public std::deque<gtl::analog_data*>
{
private:
public:
selection_list(QObject* parent = NULL);
virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
void add(data_model_node* node);
void remove(data_model_node* node);
void remove_all();
};
class CORE_EXPORT selection_data_model : public QIdentityProxyModel
{
Q_OBJECT
public:
explicit selection_data_model(QObject *source, int count = 0);
virtual void save(QDomElement& root_element);
virtual void load(const QDomElement& root_element);
void clear();
QAbstractListModel* selection();
void get_selections(std::back_insert_iterator<std::vector<gtl::analog_data*>> ad);
void select(gtl::analog_data* node);
void deselect(gtl::analog_data* node);
protected:
virtual Qt::ItemFlags flags(const QModelIndex &index) const override;
virtual QVariant data(const QModelIndex &index, int role/* = Qt::DisplayRole*/) const override;
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
private:
selection_list* _selection;
int _count;
private:
void add_selection(gtl::data_model_node* node);
private slots:
void deleting_node();
signals:
void selected(gtl::analog_data*);
void deselected(gtl::analog_data*);
};
}
#endif // GTL_SELELCTION_DATA_MODEL_H