feat: 后台安装结束后退出任务栏驻留

* fix: 没有下载的时候直接退出客户端
* feat: 后台安装结束后退出任务栏驻留
* feat: 更新的时候关闭旧实例
This commit is contained in:
Pluto 2023-02-23 12:50:44 +00:00
parent 762caae49f
commit a3e1d19ac3
13 changed files with 125 additions and 65 deletions

@ -32,4 +32,5 @@ if [ "$1" = "remove" ] || [ "$1" = "purge" ] ; then
apt-key del '9D9A A859 F750 24B1 A1EC E16E 0E41 D354 A29A 440C'
else
echo "非卸载操作,不进行配置清理"
(echo "关闭已有 spark-store..") && (pkill spark-store) || echo "继续安装 spark-store.."
fi

@ -113,6 +113,11 @@ void Application::setMainWindow(MainWindow *window)
#endif
}
MainWindow *Application::mainWindow()
{
return m_mainWindow;
}
void Application::initAboutDialog()
{
if (m_mainWindow == nullptr)

@ -20,7 +20,9 @@ public:
static void checkAppConfigLocation();
void setBuildDateTime(const QString &buildDateTime);
void setMainWindow(MainWindow *window);
MainWindow *mainWindow();
private:
void initAboutDialog();

@ -104,6 +104,22 @@ void MainWindow::openUrl(const QString &url)
}
}
bool MainWindow::isCloseWindowAnimation()
{
return closeWindowAnimation;
}
void MainWindow::closeEvent(QCloseEvent *event)
{
// 判断下载任务数量,如果没有要下载的,就直接退出主程序
if(!downloadlistwidget->isDownloadInProcess()){
// 已经全部下载完成
qApp->quit();
}
BaseWidgetOpacity::closeEvent(event);
}
void MainWindow::initUI()
{
setWindowTitle(QObject::tr("Spark Store"));

@ -29,6 +29,11 @@ public:
void openUrl(const QString &url);
bool isCloseWindowAnimation();
protected:
void closeEvent(QCloseEvent *event) override;
private:
void initUI();
void initTitleBar();

@ -1,6 +1,7 @@
#include "basewidgetopacity.h"
#include "utils/widgetanimation.h"
#include "utils/utils.h"
#include "widgets/downloadlistwidget.h"
#include <QSettings>
#include <QStandardPaths>
@ -43,6 +44,7 @@ void BaseWidgetOpacity::closeEvent(QCloseEvent *event)
bool isWayland = Utils::isWayland();
if (isWayland)
{
closeWindowAnimation = true;
return DBlurEffectWidget::closeEvent(event);
}

@ -111,7 +111,7 @@ void DownloadItem::setSpeed(QString s)
/***************************************************************
* @brief
* @param int t, t为安装方式 0,1,2
* @note
* @note
* @Sample usage: DownloadItem::install(0);
**************************************************************/
void DownloadItem::install(int t)

@ -5,6 +5,7 @@
#include "backend/downloadworker.h"
#include "utils/utils.h"
#include "application.h"
#include "mainwindow-dtk.h"
#include <QDesktopServices>
#include <QtConcurrent>
@ -70,6 +71,15 @@ DownloadListWidget::~DownloadListWidget()
delete ui;
}
bool DownloadListWidget::isDownloadInProcess()
{
if (toDownload > 0)
{
return true;
}
return false;
}
void DownloadListWidget::clearItem()
{
ui->listWidget->clear();
@ -83,6 +93,7 @@ DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QStrin
}
urList.append(downloadurl);
allDownload += 1;
toDownload += 1;
DownloadItem *di = new DownloadItem;
dlist << downloadurl;
downloaditemlist << di;
@ -126,8 +137,7 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName)
{
downloadController = new DownloadController; // 并发下载,在第一次点击下载按钮的时候才会初始化
}
if (downloadController)
else
{
downloadController->disconnect();
downloadController->stopDownload();
@ -153,17 +163,33 @@ void DownloadListWidget::httpFinished() // 完成下载
QtConcurrent::run([=]()
{
while (downloaditemlist[nowDownload - 1]->readyInstall() == -1)
while (downloaditemlist[nowDownload - 1]->readyInstall() == -1) // 安装当前应用堵塞安装后面的下载suspend
{
continue;
}
toDownload -= 1; // 安装完以后减少待安装数目
qDebug() << "Download: 还没有下载的数目:" << toDownload;
if(toDownload == 0){
Application *app = qobject_cast<Application *>(qApp);
MainWindow *mainWindow = app->mainWindow();
if(mainWindow->isCloseWindowAnimation() == true){
qDebug()<< "Download: 后台安装结束,退出程序";
qApp->quit();
}
else{
delete app;
delete mainWindow;
}
}
downloaditemlist[nowDownload - 1]->free = true;
emit downloadFinished();
if (nowDownload < allDownload)
{
// 如果有排队则下载下一个
qDebug() << "切换下一个下载...";
qDebug() << "Download: 切换下一个下载...";
nowDownload += 1;
while (downloaditemlist[nowDownload - 1]->close)
{

@ -22,12 +22,15 @@ public:
DownloadItem *addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl);
int nowDownload = 0;
int allDownload = 0;
int toDownload = 0;
QList<DownloadItem *> getDIList();
QList<QUrl> getUrlList();
void m_move(int x, int y);
explicit DownloadListWidget(QWidget *parent = nullptr);
~DownloadListWidget() override;
bool isDownloadInProcess();
protected:
void mouseMoveEvent(QMouseEvent *event) override;

@ -240,12 +240,12 @@
<context>
<name>DAboutDialog</name>
<message>
<location filename="../src/application.cpp" line="133"/>
<location filename="../src/application.cpp" line="138"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/application.cpp" line="143"/>
<location filename="../src/application.cpp" line="148"/>
<source>%1 is released under %2</source>
<translation type="unfinished"></translation>
</message>
@ -452,33 +452,33 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/>
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
<source>Submit App</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/>
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
<source>Submit App with client(Recommanded)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/>
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/>
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
<source>APP Upgrade and Install Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/>
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
<source>Spark Store</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/>
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
<source>Search or enter spk://</source>
<translation type="unfinished"></translation>
</message>
@ -488,7 +488,7 @@
<message>
<location filename="../src/application.cpp" line="33"/>
<location filename="../src/application.cpp" line="34"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/>
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
<source>Spark Store</source>
<translation type="unfinished"></translation>
</message>
@ -498,17 +498,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/application.cpp" line="140"/>
<location filename="../src/application.cpp" line="145"/>
<source>Spark Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/>
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
<source>Download list</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/>
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
<source>Show MainWindow</source>
<translation type="unfinished"></translation>
</message>
@ -619,12 +619,12 @@
<context>
<name>TitleBarMenu</name>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/>
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/>
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
<source>Exit</source>
<translation type="unfinished"></translation>
</message>

@ -240,12 +240,12 @@
<context>
<name>DAboutDialog</name>
<message>
<location filename="../src/application.cpp" line="133"/>
<location filename="../src/application.cpp" line="138"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/application.cpp" line="143"/>
<location filename="../src/application.cpp" line="148"/>
<source>%1 is released under %2</source>
<translation type="unfinished"></translation>
</message>
@ -452,33 +452,33 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/>
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
<source>Submit App</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/>
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
<source>Submit App with client(Recommanded)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/>
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/>
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
<source>APP Upgrade and Install Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/>
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
<source>Spark Store</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/>
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
<source>Search or enter spk://</source>
<translation type="unfinished"></translation>
</message>
@ -488,7 +488,7 @@
<message>
<location filename="../src/application.cpp" line="33"/>
<location filename="../src/application.cpp" line="34"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/>
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
<source>Spark Store</source>
<translation type="unfinished"></translation>
</message>
@ -498,17 +498,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/application.cpp" line="140"/>
<location filename="../src/application.cpp" line="145"/>
<source>Spark Project</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/>
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
<source>Download list</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/>
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
<source>Show MainWindow</source>
<translation type="unfinished"></translation>
</message>
@ -619,12 +619,12 @@
<context>
<name>TitleBarMenu</name>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/>
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/>
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
<source>Exit</source>
<translation type="unfinished"></translation>
</message>

@ -240,12 +240,12 @@
<context>
<name>DAboutDialog</name>
<message>
<location filename="../src/application.cpp" line="133"/>
<location filename="../src/application.cpp" line="138"/>
<source>Version: %1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/application.cpp" line="143"/>
<location filename="../src/application.cpp" line="148"/>
<source>%1 is released under %2</source>
<translation>%1%2</translation>
</message>
@ -452,33 +452,33 @@
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/>
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
<source>Submit App</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/>
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
<source>Submit App with client(Recommanded)</source>
<translation>使稿</translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/>
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/>
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
<source>APP Upgrade and Install Settings</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/>
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
<source>Spark Store</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/>
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
<source>Search or enter spk://</source>
<translation></translation>
</message>
@ -488,7 +488,7 @@
<message>
<location filename="../src/application.cpp" line="33"/>
<location filename="../src/application.cpp" line="34"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/>
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
<source>Spark Store</source>
<translation></translation>
</message>
@ -498,17 +498,17 @@
<translation>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;星火计划开发者&lt;/span&gt;</translation>
</message>
<message>
<location filename="../src/application.cpp" line="140"/>
<location filename="../src/application.cpp" line="145"/>
<source>Spark Project</source>
<translation></translation>
</message>
<message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/>
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
<source>Download list</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/>
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
<source>Show MainWindow</source>
<translation></translation>
</message>
@ -619,12 +619,12 @@
<context>
<name>TitleBarMenu</name>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/>
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/>
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
<source>Exit</source>
<translation>退</translation>
</message>

@ -240,12 +240,12 @@
<context>
<name>DAboutDialog</name>
<message>
<location filename="../src/application.cpp" line="133"/>
<location filename="../src/application.cpp" line="138"/>
<source>Version: %1</source>
<translation>%1</translation>
</message>
<message>
<location filename="../src/application.cpp" line="143"/>
<location filename="../src/application.cpp" line="148"/>
<source>%1 is released under %2</source>
<translation>%1%2</translation>
</message>
@ -452,33 +452,33 @@
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="170"/>
<location filename="../src/mainwindow-dtk.cpp" line="186"/>
<source>Submit App</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="171"/>
<location filename="../src/mainwindow-dtk.cpp" line="187"/>
<source>Submit App with client(Recommanded)</source>
<translation>()</translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="172"/>
<location filename="../src/mainwindow-dtk.cpp" line="188"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="173"/>
<location filename="../src/mainwindow-dtk.cpp" line="189"/>
<source>APP Upgrade and Install Settings</source>
<translation> </translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="129"/>
<location filename="../src/mainwindow-dtk.cpp" line="224"/>
<location filename="../src/mainwindow-dtk.cpp" line="145"/>
<location filename="../src/mainwindow-dtk.cpp" line="240"/>
<source>Spark Store</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="134"/>
<location filename="../src/mainwindow-dtk.cpp" line="150"/>
<source>Search or enter spk://</source>
<translation></translation>
</message>
@ -488,7 +488,7 @@
<message>
<location filename="../src/application.cpp" line="33"/>
<location filename="../src/application.cpp" line="34"/>
<location filename="../src/mainwindow-dtk.cpp" line="109"/>
<location filename="../src/mainwindow-dtk.cpp" line="125"/>
<source>Spark Store</source>
<translation></translation>
</message>
@ -498,17 +498,17 @@
<translation>&lt;span style=&apos; font-size:10pt;font-weight:60;&apos;&gt;&lt;/span&gt;&lt;br/&gt;&lt;a href=&apos;https://www.spark-app.store/&apos;&gt;https://www.spark-app.store&lt;/a&gt;&lt;br/&gt;&lt;span style=&apos; font-size:12pt;&apos;&gt;星火计划开发者&lt;/span&gt;</translation>
</message>
<message>
<location filename="../src/application.cpp" line="140"/>
<location filename="../src/application.cpp" line="145"/>
<source>Spark Project</source>
<translation></translation>
</message>
<message>
<location filename="../src/widgets/downloadlistwidget.cpp" line="17"/>
<location filename="../src/widgets/downloadlistwidget.cpp" line="18"/>
<source>Download list</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="227"/>
<location filename="../src/mainwindow-dtk.cpp" line="243"/>
<source>Show MainWindow</source>
<translation></translation>
</message>
@ -619,12 +619,12 @@
<context>
<name>TitleBarMenu</name>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="228"/>
<location filename="../src/mainwindow-dtk.cpp" line="244"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../src/mainwindow-dtk.cpp" line="229"/>
<location filename="../src/mainwindow-dtk.cpp" line="245"/>
<source>Exit</source>
<translation>退</translation>
</message>