activityfw/activitydatabase/hsactivitydbserver/s60/src/hsactivitysession_p.cpp
changeset 66 32469d7d46ff
parent 61 8e5041d13c84
--- a/activityfw/activitydatabase/hsactivitydbserver/s60/src/hsactivitysession_p.cpp	Fri Apr 16 15:16:09 2010 +0300
+++ b/activityfw/activitydatabase/hsactivitydbserver/s60/src/hsactivitysession_p.cpp	Mon May 03 12:48:45 2010 +0300
@@ -19,14 +19,13 @@
 #include "hsactivityglobals.h"
 #include "hsserializer.h"
 #include <qglobal.h>
-
-const char ActivityPrimaryKeyFormat [] = "%1:%2";
+#include <qpixmap.h>
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-HsActivitySessionPrivate::HsActivitySessionPrivate(HsActivityDbClientInterface& storage)
-: mStorage(storage), mAppId(KErrNotFound)
+HsActivitySessionPrivate::HsActivitySessionPrivate(HsActivityDbClientInterface &storage)
+    : mStorage(storage), mAppId(KErrNotFound)
 {
 }
 
@@ -36,34 +35,56 @@
 //
 HsActivitySessionPrivate::~HsActivitySessionPrivate()
 {
-	 CancelNotify();
-     mData.Close();
+    CancelNotify();
+    mData.Close();
 }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::ServiceL(const RMessage2& message)
+void HsActivitySessionPrivate::ServiceL(const RMessage2 &message)
 {
     mActivity.clear();
     mResult.clear();
     mName.clear();
-    
-    int errNo(KErrNone);
-    switch(message.Function()) {
-    case AddActivity: HandleAddActivityL(message); break;
-    case UpdateActivity: HandleUpdateActivityL(message); break;
-    case RemoveActivity: HandleRemoveActivityL(message); break;
-    case RemoveApplicationActivities: HandleRemoveApplicationActivitiesL(message); break;
-    case Activities: HandleActivitiesL(message);break;
-    case ApplicationActivities: HandleApplicationActivitiesL(message);break;
-    case LaunchActivity: HandleLaunchActivityL(message);break;
-    case WaitActivity: HandleWaitActivityL(message);return; //!!!!! This message shouldn't be compleated !!!!!
-    case GetData: HandleGetDataL(message); break;
-    case CancelWait: HandleCancelWaitActivity(message); break;
-    default:
-        message.Panic(KErr400, CServer2::EBadMessageNumber);
+
+    switch (message.Function()) {
+        case AddActivity:
+            HandleAddActivityL(message);
+            break;
+        case UpdateActivity:
+            HandleUpdateActivityL(message);
+            break;
+        case RemoveActivity:
+            HandleRemoveActivityL(message);
+            break;
+        case RemoveApplicationActivities:
+            HandleRemoveApplicationActivitiesL(message);
+            break;
+        case Activities:
+            HandleActivitiesL(message);
+            break;
+        case ApplicationActivities:
+            HandleApplicationActivitiesL(message);
+            break;
+        case LaunchActivity:
+            HandleLaunchActivityL(message);
+            break;
+        case WaitActivity:
+            HandleWaitActivityL(message);
+            return; //!!!!! This message shouldn't be compleated !!!!!
+        case GetThumbnail:
+            HandleGetThumbnailL(message);
+            break;
+        case GetData:
+            HandleGetDataL(message);
+            break;
+        case CancelWait:
+            HandleCancelWaitActivity(message);
+            break;
+        default:
+            message.Panic(KErr400, CServer2::EBadMessageNumber);
     }
     message.Complete(KErrNone);
 }
@@ -81,7 +102,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleAddActivityL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleAddActivityL(const RMessage2 &message)
 {
     ReadDataL(message);
     LeaveIfNotZero(mStorage.addActivity(mActivity));
@@ -91,7 +112,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleUpdateActivityL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleUpdateActivityL(const RMessage2 &message)
 {
     ReadDataL(message);
     LeaveIfNotZero(mStorage.updateActivity(mActivity));
@@ -101,7 +122,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleRemoveActivityL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleRemoveActivityL(const RMessage2 &message)
 {
     ReadDataL(message);
     LeaveIfNotZero(mStorage.removeActivity(mActivity));
@@ -111,7 +132,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleRemoveApplicationActivitiesL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleRemoveApplicationActivitiesL(const RMessage2 &message)
 {
     ReadDataL(message);
     LeaveIfNotZero(mStorage.removeApplicationActivities(mActivity));
@@ -121,7 +142,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleActivitiesL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleActivitiesL(const RMessage2 &message)
 {
     int errNo(KErrNone);
     QT_TRYCATCH_LEAVING(errNo = mStorage.activities(mResult));
@@ -135,7 +156,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleApplicationActivitiesL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleApplicationActivitiesL(const RMessage2 &message)
 {
     int errNo(KErrNone);
     ReadDataL(message);
@@ -150,7 +171,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleLaunchActivityL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleLaunchActivityL(const RMessage2 &message)
 {
     ReadDataL(message);
     LaunchActivityL();
@@ -160,7 +181,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleWaitActivityL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleWaitActivityL(const RMessage2 &message)
 {
     ReadDataL(message);
     WaitActivityL(message);
@@ -170,16 +191,26 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleCancelWaitActivity(const RMessage2& /*message*/)
-	{
-	CancelNotify();
-	}
+void HsActivitySessionPrivate::HandleGetThumbnailL(const RMessage2 &message)
+{
+    ReadDataL(message);
+    GetThumbnailL(message);
+}
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::HandleGetDataL(const RMessage2& message)
+void HsActivitySessionPrivate::HandleCancelWaitActivity(const RMessage2& /*message*/)
+{
+    CancelNotify();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void HsActivitySessionPrivate::HandleGetDataL(const RMessage2 &message)
 {
     message.WriteL(0, mData);
 }
@@ -190,25 +221,25 @@
 //
 void HsActivitySessionPrivate::LaunchActivityL()
 {
-    CServer2* const server(const_cast<CServer2*>(Server()));
-    if(mActivity.end() == mActivity.find(ActivityApplicationKeyword) || 
-       mActivity.end() == mActivity.find(ActivityActivityKeyword)) {
+    CServer2 *const server(const_cast<CServer2 *>(Server()));
+    if (mActivity.end() == mActivity.find(ActivityApplicationKeyword) ||
+            mActivity.end() == mActivity.find(ActivityActivityKeyword)) {
         User::Leave(KErrCorrupt);
     }
-    static_cast<HsActivityServerPrivate*>
-        (server)->notifyL(mActivity.find(ActivityApplicationKeyword).value().toInt(), 
-                         mActivity.find(ActivityActivityKeyword).value().toString());
+    static_cast<HsActivityServerPrivate *>
+    (server)->notifyL(mActivity.find(ActivityApplicationKeyword).value().toInt(),
+                      mActivity.find(ActivityActivityKeyword).value().toString());
 }
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::LaunchActivityL(const RMessage2 &message, 
-                                               const QString &name )
+void HsActivitySessionPrivate::LaunchActivityL(const RMessage2 &message,
+        const QString &name)
 {
-    if (mData.MaxSize() < name.toAscii().length()){
-        mData.ReAlloc( name.toAscii().length());
+    if (mData.MaxSize() < name.toAscii().length()) {
+        mData.ReAlloc(name.toAscii().length());
     }
     mData.Copy(reinterpret_cast<const TUint8*>(name.toAscii().data()),
                                                name.toAscii().length());
@@ -220,15 +251,29 @@
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::WaitActivityL(const RMessage2& msg)
+void HsActivitySessionPrivate::WaitActivityL(const RMessage2 &msg)
 {
-    CServer2* const server(const_cast<CServer2*>(Server()));
-    if(mActivity.end() == mActivity.find(ActivityApplicationKeyword)) {
+    CServer2 *const server(const_cast<CServer2 *>(Server()));
+    if (mActivity.end() == mActivity.find(ActivityApplicationKeyword)) {
         User::Leave(KErrCorrupt);
     }
     mAppId = mActivity.find(ActivityApplicationKeyword).value().toInt();
-    static_cast<HsActivityServerPrivate*>
-        (server)->waitNotification(mAppId, msg);
+    static_cast<HsActivityServerPrivate *>
+    (server)->waitNotification(mAppId, msg);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void HsActivitySessionPrivate::GetThumbnailL(const RMessage2 &message)
+{
+    if (mActivity.constEnd() == mActivity.constFind(ActivityScreenshotKeyword)) {
+        User::Leave(KErrGeneral);
+    }
+    mData << QPixmap(mActivity.constFind(ActivityScreenshotKeyword).value().toString());
+    TPckgC<int> dataSize(mData.Size());
+    message.WriteL(1, dataSize);
 }
 
 // -----------------------------------------------------------------------------
@@ -236,36 +281,35 @@
 // -----------------------------------------------------------------------------
 //
 void HsActivitySessionPrivate::CancelNotify()
-	{
-	if ( mAppId != KErrNotFound )
-	    {
-	    CServer2* const server(const_cast<CServer2*>(Server()));
-	    static_cast<HsActivityServerPrivate*>(server)->cancelNotify(mAppId);
-	    mAppId = KErrNotFound;
-	    }
-	}
+{
+    if (mAppId != KErrNotFound) {
+        CServer2 *const server(const_cast<CServer2 *>(Server()));
+        static_cast<HsActivityServerPrivate *>(server)->cancelNotify(mAppId);
+        mAppId = KErrNotFound;
+    }
+}
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::CancelNotify(RMessage2& message)
-	{
-	message.Complete(KErrCancel);
-	}
+void HsActivitySessionPrivate::CancelNotify(RMessage2 &message)
+{
+    message.Complete(KErrCancel);
+}
 
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
-void HsActivitySessionPrivate::ReadDataL(const RMessage2& src)
+void HsActivitySessionPrivate::ReadDataL(const RMessage2 &src)
 {
     int srcLength = src.GetDesLength(0);
     User::LeaveIfError(srcLength);
     RBuf8 buffer;
     CleanupClosePushL(buffer);
     buffer.CreateL(srcLength);
-    src.ReadL( 0, buffer, 0);
+    src.ReadL(0, buffer, 0);
     if (buffer.Length() != srcLength) {
         User::Leave(KErrCorrupt);
     }