diff --git a/Site/BaseFront/Front/src/correnthostimageprovider.cpp b/Site/BaseFront/Front/src/correnthostimageprovider.cpp index 04f72c9..9376dcf 100644 --- a/Site/BaseFront/Front/src/correnthostimageprovider.cpp +++ b/Site/BaseFront/Front/src/correnthostimageprovider.cpp @@ -7,21 +7,14 @@ #include "correnthostimageprovider.h" - +#include #include - -#ifdef Q_OS_WASM -#include -#include -#else -#include -#include -#include -#endif +#include namespace BaseFront { CorrentHostImageProvider::CorrentHostImageProvider() { + } CorrentHostImageProvider::~CorrentHostImageProvider() { @@ -31,7 +24,6 @@ QQuickImageResponse *CorrentHostImageProvider::requestImageResponse( const QString &id, const QSize &requestedSize) { AsyncImageResponse *response = new AsyncImageResponse(id, requestedSize); - response->run(); return response; @@ -39,97 +31,37 @@ QQuickImageResponse *CorrentHostImageProvider::requestImageResponse( AsyncImageResponse::AsyncImageResponse(const QString &id, const QSize &requestedSize) : - #ifndef Q_OS_WASM - m_manager(new QNetworkAccessManager), - #endif + m_fetch(new FetchAPI()), m_id(id), - m_requestedSize(requestedSize) { + m_requestedSize(requestedSize) { + setAutoDelete(false); } AsyncImageResponse::~AsyncImageResponse() { -#ifndef Q_OS_WASM - delete m_manager; -#endif + delete m_fetch; } QQuickTextureFactory *AsyncImageResponse::textureFactory() const { + return QQuickTextureFactory::textureFactoryForImage(m_image); } -#ifdef Q_OS_WASM -void downloadSucceeded(emscripten_fetch_t *fetch) { - auto resp = static_cast(fetch->userData); - resp->m_image = QImage::fromData(reinterpret_cast(fetch->data), - fetch->numBytes); - - QuasarAppUtils::Params::log(QString("Downloading %0 sucsess, HTTP sucsess status code: %1.\n"). - arg(fetch->url).arg(fetch->status), - QuasarAppUtils::Info); - - qDebug() << resp; - - if (resp->m_requestedSize.isValid()) - resp->m_image = resp->m_image.scaled(resp->m_requestedSize); - - resp->finished(); - - emscripten_fetch_close(fetch); // Free data associated with the fetch. -}; - -void downloadFailed(emscripten_fetch_t *fetch) { - - QuasarAppUtils::Params::log(QString("Downloading %0 failed, HTTP failure status code: %1.\n"). - arg(fetch->url).arg(fetch->status), - QuasarAppUtils::Error); - - emscripten_fetch_close(fetch); // Also free data on failure. - - auto resp = static_cast(fetch->userData); - resp->cancel(); -}; -#endif - void AsyncImageResponse::run() { -#ifdef Q_OS_WASM - emscripten_fetch_attr_t attr; - emscripten_fetch_attr_init(&attr); - attr.userData = this; - strcpy(attr.requestMethod, "GET"); - attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY; - attr.onsuccess = downloadSucceeded; - attr.onerror = downloadFailed; + m_fetch->Get(m_id); - auto stdString = m_id.toStdString(); - - emscripten_fetch(&attr, stdString.c_str()); -#else - QNetworkRequest request; - - m_manager->get(request); - - auto handleRequest= [this](QNetworkReply *reply) { - - if (reply->error() != QNetworkReply::NoError) { - QuasarAppUtils::Params::log(reply->errorString(), - QuasarAppUtils::Error); - - cancel(); - } - - auto data = reply->readAll(); + auto handleSuccessful = [this](const QString&, const QByteArray& data) { m_image = QImage::fromData(data); - - if (m_requestedSize.isValid()) - m_image = m_image.scaled(m_requestedSize); - emit finished(); - }; - connect(m_manager, &QNetworkAccessManager::finished, handleRequest); -#endif + auto handleFail = [this](const QString&, const QString&) { + cancel(); + }; + + connect(m_fetch, &FetchAPI::sigFinished, handleSuccessful); + connect(m_fetch, &FetchAPI::sigError, handleFail); } diff --git a/Site/BaseFront/Front/src/correnthostimageprovider.h b/Site/BaseFront/Front/src/correnthostimageprovider.h index eba6b7c..952e38a 100644 --- a/Site/BaseFront/Front/src/correnthostimageprovider.h +++ b/Site/BaseFront/Front/src/correnthostimageprovider.h @@ -16,6 +16,7 @@ class QNetworkAccessManager; namespace BaseFront { +class FetchAPI; class BASEFRONT_LIBRARYSHARED_EXPORT AsyncImageResponse : public QQuickImageResponse, public QRunnable { @@ -25,10 +26,9 @@ public: QQuickTextureFactory *textureFactory() const override; void run() override; -#ifndef Q_OS_WASM -private: - QNetworkAccessManager *m_manager = nullptr; -#endif + + FetchAPI *m_fetch = nullptr; + QString m_id; QImage m_image; QSize m_requestedSize; diff --git a/Site/BaseFront/Front/src/fetchapi.cpp b/Site/BaseFront/Front/src/fetchapi.cpp index 308ae87..7ed4ee7 100644 --- a/Site/BaseFront/Front/src/fetchapi.cpp +++ b/Site/BaseFront/Front/src/fetchapi.cpp @@ -15,10 +15,10 @@ namespace BaseFront { #ifdef Q_OS_WASM void downloadSucceeded(emscripten_fetch_t *fetch) { auto fetchAPI = static_cast(fetch->userData); - QByteArray data(reinterpret_cast(fetch->data), + QByteArray data(reinterpret_cast(fetch->data), fetch->numBytes); - emit fetchAPI.sigFinished(QString(%0).arg(fetch->url), data); + emit fetchAPI->sigFinished(QString("%0").arg(fetch->url), data); emscripten_fetch_close(fetch); // Free data associated with the fetch. }; @@ -32,7 +32,7 @@ void downloadFailed(emscripten_fetch_t *fetch) { emscripten_fetch_close(fetch); // Also free data on failure. auto fetchAPI = static_cast(fetch->userData); - emit fetchAPI.sigError(QString(%0).arg(fetch->url), + emit fetchAPI->sigError(QString("%0").arg(fetch->url), QString("Downloading %0 failed, HTTP failure status code: %1.\n"). arg(fetch->url).arg(fetch->status)); diff --git a/Site/BaseFront/Front/src/imageservice.cpp b/Site/BaseFront/Front/src/imageservice.cpp deleted file mode 100644 index 3e70169..0000000 --- a/Site/BaseFront/Front/src/imageservice.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// -// Copyright (C) 2020-2020 QuasarApp. -// Distributed under the lgplv3 software license, see the accompanying -// Everyone is permitted to copy and distribute verbatim copies -// of this license document, but changing it is not allowed. -// - -#include "imageservice.h" - -#include -namespace BaseFront { - -ImageService::ImageService(QObject *parent): - QObject(parent) { - _fetchAPI = new FetchAPI(this); - - connect(_fetchAPI, &FetchAPI::sigFinished(), this, &) -} - -ImageService::~ImageService() { - delete _fetchAPI; -} - -const QImage &ImageService::getImage(const QString &img) const { - -} -} diff --git a/Site/BaseFront/Front/src/imageservice.h b/Site/BaseFront/Front/src/imageservice.h deleted file mode 100644 index 26d4782..0000000 --- a/Site/BaseFront/Front/src/imageservice.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// Copyright (C) 2020-2020 QuasarApp. -// Distributed under the lgplv3 software license, see the accompanying -// Everyone is permitted to copy and distribute verbatim copies -// of this license document, but changing it is not allowed. -// - -#ifndef IMAGESERVICE_H -#define IMAGESERVICE_H -#include "BaseFront_global.h" - -#include -#include - -namespace BaseFront { -class FetchAPI; - -class BASEFRONT_LIBRARYSHARED_EXPORT ImageService: public QObject -{ - Q_OBJECT -public: - ImageService(QObject* parent = nullptr); - ~ImageService(); - - const QImage& getImage(const QString& img) const; -private slots: - void handle -private: - QHash _data; - FetchAPI * _fetchAPI; -}; -} -#endif // IMAGESERVICE_H