17 #include "croppedimagesizer.h"
19 #include "croppedimagesizerasyncworker.h"
21 #include <QNetworkAccessManager>
22 #include <QNetworkRequest>
26 CroppedImageSizer::CroppedImageSizer()
29 m_sourceSize(QSize(-1, -1)),
32 connect(
this, &CroppedImageSizer::inputParamsChanged,
this, &CroppedImageSizer::calculateSourceSize);
33 connect(
this, &CroppedImageSizer::sourceChanged,
this, &CroppedImageSizer::requestImage);
36 CroppedImageSizer::~CroppedImageSizer()
43 QUrl CroppedImageSizer::source()
const
48 void CroppedImageSizer::setSource(
const QUrl &source)
50 if (source != m_source) {
52 Q_EMIT sourceChanged();
56 qreal CroppedImageSizer::width()
const
61 void CroppedImageSizer::setWidth(qreal width)
63 if (width != m_width) {
65 Q_EMIT inputParamsChanged();
69 qreal CroppedImageSizer::height()
const
74 void CroppedImageSizer::setHeight(qreal height)
76 if (height != m_height) {
78 Q_EMIT inputParamsChanged();
82 QSize CroppedImageSizer::sourceSize()
const
87 void CroppedImageSizer::setSourceSize(
const QSize &sourceSize)
89 if (sourceSize != m_sourceSize) {
90 m_sourceSize = sourceSize;
91 Q_EMIT sourceSizeChanged();
95 void CroppedImageSizer::setImageSize(
const QSize &imageSize)
97 m_imageSize = imageSize;
99 calculateSourceSize();
102 void CroppedImageSizer::requestImage()
109 if (m_source.isValid() && qmlEngine(
this) && qmlEngine(
this)->networkAccessManager()) {
110 QNetworkRequest request(m_source);
111 QNetworkReply *reply = qmlEngine(
this)->networkAccessManager()->get(request);
112 m_worker =
new CroppedImageSizerAsyncWorker(
this, reply);
114 setSourceSize(QSize(-1, -1));
118 void CroppedImageSizer::calculateSourceSize()
120 if (m_source.isValid() && m_width > 0 && m_height > 0 && !m_worker) {
121 if (!m_imageSize.isEmpty()) {
122 const qreal ar = m_width / m_height;
123 const qreal ssar = m_imageSize.width() / (qreal)m_imageSize.height();
125 setSourceSize(QSize(m_width, 0));
127 setSourceSize(QSize(0, m_height));
130 qWarning() <<
"Invalid size for " << m_source << m_imageSize;
131 setSourceSize(QSize(0, 0));
134 setSourceSize(QSize(-1, -1));