diff options
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.cpp | 11 | ||||
-rw-r--r-- | core/subsurface-qt/DiveObjectHelper.h | 19 | ||||
-rw-r--r-- | desktop-widgets/templatelayout.cpp | 10 | ||||
-rw-r--r-- | desktop-widgets/templatelayout.h | 2 |
4 files changed, 32 insertions, 10 deletions
diff --git a/core/subsurface-qt/DiveObjectHelper.cpp b/core/subsurface-qt/DiveObjectHelper.cpp index ec62a9fec..9e4ff47bb 100644 --- a/core/subsurface-qt/DiveObjectHelper.cpp +++ b/core/subsurface-qt/DiveObjectHelper.cpp @@ -238,7 +238,6 @@ DiveObjectHelper::DiveObjectHelper(const struct dive *d) : singleWeight(d->weightsystems.nr <= 1), suit(d->suit ? d->suit : QString()), cylinders(formatCylinders(d)), - cylinderObjects(makeCylinderObjects(d)), maxcns(d->maxcns), otu(d->otu), sumWeight(get_weight_string(weight_t { total_weight(d) }, true)), @@ -249,6 +248,16 @@ DiveObjectHelper::DiveObjectHelper(const struct dive *d) : { } +DiveObjectHelperGrantlee::DiveObjectHelperGrantlee() +{ +} + +DiveObjectHelperGrantlee::DiveObjectHelperGrantlee(const struct dive *d) : + DiveObjectHelper(d), + cylinderObjects(makeCylinderObjects(d)) +{ +} + QString DiveObjectHelper::date() const { QDateTime localTime = QDateTime::fromMSecsSinceEpoch(1000 * timestamp, Qt::UTC); diff --git a/core/subsurface-qt/DiveObjectHelper.h b/core/subsurface-qt/DiveObjectHelper.h index 5e6b0c7e1..639dae696 100644 --- a/core/subsurface-qt/DiveObjectHelper.h +++ b/core/subsurface-qt/DiveObjectHelper.h @@ -39,7 +39,6 @@ class DiveObjectHelper { Q_PROPERTY(QString suit MEMBER suit CONSTANT) Q_PROPERTY(QStringList cylinderList READ cylinderList CONSTANT) Q_PROPERTY(QStringList cylinders MEMBER cylinders CONSTANT) - Q_PROPERTY(QVector<CylinderObjectHelper> cylinderObjects MEMBER cylinderObjects CONSTANT) Q_PROPERTY(int maxcns MEMBER maxcns CONSTANT) Q_PROPERTY(int otu MEMBER otu CONSTANT) Q_PROPERTY(QString sumWeight MEMBER sumWeight CONSTANT) @@ -78,7 +77,6 @@ public: QString suit; QStringList cylinderList() const; QStringList cylinders; - QVector<CylinderObjectHelper> cylinderObjects; int maxcns; int otu; QString sumWeight; @@ -87,6 +85,21 @@ public: QStringList endPressure; QStringList firstGas; }; - Q_DECLARE_METATYPE(DiveObjectHelper) + +// 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 diff --git a/desktop-widgets/templatelayout.cpp b/desktop-widgets/templatelayout.cpp index bdcdfbbe9..de540f266 100644 --- a/desktop-widgets/templatelayout.cpp +++ b/desktop-widgets/templatelayout.cpp @@ -100,7 +100,7 @@ TemplateLayout::TemplateLayout(print_options *printOptions, template_options *te } /* a HTML pre-processor stage. acts like a compatibility layer - * between some Grantlee variables and DiveObjectHelper Q_PROPERTIES: + * between some Grantlee variables and DiveObjectHelperGrantlee Q_PROPERTIES: * dive.weights -> dive.weightList * dive.weight# -> dive.weights.# * dive.cylinders -> dive.cylinderList @@ -134,13 +134,13 @@ QString TemplateLayout::generate() Grantlee::registerMetaType<template_options>(); Grantlee::registerMetaType<print_options>(); Grantlee::registerMetaType<CylinderObjectHelper>(); // TODO: Remove when grantlee supports Q_GADGET - Grantlee::registerMetaType<DiveObjectHelper>(); // TODO: Remove when grantlee supports Q_GADGET + Grantlee::registerMetaType<DiveObjectHelperGrantlee>(); // TODO: Remove when grantlee supports Q_GADGET QVariantList diveList; struct dive *dive; if (in_planner()) { - diveList.append(QVariant::fromValue(DiveObjectHelper(&displayed_dive))); + diveList.append(QVariant::fromValue(DiveObjectHelperGrantlee(&displayed_dive))); emit progressUpdated(100.0); } else { int i; @@ -148,7 +148,7 @@ QString TemplateLayout::generate() //TODO check for exporting selected dives only if (!dive->selected && printOptions->print_selected) continue; - diveList.append(QVariant::fromValue(DiveObjectHelper(dive))); + diveList.append(QVariant::fromValue(DiveObjectHelperGrantlee(dive))); progress++; emit progressUpdated(lrint(progress * 100.0 / totalWork)); } @@ -191,7 +191,7 @@ QString TemplateLayout::generateStatistics() Grantlee::registerMetaType<template_options>(); Grantlee::registerMetaType<print_options>(); Grantlee::registerMetaType<CylinderObjectHelper>(); // TODO: Remove when grantlee supports Q_GADGET - Grantlee::registerMetaType<DiveObjectHelper>(); // TODO: Remove when grantlee supports Q_GADGET + Grantlee::registerMetaType<DiveObjectHelperGrantlee>(); // TODO: Remove when grantlee supports Q_GADGET QVariantList years; diff --git a/desktop-widgets/templatelayout.h b/desktop-widgets/templatelayout.h index 870cd702a..04f7af9a5 100644 --- a/desktop-widgets/templatelayout.h +++ b/desktop-widgets/templatelayout.h @@ -143,7 +143,7 @@ GRANTLEE_END_LOOKUP // TODO: This is currently needed because our grantlee version // doesn't support Q_GADGET based classes. A patch to fix this // exists. Remove in due course. -GRANTLEE_BEGIN_LOOKUP(DiveObjectHelper) +GRANTLEE_BEGIN_LOOKUP(DiveObjectHelperGrantlee) if (property == "number") { return object.number; } else if (property == "id") { |