fix: 修复下载列表对话框中,点击某个 item 取消下载按钮后下载列表无法再次显示的问题

MainWindow::notify 中焦点判断异常,未去除 QStyleSheetStyle 导致错误认为需要隐藏下载管理对话框

Log: 判断 focusIn 事件前排除 QStyleSheetStyle 对象
This commit is contained in:
zty199 2023-02-19 00:24:36 +08:00
parent 0001df153b
commit 4825417de8
7 changed files with 27 additions and 35 deletions

@ -1,9 +1,7 @@
#include "downloadworker.h"
#include <QEventLoop>
#include <QProcess>
#include <QRegularExpression>
#include <QDir>
#include <QtConcurrent>
#include <QStandardPaths>

@ -2,9 +2,7 @@
#define DOWNLOADWORKER_H
#include <QObject>
#include <QList>
#include <QFile>
#include <QNetworkReply>
#include <QVector>
class DownloadController : public QObject
{
@ -19,23 +17,19 @@ public:
qint64 getFileSize(const QString& url);
QString replaceDomain(const QString& url, const QString domain);
signals:
void errorOccur(const QString& msg);
void downloadProcess(QString, qint64, qint64);
void downloadFinished();
private:
int threadNum;
qint64 pidNumber = -1;
QString filename;
qint64 fileSize;
QVector<QPair<qint64, qint64>> ranges;
QFile *file;
bool finished = false;
QVector<QString> domains;
signals:
void errorOccur(const QString& msg);
void downloadProcess(QString, qint64, qint64);
void downloadFinished();
};
#endif // FILEDOWNLOADWORKER_H

@ -3,6 +3,7 @@
#include "utils/widgetanimation.h"
#include "widgets/common/progressbutton.h"
#include "widgets/downloadlistwidget.h"
#include "widgets/common/downloaditem.h"
#include "dbus/dbussparkstoreservice.h"
#include "application.h"
@ -10,6 +11,7 @@
#include <DWidgetUtil>
#include <DGuiApplicationHelper>
#include <QDesktopServices>
#include <QAbstractButton>
#include <QtConcurrent>
@ -427,7 +429,8 @@ void MainWindow::notify(QObject *receiver, QEvent *event)
return;
}
if (receiver->inherits("QWidgetWindow")) {
if (receiver->inherits("QWidgetWindow")
|| receiver->inherits("QStyleSheetStyle")) {
return;
}

@ -2,8 +2,10 @@
#include "ui_appintopage.h"
#include "backend/sparkapi.h"
#include "widgets/downloadlistwidget.h"
#include "widgets/common/downloaditem.h"
#include "backend/image_show.h"
#include "application.h"
#include "utils/utils.h"
#include <QtConcurrent>
#include <QClipboard>

@ -1,8 +1,6 @@
#ifndef APPINTOPAGE_H
#define APPINTOPAGE_H
#include "utils/utils.h"
#include <QWidget>
#include <QJsonObject>
#include <QUrl>

@ -1,11 +1,14 @@
#include "downloadlistwidget.h"
#include "ui_downloadlistwidget.h"
#include <QGraphicsOpacityEffect>
#include <QPropertyAnimation>
#include <QDebug>
#include "widgets/common/downloaditem.h"
#include "backend/sparkapi.h"
#include "backend/downloadworker.h"
#include "utils/utils.h"
#include "application.h"
#include <QDesktopServices>
#include <QtConcurrent>
#include <QDebug>
DownloadListWidget::DownloadListWidget(QWidget *parent) : DBlurEffectWidget(parent),
ui(new Ui::DownloadListWidget)
@ -118,14 +121,12 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName)
isdownload = true;
downloaditemlist[allDownload - 1]->free = false;
// 使用懒汉式单例来存储downloadController
if (downloadController == nullptr)
{
downloadController = new DownloadController; // 并发下载,在第一次点击下载按钮的时候才会初始化
}
if (downloadController)
{
downloadController->disconnect();
@ -139,7 +140,6 @@ void DownloadListWidget::startRequest(QUrl url, QString fileName)
downloadController->startDownload(url.toString());
}
/***************************************************************
* @brief
* @param
@ -178,8 +178,6 @@ void DownloadListWidget::httpFinished() // 完成下载
startRequest(urList.at(nowDownload - 1), fileName);
}
});
}
void DownloadListWidget::updateDataReadProgress(QString speedInfo, qint64 bytesRead, qint64 totalBytes)

@ -1,20 +1,19 @@
#ifndef DOWNLOADLISTWIDGET_H
#define DOWNLOADLISTWIDGET_H
#include <DBlurEffectWidget>
#include <QWidget>
#include <QTimer>
#include <DBlurEffectWidget>
#include <QNetworkAccessManager>
#include <QDesktopServices>
#include "widgets/common/downloaditem.h"
#include "backend/sparkapi.h"
#include "backend/downloadworker.h"
#include "utils/utils.h"
DWIDGET_USE_NAMESPACE
namespace Ui {
class DownloadListWidget;
}
DWIDGET_USE_NAMESPACE
class DownloadItem;
class DownloadController;
class DownloadListWidget : public DBlurEffectWidget
{
Q_OBJECT