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