--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/harvesterplugins/media/mediautils/src/mdeharvester.cpp Mon Apr 19 14:40:05 2010 +0300
@@ -0,0 +1,211 @@
+/*
+* Copyright (c) 2010 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: MDE harvester utility class
+ *
+*/
+
+
+#include "mdeharvester.h"
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::NewL()
+// -----------------------------------------------------------------------------
+//
+CMdeHarvester* CMdeHarvester::NewL(CMdESession* aSession,
+ MdeMEdiaObserver* aObserver,
+ CMdeObjectQueueManager* aObjJobQueue)
+ {
+ CMdeHarvester* self = CMdeHarvester::NewLC(aSession,aObserver,aObjJobQueue);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::NewLC()
+// -----------------------------------------------------------------------------
+//
+CMdeHarvester* CMdeHarvester::NewLC(CMdESession* aSession,
+ MdeMEdiaObserver* aObserver,
+ CMdeObjectQueueManager* aObjJobQueue)
+ {
+ CMdeHarvester* self = new (ELeave) CMdeHarvester();
+ CleanupStack::PushL(self);
+ self->ConstructL(aSession,aObserver,aObjJobQueue);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::~CMdeHarvester()
+// -----------------------------------------------------------------------------
+//
+CMdeHarvester::~CMdeHarvester()
+ {
+ Cancel();
+ delete iWait;
+ delete iQuery;
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::ConstructL(CMdESession* aSession,
+ MdeMEdiaObserver* aObserver,
+ CMdeObjectQueueManager* aObjJobQueue)
+ {
+ iSession = aSession;
+ iObserver = aObserver;
+ iJobQueue = aObjJobQueue;
+ iWait = new (ELeave) CActiveSchedulerWait;
+ CActiveScheduler::Add(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::CMdeHarvester()
+// -----------------------------------------------------------------------------
+//
+CMdeHarvester::CMdeHarvester():CActive(CActive::EPriorityStandard)
+ {
+ iCurrentIndex = 0;
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::RunL()
+// -----------------------------------------------------------------------------
+//
+//from CActive
+void CMdeHarvester::RunL()
+ {
+ if(KErrNone == iStatus.Int())
+ {
+ HandleNextRequestL();
+ }
+ else
+ {
+ iObserver->HarvestingCompletedL(/*iStatus.Int()*/);//Introduce Error
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::DoCancel()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::DoCancel()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::RunError()
+// -----------------------------------------------------------------------------
+//
+TInt CMdeHarvester::RunError()
+ {
+ //@TODO: handle next items here incrementing count index
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::handleQueryNewResults()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::HandleQueryNewResults(CMdEQuery& aQuery,
+ TInt aFirstNewItemIndex,
+ TInt aNewItemCount)
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::HandleQueryCOmpleted()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::HandleQueryCompleted(CMdEQuery& aQuery, TInt aError)
+ {
+ if(aError !=KErrNone)
+ {
+ TInt count = aQuery.Count();
+ }
+ if(iWait->IsStarted()) //Complete in Handle
+ iWait->AsyncStop();
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::DoHarvestL()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::DoHarvesetL(const TDesC& aNameSpaceDef)
+ {
+ iCurrentIndex = 0;
+ QueryAllMediaObjectsL(aNameSpaceDef);
+ }
+
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::QueryAllMediaObjectsL()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::QueryAllMediaObjectsL(const TDesC& aNameSpaceDef)
+ {
+ //delete iQuery;
+ iQuery->Delete(iQuery);
+ iQuery = NULL;
+ CMdENamespaceDef& defaultNamespaceDef = iSession->GetDefaultNamespaceDefL();
+ CMdEObjectDef& audioObjDef = defaultNamespaceDef.GetObjectDefL(aNameSpaceDef);
+ // query objects with object definition "Audio" "video" "images" etc..
+ iQuery = iSession->NewObjectQueryL( defaultNamespaceDef, audioObjDef, this );
+ iQuery->FindL();
+ iWait->Start(); //Complete in Handle
+ TInt count = iQuery->Count();
+ CompleteSelf();
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::HandleNextRequestL()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::HandleNextRequestL()
+ {
+ if(iCurrentIndex < iQuery->Count())
+ {
+ //Get the Object ID and pass to ObjectQueue manager
+ CMdEObject& object = static_cast<CMdEObject&>( iQuery->ResultItem( iCurrentIndex ) );
+ //@TODO: ResultId does'nt work need to check with MDS
+ //iJobQueue->AddMdeItemToQueueL(iQuery->ResultId(iCurrentIndex),ECPixAddAction);
+ iJobQueue->AddMdeItemToQueueL(object.Id(),ECPixAddAction);
+ iCurrentIndex++;
+ CompleteSelf();
+ }
+ else
+ {
+ iObserver->HarvestingCompletedL();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CCPixIndexerUtils::CompleteSelf()
+// -----------------------------------------------------------------------------
+//
+void CMdeHarvester::CompleteSelf()
+ {
+ // trigger our RunL
+ TRequestStatus* caller;
+ caller = &iStatus;
+ iStatus = KRequestPending;
+ User::RequestComplete(caller, KErrNone);
+ SetActive();
+ }
+
+//End of life