subsurface/core/subsurface-qt/DiveObjectHelper.h
Berthold Stoeger 718c07c1a8 Grantlee: split out grantlee-only property from DiveObjectHelper
The cylindersObject list was only used by grantlee but not by
the mobile code. Since it is quite heavy, split it out and thus
don't generate it for every dive on mobile.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-09-14 13:20:59 +02:00

105 lines
3.5 KiB
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef DIVE_QOBJECT_H
#define DIVE_QOBJECT_H
#include "CylinderObjectHelper.h"
#include <QObject>
#include <QString>
#include <QStringList>
#include <QVector>
#include <QVariant>
class DiveObjectHelper {
Q_GADGET
Q_PROPERTY(int number MEMBER number CONSTANT)
Q_PROPERTY(int id MEMBER id CONSTANT)
Q_PROPERTY(int rating MEMBER rating CONSTANT)
Q_PROPERTY(int visibility MEMBER visibility CONSTANT)
Q_PROPERTY(QString date READ date CONSTANT)
Q_PROPERTY(QString time READ time CONSTANT)
Q_PROPERTY(int timestamp MEMBER timestamp CONSTANT)
Q_PROPERTY(QString location MEMBER location CONSTANT)
Q_PROPERTY(QString gps MEMBER gps CONSTANT)
Q_PROPERTY(QString gps_decimal MEMBER gps_decimal CONSTANT)
Q_PROPERTY(QVariant dive_site MEMBER dive_site CONSTANT)
Q_PROPERTY(QString duration MEMBER duration CONSTANT)
Q_PROPERTY(bool noDive MEMBER noDive CONSTANT)
Q_PROPERTY(QString depth MEMBER depth CONSTANT)
Q_PROPERTY(QString divemaster MEMBER divemaster CONSTANT)
Q_PROPERTY(QString buddy MEMBER buddy CONSTANT)
Q_PROPERTY(QString airTemp MEMBER airTemp CONSTANT)
Q_PROPERTY(QString waterTemp MEMBER waterTemp CONSTANT)
Q_PROPERTY(QString notes MEMBER notes CONSTANT)
Q_PROPERTY(QString tags MEMBER tags CONSTANT)
Q_PROPERTY(QString gas MEMBER gas CONSTANT)
Q_PROPERTY(QString sac MEMBER sac CONSTANT)
Q_PROPERTY(QString weightList MEMBER weightList CONSTANT)
Q_PROPERTY(QStringList weights MEMBER weights CONSTANT)
Q_PROPERTY(bool singleWeight MEMBER singleWeight CONSTANT)
Q_PROPERTY(QString suit MEMBER suit CONSTANT)
Q_PROPERTY(QStringList cylinderList READ cylinderList CONSTANT)
Q_PROPERTY(QStringList cylinders MEMBER cylinders CONSTANT)
Q_PROPERTY(int maxcns MEMBER maxcns CONSTANT)
Q_PROPERTY(int otu MEMBER otu CONSTANT)
Q_PROPERTY(QString sumWeight MEMBER sumWeight CONSTANT)
Q_PROPERTY(QStringList getCylinder MEMBER getCylinder CONSTANT)
Q_PROPERTY(QStringList startPressure MEMBER startPressure CONSTANT)
Q_PROPERTY(QStringList endPressure MEMBER endPressure CONSTANT)
Q_PROPERTY(QStringList firstGas MEMBER firstGas CONSTANT)
public:
DiveObjectHelper(); // This is only to be used by Qt's metatype system!
DiveObjectHelper(const struct dive *dive);
int number;
int id;
int rating;
int visibility;
QString date() const;
timestamp_t timestamp;
QString time() const;
QString location;
QString gps;
QString gps_decimal;
QVariant dive_site;
QString duration;
bool noDive;
QString depth;
QString divemaster;
QString buddy;
QString airTemp;
QString waterTemp;
QString notes;
QString tags;
QString gas;
QString sac;
QString weightList;
QStringList weights;
bool singleWeight;
QString suit;
QStringList cylinderList() const;
QStringList cylinders;
int maxcns;
int otu;
QString sumWeight;
QStringList getCylinder;
QStringList startPressure;
QStringList endPressure;
QStringList firstGas;
};
// This is an extended version of DiveObjectHelper that also keeps track of cylinder data.
// It is used by grantlee to display structured cylinder data.
// Note: this grantlee feature is undocumented. If there turns out to be no users, we might
// want to remove this class.
class DiveObjectHelperGrantlee : public DiveObjectHelper {
Q_GADGET
Q_PROPERTY(QVector<CylinderObjectHelper> cylinderObjects MEMBER cylinderObjects CONSTANT)
public:
DiveObjectHelperGrantlee();
DiveObjectHelperGrantlee(const struct dive *dive);
QVector<CylinderObjectHelper> cylinderObjects;
};
Q_DECLARE_METATYPE(DiveObjectHelper)
Q_DECLARE_METATYPE(DiveObjectHelperGrantlee)
#endif