Files
beerlog/viewmodels/productsviewmodel.h

46 lines
1.2 KiB
C++

#ifndef PRODUCTSVIEWMODEL_H
#define PRODUCTSVIEWMODEL_H
#include <QObject>
#include <QVariantMap>
#include "models/restsmodel.h"
#include "services/modelsregister.h"
class SettingsService;
class ProductsViewModel : public QObject
{
Q_OBJECT
Q_PROPERTY(QVariantList products READ products NOTIFY productsChanged)
Q_PROPERTY(QVariantList order READ order NOTIFY orderChanged)
Q_PROPERTY(float orderSum READ orderSum NOTIFY orderChanged)
public:
explicit ProductsViewModel(QObject *parent = nullptr);
QVariantList products() const;
QVariantList order() const;
float orderSum() const;
Q_INVOKABLE void setOrderValue(const QString &productId, float value);
Q_INVOKABLE void submitOrder();
signals:
void productsChanged();
void orderChanged();
private:
SettingsService *settings() const;
float productRest(const QString &productId) const;
void updateRests() const;
BaseModel *m_productsModel = ModelsRegister::model("products");
BaseModel *m_ordersModel = ModelsRegister::model("orders");
RestsModel *m_restsModel = ModelsRegister::get<RestsModel>("rests");
QVariantMap m_order;
};
#endif // PRODUCTSVIEWMODEL_H