mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-14 04:42:03 +08:00
由于安装操作在线程中异步执行,原始逻辑中仅判断下载完成后就检测是否还有后续任务,存在安装未结束就退出的情况 Log: 调整判断后续下载任务位置到槽函数中,每个任务安装完成结果信号触发后优先判断安装是否成功,再判断是否需要退出
67 lines
1.6 KiB
C++
67 lines
1.6 KiB
C++
#ifndef DOWNLOADLISTWIDGET_H
|
|
#define DOWNLOADLISTWIDGET_H
|
|
|
|
#include <DBlurEffectWidget>
|
|
|
|
#include <QWidget>
|
|
#include <QTimer>
|
|
|
|
namespace Ui {
|
|
class DownloadListWidget;
|
|
}
|
|
|
|
DWIDGET_USE_NAMESPACE
|
|
|
|
class DownloadItem;
|
|
class DownloadController;
|
|
class DownloadListWidget : public DBlurEffectWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
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;
|
|
|
|
private:
|
|
int isdownload = false;
|
|
bool isBusy = false;
|
|
QStringList dlist;
|
|
QList<QUrl> urList;
|
|
QList<DownloadItem *> downloaditemlist;
|
|
DownloadController *downloadController = nullptr;
|
|
int nowdownload = 0;
|
|
QString theSpeed;
|
|
QTimer download_speed;
|
|
long download_size = 0;
|
|
long size1 = 0;
|
|
long size2 = 0;
|
|
void startRequest(QUrl url, QString fileName);
|
|
void httpFinished();
|
|
void updateDataReadProgress(QString speedInfo, qint64 bytesRead, qint64 totalBytes);
|
|
void clearItem();
|
|
QRect m_rect;
|
|
Ui::DownloadListWidget *ui;
|
|
|
|
signals:
|
|
void downloadFinished();
|
|
void downloadProgress(int i);
|
|
|
|
private slots:
|
|
void on_pushButton_clicked();
|
|
void slotInstallFinished(bool success);
|
|
};
|
|
|
|
#endif // DOWNLOADLISTWIDGET_H
|