From adf8b478a8c64a24c24c32c59468bbffab67fe15 Mon Sep 17 00:00:00 2001 From: zty199 <1282441920@qq.com> Date: Tue, 29 Jun 2021 13:46:26 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BF=AE=E5=A4=8D=E6=8A=95=E9=80=92?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=EF=BC=9B=E6=96=B0=E5=A2=9E=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: 修复投递链接; chore: 应用详情页支持判断是否需要升级。 --- src/widget.cpp | 16 ++++++++++++---- src/widget.h | 5 +++-- src/workerthreads.cpp | 21 ++++++++++++++++++++- src/workerthreads.h | 3 ++- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/widget.cpp b/src/widget.cpp index e5e713b..30160c1 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -198,7 +198,7 @@ void Widget::initUI() menu->addAction(actionSubmission); titlebar->setMenu(menu); - connect(actionSubmission, &QAction::triggered, this, [=]{QDesktopServices::openUrl(QUrl("https://upload.spark-app.store/"));}); + connect(actionSubmission, &QAction::triggered, this, [=]{QDesktopServices::openUrl(QUrl("https://upload.deepinos.org/"));}); connect(setting, &QAction::triggered, this, &Widget::opensetting); // 载入自定义字体 @@ -863,7 +863,7 @@ void Widget::sltAppinfoTags(QStringList *tagList) void Widget::sltAppinfoDetails(QString *name, QString *details, QString *info, QString *website, QString *packageName, QUrl *fileUrl, - bool isInstalled) + bool isInstalled, bool isUpdated) { ui->label_appname->setText(appName = *name); ui->label_appname->show(); @@ -878,8 +878,16 @@ void Widget::sltAppinfoDetails(QString *name, QString *details, QString *info, if(isInstalled) { - ui->pushButton_download->setText(tr("Reinstall")); - ui->pushButton_uninstall->show(); + if(isUpdated) + { + ui->pushButton_download->setText(tr("Reinstall")); + ui->pushButton_uninstall->show(); + } + else + { + ui->pushButton_download->setText(tr("Upgrade")); + ui->pushButton_uninstall->show(); + } } else { diff --git a/src/widget.h b/src/widget.h index 42d8c3d..41f7cf2 100644 --- a/src/widget.h +++ b/src/widget.h @@ -75,8 +75,9 @@ private slots: void sltAppinfoResetUi(); void sltAppinfoTags(QStringList *tagList); void sltAppinfoDetails(QString *name, QString *details, QString *info, - QString *website, QString *packageName, - QUrl *fileUrl, bool isInstalled); + QString *website, QString *packageName, + QUrl *fileUrl, bool isInstalled, + bool isUpdated); void sltAppinfoIcon(QPixmap *icon); void sltAppinfoScreenshot(QPixmap *picture, int index); void sltAppinfoFinish(); diff --git a/src/workerthreads.cpp b/src/workerthreads.cpp index 35299f7..52ddd69 100644 --- a/src/workerthreads.cpp +++ b/src/workerthreads.cpp @@ -21,6 +21,7 @@ void SpkAppInfoLoaderThread::run() qDebug() << "请求应用信息 " << json_array; QString urladdress, deatils, more, packagename, appweb; bool isInstalled; + bool isUpdated; // 将路径转化为相应源的下载路径 urladdress = targetUrl.toString().left(targetUrl.toString().length() - 8); @@ -70,13 +71,31 @@ void SpkAppInfoLoaderThread::run() if(error == 0) { isInstalled = true; + + QProcess isUpdate; + isUpdate.start("dpkg-query --showformat='${Version}' --show " + json["Pkgname"].toString()); + isUpdate.waitForFinished(); + QString localVersion = isUpdate.readAllStandardOutput(); + localVersion.replace("'", ""); + + isUpdate.start("dpkg --compare-versions " + localVersion + " ge " + json["Version"].toString()); + isUpdate.waitForFinished(); + if(!isUpdate.exitCode()) + { + isUpdated = true; + } + else + { + isUpdated = false; + } } else { isInstalled = false; + isUpdated = false; } - emit requestSetAppInformation(&appName, &details, &more, &appweb, &packagename, &fileUrl, isInstalled); + emit requestSetAppInformation(&appName, &details, &more, &appweb, &packagename, &fileUrl, isInstalled, isUpdated); // tag 加载 QString tags = json["Tags"].toString(); diff --git a/src/workerthreads.h b/src/workerthreads.h index d66d748..afe4be3 100644 --- a/src/workerthreads.h +++ b/src/workerthreads.h @@ -40,7 +40,8 @@ signals: void requestSetTags(QStringList *tagList); void requestSetAppInformation(QString *name, QString *details, QString *info, QString *website, QString *packageName, - QUrl *fileUrl, bool isInstalled); + QUrl *fileUrl, bool isInstalled, + bool isUpdated); void finishedIconLoad(QPixmap *icon); void finishedScreenshotLoad(QPixmap *icon, int index); // 该信号必须以 BlockingQueued 方式连接 void finishAllLoading(); // 该信号必须以 BlockingQueued 方式连接