diff --git a/app/fwupgrade/mainwindow.cpp b/app/fwupgrade/mainwindow.cpp index ab92895e..70ccb7b9 100644 --- a/app/fwupgrade/mainwindow.cpp +++ b/app/fwupgrade/mainwindow.cpp @@ -38,8 +38,6 @@ MainWindow::MainWindow(QWidget *parent) m_versionMgr = nullptr; HGVersion_CreateMgr(&m_versionMgr); - m_versionInfo = nullptr; - m_versionCount = 0; SANE_Int v = 0; sane_init_ex(&v, sane_ex_callback, this); @@ -57,9 +55,7 @@ MainWindow::~MainWindow() sane_exit(); - HGVersion_ReleaseVersionList(m_versionInfo, m_versionCount); - m_versionInfo = nullptr; - m_versionCount = 0; + m_vVersion.clear(); HGVersion_DestroyMgr(m_versionMgr); m_versionMgr = nullptr; @@ -211,9 +207,7 @@ void MainWindow::on_comboDevList_currentIndexChanged(int index) { ui->comboDevList2->setCurrentIndex(index); - HGVersion_ReleaseVersionList(m_versionInfo, m_versionCount); - m_versionInfo = nullptr; - m_versionCount = 0; + m_vVersion.clear(); ui->comboVersionList->clear(); ui->editFilePath->clear(); @@ -290,20 +284,28 @@ void MainWindow::on_comboDevList_currentIndexChanged(int index) void MainWindow::on_btnGetVersionList_clicked() { - HGVersion_ReleaseVersionList(m_versionInfo, m_versionCount); - m_versionInfo = nullptr; - m_versionCount = 0; + m_vVersion.clear(); ui->comboVersionList->clear(); QString devType = GetDevType(m_curFwVersion); assert(!devType.isEmpty()); - HGVersion_GetDriverVersionList(m_versionMgr, devType.toStdString().c_str(), &m_versionInfo, &m_versionCount); - if (0 != m_versionCount) + HGVersionInfo *versionInfo = nullptr; + HGUInt versionCount = 0; + HGVersion_GetDriverVersionList(m_versionMgr, devType.toStdString().c_str(), &versionInfo, &versionCount); + if (0 != versionCount) { - for (HGUInt i = 0; i < m_versionCount; ++i) + for (HGUInt i = 0; i < versionCount; ++i) { - ui->comboVersionList->addItem(m_versionInfo[i].version); + if (QString(versionInfo[i].version) > m_curFwVersion) + { + VersionInfo inf; + inf.version = versionInfo[i].version; + inf.url = versionInfo[i].url; + inf.md5 = versionInfo[i].md5; + m_vVersion.push_back(inf); + ui->comboVersionList->addItem(versionInfo[i].version); + } } } else @@ -312,6 +314,8 @@ void MainWindow::on_btnGetVersionList_clicked() msg.setButtonText(QMessageBox::Yes, tr("yes")); msg.exec(); } + + HGVersion_ReleaseVersionList(versionInfo, versionCount); } void MainWindow::on_comboVersionList_currentIndexChanged(int index) @@ -377,9 +381,9 @@ void MainWindow::on_btnDownloadUpgrade_clicked() int idx = ui->comboVersionList->currentIndex(); if (-1 != idx) { - QString url = m_versionInfo[idx].url; - QString md5 = m_versionInfo[idx].md5; - QString versionNum = m_versionInfo[idx].version; + QString url = m_vVersion[idx].url.c_str(); + QString md5 = m_vVersion[idx].md5.c_str(); + QString versionNum = m_vVersion[idx].version.c_str(); if (m_curFwVersion >= versionNum) { diff --git a/app/fwupgrade/mainwindow.h b/app/fwupgrade/mainwindow.h index 893cb82e..54fccc42 100644 --- a/app/fwupgrade/mainwindow.h +++ b/app/fwupgrade/mainwindow.h @@ -9,6 +9,13 @@ QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE +struct VersionInfo +{ + std::string version; + std::string url; + std::string md5; +}; + class MainWindow : public QMainWindow { Q_OBJECT @@ -56,8 +63,7 @@ private: private: Ui::MainWindow *ui; HGVersionMgr m_versionMgr; - HGVersionInfo* m_versionInfo; - HGUInt m_versionCount; + std::vector m_vVersion; QString m_curDevName; SANE_Handle m_curDevHandle; diff --git a/app/fwupgrade/mainwindow.ui b/app/fwupgrade/mainwindow.ui index dcf2c10b..841d0100 100644 --- a/app/fwupgrade/mainwindow.ui +++ b/app/fwupgrade/mainwindow.ui @@ -30,7 +30,7 @@ - 0 + 1 @@ -52,9 +52,9 @@ - 180 + 190 80 - 401 + 391 20