sort by universe number
This commit is contained in:
parent
33479b37ee
commit
85e85edbbd
|
@ -4,8 +4,6 @@
|
|||
#include "ui_multiverseview.h"
|
||||
#include "universeview.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
/**
|
||||
* @brief MultiverseView::MultiverseView
|
||||
* @param parent
|
||||
|
@ -14,20 +12,27 @@ MultiverseView::MultiverseView(QWidget *parent, QSacnNode *node)
|
|||
: QMainWindow(parent)
|
||||
, ui(new Ui::MultiverseView)
|
||||
, node(node)
|
||||
, model(new MultiverseModel(this, node))
|
||||
, sortProxy(new QSortFilterProxyModel(this))
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->actionTerminate->setEnabled(false);
|
||||
ui->actionUnsubscribe->setEnabled(false);
|
||||
ui->actionInspect->setEnabled(false);
|
||||
|
||||
ui->multiverseView->setModel(new MultiverseModel(this, node));
|
||||
sortProxy->setSourceModel(model);
|
||||
|
||||
ui->multiverseView->setModel(sortProxy);
|
||||
ui->multiverseView->setSortingEnabled(true);
|
||||
ui->multiverseView->sortByColumn(MultiverseModel::Column::Universe,
|
||||
Qt::SortOrder::AscendingOrder);
|
||||
ui->multiverseView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
ui->multiverseView->expandAll();
|
||||
for (int i = 0; i < ui->multiverseView->model()->rowCount(); i++)
|
||||
ui->multiverseView->setFirstColumnSpanned(i, QModelIndex(), true);
|
||||
|
||||
connect(ui->multiverseView, &QTreeView::customContextMenuRequested,
|
||||
this, &MultiverseView::multiverseContextMenu);
|
||||
this, &MultiverseView::createContextMenu);
|
||||
|
||||
connect(ui->multiverseView, &QTreeView::doubleClicked,
|
||||
this, &MultiverseView::createEditor);
|
||||
|
@ -48,8 +53,8 @@ MultiverseView::MultiverseView(QWidget *parent, QSacnNode *node)
|
|||
|
||||
connect(ui->actionTerminate, &QAction::triggered,
|
||||
this, [&, node]() {
|
||||
auto item = static_cast<MultiverseItem*>(ui->multiverseView->currentIndex().internalPointer());
|
||||
auto data = item->data(0, Qt::EditRole);
|
||||
auto index = ui->multiverseView->currentIndex();
|
||||
auto data = index.data(Qt::EditRole);
|
||||
if (data.metaType().id() == qMetaTypeId<QSacnUniverse*>())
|
||||
{
|
||||
auto univ = data.value<QSacnUniverse*>();
|
||||
|
@ -60,7 +65,12 @@ MultiverseView::MultiverseView(QWidget *parent, QSacnNode *node)
|
|||
|
||||
connect(ui->actionSubscribe, &QAction::triggered,
|
||||
this, [this, node]() {
|
||||
auto dialog = new AddUniverseDialog(this, 1, tr("Subscribe to Universe"));
|
||||
auto index = ui->multiverseView->currentIndex();
|
||||
auto actual = sortProxy->mapToSource(index);
|
||||
auto item = static_cast<MultiverseItem*>(actual.internalPointer());
|
||||
auto val = item->data(MultiverseModel::Column::Universe, Qt::DisplayRole);
|
||||
auto dialog = new AddUniverseDialog(this, val.toInt(),
|
||||
tr("Subscribe to Universe"));
|
||||
connect(dialog, &AddUniverseDialog::additionRequested,
|
||||
node, &QSacnNode::subscribe);
|
||||
dialog->exec();
|
||||
|
@ -68,8 +78,8 @@ MultiverseView::MultiverseView(QWidget *parent, QSacnNode *node)
|
|||
|
||||
connect(ui->actionUnsubscribe, &QAction::triggered,
|
||||
this, [&, node]() {
|
||||
auto item = static_cast<MultiverseItem*>(ui->multiverseView->currentIndex().internalPointer());
|
||||
auto data = item->data(0, Qt::EditRole);
|
||||
auto index = ui->multiverseView->currentIndex();
|
||||
auto data = index.data(Qt::EditRole);
|
||||
if (data.metaType().id() == qMetaTypeId<QSacnUniverse*>())
|
||||
{
|
||||
auto univ = data.value<QSacnUniverse*>();
|
||||
|
@ -89,7 +99,7 @@ MultiverseView::MultiverseView(QWidget *parent, QSacnNode *node)
|
|||
*/
|
||||
MultiverseView::~MultiverseView()
|
||||
{
|
||||
delete ui;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
|
||||
|
@ -107,10 +117,9 @@ void MultiverseView::selectionChanged(const QModelIndex ¤t,
|
|||
ui->actionUnsubscribe->setEnabled(false);
|
||||
ui->actionInspect->setEnabled(false);
|
||||
|
||||
auto item = static_cast<MultiverseItem*>(current.internalPointer());
|
||||
auto data = item->data(0, Qt::EditRole);
|
||||
if (!data.isValid())
|
||||
return;
|
||||
auto data = current.data(Qt::EditRole);
|
||||
|
||||
// Data universes:
|
||||
if (data.metaType().id() == qMetaTypeId<QSacnUniverse*>())
|
||||
{
|
||||
ui->actionInspect->setEnabled(true);
|
||||
|
@ -128,31 +137,19 @@ void MultiverseView::selectionChanged(const QModelIndex ¤t,
|
|||
* @brief MultiverseView::multiverseContextMenu
|
||||
* @param pos
|
||||
*/
|
||||
void MultiverseView::multiverseContextMenu(const QPoint &pos)
|
||||
void MultiverseView::createContextMenu(const QPoint &pos)
|
||||
{
|
||||
QMenu menu(ui->multiverseView);
|
||||
|
||||
auto globalpos = ui->multiverseView->mapToGlobal(pos);
|
||||
|
||||
auto index = ui->multiverseView->indexAt(pos);
|
||||
auto flags = ui->multiverseView->model()->flags(index);
|
||||
if (!(flags & Qt::ItemIsSelectable))
|
||||
{
|
||||
// top level item
|
||||
return;
|
||||
}
|
||||
auto data = index.data(Qt::EditRole);
|
||||
|
||||
auto item = static_cast<MultiverseItem*>(index.internalPointer());
|
||||
auto data = item->data(0, Qt::EditRole);
|
||||
if (!data.isValid())
|
||||
return;
|
||||
// Data universes:
|
||||
if (data.metaType().id() == qMetaTypeId<QSacnUniverse*>())
|
||||
{
|
||||
if (flags & Qt::ItemIsEditable)
|
||||
{
|
||||
// all universes
|
||||
menu.addAction(ui->actionInspect);
|
||||
menu.addSeparator();
|
||||
}
|
||||
menu.addAction(ui->actionInspect);
|
||||
menu.addSeparator();
|
||||
auto univ = data.value<QSacnUniverse*>();
|
||||
if (univ->isEditable())
|
||||
menu.addAction(ui->actionTerminate);
|
||||
|
@ -162,11 +159,12 @@ void MultiverseView::multiverseContextMenu(const QPoint &pos)
|
|||
return;
|
||||
}
|
||||
|
||||
if (data.metaType().id() == qMetaTypeId<sACN::EXTENDED::DISCOVERY::discoveredUniverse*>())
|
||||
// Discovery universes:
|
||||
if (data.metaType().id() ==
|
||||
qMetaTypeId<sACN::EXTENDED::DISCOVERY::discoveredUniverse*>())
|
||||
{
|
||||
auto univ = data.value<sACN::EXTENDED::DISCOVERY::discoveredUniverse*>();
|
||||
(void)univ;
|
||||
// discovered
|
||||
menu.addAction(ui->actionSubscribe);
|
||||
menu.exec(globalpos);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -178,8 +176,9 @@ void MultiverseView::multiverseContextMenu(const QPoint &pos)
|
|||
*/
|
||||
void MultiverseView::createEditor(const QModelIndex &index)
|
||||
{
|
||||
QVariant data = index.data(Qt::EditRole);
|
||||
auto data = index.data(Qt::EditRole);
|
||||
|
||||
// Data universes:
|
||||
if (data.metaType().id() == qMetaTypeId<QSacnUniverse*>())
|
||||
{
|
||||
auto univ = data.value<QSacnUniverse*>();
|
||||
|
@ -187,6 +186,7 @@ void MultiverseView::createEditor(const QModelIndex &index)
|
|||
universeView->show();
|
||||
}
|
||||
|
||||
// Discovery universes:
|
||||
if (data.metaType().id() ==
|
||||
qMetaTypeId<sACN::EXTENDED::DISCOVERY::discoveredUniverse*>())
|
||||
{
|
||||
|
|
|
@ -23,15 +23,23 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include <QMainWindow>
|
||||
#include "multiversemodel.h"
|
||||
#include "qsacnnode.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui {
|
||||
namespace Ui
|
||||
{
|
||||
class MultiverseView;
|
||||
}
|
||||
QT_END_NAMESPACE
|
||||
|
||||
/**
|
||||
* @brief The MultiverseView class
|
||||
*/
|
||||
class MultiverseView
|
||||
: public QMainWindow
|
||||
{
|
||||
|
@ -44,10 +52,12 @@ public:
|
|||
|
||||
public slots:
|
||||
void selectionChanged(const QModelIndex ¤t, const QModelIndex &previous);
|
||||
void multiverseContextMenu(const QPoint &pos);
|
||||
void createContextMenu(const QPoint &pos);
|
||||
void createEditor(const QModelIndex &index);
|
||||
|
||||
private:
|
||||
Ui::MultiverseView *ui;
|
||||
QSacnNode * node;
|
||||
MultiverseModel * model;
|
||||
QSortFilterProxyModel *sortProxy;
|
||||
};
|
||||
|
|
|
@ -20,18 +20,9 @@
|
|||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoExpandDelay">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="uniformRowHeights">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sortingEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="animated">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
|
Loading…
Reference in New Issue