void QDeclarativeBorderImage::sciRequestFinished() { Q_D(QDeclarativeBorderImage); d->redirectCount++; if (d->redirectCount < BORDERIMAGE_MAX_REDIRECT) { QVariant redirect = d->sciReply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (redirect.isValid()) { QUrl url = d->sciReply->url().resolved(redirect.toUrl()); setSource(url); return; } } d->redirectCount=0; if (d->sciReply->error() != QNetworkReply::NoError) { d->status = Error; d->sciReply->deleteLater(); d->sciReply = 0; emit statusChanged(d->status); } else { QDeclarativeGridScaledImage sci(d->sciReply); d->sciReply->deleteLater(); d->sciReply = 0; setGridScaledImage(sci); } }
void QQuickBorderImage::load() { Q_D(QQuickBorderImage); if (d->url.isEmpty()) { d->pix.clear(this); d->status = Null; setImplicitSize(0, 0); emit statusChanged(d->status); if (d->progress != 0.0) { d->progress = 0.0; emit progressChanged(d->progress); } if (sourceSize() != d->oldSourceSize) { d->oldSourceSize = sourceSize(); emit sourceSizeChanged(); } pixmapChange(); return; } else { if (d->url.path().endsWith(QLatin1String("sci"))) { QString lf = QQmlFile::urlToLocalFileOrQrc(d->url); if (!lf.isEmpty()) { QFile file(lf); file.open(QIODevice::ReadOnly); setGridScaledImage(QQuickGridScaledImage(&file)); return; } else { if (d->progress != 0.0) { d->progress = 0.0; emit progressChanged(d->progress); } d->status = Loading; QNetworkRequest req(d->url); d->sciReply = qmlEngine(this)->networkAccessManager()->get(req); qmlobject_connect(d->sciReply, QNetworkReply, SIGNAL(finished()), this, QQuickBorderImage, SLOT(sciRequestFinished())) } } else {
void QDeclarativeBorderImage::load() { Q_D(QDeclarativeBorderImage); if (d->progress != 0.0) { d->progress = 0.0; emit progressChanged(d->progress); } if (d->url.isEmpty()) { d->pix.clear(); d->status = Null; setImplicitWidth(0); setImplicitHeight(0); emit statusChanged(d->status); update(); } else { d->status = Loading; if (d->url.path().endsWith(QLatin1String("sci"))) { #ifndef QT_NO_LOCALFILE_OPTIMIZED_QML QString lf = QDeclarativeEnginePrivate::urlToLocalFileOrQrc(d->url); if (!lf.isEmpty()) { QFile file(lf); file.open(QIODevice::ReadOnly); setGridScaledImage(QDeclarativeGridScaledImage(&file)); } else #endif { QNetworkRequest req(d->url); d->sciReply = qmlEngine(this)->networkAccessManager()->get(req); static int sciReplyFinished = -1; static int thisSciRequestFinished = -1; if (sciReplyFinished == -1) { sciReplyFinished = QNetworkReply::staticMetaObject.indexOfSignal("finished()"); thisSciRequestFinished = QDeclarativeBorderImage::staticMetaObject.indexOfSlot("sciRequestFinished()"); } QMetaObject::connect(d->sciReply, sciReplyFinished, this, thisSciRequestFinished, Qt::DirectConnection); } } else { d->pix.load(qmlEngine(this), d->url, d->async); if (d->pix.isLoading()) { d->pix.connectFinished(this, SLOT(requestFinished())); d->pix.connectDownloadProgress(this, SLOT(requestProgress(qint64,qint64))); } else { QSize impsize = d->pix.implicitSize(); setImplicitWidth(impsize.width()); setImplicitHeight(impsize.height()); if (d->pix.isReady()) { d->status = Ready; } else { d->status = Error; qmlInfo(this) << d->pix.error(); } d->progress = 1.0; emit statusChanged(d->status); emit progressChanged(d->progress); update(); } } } emit statusChanged(d->status); }