File indexing completed on 2024-05-19 05:51:04

0001 /* Atelier KDE Printer Host for 3D Printing
0002     Copyright (C) <2019>
0003     Author: Tomaz Canabrava - tcanabrava@kde.org
0004             Chris Rizzitello - rizzitello@kde.org
0005             Lays Rodrigues - lays.rodrigues@kde.org
0006 
0007     This program is free software: you can redistribute it and/or modify
0008     it under the terms of the GNU General Public License as published by
0009     the Free Software Foundation, either version 3 of the License, or
0010     (at your option) any later version.
0011 
0012     This program is distributed in the hope that it will be useful,
0013     but WITHOUT ANY WARRANTY; without even the implied warranty of
0014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0015     GNU General Public License for more details.
0016 
0017     You should have received a copy of the GNU General Public License
0018     along with this program.  If not, see <http://www.gnu.org/licenses/>.
0019 */
0020 #pragma once
0021 #include "qcgaugewidget.h"
0022 
0023 class QKeyEvent;
0024 class QPaintEvent;
0025 class QFocusEvent;
0026 class QWheelEvent;
0027 
0028 class ThermoWidget : public QcGaugeWidget
0029 {
0030     Q_OBJECT
0031 public:
0032     ThermoWidget(QWidget *parent, const QString &name);
0033     ~ThermoWidget() override = default;
0034     void setCurrentTemperature(double temperature);
0035     void setTargetTemperature(int temperature);
0036     void setRange(int min, int max);
0037     void setName(const QString &name);
0038 
0039 signals:
0040     void targetTemperatureChanged(double targetTemperature);
0041 
0042 protected:
0043     void keyPressEvent(QKeyEvent *event) override;
0044     void wheelEvent(QWheelEvent *event) override;
0045     void focusInEvent(QFocusEvent *event) override;
0046     void focusOutEvent(QFocusEvent *event) override;
0047     void paintEvent(QPaintEvent *event) override;
0048 
0049 private:
0050     QcNeedleItem *m_currentTemperatureNeedle = nullptr;
0051     QcNeedleItem *m_targetTemperatureNeedle = nullptr;
0052     QcDegreesItem *m_ticksItem = nullptr;
0053     QcDegreesItem *m_subTicksItem = nullptr;
0054     QcLabelItem *m_nameLabel = nullptr;
0055     QcValuesItem *m_valueDisplay = nullptr;
0056     QTimer *m_cursorTimer = nullptr;
0057     QTimer *m_tempChangedTimer = nullptr;
0058     QString m_targetTemperatureText = QStringLiteral("0");
0059     bool m_paintCursor = false;
0060     int m_cursorPos = 0;
0061     double m_currentTemperature;
0062     int m_targetTemperature;
0063     int m_maxValue = 100;
0064     int m_minValue = 0;
0065     void resetTimer();
0066     bool isEqual(double a = 0, double b = 0);
0067 };