summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArseniy-Movshev <dodoradio@outlook.com>2023-07-02 12:59:26 +0100
committerArseniy-Movshev <dodoradio@outlook.com>2023-07-02 12:59:26 +0100
commitac674c969d2e6dec677f64571f73a15216630171 (patch)
tree0c3a74bd1b284f76f042032be89f4bd6b02484aa
parent162c92bc3b3a7dbe3d1484f7efc812aa36b23bcb (diff)
Add a weight data accessor
this doesn't have a sensor associated with it, as it's meant to be logged manually through UI - but we're still using the same model as the other data sources
Diffstat (limited to '')
-rw-r--r--qmlplugin/CMakeLists.txt2
-rw-r--r--qmlplugin/sensorlogdqmlplugin.cpp2
-rw-r--r--qmlplugin/weightDataLoader.cpp58
-rw-r--r--qmlplugin/weightDataLoader.h32
4 files changed, 94 insertions, 0 deletions
diff --git a/qmlplugin/CMakeLists.txt b/qmlplugin/CMakeLists.txt
index 8149e49..7fe0ac9 100644
--- a/qmlplugin/CMakeLists.txt
+++ b/qmlplugin/CMakeLists.txt
@@ -6,6 +6,8 @@ add_library(
stepsDataLoader.h
hrDataLoader.cpp
hrDataLoader.h
+ weightDataLoader.cpp
+ weightDataLoader.h
loggerSettings.cpp
loggerSettings.h
../common.cpp
diff --git a/qmlplugin/sensorlogdqmlplugin.cpp b/qmlplugin/sensorlogdqmlplugin.cpp
index 090679a..8b04b56 100644
--- a/qmlplugin/sensorlogdqmlplugin.cpp
+++ b/qmlplugin/sensorlogdqmlplugin.cpp
@@ -12,6 +12,7 @@
#include "loggerSettings.h"
#include "stepsDataLoader.h"
#include "hrDataLoader.h"
+#include "weightDataLoader.h"
#include <QtQml>
LogdPlugin::LogdPlugin(QObject* parent)
@@ -24,5 +25,6 @@ void LogdPlugin::registerTypes(const char* uri)
Q_ASSERT(uri == QLatin1String("org.asteroid.sensorlogd"));
qmlRegisterType<StepsDataLoader>(uri, 1, 0, "StepsDataLoader");
qmlRegisterType<HrDataLoader>(uri, 1, 0, "HrDataLoader");
+ qmlRegisterType<WeightDataLoader>(uri, 1, 0, "WeightDataLoader");
qmlRegisterType<LoggerSettings>(uri, 1, 0, "LoggerSettings");
}
diff --git a/qmlplugin/weightDataLoader.cpp b/qmlplugin/weightDataLoader.cpp
new file mode 100644
index 0000000..a81201a
--- /dev/null
+++ b/qmlplugin/weightDataLoader.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2023 Arseniy Movshev <dodoradio@outlook.com>
+ * This file is part of sensorlogd, a sensor logger for the AsteroidOS smartwatch OS.
+ *
+ * sensorlogd is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * sensorlogd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <QDebug>
+#include <QFile>
+#include <QTextStream>
+#include <QDate>
+#include <QSettings>
+#include <QDBusInterface>
+#include <QPointF>
+
+#include "weightDataLoader.h"
+#include "../common.h"
+
+WeightDataLoader::WeightDataLoader() : QObject()
+{
+ m_iface = new QDBusInterface("org.asteroid.sensorlogd.logger","/org/asteroid/sensorlogd/logger","", QDBusConnection::sessionBus(), this);
+ if (!m_iface->isValid()) {
+ qDebug()<<"interface is not valid";
+ } else {
+ qDebug()<<"interface is valid";
+ }
+}
+
+QVariant WeightDataLoader::getTodayData() {
+ return getDataForDate(QDate::currentDate());
+}
+
+QVariant WeightDataLoader::getDataForDate(QDate date) {
+ QList<QPointF> m_filedata;
+ QFile file(fileNameForDate(date, "weight"));
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ qDebug() << "failed to open file";
+ return QVariant::fromValue(m_filedata);
+ }
+ QTextStream inStream(&file);
+ QString line;
+ while (!inStream.atEnd()) {
+ line = inStream.readLine();
+ QPointF point;
+ point.setX(line.split(":")[0].toInt());
+ point.setY(line.split(":")[1].toInt());
+ m_filedata.append(point);
+ }
+ file.close();
+ return QVariant::fromValue(m_filedata);
+}
+
+void WeightDataLoader::triggerDaemonRecording() {
+ m_iface->call("triggerRecording");
+}
diff --git a/qmlplugin/weightDataLoader.h b/qmlplugin/weightDataLoader.h
new file mode 100644
index 0000000..63067f4
--- /dev/null
+++ b/qmlplugin/weightDataLoader.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2023 Arseniy Movshev <dodoradio@outlook.com>
+ * This file is part of sensorlogd, a sensor logger for the AsteroidOS smartwatch OS.
+ *
+ * sensorlogd is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * sensorlogd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef WEIGHTDATALOADER_H
+#define WEIGHTDATALOADER_H
+
+#include <QObject>
+#include <QDBusInterface>
+#include <QPointF>
+#include <QDate>
+
+class WeightDataLoader : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit WeightDataLoader();
+ Q_INVOKABLE QVariant getDataForDate(QDate date);
+ Q_INVOKABLE QVariant getTodayData();
+ Q_INVOKABLE void triggerDaemonRecording();
+private:
+ QDBusInterface *m_iface;
+};
+
+#endif // WEIGHTDATALOADER_H