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));
|
2021-09-06 13:44:03 -04:00
|
|
|
ui->multiverseView->setItemDelegate(new UniverseViewDelegate(this, node));
|
2021-09-06 12:54:28 -04:00
|
|
|
ui->multiverseView->expandAll();
|
2021-09-06 15:08:16 -04:00
|
|
|
|
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();
|
|
|
|
});
|
|
|
|
|
2021-09-06 15:08:16 -04:00
|
|
|
connect(ui->multiverseView->selectionModel(),
|
|
|
|
&QItemSelectionModel::currentChanged,
|
|
|
|
this, &MultiverseView::selectionChanged);
|
2021-09-06 12:54:28 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief MultiverseView::~MultiverseView
|
|
|
|
*/
|
|
|
|
MultiverseView::~MultiverseView()
|
|
|
|
{
|
|
|
|
delete ui;
|
|
|
|
}
|
2021-09-06 15:08:16 -04:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief MultiverseView::selectionChanged
|
|
|
|
* @param selected
|
|
|
|
* @param deselected
|
|
|
|
*/
|
|
|
|
void MultiverseView::selectionChanged(const QModelIndex ¤t,
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|