Implemented creating of new light types or lights

This commit is contained in:
2023-02-15 01:38:00 +01:00
parent 7c580d53b4
commit 9a5e2d3cd7
6 changed files with 90 additions and 2 deletions

View File

@ -20,11 +20,13 @@ ColumnLayout {
model: deviceTypesModel
onAddClicked: (index) => console.log('added', index);
onAddClicked: (index) => deviceTypesModel.insertRow(index < 0 ? 0 : index + 1);
onRemoveClicked: (index) => deviceTypesModel.removeRow(index)
}
ColumnLayout {
enabled: listView.currentIndex !== -1
GridLayout {
Layout.preferredWidth: 300
Layout.maximumWidth: 300

View File

@ -20,11 +20,13 @@ ColumnLayout {
model: devicesModel
onAddClicked: (index) => console.log('added', index)
onAddClicked: (index) => devicesModel.insertRow(index < 0 ? 0 : index + 1);
onRemoveClicked: (index) => devicesModel.removeRow(index)
}
ColumnLayout {
enabled: listView.currentIndex !== -1
GridLayout {
Layout.preferredWidth: 300
Layout.maximumWidth: 300

View File

@ -234,6 +234,41 @@ bool DevicesModel::setData(const QModelIndex &index, const QVariant &value, int
return false;
}
bool DevicesModel::insertRows(int row, int count, const QModelIndex &parent)
{
if (parent.isValid())
{
qWarning() << "hilfe" << __LINE__;
return false;
}
if (!m_controller)
{
qWarning() << "hilfe" << __LINE__;
return false;
}
auto &lights = m_controller->lightProject().lights;
if (row < 0)
{
qWarning() << "hilfe" << __LINE__;
return false;
}
if (row > lights.size())
{
qWarning() << "hilfe" << __LINE__;
return false;
}
beginInsertRows({}, row, row+count-1);
lights.insert(std::begin(lights) + row, count, LightConfig{ .id=99, .name="<neu>", .lightTypeId=0, .address=0, .position={} });
endInsertRows();
return true;
}
bool DevicesModel::removeRows(int row, int count, const QModelIndex &parent)
{
if (parent.isValid())
@ -250,6 +285,12 @@ bool DevicesModel::removeRows(int row, int count, const QModelIndex &parent)
auto &lights = m_controller->lightProject().lights;
if (row < 0)
{
qWarning() << "hilfe" << __LINE__;
return false;
}
if (row >= lights.size())
{
qWarning() << "hilfe" << __LINE__;

View File

@ -25,6 +25,7 @@ public:
QHash<int, QByteArray> roleNames() const override;
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
bool insertRows(int row, int count, const QModelIndex &parent) override;
bool removeRows(int row, int count, const QModelIndex &parent) override;
signals:

View File

@ -195,6 +195,41 @@ bool DeviceTypesModel::setData(const QModelIndex &index, const QVariant &value,
return false;
}
bool DeviceTypesModel::insertRows(int row, int count, const QModelIndex &parent)
{
if (parent.isValid())
{
qWarning() << "hilfe" << __LINE__;
return false;
}
if (!m_controller)
{
qWarning() << "hilfe" << __LINE__;
return false;
}
auto &lightTypes = m_controller->lightProject().lightTypes;
if (row < 0)
{
qWarning() << "hilfe" << __LINE__;
return false;
}
if (row > lightTypes.size())
{
qWarning() << "hilfe" << __LINE__;
return false;
}
beginInsertRows({}, row, row+count-1);
lightTypes.insert(std::begin(lightTypes) + row, count, LightTypeConfig{ .id=99, .name="<neu>" });
endInsertRows();
return true;
}
bool DeviceTypesModel::removeRows(int row, int count, const QModelIndex &parent)
{
if (parent.isValid())
@ -211,6 +246,12 @@ bool DeviceTypesModel::removeRows(int row, int count, const QModelIndex &parent)
auto &lightTypes = m_controller->lightProject().lightTypes;
if (row < 0)
{
qWarning() << "hilfe" << __LINE__;
return false;
}
if (row >= lightTypes.size())
{
qWarning() << "hilfe" << __LINE__;

View File

@ -25,6 +25,7 @@ public:
QHash<int, QByteArray> roleNames() const override;
bool setData(const QModelIndex &index, const QVariant &value, int role) override;
bool insertRows(int row, int count, const QModelIndex &parent) override;
bool removeRows(int row, int count, const QModelIndex &parent) override;
signals: