activityfw/storage/client/s60/src/afthumbnailrequest_p.cpp
changeset 107 b34d53f6acdf
parent 106 e78d6e055a5b
child 112 dbfb5e38438b
equal deleted inserted replaced
106:e78d6e055a5b 107:b34d53f6acdf
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include <fbs.h>
       
    19 #include <XQConversions>
       
    20 
       
    21 #include "afthumbnailrequest_p.h"
       
    22 #include "afstorageclient_p.h"
       
    23 #include "afstorageclient.h"
       
    24 #include "afentry.h"
       
    25 #include "afcmd.h"
       
    26 
       
    27 // -----------------------------------------------------------------------------
       
    28 /**
       
    29  * Create and initialize handler for activity thumbnail request
       
    30  * @param observer - request completion observer
       
    31  * @param session - activity client implementation
       
    32  * @param source - thumbnail source location
       
    33  * @param userData - rsponse user data
       
    34  */
       
    35 void CAfThumbnailRequestPrivate::NewLD(MAfAsyncRequestObserver &observer, 
       
    36                                        RAfStorageClientImplementation & session,
       
    37                                        TSize resolution, 
       
    38                                        const TDesC& source,
       
    39                                        TAny* userData)
       
    40 {
       
    41     CAfThumbnailRequestPrivate* self = new(ELeave)CAfThumbnailRequestPrivate(observer, session, userData);
       
    42     CleanupStack::PushL(self);
       
    43     self->ConstructL(resolution, source);
       
    44     session.PushL(self);
       
    45     CleanupStack::Pop(self);
       
    46 }
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 /**
       
    50  * Constructor
       
    51  * @param observer - request completion observer
       
    52  * @param session - activity client implementation
       
    53  * @param userData - rsponse user data
       
    54  */
       
    55 CAfThumbnailRequestPrivate::CAfThumbnailRequestPrivate(MAfAsyncRequestObserver & observer, 
       
    56                                                        RAfStorageClientImplementation & session,
       
    57                                                        TAny* userData)
       
    58 :
       
    59 CActive(EPriorityStandard),
       
    60 mObserver(observer),
       
    61 mSession(session),
       
    62 mUserData(userData)
       
    63 {
       
    64     CActiveScheduler::Add(this);
       
    65 }
       
    66 
       
    67 // -----------------------------------------------------------------------------
       
    68 /**
       
    69  * Second phase constructor
       
    70  * @param resolution - requested thumbnail resolution
       
    71  * @param source - thumbnail source location
       
    72  */
       
    73 void CAfThumbnailRequestPrivate::ConstructL(TSize resolution, const TDesC& source)
       
    74 {
       
    75     mIds[0] = resolution.iWidth;
       
    76     mIds[1] = resolution.iHeight;
       
    77     CAfEntry::CopyL(mImgSrc, source);
       
    78     mSession.sendAsync(GetThumbnail, 
       
    79                        TIpcArgs(&mIds[0],&mIds[1], &mImgSrc),
       
    80                        iStatus);
       
    81     SetActive();
       
    82 }
       
    83 
       
    84 // -----------------------------------------------------------------------------
       
    85 /**
       
    86  * Destuctor
       
    87  */
       
    88 CAfThumbnailRequestPrivate::~CAfThumbnailRequestPrivate()
       
    89 {
       
    90     Cancel();
       
    91     mImgSrc.Close();
       
    92 }
       
    93 
       
    94 // -----------------------------------------------------------------------------
       
    95 /**
       
    96  * Cancel pending requst
       
    97  */
       
    98 void CAfThumbnailRequestPrivate::DoCancel()
       
    99 {
       
   100 }
       
   101 
       
   102 // -----------------------------------------------------------------------------
       
   103 /**
       
   104  * Function handle request completion, copy data, forward information and destroy handler 
       
   105  */
       
   106 void CAfThumbnailRequestPrivate::RunL()
       
   107 {
       
   108     User::LeaveIfError(iStatus.Int());
       
   109     CFbsBitmap* bitmap = new (ELeave) CFbsBitmap();
       
   110     CleanupStack::PushL(bitmap);
       
   111     User::LeaveIfError(bitmap->Duplicate(mIds[0]()));
       
   112     mObserver.asyncRequestCompleated(iStatus.Int(), 
       
   113                                      GetThumbnail, 
       
   114                                      QPixmap::fromSymbianCFbsBitmap(bitmap), 
       
   115                                      mUserData);
       
   116     CleanupStack::PopAndDestroy(bitmap);
       
   117     mSession.Pop(this);
       
   118     delete this;
       
   119 }
       
   120 
       
   121 // -----------------------------------------------------------------------------
       
   122 /**
       
   123  * Function handle request processing errors
       
   124  * @param error - error code 
       
   125  */
       
   126 TInt CAfThumbnailRequestPrivate::RunError(TInt error)
       
   127 {
       
   128     mObserver.asyncRequestCompleated(error, GetThumbnail, QPixmap(), mUserData);
       
   129     mSession.Pop(this);
       
   130     delete this;
       
   131     return KErrNone;
       
   132 }
       
   133