diff options
author | Saturn&Eric <[email protected]> | 2021-08-23 12:20:22 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2021-08-23 12:20:22 +0000 |
commit | cfc3f9545e713dc9378108b88d3dc97fd168a572 (patch) | |
tree | cb0ef59b60f1a0ebc70156fe1bb6a22c205497c3 /src/ui/help/AboutDialog.cpp | |
parent | Merge pull request #15 from saturneric/develop (diff) | |
parent | Fix a discovered problem. (diff) | |
download | GpgFrontend-cfc3f9545e713dc9378108b88d3dc97fd168a572.tar.gz GpgFrontend-cfc3f9545e713dc9378108b88d3dc97fd168a572.zip |
Merge pull request #22 from saturneric/develop
Diffstat (limited to 'src/ui/help/AboutDialog.cpp')
-rw-r--r-- | src/ui/help/AboutDialog.cpp | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/src/ui/help/AboutDialog.cpp b/src/ui/help/AboutDialog.cpp index 807c509d..e5798541 100644 --- a/src/ui/help/AboutDialog.cpp +++ b/src/ui/help/AboutDialog.cpp @@ -37,7 +37,7 @@ AboutDialog::AboutDialog(int defaultIndex, QWidget *parent) auto *tabWidget = new QTabWidget; auto *infoTab = new InfoTab(); auto *translatorsTab = new TranslatorsTab(); - auto *updateTab = new UpdateTab(); + updateTab = new UpdateTab(); tabWidget->addTab(infoTab, tr("General")); tabWidget->addTab(translatorsTab, tr("Translators")); @@ -45,9 +45,6 @@ AboutDialog::AboutDialog(int defaultIndex, QWidget *parent) connect(tabWidget, &QTabWidget::currentChanged, this, [&](int index) { qDebug() << "Current Index" << index; - if(index == 2) { - updateTab->getLatestVersion(); - } }); if(defaultIndex < tabWidget->count() && defaultIndex >= 0) { @@ -62,7 +59,12 @@ AboutDialog::AboutDialog(int defaultIndex, QWidget *parent) mainLayout->addWidget(buttonBox); setLayout(mainLayout); - this->exec(); + this->show(); +} + +void AboutDialog::showEvent(QShowEvent *ev) { + QDialog::showEvent(ev); + updateTab->getLatestVersion(); } InfoTab::InfoTab(QWidget *parent) @@ -157,6 +159,8 @@ UpdateTab::UpdateTab(QWidget *parent) { layout->addItem(new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Fixed), 2, 1, 1, 1); + connect(this, SIGNAL(replyFromUpdateServer(QByteArray)), this, SLOT(processReplyDataFromUpdateServer(QByteArray))); + setLayout(layout); } @@ -172,44 +176,42 @@ void UpdateTab::getLatestVersion() { QNetworkRequest request; request.setUrl(QUrl(baseUrl)); - QNetworkReply *replay = manager->get(request); + auto thread = QThread::create([replay, this]() { + while(replay->isRunning()) QApplication::processEvents(); + emit replyFromUpdateServer(replay->readAll()); + }); + connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); + thread->start(); - while(replay->isRunning()) { - QApplication::processEvents(); - } +} + +void UpdateTab::processReplyDataFromUpdateServer(const QByteArray& data) { - this->pb->setHidden(true); + qDebug() << "Try to Process Reply Data From Update Server"; - if(replay->error() != QNetworkReply::NoError) { + this->pb->setHidden(true); + + Document d; + if (d.Parse(data.constData()).HasParseError() || !d.IsObject()) { qDebug() << "VersionCheckThread Found Network Error"; auto latestVersion = "Unknown"; latestVersionLabel->setText("<center><b>" + tr("Latest Version From Github: ") + latestVersion + "</b></center>"); return; } - QByteArray bytes = replay->readAll(); - - Document d; - d.Parse(bytes.constData()); - QString latestVersion = d["tag_name"].GetString(); qDebug() << "Latest Version From Github" << latestVersion; - QRegularExpression re("^[vV](\\d+\\.)?(\\d+\\.)?(\\*|\\d+)"); + QRegularExpression re(R"(^[vV](\d+\.)?(\d+\.)?(\*|\d+))"); QRegularExpressionMatch match = re.match(latestVersion); if (match.hasMatch()) { - latestVersion = match.captured(0); // matched == "23 def" + latestVersion = match.captured(0); qDebug() << "Latest Version Matched" << latestVersion; - } else { - latestVersion = "Unknown"; - } + } else latestVersion = "Unknown"; latestVersionLabel->setText("<center><b>" + tr("Latest Version From Github: ") + latestVersion + "</b></center>"); - if(latestVersion > currentVersion) { - upgradeLabel->setHidden(false); - } - + if(latestVersion > currentVersion) upgradeLabel->setHidden(false); } |