#include <QTimer>
#include <QDir>
#include <QPluginLoader>
+#include <QMessageBox>
+#include <QAbstractButton>
#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;
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);
}
}
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());
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader.instance();
if (plugin) {
- QtmadsServiceInterface *plugLoader = qobject_cast<QtmadsServiceInterface *>(plugin);
+ QtmadsServiceLoaderInterface *plugLoader = qobject_cast<QtmadsServiceLoaderInterface *>(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{