1 |
#include "pictureview.h" |
#include "pictureview.h" |
2 |
|
|
3 |
#include <QGraphicsView> |
#include <QPainter> |
|
#include <QGraphicsScene> |
|
4 |
#include <QDebug> |
#include <QDebug> |
5 |
#include <QUrl> |
|
6 |
#include <QHttp> |
#include "httpwrapper.h" |
7 |
|
|
8 |
PictureView::PictureView(QWidget* parent) |
PictureView::PictureView(QWidget* parent) |
9 |
: QWidget(parent) |
: QWidget(parent) |
10 |
{ |
{ |
11 |
} |
} |
12 |
|
|
13 |
|
|
14 |
|
// TODO: if the picture doesn't fill the screen, fill the canvas with black before drawing the picture and |
15 |
|
// place the image mid-screen |
16 |
void PictureView::paintEvent ( QPaintEvent* event) |
void PictureView::paintEvent ( QPaintEvent* event) |
17 |
{ |
{ |
18 |
Q_UNUSED(event); |
Q_UNUSED(event); |
19 |
|
|
20 |
|
QSize s = this->size(); |
21 |
|
|
22 |
|
QBrush blackBrush(Qt::black); |
23 |
|
|
24 |
QPainter painter(this); |
QPainter painter(this); |
25 |
painter.drawPixmap(0,0,image); |
painter.fillRect( QRect(0,0,s.width(), s.height()), blackBrush); |
26 |
|
|
27 |
|
int x = 0; |
28 |
|
int y = 0; |
29 |
|
|
30 |
|
if (image.width() < s.width() ) { |
31 |
|
x = (s.width() - image.width()) / 2; |
32 |
|
} |
33 |
|
if (image.height() < s.height() ) { |
34 |
|
y = (s.height() - image.height()) / 2; |
35 |
|
} |
36 |
|
|
37 |
|
|
38 |
|
painter.drawPixmap(x,y,image); |
39 |
painter.end(); |
painter.end(); |
40 |
} |
} |
41 |
|
|
46 |
image = it.value(); |
image = it.value(); |
47 |
this->repaint(); |
this->repaint(); |
48 |
} else { |
} else { |
49 |
requestedUrl = source; |
qDebug() << "Loading file " << source; |
50 |
|
|
51 |
QUrl imageUrl(requestedUrl); |
QPixmap pixmap; |
52 |
http = new QHttp(imageUrl.host() ); |
if (source.at(0) == '/') { //local file |
53 |
http->connect(http, SIGNAL(requestFinished(int,bool)),this, SLOT(onLoad(int,bool)) ); |
pixmap = QPixmap(source); |
54 |
|
} else { |
55 |
|
QByteArray data = HttpWrapper::getSyncData(source); |
56 |
|
pixmap.loadFromData( data ); |
57 |
|
} |
58 |
|
|
59 |
http->get(imageUrl.path(), 0); |
QPixmap scaledImage = pixmap.scaled(size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
} |
|
|
} |
|
|
|
|
|
void PictureView::onLoad(int id, bool ok) |
|
|
{ |
|
|
Q_UNUSED(id); |
|
|
Q_UNUSED(ok); |
|
|
|
|
|
QByteArray data = http->readAll(); |
|
60 |
|
|
61 |
QPixmap pixmap; |
image = scaledImage; |
62 |
pixmap.loadFromData( data ); |
this->repaint(); |
|
delete http; |
|
|
|
|
|
QPixmap scaledImage = pixmap.scaledToHeight(size().height(), Qt::SmoothTransformation ); |
|
|
|
|
|
image = scaledImage; |
|
|
this->repaint(); |
|
63 |
|
|
64 |
map.insert(requestedUrl, scaledImage); |
map.insert(source, scaledImage); |
65 |
|
|
66 |
|
} |
67 |
} |
} |
68 |
|
|