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