mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-07-16 18:42:22 +08:00
优化了app.json解析
This commit is contained in:
parent
4a4c1ce5a6
commit
58304f2c19
@ -27,7 +27,7 @@ downloadlist::~downloadlist()
|
||||
void downloadlist::setValue(long long value)
|
||||
{
|
||||
ui->progressBar->setValue(value);
|
||||
ui->label_2->setText(QString::number((double)value/100)+"%");
|
||||
ui->label_2->setText(QString::number((double)value/100)+"% ("+speed+")");
|
||||
if(ui->label_2->text()=="100%"){
|
||||
ui->label_2->setText("已完成,等待安装");
|
||||
}
|
||||
@ -85,6 +85,11 @@ void downloadlist::closeDownload()
|
||||
on_pushButton_2_clicked();
|
||||
}
|
||||
|
||||
void downloadlist::setSpeed(QString s)
|
||||
{
|
||||
speed=s;
|
||||
}
|
||||
|
||||
void downloadlist::on_pushButton_clicked()
|
||||
{
|
||||
if(!isInstall){
|
||||
|
@ -23,6 +23,7 @@ public:
|
||||
void setFileName(QString);
|
||||
void seticon(const QPixmap);
|
||||
void closeDownload();
|
||||
void setSpeed(QString);
|
||||
int num;
|
||||
bool close=false;
|
||||
|
||||
@ -35,6 +36,7 @@ private slots:
|
||||
private:
|
||||
Ui::downloadlist *ui;
|
||||
static bool isInstall;
|
||||
QString speed;
|
||||
|
||||
};
|
||||
//bool downloadlist::isInstall=false;
|
||||
|
2
main.cpp
2
main.cpp
@ -11,7 +11,7 @@ int main(int argc, char *argv[])
|
||||
a.setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
a.loadTranslator();
|
||||
a.setOrganizationName("deepin");
|
||||
a.setApplicationVersion(DApplication::buildVersion("1.0"));
|
||||
a.setApplicationVersion(DApplication::buildVersion("1.0-beta"));
|
||||
a.setApplicationAcknowledgementPage("https://gitee.com/deepin-community-store/deepin-community-store");
|
||||
a.setProductIcon(QIcon::fromTheme("deepin-community-store")); //设置Logo
|
||||
a.setProductName("深度社区应用商店");
|
||||
|
@ -10,7 +10,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
w = new Widget;
|
||||
|
||||
resize(w->size()); //设置窗口大小
|
||||
setMinimumSize(900,750);
|
||||
setMinimumSize(900,700);
|
||||
setCentralWidget(w);
|
||||
}
|
||||
|
||||
@ -18,3 +18,4 @@ MainWindow::~MainWindow()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
@ -3,18 +3,20 @@
|
||||
|
||||
#include <DMainWindow>
|
||||
#include "widget.h"
|
||||
|
||||
#include <QThread>
|
||||
DWIDGET_USE_NAMESPACE
|
||||
|
||||
class MainWindow : public DMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
||||
public:
|
||||
MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
|
||||
private:
|
||||
|
||||
Widget *w;
|
||||
};
|
||||
|
||||
|
124
widget.cpp
124
widget.cpp
@ -47,11 +47,16 @@ 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("server.list",std::ios::in);
|
||||
server.open(QApplication::applicationDirPath().toUtf8()+"/server.list",std::ios::in);
|
||||
std::string lineTmp;
|
||||
while (getline(server,lineTmp)) {
|
||||
ui->comboBox_server->addItem(QString::fromStdString(lineTmp));
|
||||
if(server){
|
||||
while (getline(server,lineTmp)) {
|
||||
ui->comboBox_server->addItem(QString::fromStdString(lineTmp));
|
||||
}
|
||||
}else {
|
||||
ui->comboBox_server->addItem("http://dcstore.shenmo.tech/");
|
||||
}
|
||||
|
||||
QSettings readConfig(QDir::homePath()+"/.config/deepin-community-store/config.ini",QSettings::IniFormat);
|
||||
if(readConfig.value("server/choose").toString()!=""){
|
||||
ui->comboBox_server->setCurrentText(readConfig.value("server/choose").toString());
|
||||
@ -87,58 +92,50 @@ Widget::Widget(QWidget *parent) :
|
||||
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;
|
||||
QString theSpeed;
|
||||
double bspeed;
|
||||
bspeed=size1-size2;
|
||||
qDebug()<<"run to hear"<<bspeed;
|
||||
if(bspeed<1024){
|
||||
theSpeed=QString::number(bspeed)+"B";
|
||||
}else if (bspeed<(1024*1024)) {
|
||||
theSpeed=QString::number(0.01*int(100*(bspeed/1024)))+"KB";
|
||||
}else if (bspeed<(1024*1024*1024)) {
|
||||
theSpeed=QString::number(0.01*int(100*(bspeed/(1024*1024))))+"MB";
|
||||
}else {
|
||||
theSpeed=QString::number(0.01*int(100*(bspeed/(1024*1024*1024))))+"GB";
|
||||
}
|
||||
download_list[nowDownload-1].setSpeed(theSpeed);
|
||||
size2=download_size;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Widget::~Widget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void Widget::on_webView_linkClicked(const QUrl &arg1)
|
||||
{
|
||||
//这里通过获取url的方式和现有web不符,
|
||||
// qDebug()<<arg1;
|
||||
// //判断,如果末尾是/就直接访问,如果是app.json就打开详情页
|
||||
// if(arg1.path().right(1)=="/"){
|
||||
// ui->webView->setUrl(arg1);
|
||||
// }else if(arg1.path().right(8)=="app.json"){
|
||||
// load.cancel();//打开并发加载线程前关闭正在执行的线程
|
||||
//// load.waitForFinished();
|
||||
// QPixmap pixmap_null;//一个空的图片指针,用来清空先有内容
|
||||
// ui->label_appicon->setPixmap(pixmap_null);
|
||||
// ui->screen_1->setPixmap(pixmap_null);
|
||||
// ui->screen_2->setPixmap(pixmap_null);
|
||||
// ui->screen_3->setPixmap(pixmap_null);
|
||||
// ui->screen_4->setPixmap(pixmap_null);
|
||||
// ui->screen_5->setPixmap(pixmap_null);
|
||||
// //先隐藏详情页负责显示截图的label
|
||||
// ui->screen_1->hide();
|
||||
// ui->screen_2->hide();
|
||||
// ui->screen_3->hide();
|
||||
// ui->screen_4->hide();
|
||||
// ui->screen_5->hide();
|
||||
// ui->label_more->setText("");//清空详情介绍
|
||||
// ui->label_info->setText("");
|
||||
// ui->label_appname->setText("");
|
||||
// ui->pushButton->setEnabled(false);
|
||||
// ui->stackedWidget->setCurrentIndex(2);
|
||||
// load.cancel();//打开并发加载线程前关闭正在执行的线程
|
||||
// load = QtConcurrent::run([=](){
|
||||
// loadappinfo(arg1);
|
||||
// });
|
||||
// }
|
||||
}
|
||||
void Widget::on_webView_loadStarted()
|
||||
{
|
||||
|
||||
ui->label_show->setText("正在加载,请稍候");
|
||||
ui->label_show->show();
|
||||
|
||||
QUrl arg1=ui->webView->page()->mainFrame()->requestedUrl().toString();
|
||||
qDebug()<<arg1;
|
||||
//判断,如果末尾是/就直接访问,如果是app.json就打开详情页
|
||||
if(arg1.path().right(8)=="app.json"){
|
||||
load.cancel();//打开并发加载线程前关闭正在执行的线程
|
||||
load.waitForFinished();
|
||||
// load.waitForFinished();
|
||||
// system("rm -r /tmp/deepin-community-store/icon.png");
|
||||
// system("rm -r /tmp/deepin-community-store/screen_1.png");
|
||||
// system("rm -r /tmp/deepin-community-store/screen_2.png");
|
||||
// system("rm -r /tmp/deepin-community-store/screen_3.png");
|
||||
// system("rm -r /tmp/deepin-community-store/screen_4.png");
|
||||
// system("rm -r /tmp/deepin-community-store/screen_5.png");
|
||||
QPixmap pixmap_null;//一个空的图片指针,用来清空先有内容
|
||||
ui->label_appicon->setPixmap(pixmap_null);
|
||||
ui->screen_1->setPixmap(pixmap_null);
|
||||
@ -167,8 +164,7 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
{
|
||||
|
||||
ui->label_show->setText("正在加载,请稍候");
|
||||
|
||||
|
||||
ui->label_show->show();
|
||||
QProcess get_json;
|
||||
QDir dir;
|
||||
dir.cd("/tmp");
|
||||
@ -179,8 +175,16 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
QFile app_json("app.json");
|
||||
if(app_json.open(QIODevice::ReadOnly)){
|
||||
// //成功得到json文件
|
||||
//将路径转化为相应源的下载路径
|
||||
QByteArray json_array=app_json.readAll();
|
||||
urladdress=arg1.toString().left(arg1.toString().length()-8);
|
||||
QStringList downloadurl=urladdress.split("/");
|
||||
urladdress=ui->comboBox_server->currentText();
|
||||
for (int i=3;i<downloadurl.size();i++) {
|
||||
urladdress+="/"+downloadurl[i];
|
||||
}
|
||||
qDebug()<<urladdress;
|
||||
//路径转化完成
|
||||
QJsonObject json= QJsonDocument::fromJson(json_array).object();
|
||||
appName = json["Name"].toString();
|
||||
url=urladdress + json["Filename"].toString();
|
||||
@ -189,18 +193,18 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
ui->label_show->show();
|
||||
//软件信息加载
|
||||
QString info;
|
||||
info="包名:"+json["Pkgname"].toString()+"\n";
|
||||
info+="版本号:"+json["Version"].toString()+"\n";
|
||||
info="包名: "+json["Pkgname"].toString()+"\n";
|
||||
info+="版本号: "+json["Version"].toString()+"\n";
|
||||
if(json["Author"].toString()!="" && json["Author"].toString()!=" "){
|
||||
info+="作者:"+json["Author"].toString()+"\n";
|
||||
info+="作者: "+json["Author"].toString()+"\n";
|
||||
}
|
||||
|
||||
if(json["Website"].toString()!="" && json["Website"].toString()!=" "){
|
||||
info+="官网:"+json["Website"].toString()+"\n";
|
||||
info+="官网: "+json["Website"].toString()+"\n";
|
||||
}
|
||||
info+="投稿者:"+json["Contributor"].toString()+"\n";
|
||||
info+="更新时间:"+json["Update"].toString()+"\n";
|
||||
info+="大小:"+json["Size"].toString()+"\n";
|
||||
info+="投稿者: "+json["Contributor"].toString()+"\n";
|
||||
info+="更新时间: "+json["Update"].toString()+"\n";
|
||||
info+="大小: "+json["Size"].toString()+"\n";
|
||||
ui->label_info->setText(info);
|
||||
ui->label_more->setText(json["More"].toString());
|
||||
QProcess isInstall;
|
||||
@ -226,6 +230,11 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
ui->screen_1->show();
|
||||
ui->screen_1->setPixmap(screen[0]);
|
||||
ui->screen_1->setScaledContents(true);
|
||||
ui->screen_2->hide();
|
||||
ui->screen_3->hide();
|
||||
ui->screen_4->hide();
|
||||
ui->screen_5->hide();
|
||||
|
||||
}
|
||||
get_json.start("wget "+urladdress+"screen_2.png");
|
||||
get_json.waitForFinished();
|
||||
@ -233,6 +242,9 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
ui->screen_2->show();
|
||||
ui->screen_2->setPixmap(screen[1]);
|
||||
ui->screen_2->setScaledContents(true);
|
||||
ui->screen_3->hide();
|
||||
ui->screen_4->hide();
|
||||
ui->screen_5->hide();
|
||||
}
|
||||
get_json.start("wget "+urladdress+"screen_3.png");
|
||||
get_json.waitForFinished();
|
||||
@ -240,6 +252,8 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
ui->screen_3->show();
|
||||
ui->screen_3->setPixmap(screen[2]);
|
||||
ui->screen_3->setScaledContents(true);
|
||||
ui->screen_4->hide();
|
||||
ui->screen_5->hide();
|
||||
}
|
||||
get_json.start("wget "+urladdress+"screen_4.png");
|
||||
get_json.waitForFinished();
|
||||
@ -247,6 +261,7 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
ui->screen_4->show();
|
||||
ui->screen_4->setPixmap(screen[3]);
|
||||
ui->screen_4->setScaledContents(true);
|
||||
ui->screen_5->hide();
|
||||
}
|
||||
get_json.start("wget "+urladdress+"screen_5.png");
|
||||
get_json.waitForFinished();
|
||||
@ -264,11 +279,12 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
|
||||
void Widget::chooseLeftMenu(int index)
|
||||
{
|
||||
|
||||
nowMenu=index;
|
||||
for (int i=0;i<15;i++) {
|
||||
load.cancel();//打开并发加载线程前关闭正在执行的线程
|
||||
left_list[i]->setStyleSheet("");
|
||||
left_menu_bg[i]->setStyleSheet("");
|
||||
left_list[i]->setStyleSheet("color:#414D68");
|
||||
left_menu_bg[i]->setStyleSheet("border-radius:8");
|
||||
}
|
||||
left_list[index]->setStyleSheet("color:#FFFFFF");
|
||||
left_menu_bg[index]->setStyleSheet("background-color:#0081FF;border-radius:8");
|
||||
@ -343,6 +359,7 @@ void Widget::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes)
|
||||
{
|
||||
download_list[nowDownload-1].setMax(10000); //最大值
|
||||
download_list[nowDownload-1].setValue((bytesRead*10000)/totalBytes); //当前值
|
||||
download_size=bytesRead;
|
||||
if(download_list[nowDownload-1].close){
|
||||
download_list[nowDownload-1].closeDownload();
|
||||
httpFinished();
|
||||
@ -462,7 +479,7 @@ void Widget::on_pushButton_2_clicked()
|
||||
void Widget::on_webView_loadFinished()
|
||||
{
|
||||
if(ui->webView->page()->mainFrame()->requestedUrl().toString().right(5)!=".json"){
|
||||
ui->label_show->setText("");
|
||||
ui->label_show->setText("正在加载,请稍候");
|
||||
ui->label_show->hide();
|
||||
}
|
||||
}
|
||||
@ -480,3 +497,4 @@ void Widget::on_comboBox_server_currentIndexChanged(const QString &arg1)
|
||||
setConfig->setValue("server/choose",arg1);
|
||||
}
|
||||
}
|
||||
|
||||
|
14
widget.h
14
widget.h
@ -11,15 +11,18 @@
|
||||
#include <QProcess>
|
||||
#include <QFuture>
|
||||
#include <QToolButton>
|
||||
#include <QTimer>
|
||||
#define LIST_MAX 99
|
||||
namespace Ui {
|
||||
class Widget;
|
||||
}
|
||||
|
||||
|
||||
|
||||
class Widget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Widget(QWidget *parent = 0);
|
||||
~Widget();
|
||||
@ -31,11 +34,10 @@ public:
|
||||
void chooseLeftMenu(int index);
|
||||
QPixmap screen[5];
|
||||
QFuture<void> load;
|
||||
|
||||
QTimer download_speed;
|
||||
|
||||
private slots:
|
||||
|
||||
void on_webView_linkClicked(const QUrl &arg1);
|
||||
void httpFinished();
|
||||
void httpReadyRead();
|
||||
void updateDataReadProgress(qint64,qint64);
|
||||
@ -81,7 +83,7 @@ private slots:
|
||||
|
||||
void on_comboBox_server_currentIndexChanged(const QString &arg1);
|
||||
|
||||
private:
|
||||
public:
|
||||
QUrl url;
|
||||
bool isBusy=false;
|
||||
downloadlist download_list[LIST_MAX];
|
||||
@ -97,6 +99,10 @@ private:
|
||||
QUrl menuUrl[13];
|
||||
bool configCanSeve=false;
|
||||
int nowMenu=0;
|
||||
long download_size=0;
|
||||
long size1=0;
|
||||
long size2=0;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
30
widget.ui
30
widget.ui
@ -38,7 +38,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="page">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
@ -135,7 +135,7 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<y>-177</y>
|
||||
<width>781</width>
|
||||
<height>815</height>
|
||||
</rect>
|
||||
@ -613,16 +613,6 @@
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="label_show">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="2">
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="minimumSize">
|
||||
@ -1405,6 +1395,22 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLabel" name="label_show">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
|
Loading…
x
Reference in New Issue
Block a user