activityfw/activitydatabase/hsactivitydbclient/s60/src/hsactivitydbasyncrequest_p.cpp
changeset 93 82b66994846c
parent 92 782e3408c2ab
child 94 dbb8300717f7
--- a/activityfw/activitydatabase/hsactivitydbclient/s60/src/hsactivitydbasyncrequest_p.cpp	Fri Apr 16 14:45:49 2010 +0300
+++ b/activityfw/activitydatabase/hsactivitydbclient/s60/src/hsactivitydbasyncrequest_p.cpp	Fri Apr 30 15:22:08 2010 +0300
@@ -17,46 +17,70 @@
 
 #include "hsactivitydbasyncrequest_p.h"
 #include "hsactivitydbclient_p.h"
-#include "hsserializer.h"
+#include "hsactivitydbclient.h"
+#include <fbs.h>
+#include <xqconversions>
+
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 HsActivityDbAsyncRequestPrivate*
 HsActivityDbAsyncRequestPrivate::NewL(HsActivityDbAsyncRequestObserver &observer,
-                                      HsActivityDbClientPrivate &session)
+                                      HsActivityDbClientPrivate &session, 
+                                      TAsyncRequest requestType,
+                                      void* userData)
 {
-    HsActivityDbAsyncRequestPrivate *self =
-        HsActivityDbAsyncRequestPrivate::NewLC(observer, session);
+    HsActivityDbAsyncRequestPrivate *self = 
+    new(ELeave)HsActivityDbAsyncRequestPrivate(observer, session, requestType, userData);
+    CleanupStack::PushL(self);
+    self->mDataBuf.CreateL(64);
     CleanupStack::Pop(self);
     return self;
 }
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 HsActivityDbAsyncRequestPrivate*
-HsActivityDbAsyncRequestPrivate::NewLC(HsActivityDbAsyncRequestObserver &observer,
-                                       HsActivityDbClientPrivate &session)
+HsActivityDbAsyncRequestPrivate::newWaitActivityL(HsActivityDbAsyncRequestObserver & observer, 
+            HsActivityDbClientPrivate & session)
+    {
+    return HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitActivity);
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void HsActivityDbAsyncRequestPrivate::getThumbnailLD(HsActivityDbAsyncRequestObserver &observer,
+                                      HsActivityDbClientPrivate &session, 
+                                      QSize size, 
+                                      QString imagePath, 
+                                      QString  mimeType, 
+                                      void *userDdata)
 {
-    HsActivityDbAsyncRequestPrivate *self =
-        new(ELeave)HsActivityDbAsyncRequestPrivate(observer, session);
-    CleanupStack::PushL(self);
-    self->mDataBuf.CreateL(64);
-    return self;
+    HsActivityDbAsyncRequestPrivate *instance = 
+        HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitGetThumbnail, userDdata);
+    instance->getThumbnail( size, imagePath, mimeType);
 }
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
 HsActivityDbAsyncRequestPrivate::HsActivityDbAsyncRequestPrivate(HsActivityDbAsyncRequestObserver &observer,
-                                                                 HsActivityDbClientPrivate &session)
+                                                                 HsActivityDbClientPrivate &session,
+                                                                 TAsyncRequest requestType, 
+                                                                 void* userData)
     :
     CActive(EPriorityStandard),
     mObserver(observer),
     mSession(session),
-    mRequestType(-1),
-    mDataSize()
+    mRequestType(requestType),
+    mUserData(userData)
 {
     CActiveScheduler::Add(this);
 }
@@ -69,6 +93,8 @@
 {
     mDataBuf.Close();
     Cancel();
+    delete mBitmapPath;
+    delete mBitmapMimeType;
 }
 
 // -----------------------------------------------------------------------------
@@ -88,21 +114,36 @@
 //
 void HsActivityDbAsyncRequestPrivate::RunL()
 {
-    RBuf8 buff;
-    CleanupClosePushL(buff);
-    QString data;
     int requestResult(iStatus.Int());
     if (KErrNone == requestResult) {
-        if (0 < mDataSize()) {
-            buff.CreateL(mDataSize());
+        switch (mRequestType){
+        case WaitActivity: {
+            RBuf8 buff;
+            CleanupClosePushL(buff);
+            QString data;
+            if (0 < mDataSize()) {
+                buff.CreateL(mDataSize());
+            }
+            mSession.getData(mTaskId(), buff);
+            data = QString::fromAscii(reinterpret_cast<const char *>(buff.Ptr()),
+                                      buff.Length());
+            buff.Close();
+            mObserver.asyncRequestCompleated(requestResult, mRequestType, data);
+            CleanupStack::PopAndDestroy(&buff);
+            break;
+            }
+        case EWaitGetThumbnail: {
+            CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
+            CleanupStack::PushL(bitmap);
+            User::LeaveIfError(bitmap->Duplicate(mBitmapId()));
+            mSession.getData(mTaskId(), mDataBuf);//ACK Bitmap copy
+            mObserver.asyncRequestCompleated(requestResult, mRequestType, QPixmap::fromSymbianCFbsBitmap(bitmap), mUserData);
+            CleanupStack::PopAndDestroy(bitmap);
+            break;
+            }
         }
-        mSession.getData(buff);
-        data = QString::fromAscii(reinterpret_cast<const char *>(buff.Ptr()),
-                                  buff.Length());
-        buff.Close();
+        mSession.Pop(this);
     }
-    mObserver.asyncRequestCompleated(requestResult, mRequestType, data);
-    CleanupStack::PopAndDestroy(&buff);
 }
 
 // -----------------------------------------------------------------------------
@@ -111,9 +152,25 @@
 //
 void HsActivityDbAsyncRequestPrivate::waitActivity(const QVariantHash &condition)
 {
-    mRequestType = WaitActivity;
     iStatus = KRequestPending;
     SetActive();
-    mDataBuf << condition;
-    mSession.sendDataAsync(mRequestType, TIpcArgs(&mDataBuf, &mDataSize), iStatus);
+    mDataSize = condition.find(ActivityApplicationKeyword).value().toInt();
+    TPtrC8 actId(KNullDesC8);
+    TPtrC8 desc(KNullDesC8);
+    mSession.sendDataAsync(mRequestType, TIpcArgs(&mDataSize, &actId, &desc, &mTaskId), iStatus);
 }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void HsActivityDbAsyncRequestPrivate::getThumbnail(QSize size, QString imagePath, QString  mimeType)
+{
+    iStatus = KRequestPending;
+    SetActive();
+    mBitmapId = size.width();
+    mTaskId = size.height();
+    mBitmapPath = XQConversions::qStringToS60Desc(imagePath);
+    mBitmapMimeType = XQConversions::qStringToS60Desc8(mimeType);
+    mSession.sendDataAsync(mRequestType, TIpcArgs(&mBitmapId, &mTaskId, mBitmapPath, mBitmapMimeType), iStatus);
+}