#include "dialog_upgrade.h" #include "ui_dialog_upgrade.h" #include "base/HGUtility.h" #include #include #include #include Dialog_upgrade::Dialog_upgrade(class VersionDll *versionDll, HGVersionInfo *versionInfo, HGUInt versionCount, QWidget *parent) : QDialog(parent) , ui(new Ui::Dialog_upgrade) , m_versionDll(versionDll) , m_versionInfo(versionInfo) , m_versionCount(versionCount) { ui->setupUi(this); setWindowTitle(tr("upgrade online")); setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); this->layout()->setSizeConstraint(QLayout::SetFixedSize); ui->listWidget->setVisible(false); ui->pbtn_upgrade->setVisible(false); ui->pbtn_install->setVisible(false); ui->pbtn_cancel->setVisible(false); ui->label->setVisible(false); for(HGUInt i = 0; i < m_versionCount; ++i) { QListWidgetItem *listwidgetItem = new QListWidgetItem; listwidgetItem->setText(QString(m_versionInfo[i].version)); std::string desc = m_versionInfo[i].desc; std::string bugInfo = m_versionInfo[i].bugInfo; if(desc.empty() && !bugInfo.empty()) { listwidgetItem->setToolTip(tr("bug description: \n") + m_versionInfo[i].bugInfo); } if(!desc.empty() && bugInfo.empty()) { listwidgetItem->setToolTip(tr("upgrade contents: \n") + m_versionInfo[i].desc); } if(!desc.empty() && !bugInfo.empty()) { listwidgetItem->setToolTip(tr("upgrade contents: \n") + m_versionInfo[i].desc + tr("\nbug description: \n") + m_versionInfo[i].bugInfo); } ui->listWidget->addItem(listwidgetItem); } if(ui->listWidget->count() > 0) { ui->listWidget->setCurrentRow(0); } HGChar currVersion[64] = {0}; m_versionDll->GetCurrVersion(HGVERSION_APPNAME_SCANNER, currVersion, 64); HGInt result = 0; std::string newestVersionNum = ui->listWidget->item(0)->text().toStdString().c_str(); m_versionDll->CompareVersion(currVersion, newestVersionNum.c_str(), &result); if(result == 0 || result == 1) { ui->label_detectResult->setText(tr("The current version is the latest! The current version number is : ") + currVersion); ui->pbtn_upgrade->setVisible(false); } else { ui->pbtn_upgrade->setVisible(true); ui->label_detectResult->setText(tr("Discover the new version : ") + ui->listWidget->item(0)->text().toStdString().c_str() + tr(" ,the current version is : ") + currVersion); } } Dialog_upgrade::~Dialog_upgrade() { delete ui; } QString Dialog_upgrade::getVersionNum() { return m_versionNum; } void Dialog_upgrade::on_pbtn_install_clicked() { QListWidgetItem *item = ui->listWidget->currentItem(); on_listWidget_itemDoubleClicked(item); } void Dialog_upgrade::on_pbtn_cancel_clicked() { close(); } void Dialog_upgrade::on_listWidget_itemDoubleClicked(QListWidgetItem *item) { HGChar currVersion[64] = {0}; m_versionDll->GetCurrVersion(HGVERSION_APPNAME_SCANNER, currVersion, 64); std::string selectVersionNum = item->text().toStdString().c_str(); HGInt result = 0; m_versionDll->CompareVersion(currVersion, selectVersionNum.c_str(), &result); if(result == 0) { QMessageBox::information(this, tr("tip"), tr("Already in current version")); return; } m_versionNum = item->text(); accept(); } void Dialog_upgrade::on_pbtn_selectVersion_clicked() { if(ui->listWidget->count() == 0) { ui->pbtn_install->setVisible(false); } else { ui->pbtn_install->setVisible(true); } ui->pbtn_selectVersion->setVisible(false); ui->listWidget->setVisible(true); ui->pbtn_cancel->setVisible(true); ui->label->setVisible(true); } void Dialog_upgrade::on_pbtn_upgrade_clicked() { QListWidgetItem *item = ui->listWidget->item(0); on_listWidget_itemDoubleClicked(item); }