31 #include "afstorageproxy.h" |
31 #include "afstorageproxy.h" |
32 #include "afserializer.h" |
32 #include "afserializer.h" |
33 |
33 |
34 AfStorageProxyPrivate::AfStorageProxyPrivate(AfStorageProxy *q) : mClient(0), q_ptr(q) |
34 AfStorageProxyPrivate::AfStorageProxyPrivate(AfStorageProxy *q) : mClient(0), q_ptr(q) |
35 { |
35 { |
36 QT_TRAP_THROWING(mClient = CAfStorageClient::NewL(*this)); |
36 QT_TRAP_THROWING( |
|
37 mClient = CAfStorageClient::NewL(*this); |
|
38 User::LeaveIfError(mAppArcSession.Connect()); |
|
39 ); |
37 } |
40 } |
38 |
41 |
39 AfStorageProxyPrivate::~AfStorageProxyPrivate() |
42 AfStorageProxyPrivate::~AfStorageProxyPrivate() |
40 { |
43 { |
41 delete mClient; |
44 delete mClient; |
42 } |
45 mAppArcSession.Close(); |
43 |
46 } |
44 bool AfStorageProxyPrivate::addActivity(int applicationId, const QString &activityId, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot) |
47 |
|
48 bool AfStorageProxyPrivate::addActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot) |
45 { |
49 { |
46 int screenshotHandle(-1); |
50 int screenshotHandle(-1); |
47 CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap()); |
51 CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap()); |
48 if (bitmap) { |
52 if (bitmap) { |
49 screenshotHandle = bitmap->Handle(); |
53 screenshotHandle = bitmap->Handle(); |
50 } |
54 } |
51 |
55 |
52 CAfEntry *entry = createSaveEntry(applicationId, activityId, activityData, metadata); |
56 CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata); |
53 int result = mClient->addActivity(*entry, screenshotHandle); |
57 int result = mClient->addActivity(*entry, screenshotHandle); |
54 delete entry; |
58 delete entry; |
55 delete bitmap; |
59 delete bitmap; |
56 |
60 |
57 return KErrNone == result; |
61 return KErrNone == result; |
58 } |
62 } |
59 |
63 |
60 bool AfStorageProxyPrivate::updateActivity(int applicationId, const QString &activityId, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot) |
64 bool AfStorageProxyPrivate::updateActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot) |
61 { |
65 { |
62 int screenshotHandle(-1); |
66 int screenshotHandle(-1); |
63 CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap()); |
67 CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap()); |
64 if (bitmap) { |
68 if (bitmap) { |
65 screenshotHandle = bitmap->Handle(); |
69 screenshotHandle = bitmap->Handle(); |
66 } |
70 } |
67 |
71 |
68 CAfEntry *entry = createSaveEntry(applicationId, activityId, activityData, metadata); |
72 CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata); |
69 int result = mClient->updateActivity(*entry, screenshotHandle); |
73 int result = mClient->updateActivity(*entry, screenshotHandle); |
70 delete entry; |
74 delete entry; |
71 delete bitmap; |
75 delete bitmap; |
72 |
76 |
73 return KErrNone == result; |
77 return KErrNone == result; |
74 } |
78 } |
75 |
79 |
76 bool AfStorageProxyPrivate::saveActivity(int applicationId, const QString &activityId, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot) |
80 bool AfStorageProxyPrivate::saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot) |
77 { |
81 { |
78 int screenshotHandle(-1); |
82 int screenshotHandle(-1); |
79 CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap()); |
83 CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap()); |
80 if (bitmap) { |
84 if (bitmap) { |
81 screenshotHandle = bitmap->Handle(); |
85 screenshotHandle = bitmap->Handle(); |
82 } |
86 } |
83 |
87 |
84 CAfEntry *entry = createSaveEntry(applicationId, activityId, activityData, metadata); |
88 CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata); |
85 int result = mClient->saveActivity(*entry, screenshotHandle); |
89 int result = mClient->saveActivity(*entry, screenshotHandle); |
86 delete entry; |
90 delete entry; |
87 delete bitmap; |
91 delete bitmap; |
88 |
92 |
89 return KErrNone == result; |
93 return KErrNone == result; |
103 int result = mClient->removeApplicationActivities(*entry); |
107 int result = mClient->removeApplicationActivities(*entry); |
104 delete entry; |
108 delete entry; |
105 return KErrNone == result; |
109 return KErrNone == result; |
106 } |
110 } |
107 |
111 |
108 bool AfStorageProxyPrivate::activities(QList<QVariantHash> &list) |
112 bool AfStorageProxyPrivate::activities(QList<QVariantHash> &list, int limit) |
109 { |
113 { |
110 RPointerArray<CAfEntry> results; |
114 RPointerArray<CAfEntry> results; |
111 |
115 |
112 int result = mClient->activities(results); |
116 int result = mClient->activities(results, limit); |
113 list.clear(); |
117 list.clear(); |
114 for (int i=0; i < results.Count(); ++i) { |
118 for (int i=0; i < results.Count(); ++i) { |
115 list.append(extractMetadata(results[i])); |
119 list.append(extractMetadata(results[i], false)); |
116 } |
120 } |
117 |
121 |
118 results.ResetAndDestroy(); |
122 results.ResetAndDestroy(); |
119 return KErrNone == result; |
123 return KErrNone == result; |
120 } |
124 } |
252 flags |= CAfEntry::Invisible; |
256 flags |= CAfEntry::Invisible; |
253 } |
257 } |
254 |
258 |
255 HBufC *actBuff = XQConversions::qStringToS60Desc(activityId); |
259 HBufC *actBuff = XQConversions::qStringToS60Desc(activityId); |
256 CleanupStack::PushL(actBuff); |
260 CleanupStack::PushL(actBuff); |
|
261 |
|
262 HBufC *customNameBuff = XQConversions::qStringToS60Desc(customActivityName); |
|
263 CleanupStack::PushL(customNameBuff); |
|
264 |
257 entry = CAfEntry::NewL(flags, |
265 entry = CAfEntry::NewL(flags, |
258 applicationId, |
266 applicationId, |
259 *actBuff, |
267 *actBuff, |
|
268 *customNameBuff, |
260 KNullDesC, |
269 KNullDesC, |
261 privateBuff, |
270 privateBuff, |
262 publicBuff); |
271 publicBuff); |
|
272 CleanupStack::PopAndDestroy(customNameBuff); |
263 CleanupStack::PopAndDestroy(actBuff); |
273 CleanupStack::PopAndDestroy(actBuff); |
264 CleanupStack::PopAndDestroy(&publicBuff); |
274 CleanupStack::PopAndDestroy(&publicBuff); |
265 CleanupStack::PopAndDestroy(&privateBuff); |
275 CleanupStack::PopAndDestroy(&privateBuff); |
266 ); |
276 ); |
267 return entry; |
277 return entry; |
280 } |
290 } |
281 |
291 |
282 return resultEntry; |
292 return resultEntry; |
283 } |
293 } |
284 |
294 |
285 QVariantHash AfStorageProxyPrivate::extractMetadata(CAfEntry *entry) |
295 QVariantHash AfStorageProxyPrivate::extractMetadata(CAfEntry *entry, bool includePublicData) |
286 { |
296 { |
287 QVariantHash metadata; |
297 QVariantHash metadata; |
288 metadata << entry->Data(CAfEntry::Public); |
298 if (includePublicData) { |
|
299 metadata << entry->Data(CAfEntry::Public); |
|
300 } |
289 metadata.insert(ActivityApplicationKeyword, entry->ApplicationId()); |
301 metadata.insert(ActivityApplicationKeyword, entry->ApplicationId()); |
290 metadata.insert(ActivityActivityKeyword, XQConversions::s60DescToQString(entry->ActivityId())); |
302 metadata.insert(ActivityActivityKeyword, XQConversions::s60DescToQString(entry->ActivityId())); |
|
303 metadata.insert(ActivityApplicationName, activityDisplayText(entry)); |
291 metadata.insert(ActivityScreenshotKeyword, XQConversions::s60DescToQString(entry->ImageSrc())); |
304 metadata.insert(ActivityScreenshotKeyword, XQConversions::s60DescToQString(entry->ImageSrc())); |
292 metadata.insert(ActivityPersistence, (entry->Flags() & CAfEntry::Persistent) ? true : false); |
305 metadata.insert(ActivityPersistence, (entry->Flags() & CAfEntry::Persistent) ? true : false); |
293 metadata.insert(ActivityVisibility, (entry->Flags() & CAfEntry::Invisible) ? false : true); |
306 metadata.insert(ActivityVisibility, (entry->Flags() & CAfEntry::Invisible) ? false : true); |
294 return metadata; |
307 return metadata; |
295 } |
308 } |
296 |
309 |
|
310 QString AfStorageProxyPrivate::activityDisplayText(CAfEntry *entry) |
|
311 { |
|
312 if (entry->CustomActivityName().Compare(KNullDesC()) == 0) { |
|
313 TApaAppInfo info; |
|
314 mAppArcSession.GetAppInfo(info, TUid::Uid(entry->ApplicationId())); |
|
315 return QString::fromUtf16(info.iShortCaption.Ptr(), info.iShortCaption.Length()); |
|
316 } else { |
|
317 return XQConversions::s60DescToQString(entry->CustomActivityName()); |
|
318 } |
|
319 } |