From 67c0cbf27bbed70580e3e4646c6fac947499332c Mon Sep 17 00:00:00 2001 From: uniartisan Date: Sat, 10 Dec 2022 13:22:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9Bbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/sparkapi.cpp | 4 ++-- src/mainwindow-dtk.cpp | 17 +++++++++++------ src/pages/appintopage.cpp | 20 +++++++++++--------- src/utils/httprequest.cpp | 2 +- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/backend/sparkapi.cpp b/src/backend/sparkapi.cpp index 8a1bf09..75a1d81 100644 --- a/src/backend/sparkapi.cpp +++ b/src/backend/sparkapi.cpp @@ -12,7 +12,7 @@ void SparkAPI::get(QUrl url) { QNetworkRequest request; HttpRequest *httprequest=new HttpRequest; - request.setUrl(url); + request.setUrl(QUrl(url.toString().replace("+","%2B"))); connect(httprequest,&HttpRequest::finished,[=](QString data){ QByteArray arr = data.toUtf8(); //解析Json @@ -40,7 +40,7 @@ void SparkAPI::getSearchList(QString keyword) } void SparkAPI::getAppInfo(QUrl spk) { - get(QUrl(getServerUrl()+"store"+spk.path() + "/app.json")); + get(QUrl(getServerUrl()+"store"+spk.path().replace("+","%2B") + "/app.json")); } QString SparkAPI::getServerUrl() { diff --git a/src/mainwindow-dtk.cpp b/src/mainwindow-dtk.cpp index c05bddd..5f3410d 100644 --- a/src/mainwindow-dtk.cpp +++ b/src/mainwindow-dtk.cpp @@ -5,6 +5,11 @@ #include #include +#define AppPageApplist 0 +#define AppPageSearchlist 1 +#define AppPageAppdetail 2 +#define AppPageSettings 3 + MainWindow::MainWindow(QWidget *parent) : DBlurEffectWidget(parent) , ui(new Ui::MainWindow) @@ -42,7 +47,7 @@ MainWindow::MainWindow(QWidget *parent) menu->addAction(setting); ui->titlebar->setMenu(menu); - connect(setting, &QAction::triggered, this, [=]{switchPage(3);}); + connect(setting, &QAction::triggered, this, [=]{switchPage(AppPageSettings);}); //主题切换 connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [=](DGuiApplicationHelper::ColorType themeType) { if (themeType == DGuiApplicationHelper::DarkType) { @@ -155,7 +160,7 @@ MainWindow::MainWindow(QWidget *parent) searchEdit->clearEdit(); } else { ui->applistpage_1->getSearchList(searchtext); - switchPage(1); + switchPage(AppPageSearchlist); searchEdit->clearEdit(); } } @@ -183,10 +188,10 @@ MainWindow::~MainWindow() void MainWindow::openUrl(QUrl url) { if (url.toString().startsWith("spk://")) { - ui->appintopage->openUrl(url); - switchPage(2); + ui->appintopage->openUrl(QUrl(url.toString().replace("+","%2B"))); + switchPage(AppPageAppdetail); } else { - QDesktopServices::openUrl(url); + QDesktopServices::openUrl(QUrl(url.toString().replace("+","%2B"))); } } @@ -229,5 +234,5 @@ void MainWindow::updateUi(int now) << "others"; ui->applistpage->getAppList(itemlist[now]); qDebug() << itemlist[now]; - switchPage(0); + switchPage(AppPageApplist); } diff --git a/src/pages/appintopage.cpp b/src/pages/appintopage.cpp index 06dbf19..7f3509e 100644 --- a/src/pages/appintopage.cpp +++ b/src/pages/appintopage.cpp @@ -54,12 +54,13 @@ void AppIntoPage::openUrl(QUrl url) connect(api,&SparkAPI::finishedObject,[=](QJsonObject appinfo){ info = appinfo; - qDebug()<getImgServerUrl()+"store"+url.path() + "/icon.png")); + qDebug()<getImgServerUrl()+"store"+url.path().replace("+","%2B") + "/icon.png"; + request.setUrl(QUrl(api->getImgServerUrl()+"store"+url.path().replace("+","%2B") + "/icon.png")); request.setRawHeader("User-Agent", "Mozilla/5.0"); request.setRawHeader("Content-Type", "charset='utf-8'"); naManager->get(request); @@ -84,8 +85,9 @@ void AppIntoPage::openUrl(QUrl url) bool isInstalled; bool isUpdated; QString packagename = info["Pkgname"].toString(); - isInstall.start("dpkg -s " + info["Pkgname"].toString()); - isInstall.waitForFinished(); + isInstall.start("dpkg -s " + info["Pkgname"].toString()); //todo + isInstall.waitForStarted(); + isInstall.waitForFinished(-1); int error = QString::fromStdString(isInstall.readAllStandardError().toStdString()).length(); if(error == 0) { @@ -93,12 +95,12 @@ void AppIntoPage::openUrl(QUrl url) QProcess isUpdate; isUpdate.start("dpkg-query --showformat='${Version}' --show " + info["Pkgname"].toString()); - isUpdate.waitForFinished(); + isUpdate.waitForFinished(10); QString localVersion = isUpdate.readAllStandardOutput(); localVersion.replace("'", ""); isUpdate.start("dpkg --compare-versions " + localVersion + " ge " + info["Version"].toString()); - isUpdate.waitForFinished(); + isUpdate.waitForFinished(10); if(!isUpdate.exitCode()) { isUpdated = true; @@ -153,7 +155,7 @@ void AppIntoPage::openUrl(QUrl url) QNetworkAccessManager *naManager; QNetworkRequest request; naManager=new QNetworkAccessManager(this); - request.setUrl(QUrl(imglist[i])); + request.setUrl(QUrl(imglist[i].replace("+","%2B"))); request.setRawHeader("User-Agent", "Mozilla/5.0"); request.setRawHeader("Content-Type", "charset='utf-8'"); naManager->get(request); @@ -294,11 +296,11 @@ void AppIntoPage::on_pushButton_3_clicked() QProcess uninstall; uninstall.start("pkexec", QStringList() << "apt" << "purge" << "-y" << info["Pkgname"].toString().toLower()); - uninstall.waitForFinished(); + uninstall.waitForFinished(-1); QProcess check; check.start("dpkg", QStringList() << "-s" << info["Pkgname"].toString().toLower()); - check.waitForFinished(); + check.waitForFinished(10); if (check.readAllStandardOutput().isEmpty()) { diff --git a/src/utils/httprequest.cpp b/src/utils/httprequest.cpp index ef2ca87..a9a73dd 100644 --- a/src/utils/httprequest.cpp +++ b/src/utils/httprequest.cpp @@ -27,7 +27,7 @@ QString HttpRequest::postRequest(QString url, QString jsondata) QByteArray array= jsondata.toLatin1(); QNetworkRequest request; QNetworkAccessManager *naManager=new QNetworkAccessManager(this); - QUrl strUrl = url; + QUrl strUrl = url.replace("+","%2B"); request.setUrl(strUrl); request.setRawHeader("Content-Type", "charset='utf-8'"); request.setRawHeader("Content-Type", "application/json");