Previos Qt versions fixes

This commit is contained in:
NeoTheFox 2015-03-09 16:25:53 +03:00
parent e62bfe3949
commit 7cfd1aedb3
2 changed files with 41 additions and 49 deletions

View File

@ -7,6 +7,7 @@ MainWindow::MainWindow(QWidget *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
//Setup the UI
ui->fileBox->setDisabled(true); ui->fileBox->setDisabled(true);
ui->sendBtn->setDisabled(true); ui->sendBtn->setDisabled(true);
ui->pauseBtn->setDisabled(true); ui->pauseBtn->setDisabled(true);
@ -17,7 +18,10 @@ MainWindow::MainWindow(QWidget *parent) :
ui->actionPrint_from_SD->setDisabled(true); ui->actionPrint_from_SD->setDisabled(true);
ui->actionSet_SD_printing_mode->setDisabled(true); ui->actionSet_SD_printing_mode->setDisabled(true);
ui->actionEEPROM_editor->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(4800));
ui->baudbox->addItem(QString::number(9600)); ui->baudbox->addItem(QString::number(9600));
ui->baudbox->addItem(QString::number(115200)); ui->baudbox->addItem(QString::number(115200));
@ -30,37 +34,34 @@ MainWindow::MainWindow(QWidget *parent) :
ui->baudbox->setCurrentIndex(settings.value("printer/baudrateindex").toInt()); ui->baudbox->setCurrentIndex(settings.value("printer/baudrateindex").toInt());
else ui->baudbox->setCurrentIndex(2); else ui->baudbox->setCurrentIndex(2);
ui->extruderlcd->setPalette(Qt::red); //Restore settings
ui->bedlcd->setPalette(Qt::red);
firstrun = !settings.value("core/firstrun").toBool(); //firstrun is inverted! firstrun = !settings.value("core/firstrun").toBool(); //firstrun is inverted!
checkingTemperature = settings.value("core/checktemperature").toBool(); checkingTemperature = settings.value("core/checktemperature").toBool();
ui->checktemp->setChecked(checkingTemperature); ui->checktemp->setChecked(checkingTemperature);
ui->etmpspin->setValue(settings.value("user/extrudertemp").toInt()); ui->etmpspin->setValue(settings.value("user/extrudertemp").toInt());
ui->btmpspin->setValue(settings.value("user/bedtemp").toInt()); ui->btmpspin->setValue(settings.value("user/bedtemp").toInt());
echo = settings.value("core/echo", 0).toBool(); echo = settings.value("core/echo", 0).toBool();
autolock = settings.value("core/lockcontrols").toBool(); autolock = settings.value("core/lockcontrols").toBool();
sendingChecksum = settings.value("core/checksums").toBool(); sendingChecksum = settings.value("core/checksums").toBool();
chekingSDStatus = settings.value("core/checksdstatus").toBool(); chekingSDStatus = settings.value("core/checksdstatus").toBool();
firmware = settings.value("printer/firmware", OtherFirmware).toInt(); 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; sending = false;
paused = false; paused = false;
readingFiles = false; readingFiles = false;
sdprinting = false; sdprinting = false;
sdBytes = 0; sdBytes = 0;
userCommand = "";
currentLine = 0; currentLine = 0;
readyRecieve = 1; readyRecieve = 1;
lastRecieved = 0; lastRecieved = 0;
//Update serial ports
serialupdate(); serialupdate();
//Internal signal-slots
connect(&printer, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(serialError(QSerialPort::SerialPortError))); connect(&printer, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(serialError(QSerialPort::SerialPortError)));
connect(&printer, SIGNAL(readyRead()), this, SLOT(readSerial())); connect(&printer, SIGNAL(readyRead()), this, SLOT(readSerial()));
connect(&statusTimer, SIGNAL(timeout()), this, SLOT(checkStatus())); connect(&statusTimer, SIGNAL(timeout()), this, SLOT(checkStatus()));
@ -68,6 +69,7 @@ MainWindow::MainWindow(QWidget *parent) :
connect(&progressSDTimer, SIGNAL(timeout()), this, SLOT(checkSDStatus())); connect(&progressSDTimer, SIGNAL(timeout()), this, SLOT(checkSDStatus()));
connect(this, SIGNAL(eepromReady()), this, SLOT(openEEPROMeditor())); connect(this, SIGNAL(eepromReady()), this, SLOT(openEEPROMeditor()));
//Parser thread signal-slots and init
qRegisterMetaType<TemperatureReadings>("TemperatureReadings"); qRegisterMetaType<TemperatureReadings>("TemperatureReadings");
qRegisterMetaType<SDProgress>("SDProgress"); qRegisterMetaType<SDProgress>("SDProgress");
parser = new Parser(); parser = new Parser();
@ -88,34 +90,19 @@ MainWindow::MainWindow(QWidget *parent) :
connect(parser, &Parser::recievedSDUpdate, this, &MainWindow::updateSDStatus); connect(parser, &Parser::recievedSDUpdate, this, &MainWindow::updateSDStatus);
parserThread->start(); parserThread->start();
statusTimer.setInterval(settings.value("core/statusinterval", 3000).toInt()); //Timers init
statusTimer.start(); statusTimer.start();
sendTimer.setInterval(settings.value("core/senderinterval", 2).toInt());
sendTimer.start(); sendTimer.start();
progressSDTimer.setInterval(2100); progressSDTimer.setInterval(2100);
if(chekingSDStatus) progressSDTimer.start(); if(chekingSDStatus) progressSDTimer.start();
sinceLastTemp.start(); sinceLastTemp.start();
#ifdef QT_DEBUG
ui->actionEEPROM_editor->setEnabled(true);
#else
ui->actionEEPROM_editor->setDisabled(true);
#endif
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()
{ {
if(gfile.isOpen()) gfile.close(); //Save settings
if(printer.isOpen()) printer.close();
parserThread->quit();
parserThread->wait();
if(firstrun) settings.setValue("core/firstrun", true); //firstrun is inverted! if(firstrun) settings.setValue("core/firstrun", true); //firstrun is inverted!
settings.setValue("printer/baudrateindex", ui->baudbox->currentIndex()); settings.setValue("printer/baudrateindex", ui->baudbox->currentIndex());
settings.setValue("core/checktemperature", ui->checktemp->isChecked()); settings.setValue("core/checktemperature", ui->checktemp->isChecked());
settings.setValue("user/extrudertemp", ui->etmpspin->value()); settings.setValue("user/extrudertemp", ui->etmpspin->value());
@ -129,6 +116,12 @@ MainWindow::~MainWindow()
} }
settings.endArray(); settings.endArray();
//Cleanup what is left
if(gfile.isOpen()) gfile.close();
if(printer.isOpen()) printer.close();
parserThread->quit();
parserThread->wait();
delete ui; delete ui;
} }
@ -231,29 +224,30 @@ void MainWindow::serialconnect()
} }
printer.setPort(printerinfo); 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)) 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->connectBtn->setText("Disconnect");
ui->sendBtn->setDisabled(false); ui->sendBtn->setDisabled(false);
//ui->pauseBtn->setDisabled(false); //ui->pauseBtn->setDisabled(false);
@ -263,7 +257,6 @@ void MainWindow::serialconnect()
ui->actionPrint_from_SD->setEnabled(true); ui->actionPrint_from_SD->setEnabled(true);
ui->actionSet_SD_printing_mode->setEnabled(true); ui->actionSet_SD_printing_mode->setEnabled(true);
if(firmware == Repetier) ui->actionEEPROM_editor->setDisabled(false); 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) void MainWindow::serialError(QSerialPort::SerialPortError error)
{ {
if(error == QSerialPort::NoError) return; if(error == QSerialPort::NoError) return;
if(error == QSerialPort::NotOpenError) return; if(error == QSerialPort::NotOpenError) return; //this error is internal
if(printer.isOpen()) printer.close(); if(printer.isOpen()) printer.close();

View File

@ -72,7 +72,6 @@ private:
unsigned long int lastRecieved; unsigned long int lastRecieved;
int readyRecieve; int readyRecieve;
unsigned long int sdBytes; unsigned long int sdBytes;
QString userCommand;
private slots: private slots:
void open(); void open();