Choice model settings was added
This commit is contained in:
90
models/basemodel.cpp
Normal file
90
models/basemodel.cpp
Normal 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();
|
||||
}
|
||||
Reference in New Issue
Block a user