1
0
Fork 0
OpenLCP/example/sACN Explorer/multiversemodel.h

71 lines
1.7 KiB
C++

#pragma once
#include <QAbstractItemModel>
#include "qsacnuniverse.h"
#include "multiverseitem.h"
class QSacnNode; // forward declare node class
/**
* @brief The MultiverseModel class
*/
class MultiverseModel
: public QAbstractItemModel
{
Q_OBJECT
public:
/// @brief The Catagory enum
enum Catagory {
Discovery,
Receiver,
Source
};
Q_ENUM(Catagory)
/// @brief The Column enum
enum Column {
Universe,
Priority,
Description
};
Q_ENUM(Column)
explicit MultiverseModel(QObject *parent = nullptr,
QSacnNode *node = nullptr);
virtual ~MultiverseModel();
// Model overrides:
QVariant headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const override;
QModelIndex index(int row, int column,
const QModelIndex &parent = QModelIndex()) const override;
QModelIndex parent(const QModelIndex &index) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index,
int role = Qt::DisplayRole) const override;
Qt::ItemFlags flags(const QModelIndex &index) const override;
// non-standard model operations
MultiverseItem * root();
void insert(const QModelIndex &parent,
QSacnUniverse *universe = nullptr,
discoveredUniverse *discovery = nullptr);
QMap<MultiverseModel::Catagory, QModelIndex> categoryIndexes;
public slots:
void doSubscription(QSacnUniverse*);
void doCreation(QSacnUniverse*);
private:
MultiverseItem * getItem(const QModelIndex &index) const;
QSacnNode * node_;
MultiverseItem * rootItem_;
};