summaryrefslogtreecommitdiff
path: root/qmlplugin/hrGraph.cpp
diff options
context:
space:
mode:
authorArseniy-Movshev <dodoradio@outlook.com>2023-06-08 00:25:53 +0100
committerArseniy-Movshev <dodoradio@outlook.com>2023-06-11 10:17:52 +0100
commit3e411195ff961a641ad94d9b5058d3ad981834b8 (patch)
tree510d27b0dd85b36852d0415304b590e8260a4c7e /qmlplugin/hrGraph.cpp
parent2a1363a223cd8a59f08609c18022d09bda5d66df (diff)
Remove HeartrateGraph QML element
After making several attempts at integrating this element into asteroid-health, I'm still not happy with the heartrate graph code. The issue is that this element doesn't seem to be usable 'as is', and needs some sort of wrapper around it to make it fit with the style of asteroid-health. Effectively this would split the code in half across the two codebases. I also didn't want to specialise this graph code too much for asteroid-health, as I still wanted it to be somewhat generic and reusable. I've decided that I'm going to move this code to asteroid-health. This would allow that graph code to be much more integrated, and would mean that sensorlogd should become much more generic and much easier to use.:q
Diffstat (limited to '')
-rw-r--r--qmlplugin/hrGraph.cpp155
1 files changed, 0 insertions, 155 deletions
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;
-}