1
0
Fork 0

keep ui actions consistent with selected widget

This commit is contained in:
Kevin Matz 2023-04-14 10:28:17 -04:00
parent 2c394a1bc7
commit f19f572daf
3 changed files with 46 additions and 1 deletions

View File

@ -22,6 +22,8 @@ DeviceWindow::DeviceWindow(QWidget *parent)
ui->widgetView->sortByColumn(WidgetModel::Column::PortName, Qt::SortOrder::AscendingOrder);
// model connections
connect(ui->widgetView->selectionModel(), &QItemSelectionModel::currentChanged,
this, &DeviceWindow::selectionChanged);
connect(ui->actionParameter, &QAction::triggered,
this, [this]() {
auto selected = ui->widgetView->currentIndex();
@ -60,7 +62,37 @@ DeviceWindow::DeviceWindow(QWidget *parent)
this, [this](){QMessageBox::aboutQt(this);});
}
DeviceWindow::~DeviceWindow()
{
delete ui;
}
void DeviceWindow::selectionChanged(const QModelIndex &current, const QModelIndex &previous)
{
Q_UNUSED(previous)
bool valid = false;
bool connected = false;
bool hasdmx = false;
bool hasrdm = false;
if (current.isValid())
{
valid = true;
auto wdgt = current.data(Qt::EditRole).value<DmxWidget*>();
connected = wdgt->isConnected();
hasdmx = connected & wdgt->featureDMX();
hasrdm = connected & wdgt->featureRDM();
}
ui->menuWidget->setEnabled(valid);
ui->actionOpen->setEnabled(!connected);
ui->actionClose->setEnabled(connected);
ui->actionDMX->setEnabled(hasdmx);
ui->actionRDM->setEnabled(hasrdm);
ui->actionParameter->setEnabled(connected);
ui->actionUserData->setEnabled(connected);
ui->actionFirmware->setEnabled(false);
}

View File

@ -16,6 +16,9 @@ public:
explicit DeviceWindow(QWidget *parent = nullptr);
~DeviceWindow();
private slots:
void selectionChanged(const QModelIndex &current, const QModelIndex &previous);
private:
Ui::DeviceWindow *ui;
WidgetModel *model;

View File

@ -16,7 +16,17 @@
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTableView" name="widgetView"/>
<widget class="QTableView" name="widgetView">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
</widget>
</item>
</layout>
</widget>