diff --git a/src/dialogs/profilesdialog.h b/src/dialogs/profilesdialog.h --- a/src/dialogs/profilesdialog.h +++ b/src/dialogs/profilesdialog.h @@ -1,5 +1,5 @@ /* Atelier KDE Printer Host for 3D Printing - Copyright (C) <2016> + Copyright (C) <2016 - 2019> Author: Lays Rodrigues - lays.rodrigues@kde.org Chris Rizzitello - rizzitello@kde.org This program is free software: you can redistribute it and/or modify @@ -16,57 +16,17 @@ along with this program. If not, see . */ #pragma once -#include #include -#include - -namespace Ui -{ -class ProfilesDialog; -} class ProfilesDialog : public QDialog { Q_OBJECT public: explicit ProfilesDialog(QWidget *parent = nullptr); - ~ProfilesDialog(); + ~ProfilesDialog() = default; -private: - Ui::ProfilesDialog *ui; - QSettings m_settings; - void askToSave(); - void buttonBoxClicked(QAbstractButton *btn); - QStringList detectFWPlugins(); - QStringList firmwaresInPath(const QString &path); - void loadSettings(const QString ¤tProfile = QString()); - void removeProfile(); - void save(); - void saveSettings(); - void updateCBProfiles(); - void setModified(bool modified); - bool m_modified; - int m_prevIndex = 0; signals: void updateProfiles(); }; -namespace SERIAL -{ -static const QStringList BAUDS = { - QStringList() << - QStringLiteral("9600") << - QStringLiteral("14400") << - QStringLiteral("19200") << - QStringLiteral("28800") << - QStringLiteral("38400") << - QStringLiteral("57600") << - QStringLiteral("76800") << - QStringLiteral("115200") << - QStringLiteral("230400") << - QStringLiteral("250000") << - QStringLiteral("500000") << - QStringLiteral("1000000") -}; -} diff --git a/src/dialogs/profilesdialog.cpp b/src/dialogs/profilesdialog.cpp --- a/src/dialogs/profilesdialog.cpp +++ b/src/dialogs/profilesdialog.cpp @@ -16,277 +16,22 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include + #include -#include -#include +#include +#include + #include "profilesdialog.h" -#include "ui_profilesdialog.h" ProfilesDialog::ProfilesDialog(QWidget *parent) : QDialog(parent) - , ui(new Ui::ProfilesDialog) - , m_modified(false) -{ - ui->setupUi(this); - ui->firmwareCB->addItem(QStringLiteral("Auto-Detect")); - ui->firmwareCB->addItems(detectFWPlugins()); - ui->baudCB->addItems(SERIAL::BAUDS); - ui->baudCB->setCurrentText(QLatin1String("115200")); - ui->profileCB->setAutoCompletion(true); - connect(ui->profileCB, QOverload::of(&QComboBox::currentIndexChanged), this, [this](const int newIndex) { - blockSignals(true); - ui->profileCB->setCurrentIndex(m_prevIndex); - blockSignals(false); - askToSave(); - blockSignals(true); - m_prevIndex = newIndex; - ui->profileCB->setCurrentIndex(m_prevIndex); - blockSignals(false); - loadSettings(); - }); - updateCBProfiles(); - - connect(ui->buttonBox, &QDialogButtonBox::clicked, this, &ProfilesDialog::buttonBoxClicked); - connect(ui->heatedBedCK, &QCheckBox::clicked, this, [this](const bool & status) { - ui->bedTempSB->setEnabled(status); - }); - - connect(ui->cartesianRB, &QRadioButton::clicked, this, [this] { - ui->printerTypeStack->setCurrentIndex(1); - }); - - connect(ui->deltaRB, &QRadioButton::clicked, this, [this] { - ui->printerTypeStack->setCurrentIndex(0); - }); - - connect(ui->removeProfilePB, &QPushButton::clicked, this, &ProfilesDialog::removeProfile); - ui->removeProfilePB->setIcon(QIcon::fromTheme(QStringLiteral("edit-delete"), style()->standardIcon(QStyle::SP_TrashIcon))); - -//if any control is modified and no load / save has happened contents are not saved. - auto modify = [this] {setModified(true);}; - connect(ui->baudCB, &QComboBox::currentTextChanged, modify); - connect(ui->radiusSB, &QSpinBox::editingFinished, modify); - connect(ui->z_delta_dimensionSB, &QSpinBox::editingFinished, modify); - connect(ui->x_dimensionSB, &QSpinBox::editingFinished, modify); - connect(ui->y_dimensionSB, &QSpinBox::editingFinished, modify); - connect(ui->z_dimensionSB, &QSpinBox::editingFinished, modify); - connect(ui->heatedBedCK, &QCheckBox::stateChanged, modify); - connect(ui->bedTempSB, &QSpinBox::editingFinished, modify); - connect(ui->extruderTempSB, &QSpinBox::editingFinished, modify); - connect(ui->postPauseLE, &QLineEdit::editingFinished, modify); - connect(ui->firmwareCB, &QComboBox::currentTextChanged, modify); - connect(ui->autoReportTempCK, &QCheckBox::stateChanged, modify); -} - -ProfilesDialog::~ProfilesDialog() -{ - delete ui; -} - -void ProfilesDialog::buttonBoxClicked(QAbstractButton *btn) -{ - switch (ui->buttonBox->buttonRole(btn)) { - case QDialogButtonBox::ResetRole: - askToSave(); - loadSettings(); - break; - case QDialogButtonBox::RejectRole: - askToSave(); - close(); - break; - case QDialogButtonBox::AcceptRole: - saveSettings(); - break; - default: - break; - } -} - -void ProfilesDialog::saveSettings() -{ - m_settings.beginGroup(QStringLiteral("Profiles")); - QStringList groups = m_settings.childGroups(); - m_settings.endGroup(); - if (groups.contains(ui->profileCB->currentText())) { - int ret = QMessageBox::warning( - this - , i18n("Overwrite Profile?") - , i18n("A profile with this name already exists. \n Are you sure you want to overwrite it?") - , QMessageBox::Save - , QMessageBox::Cancel - ); - - if (ret == QMessageBox::Cancel) { - return; - } - } - save(); -} - -void ProfilesDialog::save() -{ - QString currentProfile = ui->profileCB->currentText(); - //Add indent to better view of the data - m_settings.beginGroup(QStringLiteral("Profiles")); - m_settings.beginGroup(currentProfile); - //BED - if (ui->cartesianRB->isChecked()) { - m_settings.setValue(QStringLiteral("isCartesian"), true); - m_settings.setValue(QStringLiteral("dimensionX"), ui->x_dimensionSB->value()); - m_settings.setValue(QStringLiteral("dimensionY"), ui->y_dimensionSB->value()); - m_settings.setValue(QStringLiteral("dimensionZ"), ui->z_dimensionSB->value()); - } else { - m_settings.setValue(QStringLiteral("isCartesian"), false); - m_settings.setValue(QStringLiteral("radius"), ui->radiusSB->value()); - m_settings.setValue(QStringLiteral("z_delta_dimension"), ui->z_delta_dimensionSB->value()); - } - - m_settings.setValue(QStringLiteral("heatedBed"), ui->heatedBedCK->isChecked()); - m_settings.setValue(QStringLiteral("maximumTemperatureBed"), ui->bedTempSB->value()); - //HOTEND - m_settings.setValue(QStringLiteral("maximumTemperatureExtruder"), ui->extruderTempSB->value()); - m_settings.setValue(QStringLiteral("autoReportTemp"), ui->autoReportTempCK->isChecked()); - //Baud - m_settings.setValue(QStringLiteral("bps"), ui->baudCB->currentText()); - m_settings.setValue(QStringLiteral("firmware"), ui->firmwareCB->currentText()); - m_settings.setValue(QStringLiteral("postPause"), ui->postPauseLE->text()); - m_settings.endGroup(); - m_settings.endGroup(); - - //Load new profile - setModified(false); - updateCBProfiles(); - loadSettings(currentProfile); - emit updateProfiles(); -} - -void ProfilesDialog::loadSettings(const QString ¤tProfile) -{ - m_settings.beginGroup(QStringLiteral("Profiles")); - const QString profileName = currentProfile.isEmpty() ? ui->profileCB ->currentText() : currentProfile; - ui->profileCB->setCurrentText(profileName); - m_settings.beginGroup(profileName); - - //BED - if (m_settings.value(QStringLiteral("isCartesian")).toBool()) { - ui->printerTypeStack->setCurrentIndex(1); - ui->cartesianRB->setChecked(true); - ui->deltaRB->setChecked(false); - ui->x_dimensionSB->setValue(m_settings.value(QStringLiteral("dimensionX"), QStringLiteral("0")).toInt()); - ui->y_dimensionSB->setValue(m_settings.value(QStringLiteral("dimensionY"), QStringLiteral("0")).toInt()); - ui->z_dimensionSB->setValue(m_settings.value(QStringLiteral("dimensionZ"), QStringLiteral("0")).toInt()); - } else { - ui->printerTypeStack->setCurrentIndex(0); - ui->deltaRB->setChecked(true); - ui->cartesianRB->setChecked(false); - ui->radiusSB->setValue(m_settings.value(QStringLiteral("radius"), QStringLiteral("0")).toInt()); - ui->z_delta_dimensionSB->setValue(m_settings.value(QStringLiteral("z_delta_dimension"), QStringLiteral("0")).toInt()); - } - - ui->heatedBedCK->setChecked(m_settings.value(QStringLiteral("heatedBed"), QStringLiteral("true")).toBool()); - ui->bedTempSB->setEnabled(ui->heatedBedCK->isChecked()); - ui->bedTempSB->setValue(m_settings.value(QStringLiteral("maximumTemperatureBed"), QStringLiteral("0")).toInt()); - ui->autoReportTempCK->setChecked(m_settings.value(QStringLiteral("autoReportTemp"), QStringLiteral("false")).toBool()); - - //HOTEND - ui->extruderTempSB->setValue(m_settings.value(QStringLiteral("maximumTemperatureExtruder"), QStringLiteral("0")).toInt()); - //Baud - ui->baudCB->setCurrentText(m_settings.value(QStringLiteral("bps"), QStringLiteral("115200")).toString()); - ui->firmwareCB->setCurrentText(m_settings.value(QStringLiteral("firmware"), QStringLiteral("Auto-Detect")).toString()); - ui->postPauseLE->setText(m_settings.value(QStringLiteral("postPause"), QString()).toString()); - m_settings.endGroup(); - m_settings.endGroup(); - setModified(false); - -} - -void ProfilesDialog::updateCBProfiles() -{ - m_settings.beginGroup(QStringLiteral("Profiles")); - QStringList groups = m_settings.childGroups(); - m_settings.endGroup(); - if (groups.isEmpty()) { - ui->printerTypeStack->setCurrentIndex(1); - } - ui->profileCB->clear(); - ui->profileCB->addItems(groups); -} - -void ProfilesDialog::removeProfile() -{ - QString currentProfile = ui->profileCB->currentText(); - m_settings.beginGroup(QStringLiteral("Profiles")); - m_settings.beginGroup(currentProfile); - m_settings.remove(""); - m_settings.endGroup(); - m_settings.remove(currentProfile); - m_settings.endGroup(); - updateCBProfiles(); -} - -QStringList ProfilesDialog::detectFWPlugins() -{ - QStringList firmwares; - QStringList paths = AtCoreDirectories::pluginDir; - //Add our runtime paths - const QString &path(qApp->applicationDirPath()); - paths.prepend(path + QStringLiteral("/../Plugins/AtCore")); - paths.prepend(path + QStringLiteral("/AtCore")); - paths.prepend(path + QStringLiteral("/plugins")); - for (const QString &path : qAsConst(paths)) { - firmwares = firmwaresInPath(path); - if (!firmwares.isEmpty()) { - //use path where plugins were detected. - break; - } - } - return firmwares; -} - -QStringList ProfilesDialog::firmwaresInPath(const QString &path) -{ - QStringList firmwares; - QStringList files = QDir(path).entryList(QDir::Files); - for (const QString &f : files) { - QString file = f; -#if defined(Q_OS_WIN) - if (file.endsWith(QStringLiteral(".dll"))) -#elif defined(Q_OS_MAC) - if (file.endsWith(QStringLiteral(".dylib"))) -#else - if (file.endsWith(QStringLiteral(".so"))) -#endif - file = file.split(QChar::fromLatin1('.')).at(0); - else { - continue; - } - if (file.startsWith(QStringLiteral("lib"))) { - file = file.remove(QStringLiteral("lib")); - } - file = file.toLower().simplified(); - firmwares.append(file); - } - return firmwares; -} - -void ProfilesDialog::setModified(bool modified) -{ - m_modified = modified; -} - -void ProfilesDialog::askToSave() { - if (m_modified) { - int ret = QMessageBox::question( - this - , i18n("Save?") - , i18n("This profile has been modified, Would you like to Save it?") - , QMessageBox::Save - , QMessageBox::No - ); - if (ret == QMessageBox::Save) { - save(); - } - } + setWindowTitle(i18n("Profiles")); + ProfileManager *pm = new ProfileManager(this); + QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, this); + connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::close); + QLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(pm); + mainLayout->addWidget(buttonBox); + setLayout(mainLayout); } diff --git a/src/dialogs/profilesdialog.ui b/src/dialogs/profilesdialog.ui deleted file mode 100644 --- a/src/dialogs/profilesdialog.ui +++ /dev/null @@ -1,405 +0,0 @@ - - - ProfilesDialog - - - - 0 - 0 - 0 - 0 - - - - Profiles - - - - - - - - Profile - - - profileCB - - - - - - - - 0 - 0 - - - - true - - - - - - - Remove Profile - - - 2 - - - - - - - - - - - - Mechanics - - - - - - - - Printer Type - - - - - - - &Cartesian - - - true - - - - - - - &Delta - - - - - - - - - 1 - - - - - - - - - Radi&us - - - radiusSB - - - - - - - mm - - - 999999999 - - - - - - - - - - - Dimension &Z - - - z_delta_dimensionSB - - - - - - - mm - - - 999999999 - - - - - - - - - - - - - - - Dimension &X - - - x_dimensionSB - - - - - - - mm - - - 999999999 - - - - - - - - - - - Dimension &Y - - - y_dimensionSB - - - - - - - mm - - - 999999999 - - - - - - - - - - - Dimension &Z - - - z_dimensionSB - - - - - - - mm - - - 999999999 - - - - - - - - - - - - - - - - Temperatures - - - - - - Maxim&um Bed - - - bedTempSB - - - - - - - ºC - - - 999 - - - - - - - <html><head/><body><p>Temperature reporting using M155 command. When enabled the printer will return temperature data automatically at a set interval.</p></body></html> - - - Auto Temperature Report - - - - - - - - - - - - - - Ma&ximum Hotend - - - extruderTempSB - - - - - - - ºC - - - 999 - - - - - - - Hea&ted bed? - - - heatedBedCK - - - - - - - - - - true - - - - - - - - - - Advanced - - - - - - - - Bi&ts per second - - - baudCB - - - - - - - - - - - - - - Firmware - - - firmwareCB - - - - - - - - - - - - - - PostPa&use - - - postPauseLE - - - - - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Close|QDialogButtonBox::Reset|QDialogButtonBox::Save - - - - - - - profileCB - removeProfilePB - cartesianRB - baudCB - deltaRB - radiusSB - z_delta_dimensionSB - x_dimensionSB - y_dimensionSB - z_dimensionSB - heatedBedCK - bedTempSB - extruderTempSB - buttonBox - - - - diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -143,7 +144,7 @@ QString name = QString::number(m_instances->addTab(newInstanceWidget, i18n("Connect a printer"))); newInstanceWidget->setObjectName(name); newInstanceWidget->setFileCount(m_openFiles.size()); - connect(this, &MainWindow::profilesChanged, newInstanceWidget, &AtCoreInstanceWidget::updateProfileData); + connect(MachineInfo::instance(), &MachineInfo::profilesChanged, newInstanceWidget, &AtCoreInstanceWidget::updateProfileData); connect(newInstanceWidget, &AtCoreInstanceWidget::requestProfileDialog, this, [this] { std::unique_ptr pd(new ProfilesDialog(this)); pd->exec(); diff --git a/src/widgets/atcoreinstancewidget.h b/src/widgets/atcoreinstancewidget.h --- a/src/widgets/atcoreinstancewidget.h +++ b/src/widgets/atcoreinstancewidget.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -70,7 +71,7 @@ QAction *m_stopAction = nullptr; QComboBox *m_comboPort = nullptr; QComboBox *m_comboProfile = nullptr; - QMap m_profileData; + QVariantMap m_profileData; QPushButton *m_connectButton = nullptr; QSettings m_settings; QSize m_iconSize; @@ -93,12 +94,12 @@ void handlePrinterStatusChanged(AtCore::STATES newState); void initConnectsToAtCore(); void stopPrint(); - QMap readProfile(); void saveProfile(); void pausePrint(); void print(); void updateSerialPort(QStringList ports); void togglePrintButtons(bool shown); + static const QMap keyString; signals: void bedSizeChanged(QSize bedSize); diff --git a/src/widgets/atcoreinstancewidget.cpp b/src/widgets/atcoreinstancewidget.cpp --- a/src/widgets/atcoreinstancewidget.cpp +++ b/src/widgets/atcoreinstancewidget.cpp @@ -22,6 +22,21 @@ #include #include #include "atcoreinstancewidget.h" +#include "machineinfo.h" + +const QMap AtCoreInstanceWidget::keyString = { + {MachineInfo::KEY::NAME, QStringLiteral("Name")}, + {MachineInfo::KEY::BAUDRATE, QStringLiteral("bps")}, + {MachineInfo::KEY::FIRMWARE, QStringLiteral("firmware")}, + {MachineInfo::KEY::MAXBEDTEMP, QStringLiteral("maximumTemperatureBed")}, + {MachineInfo::KEY::MAXEXTTEMP, QStringLiteral("maximumTemperatureExtruder")}, + {MachineInfo::KEY::POSTPAUSE, QStringLiteral("postPause")}, + {MachineInfo::KEY::ISCARTESIAN, QStringLiteral("isCartesian")}, + {MachineInfo::KEY::XMAX, QStringLiteral("dimensionX")}, + {MachineInfo::KEY::YMAX, QStringLiteral("dimensionY")}, + {MachineInfo::KEY::ZMAX, QStringLiteral("dimensionZ")}, + {MachineInfo::KEY::AUTOTEMPREPORT, QStringLiteral("autoReportTemp")} +}; AtCoreInstanceWidget::AtCoreInstanceWidget(QWidget *parent): QWidget(parent) @@ -218,22 +233,22 @@ return; } //Get profile data before connecting. - m_profileData = readProfile(); + m_profileData = MachineInfo::instance()->readProfile(m_comboProfile->currentText()); //then connect - if (m_core.newConnection(m_comboPort->currentText(), m_profileData["bps"].toInt(), m_profileData["firmware"].toString())) { - emit(connectionChanged(m_profileData["name"].toString())); - m_profileData["heatedBed"].toBool() ? m_bedExtWidget->setBedMaxTemperature(m_profileData["bedTemp"].toInt()) : + if (m_core.newConnection(m_comboPort->currentText(), m_profileData[keyString[MachineInfo::KEY::BAUDRATE]].toInt(), m_profileData[keyString[MachineInfo::KEY::FIRMWARE]].toString())) { + emit(connectionChanged(m_profileData[keyString[MachineInfo::KEY::BAUDRATE]].toString())); + m_profileData[keyString[MachineInfo::KEY::MAXBEDTEMP]].toBool() ? m_bedExtWidget->setBedMaxTemperature(m_profileData[keyString[MachineInfo::KEY::MAXBEDTEMP]].toInt()) : m_bedExtWidget->setBedThermoHidden(true); - m_bedExtWidget->setExtruderMaxTemperature(m_profileData["hotendTemp"].toInt()); + m_bedExtWidget->setExtruderMaxTemperature(m_profileData[keyString[MachineInfo::KEY::MAXEXTTEMP]].toInt()); //AddFan Support to profile m_printWidget->updateFanCount(2); //Adjust bed size QSize newSize; - if (m_profileData["isCartesian"].toBool()) { - newSize = QSize(m_profileData["dimensionX"].toInt(), m_profileData["dimensionY"].toInt()); + if (m_profileData[keyString[MachineInfo::KEY::ISCARTESIAN]].toBool()) { + newSize = QSize(m_profileData[keyString[MachineInfo::KEY::XMAX]].toInt(), m_profileData[keyString[MachineInfo::KEY::YMAX]].toInt()); } else { - newSize = QSize(m_profileData["radius"].toInt(), 0); + newSize = QSize(m_profileData[keyString[MachineInfo::KEY::XMAX]].toInt(), 0); } if (newSize != m_bedSize) { m_bedSize = newSize; @@ -255,8 +270,8 @@ connect(&m_core, &AtCore::portsChanged, this, &AtCoreInstanceWidget::updateSerialPort); connect(&m_core, &AtCore::autoTemperatureReportChanged, this, [this](const bool autoReport) { - if (m_profileData["autoReportTemp"].toBool() != autoReport) { - m_profileData["autoReportTemp"] = autoReport; + if (m_profileData[keyString[MachineInfo::KEY::AUTOTEMPREPORT]].toBool() != autoReport) { + m_profileData[keyString[MachineInfo::KEY::AUTOTEMPREPORT]] = autoReport; saveProfile(); } }); @@ -363,7 +378,7 @@ void AtCoreInstanceWidget::pausePrint() { if (m_core.state() == AtCore::BUSY) { - m_core.pause(m_profileData["postPause"].toString()); + m_core.pause(m_profileData[keyString[MachineInfo::KEY::POSTPAUSE]].toString()); } else if (m_core.state() == AtCore::PAUSE) { m_core.resume(); } @@ -397,20 +412,20 @@ } break; case AtCore::IDLE: { if (m_connectionTimer->isActive()) { - m_core.setAutoTemperatureReport(m_profileData["autoReportTemp"].toBool()); + m_core.setAutoTemperatureReport(m_profileData[keyString[MachineInfo::KEY::AUTOTEMPREPORT]].toBool()); m_connectionTimer->stop(); } stateString = i18n("Connected to %1", m_core.connectedPort()); emit extruderCountChanged(m_core.extruderCount()); m_logWidget->appendLog(stateString); emit disableDisconnect(false); enableControls(true); connectExtruderTemperatureData(true); - if (m_profileData["heatedBed"].toBool()) { + if (m_profileData[keyString[MachineInfo::KEY::MAXBEDTEMP]].toBool()) { connectBedTemperatureData(true); } - if (!m_core.availableFirmwarePlugins().contains(m_profileData["firmware"].toString())) { - m_profileData["firmware"] = m_core.firmwarePlugin()->name().toLower(); + if (!m_core.availableFirmwarePlugins().contains(m_profileData[keyString[MachineInfo::KEY::FIRMWARE]].toString())) { + m_profileData[keyString[MachineInfo::KEY::FIRMWARE]] = m_core.firmwarePlugin()->name().toLower(); saveProfile(); } } break; @@ -548,19 +563,16 @@ void AtCoreInstanceWidget::updateProfileData() { - m_settings.beginGroup("Profiles"); - QStringList profiles = m_settings.childGroups(); - m_settings.endGroup(); m_comboProfile->clear(); - m_comboProfile->addItems(profiles); + m_comboProfile->addItems(MachineInfo::instance()->profileNames()); if (m_core.state() != AtCore::DISCONNECTED) { - m_profileData = readProfile(); - bool hBed = m_profileData["heatedBed"].toBool(); + m_profileData = MachineInfo::instance()->readProfile(m_comboProfile->currentText()); + bool hBed = MachineInfo::instance()->readKey(m_comboProfile->currentText(), MachineInfo::KEY::MAXBEDTEMP).toInt() > 0; m_bedExtWidget->setBedThermoHidden(!hBed); connectBedTemperatureData(hBed); - m_bedExtWidget->setBedMaxTemperature(m_profileData["bedTemp"].toInt()); - m_bedExtWidget->setExtruderMaxTemperature(m_profileData["hotendTemp"].toInt()); + m_bedExtWidget->setBedMaxTemperature(MachineInfo::instance()->readKey(m_comboProfile->currentText(), MachineInfo::KEY::MAXBEDTEMP).toInt()); + m_bedExtWidget->setExtruderMaxTemperature(MachineInfo::instance()->readKey(m_comboProfile->currentText(), MachineInfo::KEY::MAXEXTTEMP).toInt()); } } @@ -575,41 +587,11 @@ return (m_core.state() == AtCore::BUSY); } -QMap AtCoreInstanceWidget::readProfile() -{ - QString profile = m_comboProfile->currentText(); - m_settings.beginGroup("Profiles"); - m_settings.beginGroup(profile); - QMap data{ - {"bps", m_settings.value(QStringLiteral("bps"), QStringLiteral("115200"))} - , {"bedTemp", m_settings.value(QStringLiteral("maximumTemperatureBed"), QStringLiteral("0"))} - , {"hotendTemp", m_settings.value(QStringLiteral("maximumTemperatureExtruder"), QStringLiteral("0"))} - , {"firmware", m_settings.value(QStringLiteral("firmware"), QStringLiteral("Auto-Detect"))} - , {"postPause", m_settings.value(QStringLiteral("postPause"), QString())} - , {"heatedBed", m_settings.value(QStringLiteral("heatedBed"), true)} - , {"name", profile} - , {"isCartesian", m_settings.value(QStringLiteral("isCartesian"), true)} - , {"dimensionX", m_settings.value(QStringLiteral("dimensionX"), QStringLiteral("200"))} - , {"dimensionY", m_settings.value(QStringLiteral("dimensionY"), QStringLiteral("200"))} - , {"dimensionZ", m_settings.value(QStringLiteral("dimensionZ"), QStringLiteral("180"))} - , {"radius", m_settings.value(QStringLiteral("radius"), QStringLiteral("200"))} - , {"z_delta_dimension", m_settings.value(QStringLiteral("z_delta_dimension"), QStringLiteral("180"))} - , {"autoReportTemp", m_settings.value(QStringLiteral("autoReportTemp"), false)} - }; - m_settings.endGroup(); - m_settings.endGroup(); - return data; -} - void AtCoreInstanceWidget::saveProfile() { QString profile = m_comboProfile->currentText(); - m_settings.beginGroup("Profiles"); - m_settings.beginGroup(m_profileData["name"].toString()); - m_settings.setValue(QStringLiteral("firmware"), m_profileData["firmware"]); - m_settings.setValue(QStringLiteral("autoReportTemp"), m_profileData["autoReportTemp"]); - m_settings.endGroup(); - m_settings.endGroup(); + MachineInfo::instance()->storeKey(profile, MachineInfo::KEY::FIRMWARE, m_profileData[keyString[MachineInfo::KEY::FIRMWARE]]); + MachineInfo::instance()->storeKey(profile, MachineInfo::KEY::AUTOTEMPREPORT, m_profileData[keyString[MachineInfo::KEY::AUTOTEMPREPORT]]); } void AtCoreInstanceWidget::connectBedTemperatureData(bool connected)