Splashscreen ad support. Wait dialog for ad click/browser start.
[qtmads] / src / ADHERE / ADHERE_serviceplugin.cpp
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 #include "ADHERE_serviceplugin.h"
22
23 #include <QDebug>
24 #include <QXmlStreamReader>
25 #include <QFile>
26
27 #include "../qtmadsservice.h"
28 #include "../qtmadsadwidget.h"
29
30 AdhereServicePlugin::AdhereServicePlugin()
31 {
32 }
33
34 AdhereServicePlugin::~AdhereServicePlugin()
35 {
36 }
37
38
39 bool AdhereServicePlugin::parseUrlParameters(
40         const QHash<QString, QVariant> &dynamicParameters, QList<QPair<QString,QString> > &parsedParameters)
41 {
42     //qDebug() << "QtmadsService::parseUrlParameters()";
43     QHash<QString, QString>::iterator iter = parameterTags.begin();
44     QString tag;
45     QString serviceTag;
46     QString value;
47     // go through all parameters
48     while (iter != parameterTags.end()){
49         tag.append(iter.key());
50         serviceTag.append(iter.value());
51
52         // add dynamic parameters
53         if(dynamicParameters.contains(tag)){
54             value.append(dynamicParameters.value(tag).toString());
55             if(0 == tag.compare(TAG_ADTYPE)){
56                 this->reqAdType = this->getAdTypeFromString(value);
57                 if(this->reqAdType == txtAd){
58                     qDebug() << "txtAd";
59                 }
60             }
61         }
62
63         // add service parameter
64         if(0 == tag.compare(TAG_ACCOUNTID)){
65             value.append(this->accountId);
66
67         }else if(0 == tag.compare(TAG_PASSWORD)){
68             value.append(this->password);
69
70         // add default ad parameters
71         }else if(0 == tag.compare(TAG_ADTYPE)){
72             if(value.isEmpty()){
73                 value.append(this->getStringFromAdType(this->defAdType));
74                 this->reqAdType = this->defAdType;
75             }
76         }else if(0 == tag.compare(TAG_TRANSACTIONID)){
77             if(value.isEmpty())
78                 value.append(this->transactionId);
79
80         }else if(0 == tag.compare(TAG_LANGUAGE)){
81             if(value.isEmpty())
82                 value.append(this->language);
83         }
84
85         //qDebug() << "tag: " << serviceTag << " value: " << value;
86         parsedParameters.append(QPair<QString,QString>(serviceTag,value));
87         tag.clear();
88         serviceTag.clear();
89         value.clear();
90         iter++;
91     }
92
93     /* userid
94     reqParameters.append(QPair<QString,QString>("accountid","1"));
95
96     reqParameters.append(QPair<QString,QString>("password","Testi1Test2"));
97     reqParameters.append(QPair<QString,QString>("transactionid","10:20:00:1"));
98     QHash<QString, QVariant>::const_iterator iter = dynamicParameters.constFind("adtype");
99     reqParameters.append(QPair<QString,QString>("messagetype", iter.value().toString()));
100     reqParameters.append(QPair<QString,QString>("transactionid","10:20:00:1"));
101     reqParameters.append(QPair<QString,QString>("language","en"));*/
102 }
103
104
105 bool AdhereServicePlugin::parseReceivedAd(const QByteArray &response, QHash<QString, QVariant> &parsedAd)
106 {
107     qDebug() << "parseReceivedAd(): " <<  this->reqAdType;
108     if(this->reqAdType == txtAd){
109         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(txtAd)));
110         parsedAd.insert(TAG_TEXT, QVariant((QString)response));
111     }else if(this->reqAdType == imageAd){
112         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(imageAd)));
113         parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
114     }else if(this->reqAdType == imageBannerAd){
115         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(imageBannerAd)));
116         parsedAd.insert(TAG_HTML, QVariant((QString)response));
117     }else if(this->reqAdType == txtBannerAd){
118         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(txtBannerAd)));
119         parsedAd.insert(TAG_HTML, QVariant((QString)response));
120     }else if(this->reqAdType == audioAd){
121         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(audioAd)));
122         parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
123     }else if(this->reqAdType == videoAd){
124         parsedAd.insert(TAG_ADTYPE, QVariant(this->getStringFromAdType(videoAd)));
125         parsedAd.insert(TAG_CONTENT_URL, QVariant((QString)response));
126     }else{
127         qDebug() << "Parse for ad type not found";
128     }
129 }
130
131 AdType AdhereServicePlugin::getAdTypeFromString(QString adStr)
132 {
133     AdType adType = anyAd;
134
135     if(0 == adStr.compare("txt")){
136         adType = txtAd;
137     }else if(0 == adStr.compare("picturead")){
138         adType = imageAd;
139     }else if(0 == adStr.compare("mobwebtext")){
140         adType = txtBannerAd;
141     }else if(0 == adStr.compare("mobwebbanner")){
142         adType = imageBannerAd;
143     }else if(0 == adStr.compare("audioad")){
144         adType = audioAd;
145     }else if(0 == adStr.compare("videoad")){
146         adType = videoAd;
147     }
148     return adType;
149 }
150
151 QString AdhereServicePlugin::getStringFromAdType(AdType adType)
152 {
153     QString adStr;
154     switch(adType){
155         default:
156         case anyAd:
157             adStr.append("anyAd");
158             break;
159         case txtAd:
160             adStr.append("txt");
161             break;
162         case imageAd:
163             adStr.append("picturead");
164             break;
165         case txtBannerAd:
166             adStr.append("mobwebtext");
167             break;
168         case imageBannerAd:
169             adStr.append("mobwebbanner");
170             break;
171         case audioAd:
172             adStr.append("audioad");
173             break;
174         case videoAd:
175             adStr.append("videoad");
176             break;
177     }
178     return adStr;
179 }