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)