diff options
author | Arseniy-Movshev <dodoradio@outlook.com> | 2023-03-19 11:14:04 +0000 |
---|---|---|
committer | Arseniy-Movshev <dodoradio@outlook.com> | 2023-05-26 00:32:20 +0100 |
commit | ec42177b24b47ba68b3ae49634c942c76a9f92d4 (patch) | |
tree | b0b85601ef46f4e0bd8bb94f81eb89faaf8da5f1 /qmlplugin | |
parent | bfe0c3f7a03c53cff7a4050a42f14eaa210364f8 (diff) |
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)
Diffstat (limited to 'qmlplugin')
-rw-r--r-- | qmlplugin/CMakeLists.txt | 16 | ||||
-rw-r--r-- | qmlplugin/qmldir | 3 | ||||
-rw-r--r-- | qmlplugin/sensorlogdqmlplugin.cpp | 25 | ||||
-rw-r--r-- | qmlplugin/sensorlogdqmlplugin.h | 27 | ||||
-rw-r--r-- | qmlplugin/stepsDataLoader.cpp | 45 | ||||
-rw-r--r-- | qmlplugin/stepsDataLoader.h | 26 |
6 files changed, 142 insertions, 0 deletions
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 <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 "sensorlogdqmlplugin.h" +#include <QtQml> +#include "stepsDataLoader.h" + +LogdPlugin::LogdPlugin(QObject *parent) : QQmlExtensionPlugin(parent) +{ +} + +void LogdPlugin::registerTypes(const char *uri) +{ + Q_ASSERT(uri == QLatin1String("org.asteroid.sensorlogd")); + qmlRegisterType<StepsDataLoader>(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 <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 SENSORLOGDQMLPLUGIN_H +#define SENSORLOGDQMLPLUGIN_H + +#include <QQmlExtensionPlugin> + +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 <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 <QStandardPaths> + +#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 <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 STEPSDATALOADER_H +#define STEPSDATALOADER_H + +#include <QObject> + +class StepsDataLoader : public QObject +{ + Q_OBJECT + +public: + explicit StepsDataLoader(); + Q_INVOKABLE int getTodayData(); +}; +QString fileNameForDate(QDate date, QString prefix); + +#endif // STEPSDATALOADER_H |