activityfw/storage/client/src/afthumbnailrequest_p.cpp
changeset 107 b34d53f6acdf
child 119 50e220be30d1
--- /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 <fbs.h>
+
+#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;
+}
+