Splashscreen ad support. Wait dialog for ad click/browser start.
[qtmads] / src / qtmadsadwidget.h
1 /*
2  * Copyright (c) 2009 Eetu Lehmusvuo.
3  *
4  * This file is part of QtMAds.
5  *
6  * QtMAds is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * QtMAds is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with QtMAds.  If not, see <http://www.gnu.org/licenses/>.
18  *
19  */
20
21 #ifndef QTMADSADWIDGET_H
22 #define QTMADSADWIDGET_H
23
24 #include <QtGui/QWidget>
25
26 #include <QUrl>
27 #include <QMainWindow>
28
29 #include <Phonon/AudioOutput>
30 #include <Phonon/MediaObject>
31 #include <Phonon/BackendCapabilities>
32 #include <Phonon/ObjectDescriptionModel>
33
34 class QtmadsService;
35 class QLabel;
36 class QBoxLayout;
37 class QWebView;
38 class QTimer;
39 class QMessageBox;
40
41 enum AdType{
42         anyAd = 1,
43     txtAd,
44         imageAd,
45         txtBannerAd,
46         imageBannerAd,
47         audioAd,
48         videoAd,
49
50         noAd
51 };
52
53 enum AdFit{
54     noFit = 1,
55     fitWidgetToAd,
56     fitAdToWidget
57 };
58
59 enum ParseState{
60     parseReady = 1,
61     parseFailed,
62     parseWaiting
63 };
64
65 static QString PLUGINS_PATH = "../plugins";
66
67 class QtmadsAdWidget : public QWidget
68 {
69     Q_OBJECT
70
71 public:
72     QtmadsAdWidget(QString service, AdType defaultType = anyAd, quint32 id = 0, AdFit fitting = noFit, QWidget *parent = 0);
73     ~QtmadsAdWidget();
74
75     void startAd(quint32 adChangeIntervalInSecs = 0);
76     void startSingleShotAd(quint32 durationInSecs);
77
78     //TODO: default getAdAsHash()?
79     virtual void getAdAsHash(QHash<QString, QVariant> &adParams) = 0;
80     virtual ParseState parseFromParameters(QHash<QString, QVariant> &ad) = 0;
81
82 protected:
83     void setAdType(AdType adType);
84     AdType adType();
85
86 private:
87     bool loadServicePlugin(QString serviceName);
88
89 public slots:
90     void getNewAd();
91     virtual void clearAd() = 0;
92     void timerEvent(QTimerEvent */*event*/);
93
94 private slots:
95     void adRequestSucceeded(QHash<QString, QVariant> &ad);
96         void adRequestFailed();
97
98     void adClicked(const QUrl &url = QUrl());
99
100     void singleShotEnded();
101
102 signals:
103     void newAdReady();
104     void newAdFailed();
105     void adStopped();
106
107 protected:
108
109     QtmadsService *service;
110
111     AdFit adFit;
112     AdType type;
113     qint32 adID;
114
115 private:
116     QTimer *adTimer;
117
118     QMessageBox *msgBox;
119
120         quint32 adClickedAmount;
121
122         //TODO: shown on screen
123         qint32 shownOnScreenStart;
124         qint32 shownOnScreenEnd;
125         qint32 shownTime;
126 };
127
128 #endif // QTMADSADWIDGET_H