diff -r e78d6e055a5b -r b34d53f6acdf activityfw/storage/client/src/afthumbnailrequest_p.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/activityfw/storage/client/src/afthumbnailrequest_p.cpp Fri Aug 06 13:40:46 2010 +0300 @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include + +#include "afthumbnailrequest_p.h" +#include "afstorageclient_p.h" +#include "afstorageclient.h" +#include "afentry.h" +#include "afcmd.h" + +// ----------------------------------------------------------------------------- +/** + * Create and initialize handler for activity thumbnail request + * @param observer - request completion observer + * @param session - activity client implementation + * @param source - thumbnail source location + * @param userData - rsponse user data + */ +void CAfThumbnailRequestPrivate::NewLD(MAfAsyncRequestObserver &observer, + MAfAsyncSession & session, + TSize resolution, + const TDesC& source, + TAny* userData) +{ + CAfThumbnailRequestPrivate* self = new(ELeave)CAfThumbnailRequestPrivate(observer, session, userData); + CleanupStack::PushL(self); + self->ConstructL(resolution, source); + session.PushL(self); + CleanupStack::Pop(self); +} + +// ----------------------------------------------------------------------------- +/** + * Constructor + * @param observer - request completion observer + * @param session - activity client implementation + * @param userData - rsponse user data + */ +CAfThumbnailRequestPrivate::CAfThumbnailRequestPrivate(MAfAsyncRequestObserver & observer, + MAfAsyncSession & session, + TAny* userData) +: +CActive(EPriorityStandard), +mObserver(observer), +mSession(session), +mUserData(userData) +{ + CActiveScheduler::Add(this); +} + +// ----------------------------------------------------------------------------- +/** + * Second phase constructor + * @param resolution - requested thumbnail resolution + * @param source - thumbnail source location + */ +void CAfThumbnailRequestPrivate::ConstructL(TSize resolution, const TDesC& source) +{ + mIds[0] = resolution.iWidth; + mIds[1] = resolution.iHeight; + CAfEntry::CopyL(mImgSrc, source); + mSession.sendAsync(GetThumbnail, + TIpcArgs(&mIds[0],&mIds[1], &mImgSrc), + iStatus); + SetActive(); +} + +// ----------------------------------------------------------------------------- +/** + * Destuctor + */ +CAfThumbnailRequestPrivate::~CAfThumbnailRequestPrivate() +{ + Cancel(); + mImgSrc.Close(); +} + +// ----------------------------------------------------------------------------- +/** + * Cancel pending requst + */ +void CAfThumbnailRequestPrivate::DoCancel() +{ +} + +// ----------------------------------------------------------------------------- +/** + * Function handle request completion, copy data, forward information and destroy handler + */ +void CAfThumbnailRequestPrivate::RunL() +{ + User::LeaveIfError(iStatus.Int()); + mObserver.getThumbnailRequestCompleted(iStatus.Int(), + mIds[0](), + mUserData); + RBuf8 data; + CleanupClosePushL(data); + mSession.getDataL((mIds[1])(), data); + CleanupStack::PopAndDestroy(&data); + mSession.Pop(this); + delete this; +} + +// ----------------------------------------------------------------------------- +/** + * Function handle request processing errors + * @param error - error code + */ +TInt CAfThumbnailRequestPrivate::RunError(TInt error) +{ + mObserver.getThumbnailRequestCompleted(error, -1, mUserData); + mSession.Pop(this); + delete this; + return KErrNone; +} +