From ec42177b24b47ba68b3ae49634c942c76a9f92d4 Mon Sep 17 00:00:00 2001 From: Arseniy-Movshev Date: Sun, 19 Mar 2023 11:14:04 +0000 Subject: Restructure to split to daemon and qml accessor - add separate subdirs for daemon and qml - add some generic qml boilerplate - add a really lazy 'last value' loader implementation - license the project as gplv3 (add copyright notices and license text) --- qmlplugin/CMakeLists.txt | 16 ++++++++++++++ qmlplugin/qmldir | 3 +++ qmlplugin/sensorlogdqmlplugin.cpp | 25 ++++++++++++++++++++++ qmlplugin/sensorlogdqmlplugin.h | 27 +++++++++++++++++++++++ qmlplugin/stepsDataLoader.cpp | 45 +++++++++++++++++++++++++++++++++++++++ qmlplugin/stepsDataLoader.h | 26 ++++++++++++++++++++++ 6 files changed, 142 insertions(+) create mode 100644 qmlplugin/CMakeLists.txt create mode 100644 qmlplugin/qmldir create mode 100644 qmlplugin/sensorlogdqmlplugin.cpp create mode 100644 qmlplugin/sensorlogdqmlplugin.h create mode 100644 qmlplugin/stepsDataLoader.cpp create mode 100644 qmlplugin/stepsDataLoader.h (limited to 'qmlplugin') diff --git a/qmlplugin/CMakeLists.txt b/qmlplugin/CMakeLists.txt new file mode 100644 index 0000000..cb65f44 --- /dev/null +++ b/qmlplugin/CMakeLists.txt @@ -0,0 +1,16 @@ +add_library( + sensorlogdqmlplugin + sensorlogdqmlplugin.cpp + sensorlogdqmlplugin.h + stepsDataLoader.cpp + stepsDataLoader.h +) + +target_link_libraries(sensorlogdqmlplugin + Qt5::Qml +) + +install(TARGETS sensorlogdqmlplugin + DESTINATION ${INSTALL_QML_IMPORT_DIR}/org/asteroid/sensorlogd) +install(FILES qmldir + DESTINATION ${INSTALL_QML_IMPORT_DIR}/org/asteroid/sensorlogd) diff --git a/qmlplugin/qmldir b/qmlplugin/qmldir new file mode 100644 index 0000000..3a7ddb6 --- /dev/null +++ b/qmlplugin/qmldir @@ -0,0 +1,3 @@ +module org.asteroid.sensorlogd + +plugin sensorlogdqmlplugin diff --git a/qmlplugin/sensorlogdqmlplugin.cpp b/qmlplugin/sensorlogdqmlplugin.cpp new file mode 100644 index 0000000..107c2be --- /dev/null +++ b/qmlplugin/sensorlogdqmlplugin.cpp @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2023 Arseniy Movshev + * 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 . + */ + + +#include "sensorlogdqmlplugin.h" +#include +#include "stepsDataLoader.h" + +LogdPlugin::LogdPlugin(QObject *parent) : QQmlExtensionPlugin(parent) +{ +} + +void LogdPlugin::registerTypes(const char *uri) +{ + Q_ASSERT(uri == QLatin1String("org.asteroid.sensorlogd")); + qmlRegisterType(uri, 1, 0, "StepsDataLoader"); +} + diff --git a/qmlplugin/sensorlogdqmlplugin.h b/qmlplugin/sensorlogdqmlplugin.h new file mode 100644 index 0000000..420bf46 --- /dev/null +++ b/qmlplugin/sensorlogdqmlplugin.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2023 Arseniy Movshev + * 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 . + */ + +#ifndef SENSORLOGDQMLPLUGIN_H +#define SENSORLOGDQMLPLUGIN_H + +#include + +class LogdPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + +public: + explicit LogdPlugin(QObject *parent = 0); + void registerTypes(const char *uri); +}; + +#endif // SENSORLOGDQMLPLUGIN_H + diff --git a/qmlplugin/stepsDataLoader.cpp b/qmlplugin/stepsDataLoader.cpp new file mode 100644 index 0000000..1180f0b --- /dev/null +++ b/qmlplugin/stepsDataLoader.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2023 Arseniy Movshev + * 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 . + */ + +#include +#include +#include +#include +#include + +#include "stepsDataLoader.h" + +StepsDataLoader::StepsDataLoader() : QObject() +{ +} + +int StepsDataLoader::getTodayData() { // This is obvious garbage. This should really be abstracted and cached, so that every page doesn't have to reload the file from scratch. +// The intention is to also add graph functionality at some point. The graph will be simplifying the data before loading it in - it would be worth caching the simplified data when it comes to that as well. + QFile file(fileNameForDate(QDate::currentDate(), "stepCounter")); + if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { + qDebug() << "failed to open file"; + return 0; + } + QTextStream inStream(&file); + QString line; + int i; + while(!inStream.atEnd()) + { + line = inStream.readLine(); + qDebug() << line; + i++; + } + file.close(); + return line.split(":")[1].toInt(); +} + +QString fileNameForDate(QDate date, QString prefix) { + return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/asteroid-healthloggerd/" + prefix + "/" + date.toString("yyyy-MM-dd.log"); +} diff --git a/qmlplugin/stepsDataLoader.h b/qmlplugin/stepsDataLoader.h new file mode 100644 index 0000000..7be8bfc --- /dev/null +++ b/qmlplugin/stepsDataLoader.h @@ -0,0 +1,26 @@ +/*/* + * Copyright (C) 2023 Arseniy Movshev + * 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 . + */ + +#ifndef STEPSDATALOADER_H +#define STEPSDATALOADER_H + +#include + +class StepsDataLoader : public QObject +{ + Q_OBJECT + +public: + explicit StepsDataLoader(); + Q_INVOKABLE int getTodayData(); +}; +QString fileNameForDate(QDate date, QString prefix); + +#endif // STEPSDATALOADER_H -- cgit v1.2.3-54-g00ecf