diff --git a/mainwindow.cpp b/mainwindow.cpp index b2f22f4..c21b82c 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -7,6 +7,7 @@ MainWindow::MainWindow(QWidget *parent) : { ui->setupUi(this); + //Setup the UI ui->fileBox->setDisabled(true); ui->sendBtn->setDisabled(true); ui->pauseBtn->setDisabled(true); @@ -17,7 +18,10 @@ MainWindow::MainWindow(QWidget *parent) : ui->actionPrint_from_SD->setDisabled(true); ui->actionSet_SD_printing_mode->setDisabled(true); ui->actionEEPROM_editor->setDisabled(true); + ui->extruderlcd->setPalette(Qt::red); + ui->bedlcd->setPalette(Qt::red); + //Init baudrate combobox ui->baudbox->addItem(QString::number(4800)); ui->baudbox->addItem(QString::number(9600)); ui->baudbox->addItem(QString::number(115200)); @@ -30,37 +34,34 @@ MainWindow::MainWindow(QWidget *parent) : ui->baudbox->setCurrentIndex(settings.value("printer/baudrateindex").toInt()); else ui->baudbox->setCurrentIndex(2); - ui->extruderlcd->setPalette(Qt::red); - ui->bedlcd->setPalette(Qt::red); - + //Restore settings firstrun = !settings.value("core/firstrun").toBool(); //firstrun is inverted! - checkingTemperature = settings.value("core/checktemperature").toBool(); ui->checktemp->setChecked(checkingTemperature); - ui->etmpspin->setValue(settings.value("user/extrudertemp").toInt()); ui->btmpspin->setValue(settings.value("user/bedtemp").toInt()); - echo = settings.value("core/echo", 0).toBool(); - autolock = settings.value("core/lockcontrols").toBool(); sendingChecksum = settings.value("core/checksums").toBool(); chekingSDStatus = settings.value("core/checksdstatus").toBool(); - firmware = settings.value("printer/firmware", OtherFirmware).toInt(); + statusTimer.setInterval(settings.value("core/statusinterval", 3000).toInt()); + sendTimer.setInterval(settings.value("core/senderinterval", 2).toInt()); + //Init values sending = false; paused = false; readingFiles = false; sdprinting = false; sdBytes = 0; - userCommand = ""; currentLine = 0; readyRecieve = 1; lastRecieved = 0; + //Update serial ports serialupdate(); + //Internal signal-slots connect(&printer, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(serialError(QSerialPort::SerialPortError))); connect(&printer, SIGNAL(readyRead()), this, SLOT(readSerial())); connect(&statusTimer, SIGNAL(timeout()), this, SLOT(checkStatus())); @@ -68,6 +69,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(&progressSDTimer, SIGNAL(timeout()), this, SLOT(checkSDStatus())); connect(this, SIGNAL(eepromReady()), this, SLOT(openEEPROMeditor())); + //Parser thread signal-slots and init qRegisterMetaType("TemperatureReadings"); qRegisterMetaType("SDProgress"); parser = new Parser(); @@ -88,34 +90,19 @@ MainWindow::MainWindow(QWidget *parent) : connect(parser, &Parser::recievedSDUpdate, this, &MainWindow::updateSDStatus); parserThread->start(); - statusTimer.setInterval(settings.value("core/statusinterval", 3000).toInt()); + //Timers init statusTimer.start(); - - sendTimer.setInterval(settings.value("core/senderinterval", 2).toInt()); sendTimer.start(); - progressSDTimer.setInterval(2100); - if(chekingSDStatus) progressSDTimer.start(); - sinceLastTemp.start(); - #ifdef QT_DEBUG - ui->actionEEPROM_editor->setEnabled(true); - #else - ui->actionEEPROM_editor->setDisabled(true); - #endif } MainWindow::~MainWindow() { - if(gfile.isOpen()) gfile.close(); - if(printer.isOpen()) printer.close(); - parserThread->quit(); - parserThread->wait(); - + //Save settings if(firstrun) settings.setValue("core/firstrun", true); //firstrun is inverted! - settings.setValue("printer/baudrateindex", ui->baudbox->currentIndex()); settings.setValue("core/checktemperature", ui->checktemp->isChecked()); settings.setValue("user/extrudertemp", ui->etmpspin->value()); @@ -129,6 +116,12 @@ MainWindow::~MainWindow() } settings.endArray(); + //Cleanup what is left + if(gfile.isOpen()) gfile.close(); + if(printer.isOpen()) printer.close(); + parserThread->quit(); + parserThread->wait(); + delete ui; } @@ -231,29 +224,30 @@ void MainWindow::serialconnect() } printer.setPort(printerinfo); - printer.setFlowControl(QSerialPort::NoFlowControl); - - switch(ui->baudbox->currentText().toInt()) - { - case 4800: - printer.setBaudRate(QSerialPort::Baud4800); - break; - - case 9600: - printer.setBaudRate(QSerialPort::Baud9600); - break; - - case 115200: - printer.setBaudRate(QSerialPort::Baud115200); - break; - - default: - printer.setBaudRate(ui->baudbox->currentText().toInt()); - break; - } if(printer.open(QIODevice::ReadWrite)) { + + //Moved here to be compatible with Qt 5.2.1 + switch(ui->baudbox->currentText().toInt()) + { + case 4800: + printer.setBaudRate(QSerialPort::Baud4800); + break; + + case 9600: + printer.setBaudRate(QSerialPort::Baud9600); + break; + + case 115200: + printer.setBaudRate(QSerialPort::Baud115200); + break; + + default: + printer.setBaudRate(ui->baudbox->currentText().toInt()); + break; + } + ui->connectBtn->setText("Disconnect"); ui->sendBtn->setDisabled(false); //ui->pauseBtn->setDisabled(false); @@ -263,7 +257,6 @@ void MainWindow::serialconnect() ui->actionPrint_from_SD->setEnabled(true); ui->actionSet_SD_printing_mode->setEnabled(true); if(firmware == Repetier) ui->actionEEPROM_editor->setDisabled(false); - //if(checkingTemperature) injectCommand("M105"); } } @@ -712,7 +705,7 @@ void MainWindow::updateRecent() void MainWindow::serialError(QSerialPort::SerialPortError error) { if(error == QSerialPort::NoError) return; - if(error == QSerialPort::NotOpenError) return; + if(error == QSerialPort::NotOpenError) return; //this error is internal if(printer.isOpen()) printer.close(); diff --git a/mainwindow.h b/mainwindow.h index 55a4b33..f808649 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -72,7 +72,6 @@ private: unsigned long int lastRecieved; int readyRecieve; unsigned long int sdBytes; - QString userCommand; private slots: void open();