diff --git a/src/qt/CSCPublicAPI/casinocoinwebapi.cpp b/src/qt/CSCPublicAPI/casinocoinwebapi.cpp index 18732ef..149755c 100644 --- a/src/qt/CSCPublicAPI/casinocoinwebapi.cpp +++ b/src/qt/CSCPublicAPI/casinocoinwebapi.cpp @@ -13,22 +13,22 @@ CasinoCoinWebAPI::CasinoCoinWebAPI( QObject*a_pParent ) void CasinoCoinWebAPI::GetActivePromotions() { - Get( s_strServerAddress + "/" + s_strServerEndpoint + "/ActivePromotions" ); + Get( s_strServerAddress + s_strServerEndpoint + "/ActivePromotions" ); } void CasinoCoinWebAPI::GetActiveCasinos() { - Get( s_strServerAddress + "/" + s_strServerEndpoint + "/ActiveCasinos" ); + Get( s_strServerAddress + s_strServerEndpoint + "/ActiveCasinos" ); } void CasinoCoinWebAPI::GetActiveNewsItems() { - Get( s_strServerAddress + "/" + s_strServerEndpoint + "/ActiveNewsItems" ); + Get( s_strServerAddress + s_strServerEndpoint + "/ActiveNewsItems" ); } void CasinoCoinWebAPI::GetActiveExchanges() { - Get( s_strServerAddress + "/" + s_strServerEndpoint + "/ActiveExchanges" ); + Get( s_strServerAddress + s_strServerEndpoint + "/ActiveExchanges" ); } void CasinoCoinWebAPI::Get( const QString& a_rUrl ) @@ -43,10 +43,11 @@ void CasinoCoinWebAPI::slotParseNetworkResponse( QNetworkReply *finished ) if ( finished->error() != QNetworkReply::NoError ) { // A communication error has occurred - emit signalNetworkError( finished->error() ); + qDebug() << finished->request().url(); + emit signalNetworkError( finished->error(), finished->request().url() ); return; } - QByteArray data = finished->readAll(); + QByteArray data = finished->readAll(); emit signalResponseReady( data ); } diff --git a/src/qt/CSCPublicAPI/casinocoinwebapi.h b/src/qt/CSCPublicAPI/casinocoinwebapi.h index 38359eb..e3b2dc4 100644 --- a/src/qt/CSCPublicAPI/casinocoinwebapi.h +++ b/src/qt/CSCPublicAPI/casinocoinwebapi.h @@ -23,7 +23,10 @@ public: signals: void signalResponseReady( const QByteArray& a_rJsonFile ); - void signalNetworkError( QNetworkReply::NetworkError a_eError ); + void signalNetworkError + ( QNetworkReply::NetworkError a_eError + , const QUrl a_rFailedUrl + ); public slots: void slotParseNetworkResponse( QNetworkReply *finished ); diff --git a/src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp b/src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp index 05202a7..bd75e9b 100644 --- a/src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp +++ b/src/qt/CSCPublicAPI/casinocoinwebapiparser.cpp @@ -5,6 +5,8 @@ #include #include +#include +#include CasinoCoinWebAPIParser::CasinoCoinWebAPIParser( QObject* a_pParent ) : QObject(a_pParent) @@ -23,24 +25,37 @@ void CasinoCoinWebAPIParser::slotParseAnswer( const QByteArray& a_rJsonFile ) QJsonObject jsonObjectResult = docAsObject.find( "Result" ).value().toObject(); if ( jsonObjectResult.find( "ActivePromotions" ).value().isArray() ) { + StoreFile( "ActivePromotions", a_rJsonFile ); ParsePromotions( docAsObject ); } else if ( jsonObjectResult.find( "ActiveNewsItems" ).value().isArray() ) { + StoreFile( "ActiveNewsItems", a_rJsonFile ); ParseNewsItems( docAsObject ); } else if ( jsonObjectResult.find( "ActiveCasinos" ).value().isArray() ) { + StoreFile( "ActiveCasinos", a_rJsonFile ); ParseCasinos( docAsObject ); } else if ( jsonObjectResult.find( "ActiveExchanges" ).value().isArray() ) { + StoreFile( "ActiveExchanges", a_rJsonFile ); ParseExchanges( docAsObject ); } } } } +void CasinoCoinWebAPIParser::slotNetworkError( QNetworkReply::NetworkError a_eError + , const QUrl a_rFailedUrl + ) +{ + qDebug() << "network error: " << a_eError; + QString strAccessedUrl = a_rFailedUrl.toString().split("/").last(); + slotParseAnswer( ReadFile( strAccessedUrl ) ); +} + void CasinoCoinWebAPIParser::ParsePromotions( const QJsonObject& a_rJsonPromotions ) { qDebug() << "ParsePromotions"; @@ -64,3 +79,41 @@ void CasinoCoinWebAPIParser::ParseNewsItems( const QJsonObject& a_rJsonNewsItems qDebug() << "Coming soon - ParseNewsItems"; qDebug() << a_rJsonNewsItems; } + +QByteArray CasinoCoinWebAPIParser::ReadFile( QString a_strSourcePath ) +{ + QByteArray strAnswer; + if ( !QDir( "offlineData" ).exists() ) + { + QDir().mkdir( "offlineData" ); + } + QFile fileOutput( QDir( "offlineData" ).absoluteFilePath( a_strSourcePath ) ); + if ( !fileOutput.open( QIODevice::ReadOnly ) ) + { + qWarning() << "cannot open file to read: " << QDir::current().relativeFilePath( a_strSourcePath ); + } + else + { + strAnswer = fileOutput.readAll(); + fileOutput.close(); + } + return strAnswer; +} + +void CasinoCoinWebAPIParser::StoreFile( QString a_strDestinationPath, const QByteArray& a_rJsonFile ) +{ + if ( !QDir( "offlineData" ).exists() ) + { + QDir().mkdir( "offlineData" ); + } + QFile fileOutput( QDir( "offlineData" ).absoluteFilePath( a_strDestinationPath ) ); + if ( !fileOutput.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) + { + qWarning() << "cannot open file to write: " << QDir::current().relativeFilePath( a_strDestinationPath ); + } + else + { + fileOutput.write( a_rJsonFile ); + fileOutput.close(); + } +} diff --git a/src/qt/CSCPublicAPI/casinocoinwebapiparser.h b/src/qt/CSCPublicAPI/casinocoinwebapiparser.h index 3ca8bb4..c13f9b5 100644 --- a/src/qt/CSCPublicAPI/casinocoinwebapiparser.h +++ b/src/qt/CSCPublicAPI/casinocoinwebapiparser.h @@ -6,6 +6,8 @@ #include "jsonactivepromotionsparser.h" #include "jsonsingleactivepromotion.h" +#include + class CasinoCoinWebAPIParser : public QObject { Q_OBJECT @@ -21,12 +23,18 @@ signals: public slots: void slotParseAnswer( const QByteArray& a_rJsonFile ); - + void slotNetworkError + ( QNetworkReply::NetworkError a_eError + , const QUrl a_rFailedUrl + ); private: void ParsePromotions( const QJsonObject& a_rJsonPromotions ); void ParseCasinos ( const QJsonObject& a_rJsonCasinos ); void ParseExchanges ( const QJsonObject& a_rJsonExchanges ); void ParseNewsItems ( const QJsonObject& a_rJsonNewsItems ); + + QByteArray ReadFile( QString a_strSourcePath ); + void StoreFile( QString a_strDestinationPath, const QByteArray& a_rJsonFile ); }; #endif // CASINOCOINWEBAPIPARSER_H diff --git a/src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp b/src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp index 0cfb464..a200460 100644 --- a/src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp +++ b/src/qt/CSCPublicAPI/jsonactivepromotionsparser.cpp @@ -1,4 +1,5 @@ #include "jsonactivepromotionsparser.h" +#include "../qtquick_controls/cpp/qmlimageprovider.h" #include @@ -24,7 +25,7 @@ void JsonActivePromotionsParser::ResolvePromotionsArray() { if ( singleCasinoDescriptor.isObject() ) { - m_aActiveCasinos.append( JsonSingleActivePromotion( singleCasinoDescriptor.toObject() ) ); + m_aActivePromotions.append( JsonSingleActivePromotion( singleCasinoDescriptor.toObject() ) ); } } } @@ -33,10 +34,21 @@ void JsonActivePromotionsParser::ResolvePromotionsArray() const QList& JsonActivePromotionsParser::GetPromotions() const { - return m_aActiveCasinos; + return m_aActivePromotions; } QList& JsonActivePromotionsParser::GetPromotions() { - return m_aActiveCasinos; + return m_aActivePromotions; +} + +void JsonActivePromotionsParser::AddImagesToPool( QmlImageProvider* a_pImageProvider ) +{ + if ( a_pImageProvider ) + { + foreach( JsonSingleActivePromotion oPromotion, m_aActivePromotions ) + { + a_pImageProvider->AddToImagePool( oPromotion.GetImageName(), oPromotion.GetAdvertImage() ); + } + } } diff --git a/src/qt/CSCPublicAPI/jsonactivepromotionsparser.h b/src/qt/CSCPublicAPI/jsonactivepromotionsparser.h index bad1b23..03ae710 100644 --- a/src/qt/CSCPublicAPI/jsonactivepromotionsparser.h +++ b/src/qt/CSCPublicAPI/jsonactivepromotionsparser.h @@ -8,6 +8,8 @@ #include "jsonsingleactivepromotion.h" +class QmlImageProvider; + class JsonActivePromotionsParser : public QJsonObject { public: @@ -17,11 +19,13 @@ public: const QList& GetPromotions() const; QList& GetPromotions(); -private: + void AddImagesToPool( QmlImageProvider* a_pImageProvider ); + +private: void ResolvePromotionsArray(); - QList m_aActiveCasinos; + QList m_aActivePromotions; }; #endif // JSONACTIVEPROMOTIONSPARSER_H diff --git a/src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp b/src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp index 3f7ae8d..52c8c05 100644 --- a/src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp +++ b/src/qt/CSCPublicAPI/jsonsingleactivepromotion.cpp @@ -14,40 +14,21 @@ JsonSingleActivePromotion::JsonSingleActivePromotion() JsonSingleActivePromotion::JsonSingleActivePromotion( const QJsonObject& a_rOther ) : QJsonObject( a_rOther ) { + m_strImageName = find( "promotion_title" ).value().toString().remove( GetRestrictedCharacters() ); StoreImage(); } -QString JsonSingleActivePromotion::GetImagePath() const +QRegExp JsonSingleActivePromotion::GetRestrictedCharacters() { - return QString( "file://" + QDir::currentPath() + "/" + GetImageRelativePath() ); + return QRegExp( "[<,>|\\:()&;#?*% ]" ); } -QString JsonSingleActivePromotion::GetImageRelativePath() const +void JsonSingleActivePromotion::StoreImage() { - return QString( "adverts/" + find( "promotion_title" ).value().toString().remove( " " ) + "." + find( "image_mime_type" ).value().toString().split( "/" ).last() ); -} - -QString JsonSingleActivePromotion::StoreImage() -{ - QString strReturn = QString(); if ( find( "image_mime_type" ).value().toString().split( "/" ).first().contains( "image" ) ) { - QString strFileName = GetImageRelativePath(); QByteArray binaryData = QByteArray::fromBase64( find( "promotion_image" ).value().toString().toLocal8Bit() ); - - if ( !QDir( "adverts" ).exists() ) - { - QDir().mkdir( "adverts" ); - } - QFile imageOutputFile( strFileName ); - QImage outputImage = QImage::fromData( binaryData, "JPEG" ); - if ( imageOutputFile.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) - { - outputImage.save( &imageOutputFile, 0 ); - imageOutputFile.close(); - strReturn = strFileName; - } + m_oAdvertImage = QImage::fromData( binaryData ); } - return strReturn; } diff --git a/src/qt/CSCPublicAPI/jsonsingleactivepromotion.h b/src/qt/CSCPublicAPI/jsonsingleactivepromotion.h index b2429b1..8c995c8 100644 --- a/src/qt/CSCPublicAPI/jsonsingleactivepromotion.h +++ b/src/qt/CSCPublicAPI/jsonsingleactivepromotion.h @@ -5,6 +5,8 @@ #include #include +#include + class JsonSingleActivePromotion : public QJsonObject { public: @@ -12,11 +14,16 @@ public: JsonSingleActivePromotion( const QJsonObject& a_rOther ); virtual ~JsonSingleActivePromotion(){} - QString GetImagePath() const; - + QString GetImageName() const{ return m_strImageName; } + QImage GetAdvertImage() const { return m_oAdvertImage; } private: - QString GetImageRelativePath() const; - QString StoreImage(); + void StoreImage(); + + static QRegExp GetRestrictedCharacters(); + + QString m_strImageName; + QImage m_oAdvertImage; + }; #endif // JSONSINGLEACTIVEPROMOTION_H diff --git a/src/qt/qtquick_controls/cpp/guibannercontrol.cpp b/src/qt/qtquick_controls/cpp/guibannercontrol.cpp index 50cd75a..eaee5dd 100644 --- a/src/qt/qtquick_controls/cpp/guibannercontrol.cpp +++ b/src/qt/qtquick_controls/cpp/guibannercontrol.cpp @@ -30,7 +30,7 @@ void GUIBannerControl::InitializeAdvertsView( GUIBannerListView* a_pView ) } } -void GUIBannerControl::slotPopulateFromWeb( JsonActivePromotionsParser* a_pActivePromotions ) +void GUIBannerControl::slotPopulateListView( JsonActivePromotionsParser* a_pActivePromotions ) { if ( m_pAdvertsView ) { @@ -39,13 +39,3 @@ void GUIBannerControl::slotPopulateFromWeb( JsonActivePromotionsParser* a_pActiv } } -void GUIBannerControl::slotPopulateLocally() -{ - if ( m_pAdvertsView ) - { - QmlBannerListModel* pAdvertsModel = new QmlBannerListModel( 0 ); - m_pAdvertsView->SetModel( pAdvertsModel ); - qDebug() << "Coming soon"; - } -} - diff --git a/src/qt/qtquick_controls/cpp/guibannercontrol.h b/src/qt/qtquick_controls/cpp/guibannercontrol.h index 3812814..b013449 100644 --- a/src/qt/qtquick_controls/cpp/guibannercontrol.h +++ b/src/qt/qtquick_controls/cpp/guibannercontrol.h @@ -18,8 +18,7 @@ public: GUIBannerListView* GetAdvertsView() const { return m_pAdvertsView; } public slots: - void slotPopulateFromWeb( JsonActivePromotionsParser* a_pActivePromotions ); - void slotPopulateLocally(); + void slotPopulateListView( JsonActivePromotionsParser* a_pActivePromotions ); signals: diff --git a/src/qt/qtquick_controls/cpp/guibannerwidget.cpp b/src/qt/qtquick_controls/cpp/guibannerwidget.cpp index 9127f30..f466877 100644 --- a/src/qt/qtquick_controls/cpp/guibannerwidget.cpp +++ b/src/qt/qtquick_controls/cpp/guibannerwidget.cpp @@ -20,10 +20,12 @@ GUIBannerWidget::GUIBannerWidget(QWidget *parent) , m_pBannerControl( 0 ) , m_pWebApiParserTemporary( new CasinoCoinWebAPIParser( this ) ) , m_pWebApiTemporary( new CasinoCoinWebAPI( this ) ) + , m_pQmlImageProvider( 0 ) { registerCustomQmlTypes(); connect( m_pWebApiTemporary, SIGNAL( signalResponseReady(const QByteArray&)), m_pWebApiParserTemporary, SLOT( slotParseAnswer(const QByteArray&)), Qt::UniqueConnection ); - connect( m_pWebApiTemporary, SIGNAL( signalNetworkError(QNetworkReply::NetworkError)), this, SLOT( slotNetworkError(QNetworkReply::NetworkError)), Qt::UniqueConnection ); + connect( m_pWebApiTemporary, SIGNAL( signalNetworkError(QNetworkReply::NetworkError,const QUrl)), m_pWebApiParserTemporary, SLOT( slotNetworkError(QNetworkReply::NetworkError,const QUrl)), Qt::UniqueConnection ); + connect( m_pWebApiParserTemporary, SIGNAL( signalActivePromotionsParsed(JsonActivePromotionsParser*)), this, SLOT( slotPopulateFromWeb(JsonActivePromotionsParser*)), Qt::UniqueConnection ); } GUIBannerWidget::~GUIBannerWidget() @@ -36,14 +38,18 @@ void GUIBannerWidget::registerCustomQmlTypes() qmlRegisterType("CasinoCoinControls", 1, 0, "GUIBannerControl" ); qmlRegisterType("CasinoCoinControls", 1, 0, "GUIBannerListView" ); qmlRegisterType("CasinoCoinControls", 1, 0, "QmlBannerListModel" ); - qmlRegisterType("CasinoCoinControls", 1, 0, "QmlImageProvider" ); } QWidget* GUIBannerWidget::dockQmlToWidget() { QQuickView* pBannerWindow = new QQuickView; pBannerWindow->setSource( QUrl( QStringLiteral( "qrc:/qml/qtquick_controls/qml/QmlGUIBannerWindow.qml" ) ) ); - + QQmlEngine* pEngine = pBannerWindow->engine(); + if ( pEngine ) + { + m_pQmlImageProvider = new QmlImageProvider(); + pEngine->addImageProvider( "advertImages", m_pQmlImageProvider ); + } QWidget* pPlaceHolder = QWidget::createWindowContainer( pBannerWindow, this ); pPlaceHolder->setMinimumSize( 445, 120 ); pPlaceHolder->setMaximumSize( 445, 120 ); @@ -54,10 +60,6 @@ QWidget* GUIBannerWidget::dockQmlToWidget() m_pBannerControl = pRootObject->findChild(); if ( m_pBannerControl ) { - if ( m_pWebApiParserTemporary ) - { - connect( m_pWebApiParserTemporary, SIGNAL( signalActivePromotionsParsed(JsonActivePromotionsParser*)), m_pBannerControl, SLOT( slotPopulateFromWeb(JsonActivePromotionsParser*)), Qt::UniqueConnection ); - } m_pBannerControl->setWidth( ( 115 * 3 ) + ( 4 * 10 ) + 60 ); m_pBannerControl->setHeight( 115 ); } @@ -74,15 +76,14 @@ void GUIBannerWidget::PopulateBannerFromWeb() } } -void GUIBannerWidget::PopulateBannerLocally() +void GUIBannerWidget::slotPopulateFromWeb( JsonActivePromotionsParser* a_pPromotionsParser ) { + if ( a_pPromotionsParser ) + { + a_pPromotionsParser->AddImagesToPool( m_pQmlImageProvider ); + } if ( m_pBannerControl ) { - m_pBannerControl->slotPopulateLocally(); + m_pBannerControl->slotPopulateListView( a_pPromotionsParser ); } } - -void GUIBannerWidget::slotNetworkError( QNetworkReply::NetworkError a_eError ) -{ - PopulateBannerLocally(); -} diff --git a/src/qt/qtquick_controls/cpp/guibannerwidget.h b/src/qt/qtquick_controls/cpp/guibannerwidget.h index e3a4e3e..0d4da0a 100644 --- a/src/qt/qtquick_controls/cpp/guibannerwidget.h +++ b/src/qt/qtquick_controls/cpp/guibannerwidget.h @@ -7,6 +7,8 @@ class CasinoCoinWebAPIParser; class CasinoCoinWebAPI; class GUIBannerControl; +class QmlImageProvider; +class JsonActivePromotionsParser; class GUIBannerWidget : public QWidget { @@ -28,9 +30,9 @@ private: CasinoCoinWebAPIParser* m_pWebApiParserTemporary; CasinoCoinWebAPI* m_pWebApiTemporary; - + QmlImageProvider* m_pQmlImageProvider; private slots: - void slotNetworkError( QNetworkReply::NetworkError a_eError ); + void slotPopulateFromWeb( JsonActivePromotionsParser* a_pPromotionsParser ); }; #endif // GUIBANNERWIDGET_H diff --git a/src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp b/src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp index e1245fe..6b01164 100644 --- a/src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp +++ b/src/qt/qtquick_controls/cpp/qmlbannerlistitem.cpp @@ -8,7 +8,7 @@ QmlBannerListItem::QmlBannerListItem(QString a_strImageSource, QString a_strDest } QmlBannerListItem::QmlBannerListItem( const JsonSingleActivePromotion& a_rCasinoDescription, QObject* a_pParent ) - : QmlListItem( QVariant( a_rCasinoDescription.GetImagePath() ), a_rCasinoDescription.find( "access_url" ).value().toVariant(), a_rCasinoDescription.find( "description" ).value().toVariant(), a_pParent ) + : QmlListItem( QVariant( a_rCasinoDescription.GetImageName() ), a_rCasinoDescription.find( "access_url" ).value().toVariant(), a_rCasinoDescription.find( "description" ).value().toVariant(), a_pParent ) { } diff --git a/src/qt/qtquick_controls/cpp/qmlimageprovider.cpp b/src/qt/qtquick_controls/cpp/qmlimageprovider.cpp index fc052c8..35eedbe 100644 --- a/src/qt/qtquick_controls/cpp/qmlimageprovider.cpp +++ b/src/qt/qtquick_controls/cpp/qmlimageprovider.cpp @@ -1,39 +1,34 @@ #include "qmlimageprovider.h" -QmlImageProvider::QmlImageProvider( QQuickItem* a_pParent ) - : QQuickPaintedItem( a_pParent ) -{ +#include -} - -QmlImageProvider::QmlImageProvider( const QImage& a_rImage, QQuickItem* a_pParent ) - : QQuickPaintedItem( a_pParent ) - , m_oImage( a_rImage ) +QmlImageProvider::QmlImageProvider() + : QQuickImageProvider( QQuickImageProvider::Image ) { } -void QmlImageProvider::SetImage( const QImage& a_rImage ) +void QmlImageProvider::AddToImagePool( QString a_strImageID, const QImage& a_rImage ) { - if ( a_rImage != m_oImage ) + m_aImagePool.insert( a_strImageID, a_rImage ); +} + +void QmlImageProvider::AddToImagePool( const QMap& a_aImages ) +{ + QMapIterator iter( a_aImages ); + while( iter.hasNext() ) { - m_oImage = QImage( a_rImage ); - emit signalImageChanged(); + iter.next(); + AddToImagePool( iter.key(), iter.value() ); } } -void QmlImageProvider::paint( QPainter* a_pPainter ) +QImage QmlImageProvider::requestImage( const QString& a_rImageID, QSize* a_pSize, const QSize& a_ra_rRequestedSize ) { - if ( a_pPainter ) + QImage oImage( m_aImagePool.value( a_rImageID ) ); + if ( a_pSize ) { - a_pPainter->drawImage( QPoint( 0, 0 ), m_oImage ); - } -} - -void QmlImageProvider::paintImage( const QImage& a_rImage, QPainter* a_pPainter ) -{ - SetImage( a_rImage ); - if ( a_pPainter ) - { - a_pPainter->drawImage( QPoint( 0, 0 ), m_oImage ); + a_pSize->setWidth( oImage.width() ); + a_pSize->setHeight( oImage.height() ); } + return oImage; } diff --git a/src/qt/qtquick_controls/cpp/qmlimageprovider.h b/src/qt/qtquick_controls/cpp/qmlimageprovider.h index e7b7c8d..330a3ee 100644 --- a/src/qt/qtquick_controls/cpp/qmlimageprovider.h +++ b/src/qt/qtquick_controls/cpp/qmlimageprovider.h @@ -1,26 +1,28 @@ #ifndef QMLIMAGEPROVIDER_H #define QMLIMAGEPROVIDER_H -#include +#include #include -#include -class QmlImageProvider : public QQuickPaintedItem +class QmlImageProvider : public QQuickImageProvider { - Q_OBJECT - - Q_PROPERTY( QImage p_oImage MEMBER m_oImage NOTIFY signalImageChanged ) public: - explicit QmlImageProvider( QQuickItem* a_pParent = 0 ); - explicit QmlImageProvider( const QImage& a_rImage, QQuickItem* a_pParent = 0 ); + explicit QmlImageProvider(); - void SetImage( const QImage& a_rImage ); - virtual void paint( QPainter* a_pPainter ); - void paintImage( const QImage& a_rImage, QPainter* a_pPainter ); + void AddToImagePool( QString a_strImageID, const QImage& a_rImage ); + void AddToImagePool( const QMap& a_aImages ); + + virtual QImage requestImage + ( const QString& a_rImageID + , QSize* a_pSize + , const QSize& a_rRequestedSize + ); signals: - void signalImageChanged(); + +public slots: + private: - QImage m_oImage; + QMap m_aImagePool; }; #endif // QMLIMAGEPROVIDER_H diff --git a/src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml b/src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml index ce2ee41..273baa7 100644 --- a/src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml +++ b/src/qt/qtquick_controls/qml/QmlGUIBannerListView.qml @@ -46,18 +46,11 @@ GUIBannerListView Image { id: id_advertisementImage - source: m_imageSource + source: "image://advertImages/" + m_imageSource scale: ( id_listElement.width / width ) anchors.centerIn: id_listElement } - // coming soon -// QmlImageProvider -// { -// id: id_advertisementImage -// scale: ( id_listElement.width / width ) -// anchors.centerIn: id_listElement -// } MouseArea { id: id_leftItemMouseArea