File indexing completed on 2024-05-19 05:51:03
0001 /* Atelier KDE Printer Host for 3D Printing 0002 Copyright (C) <2016> 0003 Author: Lays Rodrigues - lays.rodrigues@kde.org 0004 Tomaz Canabraza - tcanabrava@kde.org 0005 Chris Rizzitello - rizzitello@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 #include "bedextruderwidget.h" 0021 #include "thermowidget.h" 0022 #include <KLocalizedString> 0023 #include <QBoxLayout> 0024 #include <QLabel> 0025 #include <QRadioButton> 0026 0027 BedExtruderWidget::BedExtruderWidget(QWidget *parent) 0028 : QWidget(parent) 0029 , m_bedThermo(new ThermoWidget(this, QString(i18n("Bed")))) 0030 , m_extruderThermo(new ThermoWidget(this, QString(i18n("HotEnd")))) 0031 , m_extrudersLayout(new QHBoxLayout) 0032 , m_extruderBox(new QWidget(this)) 0033 { 0034 m_bedThermo->setRange(0, 150); 0035 m_extruderThermo->setRange(0, 250); 0036 m_extruderBox->setLayout(m_extrudersLayout); 0037 0038 auto *label = new QLabel(i18n("Active Extruder:"), this); 0039 m_extrudersLayout->addWidget(label); 0040 0041 auto *layout = new QHBoxLayout; 0042 layout->addWidget(m_extruderBox); 0043 layout->addWidget(m_bedThermo); 0044 layout->addWidget(m_extruderThermo); 0045 0046 setLayout(layout); 0047 // Add Default Extruder 0048 setExtruderCount(1); 0049 0050 connect(m_bedThermo, &ThermoWidget::targetTemperatureChanged, this, [this](int v) { emit bedTemperatureChanged(v, false); }); 0051 0052 connect(m_extruderThermo, &ThermoWidget::targetTemperatureChanged, this, [this](int v) { emit extTemperatureChanged(v, currentExtruder(), false); }); 0053 } 0054 0055 void BedExtruderWidget::setExtruderCount(int value) 0056 { 0057 value > 1 ? m_extruderBox->setVisible(true) : m_extruderBox->setVisible(false); 0058 if (value == m_extruderCount) { 0059 return; 0060 } 0061 0062 if (m_extruderCount < value) { 0063 // loop for the new buttons 0064 for (int i = m_extruderCount; i < value; i++) { 0065 auto *rb = new QRadioButton(QString::number(i + 1), this); 0066 m_extrudersLayout->addWidget(rb); 0067 extruderMap.insert(i, rb); 0068 } 0069 } else { 0070 // remove buttons - need to test it! 0071 for (int i = m_extruderCount; i >= value; i--) { 0072 auto *rb = extruderMap.value(i); 0073 m_extrudersLayout->removeWidget(rb); 0074 extruderMap.remove(i); 0075 delete (rb); 0076 } 0077 } 0078 m_extruderCount = value; 0079 } 0080 0081 void BedExtruderWidget::updateBedTemp(const float temp) 0082 { 0083 m_bedThermo->setCurrentTemperature(double(temp)); 0084 } 0085 0086 void BedExtruderWidget::updateExtTemp(const float temp) 0087 { 0088 m_extruderThermo->setCurrentTemperature(double(temp)); 0089 } 0090 0091 void BedExtruderWidget::updateBedTargetTemp(const int temp) 0092 { 0093 m_bedThermo->setTargetTemperature(temp); 0094 } 0095 0096 void BedExtruderWidget::updateExtTargetTemp(const int temp) 0097 { 0098 m_extruderThermo->setTargetTemperature(temp); 0099 } 0100 0101 int BedExtruderWidget::currentExtruder() 0102 { 0103 int currExt = 0; 0104 for (int i = 0; i < extruderMap.size(); i++) { 0105 if (extruderMap.value(i)->isChecked()) { 0106 currExt = i; 0107 break; 0108 } 0109 } 0110 return currExt; 0111 } 0112 0113 void BedExtruderWidget::setBedMaxTemperature(int value) 0114 { 0115 m_bedThermo->setRange(0, value); 0116 } 0117 0118 void BedExtruderWidget::setExtruderMaxTemperature(int value) 0119 { 0120 m_extruderThermo->setRange(0, value); 0121 } 0122 0123 void BedExtruderWidget::setBedThermoHidden(bool hidden) 0124 { 0125 m_bedThermo->setHidden(hidden); 0126 }