1
0
Fork 0
OpenLCP/platform/qt/sacn/multiversemodel.h

69 lines
2.0 KiB
C++

#pragma once
#include <QAbstractItemModel>
#include "multiverseitem.h"
#include "qsacn_global.h"
#include "qsacnuniverse.h"
class QSacnNode; // forward declare node class
/**
* @brief The MultiverseModel class
*/
class QT_EXPORT MultiverseModel
: public QAbstractItemModel
{
Q_OBJECT
public:
explicit MultiverseModel(QObject *parent = nullptr,
QSacnNode *node = nullptr);
virtual ~MultiverseModel();
// QAbstractItemModel 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;
bool setData(const QModelIndex &index, const QVariant &value,
int role = Qt::EditRole) override;
Qt::ItemFlags flags(const QModelIndex &index) const override;
/// @brief The Catagory enum
enum Catagory {
Discovery,
Receiver,
Source
};
Q_ENUM(Catagory)
/// @brief The Column enum
enum Column {
Universe,
Status,
Priority,
Channels,
SourceName
};
Q_ENUM(Column)
private slots:
void doDiscovery();
private:
MultiverseItem * getItem(const QModelIndex &index) const;
QMap<MultiverseModel::Catagory, QModelIndex> categoryIndexes;
QSacnNode *node_;
MultiverseItem *rootItem_;
void insert_(const QModelIndex &parent,
QSacnUniverse *universe = nullptr,
QSacnDiscoveredUniverse *discovery = nullptr);
void remove_(const QModelIndex &parent,
const QSacnUniverse *universe);
};