1
0
Fork 0

remove unnecessary signals/slots

This commit is contained in:
Kevin Matz 2022-12-03 22:42:44 -05:00
parent 18e14b99d8
commit fe53e57a6d
4 changed files with 78 additions and 134 deletions

View File

@ -14,7 +14,7 @@
*/
MultiverseItem::MultiverseItem(MultiverseItem* parent,
QSacnUniverse* universe,
discoveredUniverse *discovery)
QSacnDiscoveredUniverse *discovery)
: universe_(universe)
, discovery_(discovery)
, parentItem_(parent)

View File

@ -7,8 +7,8 @@
class QSacnUniverse; // forward declare
using discoveredUniverse = sACN::EXTENDED::DISCOVERY::discoveredUniverse;
Q_DECLARE_METATYPE(discoveredUniverse*)
using QSacnDiscoveredUniverse = sACN::EXTENDED::DISCOVERY::discoveredUniverse;
Q_DECLARE_METATYPE(QSacnDiscoveredUniverse*)
/**
* @brief The MultiverseItem class
@ -18,7 +18,7 @@ class MultiverseItem
public:
explicit MultiverseItem(MultiverseItem* parentItem = nullptr,
QSacnUniverse* universe = nullptr,
discoveredUniverse* discovery = nullptr);
QSacnDiscoveredUniverse* discovery = nullptr);
virtual ~MultiverseItem();
void appendChild(MultiverseItem* child);
@ -39,7 +39,7 @@ public:
private:
QVector<MultiverseItem*> childItems_;
QSacnUniverse* universe_;
discoveredUniverse* discovery_;
QSacnDiscoveredUniverse* discovery_;
MultiverseItem* parentItem_;
QVariant override_data_;
};

View File

@ -14,26 +14,35 @@ MultiverseModel::MultiverseModel(QObject *parent, QSacnNode *node)
, node_(node)
, rootItem_(new MultiverseItem())
{
QMetaEnum e = QMetaEnum::fromType<MultiverseModel::Catagory>();
for (int k = 0; k < e.keyCount(); k++)
// create items for the category headers
QMetaEnum categories = QMetaEnum::fromType<Catagory>();
for (int itr = 0; itr < categories.keyCount(); itr++)
{
auto item = new MultiverseItem(rootItem_);
item->setOverrideData(QString(e.key(k)));
auto idx = MultiverseModel::index(k, 0, QModelIndex());
categoryIndexes.insert(static_cast<MultiverseModel::Catagory>
(e.value(k)), idx);
auto header = new MultiverseItem(rootItem_);
header->setOverrideData(QString(categories.key(itr)));
auto idx = MultiverseModel::index(itr, 0, QModelIndex());
categoryIndexes.insert(static_cast<Catagory>(categories.value(itr)), idx);
}
// connect node changes
connect(node, &QSacnNode::discoveryUpdates,
this, &MultiverseModel::doDiscovery);
connect(node, &QSacnNode::subscribing,
this, &MultiverseModel::doSubscription);
this, [this](QSacnUniverse *universe){
insert_(categoryIndexes.value(Receiver), universe);
});
connect(node, &QSacnNode::unsubscribing,
this, &MultiverseModel::doUnsubscribe);
this, [this](QSacnUniverse *universe){
remove_(categoryIndexes.value(Receiver), universe);
});
connect(node, &QSacnNode::creating,
this, &MultiverseModel::doCreation);
this, [this](QSacnUniverse *universe){
insert_(categoryIndexes.value(Source), universe);
});
connect(node, &QSacnNode::terminating,
this, &MultiverseModel::doTerminate);
this, [this](QSacnUniverse *universe){
remove_(categoryIndexes.value(Source), universe);
});
}
@ -46,16 +55,6 @@ MultiverseModel::~MultiverseModel()
}
/**
* @brief MultiverseModel::root
* @return
*/
MultiverseItem * MultiverseModel::root()
{
return rootItem_;
}
/**
* @brief MultiverseModel::getItem
* @param index
@ -232,9 +231,9 @@ Qt::ItemFlags MultiverseModel::flags(const QModelIndex &index) const
* @param parent
* @return
*/
void MultiverseModel::insert(const QModelIndex &parent,
QSacnUniverse* universe,
discoveredUniverse *discovery)
void MultiverseModel::insert_(const QModelIndex &parent,
QSacnUniverse* universe,
QSacnDiscoveredUniverse *discovery)
{
auto item = getItem(parent);
beginInsertRows(parent, item->childCount(), item->childCount());
@ -290,10 +289,11 @@ void MultiverseModel::insert(const QModelIndex &parent,
* @param parent
* @param data
*/
void MultiverseModel::remove(const QModelIndex &parent, const QVariant &data)
void MultiverseModel::remove_(const QModelIndex &parent,
const QSacnUniverse *universe)
{
auto item = static_cast<MultiverseItem*>(parent.internalPointer());
auto row = item->childRow(Column::Universe, data);
auto row = item->childRow(Column::Universe, QVariant::fromValue(universe));
if (row < 0)
return;
auto child = item->child(row);
@ -319,47 +319,3 @@ void MultiverseModel::doDiscovery()
new MultiverseItem(parent, nullptr, discovery.get());
endInsertRows();
}
/**
* @brief MultiverseModel::doSubscription
* @param universe
*/
void MultiverseModel::doSubscription(QSacnUniverse* universe)
{
auto parentIndex = categoryIndexes.value(MultiverseModel::Receiver);
insert(parentIndex, universe);
}
/**
* @brief MultiverseModel::doUnsubscribe
* @param universe
*/
void MultiverseModel::doUnsubscribe(QSacnUniverse* universe)
{
auto parentIndex = categoryIndexes.value(MultiverseModel::Receiver);
remove(parentIndex, QVariant::fromValue(universe));
}
/**
* @brief MultiverseModel::doCreation
* @param universe
*/
void MultiverseModel::doCreation(QSacnUniverse* universe)
{
auto parentIndex = categoryIndexes.value(MultiverseModel::Source);
insert(parentIndex, universe);
}
/**
* @brief MultiverseModel::doTerminate
* @param universe
*/
void MultiverseModel::doTerminate(QSacnUniverse *universe)
{
auto parentIndex = categoryIndexes.value(MultiverseModel::Source);
remove(parentIndex, QVariant::fromValue(universe));
}

View File

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