mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-07-17 19:12:22 +08:00
跟随
This commit is contained in:
parent
82f49c4aa9
commit
8158159bf9
29
README.md
29
README.md
@ -10,11 +10,36 @@ web页面部分正在开发当中,详情请见[web仓库](https://gitee.com/de
|
||||
|
||||
```
|
||||
http://dcstore.shenmo.tech/
|
||||
http://store.shenmo.tech/
|
||||
http://store.moshengren.xyz/
|
||||
http://store.jerrywang.top/
|
||||
```
|
||||
|
||||
#### 参数
|
||||
|
||||
参数只有一个Url,该url应当遵循这种格式:`spk://<任意合法字符>/web分类/包名`
|
||||
|
||||
例如:
|
||||
|
||||
[spk://abcdefg/network/firefox-zh](spk://abcdefg/network/firefox-zh)
|
||||
|
||||
[spk://higklmn/network/firefox-zh](spk://higklmn/network/firefox-zh)
|
||||
|
||||
可选的web分类:
|
||||
|
||||
| 分类名称 | web分类 |
|
||||
| -------- | ------------- |
|
||||
| 网络应用 | network |
|
||||
| 社交沟通 | relations |
|
||||
| 音乐欣赏 | MusicAndSound |
|
||||
| 视频播放 | Videos |
|
||||
| 图形图像 | Photos |
|
||||
| 游戏娱乐 | Games |
|
||||
| 办公学习 | Office |
|
||||
| 阅读翻译 | Reading |
|
||||
| 编程开发 | Programming |
|
||||
| 系统工具 | Tools |
|
||||
| 主题美化 | Themes |
|
||||
| 其他应用 | Others |
|
||||
|
||||
#### 目录结构
|
||||
|
||||
安装软件过程中产生的包,图标,截图等被储存到`/tmp/deepin-community-store/`中。
|
||||
|
6
main.cpp
6
main.cpp
@ -43,7 +43,11 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
w.show();
|
||||
|
||||
// qDebug()<<argv[1];
|
||||
QString arg1=argv[1];
|
||||
if(arg1.left(6)=="spk://"){
|
||||
w.openUrl(QUrl(argv[1]));
|
||||
}
|
||||
//让打开时界面显示在正中
|
||||
Dtk::Widget::moveToCenter(&w);
|
||||
|
||||
|
@ -56,6 +56,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -63,3 +64,9 @@ MainWindow::~MainWindow()
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::openUrl(QUrl url)
|
||||
{
|
||||
w->openUrl(url);
|
||||
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,8 @@ public:
|
||||
~MainWindow();
|
||||
DSearchEdit *searchEdit=new DSearchEdit;
|
||||
DTitlebar *titlebar=new DTitlebar;
|
||||
void openUrl(QUrl);
|
||||
|
||||
private:
|
||||
|
||||
Widget *w;
|
||||
|
56
widget.cpp
56
widget.cpp
@ -108,10 +108,17 @@ void Widget::initUI()
|
||||
//初始化web加载动画
|
||||
QHBoxLayout *m_weblayout=new QHBoxLayout;
|
||||
m_weblayout->addWidget(m_loadweb);
|
||||
m_weblayout->addWidget(m_loaderror);
|
||||
m_loadweb->hide();
|
||||
m_loaderror->hide();
|
||||
m_loadweb->start();
|
||||
m_loadweb->setMaximumSize(60,60);
|
||||
m_loadweb->setMaximumSize(30,30);
|
||||
m_loadweb->setTextVisible(false);
|
||||
m_loaderror->setPixmap(QIcon::fromTheme("dialog-error").pixmap(60,60));
|
||||
m_loaderror->setAlignment(Qt::AlignCenter);
|
||||
|
||||
ui->webView->setLayout(m_weblayout);
|
||||
ui->label_show->hide();
|
||||
}
|
||||
|
||||
void Widget::initConfig()
|
||||
@ -131,7 +138,6 @@ void Widget::initConfig()
|
||||
|
||||
|
||||
//读取服务器URL并初始化菜单项的链接
|
||||
QString serverUrl;
|
||||
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());
|
||||
@ -185,7 +191,12 @@ void Widget::initConfig()
|
||||
void Widget::on_webView_loadStarted()
|
||||
{
|
||||
|
||||
m_loadweb->setValue(0);
|
||||
m_loadweb->show();
|
||||
m_loaderror->hide();
|
||||
ui->label_show->hide();
|
||||
|
||||
|
||||
QUrl arg1=ui->webView->page()->mainFrame()->requestedUrl().toString();
|
||||
//判断,如果末尾是/就直接访问,如果是app.json就打开详情页
|
||||
if(arg1.path().right(8)=="app.json"){
|
||||
@ -279,8 +290,7 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
//图标加载
|
||||
get_json.start("wget -O icon.png "+urladdress+"icon.png");
|
||||
get_json.waitForFinished();
|
||||
QPixmap appicon;
|
||||
qDebug()<<appicon.load("icon.png");
|
||||
QPixmap appicon(QString::fromUtf8(TMP_PATH)+"/icon.png");
|
||||
ui->label_appicon->setPixmap(appicon);
|
||||
ui->pushButton_download->setEnabled(true);
|
||||
//截图展示加载
|
||||
@ -299,10 +309,9 @@ void Widget::loadappinfo(QUrl arg1)
|
||||
get_json.start("wget "+urladdress+"screen_"+QString::number(i)+".png");
|
||||
get_json.waitForFinished();
|
||||
if(screen[i].load("screen_"+QString::number(i)+".png")){
|
||||
qDebug()<<"加载第"+QString::number(i)+"张图片";
|
||||
label_screen[i]->setImage(screen[i]);
|
||||
label_screen[i]->show();
|
||||
switch(i){
|
||||
switch(i){ //故意为之,为了清除多余截图
|
||||
case 0:
|
||||
label_screen[1]->hide();
|
||||
case 1:
|
||||
@ -342,7 +351,6 @@ void Widget::on_pushButton_download_clicked()
|
||||
item->setFlags(item->flags() & ~Qt::ItemIsEnabled & ~Qt::ItemIsSelectable);
|
||||
ui->listWidget->setItemWidget(item,&download_list[allDownload-1]);
|
||||
urList.append(url);
|
||||
qDebug()<<"下载:"<<url;
|
||||
download_list[allDownload-1].setName(appName);
|
||||
download_list[allDownload-1].setFileName(fileName);
|
||||
QPixmap icon;
|
||||
@ -447,7 +455,6 @@ 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()<<menuUrl[index];
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
}else if (index==13) {
|
||||
ui->stackedWidget->setCurrentIndex(1);
|
||||
@ -516,21 +523,11 @@ void Widget::on_pushButton_return_clicked()
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Widget::on_webView_loadFinished()
|
||||
{
|
||||
if(ui->webView->page()->mainFrame()->requestedUrl().toString().right(5)!=".json"){
|
||||
ui->label_show->setText("正在加载,请稍候");
|
||||
ui->label_show->hide();
|
||||
}
|
||||
}
|
||||
void Widget::on_comboBox_server_currentIndexChanged(const QString &arg1)
|
||||
{
|
||||
if(configCanSave){
|
||||
ui->label_setting1->show();
|
||||
QSettings *setConfig=new QSettings(QDir::homePath()+"/.config/spark-store/config.ini",QSettings::IniFormat);
|
||||
qDebug()<<arg1;
|
||||
setConfig->setValue("server/choose",arg1);
|
||||
}
|
||||
}
|
||||
@ -578,12 +575,10 @@ void Widget::on_pushButton_updateApt_clicked()
|
||||
QProcess runupdate;
|
||||
runupdate.start("pkexec "+QString::fromUtf8(TMP_PATH)+"/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;
|
||||
}
|
||||
@ -594,7 +589,7 @@ void Widget::on_pushButton_updateApt_clicked()
|
||||
ui->label_aptserver->setText("更新中发生错误,请在终端使用apt update来查看错误原因");
|
||||
}
|
||||
}else {
|
||||
qDebug()<<"更新源失败";
|
||||
ui->label_aptserver->setText("服务器错误");
|
||||
}
|
||||
|
||||
ui->pushButton_updateApt->setEnabled(true);
|
||||
@ -677,6 +672,12 @@ void Widget::opensetting()
|
||||
ui->stackedWidget->setCurrentIndex(3);
|
||||
}
|
||||
|
||||
void Widget::openUrl(QUrl u)
|
||||
{
|
||||
QString app=serverUrl + "store"+u.path()+"/app.json";
|
||||
ui->webView->setUrl(app);
|
||||
}
|
||||
|
||||
void Widget::on_pushButton_website_clicked()
|
||||
{
|
||||
QDesktopServices::openUrl(QUrl(appweb));
|
||||
@ -685,5 +686,16 @@ void Widget::on_pushButton_website_clicked()
|
||||
|
||||
void Widget::on_webView_loadFinished(bool arg1)
|
||||
{
|
||||
m_loadweb->hide();
|
||||
if(arg1){
|
||||
m_loadweb->hide();
|
||||
}else {
|
||||
m_loadweb->hide();
|
||||
m_loaderror->show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Widget::on_webView_loadProgress(int progress)
|
||||
{
|
||||
m_loadweb->setValue(progress);
|
||||
}
|
||||
|
44
widget.h
44
widget.h
@ -15,7 +15,9 @@
|
||||
#include <DSettings>
|
||||
#include <DBlurEffectWidget>
|
||||
#include <DSpinner>
|
||||
#define LIST_MAX 99
|
||||
#include <DWaterProgress>
|
||||
#include <QLabel>
|
||||
#define LIST_MAX 99 //一次最多下载数量
|
||||
#define TMP_PATH "/tmp/spark-store"
|
||||
|
||||
DWIDGET_USE_NAMESPACE
|
||||
@ -30,20 +32,15 @@ class Widget : public QWidget
|
||||
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit Widget(QWidget *parent = 0);
|
||||
explicit Widget(QWidget *parent = nullptr);
|
||||
~Widget();
|
||||
void startRequest(QUrl url);
|
||||
void searchApp(QString);
|
||||
int nowDownload=0;
|
||||
int allDownload=0;
|
||||
int isdownload=false;
|
||||
void loadappinfo(QUrl);
|
||||
void chooseLeftMenu(int index);
|
||||
quint64 dirFileSize(const QString &path);
|
||||
QPixmap screen[5];
|
||||
QFuture<void> load;
|
||||
QTimer download_speed;
|
||||
void opensetting();
|
||||
void opensetting(); //打开设置页面
|
||||
void openUrl(QUrl);
|
||||
|
||||
private slots:
|
||||
|
||||
@ -66,7 +63,6 @@ private slots:
|
||||
void on_pushButton_download_clicked();
|
||||
void on_pushButton_return_clicked();
|
||||
void on_webView_loadStarted();
|
||||
void on_webView_loadFinished();
|
||||
void on_menu_btn_theme_clicked();
|
||||
void on_comboBox_server_currentIndexChanged(const QString &arg1);
|
||||
void on_pushButton_updateServer_clicked();
|
||||
@ -74,14 +70,13 @@ private slots:
|
||||
void on_pushButton_uninstall_clicked();
|
||||
void on_pushButton_clear_clicked();
|
||||
void on_pushButton_website_clicked();
|
||||
|
||||
void on_webView_loadFinished(bool arg1);
|
||||
void on_webView_loadProgress(int progress);
|
||||
|
||||
public:
|
||||
void initUI();
|
||||
void initConfig();
|
||||
|
||||
QUrl url;
|
||||
bool isBusy=false;
|
||||
|
||||
downloadlist download_list[LIST_MAX];
|
||||
Ui::Widget *ui;
|
||||
QNetworkAccessManager *manager;
|
||||
@ -92,17 +87,30 @@ public:
|
||||
QString urladdress;
|
||||
QString pkgName;
|
||||
QString appweb;
|
||||
|
||||
private:
|
||||
void initUI();
|
||||
void initConfig();
|
||||
void loadappinfo(QUrl);
|
||||
void chooseLeftMenu(int index);
|
||||
quint64 dirFileSize(const QString &path);
|
||||
|
||||
private:
|
||||
QToolButton * left_list[15];
|
||||
QWidget * left_menu_bg[15];
|
||||
QUrl menuUrl[13];
|
||||
DWaterProgress *m_loadweb=new DWaterProgress;
|
||||
QLabel *m_loaderror=new QLabel;
|
||||
QString serverUrl;
|
||||
bool configCanSave=false;
|
||||
int nowMenu=0;
|
||||
bool isBusy=false;
|
||||
int nowMenu=0; //定位当前菜单
|
||||
long download_size=0;
|
||||
long size1=0;
|
||||
long size2=0;
|
||||
Dtk::Core::DSettings *jsonConfig=new Dtk::Core::DSettings;
|
||||
private:
|
||||
DSpinner *m_loadweb=new DSpinner;
|
||||
QPixmap screen[5];
|
||||
QFuture<void> load;
|
||||
QTimer download_speed;
|
||||
|
||||
};
|
||||
|
||||
|
53
widget.ui
53
widget.ui
@ -790,7 +790,7 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="page">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
@ -1193,19 +1193,60 @@
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="image_show" name="screen_0" native="true"/>
|
||||
<widget class="image_show" name="screen_0" native="true">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="image_show" name="screen_1" native="true"/>
|
||||
<widget class="image_show" name="screen_1" native="true">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="image_show" name="screen_2" native="true"/>
|
||||
<widget class="image_show" name="screen_2" native="true">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="image_show" name="screen_3" native="true"/>
|
||||
<widget class="image_show" name="screen_3" native="true">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="image_show" name="screen_4" native="true"/>
|
||||
<widget class="image_show" name="screen_4" native="true">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>400</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
Loading…
x
Reference in New Issue
Block a user