OpenLCP/example/sACN Explorer/universeviewdelegate.cpp

54 lines
1.5 KiB
C++

#include "adduniversedialog.h"
#include "qsacnuniverse.h"
#include "sacn/extended.h"
#include "universeview.h"
#include "universeviewdelegate.h"
/**
* @brief UniverseViewDelegate::UniverseViewDelegate
* @param parent
* @param node
*/
UniverseViewDelegate::UniverseViewDelegate(QObject * parent, QSacnNode * node)
: QStyledItemDelegate(parent)
, node_(node)
{
}
/**
* @brief UniverseViewDelegate::createEditor
* @param parent
* @param option
* @param index
* @return
*/
QWidget * UniverseViewDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QVariant data = index.data(Qt::EditRole);
if (data.metaType().id() == qMetaTypeId<QSacnUniverse*>())
{
auto univ = data.value<QSacnUniverse*>();
auto universeView = new UniverseView(parent, univ);
universeView->show();
return new QWidget(parent);
}
if (index.data().canConvert<sACN::EXTENDED::DISCOVERY::discoveredUniverse*>())
{
auto disc = data.value<sACN::EXTENDED::DISCOVERY::discoveredUniverse*>();
auto subscribe = new AddUniverseDialog(parent, disc->universe,
tr("Subscribe to Universe"));
connect(subscribe, &AddUniverseDialog::additionRequested,
node_, &QSacnNode::subscribe);
return subscribe;
}
return QStyledItemDelegate::createEditor(parent, option, index);
}