玉兔远程控制 0.1.0-bate2
载入中...
搜索中...
未找到
FrmDownloadManager.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QLoggingCategory>
4#include <QScrollArea>
5#include <QUrl>
6#include <QFileInfo>
7#include <QDir>
8#include "FrmDownloadManager.h"
9
10static Q_LOGGING_CATEGORY(log, "WebBrowser.Download.Manager")
12 : QWidget{parent}
13 , m_nCount(0)
14 , m_pItems(nullptr)
15 , m_pPara(para)
16{
17 setWindowTitle(tr("Download manager"));
18 auto layout = new QVBoxLayout(this);
19 setLayout(layout);
20 auto scroll = new QScrollArea(this);
21 scroll->setWidgetResizable(true);
22 layout->addWidget(scroll);
23 QWidget *pWin = new QWidget(this);
24 scroll->setWidget(pWin);
25 m_pItems = new QVBoxLayout(this);
26 pWin->setLayout (m_pItems);
27 m_pItems->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding));
28 resize(600, 300);
29}
30
31CFrmDownloadManager::~CFrmDownloadManager()
32{
33 qDebug(log) << Q_FUNC_INFO;
34}
35
36void CFrmDownloadManager::slotDownloadRequested(QWebEngineDownloadRequest *download)
37{
38 Q_ASSERT(download && download->state() == QWebEngineDownloadRequest::DownloadRequested);
39#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
40 download->setDownloadDirectory(m_pPara->GetDownloadFolder());
41 qDebug(log) << "slotDownloadRequested:" << download->downloadDirectory() << download->downloadFileName() << download->url();
42#else
43 QFileInfo fi(download->path());
44 download->setPath(m_pPara->GetDownloadFolder() + QDir::separator() + fi.fileName());
45 qDebug(log) << "slotDownloadRequested:" << download->path() << download->url();
46#endif
47 auto pDownload = new CFrmDownload(download);
48 Add(pDownload);
49 show();
50}
51
52void CFrmDownloadManager::Add(CFrmDownload *item)
53{
54 if(!item || !m_pItems) return;
55 bool check = connect(item, &CFrmDownload::sigRemoveClicked, this, &CFrmDownloadManager::Remove);
56 Q_ASSERT(check);
57 check = connect(item, &CFrmDownload::sigSelected, this, &CFrmDownloadManager::slotSelected);
58 Q_ASSERT(check);
59 m_pItems->insertWidget(0, item, 0, Qt::AlignTop);
60 m_nCount++;
61}
62
63void CFrmDownloadManager::Remove(CFrmDownload *item)
64{
65 if(!item || !m_pItems) return;
66 m_pItems->removeWidget(item);
67 item->deleteLater();
68 m_nCount--;
69}
70
71void CFrmDownloadManager::slotSelected(CFrmDownload *item)
72{
73 for(int i = 0; i < m_pItems->count(); i++)
74 {
75 auto it = m_pItems->itemAt(i);
76 if(!it) continue;
77 auto w = it->widget();
78 if(!w) continue;
79 if(w == item) {
80 item->setFrameShadow(QFrame::Sunken);
81 }
82 }
83 item->setFrameShadow(QFrame::Raised);
84}
85
86void CFrmDownloadManager::showEvent(QShowEvent *event)
87{
88 emit sigVisible(true);
89}
90
91void CFrmDownloadManager::hideEvent(QHideEvent *event)
92{
93 emit sigVisible(false);
94}