From 6cd46bee063f3cc90934480cba3f8fb7908149bd Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Fri, 24 Jan 2020 13:31:51 +0100 Subject: divesummary: add DiveSummary class to shared and backend Create DiveSummary class in backend-shared and make the DiveSummary calculation results available to QML. This adds a loop over all dives (could have been done with a model, but the models available to mobile are very limited, so use the basic way). [Dirk Hohndel: renamed the results variable and combined a couple of commits] Signed-off-by: jan Iversen Signed-off-by: Dirk Hohndel --- mobile-widgets/qmlinterface.cpp | 12 +++++++++++- mobile-widgets/qmlinterface.h | 11 +++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'mobile-widgets') diff --git a/mobile-widgets/qmlinterface.cpp b/mobile-widgets/qmlinterface.cpp index df3af0b5f..f666d2dc0 100644 --- a/mobile-widgets/qmlinterface.cpp +++ b/mobile-widgets/qmlinterface.cpp @@ -1,6 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 #include "qmlinterface.h" - #include QMLInterface *QMLInterface::instance() @@ -92,4 +91,15 @@ void QMLInterface::setup(QQmlContext *ct) instance(), &QMLInterface::verbatim_planChanged); connect(qPrefDivePlanner::instance(), &qPrefDivePlanner::display_variationsChanged, instance(), &QMLInterface::display_variationsChanged); + + // calculate divesummary first time. + // this is needed in order to load the divesummary page + diveSummary::summaryCalculation(0, 3); +} + + +void QMLInterface::summaryCalculation(int primaryPeriod, int secondaryPeriod) +{ + diveSummary::summaryCalculation(primaryPeriod, secondaryPeriod); + emit diveSummaryTextChanged(diveSummary::diveSummaryText); } diff --git a/mobile-widgets/qmlinterface.h b/mobile-widgets/qmlinterface.h index 9b032505a..45a39206e 100644 --- a/mobile-widgets/qmlinterface.h +++ b/mobile-widgets/qmlinterface.h @@ -7,9 +7,12 @@ #include "core/settings/qPrefTechnicalDetails.h" #include "qt-models/diveplannermodel.h" #include "backend-shared/plannershared.h" +#include "backend-shared/divesummary.h" #include #include +#include + // This class is a pure interface class and may not contain any implementation code // Allowed are: // header @@ -74,6 +77,8 @@ class QMLInterface : public QObject { Q_PROPERTY(bool verbatim_plan READ verbatim_plan WRITE set_verbatim_plan NOTIFY verbatim_planChanged); Q_PROPERTY(bool display_variations READ display_variations WRITE set_display_variations NOTIFY display_variationsChanged); + Q_PROPERTY(QStringList diveSummaryText READ diveSummaryText NOTIFY diveSummaryTextChanged); + public: static QMLInterface *instance(); @@ -163,6 +168,9 @@ public: }; Q_ENUM(DIVE_MODE); + // Function to calculate dive summary + Q_INVOKABLE void summaryCalculation(int primaryPeriod, int secondaryPeriod); + public: CLOUD_STATUS cloud_verification_status() { return (CLOUD_STATUS)prefs.cloud_verification_status; } DURATION duration_units() { return (DURATION)prefs.units.duration_units; } @@ -209,6 +217,8 @@ public: bool verbatim_plan() { return prefs.verbatim_plan; } bool display_variations() { return prefs.display_variations; } + const QStringList &diveSummaryText() { return diveSummary::diveSummaryText; } + public slots: void set_cloud_verification_status(CLOUD_STATUS value) { qPrefCloudStorage::set_cloud_verification_status(value); } void set_duration_units(DURATION value) { qPrefUnits::set_duration_units((units::DURATION)value); } @@ -301,6 +311,7 @@ signals: void verbatim_planChanged(bool value); void display_variationsChanged(bool value); + void diveSummaryTextChanged(QStringList); private: QMLInterface() {} }; -- cgit v1.2.3-70-g09d2