#include "adduniversedialog.h" #include "multiverseview.h" #include "multiversemodel.h" #include "ui_multiverseview.h" #include "universeviewdelegate.h" #include /** * @brief MultiverseView::MultiverseView * @param parent */ MultiverseView::MultiverseView(QWidget *parent, QSacnNode *node) : QMainWindow(parent) , ui(new Ui::MultiverseView) { ui->setupUi(this); ui->actionTerminate->setEnabled(false); ui->actionUnsubscribe->setEnabled(false); ui->multiverseView->setModel(new MultiverseModel(this, node)); ui->multiverseView->setItemDelegate(new UniverseViewDelegate(this, node)); ui->multiverseView->expandAll(); 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); } /** * @brief MultiverseView::~MultiverseView */ MultiverseView::~MultiverseView() { delete ui; } /** * @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(current.internalPointer()); auto data = item->data(0, Qt::EditRole); if (!data.isValid()) return; if (data.metaType().id() == qMetaTypeId()) { auto univ = data.value(); if (univ->isEditable()) ui->actionTerminate->setEnabled(true); else ui->actionUnsubscribe->setEnabled(true); return; } }