blob: 6085b8161f835d1fb2e8a357c03123d57546240f [file] [log] [blame]
swissChili4b3105a2022-02-22 16:34:39 -08001#pragma once
2
3#include <QObject>
4#include <qqml.h>
swissChilid85daa92022-02-24 15:29:02 -08005#include <QUuid>
6#include <QHash>
swissChili4b3105a2022-02-22 16:34:39 -08007
8class Cell : public QObject
9{
10 Q_OBJECT
11 QML_ELEMENT
12
13 Q_PROPERTY(QString code READ code WRITE setCode NOTIFY codeChanged)
14 Q_PROPERTY(QString result READ result WRITE setResult NOTIFY resultChanged)
swissChilid85daa92022-02-24 15:29:02 -080015 Q_PROPERTY(QUuid uuid READ uuid NOTIFY uuidChanged)
16 Q_PROPERTY(int status READ status WRITE setStatus NOTIFY statusChanged)
swissChiliece1ac82022-02-25 11:20:42 -080017 Q_PROPERTY(int resultType READ resultType WRITE setResultType NOTIFY resultTypeChanged)
swissChili4b3105a2022-02-22 16:34:39 -080018
19public:
swissChilid85daa92022-02-24 15:29:02 -080020 ~Cell();
swissChili4b3105a2022-02-22 16:34:39 -080021 explicit Cell(QObject *parent = nullptr);
22 Cell(const Cell &copy, QObject *parent = nullptr);
23 Cell(QString code, QString result, QObject *parent = nullptr);
24
25 Cell &operator =(const Cell &copy);
26
27 QString code() const;
28 QString result() const;
swissChilid85daa92022-02-24 15:29:02 -080029 QUuid uuid() const;
30 int status() const;
swissChiliece1ac82022-02-25 11:20:42 -080031 int resultType() const;
swissChili4b3105a2022-02-22 16:34:39 -080032
33 void setCode(QString code);
34 void setResult(QString result);
swissChilid85daa92022-02-24 15:29:02 -080035 void setStatus(int status);
swissChiliece1ac82022-02-25 11:20:42 -080036 void setResultType(int resultType);
swissChilid85daa92022-02-24 15:29:02 -080037
38 Q_INVOKABLE static Cell *cellFromUuid(QUuid uuid);
39
40 enum Status
41 {
42 RUNNING,
43 IDLE,
44 WAITING,
45 };
46
47 Q_ENUM(Status);
swissChili4b3105a2022-02-22 16:34:39 -080048
swissChiliece1ac82022-02-25 11:20:42 -080049 enum ResultType
50 {
51 EXPRESSION,
52 DIAGNOSTIC
53 };
54
55 Q_ENUM(ResultType)
56
swissChili4b3105a2022-02-22 16:34:39 -080057signals:
58 void codeChanged(QString code);
59 void resultChanged(QString result);
swissChilid85daa92022-02-24 15:29:02 -080060 void uuidChanged(QUuid uuid);
61 void statusChanged(int status);
swissChiliece1ac82022-02-25 11:20:42 -080062 void resultTypeChanged(int resultType);
swissChili4b3105a2022-02-22 16:34:39 -080063
64private:
swissChiliece1ac82022-02-25 11:20:42 -080065 int _status = IDLE, _resultType = EXPRESSION;
swissChili4b3105a2022-02-22 16:34:39 -080066 QString _code, _result;
swissChilid85daa92022-02-24 15:29:02 -080067 QUuid _uuid = QUuid::createUuid();
68
69 static QHash<QUuid, Cell *> _cellUuids;
swissChili4b3105a2022-02-22 16:34:39 -080070};
71
72Q_DECLARE_METATYPE(Cell)