activityfw/activitydatabase/hsactivitydbclient/s60/src/hsactivitydbasyncrequest_p.cpp
author hgs
Fri, 30 Apr 2010 15:22:08 +0300
changeset 93 82b66994846c
parent 92 782e3408c2ab
child 94 dbb8300717f7
permissions -rw-r--r--
201017
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
89
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "hsactivitydbasyncrequest_p.h"
hgs
parents:
diff changeset
    19
#include "hsactivitydbclient_p.h"
93
hgs
parents: 92
diff changeset
    20
#include "hsactivitydbclient.h"
hgs
parents: 92
diff changeset
    21
#include <fbs.h>
hgs
parents: 92
diff changeset
    22
#include <xqconversions>
hgs
parents: 92
diff changeset
    23
hgs
parents: 92
diff changeset
    24
89
hgs
parents:
diff changeset
    25
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    26
//
hgs
parents:
diff changeset
    27
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    28
//
92
hgs
parents: 90
diff changeset
    29
HsActivityDbAsyncRequestPrivate*
hgs
parents: 90
diff changeset
    30
HsActivityDbAsyncRequestPrivate::NewL(HsActivityDbAsyncRequestObserver &observer,
93
hgs
parents: 92
diff changeset
    31
                                      HsActivityDbClientPrivate &session, 
hgs
parents: 92
diff changeset
    32
                                      TAsyncRequest requestType,
hgs
parents: 92
diff changeset
    33
                                      void* userData)
89
hgs
parents:
diff changeset
    34
{
93
hgs
parents: 92
diff changeset
    35
    HsActivityDbAsyncRequestPrivate *self = 
hgs
parents: 92
diff changeset
    36
    new(ELeave)HsActivityDbAsyncRequestPrivate(observer, session, requestType, userData);
hgs
parents: 92
diff changeset
    37
    CleanupStack::PushL(self);
hgs
parents: 92
diff changeset
    38
    self->mDataBuf.CreateL(64);
89
hgs
parents:
diff changeset
    39
    CleanupStack::Pop(self);
hgs
parents:
diff changeset
    40
    return self;
hgs
parents:
diff changeset
    41
}
93
hgs
parents: 92
diff changeset
    42
89
hgs
parents:
diff changeset
    43
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    44
//
hgs
parents:
diff changeset
    45
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    46
//
92
hgs
parents: 90
diff changeset
    47
HsActivityDbAsyncRequestPrivate*
93
hgs
parents: 92
diff changeset
    48
HsActivityDbAsyncRequestPrivate::newWaitActivityL(HsActivityDbAsyncRequestObserver & observer, 
hgs
parents: 92
diff changeset
    49
            HsActivityDbClientPrivate & session)
hgs
parents: 92
diff changeset
    50
    {
hgs
parents: 92
diff changeset
    51
    return HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitActivity);
hgs
parents: 92
diff changeset
    52
    }
hgs
parents: 92
diff changeset
    53
hgs
parents: 92
diff changeset
    54
// -----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
    55
//
hgs
parents: 92
diff changeset
    56
// -----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
    57
//
hgs
parents: 92
diff changeset
    58
void HsActivityDbAsyncRequestPrivate::getThumbnailLD(HsActivityDbAsyncRequestObserver &observer,
hgs
parents: 92
diff changeset
    59
                                      HsActivityDbClientPrivate &session, 
hgs
parents: 92
diff changeset
    60
                                      QSize size, 
hgs
parents: 92
diff changeset
    61
                                      QString imagePath, 
hgs
parents: 92
diff changeset
    62
                                      QString  mimeType, 
hgs
parents: 92
diff changeset
    63
                                      void *userDdata)
89
hgs
parents:
diff changeset
    64
{
93
hgs
parents: 92
diff changeset
    65
    HsActivityDbAsyncRequestPrivate *instance = 
hgs
parents: 92
diff changeset
    66
        HsActivityDbAsyncRequestPrivate::NewL(observer, session, EWaitGetThumbnail, userDdata);
hgs
parents: 92
diff changeset
    67
    instance->getThumbnail( size, imagePath, mimeType);
89
hgs
parents:
diff changeset
    68
}
93
hgs
parents: 92
diff changeset
    69
89
hgs
parents:
diff changeset
    70
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
//
hgs
parents:
diff changeset
    72
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    73
//
hgs
parents:
diff changeset
    74
HsActivityDbAsyncRequestPrivate::HsActivityDbAsyncRequestPrivate(HsActivityDbAsyncRequestObserver &observer,
93
hgs
parents: 92
diff changeset
    75
                                                                 HsActivityDbClientPrivate &session,
hgs
parents: 92
diff changeset
    76
                                                                 TAsyncRequest requestType, 
hgs
parents: 92
diff changeset
    77
                                                                 void* userData)
92
hgs
parents: 90
diff changeset
    78
    :
89
hgs
parents:
diff changeset
    79
    CActive(EPriorityStandard),
hgs
parents:
diff changeset
    80
    mObserver(observer),
hgs
parents:
diff changeset
    81
    mSession(session),
93
hgs
parents: 92
diff changeset
    82
    mRequestType(requestType),
hgs
parents: 92
diff changeset
    83
    mUserData(userData)
89
hgs
parents:
diff changeset
    84
{
hgs
parents:
diff changeset
    85
    CActiveScheduler::Add(this);
hgs
parents:
diff changeset
    86
}
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
//
hgs
parents:
diff changeset
    90
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
//
hgs
parents:
diff changeset
    92
HsActivityDbAsyncRequestPrivate::~HsActivityDbAsyncRequestPrivate()
hgs
parents:
diff changeset
    93
{
hgs
parents:
diff changeset
    94
    mDataBuf.Close();
hgs
parents:
diff changeset
    95
    Cancel();
93
hgs
parents: 92
diff changeset
    96
    delete mBitmapPath;
hgs
parents: 92
diff changeset
    97
    delete mBitmapMimeType;
89
hgs
parents:
diff changeset
    98
}
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   101
//
hgs
parents:
diff changeset
   102
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
//
hgs
parents:
diff changeset
   104
void HsActivityDbAsyncRequestPrivate::DoCancel()
hgs
parents:
diff changeset
   105
{
92
hgs
parents: 90
diff changeset
   106
    if (IsActive()) {
hgs
parents: 90
diff changeset
   107
        mSession.cancelWaitActivity();
89
hgs
parents:
diff changeset
   108
    }
hgs
parents:
diff changeset
   109
}
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   112
//
hgs
parents:
diff changeset
   113
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   114
//
hgs
parents:
diff changeset
   115
void HsActivityDbAsyncRequestPrivate::RunL()
hgs
parents:
diff changeset
   116
{
hgs
parents:
diff changeset
   117
    int requestResult(iStatus.Int());
92
hgs
parents: 90
diff changeset
   118
    if (KErrNone == requestResult) {
93
hgs
parents: 92
diff changeset
   119
        switch (mRequestType){
hgs
parents: 92
diff changeset
   120
        case WaitActivity: {
hgs
parents: 92
diff changeset
   121
            RBuf8 buff;
hgs
parents: 92
diff changeset
   122
            CleanupClosePushL(buff);
hgs
parents: 92
diff changeset
   123
            QString data;
hgs
parents: 92
diff changeset
   124
            if (0 < mDataSize()) {
hgs
parents: 92
diff changeset
   125
                buff.CreateL(mDataSize());
hgs
parents: 92
diff changeset
   126
            }
hgs
parents: 92
diff changeset
   127
            mSession.getData(mTaskId(), buff);
hgs
parents: 92
diff changeset
   128
            data = QString::fromAscii(reinterpret_cast<const char *>(buff.Ptr()),
hgs
parents: 92
diff changeset
   129
                                      buff.Length());
hgs
parents: 92
diff changeset
   130
            buff.Close();
hgs
parents: 92
diff changeset
   131
            mObserver.asyncRequestCompleated(requestResult, mRequestType, data);
hgs
parents: 92
diff changeset
   132
            CleanupStack::PopAndDestroy(&buff);
hgs
parents: 92
diff changeset
   133
            break;
hgs
parents: 92
diff changeset
   134
            }
hgs
parents: 92
diff changeset
   135
        case EWaitGetThumbnail: {
hgs
parents: 92
diff changeset
   136
            CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
hgs
parents: 92
diff changeset
   137
            CleanupStack::PushL(bitmap);
hgs
parents: 92
diff changeset
   138
            User::LeaveIfError(bitmap->Duplicate(mBitmapId()));
hgs
parents: 92
diff changeset
   139
            mSession.getData(mTaskId(), mDataBuf);//ACK Bitmap copy
hgs
parents: 92
diff changeset
   140
            mObserver.asyncRequestCompleated(requestResult, mRequestType, QPixmap::fromSymbianCFbsBitmap(bitmap), mUserData);
hgs
parents: 92
diff changeset
   141
            CleanupStack::PopAndDestroy(bitmap);
hgs
parents: 92
diff changeset
   142
            break;
hgs
parents: 92
diff changeset
   143
            }
89
hgs
parents:
diff changeset
   144
        }
93
hgs
parents: 92
diff changeset
   145
        mSession.Pop(this);
89
hgs
parents:
diff changeset
   146
    }
hgs
parents:
diff changeset
   147
}
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   150
//
hgs
parents:
diff changeset
   151
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   152
//
92
hgs
parents: 90
diff changeset
   153
void HsActivityDbAsyncRequestPrivate::waitActivity(const QVariantHash &condition)
89
hgs
parents:
diff changeset
   154
{
hgs
parents:
diff changeset
   155
    iStatus = KRequestPending;
hgs
parents:
diff changeset
   156
    SetActive();
93
hgs
parents: 92
diff changeset
   157
    mDataSize = condition.find(ActivityApplicationKeyword).value().toInt();
hgs
parents: 92
diff changeset
   158
    TPtrC8 actId(KNullDesC8);
hgs
parents: 92
diff changeset
   159
    TPtrC8 desc(KNullDesC8);
hgs
parents: 92
diff changeset
   160
    mSession.sendDataAsync(mRequestType, TIpcArgs(&mDataSize, &actId, &desc, &mTaskId), iStatus);
89
hgs
parents:
diff changeset
   161
}
93
hgs
parents: 92
diff changeset
   162
hgs
parents: 92
diff changeset
   163
// -----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   164
//
hgs
parents: 92
diff changeset
   165
// -----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   166
//
hgs
parents: 92
diff changeset
   167
void HsActivityDbAsyncRequestPrivate::getThumbnail(QSize size, QString imagePath, QString  mimeType)
hgs
parents: 92
diff changeset
   168
{
hgs
parents: 92
diff changeset
   169
    iStatus = KRequestPending;
hgs
parents: 92
diff changeset
   170
    SetActive();
hgs
parents: 92
diff changeset
   171
    mBitmapId = size.width();
hgs
parents: 92
diff changeset
   172
    mTaskId = size.height();
hgs
parents: 92
diff changeset
   173
    mBitmapPath = XQConversions::qStringToS60Desc(imagePath);
hgs
parents: 92
diff changeset
   174
    mBitmapMimeType = XQConversions::qStringToS60Desc8(mimeType);
hgs
parents: 92
diff changeset
   175
    mSession.sendDataAsync(mRequestType, TIpcArgs(&mBitmapId, &mTaskId, mBitmapPath, mBitmapMimeType), iStatus);
hgs
parents: 92
diff changeset
   176
}