18 #include "hsactivitydbclient_p.h" |
18 #include "hsactivitydbclient_p.h" |
19 #include "hsactivitydbasyncrequest_p.h" |
19 #include "hsactivitydbasyncrequest_p.h" |
20 #include "hsactivityglobals.h" |
20 #include "hsactivityglobals.h" |
21 #include "hsserializer.h" |
21 #include "hsserializer.h" |
22 #include <qvariant.h> |
22 #include <qvariant.h> |
23 |
23 #include <xqconversions> |
24 |
24 |
25 // ----------------------------------------------------------------------------- |
25 |
26 // |
26 // ----------------------------------------------------------------------------- |
27 // ----------------------------------------------------------------------------- |
27 // |
28 // |
28 // ----------------------------------------------------------------------------- |
29 HsActivityDbClientPrivate::HsActivityDbClientPrivate(HsActivityDbAsyncRequestObserver &observer) |
29 // |
30 { |
30 HsActivityDbClientPrivate::HsActivityDbClientPrivate(HsActivityDbAsyncRequestObserver &observer): |
31 mAsyncDataHandler = HsActivityDbAsyncRequestPrivate::NewL(observer, *this); |
31 mObserver(observer) |
|
32 { |
|
33 mAsyncDataHandler = HsActivityDbAsyncRequestPrivate::newWaitActivityL( |
|
34 observer, *this); |
32 } |
35 } |
33 |
36 |
34 // ----------------------------------------------------------------------------- |
37 // ----------------------------------------------------------------------------- |
35 // |
38 // |
36 // ----------------------------------------------------------------------------- |
39 // ----------------------------------------------------------------------------- |
37 // |
40 // |
38 HsActivityDbClientPrivate::~HsActivityDbClientPrivate() |
41 HsActivityDbClientPrivate::~HsActivityDbClientPrivate() |
39 { |
42 { |
|
43 mAsyncTasks.ResetAndDestroy(); |
40 delete mAsyncDataHandler; |
44 delete mAsyncDataHandler; |
41 Close(); |
45 Close(); |
42 } |
46 } |
43 |
47 |
44 // ----------------------------------------------------------------------------- |
48 // ----------------------------------------------------------------------------- |
55 // |
59 // |
56 // ----------------------------------------------------------------------------- |
60 // ----------------------------------------------------------------------------- |
57 // |
61 // |
58 int HsActivityDbClientPrivate::addActivity(const QVariantHash &activity) |
62 int HsActivityDbClientPrivate::addActivity(const QVariantHash &activity) |
59 { |
63 { |
60 TRAPD(errNo, execSimpleRequestL(AddActivity, activity);) |
64 int errNo(KErrCorrupt); |
|
65 if (activity.end() != activity.find(ActivityApplicationKeyword) && |
|
66 activity.end() != activity.find(ActivityActivityKeyword)) { |
|
67 TRAP(errNo, execSimpleRequestL(AddActivity, activity);) |
|
68 } |
61 return errNo; |
69 return errNo; |
62 } |
70 } |
63 |
71 |
64 // ----------------------------------------------------------------------------- |
72 // ----------------------------------------------------------------------------- |
65 // |
73 // |
66 // ----------------------------------------------------------------------------- |
74 // ----------------------------------------------------------------------------- |
67 // |
75 // |
68 int HsActivityDbClientPrivate::updateActivity(const QVariantHash &activity) |
76 int HsActivityDbClientPrivate::updateActivity(const QVariantHash &activity) |
69 { |
77 { |
70 TRAPD(errNo, execSimpleRequestL(UpdateActivity, activity);) |
78 int errNo(KErrCorrupt); |
|
79 if (activity.end() != activity.find(ActivityApplicationKeyword) && |
|
80 activity.end() != activity.find(ActivityActivityKeyword)) { |
|
81 TRAP(errNo, execSimpleRequestL(UpdateActivity, activity);) |
|
82 } |
71 return errNo; |
83 return errNo; |
72 } |
84 } |
73 |
85 |
74 // ----------------------------------------------------------------------------- |
86 // ----------------------------------------------------------------------------- |
75 // |
87 // |
76 // ----------------------------------------------------------------------------- |
88 // ----------------------------------------------------------------------------- |
77 // |
89 // |
78 int HsActivityDbClientPrivate::removeActivity(const QVariantHash &activity) |
90 int HsActivityDbClientPrivate::removeActivity(const QVariantHash &activity) |
79 { |
91 { |
80 TRAPD(errNo, execSimpleRequestL(RemoveActivity, activity);) |
92 int errNo(KErrCorrupt); |
|
93 if (activity.end() != activity.find(ActivityApplicationKeyword) && |
|
94 activity.end() != activity.find(ActivityActivityKeyword)) { |
|
95 TRAP(errNo, execSimpleRequestL(RemoveActivity, activity);) |
|
96 } |
81 return errNo; |
97 return errNo; |
82 } |
98 } |
83 |
99 |
84 // ----------------------------------------------------------------------------- |
100 // ----------------------------------------------------------------------------- |
85 // |
101 // |
86 // ----------------------------------------------------------------------------- |
102 // ----------------------------------------------------------------------------- |
87 // |
103 // |
88 int HsActivityDbClientPrivate::removeApplicationActivities(const QVariantHash &activity) |
104 int HsActivityDbClientPrivate::removeApplicationActivities(const QVariantHash &activity) |
89 { |
105 { |
90 TRAPD(errNo, execSimpleRequestL(RemoveApplicationActivities, activity);) |
106 int errNo(KErrCorrupt); |
|
107 if (activity.end() != activity.find(ActivityApplicationKeyword)) { |
|
108 TRAP(errNo, execSimpleRequestL(RemoveApplicationActivities, activity);) |
|
109 } |
91 return errNo; |
110 return errNo; |
92 } |
111 } |
93 |
112 |
94 // ----------------------------------------------------------------------------- |
113 // ----------------------------------------------------------------------------- |
95 // |
114 // |
118 // ----------------------------------------------------------------------------- |
137 // ----------------------------------------------------------------------------- |
119 // |
138 // |
120 int HsActivityDbClientPrivate::waitActivity(const QVariantHash &activity) |
139 int HsActivityDbClientPrivate::waitActivity(const QVariantHash &activity) |
121 { |
140 { |
122 TRAPD(errNo, waitActivityL(activity);) |
141 TRAPD(errNo, waitActivityL(activity);) |
|
142 return errNo; |
|
143 } |
|
144 |
|
145 // ----------------------------------------------------------------------------- |
|
146 // |
|
147 // ----------------------------------------------------------------------------- |
|
148 // |
|
149 int HsActivityDbClientPrivate::getThumbnail(QSize size, QString imagePath, QString mimeType, void *userDdata) |
|
150 { |
|
151 TRAPD(errNo, getThumbnailL(size, imagePath, mimeType, userDdata);) |
123 return errNo; |
152 return errNo; |
124 } |
153 } |
125 |
154 |
126 // ----------------------------------------------------------------------------- |
155 // ----------------------------------------------------------------------------- |
127 // |
156 // |
198 // |
227 // |
199 // ----------------------------------------------------------------------------- |
228 // ----------------------------------------------------------------------------- |
200 // |
229 // |
201 void HsActivityDbClientPrivate::execSimpleRequestL(int function, const QVariantHash &activity) |
230 void HsActivityDbClientPrivate::execSimpleRequestL(int function, const QVariantHash &activity) |
202 { |
231 { |
|
232 TPckgBuf<TInt> appId( activity.find(ActivityApplicationKeyword).value().toInt() ); |
|
233 HBufC8 *actId = XQConversions::qStringToS60Desc8(activity.find(ActivityActivityKeyword).value().toString()); |
|
234 CleanupStack::PushL(actId); |
|
235 TPckgBuf<TInt> taskId(0); |
203 RBuf8 data; |
236 RBuf8 data; |
204 CleanupClosePushL(data); |
237 CleanupClosePushL(data); |
205 data.CreateL(256); |
238 data.CreateL(256); |
206 data << activity; |
239 data << activity; |
207 User::LeaveIfError(SendReceive(function, TIpcArgs(&data))); |
240 User::LeaveIfError(SendReceive(function, TIpcArgs(&appId, actId, &data, &taskId))); |
208 CleanupStack::PopAndDestroy(&data); |
241 CleanupStack::PopAndDestroy(&data); |
209 } |
242 CleanupStack::PopAndDestroy(actId); |
210 |
243 } |
211 // ----------------------------------------------------------------------------- |
244 |
212 // |
245 // ----------------------------------------------------------------------------- |
213 // ----------------------------------------------------------------------------- |
246 // |
214 // |
247 // ----------------------------------------------------------------------------- |
215 void HsActivityDbClientPrivate::requestedActivityNameL(QString &result, |
248 // |
216 const QVariantHash &activity) |
249 void HsActivityDbClientPrivate::activitiesL(QList<QVariantHash>& result) |
217 { |
250 { |
|
251 TPckgBuf<TInt> appId(0); |
|
252 TPtrC8 actId(KNullDesC8); |
|
253 TPtrC8 desc(KNullDesC8); |
|
254 TPckgBuf<TInt> taskId(0); |
|
255 User::LeaveIfError(SendReceive(Activities, |
|
256 TIpcArgs(&appId, &actId, &desc, &taskId))); |
|
257 |
|
258 int sizeBuf(appId()); |
218 RBuf8 data; |
259 RBuf8 data; |
219 TPckgBuf<int> sizeBuf; |
|
220 CleanupClosePushL(data); |
260 CleanupClosePushL(data); |
221 data.CreateL(256); |
261 data.Create(sizeBuf); |
222 data << activity; |
262 User::LeaveIfError(SendReceive(GetData, TIpcArgs(&taskId, &data))); |
223 User::LeaveIfError(SendReceive(RequestedActivityName, TIpcArgs(&data,&sizeBuf))); |
263 |
224 if (sizeBuf() > data.MaxSize()) { |
|
225 data.ReAlloc(sizeBuf()); |
|
226 } |
|
227 User::LeaveIfError(SendReceive(GetData, TIpcArgs(&data))); |
|
228 result = QString::fromAscii(reinterpret_cast<const char *>(data.Ptr()), |
|
229 data.Length()); |
|
230 CleanupStack::PopAndDestroy(&data); |
|
231 } |
|
232 |
|
233 // ----------------------------------------------------------------------------- |
|
234 // |
|
235 // ----------------------------------------------------------------------------- |
|
236 // |
|
237 void HsActivityDbClientPrivate::activitiesL(QList<QVariantHash>& result) |
|
238 { |
|
239 RBuf8 data; |
|
240 TPckgBuf<int> sizeBuf; |
|
241 CleanupClosePushL(data); |
|
242 data.CreateL(256); |
|
243 User::LeaveIfError(SendReceive(Activities, TIpcArgs(&data, &sizeBuf))); |
|
244 if (sizeBuf() > data.MaxSize()) { |
|
245 data.ReAlloc(sizeBuf()); |
|
246 } |
|
247 User::LeaveIfError(SendReceive(GetData, TIpcArgs(&data))); |
|
248 result << data; |
264 result << data; |
249 CleanupStack::PopAndDestroy(&data); |
265 CleanupStack::PopAndDestroy(&data); |
250 } |
266 } |
251 |
267 |
252 // ----------------------------------------------------------------------------- |
268 // ----------------------------------------------------------------------------- |
254 // ----------------------------------------------------------------------------- |
270 // ----------------------------------------------------------------------------- |
255 // |
271 // |
256 void HsActivityDbClientPrivate::applicationActivitiesL(QList<QVariantHash>& result, |
272 void HsActivityDbClientPrivate::applicationActivitiesL(QList<QVariantHash>& result, |
257 const QVariantHash & condition) |
273 const QVariantHash & condition) |
258 { |
274 { |
|
275 TPckgBuf<TInt> appId = condition.find(ActivityApplicationKeyword).value().toInt(); |
|
276 TPtrC8 actId(KNullDesC8); |
|
277 TPtrC8 desc(KNullDesC8); |
|
278 TPckgBuf<TInt> taskId(0); |
|
279 User::LeaveIfError(SendReceive(ApplicationActivities, |
|
280 TIpcArgs(&appId, &actId, &desc, &taskId))); |
|
281 |
|
282 int sizeBuf(appId()); |
259 RBuf8 data; |
283 RBuf8 data; |
260 TPckgBuf<int> sizeBuf; |
|
261 CleanupClosePushL(data); |
284 CleanupClosePushL(data); |
262 data.CreateL(256); |
285 data.Create(sizeBuf); |
263 data << condition; |
286 User::LeaveIfError(SendReceive(GetData, TIpcArgs(&taskId, &data))); |
264 User::LeaveIfError(SendReceive(ApplicationActivities, TIpcArgs(&data, &sizeBuf))); |
287 |
265 if (sizeBuf() > data.MaxSize()) { |
|
266 data.ReAlloc(sizeBuf()); |
|
267 } |
|
268 User::LeaveIfError(SendReceive(GetData, TIpcArgs(&data))); |
|
269 result << data; |
288 result << data; |
270 CleanupStack::PopAndDestroy(&data); |
289 CleanupStack::PopAndDestroy(&data); |
271 } |
290 } |
272 |
291 |
273 // ----------------------------------------------------------------------------- |
292 // ----------------------------------------------------------------------------- |
285 |
304 |
286 // ----------------------------------------------------------------------------- |
305 // ----------------------------------------------------------------------------- |
287 // |
306 // |
288 // ----------------------------------------------------------------------------- |
307 // ----------------------------------------------------------------------------- |
289 // |
308 // |
290 void HsActivityDbClientPrivate::getData(RBuf8 &data) |
309 void HsActivityDbClientPrivate::getThumbnailL(QSize size, QString imagePath, QString mimeType, void *userDdata) |
291 { |
310 { |
292 SendReceive(GetData, TIpcArgs(&data)); |
311 HsActivityDbAsyncRequestPrivate::getThumbnailLD(mObserver, |
|
312 *this, size, imagePath, mimeType, userDdata); |
|
313 } |
|
314 |
|
315 // ----------------------------------------------------------------------------- |
|
316 // |
|
317 // ----------------------------------------------------------------------------- |
|
318 // |
|
319 void HsActivityDbClientPrivate::getData(int taskId, RBuf8 &data) |
|
320 { |
|
321 TPckgBuf<int> requestId(taskId); |
|
322 SendReceive(GetData, TIpcArgs(&requestId, &data)); |
293 } |
323 } |
294 |
324 |
295 // ----------------------------------------------------------------------------- |
325 // ----------------------------------------------------------------------------- |
296 // |
326 // |
297 // ----------------------------------------------------------------------------- |
327 // ----------------------------------------------------------------------------- |
305 |
335 |
306 // ----------------------------------------------------------------------------- |
336 // ----------------------------------------------------------------------------- |
307 // |
337 // |
308 // ----------------------------------------------------------------------------- |
338 // ----------------------------------------------------------------------------- |
309 // |
339 // |
310 int HsActivityDbClientPrivate::getThumbnail(QPixmap &dst, const QString & src) |
340 void HsActivityDbClientPrivate::PushL(HsActivityDbAsyncRequestPrivate * task) |
311 { |
341 { |
312 RBuf8 data; |
342 (KErrNotFound == mAsyncTasks.Find(task)) ? |
313 QVariantHash thumbnailRequest; |
343 mAsyncTasks.AppendL(task): |
314 thumbnailRequest.insert(ActivityScreenshotKeyword, src); |
344 User::Leave(KErrAlreadyExists); |
315 TPckgBuf<int> sizeBuf(0); |
345 } |
316 CleanupClosePushL(data); |
346 |
317 data.CreateL(256); |
347 // ----------------------------------------------------------------------------- |
318 data << thumbnailRequest; |
348 // |
319 User::LeaveIfError(SendReceive(GetThumbnail, TIpcArgs(&data, &sizeBuf))); |
349 // ----------------------------------------------------------------------------- |
320 if (sizeBuf() > data.MaxSize()) { |
350 // |
321 data.ReAlloc(sizeBuf()); |
351 void HsActivityDbClientPrivate::Pop(HsActivityDbAsyncRequestPrivate *task) |
322 } |
352 { |
323 User::LeaveIfError(SendReceive(GetData, TIpcArgs(&data))); |
353 const TInt offset(mAsyncTasks.Find(task)); |
324 dst << data; |
354 if (KErrNotFound != offset) { |
325 CleanupStack::PopAndDestroy(&data); |
355 mAsyncTasks.Remove(offset); |
326 return 0; |
356 } |
327 } |
357 } |