diff -r 156f692b1687 -r b99b84bcd2d1 activityfw/activitydatabase/hsactivitydbserver/src/afthumbnailtask.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/activityfw/activitydatabase/hsactivitydbserver/src/afthumbnailtask.cpp Wed Jun 23 18:33:40 2010 +0300 @@ -0,0 +1,135 @@ +/* +* 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 "afthumbnailtask.h" +#include "activitycmd.h" + +#include + +// ----------------------------------------------------------------------------- +/** + * Constructor for performing 1st stage construction + */ +CAfThumbnailTask::CAfThumbnailTask(MAfTaskStorage& storage, + const RMessage2 msg) +: + mStorage(storage), + mMsg(msg) +{ + // No implementation required +} + +// ----------------------------------------------------------------------------- +/** + * Destructor. + */ +CAfThumbnailTask::~CAfThumbnailTask() +{ + delete mService; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CAfThumbnailTask::ExecuteLD(MAfTaskStorage& taskStorage, + const RMessage2& message) +{ + CAfThumbnailTask *self = new (ELeave)CAfThumbnailTask(taskStorage, + message); + CleanupStack::PushL(self); + self->ConstructL(); + taskStorage.PushL(self); + CleanupStack::Pop(self); +} + +// ----------------------------------------------------------------------------- +/** + * EPOC default constructor for performing 2nd stage construction + */ +void CAfThumbnailTask::ConstructL() +{ + TPckgBuf width(0), height(0); + RBuf path; + RBuf8 mime; + CleanupClosePushL(path); + CleanupClosePushL(mime); + mMsg.ReadL(0, width); + mMsg.ReadL(1, height); + path.CreateL(mMsg.GetDesLengthL(2)); + mMsg.ReadL(2, path); + mime.CreateL(mMsg.GetDesLengthL(3)); + mMsg.ReadL(3, mime); + + CFbsBitmap *bitmap = new (ELeave) CFbsBitmap(); + CleanupStack::PushL(bitmap); + User::LeaveIfError(bitmap->Load(path)); + mService = CTsGraphicFileScalingHandler::NewL(*this, + *bitmap, + TSize(width(), height()), + CTsGraphicFileScalingHandler::EKeepAspectRatioByExpanding); + CleanupStack::PopAndDestroy(bitmap); + + CleanupStack::PopAndDestroy(&mime); + CleanupStack::PopAndDestroy(&path); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CAfThumbnailTask::ImageReadyCallBack(TInt error,const CFbsBitmap *bitmap) +{ + if (EFalse == mMsg.IsNull() && + KErrNone == error) { + mMsg.Write(0, TPckgBuf(const_cast(bitmap)->Handle())); + mMsg.Write(1, TPckgBuf(this)); + mMsg.Complete(error); + } else { + if (EFalse == mMsg.IsNull()) { + mMsg.Complete(error); + } + mStorage.Pop(this); + delete this; + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +const TDesC8& CAfThumbnailTask::Data() const +{ + return KNullDesC8(); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CAfThumbnailTask::BroadcastReceivedL(const RMessage2&) +{ +} + +// ----------------------------------------------------------------------------- +/** + * Returns ETrue if task is related with session argument + */ +TBool CAfThumbnailTask::IsSessionTask(const CSession2* session) +{ + return mMsg.Session() == session ? ETrue : EFalse; +}