diff options
-rw-r--r-- | qmlplugin/CMakeLists.txt | 2 | ||||
-rw-r--r-- | qmlplugin/hrGraph.cpp | 155 | ||||
-rw-r--r-- | qmlplugin/hrGraph.h | 91 | ||||
-rw-r--r-- | qmlplugin/sensorlogdqmlplugin.cpp | 13 |
4 files changed, 5 insertions, 256 deletions
diff --git a/qmlplugin/CMakeLists.txt b/qmlplugin/CMakeLists.txt index 62dbef5..2b36163 100644 --- a/qmlplugin/CMakeLists.txt +++ b/qmlplugin/CMakeLists.txt @@ -6,8 +6,6 @@ add_library( stepsDataLoader.h loggerSettings.cpp loggerSettings.h - hrGraph.cpp - hrGraph.h ) target_link_libraries(sensorlogdqmlplugin diff --git a/qmlplugin/hrGraph.cpp b/qmlplugin/hrGraph.cpp deleted file mode 100644 index 34a3224..0000000 --- a/qmlplugin/hrGraph.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (C) 2023 Arseniy Movshev <dodoradio@outlook.com> - * 2017 Florent Revest <revestflo@gmail.com> - * All rights reserved. - * - * You may use this file under the terms of BSD license as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the author nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "hrGraph.h" -#include "stepsDataLoader.h" - -#include <QPainter> -#include <QDate> -#include <QFile> -#include <QVector> -#include <QSettings> -#include <QStandardPaths> - -HrGraph::HrGraph() -{ - setFlag(ItemHasContents, true); - setAntialiasing(true); - setRenderTarget(QQuickPaintedItem::FramebufferObject); - loadGraphData(); -} - -void HrGraph::paint(QPainter *painter) -{ - if (!m_fileLoadStatus) { - return; - } - int j = m_filedata.count(); - QPointF points[j]; - if (!graphRelative) { - minHrValue = 0; - } - float valueDelta = maxHrValue - minHrValue; - float timeDelta = maxTime - minTime; - float calculatedValue = 0; - float calculatedTimeSeconds = 0; - for(int i = 0; i < j; i++) { - calculatedTimeSeconds = (m_filedata.at(i).time - minTime)/timeDelta; - calculatedValue = 1 - (m_filedata.at(i).value - minHrValue)/valueDelta; - points[i] = QPointF(m_lineWidth + calculatedTimeSeconds*(width()-2*m_lineWidth), m_lineWidth + calculatedValue*(height()-2*m_lineWidth)); //these +2 -1 are here to make sure that the graph fits within the drawn area, as it will be clipped by qt if it doesn't. - } - QPen pen; - pen.setCapStyle(Qt::RoundCap); - pen.setJoinStyle(Qt::RoundJoin); - pen.setWidthF(m_lineWidth); - pen.setColor(m_color); - painter->setRenderHints(QPainter::Antialiasing); - painter->setPen(pen); - painter->drawPolyline(points,j); -} - -void HrGraph::loadGraphData(QDate date) { - m_fileLoadStatus = false; - QFile file(fileNameForDate(date, "heartrateSensor")); - if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { - qDebug() << "failed to open file"; - return; - } - m_fileLoadStatus = true; - QTextStream inStream(&file); - QString line; - int i = 0; - int currTime; - int currValue; - m_filedata.clear(); - while(!inStream.atEnd()) - { - line = inStream.readLine(); - currTime = line.split(":")[0].toInt(); - currValue = line.split(":")[1].toInt(); - HrDatapoint datapoint; - datapoint.time = currTime; - datapoint.value = currValue; - m_filedata.append(datapoint); - if(i == 0) { - minTime = currTime; - maxHrValue = currValue; - minHrValue = currValue; - } - if(currValue > maxHrValue) { maxHrValue = currValue; } - if(currValue < minHrValue) { minHrValue = currValue; } - i++; - } - maxTime = currTime; - qDebug() << "heartrate graph file loading done"; - file.close(); -} - -void HrGraph::setLineColor(QColor color) { - m_color = color; - update(); -} - -QColor HrGraph::lineColor() { - return m_color; -} - -void HrGraph::setLineWidth(float width) { - m_lineWidth = width; - update(); -} - -float HrGraph::lineWidth() { - return m_lineWidth; -} - -int HrGraph::getMaxHrValue() { - return maxHrValue; -} - -int HrGraph::getMinHrValue() { - return minHrValue; -} - -QDateTime HrGraph::getMaxTime() { - return QDateTime::fromSecsSinceEpoch(maxTime); -} - -QDateTime HrGraph::getMinTime() { - return QDateTime::fromSecsSinceEpoch(minTime); -} - -bool HrGraph::relative() { - return graphRelative; -} - -void HrGraph::setRelative(bool newRelative) { - graphRelative = newRelative; -} diff --git a/qmlplugin/hrGraph.h b/qmlplugin/hrGraph.h deleted file mode 100644 index 5811689..0000000 --- a/qmlplugin/hrGraph.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2017 Florent Revest <revestflo@gmail.com> - * All rights reserved. - * - * You may use this file under the terms of BSD license as follows: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the author nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef HRGRAPH_H -#define HRGRAPH_H - -#include <QQuickPaintedItem> -#include <QPixmap> -#include <QDateTime> -#include <QVector> - -class HrGraph : public QQuickPaintedItem -{ - Q_OBJECT - - Q_PROPERTY(float lineWidth READ lineWidth WRITE setLineWidth) - Q_PROPERTY(QColor lineColor READ lineColor WRITE setLineColor NOTIFY lineColorChanged) - Q_PROPERTY(int maxValue READ getMaxHrValue NOTIFY loadingDone) - Q_PROPERTY(int minValue READ getMinHrValue NOTIFY loadingDone) - Q_PROPERTY(QDateTime maxTime READ getMaxTime NOTIFY loadingDone) - Q_PROPERTY(QDateTime minTime READ getMinTime NOTIFY loadingDone) - Q_PROPERTY(bool relativeMode READ relative WRITE setRelative) - - struct HrDatapoint { - qint64 time; - int value; - }; - -public: - HrGraph(); - void paint(QPainter *painter) override; - -signals: - void loadingDone(); - void lineColorChanged(); - -public slots: - float lineWidth(); - void setLineWidth(float width); - QColor lineColor(); - void setLineColor(QColor color); - int getMaxHrValue(); - int getMinHrValue(); - QDateTime getMaxTime(); - QDateTime getMinTime(); - bool relative(); - void setRelative(bool newRelative); - -private: - void updateBasePixmap(); - void loadGraphData(QDate date = QDate::currentDate()); - - float m_lineWidth = 0; - QColor m_color = QColor(255,255,255); - QPixmap m_pixmap; - QList<HrDatapoint> m_filedata; - bool m_fileLoadStatus; - int minHrValue = 0; - int maxHrValue = 0; - int minTime; - int maxTime; - bool graphRelative; -}; - -#endif // ICON_H diff --git a/qmlplugin/sensorlogdqmlplugin.cpp b/qmlplugin/sensorlogdqmlplugin.cpp index 94d4e01..2bdf9a6 100644 --- a/qmlplugin/sensorlogdqmlplugin.cpp +++ b/qmlplugin/sensorlogdqmlplugin.cpp @@ -8,22 +8,19 @@ * 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" #include "loggerSettings.h" -#include "hrGraph.h" +#include "stepsDataLoader.h" +#include <QtQml> -LogdPlugin::LogdPlugin(QObject *parent) : QQmlExtensionPlugin(parent) +LogdPlugin::LogdPlugin(QObject* parent) + : QQmlExtensionPlugin(parent) { } -void LogdPlugin::registerTypes(const char *uri) +void LogdPlugin::registerTypes(const char* uri) { Q_ASSERT(uri == QLatin1String("org.asteroid.sensorlogd")); qmlRegisterType<StepsDataLoader>(uri, 1, 0, "StepsDataLoader"); qmlRegisterType<LoggerSettings>(uri, 1, 0, "LoggerSettings"); - qmlRegisterType<HrGraph>(uri, 1, 0, "HeartrateGraph"); } - |