X-Git-Url: http://git.maemo.org/git/?p=qtmads;a=blobdiff_plain;f=src%2Fqtmadsadwidget.cpp;h=aefde025bd0e11f5e74b2a1830da9039f9eefd54;hp=22e56a90a85648f5b590d7b95408b2596ba74c25;hb=ae64559a5b66acf4142c5972348548367fe0ca96;hpb=e494cd05f1809789fd03d888c5592753d04f2031 diff --git a/src/qtmadsadwidget.cpp b/src/qtmadsadwidget.cpp index 22e56a9..aefde02 100644 --- a/src/qtmadsadwidget.cpp +++ b/src/qtmadsadwidget.cpp @@ -29,39 +29,70 @@ #include #include #include +#include +#include #include "qtmadsservice.h" -#include "qtmadsserviceinterface.h" +#include "qtmadsserviceloaderinterface.h" QtmadsAdWidget::QtmadsAdWidget(QString serviceName, AdType defaultType, quint32 groupId, AdFit fitting, QWidget *parent) : type(defaultType), adFit(fitting), QWidget(parent) { - this->loadPlugin(serviceName); + this->loadServicePlugin(serviceName); this->service->initializeService(serviceName, groupId, defaultType); adTimer = 0; + msgBox = 0; } QtmadsAdWidget::~QtmadsAdWidget() { this->clearAd(); + emit adStopped(); } void QtmadsAdWidget::startAd(quint32 adChangeIntervalInSecs) { getNewAd(); - + qDebug() << "ee"; if(0 != adChangeIntervalInSecs){ if(adTimer == 0){ adTimer = new QTimer(this); - connect(adTimer, SIGNAL(timeout()), this, SLOT(getNewAd())); }else{ + if(adTimer->isSingleShot()){ + disconnect(adTimer, SIGNAL(timeout()), this, SLOT(singleShotEnded())); + }else{ + disconnect(adTimer, SIGNAL(timeout()), this, SLOT(getNewAd())); + } adTimer->stop(); } + connect(adTimer, SIGNAL(timeout()), this, SLOT(getNewAd())); + adTimer->setSingleShot(false); adTimer->start(adChangeIntervalInSecs*1000); } } +void QtmadsAdWidget::startSingleShotAd(quint32 durationInSecs) +{ + getNewAd(); + + if(0 != durationInSecs){ + if(adTimer == 0){ + adTimer = new QTimer(this); + }else{ + if(adTimer->isSingleShot()){ + disconnect(adTimer, SIGNAL(timeout()), this, SLOT(singleShotEnded())); + }else{ + disconnect(adTimer, SIGNAL(timeout()), this, SLOT(getNewAd())); + } + adTimer->stop(); + } + connect(adTimer, SIGNAL(timeout()), this, SLOT(singleShotEnded())); + adTimer->setSingleShot(true); + adTimer->start(durationInSecs*1000); + } +} + void QtmadsAdWidget::setAdType(AdType adType) { this->type = adType; @@ -117,7 +148,15 @@ void QtmadsAdWidget::adRequestFailed() void QtmadsAdWidget::adClicked(const QUrl &url) { if(url.isValid()){ - qDebug() << "Browser opened to urli: " << url.toString(); + qDebug() << "Browser opened to url: " << url.toString(); + if(msgBox == 0){ + msgBox = new QMessageBox(QMessageBox::NoIcon, tr("Opening ad"), + tr("Opening ad to browser..."), QMessageBox::Cancel, this); + } + // just fixed wait time for now.. + startTimer(10000); + msgBox->exec(); + QDesktopServices::openUrl(url); } } @@ -128,7 +167,26 @@ void QtmadsAdWidget::clearAd() type = noAd; } -bool QtmadsAdWidget::loadPlugin(QString serviceName) +void QtmadsAdWidget::singleShotEnded() +{ + qDebug() << "singleShotEnded()"; + adTimer->stop(); + delete adTimer; + adTimer = 0; + + this->clearAd(); + emit adStopped(); +} + +void QtmadsAdWidget::timerEvent(QTimerEvent *event) +{ + qDebug() << "timerEvent()"; + this->killTimer(event->timerId()); + if(msgBox) + msgBox->close(); +} + +bool QtmadsAdWidget::loadServicePlugin(QString serviceName) { bool pluginFound = false; QDir pluginsDir(qApp->applicationDirPath()); @@ -149,13 +207,14 @@ bool QtmadsAdWidget::loadPlugin(QString serviceName) QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName)); QObject *plugin = pluginLoader.instance(); if (plugin) { - QtmadsServiceInterface *plugLoader = qobject_cast(plugin); + QtmadsServiceLoaderInterface *plugLoader = qobject_cast(plugin); this->service = plugLoader->loadService(); - if (this->service) + if (this->service){ pluginFound = true; - else{ + qDebug() << "Plugin loaded"; + }else{ qDebug() << "Plugin load failed: " << pluginLoader.errorString(); - } + } plugLoader = 0; delete plugin; }else{