24 #include <QFile> |
22 #include <QFile> |
25 #endif |
23 #endif |
26 #ifdef Q_OS_SYMBIAN |
24 #ifdef Q_OS_SYMBIAN |
27 #include "smfclientsymbian.h" |
25 #include "smfclientsymbian.h" |
28 #else |
26 #else |
29 #include "smfclientqt.h" |
27 #include "SmfClientQt.h" |
30 #endif |
28 #endif |
31 SmfPostProviderPrivate::SmfPostProviderPrivate(SmfPostProvider* postProvider) |
29 SmfPostProviderPrivate::SmfPostProviderPrivate(SmfPostProvider* postProvider) |
32 : m_postProvider(postProvider),m_postList(NULL) |
30 : m_postProvider(postProvider),m_postList(NULL) |
33 { |
31 { |
34 //private impl for symbian |
32 //private impl for symbian |
35 #ifdef Q_OS_SYMBIAN |
33 #ifdef Q_OS_SYMBIAN |
36 m_SmfClientPrivate = CSmfClientSymbian::NewL(this); |
34 m_SmfClientPrivate = CSmfClientSymbian::NewL(this); |
37 #endif |
35 #endif |
38 } |
36 } |
39 SmfPostProviderPrivate::~SmfPostProviderPrivate() |
37 SmfPostProviderPrivate::~SmfPostProviderPrivate() |
59 |
57 |
60 m_baseProvider = m_postProvider->getProvider(); |
58 m_baseProvider = m_postProvider->getProvider(); |
61 //serialize start |
59 //serialize start |
62 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
60 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
63 write<<*(m_baseProvider); |
61 write<<*(m_baseProvider); |
|
62 m_pageInfoFlag = 1; |
|
63 write<<m_pageInfoFlag; |
|
64 write<<pageNum; |
|
65 write<<perPage; |
64 //TODO:- use different opcode incase post retreival is for other user |
66 //TODO:- use different opcode incase post retreival is for other user |
65 //serialize SmfContact if post retrieval is for other user |
67 //serialize SmfContact if post retrieval is for other user |
|
68 |
66 if(user) |
69 if(user) |
67 { |
70 { |
|
71 //m_xtraInfoFlag = 1; |
|
72 //write<<m_xtraInfoFlag; |
68 //now serialize SmfContact |
73 //now serialize SmfContact |
69 write<<*(user); |
74 m_xtraInfoSerialized.clear(); |
|
75 QDataStream Xtrawrite(&m_xtraInfoSerialized,QIODevice::WriteOnly); |
|
76 Xtrawrite<<*(user); |
|
77 m_xtraInfoFlag = m_xtraInfoSerialized.size(); |
|
78 write<<m_xtraInfoFlag; |
|
79 } |
|
80 else |
|
81 { |
|
82 m_xtraInfoFlag = 0; |
|
83 write<<m_xtraInfoFlag; |
70 } |
84 } |
71 //serialize end |
85 //serialize end |
72 QString intfName(postProviderInterface); |
86 intfName.clear(); |
73 |
87 intfName.append(postProviderInterface); |
74 //call private impl's send method |
88 int maxAllocation = MaxSmfPostSize*perPage; |
75 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactRetrievePosts); |
89 //call private impl's send method |
|
90 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactRetrievePosts,maxAllocation,m_xtraInfoSerialized); |
76 |
91 |
77 } |
92 } |
78 |
93 |
79 /** |
94 /** |
80 * Updates a post to own area, the success of the post can be checked with signal |
95 * Updates a post to own area, the success of the post can be checked with signal |
82 * @param postData data to be posted |
97 * @param postData data to be posted |
83 * @param location location data |
98 * @param location location data |
84 */ |
99 */ |
85 void SmfPostProviderPrivate::post(SmfPost& postData,SmfLocation& location) |
100 void SmfPostProviderPrivate::post(SmfPost& postData,SmfLocation& location) |
86 { |
101 { |
|
102 m_xtraInfoSerialized.clear(); |
87 m_baseProvider = m_postProvider->getProvider(); |
103 m_baseProvider = m_postProvider->getProvider(); |
88 //serialize start |
104 //serialize start |
89 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
105 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
90 //SmfProvider |
106 //SmfProvider |
91 write<<*(m_baseProvider); |
107 write<<*(m_baseProvider); |
|
108 m_pageInfoFlag = 0; |
|
109 write<<m_pageInfoFlag; |
|
110 //m_xtraInfoFlag = 1; |
|
111 //write<<m_xtraInfoFlag; |
|
112 |
|
113 QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly); |
92 //SmfPost |
114 //SmfPost |
93 write<<postData; |
115 xtraInfoWrite<<postData; |
94 //SmfPlace |
116 //SmfPlace |
95 write<<location; |
117 xtraInfoWrite<<location; |
96 |
118 m_xtraInfoFlag = m_xtraInfoSerialized.size(); |
|
119 write<<m_xtraInfoFlag; |
97 //serialize end |
120 //serialize end |
98 QString intfName(postProviderInterface); |
121 QString intfName(postProviderInterface); |
99 |
122 //we are not mentioning the max size, as we'll receive only bool |
100 //call private impl's send method |
123 //call private impl's send method |
101 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPost); |
124 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPost,10,m_xtraInfoSerialized); |
102 } |
125 } |
103 /** |
126 /** |
104 * Updates the last post to own area with new data, the success of the post can be checked with signal |
127 * Updates the last post to own area with new data, the success of the post can be checked with signal |
105 * updatePostFinished() signal |
128 * updatePostFinished() signal |
106 * @param postData edited/new data to be posted |
129 * @param postData edited/new data to be posted |
111 m_baseProvider = m_postProvider->getProvider(); |
134 m_baseProvider = m_postProvider->getProvider(); |
112 //serialize start |
135 //serialize start |
113 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
136 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
114 //SmfProvider |
137 //SmfProvider |
115 write<<*(m_baseProvider); |
138 write<<*(m_baseProvider); |
|
139 m_pageInfoFlag = 0; |
|
140 write<<m_pageInfoFlag; |
|
141 //m_xtraInfoFlag = 1; |
|
142 //write<<m_xtraInfoFlag; |
|
143 |
|
144 QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly); |
116 //SmfPost |
145 //SmfPost |
117 write<<postData; |
146 xtraInfoWrite<<postData; |
118 |
147 m_xtraInfoFlag = m_xtraInfoSerialized.size(); |
|
148 write<<m_xtraInfoFlag; |
119 //serialize end |
149 //serialize end |
120 QString intfName(postProviderInterface); |
150 QString intfName(postProviderInterface); |
121 |
151 //we are not mentioning the max size, as we'll receive only bool |
122 //call private impl's send method |
152 //call private impl's send method |
123 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactUpdatePost); |
153 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactUpdatePost,10,m_xtraInfoSerialized); |
124 } |
154 } |
125 |
155 |
126 /** |
156 /** |
127 * Updates a post to a particular Smf contact. the success of the post can be checked with signal |
157 * Updates a post to a particular Smf contact. the success of the post can be checked with signal |
128 * updatePostFinished() signal. |
158 * updatePostFinished() signal. |
130 * @param contact contact to which the post is to be directed |
160 * @param contact contact to which the post is to be directed |
131 * @param location location data |
161 * @param location location data |
132 */ |
162 */ |
133 void SmfPostProviderPrivate::postDirected(SmfPost& postData,SmfContact& contact,SmfLocation* location) |
163 void SmfPostProviderPrivate::postDirected(SmfPost& postData,SmfContact& contact,SmfLocation* location) |
134 { |
164 { |
|
165 |
135 m_baseProvider = m_postProvider->getProvider(); |
166 m_baseProvider = m_postProvider->getProvider(); |
136 //serialize start |
167 //serialize start |
137 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
168 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
138 //SmfProvider |
169 //SmfProvider |
139 write<<*(m_baseProvider); |
170 write<<*(m_baseProvider); |
|
171 m_pageInfoFlag = 0; |
|
172 write<<m_pageInfoFlag; |
|
173 //m_xtraInfoFlag = 1; |
|
174 //write<<m_xtraInfoFlag; |
|
175 |
|
176 QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly); |
140 //SmfPost |
177 //SmfPost |
141 write<<postData; |
178 xtraInfoWrite<<postData; |
142 //SmfContact |
179 //SmfContact |
143 write<<contact; |
180 xtraInfoWrite<<contact; |
144 //SmfPlace |
181 //SmfPlace |
145 write<<location; |
182 xtraInfoWrite<<location; |
|
183 m_xtraInfoFlag = m_xtraInfoSerialized.size(); |
|
184 write<<m_xtraInfoFlag; |
146 //serialize end |
185 //serialize end |
147 |
186 |
148 QString intfName(postProviderInterface); |
187 QString intfName(postProviderInterface); |
149 |
188 //we are not mentioning the max size, as we'll receive only bool |
150 //call private impl's send method |
189 //call private impl's send method |
151 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostDirected); |
190 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostDirected,10,m_xtraInfoSerialized); |
152 } |
191 } |
153 |
192 |
154 /** |
193 /** |
155 * Posts appearance info of the user.e.g. appear offline, busy, do-not-disturb |
194 * Posts appearance info of the user.e.g. appear offline, busy, do-not-disturb |
156 * @param appearence user appearance |
195 * @param appearence user appearance |
164 { |
203 { |
165 m_baseProvider = m_postProvider->getProvider(); |
204 m_baseProvider = m_postProvider->getProvider(); |
166 //serialize start |
205 //serialize start |
167 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
206 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
168 write<<*(m_baseProvider); |
207 write<<*(m_baseProvider); |
169 write<<appearence; |
208 m_pageInfoFlag = 0; |
170 QString intfName(postProviderInterface); |
209 write<<m_pageInfoFlag; |
171 |
210 //m_xtraInfoFlag = 1; |
172 //call private impl's send method |
211 //write<<m_xtraInfoFlag; |
173 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostAppearence); |
212 QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly); |
|
213 xtraInfoWrite<<appearence; |
|
214 m_xtraInfoFlag = m_xtraInfoSerialized.size(); |
|
215 write<<m_xtraInfoFlag; |
|
216 QString intfName(postProviderInterface); |
|
217 //we are not mentioning the max size, as we'll receive only bool |
|
218 //call private impl's send method |
|
219 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactPostAppearence,10,m_xtraInfoSerialized); |
174 } |
220 } |
175 /** |
221 /** |
176 * Share /a contact's post to user's friends and followers (e.g. retweet in twitter, share on facebook) |
222 * Share /a contact's post to user's friends and followers (e.g. retweet in twitter, share on facebook) |
177 * emits updatePostFinished() signal when done. |
223 * emits updatePostFinished() signal when done. |
178 * @param postData data to be posted |
224 * @param postData data to be posted |
183 { |
229 { |
184 m_baseProvider = m_postProvider->getProvider(); |
230 m_baseProvider = m_postProvider->getProvider(); |
185 //serialize start |
231 //serialize start |
186 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
232 QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly); |
187 write<<*(m_baseProvider); |
233 write<<*(m_baseProvider); |
188 write<<postData; |
234 m_pageInfoFlag = 0; |
189 write<<contact; |
235 write<<m_pageInfoFlag; |
190 write<<edited; |
236 //m_xtraInfoFlag = 1; |
191 QString intfName(postProviderInterface); |
237 //write<<m_xtraInfoFlag; |
192 |
238 |
193 //call private impl's send method |
239 QDataStream xtraInfoWrite(&m_serializedDataToServer,QIODevice::WriteOnly); |
194 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactSharePost); |
240 xtraInfoWrite<<postData; |
|
241 xtraInfoWrite<<contact; |
|
242 xtraInfoWrite<<edited; |
|
243 m_xtraInfoFlag = m_xtraInfoSerialized.size(); |
|
244 write<<m_xtraInfoFlag; |
|
245 QString intfName(postProviderInterface); |
|
246 //we are not mentioning the max size, as we'll receive only bool |
|
247 //call private impl's send method |
|
248 m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfContactSharePost,10,m_serializedDataToServer); |
195 } |
249 } |
196 /** |
250 /** |
197 * From smfobserver |
251 * From smfobserver |
198 */ |
252 */ |
199 void SmfPostProviderPrivate::resultsAvailable(QByteArray result,SmfRequestTypeID opcode,SmfError error) |
253 void SmfPostProviderPrivate::resultsAvailable(QByteArray result,SmfRequestTypeID opcode,SmfError error) |
200 { |
254 { |
201 writeLog("SmfPostProviderPrivate::resultsAvailable"); |
255 writeLog("SmfPostProviderPrivate::resultsAvailable"); |
202 |
256 writeLog("opcode="); |
203 //note:- "result" is serialized and we need to de-serialize it as per opcode |
257 writeLog(QString::number(opcode)); |
204 //TODO:- order of serialization Error value followed by data |
|
205 |
|
206 QDataStream reader(&result,QIODevice::ReadOnly); |
258 QDataStream reader(&result,QIODevice::ReadOnly); |
207 |
|
208 //Now de-serialize it based on opcode |
259 //Now de-serialize it based on opcode |
209 switch(opcode) |
260 switch(opcode) |
210 { |
261 { |
211 case SmfContactRetrievePostsComplete: |
262 case SmfContactRetrievePosts: |
212 { |
263 { |
213 if(m_postList) |
264 if(m_postList) |
214 { |
265 { |
215 delete m_postList; |
266 delete m_postList; |
216 m_postList = NULL; |
267 m_postList = NULL; |
217 } |
268 } |
218 |
269 |
219 m_postList = new SmfPostList; |
270 m_postList = new SmfPostList; |
220 //TODO |
|
221 // SmfError error; |
|
222 // reader>>error; |
|
223 // writeLog("Error="); |
|
224 // writeLog(QString::number(error)); |
|
225 // SmfError err = (SmfError)error; |
|
226 reader>>*(m_postList); |
271 reader>>*(m_postList); |
227 writeLog("postList.count="); |
272 writeLog("postList.count="); |
228 writeLog(QString::number(m_postList->count())); |
273 writeLog(QString::number(m_postList->count())); |
229 foreach(SmfPost post,*m_postList) |
274 foreach(SmfPost post,*m_postList) |
230 { |
275 { |
235 |
280 |
236 emit m_postProvider->postsAvailable(m_postList,error,page); |
281 emit m_postProvider->postsAvailable(m_postList,error,page); |
237 |
282 |
238 } |
283 } |
239 break; |
284 break; |
240 case SmfContactPostComplete: |
285 case SmfContactPost: |
241 { |
286 { |
242 bool success; |
287 int errInt; |
243 reader>>success; |
288 reader>>errInt; |
244 writeLog("success="); |
289 writeLog("success="); |
245 if(success) |
290 SmfError success = (SmfError)errInt; |
246 writeLog("true"); |
291 emit m_postProvider->postFinished(success); |
247 emit m_postProvider->postFinished(success); |
|
248 |
292 |
249 } |
293 } |
250 break; |
294 break; |
251 case SmfContactUpdatePostComplete: |
295 case SmfContactUpdatePost: |
252 case SmfContactPostDirectedComplete: |
296 case SmfContactPostDirected: |
253 case SmfContactSharePostComplete: |
297 case SmfContactSharePost: |
254 { |
298 { |
255 bool success; |
299 int errInt; |
256 reader>>success; |
300 reader>>errInt; |
257 writeLog("success="); |
301 writeLog("success="); |
258 if(success) |
302 SmfError success = (SmfError)errInt; |
259 writeLog("true"); |
|
260 emit m_postProvider->postFinished(success); |
303 emit m_postProvider->postFinished(success); |
261 } |
304 } |
262 // default: |
305 default: |
263 // //should panic? |
306 Q_ASSERT_X(1,"SmfPostProviderPrivate::resultsAvailable","default case"); |
264 // |
|
265 } |
307 } |
266 } |
308 } |
267 void SmfPostProviderPrivate::writeLog(QString log) const |
309 void SmfPostProviderPrivate::writeLog(QString log) const |
268 { |
310 { |
269 #ifdef WRITE_LOG |
311 #ifdef WRITE_LOG |