mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-18 18:11:37 +08:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a3ca04ddc5 | |||
| 147258a7ac | |||
| 68269577c0 | |||
| 58304f2c19 |
12
README.md
12
README.md
@@ -1,23 +1,17 @@
|
|||||||
# 深度社区应用商店
|
# 星火商店
|
||||||
|
|
||||||
#### 介绍
|
#### 介绍
|
||||||
deepin社区商店,由社区维护
|
星火商店商店,由深度社区爱好者维护
|
||||||
web页面部分正在开发当中,详情请见[web仓库](https://gitee.com/deepin-community-store/DCSAPP_WEB)
|
web页面部分正在开发当中,详情请见[web仓库](https://gitee.com/deepin-community-store/DCSAPP_WEB)
|
||||||
#### 编译指导
|
|
||||||
依赖:dtk2版(适用于ubuntu/15.11):qt5-default g++ libdtkcore2-dev libdtkwidget2-dev libqt5webkit5-dev libdtkgui2-dev
|
|
||||||
dtk5版(适用于20beta):qt5-default g++ libdtkwidget5-dev libdtkcore5-dev libdtkgui5-dev libqt5webkit5-dev
|
|
||||||
|
|
||||||
#### 说明
|
#### 说明
|
||||||
|
|
||||||
需要在运行目录下放置服务器线路列表`server.list`,每行一个,在末尾需要添加“/”
|
|
||||||
|
|
||||||
当前服务器线路列表(项目中包含):
|
当前服务器线路列表(项目中包含):
|
||||||
|
|
||||||
```
|
```
|
||||||
http://dcstore.shenmo.tech/
|
http://dcstore.shenmo.tech/
|
||||||
http://store.shenmo.tech/
|
http://store.shenmo.tech/
|
||||||
http://store2.shenmo.tech/
|
http://store2.shenmo.tech/
|
||||||
http://store.moshengren.xyz/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 目录结构
|
#### 目录结构
|
||||||
@@ -26,7 +20,7 @@ http://store.moshengren.xyz/
|
|||||||
|
|
||||||
配置文件被储存到`~/.config/deepin-community-store/`中。
|
配置文件被储存到`~/.config/deepin-community-store/`中。
|
||||||
|
|
||||||
线路文件:当前运行目录下的`./server.list`
|
线路文件:新版的线路文件被放置于源服务器中,可随时刷新更新源列表
|
||||||
|
|
||||||
#### 参与贡献
|
#### 参与贡献
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ downloadlist::downloadlist(QWidget *parent) :
|
|||||||
ui->progressBar->setValue(0);
|
ui->progressBar->setValue(0);
|
||||||
ui->label_filename->hide();
|
ui->label_filename->hide();
|
||||||
ui->pushButton->hide();
|
ui->pushButton->hide();
|
||||||
|
ui->pushButton_3->hide();
|
||||||
ui->label->setStyleSheet("color:#000000");
|
ui->label->setStyleSheet("color:#000000");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,7 +28,7 @@ downloadlist::~downloadlist()
|
|||||||
void downloadlist::setValue(long long value)
|
void downloadlist::setValue(long long value)
|
||||||
{
|
{
|
||||||
ui->progressBar->setValue(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%"){
|
if(ui->label_2->text()=="100%"){
|
||||||
ui->label_2->setText("已完成,等待安装");
|
ui->label_2->setText("已完成,等待安装");
|
||||||
}
|
}
|
||||||
@@ -85,6 +86,11 @@ void downloadlist::closeDownload()
|
|||||||
on_pushButton_2_clicked();
|
on_pushButton_2_clicked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void downloadlist::setSpeed(QString s)
|
||||||
|
{
|
||||||
|
speed=s;
|
||||||
|
}
|
||||||
|
|
||||||
void downloadlist::on_pushButton_clicked()
|
void downloadlist::on_pushButton_clicked()
|
||||||
{
|
{
|
||||||
if(!isInstall){
|
if(!isInstall){
|
||||||
@@ -93,9 +99,15 @@ void downloadlist::on_pushButton_clicked()
|
|||||||
ui->label_2->setText("正在安装,请稍候");
|
ui->label_2->setText("正在安装,请稍候");
|
||||||
QtConcurrent::run([=](){
|
QtConcurrent::run([=](){
|
||||||
QProcess installer;
|
QProcess installer;
|
||||||
|
if(reinstall){
|
||||||
|
installer.start("pkexec apt reinstall -y /tmp/deepin-community-store/"+ui->label_filename->text().toUtf8());
|
||||||
|
}else {
|
||||||
installer.start("pkexec apt install -y /tmp/deepin-community-store/"+ui->label_filename->text().toUtf8());
|
installer.start("pkexec apt install -y /tmp/deepin-community-store/"+ui->label_filename->text().toUtf8());
|
||||||
|
}
|
||||||
|
|
||||||
installer.waitForFinished();
|
installer.waitForFinished();
|
||||||
QString error=QString::fromStdString(installer.readAllStandardError().toStdString());
|
QString error=QString::fromStdString(installer.readAllStandardError().toStdString());
|
||||||
|
out=installer.readAllStandardOutput();
|
||||||
QStringList everyError=error.split("\n");
|
QStringList everyError=error.split("\n");
|
||||||
bool haveError=false;
|
bool haveError=false;
|
||||||
bool notRoot=false;
|
bool notRoot=false;
|
||||||
@@ -111,15 +123,18 @@ void downloadlist::on_pushButton_clicked()
|
|||||||
if(!haveError && !notRoot){
|
if(!haveError && !notRoot){
|
||||||
ui->pushButton->hide();
|
ui->pushButton->hide();
|
||||||
ui->label_2->setText("安装完成");
|
ui->label_2->setText("安装完成");
|
||||||
|
ui->pushButton_3->show();
|
||||||
}else if(haveError){
|
}else if(haveError){
|
||||||
ui->pushButton->hide();
|
ui->pushButton->hide();
|
||||||
ui->label_2->setText("安装出现错误");
|
ui->label_2->setText("安装出现错误");
|
||||||
|
ui->pushButton_3->show();
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
ui->label_2->setText("安装被终止");
|
ui->label_2->setText("安装被终止");
|
||||||
|
ui->pushButton->setEnabled(true);
|
||||||
}
|
}
|
||||||
isInstall=false;
|
isInstall=false;
|
||||||
});
|
});
|
||||||
// system("x-terminal-emulator -e sudo apt install -y ./"+ui->label_filename->text().toUtf8());
|
|
||||||
qDebug()<<ui->label_filename->text().toUtf8();
|
qDebug()<<ui->label_filename->text().toUtf8();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,3 +147,9 @@ void downloadlist::on_pushButton_2_clicked()
|
|||||||
ui->progressBar->hide();
|
ui->progressBar->hide();
|
||||||
close=true;
|
close=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void downloadlist::on_pushButton_3_clicked()
|
||||||
|
{
|
||||||
|
output_w.setoutput(out);
|
||||||
|
output_w.show();
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define DOWNLOADLIST_H
|
#define DOWNLOADLIST_H
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <outputwindow.h>
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class downloadlist;
|
class downloadlist;
|
||||||
}
|
}
|
||||||
@@ -23,18 +24,25 @@ public:
|
|||||||
void setFileName(QString);
|
void setFileName(QString);
|
||||||
void seticon(const QPixmap);
|
void seticon(const QPixmap);
|
||||||
void closeDownload();
|
void closeDownload();
|
||||||
|
void setSpeed(QString);
|
||||||
int num;
|
int num;
|
||||||
bool close=false;
|
bool close=false;
|
||||||
|
QString out;
|
||||||
|
outputwindow output_w;
|
||||||
|
bool reinstall=false;
|
||||||
private slots:
|
private slots:
|
||||||
void on_pushButton_clicked();
|
void on_pushButton_clicked();
|
||||||
|
|
||||||
void on_pushButton_2_clicked();
|
void on_pushButton_2_clicked();
|
||||||
|
|
||||||
|
|
||||||
|
void on_pushButton_3_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::downloadlist *ui;
|
Ui::downloadlist *ui;
|
||||||
static bool isInstall;
|
static bool isInstall;
|
||||||
|
QString speed;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
//bool downloadlist::isInstall=false;
|
//bool downloadlist::isInstall=false;
|
||||||
|
|||||||
151
downloadlist.ui
151
downloadlist.ui
@@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>744</width>
|
<width>786</width>
|
||||||
<height>54</height>
|
<height>54</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -16,15 +16,77 @@
|
|||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item row="0" column="1">
|
<item>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>icon</string>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
<widget class="QLabel" name="label_filename">
|
<widget class="QLabel" name="label_filename">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>TextLabel</string>
|
<string>TextLabel</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="4">
|
<item>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>150</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>13</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>名称</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Expanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
<widget class="QWidget" name="widget" native="true">
|
<widget class="QWidget" name="widget" native="true">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -97,7 +159,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="6">
|
<item>
|
||||||
<spacer name="horizontalSpacer_2">
|
<spacer name="horizontalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
@@ -113,23 +175,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="3">
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeType">
|
|
||||||
<enum>QSizePolicy::Expanding</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="7">
|
|
||||||
<widget class="QPushButton" name="pushButton">
|
<widget class="QPushButton" name="pushButton">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -148,47 +194,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>150</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>16777215</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>13</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>名称</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>icon</string>
|
|
||||||
</property>
|
|
||||||
<property name="scaledContents">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="8">
|
|
||||||
<widget class="QPushButton" name="pushButton_2">
|
<widget class="QPushButton" name="pushButton_2">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -207,6 +213,25 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_3">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>60</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>60</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>详情</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
11
main.cpp
11
main.cpp
@@ -7,15 +7,14 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
DApplication::loadDXcbPlugin(); //让bar处在标题栏中
|
DApplication::loadDXcbPlugin(); //让bar处在标题栏中
|
||||||
DApplication a(argc, argv);
|
DApplication a(argc, argv);
|
||||||
|
|
||||||
a.setAttribute(Qt::AA_UseHighDpiPixmaps);
|
a.setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||||
a.loadTranslator();
|
a.loadTranslator();
|
||||||
a.setOrganizationName("deepin");
|
a.setOrganizationName("community");
|
||||||
a.setApplicationVersion(DApplication::buildVersion("1.0"));
|
a.setApplicationVersion(DApplication::buildVersion("1.0-beta3.2"));
|
||||||
a.setApplicationAcknowledgementPage("https://gitee.com/deepin-community-store/deepin-community-store");
|
a.setApplicationAcknowledgementPage("https://gitee.com/deepin-community-store/deepin-community-store");
|
||||||
a.setProductIcon(QIcon::fromTheme("deepin-community-store")); //设置Logo
|
a.setProductIcon(QIcon::fromTheme("spark-store")); //设置Logo
|
||||||
a.setProductName("深度社区应用商店");
|
a.setProductName("星火应用商店");
|
||||||
a.setApplicationName("社区应用商店"); //只有在这儿修改窗口标题才有效
|
a.setApplicationName("星火应用商店"); //只有在这儿修改窗口标题才有效
|
||||||
|
|
||||||
MainWindow w;
|
MainWindow w;
|
||||||
w.show();
|
w.show();
|
||||||
|
|||||||
@@ -10,11 +10,15 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
w = new Widget;
|
w = new Widget;
|
||||||
|
|
||||||
resize(w->size()); //设置窗口大小
|
resize(w->size()); //设置窗口大小
|
||||||
setMinimumSize(900,750);
|
setMinimumSize(950,700);
|
||||||
setCentralWidget(w);
|
setCentralWidget(w);
|
||||||
|
// searchEdit->setParent(this);
|
||||||
|
// searchEdit->move(1,1);
|
||||||
|
// searchEdit->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
11
mainwindow.h
11
mainwindow.h
@@ -3,18 +3,21 @@
|
|||||||
|
|
||||||
#include <DMainWindow>
|
#include <DMainWindow>
|
||||||
#include "widget.h"
|
#include "widget.h"
|
||||||
|
#include <QThread>
|
||||||
|
#include <DSearchEdit>
|
||||||
DWIDGET_USE_NAMESPACE
|
DWIDGET_USE_NAMESPACE
|
||||||
|
|
||||||
class MainWindow : public DMainWindow
|
class MainWindow : public DMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
|
||||||
MainWindow(QWidget *parent = 0);
|
|
||||||
~MainWindow();
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
MainWindow(QWidget *parent = nullptr);
|
||||||
|
~MainWindow();
|
||||||
|
// DSearchEdit *searchEdit=new DSearchEdit;
|
||||||
private:
|
private:
|
||||||
|
|
||||||
Widget *w;
|
Widget *w;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
24
outputwindow.cpp
Normal file
24
outputwindow.cpp
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#include "outputwindow.h"
|
||||||
|
#include "ui_outputwindow.h"
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QDesktopWidget>
|
||||||
|
outputwindow::outputwindow(QWidget *parent) :
|
||||||
|
QWidget(parent),
|
||||||
|
ui(new Ui::outputwindow)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
setWindowTitle("安装详情");
|
||||||
|
QDesktopWidget *desktop = QApplication::desktop();
|
||||||
|
move((desktop->width() - width())/ 2, (desktop->height() - height()) /2);
|
||||||
|
}
|
||||||
|
|
||||||
|
outputwindow::~outputwindow()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void outputwindow::setoutput(QString output)
|
||||||
|
{
|
||||||
|
qDebug()<<output;
|
||||||
|
ui->textBrowser->setText(output);
|
||||||
|
}
|
||||||
22
outputwindow.h
Normal file
22
outputwindow.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#ifndef OUTPUTWINDOW_H
|
||||||
|
#define OUTPUTWINDOW_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class outputwindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
class outputwindow : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit outputwindow(QWidget *parent = nullptr);
|
||||||
|
~outputwindow();
|
||||||
|
void setoutput(QString);
|
||||||
|
private:
|
||||||
|
Ui::outputwindow *ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // OUTPUTWINDOW_H
|
||||||
24
outputwindow.ui
Normal file
24
outputwindow.ui
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>outputwindow</class>
|
||||||
|
<widget class="QWidget" name="outputwindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>391</width>
|
||||||
|
<height>372</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QTextBrowser" name="textBrowser"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
@@ -8,7 +8,7 @@ QT += core gui webkitwidgets network concurrent
|
|||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
TARGET = deepin-community-store
|
TARGET = spark-store
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
|
|
||||||
# The following define makes your compiler emit warnings if you use
|
# The following define makes your compiler emit warnings if you use
|
||||||
@@ -26,11 +26,13 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||||||
SOURCES += main.cpp\
|
SOURCES += main.cpp\
|
||||||
mainwindow.cpp \
|
mainwindow.cpp \
|
||||||
widget.cpp \
|
widget.cpp \
|
||||||
downloadlist.cpp
|
downloadlist.cpp \
|
||||||
|
outputwindow.cpp
|
||||||
|
|
||||||
HEADERS += mainwindow.h \
|
HEADERS += mainwindow.h \
|
||||||
widget.h \
|
widget.h \
|
||||||
downloadlist.h
|
downloadlist.h \
|
||||||
|
outputwindow.h
|
||||||
|
|
||||||
CONFIG += link_pkgconfig
|
CONFIG += link_pkgconfig
|
||||||
PKGCONFIG += dtkwidget
|
PKGCONFIG += dtkwidget
|
||||||
@@ -39,4 +41,5 @@ CONFIG += c++11
|
|||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
widget.ui \
|
widget.ui \
|
||||||
downloadlist.ui
|
downloadlist.ui \
|
||||||
|
outputwindow.ui
|
||||||
226
widget.cpp
226
widget.cpp
@@ -47,11 +47,19 @@ Widget::Widget(QWidget *parent) :
|
|||||||
left_list[12]=ui->menu_btn_theme;left_menu_bg[12]=ui->menu_bg_theme;
|
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[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;
|
left_list[14]=ui->menu_btn_settings;left_menu_bg[14]=ui->menu_bg_settings;
|
||||||
server.open("server.list",std::ios::in);
|
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;
|
std::string lineTmp;
|
||||||
|
|
||||||
|
if(server){
|
||||||
while (getline(server,lineTmp)) {
|
while (getline(server,lineTmp)) {
|
||||||
ui->comboBox_server->addItem(QString::fromStdString(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);
|
QSettings readConfig(QDir::homePath()+"/.config/deepin-community-store/config.ini",QSettings::IniFormat);
|
||||||
if(readConfig.value("server/choose").toString()!=""){
|
if(readConfig.value("server/choose").toString()!=""){
|
||||||
ui->comboBox_server->setCurrentText(readConfig.value("server/choose").toString());
|
ui->comboBox_server->setCurrentText(readConfig.value("server/choose").toString());
|
||||||
@@ -62,6 +70,7 @@ Widget::Widget(QWidget *parent) :
|
|||||||
configCanSeve=true;
|
configCanSeve=true;
|
||||||
qDebug()<<serverUrl;
|
qDebug()<<serverUrl;
|
||||||
menuUrl[0]=serverUrl + "store/#/";
|
menuUrl[0]=serverUrl + "store/#/";
|
||||||
|
// menuUrl[0]="http://127.0.0.1:8000/#/relations";
|
||||||
menuUrl[1]=serverUrl + "store/#/network/";
|
menuUrl[1]=serverUrl + "store/#/network/";
|
||||||
menuUrl[2]=serverUrl + "store/#/relations";
|
menuUrl[2]=serverUrl + "store/#/relations";
|
||||||
menuUrl[3]=serverUrl + "store/#/musicandsound";
|
menuUrl[3]=serverUrl + "store/#/musicandsound";
|
||||||
@@ -87,58 +96,51 @@ Widget::Widget(QWidget *parent) :
|
|||||||
ui->line1_widget->setGraphicsEffect(opacityEffect_1);
|
ui->line1_widget->setGraphicsEffect(opacityEffect_1);
|
||||||
ui->line2_widget->setGraphicsEffect(opacityEffect_2);
|
ui->line2_widget->setGraphicsEffect(opacityEffect_2);
|
||||||
connect(ui->webView->page(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT([=](){qDebug()<<" ";}));
|
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;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
chooseLeftMenu(0);
|
||||||
|
QFile aptserver("/etc/apt/sources.list.d/sparkstore.list");
|
||||||
|
aptserver.open(QIODevice::ReadOnly);
|
||||||
|
if(aptserver.isOpen()){
|
||||||
|
ui->label_aptserver->setText(aptserver.readAll());
|
||||||
|
}else {
|
||||||
|
ui->label_aptserver->setText("不存在");
|
||||||
|
}
|
||||||
|
aptserver.close();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget::~Widget()
|
Widget::~Widget()
|
||||||
{
|
{
|
||||||
delete ui;
|
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()
|
void Widget::on_webView_loadStarted()
|
||||||
{
|
{
|
||||||
|
|
||||||
ui->label_show->setText("正在加载,请稍候");
|
|
||||||
ui->label_show->show();
|
|
||||||
QUrl arg1=ui->webView->page()->mainFrame()->requestedUrl().toString();
|
QUrl arg1=ui->webView->page()->mainFrame()->requestedUrl().toString();
|
||||||
qDebug()<<arg1;
|
|
||||||
//判断,如果末尾是/就直接访问,如果是app.json就打开详情页
|
//判断,如果末尾是/就直接访问,如果是app.json就打开详情页
|
||||||
if(arg1.path().right(8)=="app.json"){
|
if(arg1.path().right(8)=="app.json"){
|
||||||
load.cancel();//打开并发加载线程前关闭正在执行的线程
|
load.cancel();//打开并发加载线程前关闭正在执行的线程
|
||||||
load.waitForFinished();
|
|
||||||
QPixmap pixmap_null;//一个空的图片指针,用来清空先有内容
|
QPixmap pixmap_null;//一个空的图片指针,用来清空先有内容
|
||||||
ui->label_appicon->setPixmap(pixmap_null);
|
ui->label_appicon->setPixmap(pixmap_null);
|
||||||
ui->screen_1->setPixmap(pixmap_null);
|
ui->screen_1->setPixmap(pixmap_null);
|
||||||
@@ -167,8 +169,7 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
{
|
{
|
||||||
|
|
||||||
ui->label_show->setText("正在加载,请稍候");
|
ui->label_show->setText("正在加载,请稍候");
|
||||||
|
ui->label_show->show();
|
||||||
|
|
||||||
QProcess get_json;
|
QProcess get_json;
|
||||||
QDir dir;
|
QDir dir;
|
||||||
dir.cd("/tmp");
|
dir.cd("/tmp");
|
||||||
@@ -178,9 +179,16 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
get_json.waitForFinished();
|
get_json.waitForFinished();
|
||||||
QFile app_json("app.json");
|
QFile app_json("app.json");
|
||||||
if(app_json.open(QIODevice::ReadOnly)){
|
if(app_json.open(QIODevice::ReadOnly)){
|
||||||
// //成功得到json文件
|
// //成功得到json文件
|
||||||
QByteArray json_array=app_json.readAll();
|
QByteArray json_array=app_json.readAll();
|
||||||
|
//将路径转化为相应源的下载路径
|
||||||
urladdress=arg1.toString().left(arg1.toString().length()-8);
|
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];
|
||||||
|
}
|
||||||
|
//路径转化完成
|
||||||
QJsonObject json= QJsonDocument::fromJson(json_array).object();
|
QJsonObject json= QJsonDocument::fromJson(json_array).object();
|
||||||
appName = json["Name"].toString();
|
appName = json["Name"].toString();
|
||||||
url=urladdress + json["Filename"].toString();
|
url=urladdress + json["Filename"].toString();
|
||||||
@@ -189,18 +197,18 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
ui->label_show->show();
|
ui->label_show->show();
|
||||||
//软件信息加载
|
//软件信息加载
|
||||||
QString info;
|
QString info;
|
||||||
info="包名:"+json["Pkgname"].toString()+"\n";
|
info="包名: "+json["Pkgname"].toString()+"\n";
|
||||||
info+="版本号:"+json["Version"].toString()+"\n";
|
info+="版本号: "+json["Version"].toString()+"\n";
|
||||||
if(json["Author"].toString()!="" && json["Author"].toString()!=" "){
|
if(json["Author"].toString()!="" && json["Author"].toString()!=" "){
|
||||||
info+="作者:"+json["Author"].toString()+"\n";
|
info+="作者: "+json["Author"].toString()+"\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(json["Website"].toString()!="" && json["Website"].toString()!=" "){
|
if(json["Website"].toString()!="" && json["Website"].toString()!=" "){
|
||||||
info+="官网:"+json["Website"].toString()+"\n";
|
info+="官网: "+json["Website"].toString()+"\n";
|
||||||
}
|
}
|
||||||
info+="投稿者:"+json["Contributor"].toString()+"\n";
|
info+="投稿者: "+json["Contributor"].toString()+"\n";
|
||||||
info+="更新时间:"+json["Update"].toString()+"\n";
|
info+="更新时间: "+json["Update"].toString()+"\n";
|
||||||
info+="大小:"+json["Size"].toString()+"\n";
|
info+="大小: "+json["Size"].toString()+"\n";
|
||||||
ui->label_info->setText(info);
|
ui->label_info->setText(info);
|
||||||
ui->label_more->setText(json["More"].toString());
|
ui->label_more->setText(json["More"].toString());
|
||||||
QProcess isInstall;
|
QProcess isInstall;
|
||||||
@@ -209,6 +217,7 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
int error=QString::fromStdString(isInstall.readAllStandardError().toStdString()).length();
|
int error=QString::fromStdString(isInstall.readAllStandardError().toStdString()).length();
|
||||||
if(error==0){
|
if(error==0){
|
||||||
ui->pushButton->setText("重新安装");
|
ui->pushButton->setText("重新安装");
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
ui->pushButton->setText("安装");
|
ui->pushButton->setText("安装");
|
||||||
}
|
}
|
||||||
@@ -226,6 +235,11 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
ui->screen_1->show();
|
ui->screen_1->show();
|
||||||
ui->screen_1->setPixmap(screen[0]);
|
ui->screen_1->setPixmap(screen[0]);
|
||||||
ui->screen_1->setScaledContents(true);
|
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.start("wget "+urladdress+"screen_2.png");
|
||||||
get_json.waitForFinished();
|
get_json.waitForFinished();
|
||||||
@@ -233,6 +247,9 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
ui->screen_2->show();
|
ui->screen_2->show();
|
||||||
ui->screen_2->setPixmap(screen[1]);
|
ui->screen_2->setPixmap(screen[1]);
|
||||||
ui->screen_2->setScaledContents(true);
|
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.start("wget "+urladdress+"screen_3.png");
|
||||||
get_json.waitForFinished();
|
get_json.waitForFinished();
|
||||||
@@ -240,6 +257,8 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
ui->screen_3->show();
|
ui->screen_3->show();
|
||||||
ui->screen_3->setPixmap(screen[2]);
|
ui->screen_3->setPixmap(screen[2]);
|
||||||
ui->screen_3->setScaledContents(true);
|
ui->screen_3->setScaledContents(true);
|
||||||
|
ui->screen_4->hide();
|
||||||
|
ui->screen_5->hide();
|
||||||
}
|
}
|
||||||
get_json.start("wget "+urladdress+"screen_4.png");
|
get_json.start("wget "+urladdress+"screen_4.png");
|
||||||
get_json.waitForFinished();
|
get_json.waitForFinished();
|
||||||
@@ -247,6 +266,7 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
ui->screen_4->show();
|
ui->screen_4->show();
|
||||||
ui->screen_4->setPixmap(screen[3]);
|
ui->screen_4->setPixmap(screen[3]);
|
||||||
ui->screen_4->setScaledContents(true);
|
ui->screen_4->setScaledContents(true);
|
||||||
|
ui->screen_5->hide();
|
||||||
}
|
}
|
||||||
get_json.start("wget "+urladdress+"screen_5.png");
|
get_json.start("wget "+urladdress+"screen_5.png");
|
||||||
get_json.waitForFinished();
|
get_json.waitForFinished();
|
||||||
@@ -264,15 +284,15 @@ void Widget::loadappinfo(QUrl arg1)
|
|||||||
|
|
||||||
void Widget::chooseLeftMenu(int index)
|
void Widget::chooseLeftMenu(int index)
|
||||||
{
|
{
|
||||||
|
|
||||||
nowMenu=index;
|
nowMenu=index;
|
||||||
for (int i=0;i<15;i++) {
|
for (int i=0;i<15;i++) {
|
||||||
load.cancel();//打开并发加载线程前关闭正在执行的线程
|
|
||||||
left_list[i]->setStyleSheet("");
|
left_list[i]->setStyleSheet("");
|
||||||
|
left_list[i]->setFont(QFont("",11));
|
||||||
left_menu_bg[i]->setStyleSheet("");
|
left_menu_bg[i]->setStyleSheet("");
|
||||||
}
|
}
|
||||||
left_list[index]->setStyleSheet("color:#FFFFFF");
|
left_list[index]->setStyleSheet("color:#FFFFFF");
|
||||||
left_menu_bg[index]->setStyleSheet("background-color:#0081FF;border-radius:8");
|
left_menu_bg[index]->setStyleSheet("background-color:#0081FF;border-radius:8");
|
||||||
|
|
||||||
if(index<=12){
|
if(index<=12){
|
||||||
ui->webView->setUrl(menuUrl[index]);
|
ui->webView->setUrl(menuUrl[index]);
|
||||||
ui->stackedWidget->setCurrentIndex(0);
|
ui->stackedWidget->setCurrentIndex(0);
|
||||||
@@ -315,6 +335,9 @@ void Widget::on_pushButton_clicked()
|
|||||||
nowDownload+=1;
|
nowDownload+=1;
|
||||||
startRequest(urList.at(nowDownload-1)); //进行链接请求
|
startRequest(urList.at(nowDownload-1)); //进行链接请求
|
||||||
}
|
}
|
||||||
|
if(ui->pushButton->text()=="重新安装"){
|
||||||
|
download_list[allDownload-1].reinstall=true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Widget::startRequest(QUrl url)
|
void Widget::startRequest(QUrl url)
|
||||||
@@ -343,29 +366,28 @@ void Widget::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes)
|
|||||||
{
|
{
|
||||||
download_list[nowDownload-1].setMax(10000); //最大值
|
download_list[nowDownload-1].setMax(10000); //最大值
|
||||||
download_list[nowDownload-1].setValue((bytesRead*10000)/totalBytes); //当前值
|
download_list[nowDownload-1].setValue((bytesRead*10000)/totalBytes); //当前值
|
||||||
|
download_size=bytesRead;
|
||||||
if(download_list[nowDownload-1].close){
|
if(download_list[nowDownload-1].close){
|
||||||
download_list[nowDownload-1].closeDownload();
|
download_list[nowDownload-1].closeDownload();
|
||||||
httpFinished();
|
httpFinished();
|
||||||
|
|
||||||
}
|
}
|
||||||
// download_list[nowDownload-1].setMax(bytesRead/10);
|
|
||||||
// download_list[nowDownload-1].setValue(totalBytes/10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Widget::httpFinished() //完成下载
|
void Widget::httpFinished() //完成下载
|
||||||
{
|
{
|
||||||
|
|
||||||
file->flush();
|
file->flush();
|
||||||
file->close();
|
file->close();
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
reply = nullptr;
|
reply = nullptr;
|
||||||
delete file;
|
delete file;
|
||||||
file = nullptr;
|
file = nullptr;
|
||||||
isdownload=false;
|
isdownload=false;
|
||||||
isBusy=false;
|
isBusy=false;
|
||||||
download_list[nowDownload-1].readyInstall();
|
download_list[nowDownload-1].readyInstall();
|
||||||
download_list[nowDownload-1].free=true;
|
download_list[nowDownload-1].free=true;
|
||||||
if(nowDownload<allDownload){
|
if(nowDownload<allDownload){
|
||||||
nowDownload+=1;
|
nowDownload+=1;
|
||||||
while (download_list[nowDownload-1].close) {
|
while (download_list[nowDownload-1].close) {
|
||||||
nowDownload+=1;
|
nowDownload+=1;
|
||||||
@@ -374,13 +396,12 @@ if(nowDownload<allDownload){
|
|||||||
file = new QFile(fileName);
|
file = new QFile(fileName);
|
||||||
if(!file->open(QIODevice::WriteOnly))
|
if(!file->open(QIODevice::WriteOnly))
|
||||||
{
|
{
|
||||||
qDebug()<<"file open error";
|
|
||||||
delete file;
|
delete file;
|
||||||
file = nullptr;
|
file = nullptr;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
startRequest(urList.at(nowDownload-1));
|
startRequest(urList.at(nowDownload-1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Widget::on_listWidget_currentRowChanged(int currentRow)
|
void Widget::on_listWidget_currentRowChanged(int currentRow)
|
||||||
{
|
{
|
||||||
@@ -413,7 +434,7 @@ void Widget::on_menu_btn_video_clicked()//视频播放
|
|||||||
}
|
}
|
||||||
void Widget::on_menu_btn_photo_clicked()//图形图像
|
void Widget::on_menu_btn_photo_clicked()//图形图像
|
||||||
{
|
{
|
||||||
chooseLeftMenu(5);
|
chooseLeftMenu(5);
|
||||||
}
|
}
|
||||||
void Widget::on_menu_btn_game_clicked()//游戏娱乐
|
void Widget::on_menu_btn_game_clicked()//游戏娱乐
|
||||||
{
|
{
|
||||||
@@ -462,7 +483,7 @@ void Widget::on_pushButton_2_clicked()
|
|||||||
void Widget::on_webView_loadFinished()
|
void Widget::on_webView_loadFinished()
|
||||||
{
|
{
|
||||||
if(ui->webView->page()->mainFrame()->requestedUrl().toString().right(5)!=".json"){
|
if(ui->webView->page()->mainFrame()->requestedUrl().toString().right(5)!=".json"){
|
||||||
ui->label_show->setText("");
|
ui->label_show->setText("正在加载,请稍候");
|
||||||
ui->label_show->hide();
|
ui->label_show->hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -480,3 +501,70 @@ void Widget::on_comboBox_server_currentIndexChanged(const QString &arg1)
|
|||||||
setConfig->setValue("server/choose",arg1);
|
setConfig->setValue("server/choose",arg1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Widget::on_pushButton_3_clicked()
|
||||||
|
{
|
||||||
|
QtConcurrent::run([=](){
|
||||||
|
ui->pushButton_3->setEnabled(false);
|
||||||
|
ui->comboBox_server->clear();
|
||||||
|
system(QDir::homePath().toUtf8()+"/.config/deepin-community-store/server.list");
|
||||||
|
system("wget -P "+QDir::homePath().toUtf8()+"/.config/deepin-community-store http://store2.shenmo.tech/store/server.list");
|
||||||
|
std::fstream server;
|
||||||
|
server.open(QDir::homePath().toUtf8()+"/.config/deepin-community-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->pushButton_3->setEnabled(true);
|
||||||
|
ui->comboBox_server->setCurrentIndex(0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::on_pushButton_4_clicked()
|
||||||
|
{
|
||||||
|
QtConcurrent::run([=](){
|
||||||
|
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);
|
||||||
|
if(sourcesList){
|
||||||
|
sourcesList<<"deb [by-hash=force] ";
|
||||||
|
sourcesList<<QString::fromUtf8(ui->comboBox_server->currentText().toUtf8()).toStdString();
|
||||||
|
sourcesList<<" ./";
|
||||||
|
std::fstream update;
|
||||||
|
update.open("/tmp/spark-store/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.close();
|
||||||
|
system("chmod +x /tmp/spark-store/update.sh");
|
||||||
|
QProcess runupdate;
|
||||||
|
runupdate.start("pkexec /tmp/spark-store/update.sh");
|
||||||
|
runupdate.waitForFinished();
|
||||||
|
qDebug()<<runupdate.readAllStandardError();
|
||||||
|
QString error=QString::fromStdString(runupdate.readAllStandardError().toStdString());
|
||||||
|
QStringList everyError=error.split("\n");
|
||||||
|
bool haveError=false;
|
||||||
|
for (int i=0;i<everyError.size();i++) {
|
||||||
|
qDebug()<<everyError[i].left(2);
|
||||||
|
if(everyError[i].left(2)=="E:"){
|
||||||
|
haveError=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!haveError){
|
||||||
|
ui->label_aptserver->setText("deb [by-hash=force] "+ui->comboBox_server->currentText().toUtf8()+" ./");
|
||||||
|
}else {
|
||||||
|
ui->label_aptserver->setText("更新中发生错误,请在终端使用apt update来查看错误原因");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
qDebug()<<"更新源失败";
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->pushButton_4->setEnabled(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
18
widget.h
18
widget.h
@@ -11,15 +11,18 @@
|
|||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QFuture>
|
#include <QFuture>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
#include <QTimer>
|
||||||
#define LIST_MAX 99
|
#define LIST_MAX 99
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class Widget;
|
class Widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Widget : public QWidget
|
class Widget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit Widget(QWidget *parent = 0);
|
explicit Widget(QWidget *parent = 0);
|
||||||
~Widget();
|
~Widget();
|
||||||
@@ -31,11 +34,10 @@ public:
|
|||||||
void chooseLeftMenu(int index);
|
void chooseLeftMenu(int index);
|
||||||
QPixmap screen[5];
|
QPixmap screen[5];
|
||||||
QFuture<void> load;
|
QFuture<void> load;
|
||||||
|
QTimer download_speed;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void on_webView_linkClicked(const QUrl &arg1);
|
|
||||||
void httpFinished();
|
void httpFinished();
|
||||||
void httpReadyRead();
|
void httpReadyRead();
|
||||||
void updateDataReadProgress(qint64,qint64);
|
void updateDataReadProgress(qint64,qint64);
|
||||||
@@ -81,7 +83,11 @@ private slots:
|
|||||||
|
|
||||||
void on_comboBox_server_currentIndexChanged(const QString &arg1);
|
void on_comboBox_server_currentIndexChanged(const QString &arg1);
|
||||||
|
|
||||||
private:
|
void on_pushButton_3_clicked();
|
||||||
|
|
||||||
|
void on_pushButton_4_clicked();
|
||||||
|
|
||||||
|
public:
|
||||||
QUrl url;
|
QUrl url;
|
||||||
bool isBusy=false;
|
bool isBusy=false;
|
||||||
downloadlist download_list[LIST_MAX];
|
downloadlist download_list[LIST_MAX];
|
||||||
@@ -97,6 +103,10 @@ private:
|
|||||||
QUrl menuUrl[13];
|
QUrl menuUrl[13];
|
||||||
bool configCanSeve=false;
|
bool configCanSeve=false;
|
||||||
int nowMenu=0;
|
int nowMenu=0;
|
||||||
|
long download_size=0;
|
||||||
|
long size1=0;
|
||||||
|
long size2=0;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user