activityfw/activityserviceplugin/s60/src/afstorageproxy_p.cpp
changeset 116 305818acdca4
parent 107 b34d53f6acdf
child 119 50e220be30d1
--- a/activityfw/activityserviceplugin/s60/src/afstorageproxy_p.cpp	Wed Aug 18 10:39:24 2010 +0300
+++ b/activityfw/activityserviceplugin/s60/src/afstorageproxy_p.cpp	Mon Sep 13 13:26:33 2010 +0300
@@ -33,15 +33,19 @@
 
 AfStorageProxyPrivate::AfStorageProxyPrivate(AfStorageProxy *q) : mClient(0), q_ptr(q)
 {    
-    QT_TRAP_THROWING(mClient = CAfStorageClient::NewL(*this));
+    QT_TRAP_THROWING(
+        mClient = CAfStorageClient::NewL(*this);
+        User::LeaveIfError(mAppArcSession.Connect());
+    );
 }
 
 AfStorageProxyPrivate::~AfStorageProxyPrivate()
 {
     delete mClient;
+    mAppArcSession.Close();
 }
 
-bool AfStorageProxyPrivate::addActivity(int applicationId, const QString &activityId, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
+bool AfStorageProxyPrivate::addActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
 {    
     int screenshotHandle(-1);
     CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
@@ -49,7 +53,7 @@
         screenshotHandle = bitmap->Handle();
     }
     
-    CAfEntry *entry = createSaveEntry(applicationId, activityId, activityData, metadata);
+    CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata);
     int result = mClient->addActivity(*entry, screenshotHandle);    
     delete entry;
     delete bitmap;
@@ -57,7 +61,7 @@
     return KErrNone == result;
 }
 
-bool AfStorageProxyPrivate::updateActivity(int applicationId, const QString &activityId, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
+bool AfStorageProxyPrivate::updateActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
 {
     int screenshotHandle(-1);
     CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
@@ -65,7 +69,7 @@
         screenshotHandle = bitmap->Handle();
     }
     
-    CAfEntry *entry = createSaveEntry(applicationId, activityId, activityData, metadata);
+    CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata);
     int result = mClient->updateActivity(*entry, screenshotHandle);    
     delete entry;
     delete bitmap;
@@ -73,7 +77,7 @@
     return KErrNone == result;
 }
 
-bool AfStorageProxyPrivate::saveActivity(int applicationId, const QString &activityId, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
+bool AfStorageProxyPrivate::saveActivity(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata, const QPixmap &screenshot)
 {
     int screenshotHandle(-1);
     CFbsBitmap* bitmap(screenshot.toSymbianCFbsBitmap());
@@ -81,7 +85,7 @@
         screenshotHandle = bitmap->Handle();
     }
     
-    CAfEntry *entry = createSaveEntry(applicationId, activityId, activityData, metadata);
+    CAfEntry *entry = createSaveEntry(applicationId, activityId, customActivityName, activityData, metadata);
     int result = mClient->saveActivity(*entry, screenshotHandle);    
     delete entry;
     delete bitmap;
@@ -105,14 +109,14 @@
     return KErrNone == result;
 }
 
-bool AfStorageProxyPrivate::activities(QList<QVariantHash> &list)
+bool AfStorageProxyPrivate::activities(QList<QVariantHash> &list, int limit)
 {
     RPointerArray<CAfEntry> results;
     
-    int result = mClient->activities(results);
+    int result = mClient->activities(results, limit);
     list.clear();
     for (int i=0; i < results.Count(); ++i) {
-        list.append(extractMetadata(results[i]));
+        list.append(extractMetadata(results[i], false));
     }
    
     results.ResetAndDestroy();
@@ -156,7 +160,7 @@
     CAfEntry *entry = getEntry(applicationId, activityId);
     
     if (entry) {
-        metadata = extractMetadata(entry);
+        metadata = extractMetadata(entry, true);
         delete entry;
         return true;
     }    
@@ -225,11 +229,11 @@
 CAfEntry *AfStorageProxyPrivate::createFilterEntry(int applicationId, const QString &activityId)
 {   
     CAfEntry *entry(0); 
-    QT_TRAP_THROWING(entry = CAfEntry::NewL(0, applicationId, TPtrC(static_cast<const TUint16*>(activityId.utf16())), KNullDesC(), KNullDesC8(), KNullDesC8()));
+    QT_TRAP_THROWING(entry = CAfEntry::NewL(0, applicationId, TPtrC(static_cast<const TUint16*>(activityId.utf16())), KNullDesC(), KNullDesC(), KNullDesC8(), KNullDesC8()));
     return entry;
 }
 
-CAfEntry *AfStorageProxyPrivate::createSaveEntry(int applicationId, const QString &activityId, const QVariant &activityData, const QVariantHash &metadata)
+CAfEntry *AfStorageProxyPrivate::createSaveEntry(int applicationId, const QString &activityId, const QString &customActivityName, const QVariant &activityData, const QVariantHash &metadata)
 {   
     CAfEntry *entry(0); 
     
@@ -254,12 +258,18 @@
         
         HBufC *actBuff = XQConversions::qStringToS60Desc(activityId);
         CleanupStack::PushL(actBuff);
+        
+        HBufC *customNameBuff = XQConversions::qStringToS60Desc(customActivityName);
+        CleanupStack::PushL(customNameBuff);
+        
         entry = CAfEntry::NewL(flags, 
                                applicationId, 
                                *actBuff, 
+                               *customNameBuff,
                                KNullDesC, 
                                privateBuff, 
                                publicBuff);
+        CleanupStack::PopAndDestroy(customNameBuff);
         CleanupStack::PopAndDestroy(actBuff);
         CleanupStack::PopAndDestroy(&publicBuff);
         CleanupStack::PopAndDestroy(&privateBuff);
@@ -282,15 +292,28 @@
     return resultEntry;
 }
 
-QVariantHash AfStorageProxyPrivate::extractMetadata(CAfEntry *entry)
+QVariantHash AfStorageProxyPrivate::extractMetadata(CAfEntry *entry, bool includePublicData)
 {
     QVariantHash metadata;
-    metadata << entry->Data(CAfEntry::Public);
+    if (includePublicData) {
+        metadata << entry->Data(CAfEntry::Public);
+    }
     metadata.insert(ActivityApplicationKeyword, entry->ApplicationId());
     metadata.insert(ActivityActivityKeyword, XQConversions::s60DescToQString(entry->ActivityId()));
+    metadata.insert(ActivityApplicationName, activityDisplayText(entry));
     metadata.insert(ActivityScreenshotKeyword, XQConversions::s60DescToQString(entry->ImageSrc()));
     metadata.insert(ActivityPersistence, (entry->Flags() & CAfEntry::Persistent) ? true : false);
     metadata.insert(ActivityVisibility, (entry->Flags() & CAfEntry::Invisible) ? false : true); 
     return metadata;
 }
 
+QString AfStorageProxyPrivate::activityDisplayText(CAfEntry *entry)
+{
+    if (entry->CustomActivityName().Compare(KNullDesC()) == 0) {
+        TApaAppInfo info;
+        mAppArcSession.GetAppInfo(info, TUid::Uid(entry->ApplicationId()));
+        return QString::fromUtf16(info.iShortCaption.Ptr(), info.iShortCaption.Length());        
+    } else {
+        return XQConversions::s60DescToQString(entry->CustomActivityName());
+    }
+}