activityfw/storage/client/src/afstorageentry.cpp
changeset 104 9b022b1f357c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/storage/client/src/afstorageentry.cpp	Tue Jul 06 14:37:10 2010 +0300
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <xqconversions.h>
+
+#include "afstorageentry.h"
+#include "afentry.h"
+#include "afserializer.h"
+#include "afstorageglobals.h"
+// -----------------------------------------------------------------------------
+/**
+ * Constructor. 
+ * Initialize object with preallocated symbian specyfic data structure. Function doesn't copy content
+ * @param data - pointer to symbian specyfic data structure
+ */
+AfStorageEntry::AfStorageEntry(QSharedPointer<CAfEntry> data)
+:
+mData(data)
+{}
+
+// -----------------------------------------------------------------------------
+/**
+* Constructor
+* Initialize object with preallocated data structure. Function doesn't copy content
+* @param data - activity data structure
+*/
+AfStorageEntry::AfStorageEntry(const AfStorageEntry &data)
+:
+    mData(data.mData)
+{}
+
+// -----------------------------------------------------------------------------
+/**
+ * Constructor
+ * Initialize object with data. Function do deep copy of data
+ * @param appId - unique application identifier
+ * @param actId - activity identifier
+ * @param privateData - private part of activity data
+ * @param publicData - public part of activity data
+ */
+AfStorageEntry::AfStorageEntry(int appId, 
+                               const QString &actId, 
+                               const QVariant &privateData, 
+                               const QVariantHash& publicData)
+:
+    mData(0)
+{
+    int flags(0);
+    QVariantHash privData;
+    privData.insert(ActivityDataKeyword, privateData);
+    RBuf8 privateBuff, publicBuff;
+    CleanupClosePushL(privateBuff);
+    CleanupClosePushL(publicBuff);
+    privateBuff << privData;
+    publicBuff << publicData;
+    
+    if (publicData.end() != publicData.find(ActivityPersistence) && 
+        publicData[ActivityPersistence].toBool()) {
+        flags |= CAfEntry::Persistent;
+    }
+    
+    if (publicData.end() != publicData.find(ActivityVisibility) && 
+        !publicData[ActivityVisibility].toBool()) {
+        flags |= CAfEntry::Invisible;
+    }
+    
+    HBufC *actBuff = XQConversions::qStringToS60Desc(actId);
+    CleanupStack::PushL(actBuff);
+    mData = QSharedPointer<CAfEntry>(CAfEntry::NewL(flags, 
+                                                    appId, 
+                                                    *actBuff, 
+                                                    KNullDesC, 
+                                                    privateBuff, 
+                                                    publicBuff));
+    CleanupStack::PopAndDestroy(actBuff);
+    CleanupStack::PopAndDestroy(&publicBuff);
+    CleanupStack::PopAndDestroy(&privateBuff);
+}
+
+// -----------------------------------------------------------------------------
+/**
+ * Retrieve S60 structure representation
+ */
+const CAfEntry* AfStorageEntry::data() const
+{
+    return mData.data();
+}
+ 
+
+// -----------------------------------------------------------------------------
+/**
+ * Retrieve activity flags
+ * @return activity flags
+ */
+int AfStorageEntry::flags() const
+{
+    return mData->Flags();
+}
+
+// -----------------------------------------------------------------------------
+/**
+ * Retrieve application unique identifier
+ * @return application identifier
+ */
+int AfStorageEntry::applicationId() const
+{
+    return mData->ApplicationId();
+}
+
+// -----------------------------------------------------------------------------
+/**
+ * Retrieve activity identifier. Identyfier is unique for each application 
+ * @return activity identifier
+ */
+QString AfStorageEntry::activityId() const
+{
+    return XQConversions::s60DescToQString(mData->ActivityId());
+}
+
+// -----------------------------------------------------------------------------
+/**
+ * Retrieve path to activity thumbanil path 
+ * @return thumbail loacation path
+ */
+QString AfStorageEntry::imageSrc() const
+{
+    return XQConversions::s60DescToQString(mData->ImageSrc());
+}
+
+// -----------------------------------------------------------------------------
+/**
+ * Retrieve public part of activity data 
+ * @return public activity data
+ */
+QVariantHash AfStorageEntry::publicData() const
+{
+    QVariantHash deserializedData;
+    deserializedData << mData->Data(CAfEntry::Public);
+    deserializedData.insert(ActivityApplicationKeyword, applicationId());
+    deserializedData.insert(ActivityActivityKeyword, activityId());
+    deserializedData.insert(ActivityScreenshotKeyword, imageSrc());
+    deserializedData.insert(ActivityPersistence, (flags() & CAfEntry::Persistent) ? true : false);
+    deserializedData.insert(ActivityVisibility, (flags() & CAfEntry::Invisible) ? false : true);
+    return deserializedData;
+}
+
+// -----------------------------------------------------------------------------
+/**
+ * Retrieve private part of activity data 
+ * @return private activity data
+ */
+QVariant AfStorageEntry::privateData() const
+{
+    QVariantHash deserializedData;
+    deserializedData << mData->Data(CAfEntry::Private);
+    return deserializedData[ActivityDataKeyword];
+}