-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcollectioninfo.cpp
More file actions
123 lines (107 loc) · 2.6 KB
/
collectioninfo.cpp
File metadata and controls
123 lines (107 loc) · 2.6 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include "collectioninfo.h"
#include <QNetworkReply>
#include <QImage>
#include <QDebug>
#include <QEventLoop>
void CollectionData::thumbReceived(QNetworkReply* reply)
{
m_collectionImage = new QImage();
m_collectionImage->loadFromData(reply->readAll());
CheckReady();
}
//void PhotoData::thumbReceived(QNetworkReply* reply)
//{
// m_image = new QImage();
// m_image->loadFromData(reply->readAll());
// photoReady();
//}
void SetData::AddPhoto(PhotoData* photo)
{
connect(photo, SIGNAL(photoReady()), this, SLOT(photoReady()));
m_photos.append(photo);
}
void SetData::photoReady()
{
// check if all photos are received
bool allReceived = true;
// foreach(PhotoData* photo, m_photos)
// {
// if (!photo->GetThumbImage())
// {
// allReceived = false;
// break;
// }
// }
if (allReceived)
{
qDebug() << "set ready: " << m_setName;
m_setReady = true;
setReady();
}
}
void CollectionData::AddSet(SetData* set)
{
connect(set, SIGNAL(setReady()), this, SLOT(setReady()));
m_sets.append(set);
}
void CollectionData::setReady()
{
qDebug() << "set ready";
CheckReady();
}
void CollectionData::CheckReady()
{
// if (m_collectionImage == 0)
// return;
bool setsReady = true;
foreach(SetData* set, m_sets)
{
if (!set->isReady())
{
setsReady = false;
break;
}
}
if (setsReady)
{
qDebug() << "collection ready: " << m_collectionName;
collectionReady();
}
}
QImage* PhotoData::GetThumbImage()
{
if (m_image)
return m_image;
QNetworkAccessManager manager;
QEventLoop loop;
QNetworkReply *reply = manager.get(QNetworkRequest(m_urlSq));
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
m_image = new QImage();
m_image->loadFromData(reply->readAll());
reply->deleteLater();
return m_image;
}
void PhotoData::downloadPhoto(const Quality& quality)
{
qDebug() << "downloading " << m_destFilePath;
QNetworkAccessManager manager;
QEventLoop loop;
QUrl url;
if (quality == Best)
url = m_urlOrig;
else url = m_urlLarge;
QNetworkReply *reply = manager.get(QNetworkRequest(url));
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SIGNAL(downloadProgress(qint64,qint64)));
QObject::connect(&manager, SIGNAL (finished(QNetworkReply*)),
this, SLOT (photoReceived(QNetworkReply*)));
loop.exec();
}
void PhotoData::photoReceived(QNetworkReply* reply)
{
QFile file(m_destFilePath);
file.open(QIODevice::WriteOnly);
file.write(reply->readAll());
reply->deleteLater();
}