photosgallery/collectionframework/datasource/manager/src/glxdatasourcetask.cpp
changeset 0 4e91876724a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/collectionframework/datasource/manager/src/glxdatasourcetask.cpp	Thu Dec 17 08:45:44 2009 +0200
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2008-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: Data Source Task Class.
+*
+*/
+
+
+
+#include "glxdatasourcetask.h"
+
+#include <mpxmedia.h>
+#include <mpxmediaarray.h>
+#include <mpxmediacontainerdefs.h>
+#include <mpxmediageneraldefs.h>
+#include <glxtracer.h>
+
+#include "glxrequest.h"
+#include "glxidlistrequest.h"
+#include "glxdatasource.h"
+#include "glxlog.h"
+
+EXPORT_C CGlxDataSourceTask::~CGlxDataSourceTask()
+	{
+    TRACER("EXPORT_C CGlxDataSourceTask::~CGlxDataSourceTask()");
+	delete iRequest;
+	delete iResponse;
+	}
+
+EXPORT_C CGlxDataSourceTask::CGlxDataSourceTask(CGlxRequest* aRequest, MGlxDataSourceRequestObserver& aObserver, CGlxDataSource* aDataSource)
+    : iRequest(aRequest), iDataSource(aDataSource), iObserver(&aObserver)
+    {
+    TRACER("EXPORT_C CGlxDataSourceTask::CGlxDataSourceTask()");
+    }
+
+TBool CGlxDataSourceTask::ObserverMatch(MGlxDataSourceRequestObserver& aObserver)
+	{
+    TRACER("TBool CGlxDataSourceTask::ObserverMatch(MGlxDataSourceRequestObserver& aObserver)");
+	if(&aObserver == iObserver)
+		{
+		return ETrue;
+		}
+	else
+		{
+		return EFalse;
+		}
+	}
+	
+EXPORT_C void CGlxDataSourceTask::ListToMediaL(const RArray<TGlxMediaId>& aList)
+	{
+    TRACER("void CGlxDataSourceTask::ListToMediaL(const RArray<TGlxMediaId>& aList)");    
+	RArray<TMPXItemId> mpxIds;
+	CleanupClosePushL(mpxIds);
+ 
+	for (TInt i = 0; i < aList.Count(); i++)
+		{
+		mpxIds.AppendL(aList[i].Value());
+		}
+    if (dynamic_cast<CGlxIdListRequest*>(iRequest))
+        {
+        CGlxIdListRequest* request = static_cast<CGlxIdListRequest*>(iRequest);
+        request->CollectionPath().AppendL(mpxIds.Array());
+        }
+
+    CleanupStack::PopAndDestroy(&mpxIds);
+	}
+	
+EXPORT_C void CGlxDataSourceTask::HandleRequestComplete(TInt aError)
+	{
+    TRACER("void CGlxDataSourceTask::HandleRequestComplete(TInt aError)");
+    GLX_DEBUG2("Entering CGlxDataSourceTask::HandleRequestComplete() error %d", aError);
+	if( !iCancelled && iResponse && iObserver )
+		{
+		iObserver->HandleResponse(iResponse, iRequest, aError);
+	    iDataSource->HandleTaskComplete(this);
+		}
+	}
+
+// ----------------------------------------------------------------------------
+// CreateResponseL()
+///@todo Remove this method
+// ----------------------------------------------------------------------------
+//
+EXPORT_C void CGlxDataSourceTask::CreateResponseL()
+	{
+    TRACER("void CGlxDataSourceTask::CreateResponseL()");
+	iResponse = CMPXMedia::NewL();
+	}
+
+TBool CGlxDataSourceTask::IsDataSourceNeeded() const
+    {
+    TRACER("TBool CGlxDataSourceTask::IsDataSourceNeeded()");
+    return !iRequest->DoNotNeedDataSource();
+    }