Choice model settings was added

This commit is contained in:
2023-04-10 19:24:25 +02:00
parent 25e8a3ea79
commit 4a52926be9
31 changed files with 938 additions and 227 deletions

90
models/basemodel.cpp Normal file
View File

@@ -0,0 +1,90 @@
#include "basemodel.h"
#include "services/beerservice.h"
BaseModel::BaseModel(const QString &entity, QObject *parent) : QObject{parent},
m_entity(entity)
{
Q_ASSERT(!m_entity.isEmpty());
service()->connectListener(this);
service()->sendCommand(m_entity, BeerService::ActionGet);
}
BaseModel::~BaseModel()
{
service()->removeListener(this);
}
QString BaseModel::entity() const
{
return m_entity;
}
QVariantList BaseModel::items() const
{
return m_data.values();
}
QVariantMap BaseModel::item(const QString &itemId) const
{
return m_data.value(itemId).toMap();
}
QVariant BaseModel::itemProperty(const QString &itemId, const QString &propertyName, const QVariant &def) const
{
return item(itemId).value(propertyName, def);
}
void BaseModel::addItem(const QVariantMap &item) const
{
service()->sendCommand(entity(), BeerService::ActionAdd, item);
}
void BaseModel::deleteItem(const QString &itemId) const
{
service()->sendCommand(entity(), BeerService::ActionDelete, QVariantMap { { "id", itemId } });
}
void BaseModel::modifyItem(const QString &itemId, const QVariantMap &properties) const
{
QVariantMap item = this->item(itemId);
for (auto it = properties.constBegin(); it != properties.constEnd(); ++it) {
item[it.key()] = it.value();
}
service()->sendCommand(entity(), BeerService::ActionModify, item);
}
void BaseModel::created(const QVariant &data)
{
modified(data);
}
void BaseModel::modified(const QVariant &data)
{
QVariantMap d = data.toMap();
m_data[d.value("id").toString()] = d;
emit dataChanged();
}
void BaseModel::deleted(const QVariant &data)
{
QString id = data.toString();
m_data.remove(id);
emit dataChanged();
}
void BaseModel::received(const QVariant &data)
{
m_data = data.toMap();
emit dataChanged();
}
BeerService *BaseModel::service() const
{
return BeerService::instance();
}