diff options
Diffstat (limited to 'backend-shared')
-rw-r--r-- | backend-shared/CMakeLists.txt | 2 | ||||
-rw-r--r-- | backend-shared/plannershared.cpp | 61 | ||||
-rw-r--r-- | backend-shared/plannershared.h | 55 |
3 files changed, 118 insertions, 0 deletions
diff --git a/backend-shared/CMakeLists.txt b/backend-shared/CMakeLists.txt index b6502bfdf..fdfdb1e05 100644 --- a/backend-shared/CMakeLists.txt +++ b/backend-shared/CMakeLists.txt @@ -3,6 +3,8 @@ set(BACKEND_SRCS exportfuncs.cpp exportfuncs.h + plannershared.cpp + plannershared.h ) add_library(subsurface_backend_shared STATIC ${BACKEND_SRCS}) diff --git a/backend-shared/plannershared.cpp b/backend-shared/plannershared.cpp new file mode 100644 index 000000000..ff95b9e0e --- /dev/null +++ b/backend-shared/plannershared.cpp @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "plannershared.h" +#include "core/pref.h" +#include "core/settings/qPrefDivePlanner.h" + + +plannerShared *plannerShared::instance() +{ + static plannerShared *self = new plannerShared; + return self; +} + +// Used to convert between meter/feet and keep the qPref variables independent +#define TO_MM_BY_SEC ((prefs.units.length == units::METERS) ? 1000.0 / 60.0 : feet_to_mm(1.0) / 60.0) + +// Converted meter/feet qPrefDivePlanner values +int plannerShared::ascratelast6m() +{ + return lrint(prefs.ascratelast6m / TO_MM_BY_SEC); +} +void plannerShared::set_ascratelast6m(int value) +{ + qPrefDivePlanner::set_ascratelast6m(value * TO_MM_BY_SEC); +} + +int plannerShared::ascratestops() +{ + return lrint(prefs.ascratestops / TO_MM_BY_SEC); +} +void plannerShared::set_ascratestops(int value) +{ + qPrefDivePlanner::set_ascratestops(value * TO_MM_BY_SEC); +} + +int plannerShared::ascrate50() +{ + return lrint(prefs.ascrate50 / TO_MM_BY_SEC); +} +void plannerShared::set_ascrate50(int value) +{ + qPrefDivePlanner::set_ascrate50(value * TO_MM_BY_SEC); +} + +int plannerShared::ascrate75() +{ + return lrint(prefs.ascrate75 / TO_MM_BY_SEC); +} +void plannerShared::set_ascrate75(int value) +{ + qPrefDivePlanner::set_ascrate75(value * TO_MM_BY_SEC); +} + +int plannerShared::descrate() +{ + return lrint(prefs.descrate / TO_MM_BY_SEC); +} +void plannerShared::set_descrate(int value) +{ + qPrefDivePlanner::set_descrate(value * TO_MM_BY_SEC); +} + diff --git a/backend-shared/plannershared.h b/backend-shared/plannershared.h new file mode 100644 index 000000000..136eb9cdf --- /dev/null +++ b/backend-shared/plannershared.h @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef PLANNERSHARED_H +#define PLANNERSHARED_H +#include <QObject> + +// This is a shared class (mobile/desktop), and contains the core of the diveplanner +// without UI entanglement. +// It make variables and functions available to QML, these are referenced directly +// in the desktop version +// +// The mobile diveplanner shows all diveplans, but the editing functionality is +// limited to keep the UI simpler. + +class plannerShared: public QObject { + Q_OBJECT + + // Ascend/Descend data, converted to meter/feet depending on user selection + // Settings these will automatically update the corresponding qPrefDivePlanner + // Variables + Q_PROPERTY(int ascratelast6m READ ascratelast6m WRITE set_ascratelast6m NOTIFY ascratelast6mChanged); + Q_PROPERTY(int ascratestops READ ascratestops WRITE set_ascratestops NOTIFY ascratestopsChanged); + Q_PROPERTY(int ascrate50 READ ascrate50 WRITE set_ascrate50 NOTIFY ascrate50Changed); + Q_PROPERTY(int ascrate75 READ ascrate75 WRITE set_ascrate75 NOTIFY ascrate75Changed); + Q_PROPERTY(int descrate READ descrate WRITE set_descrate NOTIFY descrateChanged); +public: + static plannerShared *instance(); + + // Ascend/Descend data, converted to meter/feet depending on user selection + static int ascratelast6m(); + static int ascratestops(); + static int ascrate50(); + static int ascrate75(); + static int descrate(); + +public slots: + // Ascend/Descend data, converted to meter/feet depending on user selection + static void set_ascratelast6m(int value); + static void set_ascratestops(int value); + static void set_ascrate50(int value); + static void set_ascrate75(int value); + static void set_descrate(int value); + +signals: + // Ascend/Descend data, converted to meter/feet depending on user selection + void ascratelast6mChanged(int value); + void ascratestopsChanged(int value); + void ascrate50Changed(int value); + void ascrate75Changed(int value); + void descrateChanged(int value); + +private: + plannerShared() {} +}; + +#endif // PLANNERSHARED_H |