OpenLCP/example/sACN Explorer/multiverseview.cpp

83 lines
2.2 KiB
C++
Raw Normal View History

2021-09-06 15:09:08 -04:00
#include "adduniversedialog.h"
2021-09-06 12:54:28 -04:00
#include "multiverseview.h"
#include "multiversemodel.h"
#include "ui_multiverseview.h"
#include "universeviewdelegate.h"
#include <QDebug>
/**
* @brief MultiverseView::MultiverseView
* @param parent
*/
MultiverseView::MultiverseView(QWidget *parent, QSacnNode *node)
: QMainWindow(parent)
, ui(new Ui::MultiverseView)
{
ui->setupUi(this);
2021-09-06 15:09:08 -04:00
ui->actionTerminate->setEnabled(false);
ui->actionUnsubscribe->setEnabled(false);
2021-09-06 12:54:28 -04:00
ui->multiverseView->setModel(new MultiverseModel(this, node));
ui->multiverseView->setItemDelegate(new UniverseViewDelegate(this, node));
2021-09-06 12:54:28 -04:00
ui->multiverseView->expandAll();
2021-09-06 15:09:08 -04:00
connect(ui->actionCreate, &QAction::triggered,
this, [this, node]() {
auto dialog = new AddUniverseDialog(this, 1, tr("Create Universe"));
connect(dialog, &AddUniverseDialog::additionRequested,
node, &QSacnNode::create);
dialog->exec();
});
connect(ui->actionSubscribe, &QAction::triggered,
this, [this, node]() {
auto dialog = new AddUniverseDialog(this, 1, tr("Subscribe to Universe"));
connect(dialog, &AddUniverseDialog::additionRequested,
node, &QSacnNode::subscribe);
dialog->exec();
});
connect(ui->multiverseView->selectionModel(),
&QItemSelectionModel::currentChanged,
this, &MultiverseView::selectionChanged);
2021-09-06 12:54:28 -04:00
}
/**
* @brief MultiverseView::~MultiverseView
*/
MultiverseView::~MultiverseView()
{
delete ui;
}
/**
* @brief MultiverseView::selectionChanged
* @param selected
* @param deselected
*/
void MultiverseView::selectionChanged(const QModelIndex &current,
const QModelIndex &previous)
{
Q_UNUSED(previous)
ui->actionTerminate->setEnabled(false);
ui->actionUnsubscribe->setEnabled(false);
auto item = static_cast<MultiverseItem*>(current.internalPointer());
auto data = item->data(0, Qt::EditRole);
if (!data.isValid())
return;
if (data.metaType().id() == qMetaTypeId<QSacnUniverse*>())
{
auto univ = data.value<QSacnUniverse*>();
if (univ->isEditable())
ui->actionTerminate->setEnabled(true);
else
ui->actionUnsubscribe->setEnabled(true);
return;
}
}