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; };