diff --git a/src/widgets/plotwidget.cpp b/src/widgets/plotwidget.cpp
index eb464af..55a762b 100644
--- a/src/widgets/plotwidget.cpp
+++ b/src/widgets/plotwidget.cpp
@@ -1,96 +1,102 @@
/* Atelier KDE Printer Host for 3D Printing
Copyright (C) <2016>
Author: Patrick José Pereira - patrickelectric@gmail.com
- This program 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.
+ This program 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 any later version accepted by the membership of
+ KDE e.V. (or its successor approved by the membership of KDE
+ e.V.), which shall act as a proxy defined in Section 14 of
+ version 3 of the license.
This program 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 "plotwidget.h"
#include
-#include
+
+#include "plotwidget.h"
PlotWidget::PlotWidget(QWidget *parent) :
QWidget(parent)
{
_chart = new QChartView;
+ if (palette().text().color().value() >= QColor(Qt::lightGray).value()) {
+ _chart->chart()->setTheme(QChart::ChartThemeDark);
+ }
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(_chart);
this->setLayout(mainLayout);
- newPlot(i18n("Actual Bed"));
- newPlot(i18n("Target Bed"));
+ newPlot(tr("Actual Bed"));
+ newPlot(tr("Target Bed"));
// The extruder need to be added after some signal emitted (ExtruderCountChanged)
- newPlot(i18n("Actual Ext.1"));
- newPlot(i18n("Target Ext.1"));
+ newPlot(tr("Actual Ext.1"));
+ newPlot(tr("Target Ext.1"));
update();
}
void PlotWidget::newPlot(QString name)
{
// Create a new plot
_name2Index[name] = _plots.size();
plot _newPlot;
_newPlot.setName(name);
_plots.append(_newPlot);
}
void PlotWidget::deletePlot(QString name)
{
_plots.remove(_name2Index[name]);
_name2Index[name] = -1;
}
void PlotWidget::appendPoint(QString name, float value)
{
_plots[_name2Index[name]].pushPoint(value);
}
void PlotWidget::update()
{
static bool firstTimeCheck = true;
static QDateTimeAxis *axisX = new QDateTimeAxis;
static QValueAxis *axisY = new QValueAxis;
// After already executed, update time axis
if (firstTimeCheck == false) {
_chart->chart()->axisX()->setRange(QDateTime::currentDateTime().addSecs(-120), QDateTime::currentDateTime());
return;
}
firstTimeCheck = false;
axisX->setTickCount(3);
axisX->setFormat(QStringLiteral("hh:mm:ss"));
axisY->setLabelFormat(QStringLiteral("%d"));
- axisY->setTitleText(i18n("Temp."));
+ axisY->setTitleText(tr("Temp."));
_chart->chart()->addAxis(axisY, Qt::AlignLeft);
_chart->chart()->addAxis(axisX, Qt::AlignBottom);
_chart->chart()->axisY()->setRange(0, 3e2);
_chart->chart()->axisX()->setRange(QDateTime::currentDateTime().addSecs(-120), QDateTime::currentDateTime());
for (auto plot : _plots) {
_chart->chart()->addSeries(plot.serie());
plot.serie()->attachAxis(axisY);
plot.serie()->attachAxis(axisX);
}
_chart->setRenderHint(QPainter::Antialiasing);
}
PlotWidget::~PlotWidget()
{
}
diff --git a/src/widgets/plotwidget.h b/src/widgets/plotwidget.h
index fef3717..03068d5 100644
--- a/src/widgets/plotwidget.h
+++ b/src/widgets/plotwidget.h
@@ -1,113 +1,116 @@
/* Atelier KDE Printer Host for 3D Printing
Copyright (C) <2016>
Author: Patrick José Pereira - patrickelectric@gmail.com
- This program 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.
+ This program 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 any later version accepted by the membership of
+ KDE e.V. (or its successor approved by the membership of KDE
+ e.V.), which shall act as a proxy defined in Section 14 of
+ version 3 of the license.
This program 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 .
*/
#pragma once
#include
#include
#include
class PlotWidget : public QWidget
{
Q_OBJECT
public:
explicit PlotWidget(QWidget *parent = nullptr);
- ~PlotWidget();
+ ~PlotWidget() override;
/**
* @brief Create a new plot
*
* @param name p_name: plot name
*/
void newPlot(QString name);
/**
* @brief Delete plot with name
*
* @param name p_name: name
*/
void deletePlot(QString name);
/**
* @brief Append point to plot
*
* @param name p_name: plot name
* @param value p_value: value
*/
void appendPoint(QString name, float value);
/**
* @brief Update plot list, need to run after ALL plots added
*
*/
void update();
private:
QChartView *_chart;
QHash _name2Index;
class plot
{
public:
explicit plot()
{
_series = new QLineSeries();
};
~plot()
{
// Series will be deleted with chart
};
void pushPoint(float value)
{
QDateTime now = QDateTime::currentDateTime();
_series->append(now.toMSecsSinceEpoch(), value);
}
void setName(QString name)
{
_name = name;
_series->setName(_name);
//Add 3 initial points to plot
QDateTime now = QDateTime::currentDateTime();
_series->append(now.toMSecsSinceEpoch() - 2 * 60e3, 0.0);
_series->append(now.toMSecsSinceEpoch() - 60e3, 0.0);
_series->append(now.toMSecsSinceEpoch(), 0.0);
}
QLineSeries *serie()
{
return _series;
}
QString name()
{
return _name;
}
private:
QLineSeries *_series;
QString _name;
};
QVector _plots;
};