| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #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::submitItem(const QVariantMap &item) const
- {
- QString itemId = item.value("id").toString();
- if (itemId.isEmpty()) {
- service()->sendCommand(entity(), BeerService::ActionAdd, item);
- } else {
- QVariantMap modItem = this->item(itemId);
- for (auto it = item.constBegin(); it != item.constEnd(); ++it) {
- modItem[it.key()] = it.value();
- }
- service()->sendCommand(entity(), BeerService::ActionModify, modItem);
- }
- }
- void BaseModel::deleteItem(const QString &itemId) const
- {
- service()->sendCommand(entity(), BeerService::ActionDelete, QVariantMap { { "id", itemId } });
- }
- 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();
- }
|