17 |
17 |
18 #include "hsactivitydbasyncrequest_p.h" |
18 #include "hsactivitydbasyncrequest_p.h" |
19 #include "hsactivitydbclient_p.h" |
19 #include "hsactivitydbclient_p.h" |
20 #include "hsactivitydbclient.h" |
20 #include "hsactivitydbclient.h" |
21 #include <fbs.h> |
21 #include <fbs.h> |
22 #include <xqconversions> |
22 #include <XQConversions> |
23 |
23 |
24 |
24 |
25 // ----------------------------------------------------------------------------- |
25 // ----------------------------------------------------------------------------- |
26 // |
26 // |
27 // ----------------------------------------------------------------------------- |
27 // ----------------------------------------------------------------------------- |
28 // |
28 // |
29 HsActivityDbAsyncRequestPrivate* |
29 HsActivityDbAsyncRequestPrivate* |
30 HsActivityDbAsyncRequestPrivate::NewL(HsActivityDbAsyncRequestObserver &observer, |
30 HsActivityDbAsyncRequestPrivate::NewLC(HsActivityDbAsyncRequestObserver &observer, |
31 HsActivityDbClientPrivate &session, |
31 HsActivityDbClientPrivate &session, |
32 TAsyncRequest requestType, |
32 TAsyncRequest requestType, |
33 void* userData) |
33 void* userData) |
34 { |
34 { |
35 HsActivityDbAsyncRequestPrivate *self = |
35 HsActivityDbAsyncRequestPrivate *self = |
36 new(ELeave)HsActivityDbAsyncRequestPrivate(observer, session, requestType, userData); |
36 new(ELeave)HsActivityDbAsyncRequestPrivate(observer, session, requestType, userData); |
37 CleanupStack::PushL(self); |
37 CleanupStack::PushL(self); |
38 self->mDataBuf.CreateL(64); |
38 self->mDataBuf.CreateL(64); |
|
39 return self; |
|
40 } |
|
41 |
|
42 // ----------------------------------------------------------------------------- |
|
43 // |
|
44 // ----------------------------------------------------------------------------- |
|
45 // |
|
46 void HsActivityDbAsyncRequestPrivate::waitActivityLD( |
|
47 HsActivityDbAsyncRequestObserver & observer, |
|
48 HsActivityDbClientPrivate & session, |
|
49 const QVariantHash &activity) |
|
50 { |
|
51 HsActivityDbAsyncRequestPrivate *self = |
|
52 HsActivityDbAsyncRequestPrivate::NewLC(observer, |
|
53 session, |
|
54 EWaitActivity); |
|
55 self->mSession.PushL(self); |
39 CleanupStack::Pop(self); |
56 CleanupStack::Pop(self); |
40 return self; |
57 self->waitActivity(activity); |
41 } |
58 } |
42 |
59 |
43 // ----------------------------------------------------------------------------- |
60 // ----------------------------------------------------------------------------- |
44 // |
61 // |
45 // ----------------------------------------------------------------------------- |
62 // ----------------------------------------------------------------------------- |
46 // |
63 // |
47 HsActivityDbAsyncRequestPrivate* |
64 void HsActivityDbAsyncRequestPrivate::notifyDataChangeLD( |
48 HsActivityDbAsyncRequestPrivate::newWaitActivityL(HsActivityDbAsyncRequestObserver & observer, |
65 HsActivityDbAsyncRequestObserver &observer, |
49 HsActivityDbClientPrivate & session) |
66 HsActivityDbClientPrivate &session) |
50 { |
67 { |
51 return HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitActivity); |
68 HsActivityDbAsyncRequestPrivate *self = |
52 } |
69 HsActivityDbAsyncRequestPrivate::NewLC(observer, |
|
70 session, |
|
71 ENotifyDataChange); |
|
72 self->mSession.PushL(self); |
|
73 CleanupStack::Pop(self); |
|
74 self->notifyDataChange(); |
|
75 } |
53 |
76 |
54 // ----------------------------------------------------------------------------- |
77 // ----------------------------------------------------------------------------- |
55 // |
78 // |
56 // ----------------------------------------------------------------------------- |
79 // ----------------------------------------------------------------------------- |
57 // |
80 // |
58 void HsActivityDbAsyncRequestPrivate::getThumbnailLD(HsActivityDbAsyncRequestObserver &observer, |
81 void HsActivityDbAsyncRequestPrivate::getThumbnailLD(HsActivityDbAsyncRequestObserver &observer, |
59 HsActivityDbClientPrivate &session, |
82 HsActivityDbClientPrivate &session, |
60 QSize size, |
83 QSize size, |
61 QString imagePath, |
84 const QString &imagePath, |
62 QString mimeType, |
85 const QString &mimeType, |
63 void *userDdata) |
86 void *userDdata) |
64 { |
87 { |
65 HsActivityDbAsyncRequestPrivate *instance = |
88 HsActivityDbAsyncRequestPrivate *instance = |
66 HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitGetThumbnail, userDdata); |
89 HsActivityDbAsyncRequestPrivate::NewLC(observer, session, EWaitGetThumbnail, userDdata); |
|
90 session.PushL(instance); |
|
91 CleanupStack::Pop(instance); |
67 instance->getThumbnail( size, imagePath, mimeType); |
92 instance->getThumbnail( size, imagePath, mimeType); |
68 } |
93 } |
69 |
94 |
70 // ----------------------------------------------------------------------------- |
95 // ----------------------------------------------------------------------------- |
71 // |
96 // |
102 // ----------------------------------------------------------------------------- |
127 // ----------------------------------------------------------------------------- |
103 // |
128 // |
104 void HsActivityDbAsyncRequestPrivate::DoCancel() |
129 void HsActivityDbAsyncRequestPrivate::DoCancel() |
105 { |
130 { |
106 if (IsActive()) { |
131 if (IsActive()) { |
107 mSession.cancelWaitActivity(); |
132 switch (mRequestType) { |
|
133 case EWaitActivity: mSession.cancelWaitActivity(); break; |
|
134 case ENotifyDataChange: mSession.cancelNotifyDataChange(); break; |
|
135 }; |
108 } |
136 } |
109 } |
137 } |
110 |
138 |
111 // ----------------------------------------------------------------------------- |
139 // ----------------------------------------------------------------------------- |
112 // |
140 // |
113 // ----------------------------------------------------------------------------- |
141 // ----------------------------------------------------------------------------- |
114 // |
142 // |
115 void HsActivityDbAsyncRequestPrivate::RunL() |
143 void HsActivityDbAsyncRequestPrivate::RunL() |
116 { |
144 { |
117 int requestResult(iStatus.Int()); |
145 switch (mRequestType) { |
118 if (KErrNone == requestResult) { |
146 case WaitActivity: { |
119 switch (mRequestType){ |
147 QString data; |
120 case WaitActivity: { |
148 if (KErrNone == iStatus.Int()) { |
121 RBuf8 buff; |
149 RBuf8 buff; |
122 CleanupClosePushL(buff); |
150 CleanupClosePushL(buff); |
123 QString data; |
|
124 if (0 < mDataSize()) { |
151 if (0 < mDataSize()) { |
125 buff.CreateL(mDataSize()); |
152 buff.CreateL(mDataSize()); |
126 } |
153 } |
127 mSession.getData(mTaskId(), buff); |
154 mSession.getData(mTaskId(), buff); |
128 data = QString::fromAscii(reinterpret_cast<const char *>(buff.Ptr()), |
155 data = QString::fromAscii(reinterpret_cast<const char *>(buff.Ptr()), |
129 buff.Length()); |
156 buff.Length()); |
130 buff.Close(); |
|
131 mObserver.asyncRequestCompleated(requestResult, mRequestType, data); |
|
132 CleanupStack::PopAndDestroy(&buff); |
157 CleanupStack::PopAndDestroy(&buff); |
133 break; |
158 } |
134 } |
159 mObserver.asyncRequestCompleated(iStatus.Int(), mRequestType, data); |
135 case EWaitGetThumbnail: { |
160 mSession.Pop(this); |
|
161 delete this; |
|
162 break; |
|
163 } |
|
164 case EWaitGetThumbnail: { |
|
165 QPixmap pixmap; |
|
166 if (KErrNone == iStatus.Int()) { |
136 CFbsBitmap* bitmap = new (ELeave) CFbsBitmap; |
167 CFbsBitmap* bitmap = new (ELeave) CFbsBitmap; |
137 CleanupStack::PushL(bitmap); |
168 CleanupStack::PushL(bitmap); |
138 User::LeaveIfError(bitmap->Duplicate(mBitmapId())); |
169 User::LeaveIfError(bitmap->Duplicate(mBitmapId())); |
139 mSession.getData(mTaskId(), mDataBuf);//ACK Bitmap copy |
170 mSession.getData(mTaskId(), mDataBuf);//ACK Bitmap copy |
140 mObserver.asyncRequestCompleated(requestResult, mRequestType, QPixmap::fromSymbianCFbsBitmap(bitmap), mUserData); |
171 pixmap = QPixmap::fromSymbianCFbsBitmap(bitmap); |
141 CleanupStack::PopAndDestroy(bitmap); |
172 CleanupStack::PopAndDestroy(bitmap); |
142 break; |
173 } |
143 } |
174 mObserver.asyncRequestCompleated(iStatus.Int(), mRequestType, pixmap, mUserData); |
144 } |
|
145 mSession.Pop(this); |
175 mSession.Pop(this); |
|
176 delete this; |
|
177 break; |
|
178 } |
|
179 case ENotifyDataChange: { |
|
180 mObserver.asyncRequestCompleated(iStatus.Int(),mRequestType); |
|
181 mSession.Pop(this); |
|
182 delete this; |
|
183 } |
146 } |
184 } |
147 } |
185 } |
148 |
186 |
149 // ----------------------------------------------------------------------------- |
187 // ----------------------------------------------------------------------------- |
150 // |
188 // |
172 mTaskId = size.height(); |
210 mTaskId = size.height(); |
173 mBitmapPath = XQConversions::qStringToS60Desc(imagePath); |
211 mBitmapPath = XQConversions::qStringToS60Desc(imagePath); |
174 mBitmapMimeType = XQConversions::qStringToS60Desc8(mimeType); |
212 mBitmapMimeType = XQConversions::qStringToS60Desc8(mimeType); |
175 mSession.sendDataAsync(mRequestType, TIpcArgs(&mBitmapId, &mTaskId, mBitmapPath, mBitmapMimeType), iStatus); |
213 mSession.sendDataAsync(mRequestType, TIpcArgs(&mBitmapId, &mTaskId, mBitmapPath, mBitmapMimeType), iStatus); |
176 } |
214 } |
|
215 |
|
216 // ----------------------------------------------------------------------------- |
|
217 // |
|
218 // ----------------------------------------------------------------------------- |
|
219 // |
|
220 void HsActivityDbAsyncRequestPrivate::notifyDataChange() |
|
221 { |
|
222 iStatus = KRequestPending; |
|
223 SetActive(); |
|
224 mSession.sendDataAsync(ENotifyDataChange, TIpcArgs(), iStatus); |
|
225 } |