Implemented removing of registers from device type

This commit is contained in:
2023-02-18 19:52:31 +01:00
parent 3f50b4c6bf
commit a6dc8f29d8
2 changed files with 49 additions and 0 deletions

View File

@@ -30,6 +30,8 @@ Pane {
textRole: 'registerTypeName'
model: deviceTypeRegistersModel
onRemoveClicked: (index) => deviceTypeRegistersModel.removeRow(index)
}
}

View File

@@ -217,7 +217,54 @@ bool DeviceTypeRegistersModel::setData(const QModelIndex &index, const QVariant
bool DeviceTypeRegistersModel::removeRows(int row, int count, const QModelIndex &parent)
{
if (!m_controller)
{
qWarning() << "hilfe" << __LINE__;
return true;
}
if (m_deviceTypeId == -1)
{
qWarning() << "hilfe" << __LINE__;
return true;
}
auto deviceTypePtr = m_controller->lightProject().deviceTypes.findById(m_deviceTypeId);
if (!deviceTypePtr)
{
qWarning() << "hilfe" << __LINE__;
return true;
}
auto &deviceType = *deviceTypePtr;
if (row < 0)
{
qWarning() << "hilfe" << __LINE__;
return true;
}
auto &registers = deviceType.registers;
if (row >= registers.size())
{
qWarning() << "hilfe" << __LINE__;
return true;
}
if (row + count > registers.size())
{
qWarning() << "hilfe" << __LINE__;
return true;
}
beginRemoveRows({}, row, row+count-1);
auto begin = std::begin(registers) + row;
auto end = begin + count;
registers.erase(begin, end);
endRemoveRows();
return true;
}
namespace {