Repository navigation
Expand file tree
/
Copy pathdownloadqueue.cpp
More file actions
66 lines (56 loc) · 1.93 KB
/
Copy pathdownloadqueue.cpp
File metadata and controls
66 lines (56 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "downloadqueue.h"
downloadQueue::downloadQueue(QObject *parent) : QObject(parent)
{
downloading=false;
db=new db4MusicDownloader();
queueList=db->getQueue();
q=new qqmusic();
connect(q,SIGNAL(finished()),this,SLOT(oneTaskFinished()));
connect(q,SIGNAL(progress(qint64,qint64)),this,SIGNAL(downloadProgress(qint64,qint64)));
connect(q,SIGNAL(status(QString)),this,SIGNAL(status(QString)));
np=new neteasePlaylist();
connect(np,SIGNAL(finished(int,QStringList)),q,SLOT(beginToDownload(int,QStringList)));
connect(np,SIGNAL(status(QString)),this,SIGNAL(status(QString)));
doJob();
}
void downloadQueue::doJob()
{
if(!queueList.count())
return;
downloading=true;
struct downloadQueueInfo tmp=queueList.at(0);
switch(tmp.flag)
{
case 0: //QQ音乐下载
songNameType=tmp.nameType;songQuality=tmp.quality;mp3Dir=tmp.dir;q->doJob(tmp.url);break;
case 1://网易云歌单下载(全部)
songNameType=tmp.nameType;songQuality=tmp.quality;mp3Dir=tmp.dir;np->doJob(false,tmp.url);break;
case 2://网易云歌单下载(灰掉的)
songNameType=tmp.nameType;songQuality=tmp.quality;mp3Dir=tmp.dir;np->doJob(true,tmp.url);
}
}
void downloadQueue::oneTaskFinished()
{
downloading=false;
db->deleteFromDownloadQueue(queueList.at(0).url);
queueList.removeAt(0);
emit finished(mp3Dir);
doJob();
}
void downloadQueue::insertQueue(int inFlag, int inQuality, int inNameType, QString inDir, QString inUrl)
{
struct downloadQueueInfo tmp;
tmp.flag=inFlag;
tmp.quality=inQuality;
tmp.nameType=inNameType;
tmp.dir=inDir;
tmp.url=inUrl;
db->insertDownloadQueue(inFlag,inQuality,inNameType,inDir,inUrl);
queueList.append(tmp);
if(!downloading)
doJob();
}
QList<struct downloadQueueInfo> downloadQueue::getQueue()
{
return queueList;
}