From b1c2b1bbc6f592a888ebac5c0eb54ef8a6bbe4a9 Mon Sep 17 00:00:00 2001 From: shenmo Date: Mon, 13 Jul 2020 19:26:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E5=88=B05.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- downloadlist.cpp | 35 +++++------- downloadlist.h | 1 - downloadlist.ui | 6 ++ main.cpp | 2 +- widget.cpp | 140 +++++++++++++++++++++++++++++------------------ widget.h | 8 ++- widget.ui | 93 +++++++++++++++++++++++++++++-- 7 files changed, 203 insertions(+), 82 deletions(-) diff --git a/downloadlist.cpp b/downloadlist.cpp index c606608..ed1766b 100644 --- a/downloadlist.cpp +++ b/downloadlist.cpp @@ -17,7 +17,6 @@ downloadlist::downloadlist(QWidget *parent) : ui->label_filename->hide(); ui->pushButton->hide(); ui->pushButton_3->hide(); - ui->label->setStyleSheet("color:#000000"); } downloadlist::~downloadlist() @@ -29,7 +28,7 @@ void downloadlist::setValue(long long value) { ui->progressBar->setValue(value); ui->label_2->setText(QString::number((double)value/100)+"% ("+speed+")"); - if(ui->label_2->text()=="100%"){ + if(ui->label_2->text().left(4)=="100%"){ ui->label_2->setText("已完成,等待安装"); } } @@ -56,18 +55,7 @@ void downloadlist::readyInstall() ui->pushButton->setEnabled(true); ui->pushButton->show(); ui->pushButton_2->hide(); - system("notify-send \""+ui->label->text().toUtf8()+"下载完成,等待安装\"" +" --icon=/tmp/deepin-community-store/icon_"+QString::number(num).toUtf8()+".png"); - } -} - -void downloadlist::choose(bool isChoosed) -{ - if(isChoosed){ - ui->label->setStyleSheet("color:#FFFFFF"); - ui->label_2->setStyleSheet("color:#FFFFFF"); - }else { - ui->label->setStyleSheet("color:#000000"); - ui->label_2->setStyleSheet("color:#000000"); + system("notify-send \""+ui->label->text().toUtf8()+"下载完成,等待安装\"" +" --icon=/tmp/spark-store/icon_"+QString::number(num).toUtf8()+".png"); } } @@ -96,14 +84,14 @@ void downloadlist::on_pushButton_clicked() if(!isInstall){ isInstall=true; ui->pushButton->setEnabled(false); - qDebug()<<"/tmp/deepin-community-store/"+ui->label_filename->text().toUtf8(); + qDebug()<<"/tmp/spark-store/"+ui->label_filename->text().toUtf8(); ui->label_2->setText("正在安装,请稍候"); QtConcurrent::run([=](){ QProcess installer; if(reinstall){ - installer.start("pkexec ssinstall /tmp/deepin-community-store/"+ui->label_filename->text().toUtf8()); + installer.start("pkexec ssinstall /tmp/spark-store/"+ui->label_filename->text().toUtf8()); }else { - installer.start("pkexec ssinstall /tmp/deepin-community-store/"+ui->label_filename->text().toUtf8()); + installer.start("pkexec ssinstall /tmp/spark-store/"+ui->label_filename->text().toUtf8()); } installer.waitForFinished(); @@ -130,15 +118,22 @@ void downloadlist::on_pushButton_clicked() ui->label_2->setText("安装完成"); ui->pushButton_3->show(); }else { - ui->pushButton->hide(); - ui->label_2->setText("安装出现错误"); + ui->pushButton->show(); + ui->pushButton->setEnabled(true); + ui->pushButton->setText("重装"); + ui->label_2->setText("安装出现错误,可重新安装"); ui->pushButton_3->show(); } if(notRoot){ - ui->label_2->setText("安装被终止"); + ui->label_2->setText("安装被终止,可重新安装"); ui->pushButton->setEnabled(true); + ui->pushButton->show(); + ui->pushButton_3->hide(); } + downloadlist::isInstall=false; + }); + qDebug()<label_filename->text().toUtf8(); } diff --git a/downloadlist.h b/downloadlist.h index 58bccaa..18a17c7 100644 --- a/downloadlist.h +++ b/downloadlist.h @@ -19,7 +19,6 @@ public: void setName(QString); QString getName(); void readyInstall(); - void choose(bool); bool free; void setFileName(QString); void seticon(const QPixmap); diff --git a/downloadlist.ui b/downloadlist.ui index 51f507e..c365677 100644 --- a/downloadlist.ui +++ b/downloadlist.ui @@ -10,6 +10,12 @@ 54 + + + 16777215 + 54 + + Form diff --git a/main.cpp b/main.cpp index ce4c9b1..693dfad 100644 --- a/main.cpp +++ b/main.cpp @@ -10,7 +10,7 @@ int main(int argc, char *argv[]) a.setAttribute(Qt::AA_UseHighDpiPixmaps); a.loadTranslator(); a.setOrganizationName("community"); - a.setApplicationVersion(DApplication::buildVersion("1.0-beta5")); + a.setApplicationVersion(DApplication::buildVersion("1.0-beta5.1")); a.setApplicationAcknowledgementPage("https://gitee.com/deepin-community-store/deepin-community-store"); a.setProductIcon(QIcon::fromTheme("spark-store")); //设置Logo a.setProductName("Spark应用商店"); diff --git a/widget.cpp b/widget.cpp index d34b0a3..adb2a2c 100644 --- a/widget.cpp +++ b/widget.cpp @@ -24,14 +24,17 @@ Widget::Widget(QWidget *parent) : { QString serverUrl; std::fstream server; - ui->setupUi(this); ui->webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);//用来激活接受linkClicked信号 ui->webView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,true); ui->stackedWidget->setCurrentIndex(0); ui->listWidget->hide(); ui->label_setting1->hide(); + ui->pushButton_5->hide(); + ui->line1_widget->setStyleSheet("background-color:#808080"); + ui->line2_widget->setStyleSheet("background-color:#808080"); manager = new QNetworkAccessManager(this); + //初始化菜单数组 left_list[0]=ui->menu_btn_main;left_menu_bg[0]=ui->menu_bg_main; left_list[1]=ui->menu_btn_network;left_menu_bg[1]=ui->menu_bg_network; left_list[2]=ui->menu_btn_chat;left_menu_bg[2]=ui->menu_bg_chat; @@ -47,30 +50,25 @@ Widget::Widget(QWidget *parent) : left_list[12]=ui->menu_btn_theme;left_menu_bg[12]=ui->menu_bg_theme; left_list[13]=ui->menu_btn_download;left_menu_bg[13]=ui->menu_bg_download; left_list[14]=ui->menu_btn_settings;left_menu_bg[14]=ui->menu_bg_settings; - server.open(QDir::homePath().toUtf8()+"/.config/deepin-community-store/server.list",std::ios::in); -// system("mkdir /etc/deepin-community-store/"); -// server.open("/etc/deepin-community-store/server.list",std::ios::in); - std::string lineTmp; + server.open(QDir::homePath().toUtf8()+"/.config/spark-store/server.list",std::ios::in); + std::string lineTmp; if(server){ while (getline(server,lineTmp)) { ui->comboBox_server->addItem(QString::fromStdString(lineTmp)); } }else { - ui->comboBox_server->addItem("http://dcstore.shenmo.tech/"); + ui->comboBox_server->addItem("http://store.jerrywang.top/"); } - QSettings readConfig(QDir::homePath()+"/.config/deepin-community-store/config.ini",QSettings::IniFormat); + QSettings readConfig(QDir::homePath()+"/.config/spark-store/config.ini",QSettings::IniFormat); if(readConfig.value("server/choose").toString()!=""){ ui->comboBox_server->setCurrentText(readConfig.value("server/choose").toString()); serverUrl=readConfig.value("server/choose").toString(); }else { - serverUrl="http://dcstore.shenmo.tech/"; + serverUrl="http://store.jerrywang.top/"; } - configCanSeve=true; - qDebug()<webView->setUrl(menuUrl[0]); for (int i =0; i<15;i++){ download_list[i].num=i; } + //分界线 QGraphicsOpacityEffect *opacityEffect_1=new QGraphicsOpacityEffect; QGraphicsOpacityEffect *opacityEffect_2=new QGraphicsOpacityEffect; - ui->line1_widget->setStyleSheet("background-color:#808080"); - ui->line2_widget->setStyleSheet("background-color:#808080"); opacityEffect_1->setOpacity(0.2); opacityEffect_2->setOpacity(0.2); ui->line1_widget->setGraphicsEffect(opacityEffect_1); ui->line2_widget->setGraphicsEffect(opacityEffect_2); - connect(ui->webView->page(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT([=](){qDebug()<<" ";})); download_speed.setInterval(1000); download_speed.start(); + //计算显示网速 connect(&download_speed,&QTimer::timeout,[=](){ if(isdownload){ size1=download_size; @@ -105,13 +105,13 @@ Widget::Widget(QWidget *parent) : double bspeed; bspeed=size1-size2; if(bspeed<1024){ - theSpeed=QString::number(bspeed)+"B"; + theSpeed=QString::number(bspeed)+"B/s"; }else if (bspeed<(1024*1024)) { - theSpeed=QString::number(0.01*int(100*(bspeed/1024)))+"KB"; + theSpeed=QString::number(0.01*int(100*(bspeed/1024)))+"KB/s"; }else if (bspeed<(1024*1024*1024)) { - theSpeed=QString::number(0.01*int(100*(bspeed/(1024*1024))))+"MB"; + theSpeed=QString::number(0.01*int(100*(bspeed/(1024*1024))))+"MB/s"; }else { - theSpeed=QString::number(0.01*int(100*(bspeed/(1024*1024*1024))))+"GB"; + theSpeed=QString::number(0.01*int(100*(bspeed/(1024*1024*1024))))+"GB/s"; } download_list[nowDownload-1].setSpeed(theSpeed); size2=download_size; @@ -126,7 +126,6 @@ Widget::Widget(QWidget *parent) : ui->label_aptserver->setText("不存在"); } aptserver.close(); - ui->pushButton_5->hide(); } @@ -142,7 +141,7 @@ void Widget::on_webView_loadStarted() //判断,如果末尾是/就直接访问,如果是app.json就打开详情页 if(arg1.path().right(8)=="app.json"){ load.cancel();//打开并发加载线程前关闭正在执行的线程 - QPixmap pixmap_null;//一个空的图片指针,用来清空先有内容 + QPixmap pixmap_null;//一个空的图片,用来清空现有内容 ui->label_appicon->setPixmap(pixmap_null); ui->screen_1->setPixmap(pixmap_null); ui->screen_2->setPixmap(pixmap_null); @@ -174,10 +173,9 @@ void Widget::loadappinfo(QUrl arg1) ui->label_show->setText("正在加载,请稍候"); ui->label_show->show(); QProcess get_json; - QDir dir; - dir.cd("/tmp"); - dir.mkdir("deepin-community-store"); - QDir::setCurrent("/tmp/deepin-community-store"); + QDir dir("/tmp"); + dir.mkdir("spark-store"); + QDir::setCurrent("/tmp/spark-store"); get_json.start("wget -O app.json "+arg1.toString()); get_json.waitForFinished(); QFile app_json("app.json"); @@ -300,6 +298,7 @@ void Widget::chooseLeftMenu(int index) left_menu_bg[index]->setStyleSheet("background-color:#0081FF;border-radius:8"); if(index<=12){ ui->webView->setUrl(menuUrl[index]); + qDebug()<stackedWidget->setCurrentIndex(0); }else if (index==13) { ui->stackedWidget->setCurrentIndex(1); @@ -308,6 +307,8 @@ void Widget::chooseLeftMenu(int index) } } + + void Widget::on_pushButton_clicked() { on_menu_btn_download_clicked(); @@ -317,12 +318,13 @@ void Widget::on_pushButton_clicked() download_list[allDownload-1].pkgName=pkgName; if(fileName.isEmpty()) { - fileName = "index.html"; + system("notify-send 获取失败 --icon=spark-store"); + return; } - download_list[allDownload-1].setParent(ui->listWidget); QListWidgetItem *item=new QListWidgetItem(ui->listWidget); item->setSizeHint(download_list[allDownload-1].size()); + item->setFlags(item->flags() & ~Qt::ItemIsEnabled & ~Qt::ItemIsSelectable); ui->listWidget->setItemWidget(item,&download_list[allDownload-1]); urList.append(url); qDebug()<<"下载:"<tmp_size_ui->setText(tmp_size_str); } void Widget::on_pushButton_2_clicked() { @@ -494,38 +501,31 @@ void Widget::on_webView_loadFinished() ui->label_show->hide(); } } - - - - - void Widget::on_comboBox_server_currentIndexChanged(const QString &arg1) { if(configCanSeve){ ui->label_setting1->show(); - QSettings *setConfig=new QSettings(QDir::homePath()+"/.config/deepin-community-store/config.ini",QSettings::IniFormat); + QSettings *setConfig=new QSettings(QDir::homePath()+"/.config/spark-store/config.ini",QSettings::IniFormat); qDebug()<setValue("server/choose",arg1); } } - - void Widget::on_pushButton_3_clicked() { QtConcurrent::run([=](){ ui->pushButton_3->setEnabled(false); ui->comboBox_server->clear(); - system("rm "+QDir::homePath().toUtf8()+"/.config/deepin-community-store/server.list"); - system("wget -P "+QDir::homePath().toUtf8()+"/.config/deepin-community-store http://dcstore.shenmo.tech/store/server.list"); + QFile::remove(QDir::homePath().toUtf8()+"/.config/spark-store/server.list"); + system("wget -P "+QDir::homePath().toUtf8()+"/.config/spark-store http://dcstore.shenmo.tech/store/server.list"); std::fstream server; - server.open(QDir::homePath().toUtf8()+"/.config/deepin-community-store/server.list",std::ios::in); + server.open(QDir::homePath().toUtf8()+"/.config/spark-store/server.list",std::ios::in); std::string lineTmp; if(server){ while (getline(server,lineTmp)) { ui->comboBox_server->addItem(QString::fromStdString(lineTmp)); } }else { - ui->comboBox_server->addItem("http://dcstore.shenmo.tech/"); + ui->comboBox_server->addItem("http://store.jerrywang.top/"); } ui->pushButton_3->setEnabled(true); ui->comboBox_server->setCurrentIndex(0); @@ -538,20 +538,21 @@ void Widget::on_pushButton_4_clicked() ui->pushButton_4->setEnabled(false); ui->label_aptserver->setText("请稍等,正在更新"); std::fstream sourcesList; - system("mkdir /tmp/spark-store"); - sourcesList.open("/tmp/spark-store/sparkstore.list",std::ios::out); + QDir tmpdir("/tmp"); + tmpdir.mkpath("spark-store"); + sourcesList.open(QString::fromUtf8(TMP_PATH).toStdString()+"/sparkstore.list",std::ios::out); if(sourcesList){ sourcesList<<"deb [by-hash=force] "; sourcesList<comboBox_server->currentText().toUtf8()).toStdString(); sourcesList<<" /"; std::fstream update; - update.open("/tmp/spark-store/update.sh",std::ios::out); + update.open(QString::fromUtf8(TMP_PATH).toStdString()+"/update.sh",std::ios::out); update<<"#!/bin/sh\n"; - update<<"mv /tmp/spark-store/sparkstore.list /etc/apt/sources.list.d/sparkstore.list && apt update"; + update<<"mv "+QString::fromUtf8(TMP_PATH).toStdString()+"/sparkstore.list /etc/apt/sources.list.d/sparkstore.list && apt update"; update.close(); - system("chmod +x /tmp/spark-store/update.sh"); + system("chmod +x "+QString::fromUtf8(TMP_PATH).toUtf8()+"/update.sh"); QProcess runupdate; - runupdate.start("pkexec /tmp/spark-store/update.sh"); + runupdate.start("pkexec "+QString::fromUtf8(TMP_PATH)+"/update.sh"); runupdate.waitForFinished(); qDebug()<pushButton_6->setEnabled(false); + QDir tmpdir("/tmp/spark-store"); + tmpdir.setFilter(QDir::Files); + int quantity=int(tmpdir.count()); + for (int i=0;ipushButton_6->setEnabled(true); + on_menu_btn_settings_clicked(); + }); +} + +quint64 Widget::dirFileSize(const QString &path) +{ + QDir dir(path); + quint64 size = 0; + //dir.entryInfoList(QDir::Files)返回文件信息 + foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::Files)) + { + //计算文件大小 + size += fileInfo.size(); + } + //dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot)返回所有子目录,并进行过滤 + foreach(QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) + { + //若存在子目录,则递归调用dirFileSize()函数 + size += dirFileSize(path + QDir::separator() + subDir); + } + return size; +} diff --git a/widget.h b/widget.h index 0e06487..5982ed2 100644 --- a/widget.h +++ b/widget.h @@ -12,7 +12,10 @@ #include #include #include + #define LIST_MAX 99 +#define TMP_PATH "/tmp/spark-store" + namespace Ui { class Widget; } @@ -32,6 +35,7 @@ public: int isdownload=false; void loadappinfo(QUrl); void chooseLeftMenu(int index); + quint64 dirFileSize(const QString &path); QPixmap screen[5]; QFuture load; QTimer download_speed; @@ -67,8 +71,6 @@ private slots: void on_menu_btn_other_clicked(); - void on_listWidget_currentRowChanged(int currentRow); - void on_pushButton_clicked(); void on_pushButton_2_clicked(); @@ -89,6 +91,8 @@ private slots: void on_pushButton_5_clicked(); + void on_pushButton_6_clicked(); + public: QUrl url; bool isBusy=false; diff --git a/widget.ui b/widget.ui index 317af27..b0b4861 100644 --- a/widget.ui +++ b/widget.ui @@ -836,7 +836,7 @@ 0 - 3 + 2 @@ -934,8 +934,8 @@ 0 0 - 298 - 814 + 781 + 815 @@ -1172,8 +1172,8 @@ 0 0 - 351 - 38 + 747 + 325 @@ -1314,7 +1314,7 @@ 0 0 765 - 662 + 846 @@ -1457,6 +1457,87 @@ + + + + + + + + 18 + + + + 缓存目录 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 清空 + + + + + + + color:#808080 + + + 因为这个目录位于/tmp下,所以即使你不手动清空的话,其也将在系统重启时自动清空。 + + + + + + + + 80 + 16777215 + + + + 目录大小: + + + + + + + 0B + + + + + + + 目录位置:/tmp/spark-store + + + + + + + + +