17 #include "hsactivityserver_p.h" |
17 #include "hsactivityserver_p.h" |
18 #include "hsactivitysession_p.h" |
18 #include "hsactivitysession_p.h" |
19 #include "hsactivityglobals.h" |
19 #include "hsactivityglobals.h" |
20 #include "hsserializer.h" |
20 #include "hsserializer.h" |
21 #include <qglobal.h> |
21 #include <qglobal.h> |
22 |
22 #include <qpixmap.h> |
23 const char ActivityPrimaryKeyFormat [] = "%1:%2"; |
23 // ----------------------------------------------------------------------------- |
24 // ----------------------------------------------------------------------------- |
24 // |
25 // |
25 // ----------------------------------------------------------------------------- |
26 // ----------------------------------------------------------------------------- |
26 // |
27 // |
27 HsActivitySessionPrivate::HsActivitySessionPrivate(HsActivityDbClientInterface &storage) |
28 HsActivitySessionPrivate::HsActivitySessionPrivate(HsActivityDbClientInterface& storage) |
28 : mStorage(storage), mAppId(KErrNotFound) |
29 : mStorage(storage), mAppId(KErrNotFound) |
|
30 { |
29 { |
31 } |
30 } |
32 |
31 |
33 // ----------------------------------------------------------------------------- |
32 // ----------------------------------------------------------------------------- |
34 // |
33 // |
35 // ----------------------------------------------------------------------------- |
34 // ----------------------------------------------------------------------------- |
36 // |
35 // |
37 HsActivitySessionPrivate::~HsActivitySessionPrivate() |
36 HsActivitySessionPrivate::~HsActivitySessionPrivate() |
38 { |
37 { |
39 CancelNotify(); |
38 CancelNotify(); |
40 mData.Close(); |
39 mData.Close(); |
41 } |
40 } |
42 |
41 |
43 // ----------------------------------------------------------------------------- |
42 // ----------------------------------------------------------------------------- |
44 // |
43 // |
45 // ----------------------------------------------------------------------------- |
44 // ----------------------------------------------------------------------------- |
46 // |
45 // |
47 void HsActivitySessionPrivate::ServiceL(const RMessage2& message) |
46 void HsActivitySessionPrivate::ServiceL(const RMessage2 &message) |
48 { |
47 { |
49 mActivity.clear(); |
48 mActivity.clear(); |
50 mResult.clear(); |
49 mResult.clear(); |
51 mName.clear(); |
50 mName.clear(); |
52 |
51 |
53 int errNo(KErrNone); |
52 switch (message.Function()) { |
54 switch(message.Function()) { |
53 case AddActivity: |
55 case AddActivity: HandleAddActivityL(message); break; |
54 HandleAddActivityL(message); |
56 case UpdateActivity: HandleUpdateActivityL(message); break; |
55 break; |
57 case RemoveActivity: HandleRemoveActivityL(message); break; |
56 case UpdateActivity: |
58 case RemoveApplicationActivities: HandleRemoveApplicationActivitiesL(message); break; |
57 HandleUpdateActivityL(message); |
59 case Activities: HandleActivitiesL(message);break; |
58 break; |
60 case ApplicationActivities: HandleApplicationActivitiesL(message);break; |
59 case RemoveActivity: |
61 case LaunchActivity: HandleLaunchActivityL(message);break; |
60 HandleRemoveActivityL(message); |
62 case WaitActivity: HandleWaitActivityL(message);return; //!!!!! This message shouldn't be compleated !!!!! |
61 break; |
63 case GetData: HandleGetDataL(message); break; |
62 case RemoveApplicationActivities: |
64 case CancelWait: HandleCancelWaitActivity(message); break; |
63 HandleRemoveApplicationActivitiesL(message); |
65 default: |
64 break; |
66 message.Panic(KErr400, CServer2::EBadMessageNumber); |
65 case Activities: |
|
66 HandleActivitiesL(message); |
|
67 break; |
|
68 case ApplicationActivities: |
|
69 HandleApplicationActivitiesL(message); |
|
70 break; |
|
71 case LaunchActivity: |
|
72 HandleLaunchActivityL(message); |
|
73 break; |
|
74 case WaitActivity: |
|
75 HandleWaitActivityL(message); |
|
76 return; //!!!!! This message shouldn't be compleated !!!!! |
|
77 case GetThumbnail: |
|
78 HandleGetThumbnailL(message); |
|
79 break; |
|
80 case GetData: |
|
81 HandleGetDataL(message); |
|
82 break; |
|
83 case CancelWait: |
|
84 HandleCancelWaitActivity(message); |
|
85 break; |
|
86 default: |
|
87 message.Panic(KErr400, CServer2::EBadMessageNumber); |
67 } |
88 } |
68 message.Complete(KErrNone); |
89 message.Complete(KErrNone); |
69 } |
90 } |
70 |
91 |
71 // ----------------------------------------------------------------------------- |
92 // ----------------------------------------------------------------------------- |
79 |
100 |
80 // ----------------------------------------------------------------------------- |
101 // ----------------------------------------------------------------------------- |
81 // |
102 // |
82 // ----------------------------------------------------------------------------- |
103 // ----------------------------------------------------------------------------- |
83 // |
104 // |
84 void HsActivitySessionPrivate::HandleAddActivityL(const RMessage2& message) |
105 void HsActivitySessionPrivate::HandleAddActivityL(const RMessage2 &message) |
85 { |
106 { |
86 ReadDataL(message); |
107 ReadDataL(message); |
87 LeaveIfNotZero(mStorage.addActivity(mActivity)); |
108 LeaveIfNotZero(mStorage.addActivity(mActivity)); |
88 } |
109 } |
89 |
110 |
90 // ----------------------------------------------------------------------------- |
111 // ----------------------------------------------------------------------------- |
91 // |
112 // |
92 // ----------------------------------------------------------------------------- |
113 // ----------------------------------------------------------------------------- |
93 // |
114 // |
94 void HsActivitySessionPrivate::HandleUpdateActivityL(const RMessage2& message) |
115 void HsActivitySessionPrivate::HandleUpdateActivityL(const RMessage2 &message) |
95 { |
116 { |
96 ReadDataL(message); |
117 ReadDataL(message); |
97 LeaveIfNotZero(mStorage.updateActivity(mActivity)); |
118 LeaveIfNotZero(mStorage.updateActivity(mActivity)); |
98 } |
119 } |
99 |
120 |
100 // ----------------------------------------------------------------------------- |
121 // ----------------------------------------------------------------------------- |
101 // |
122 // |
102 // ----------------------------------------------------------------------------- |
123 // ----------------------------------------------------------------------------- |
103 // |
124 // |
104 void HsActivitySessionPrivate::HandleRemoveActivityL(const RMessage2& message) |
125 void HsActivitySessionPrivate::HandleRemoveActivityL(const RMessage2 &message) |
105 { |
126 { |
106 ReadDataL(message); |
127 ReadDataL(message); |
107 LeaveIfNotZero(mStorage.removeActivity(mActivity)); |
128 LeaveIfNotZero(mStorage.removeActivity(mActivity)); |
108 } |
129 } |
109 |
130 |
110 // ----------------------------------------------------------------------------- |
131 // ----------------------------------------------------------------------------- |
111 // |
132 // |
112 // ----------------------------------------------------------------------------- |
133 // ----------------------------------------------------------------------------- |
113 // |
134 // |
114 void HsActivitySessionPrivate::HandleRemoveApplicationActivitiesL(const RMessage2& message) |
135 void HsActivitySessionPrivate::HandleRemoveApplicationActivitiesL(const RMessage2 &message) |
115 { |
136 { |
116 ReadDataL(message); |
137 ReadDataL(message); |
117 LeaveIfNotZero(mStorage.removeApplicationActivities(mActivity)); |
138 LeaveIfNotZero(mStorage.removeApplicationActivities(mActivity)); |
118 } |
139 } |
119 |
140 |
120 // ----------------------------------------------------------------------------- |
141 // ----------------------------------------------------------------------------- |
121 // |
142 // |
122 // ----------------------------------------------------------------------------- |
143 // ----------------------------------------------------------------------------- |
123 // |
144 // |
124 void HsActivitySessionPrivate::HandleActivitiesL(const RMessage2& message) |
145 void HsActivitySessionPrivate::HandleActivitiesL(const RMessage2 &message) |
125 { |
146 { |
126 int errNo(KErrNone); |
147 int errNo(KErrNone); |
127 QT_TRYCATCH_LEAVING(errNo = mStorage.activities(mResult)); |
148 QT_TRYCATCH_LEAVING(errNo = mStorage.activities(mResult)); |
128 LeaveIfNotZero(errNo); |
149 LeaveIfNotZero(errNo); |
129 mData << mResult; |
150 mData << mResult; |
148 |
169 |
149 // ----------------------------------------------------------------------------- |
170 // ----------------------------------------------------------------------------- |
150 // |
171 // |
151 // ----------------------------------------------------------------------------- |
172 // ----------------------------------------------------------------------------- |
152 // |
173 // |
153 void HsActivitySessionPrivate::HandleLaunchActivityL(const RMessage2& message) |
174 void HsActivitySessionPrivate::HandleLaunchActivityL(const RMessage2 &message) |
154 { |
175 { |
155 ReadDataL(message); |
176 ReadDataL(message); |
156 LaunchActivityL(); |
177 LaunchActivityL(); |
157 } |
178 } |
158 |
179 |
159 // ----------------------------------------------------------------------------- |
180 // ----------------------------------------------------------------------------- |
160 // |
181 // |
161 // ----------------------------------------------------------------------------- |
182 // ----------------------------------------------------------------------------- |
162 // |
183 // |
163 void HsActivitySessionPrivate::HandleWaitActivityL(const RMessage2& message) |
184 void HsActivitySessionPrivate::HandleWaitActivityL(const RMessage2 &message) |
164 { |
185 { |
165 ReadDataL(message); |
186 ReadDataL(message); |
166 WaitActivityL(message); |
187 WaitActivityL(message); |
167 } |
188 } |
168 |
189 |
169 // ----------------------------------------------------------------------------- |
190 // ----------------------------------------------------------------------------- |
170 // |
191 // |
171 // ----------------------------------------------------------------------------- |
192 // ----------------------------------------------------------------------------- |
172 // |
193 // |
|
194 void HsActivitySessionPrivate::HandleGetThumbnailL(const RMessage2 &message) |
|
195 { |
|
196 ReadDataL(message); |
|
197 GetThumbnailL(message); |
|
198 } |
|
199 |
|
200 // ----------------------------------------------------------------------------- |
|
201 // |
|
202 // ----------------------------------------------------------------------------- |
|
203 // |
173 void HsActivitySessionPrivate::HandleCancelWaitActivity(const RMessage2& /*message*/) |
204 void HsActivitySessionPrivate::HandleCancelWaitActivity(const RMessage2& /*message*/) |
174 { |
205 { |
175 CancelNotify(); |
206 CancelNotify(); |
176 } |
207 } |
177 |
208 |
178 // ----------------------------------------------------------------------------- |
209 // ----------------------------------------------------------------------------- |
179 // |
210 // |
180 // ----------------------------------------------------------------------------- |
211 // ----------------------------------------------------------------------------- |
181 // |
212 // |
182 void HsActivitySessionPrivate::HandleGetDataL(const RMessage2& message) |
213 void HsActivitySessionPrivate::HandleGetDataL(const RMessage2 &message) |
183 { |
214 { |
184 message.WriteL(0, mData); |
215 message.WriteL(0, mData); |
185 } |
216 } |
186 |
217 |
187 // ----------------------------------------------------------------------------- |
218 // ----------------------------------------------------------------------------- |
188 // |
219 // |
189 // ----------------------------------------------------------------------------- |
220 // ----------------------------------------------------------------------------- |
190 // |
221 // |
191 void HsActivitySessionPrivate::LaunchActivityL() |
222 void HsActivitySessionPrivate::LaunchActivityL() |
192 { |
223 { |
193 CServer2* const server(const_cast<CServer2*>(Server())); |
224 CServer2 *const server(const_cast<CServer2 *>(Server())); |
194 if(mActivity.end() == mActivity.find(ActivityApplicationKeyword) || |
225 if (mActivity.end() == mActivity.find(ActivityApplicationKeyword) || |
195 mActivity.end() == mActivity.find(ActivityActivityKeyword)) { |
226 mActivity.end() == mActivity.find(ActivityActivityKeyword)) { |
196 User::Leave(KErrCorrupt); |
227 User::Leave(KErrCorrupt); |
197 } |
228 } |
198 static_cast<HsActivityServerPrivate*> |
229 static_cast<HsActivityServerPrivate *> |
199 (server)->notifyL(mActivity.find(ActivityApplicationKeyword).value().toInt(), |
230 (server)->notifyL(mActivity.find(ActivityApplicationKeyword).value().toInt(), |
200 mActivity.find(ActivityActivityKeyword).value().toString()); |
231 mActivity.find(ActivityActivityKeyword).value().toString()); |
201 } |
232 } |
202 |
233 |
203 // ----------------------------------------------------------------------------- |
234 // ----------------------------------------------------------------------------- |
204 // |
235 // |
205 // ----------------------------------------------------------------------------- |
236 // ----------------------------------------------------------------------------- |
206 // |
237 // |
207 void HsActivitySessionPrivate::LaunchActivityL(const RMessage2 &message, |
238 void HsActivitySessionPrivate::LaunchActivityL(const RMessage2 &message, |
208 const QString &name ) |
239 const QString &name) |
209 { |
240 { |
210 if (mData.MaxSize() < name.toAscii().length()){ |
241 if (mData.MaxSize() < name.toAscii().length()) { |
211 mData.ReAlloc( name.toAscii().length()); |
242 mData.ReAlloc(name.toAscii().length()); |
212 } |
243 } |
213 mData.Copy(reinterpret_cast<const TUint8*>(name.toAscii().data()), |
244 mData.Copy(reinterpret_cast<const TUint8*>(name.toAscii().data()), |
214 name.toAscii().length()); |
245 name.toAscii().length()); |
215 TPckgC<int> dataSize(mData.Size()); |
246 TPckgC<int> dataSize(mData.Size()); |
216 message.WriteL(1, dataSize); |
247 message.WriteL(1, dataSize); |
218 } |
249 } |
219 // ----------------------------------------------------------------------------- |
250 // ----------------------------------------------------------------------------- |
220 // |
251 // |
221 // ----------------------------------------------------------------------------- |
252 // ----------------------------------------------------------------------------- |
222 // |
253 // |
223 void HsActivitySessionPrivate::WaitActivityL(const RMessage2& msg) |
254 void HsActivitySessionPrivate::WaitActivityL(const RMessage2 &msg) |
224 { |
255 { |
225 CServer2* const server(const_cast<CServer2*>(Server())); |
256 CServer2 *const server(const_cast<CServer2 *>(Server())); |
226 if(mActivity.end() == mActivity.find(ActivityApplicationKeyword)) { |
257 if (mActivity.end() == mActivity.find(ActivityApplicationKeyword)) { |
227 User::Leave(KErrCorrupt); |
258 User::Leave(KErrCorrupt); |
228 } |
259 } |
229 mAppId = mActivity.find(ActivityApplicationKeyword).value().toInt(); |
260 mAppId = mActivity.find(ActivityApplicationKeyword).value().toInt(); |
230 static_cast<HsActivityServerPrivate*> |
261 static_cast<HsActivityServerPrivate *> |
231 (server)->waitNotification(mAppId, msg); |
262 (server)->waitNotification(mAppId, msg); |
|
263 } |
|
264 |
|
265 // ----------------------------------------------------------------------------- |
|
266 // |
|
267 // ----------------------------------------------------------------------------- |
|
268 // |
|
269 void HsActivitySessionPrivate::GetThumbnailL(const RMessage2 &message) |
|
270 { |
|
271 if (mActivity.constEnd() == mActivity.constFind(ActivityScreenshotKeyword)) { |
|
272 User::Leave(KErrGeneral); |
|
273 } |
|
274 mData << QPixmap(mActivity.constFind(ActivityScreenshotKeyword).value().toString()); |
|
275 TPckgC<int> dataSize(mData.Size()); |
|
276 message.WriteL(1, dataSize); |
232 } |
277 } |
233 |
278 |
234 // ----------------------------------------------------------------------------- |
279 // ----------------------------------------------------------------------------- |
235 // |
280 // |
236 // ----------------------------------------------------------------------------- |
281 // ----------------------------------------------------------------------------- |
237 // |
282 // |
238 void HsActivitySessionPrivate::CancelNotify() |
283 void HsActivitySessionPrivate::CancelNotify() |
239 { |
284 { |
240 if ( mAppId != KErrNotFound ) |
285 if (mAppId != KErrNotFound) { |
241 { |
286 CServer2 *const server(const_cast<CServer2 *>(Server())); |
242 CServer2* const server(const_cast<CServer2*>(Server())); |
287 static_cast<HsActivityServerPrivate *>(server)->cancelNotify(mAppId); |
243 static_cast<HsActivityServerPrivate*>(server)->cancelNotify(mAppId); |
288 mAppId = KErrNotFound; |
244 mAppId = KErrNotFound; |
289 } |
245 } |
290 } |
246 } |
291 |
247 |
292 // ----------------------------------------------------------------------------- |
248 // ----------------------------------------------------------------------------- |
293 // |
249 // |
294 // ----------------------------------------------------------------------------- |
250 // ----------------------------------------------------------------------------- |
295 // |
251 // |
296 void HsActivitySessionPrivate::CancelNotify(RMessage2 &message) |
252 void HsActivitySessionPrivate::CancelNotify(RMessage2& message) |
297 { |
253 { |
298 message.Complete(KErrCancel); |
254 message.Complete(KErrCancel); |
299 } |
255 } |
300 |
256 |
301 // ----------------------------------------------------------------------------- |
257 // ----------------------------------------------------------------------------- |
302 // |
258 // |
303 // ----------------------------------------------------------------------------- |
259 // ----------------------------------------------------------------------------- |
304 // |
260 // |
305 void HsActivitySessionPrivate::ReadDataL(const RMessage2 &src) |
261 void HsActivitySessionPrivate::ReadDataL(const RMessage2& src) |
|
262 { |
306 { |
263 int srcLength = src.GetDesLength(0); |
307 int srcLength = src.GetDesLength(0); |
264 User::LeaveIfError(srcLength); |
308 User::LeaveIfError(srcLength); |
265 RBuf8 buffer; |
309 RBuf8 buffer; |
266 CleanupClosePushL(buffer); |
310 CleanupClosePushL(buffer); |
267 buffer.CreateL(srcLength); |
311 buffer.CreateL(srcLength); |
268 src.ReadL( 0, buffer, 0); |
312 src.ReadL(0, buffer, 0); |
269 if (buffer.Length() != srcLength) { |
313 if (buffer.Length() != srcLength) { |
270 User::Leave(KErrCorrupt); |
314 User::Leave(KErrCorrupt); |
271 } |
315 } |
272 mActivity << buffer; |
316 mActivity << buffer; |
273 CleanupStack::PopAndDestroy(&buffer); |
317 CleanupStack::PopAndDestroy(&buffer); |