diff --git a/src/dialogs/profilesdialog.cpp b/src/dialogs/profilesdialog.cpp
index 712c803..d61c048 100644
--- a/src/dialogs/profilesdialog.cpp
+++ b/src/dialogs/profilesdialog.cpp
@@ -1,239 +1,239 @@
/* Atelier KDE Printer Host for 3D Printing
Copyright (C) <2016>
Author: Lays Rodrigues - laysrodrigues@gmail.com
Chris Rizzitello - rizzitello@kde.org
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
#include "profilesdialog.h"
#include "ui_profilesdialog.h"
#include
#include
#include
//Do not include for windows/mac os
#ifndef Q_OS_WIN
#ifndef Q_OS_MAC
#include
#endif
#endif
ProfilesDialog::ProfilesDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ProfilesDialog)
{
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, static_cast(&QComboBox::currentIndexChanged), [ = ] {
+ connect(ui->profileCB, static_cast(&QComboBox::currentIndexChanged), [ this ] {
loadSettings();
});
updateCBProfiles();
- connect(ui->buttonBox, &QDialogButtonBox::clicked, [ = ](QAbstractButton * btn) {
+ connect(ui->buttonBox, &QDialogButtonBox::clicked, [ this ](QAbstractButton * btn) {
switch (ui->buttonBox->buttonRole(btn)) {
case QDialogButtonBox::ResetRole:
loadSettings();
break;
case QDialogButtonBox::RejectRole:
close();
break;
default:
break;
}
});
- connect(ui->heatedBedCK, &QCheckBox::clicked, [ = ](const bool & status) {
+ connect(ui->heatedBedCK, &QCheckBox::clicked, [ this ](const bool & status) {
ui->bedTempSB->setEnabled(status);
});
- connect(ui->cartesianRB, &QRadioButton::clicked, [ = ]() {
+ connect(ui->cartesianRB, &QRadioButton::clicked, [ this ]() {
ui->cartesianGB->setHidden(false);
ui->deltaGB->setHidden(true);
});
- connect(ui->deltaRB, &QRadioButton::clicked, [ = ]() {
+ connect(ui->deltaRB, &QRadioButton::clicked, [ this ]() {
ui->cartesianGB->setHidden(true);
ui->deltaGB->setHidden(false);
});
connect(ui->removeProfilePB, &QPushButton::clicked, this, &ProfilesDialog::removeProfile);
#ifdef Q_OS_LINUX
ui->removeProfilePB->setIcon(QIcon::fromTheme("edit-delete"));
#else
ui->removeProfilePB->setIcon(style()->standardIcon(QStyle::SP_TrashIcon));
#endif
}
ProfilesDialog::~ProfilesDialog()
{
delete ui;
}
void ProfilesDialog::saveSettings()
{
settings.beginGroup(QStringLiteral("GeneralSettings"));
QStringList groups = settings.childGroups();
settings.endGroup();
QString currentProfile = ui->profileCB->currentText();
if (groups.contains(currentProfile)) {
int ret = QMessageBox::information(this, i18n("Save?"),
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;
}
}
//Add indent to better view of the data
settings.beginGroup(QStringLiteral("GeneralSettings"));
settings.beginGroup(currentProfile);
//BED
if (ui->cartesianRB->isChecked()) {
settings.setValue(QStringLiteral("isCartesian"), true);
settings.setValue(QStringLiteral("dimensionX"), ui->x_dimensionSB->value());
settings.setValue(QStringLiteral("dimensionY"), ui->y_dimensionSB->value());
settings.setValue(QStringLiteral("dimensionZ"), ui->z_dimensionSB->value());
}
else {
settings.setValue(QStringLiteral("isCartesian"), false);
settings.setValue(QStringLiteral("radius"), ui->radiusSB->value());
settings.setValue(QStringLiteral("z_delta_dimension"), ui->z_dimensionSB->value());
}
settings.setValue(QStringLiteral("heatedBed"), ui->heatedBedCK->isChecked());
settings.setValue(QStringLiteral("maximumTemperatureBed"), ui->bedTempSB->value());
//HOTEND
settings.setValue(QStringLiteral("maximumTemperatureExtruder"), ui->extruderTempSB->value());
//Baud
settings.setValue(QStringLiteral("bps"), ui->baudCB->currentText());
settings.setValue(QStringLiteral("firmware"),ui->firmwareCB->currentText());
settings.setValue(QStringLiteral("postPause"), ui->postPauseLE->text());
settings.endGroup();
settings.endGroup();
//Load new profile
updateCBProfiles();
loadSettings(currentProfile);
emit updateProfiles();
}
void ProfilesDialog::loadSettings(const QString ¤tProfile)
{
settings.beginGroup(QStringLiteral("GeneralSettings"));
const QString profileName = currentProfile.isEmpty() ? ui->profileCB ->currentText() : currentProfile;
ui->profileCB->setCurrentText(profileName);
settings.beginGroup(profileName);
//BED
if (settings.value(QStringLiteral("isCartesian")).toBool()) {
ui->cartesianGB->setHidden(false);
ui->cartesianRB->setChecked(true);
ui->deltaRB->setChecked(false);
ui->deltaGB->setHidden(true);
ui->x_dimensionSB->setValue(settings.value(QStringLiteral("dimensionX"), QStringLiteral("0")).toInt());
ui->y_dimensionSB->setValue(settings.value(QStringLiteral("dimensionY"), QStringLiteral("0")).toInt());
ui->z_dimensionSB->setValue(settings.value(QStringLiteral("dimensionZ"), QStringLiteral("0")).toInt());
} else {
ui->deltaGB->setHidden(false);
ui->deltaRB->setChecked(true);
ui->cartesianRB->setChecked(false);
ui->cartesianGB->setHidden(true);
ui->radiusSB->setValue(settings.value(QStringLiteral("radius"), QStringLiteral("0")).toFloat());
ui->z_delta_dimensionSB->setValue(settings.value(QStringLiteral("z_delta_dimension"), QStringLiteral("0")).toFloat());
}
ui->heatedBedCK->setChecked(settings.value(QStringLiteral("heatedBed"), QStringLiteral("true")).toBool());
ui->bedTempSB->setEnabled(ui->heatedBedCK->isChecked());
ui->bedTempSB->setValue(settings.value(QStringLiteral("maximumTemperatureBed"), QStringLiteral("0")).toInt());
//HOTEND
ui->extruderTempSB->setValue(settings.value(QStringLiteral("maximumTemperatureExtruder"), QStringLiteral("0")).toInt());
//Baud
ui->baudCB->setCurrentText(settings.value(QStringLiteral("bps"), QStringLiteral("115200")).toString());
ui->firmwareCB->setCurrentText(settings.value(QStringLiteral("firmware"), QStringLiteral("Auto-Detect")).toString());
ui->postPauseLE->setText(settings.value(QStringLiteral("postPause"),QStringLiteral("")).toString());
settings.endGroup();
settings.endGroup();
}
void ProfilesDialog::updateCBProfiles()
{
settings.beginGroup(QStringLiteral("GeneralSettings"));
QStringList groups = settings.childGroups();
settings.endGroup();
if (groups.isEmpty()) {
ui->deltaGB->setHidden(true);
}
ui->profileCB->clear();
ui->profileCB->addItems(groups);
}
void ProfilesDialog::accept()
{
saveSettings();
}
void ProfilesDialog::removeProfile(){
QString currentProfile = ui->profileCB->currentText();
settings.beginGroup(QStringLiteral("GeneralSettings"));
settings.beginGroup(currentProfile);
settings.remove("");
settings.endGroup();
settings.remove(currentProfile);
settings.endGroup();
updateCBProfiles();
}
QStringList ProfilesDialog::detectFWPlugins() const
{
//Path used if for windows/ mac os only.
QDir pluginDir(qApp->applicationDirPath() + QStringLiteral("/plugins"));
#if defined(Q_OS_WIN)
pluginDir.setNameFilters(QStringList() << "*.dll");
#elif defined(Q_OS_MAC)
pluginDir.setNameFilters(QStringList() << "*.dylib");
#else //Not Windows || Not MAC
QStringList pathList = AtCoreDirectories::pluginDir;
pathList.append(QLibraryInfo::location(QLibraryInfo::PluginsPath) + QStringLiteral("/AtCore"));
for (const auto &path : pathList) {
if (QDir(path).exists()) {
//use path where plugins were detected.
pluginDir = QDir(path);
break;
}
}
pluginDir.setNameFilters(QStringList() << "*.so");
#endif
QStringList firmwares;
QStringList files = pluginDir.entryList(QDir::Files);
foreach (const QString &f, files) {
QString file = f;
file = file.split(QChar::fromLatin1('.')).at(0);
if (file.startsWith(QStringLiteral("lib"))) {
file = file.remove(QStringLiteral("lib"));
}
file = file.toLower().simplified();
firmwares.append(file);
}
return firmwares;
}