#include "dfotaConfig.h" #include "./src/dfota.h" #include "./src/crc32.h" #include "mainwindow.h" #include "./ui_mainwindow.h" #include "build_date_time.h" #include "./src/dfota.h" #include "iostream" #include "string.h" #include #include #include #include #include #include //#include // #include #include using namespace std; DFOTA dfota; typedef struct WindowLE{ QLineEdit le_devType; QLineEdit le_newFile; QLineEdit le_oldFile[MAX_OLDFILES_NUM]; QLineEdit le_pkgFile; }WindowLE_t; //void appendMsgOut(MainWindow *w,QString msg){ // emit w->MainWindow::qdebug_signals(msg); //}; QMutex mutex; Ui::MainWindow *pui; void MainWindow::appendlog(QString msg){ emit this->process_bar_signals(0,"开始..."); } void MainWindow::myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { pui->textEdit_log->append(msg); pui->textEdit_log->moveCursor(QTextCursor::End); // pw->appendMsgOut(msg); //创建log文件夹 QDir dir("log"); if (!dir.exists()) { QDir dir; dir.mkdir("log"); } //创建log文件 QString currentDate = QDateTime::currentDateTime().toString("yyyyMMdd"); QString logName = "log" + currentDate + ".txt"; QString logFileName = "log/" + logName; // 加锁 mutex.lock(); QByteArray localMsg = msg.toLocal8Bit(); //信息分类 QString strMsg(""); switch(type) { case QtDebugMsg: strMsg = QString("Debug:"); break; case QtInfoMsg: strMsg = QString("Info:"); break; case QtWarningMsg: strMsg = QString("Warning:"); break; case QtCriticalMsg: strMsg = QString("Critical:"); break; case QtFatalMsg: strMsg = QString("Fatal:"); break; default: break; } //Release 版本默认不包含context这些信息:文件名、函数名、行数,需要在.pro项目文件加入以下代码,加入后最好重新构建项目使之生效: //DEFINES += QT_MESSAGELOGCONTEXT //在.pro文件定义以下的宏,可以屏蔽相应的日志输出 //DEFINES += QT_NO_WARNING_OUTPUT //DEFINES += QT_NO_DEBUG_OUTPUT //DEFINES += QT_NO_INFO_OUTPUT //文件名、函数名、行数 strMsg += QString("Function: %1 File: %2 Line: %3 ").arg(context.function).arg(context.file).arg(context.line); // 时间和内容 QString strDateTime = QDateTime::currentDateTime().toString("hh:mm:ss"); // QString strMessage = QString("%1 %2:%3").arg(strDateTime).arg(strMsg).arg(localMsg.constData()); QString strMessage = QString("%1 %2").arg(strDateTime).arg(strMsg); strMessage += msg; //写入文件 QFile file(logFileName); if (!file.open(QIODevice::WriteOnly | QIODevice::Append)) { file.close(); // return ; } QTextStream stream(&file); stream << strMessage << "\r\n";; file.flush(); file.close(); // 解锁 mutex.unlock(); } void MainWindow::getConfig() { QDir dir("tmp"); if (!dir.exists()) { QDir dir; dir.mkdir("tmp"); } char get_string[MAX_PATH]; memset(get_string,0,sizeof (get_string)); // qDebug("%s\r\n",DFOTACONFIG_FILE); GetPrivateProfileString("newBinFile", "ep", "", get_string, 9, DFOTACONFIG_FILE); bool ok; uint32_t ep = ui->lineEdit_ep->text().toUInt(&ok,16); if((not ok)||(ep < 0x08000000)||(ep>(0x80000000+0x40000000))){ ui->lineEdit_ep->setText("80000000"); WritePrivateProfileString("newBinFile", "ep", "80000000", DFOTACONFIG_FILE); } ui->lineEdit_ep->setText(get_string); // qDebug("%s\r\n",get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("newBinFile", "file", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_newFile->setText(get_string); // qDebug("%s\r\n",get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_1", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile0->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_2", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile1->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_3", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile2->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_4", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile3->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_5", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile4->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_6", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile5->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_7", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile6->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("oldBinFile", "file_8", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_oldFile7->setText(get_string); memset(get_string,0,sizeof (get_string)); GetPrivateProfileString("pkgBinFile", "file", "", get_string, MAX_PATH, DFOTACONFIG_FILE); ui->lineEdit_pkgFile->setText(get_string); memset(get_string,0,sizeof (get_string)); // ui->textEdit_log->setText(""); } void MainWindow::ep_slot(){ bool ok; uint32_t ep = ui->lineEdit_ep->text().toUInt(&ok,16); if((not ok)||(ep < 0x08000000)||(ep>(0x80000000+0x40000000))){ ui->lineEdit_ep->setText("80000000"); return; } WritePrivateProfileString("newBinFile", "ep", ui->lineEdit_ep->text().toStdString().c_str(), DFOTACONFIG_FILE); } QString getFileDir(const char* path){ char drive[MAX_PATH] = {0}; char dir[MAX_PATH] = {0}; char filename[MAX_PATH] = {0}; char ext[MAX_PATH] = {0}; QString FileDir; _splitpath_s(path, drive, dir,filename, ext); if(strlen(path) == 0) FileDir = ""; else FileDir = QString::fromStdString(drive)+QString::fromStdString(dir); return FileDir; } void MainWindow::openNewFile_slot(){ QString fileDir = getFileDir(ui->lineEdit_newFile->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("newBinFile", "file", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_newFile->setText(s); } void MainWindow::openOldFile0_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile0->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_1", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile0->setText(s); } void MainWindow::openOldFile1_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile1->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_2", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile1->setText(s); } void MainWindow::openOldFile2_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile2->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_3", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile2->setText(s); } void MainWindow::openOldFile3_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile3->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_4", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile3->setText(s); } void MainWindow::openOldFile4_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile4->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_5", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile4->setText(s); } void MainWindow::openOldFile5_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile5->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_6", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile5->setText(s); } void MainWindow::openOldFile6_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile6->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_7", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile6->setText(s); } void MainWindow::openOldFile7_slot(){ QString fileDir = getFileDir(ui->lineEdit_oldFile7->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("oldBinFile", "file_8", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_oldFile7->setText(s); } void MainWindow::openPkgFolder_slot(){ QString fileDir = getFileDir(ui->lineEdit_pkgFile->text().toStdString().c_str()); QString s = QFileDialog::getOpenFileName(this,"open file dialog",fileDir,"二进制文件(*.bin)"); if(s.length()==0)return; WritePrivateProfileString("pkgBinFile", "file", s.toStdString().c_str(), DFOTACONFIG_FILE); ui->lineEdit_pkgFile->setText(s); } void MainWindow::editNewFile_slot(){ WritePrivateProfileString("newBinFile", "file", ui->lineEdit_newFile->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile0_slot(){ WritePrivateProfileString("oldBinFile", "file_1", ui->lineEdit_oldFile0->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile1_slot(){ WritePrivateProfileString("oldBinFile", "file_2", ui->lineEdit_oldFile1->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile2_slot(){ WritePrivateProfileString("oldBinFile", "file_3", ui->lineEdit_oldFile2->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile3_slot(){ WritePrivateProfileString("oldBinFile", "file_4", ui->lineEdit_oldFile3->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile4_slot(){ WritePrivateProfileString("oldBinFile", "file_5", ui->lineEdit_oldFile4->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile5_slot(){ WritePrivateProfileString("oldBinFile", "file_6", ui->lineEdit_oldFile5->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile6_slot(){ WritePrivateProfileString("oldBinFile", "file_7", ui->lineEdit_oldFile6->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editOldFile7_slot(){ WritePrivateProfileString("oldBinFile", "file_8", ui->lineEdit_oldFile7->text().toStdString().c_str(), DFOTACONFIG_FILE); } void MainWindow::editPkgFolder_slot(){ WritePrivateProfileString("pkgBinFile", "file", ui->lineEdit_pkgFile->text().toStdString().c_str(), DFOTACONFIG_FILE); } InputData_t inputData; void MainWindow::pkg_creater_slot() { bool ok; memset(&inputData,0,sizeof(inputData)); // 获取输入参数 // inputData.devType = ui->lineEdit_devType->text().toUShort(&ok,16); inputData.ep = ui->lineEdit_ep->text().toUInt(&ok,16); memcpy_s(inputData.newFilePath,MAX_PATH,ui->lineEdit_newFile->text().toStdString().c_str(),ui->lineEdit_newFile->text().toStdString().length()); if(ui->checkBox_old0->checkState()) memcpy_s(inputData.oldFilePath[0],MAX_PATH,ui->lineEdit_oldFile0->text().toStdString().c_str(),ui->lineEdit_oldFile0->text().toStdString().length()); if(ui->checkBox_old1->checkState()) memcpy_s(inputData.oldFilePath[1],MAX_PATH,ui->lineEdit_oldFile1->text().toStdString().c_str(),ui->lineEdit_oldFile1->text().toStdString().length()); if(ui->checkBox_old2->checkState()) memcpy_s(inputData.oldFilePath[2],MAX_PATH,ui->lineEdit_oldFile2->text().toStdString().c_str(),ui->lineEdit_oldFile2->text().toStdString().length()); if(ui->checkBox_old3->checkState()) memcpy_s(inputData.oldFilePath[3],MAX_PATH,ui->lineEdit_oldFile3->text().toStdString().c_str(),ui->lineEdit_oldFile3->text().toStdString().length()); if(ui->checkBox_old4->checkState()) memcpy_s(inputData.oldFilePath[4],MAX_PATH,ui->lineEdit_oldFile4->text().toStdString().c_str(),ui->lineEdit_oldFile4->text().toStdString().length()); if(ui->checkBox_old5->checkState()) memcpy_s(inputData.oldFilePath[5],MAX_PATH,ui->lineEdit_oldFile5->text().toStdString().c_str(),ui->lineEdit_oldFile5->text().toStdString().length()); if(ui->checkBox_old6->checkState()) memcpy_s(inputData.oldFilePath[6],MAX_PATH,ui->lineEdit_oldFile6->text().toStdString().c_str(),ui->lineEdit_oldFile6->text().toStdString().length()); if(ui->checkBox_old7->checkState()) memcpy_s(inputData.oldFilePath[7],MAX_PATH,ui->lineEdit_oldFile7->text().toStdString().c_str(),ui->lineEdit_oldFile7->text().toStdString().length()); memcpy_s(inputData.pkgFilePath,MAX_PATH,ui->lineEdit_pkgFile->text().toStdString().c_str(),ui->lineEdit_pkgFile->text().toStdString().length()); inputData.check_d = ui->checkBox_d->checkState(); inputData.check_z = ui->checkBox_z->checkState(); dfota.bsdiff_task(this,&inputData); } void MainWindow::pkg_read_slot(){ memset(&inputData,0,sizeof(inputData)); memcpy_s(inputData.pkgFilePath,MAX_PATH,ui->lineEdit_pkgFile->text().toStdString().c_str(),ui->lineEdit_pkgFile->text().toStdString().length()); dfota.read_task(this,&inputData); } void MainWindow::pkg_check_slot(){ bool ok; memset(&inputData,0,sizeof(inputData)); // 获取输入参数 memcpy_s(inputData.newFilePath,MAX_PATH,ui->lineEdit_newFile->text().toStdString().c_str(),ui->lineEdit_newFile->text().toStdString().length()); if(ui->checkBox_old0->checkState()) memcpy_s(inputData.oldFilePath[0],MAX_PATH,ui->lineEdit_oldFile0->text().toStdString().c_str(),ui->lineEdit_oldFile0->text().toStdString().length()); if(ui->checkBox_old1->checkState()) memcpy_s(inputData.oldFilePath[1],MAX_PATH,ui->lineEdit_oldFile1->text().toStdString().c_str(),ui->lineEdit_oldFile1->text().toStdString().length()); if(ui->checkBox_old2->checkState()) memcpy_s(inputData.oldFilePath[2],MAX_PATH,ui->lineEdit_oldFile2->text().toStdString().c_str(),ui->lineEdit_oldFile2->text().toStdString().length()); if(ui->checkBox_old3->checkState()) memcpy_s(inputData.oldFilePath[3],MAX_PATH,ui->lineEdit_oldFile3->text().toStdString().c_str(),ui->lineEdit_oldFile3->text().toStdString().length()); if(ui->checkBox_old4->checkState()) memcpy_s(inputData.oldFilePath[4],MAX_PATH,ui->lineEdit_oldFile4->text().toStdString().c_str(),ui->lineEdit_oldFile4->text().toStdString().length()); if(ui->checkBox_old5->checkState()) memcpy_s(inputData.oldFilePath[5],MAX_PATH,ui->lineEdit_oldFile5->text().toStdString().c_str(),ui->lineEdit_oldFile5->text().toStdString().length()); if(ui->checkBox_old6->checkState()) memcpy_s(inputData.oldFilePath[6],MAX_PATH,ui->lineEdit_oldFile6->text().toStdString().c_str(),ui->lineEdit_oldFile6->text().toStdString().length()); if(ui->checkBox_old7->checkState()) memcpy_s(inputData.oldFilePath[7],MAX_PATH,ui->lineEdit_oldFile7->text().toStdString().c_str(),ui->lineEdit_oldFile7->text().toStdString().length()); memcpy_s(inputData.pkgFilePath,MAX_PATH,ui->lineEdit_pkgFile->text().toStdString().c_str(),ui->lineEdit_pkgFile->text().toStdString().length()); inputData.check_d = ui->checkBox_d->checkState(); inputData.check_z = ui->checkBox_z->checkState(); dfota.check_task(this,&inputData); } void MainWindow::bt_clrLog_solt(){ ui->textEdit_log->setText(""); } void MainWindow::process_bar_solt(int p,QString msg){ ui->progressBar->setValue(p); ui->label_bar_msg->setText(msg); } void MainWindow::pkg_set_path_solt(QString msg){ ui->lineEdit_pkgFile->setText(msg); WritePrivateProfileString("pkgBinFile", "file", msg.toStdString().c_str(), DFOTACONFIG_FILE); } //PartiallyChecked void MainWindow::checkBox_all_solt(){ ui->checkBox_old0->setCheckState(Qt::Checked); ui->checkBox_old1->setCheckState(Qt::Checked); ui->checkBox_old2->setCheckState(Qt::Checked); ui->checkBox_old3->setCheckState(Qt::Checked); ui->checkBox_old4->setCheckState(Qt::Checked); ui->checkBox_old5->setCheckState(Qt::Checked); ui->checkBox_old6->setCheckState(Qt::Checked); ui->checkBox_old7->setCheckState(Qt::Checked); } void MainWindow::checkBox_none_solt(){ ui->checkBox_old0->setCheckState(Qt::Unchecked); ui->checkBox_old1->setCheckState(Qt::Unchecked); ui->checkBox_old2->setCheckState(Qt::Unchecked); ui->checkBox_old3->setCheckState(Qt::Unchecked); ui->checkBox_old4->setCheckState(Qt::Unchecked); ui->checkBox_old5->setCheckState(Qt::Unchecked); ui->checkBox_old6->setCheckState(Qt::Unchecked); ui->checkBox_old7->setCheckState(Qt::Unchecked); } void MainWindow::checkBox_d_solt(){ // d=0,z=0,-> d=0,z=0 // d=0,z=Z,-> d=0,z=Z // d=1,z=0,-> 禁止 // d=D,z=Z,-> d=D,z=Z if(ui->checkBox_d->checkState()==Qt::Checked&&ui->checkBox_z->checkState()==Qt::Unchecked){ QMessageBox::warning(this,"DFOTA","不允许的操作,有差分则必须有压缩"); ui->checkBox_d->setCheckState(Qt::Checked);ui->checkBox_z->setCheckState(Qt::Checked); } } void MainWindow::checkBox_z_solt(){ // d=0,z=0,-> d=0,z=0 // d=0,z=Z,-> d=0,z=Z // d=1,z=0,-> 禁止 // d=D,z=Z,-> d=D,z=Z if(ui->checkBox_d->checkState()==Qt::Checked&&ui->checkBox_z->checkState()==Qt::Unchecked){ QMessageBox::warning(this,"DFOTA","不允许的操作,有差分则必须有压缩"); ui->checkBox_d->setCheckState(Qt::Checked);ui->checkBox_z->setCheckState(Qt::Checked); } } void MainWindow::editTimeStamp_slot(){ char logMsg[256]={0}; bool ok; time_t stamp = ui->lineEdit_time_stamp->text().toUInt(); get_stamp2string_s(stamp,logMsg); ui->lineEdit_time_string->setText(logMsg); return; } void MainWindow::editTimeString_slot(){ return; } void MainWindow::crc32_test_slot(){ bool ok; int tail =0; QString path = ""; uint8_t* buff = nullptr; int size=0; uint32_t crc=0; int result=0; char logMsg[256]={0}; int logLen=0; path = QFileDialog::getOpenFileName(this,"请打开需要crc32计算的bin文件","./","二进制文件(*.bin)"); if(path.length() == 0) return; buff = (uint8_t*)malloc(MAX_BIN_SIZE); if(buff==nullptr) return; result = my_fr(path.toStdString().c_str(),buff,&size); if(result<=0)return; if(size>MAX_BIN_SIZE){ QMessageBox::warning(this,"crc32测试结果","选择的文件 太大 了"); if(buff) free(buff); return; } if((size-tail)<4){ QMessageBox::warning(this,"crc32测试结果","选择的文件 太小 了"); if(buff) free(buff); return; } tail = ui->lineEdit_crc32_test->text().toUInt(&ok); crc = crc32((uint32_t*)buff,(size-tail)/4); snprintf(logMsg,sizeof(logMsg),"tail=%d,crc32 = 0x%08X.\r\n%s.\r\n",tail,crc,path.toStdString().c_str()); qDebug() << logMsg; QMessageBox::warning(this,"crc32测试结果",logMsg); if(buff) free(buff); } void MainWindow::test_solt(){ dfota_test(); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { char logMsg[256]={0}; ui->setupUi(this); snprintf(logMsg,sizeof(logMsg),"%s (build %s)",APP_VERSION,g_build_date_time); this->setWindowTitle(logMsg); pui = ui; qInstallMessageHandler(MainWindow::myMessageOutput); getConfig(); ui->lineEdit_time_stamp->setText(QString::number(time(NULL))); get_stamp2string_s(time(NULL),logMsg); ui->lineEdit_time_string->setText(logMsg); connect(ui->lineEdit_ep, SIGNAL(editingFinished()),this,SLOT(ep_slot())); connect(ui->pushButton_newFile, SIGNAL(clicked()),this,SLOT(openNewFile_slot())); connect(ui->pushButton_oldFile0,SIGNAL(clicked()),this,SLOT(openOldFile0_slot())); connect(ui->pushButton_oldFile1,SIGNAL(clicked()),this,SLOT(openOldFile1_slot())); connect(ui->pushButton_oldFile2,SIGNAL(clicked()),this,SLOT(openOldFile2_slot())); connect(ui->pushButton_oldFile3,SIGNAL(clicked()),this,SLOT(openOldFile3_slot())); connect(ui->pushButton_oldFile4,SIGNAL(clicked()),this,SLOT(openOldFile4_slot())); connect(ui->pushButton_oldFile5,SIGNAL(clicked()),this,SLOT(openOldFile5_slot())); connect(ui->pushButton_oldFile6,SIGNAL(clicked()),this,SLOT(openOldFile6_slot())); connect(ui->pushButton_oldFile7,SIGNAL(clicked()),this,SLOT(openOldFile7_slot())); connect(ui->pushButton_pkgFile, SIGNAL(clicked()),this,SLOT(openPkgFolder_slot())); connect(ui->lineEdit_newFile,SIGNAL(editingFinished()),this,SLOT(editNewFile_slot())); connect(ui->lineEdit_oldFile0,SIGNAL(editingFinished()),this,SLOT(editOldFile0_slot())); connect(ui->lineEdit_oldFile1,SIGNAL(editingFinished()),this,SLOT(editOldFile1_slot())); connect(ui->lineEdit_oldFile2,SIGNAL(editingFinished()),this,SLOT(editOldFile2_slot())); connect(ui->lineEdit_oldFile3,SIGNAL(editingFinished()),this,SLOT(editOldFile3_slot())); connect(ui->lineEdit_oldFile4,SIGNAL(editingFinished()),this,SLOT(editOldFile4_slot())); connect(ui->lineEdit_oldFile5,SIGNAL(editingFinished()),this,SLOT(editOldFile5_slot())); connect(ui->lineEdit_oldFile6,SIGNAL(editingFinished()),this,SLOT(editOldFile6_slot())); connect(ui->lineEdit_oldFile7,SIGNAL(editingFinished()),this,SLOT(editOldFile7_slot())); connect(ui->lineEdit_pkgFile,SIGNAL(editingFinished()),this,SLOT(editPkgFolder_slot())); connect(ui->pushButton_pkg_create,SIGNAL(clicked()),this,SLOT(pkg_creater_slot())); connect(ui->pushButton_pkg_check,SIGNAL(clicked()),this,SLOT(pkg_check_slot())); connect(ui->pushButton_pkg_read,SIGNAL(clicked()),this,SLOT(pkg_read_slot())); connect(ui->pushButton_clrLog,SIGNAL(clicked()),this,SLOT(bt_clrLog_solt())); connect(ui->pushButton_exit,SIGNAL(clicked()),this,SLOT(close())); connect(ui->pushButton_check_all,SIGNAL(clicked()),this,SLOT(checkBox_all_solt())); connect(ui->pushButton_check_none,SIGNAL(clicked()),this,SLOT(checkBox_none_solt())); connect(ui->checkBox_d,SIGNAL(released()),this,SLOT(checkBox_d_solt())); connect(ui->checkBox_z,SIGNAL(released()),this,SLOT(checkBox_z_solt())); connect(this,SIGNAL(process_bar_signals(int,QString)),this,SLOT(process_bar_solt(int,QString))); connect(this,SIGNAL(qdebug_signals(QString)),ui->textEdit_log,SLOT(append(QString))); connect(this,SIGNAL(pkg_set_path_signals(QString)),this,SLOT(pkg_set_path_solt(QString))); connect(ui->lineEdit_time_stamp,SIGNAL(editingFinished()),this,SLOT(editTimeStamp_slot())); connect(ui->lineEdit_time_string,SIGNAL(editingFinished()),this,SLOT(editTimeString_slot())); connect(ui->pushButton_test,SIGNAL(clicked()),this,SLOT(test_solt())); connect(ui->pushButton_crc32_test,SIGNAL(clicked()),this,SLOT(crc32_test_slot())); } MainWindow::~MainWindow() { delete ui; }