activityfw/activitydatabase/hsactivitydbclient/s60/src/hsactivitydbasyncrequest_p.cpp
changeset 80 397d00875918
parent 73 4bc7b118b3df
equal deleted inserted replaced
73:4bc7b118b3df 80:397d00875918
    17 
    17 
    18 #include "hsactivitydbasyncrequest_p.h"
    18 #include "hsactivitydbasyncrequest_p.h"
    19 #include "hsactivitydbclient_p.h"
    19 #include "hsactivitydbclient_p.h"
    20 #include "hsactivitydbclient.h"
    20 #include "hsactivitydbclient.h"
    21 #include <fbs.h>
    21 #include <fbs.h>
    22 #include <xqconversions>
    22 #include <XQConversions>
    23 
    23 
    24 
    24 
    25 // -----------------------------------------------------------------------------
    25 // -----------------------------------------------------------------------------
    26 //
    26 //
    27 // -----------------------------------------------------------------------------
    27 // -----------------------------------------------------------------------------
    28 //
    28 //
    29 HsActivityDbAsyncRequestPrivate*
    29 HsActivityDbAsyncRequestPrivate*
    30 HsActivityDbAsyncRequestPrivate::NewL(HsActivityDbAsyncRequestObserver &observer,
    30 HsActivityDbAsyncRequestPrivate::NewLC(HsActivityDbAsyncRequestObserver &observer,
    31                                       HsActivityDbClientPrivate &session, 
    31                                       HsActivityDbClientPrivate &session, 
    32                                       TAsyncRequest requestType,
    32                                       TAsyncRequest requestType,
    33                                       void* userData)
    33                                       void* userData)
    34 {
    34 {
    35     HsActivityDbAsyncRequestPrivate *self = 
    35     HsActivityDbAsyncRequestPrivate *self = 
    36     new(ELeave)HsActivityDbAsyncRequestPrivate(observer, session, requestType, userData);
    36     new(ELeave)HsActivityDbAsyncRequestPrivate(observer, session, requestType, userData);
    37     CleanupStack::PushL(self);
    37     CleanupStack::PushL(self);
    38     self->mDataBuf.CreateL(64);
    38     self->mDataBuf.CreateL(64);
       
    39     return self;
       
    40 }
       
    41 
       
    42 // -----------------------------------------------------------------------------
       
    43 //
       
    44 // -----------------------------------------------------------------------------
       
    45 //
       
    46 void HsActivityDbAsyncRequestPrivate::waitActivityLD(
       
    47                                 HsActivityDbAsyncRequestObserver & observer, 
       
    48                                 HsActivityDbClientPrivate & session, 
       
    49                                 const QVariantHash &activity)
       
    50 {
       
    51     HsActivityDbAsyncRequestPrivate *self =
       
    52         HsActivityDbAsyncRequestPrivate::NewLC(observer, 
       
    53                                                session, 
       
    54                                                EWaitActivity);
       
    55     self->mSession.PushL(self);
    39     CleanupStack::Pop(self);
    56     CleanupStack::Pop(self);
    40     return self;
    57     self->waitActivity(activity);
    41 }
    58 }
    42 
    59 
    43 // -----------------------------------------------------------------------------
    60 // -----------------------------------------------------------------------------
    44 //
    61 //
    45 // -----------------------------------------------------------------------------
    62 // -----------------------------------------------------------------------------
    46 //
    63 //
    47 HsActivityDbAsyncRequestPrivate*
    64 void HsActivityDbAsyncRequestPrivate::notifyDataChangeLD(
    48 HsActivityDbAsyncRequestPrivate::newWaitActivityL(HsActivityDbAsyncRequestObserver & observer, 
    65                                    HsActivityDbAsyncRequestObserver &observer, 
    49             HsActivityDbClientPrivate & session)
    66                                    HsActivityDbClientPrivate &session)
    50     {
    67 {
    51     return HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitActivity);
    68     HsActivityDbAsyncRequestPrivate *self = 
    52     }
    69         HsActivityDbAsyncRequestPrivate::NewLC(observer, 
       
    70                                               session,
       
    71                                               ENotifyDataChange);
       
    72     self->mSession.PushL(self);
       
    73     CleanupStack::Pop(self);
       
    74     self->notifyDataChange();
       
    75 }
    53 
    76 
    54 // -----------------------------------------------------------------------------
    77 // -----------------------------------------------------------------------------
    55 //
    78 //
    56 // -----------------------------------------------------------------------------
    79 // -----------------------------------------------------------------------------
    57 //
    80 //
    58 void HsActivityDbAsyncRequestPrivate::getThumbnailLD(HsActivityDbAsyncRequestObserver &observer,
    81 void HsActivityDbAsyncRequestPrivate::getThumbnailLD(HsActivityDbAsyncRequestObserver &observer,
    59                                       HsActivityDbClientPrivate &session, 
    82                                       HsActivityDbClientPrivate &session, 
    60                                       QSize size, 
    83                                       QSize size, 
    61                                       QString imagePath, 
    84                                       const QString &imagePath, 
    62                                       QString  mimeType, 
    85                                       const QString &mimeType, 
    63                                       void *userDdata)
    86                                       void *userDdata)
    64 {
    87 {
    65     HsActivityDbAsyncRequestPrivate *instance = 
    88     HsActivityDbAsyncRequestPrivate *instance = 
    66         HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitGetThumbnail, userDdata);
    89         HsActivityDbAsyncRequestPrivate::NewLC(observer, session, EWaitGetThumbnail, userDdata);
       
    90     session.PushL(instance);
       
    91     CleanupStack::Pop(instance);
    67     instance->getThumbnail( size, imagePath, mimeType);
    92     instance->getThumbnail( size, imagePath, mimeType);
    68 }
    93 }
    69 
    94 
    70 // -----------------------------------------------------------------------------
    95 // -----------------------------------------------------------------------------
    71 //
    96 //
   102 // -----------------------------------------------------------------------------
   127 // -----------------------------------------------------------------------------
   103 //
   128 //
   104 void HsActivityDbAsyncRequestPrivate::DoCancel()
   129 void HsActivityDbAsyncRequestPrivate::DoCancel()
   105 {
   130 {
   106     if (IsActive()) {
   131     if (IsActive()) {
   107         mSession.cancelWaitActivity();
   132         switch (mRequestType) {
       
   133         case EWaitActivity: mSession.cancelWaitActivity(); break;
       
   134         case ENotifyDataChange: mSession.cancelNotifyDataChange(); break;
       
   135         };
   108     }
   136     }
   109 }
   137 }
   110 
   138 
   111 // -----------------------------------------------------------------------------
   139 // -----------------------------------------------------------------------------
   112 //
   140 //
   113 // -----------------------------------------------------------------------------
   141 // -----------------------------------------------------------------------------
   114 //
   142 //
   115 void HsActivityDbAsyncRequestPrivate::RunL()
   143 void HsActivityDbAsyncRequestPrivate::RunL()
   116 {
   144 {
   117     int requestResult(iStatus.Int());
   145     switch (mRequestType) {
   118     if (KErrNone == requestResult) {
   146     case WaitActivity: {
   119         switch (mRequestType){
   147         QString data;
   120         case WaitActivity: {
   148         if (KErrNone == iStatus.Int()) {
   121             RBuf8 buff;
   149             RBuf8 buff;
   122             CleanupClosePushL(buff);
   150             CleanupClosePushL(buff);
   123             QString data;
       
   124             if (0 < mDataSize()) {
   151             if (0 < mDataSize()) {
   125                 buff.CreateL(mDataSize());
   152                 buff.CreateL(mDataSize());
   126             }
   153             }
   127             mSession.getData(mTaskId(), buff);
   154             mSession.getData(mTaskId(), buff);
   128             data = QString::fromAscii(reinterpret_cast<const char *>(buff.Ptr()),
   155             data = QString::fromAscii(reinterpret_cast<const char *>(buff.Ptr()),
   129                                       buff.Length());
   156                                       buff.Length());
   130             buff.Close();
       
   131             mObserver.asyncRequestCompleated(requestResult, mRequestType, data);
       
   132             CleanupStack::PopAndDestroy(&buff);
   157             CleanupStack::PopAndDestroy(&buff);
   133             break;
   158         }
   134             }
   159         mObserver.asyncRequestCompleated(iStatus.Int(), mRequestType, data);
   135         case EWaitGetThumbnail: {
   160         mSession.Pop(this);
       
   161         delete this;
       
   162         break;
       
   163         }
       
   164     case EWaitGetThumbnail: {
       
   165         QPixmap pixmap;
       
   166         if (KErrNone == iStatus.Int()) {
   136             CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
   167             CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
   137             CleanupStack::PushL(bitmap);
   168             CleanupStack::PushL(bitmap);
   138             User::LeaveIfError(bitmap->Duplicate(mBitmapId()));
   169             User::LeaveIfError(bitmap->Duplicate(mBitmapId()));
   139             mSession.getData(mTaskId(), mDataBuf);//ACK Bitmap copy
   170             mSession.getData(mTaskId(), mDataBuf);//ACK Bitmap copy
   140             mObserver.asyncRequestCompleated(requestResult, mRequestType, QPixmap::fromSymbianCFbsBitmap(bitmap), mUserData);
   171             pixmap = QPixmap::fromSymbianCFbsBitmap(bitmap);
   141             CleanupStack::PopAndDestroy(bitmap);
   172             CleanupStack::PopAndDestroy(bitmap);
   142             break;
   173         }
   143             }
   174         mObserver.asyncRequestCompleated(iStatus.Int(), mRequestType, pixmap, mUserData);
   144         }
       
   145         mSession.Pop(this);
   175         mSession.Pop(this);
       
   176         delete this;
       
   177         break;
       
   178         }
       
   179     case ENotifyDataChange: {
       
   180         mObserver.asyncRequestCompleated(iStatus.Int(),mRequestType);
       
   181         mSession.Pop(this);
       
   182         delete this;
       
   183         }
   146     }
   184     }
   147 }
   185 }
   148 
   186 
   149 // -----------------------------------------------------------------------------
   187 // -----------------------------------------------------------------------------
   150 //
   188 //
   172     mTaskId = size.height();
   210     mTaskId = size.height();
   173     mBitmapPath = XQConversions::qStringToS60Desc(imagePath);
   211     mBitmapPath = XQConversions::qStringToS60Desc(imagePath);
   174     mBitmapMimeType = XQConversions::qStringToS60Desc8(mimeType);
   212     mBitmapMimeType = XQConversions::qStringToS60Desc8(mimeType);
   175     mSession.sendDataAsync(mRequestType, TIpcArgs(&mBitmapId, &mTaskId, mBitmapPath, mBitmapMimeType), iStatus);
   213     mSession.sendDataAsync(mRequestType, TIpcArgs(&mBitmapId, &mTaskId, mBitmapPath, mBitmapMimeType), iStatus);
   176 }
   214 }
       
   215 
       
   216 // -----------------------------------------------------------------------------
       
   217 //
       
   218 // -----------------------------------------------------------------------------
       
   219 //
       
   220 void HsActivityDbAsyncRequestPrivate::notifyDataChange()
       
   221 {
       
   222     iStatus = KRequestPending;
       
   223     SetActive();
       
   224     mSession.sendDataAsync(ENotifyDataChange, TIpcArgs(), iStatus);
       
   225 }