harvesterplugins/media/mediautils/src/mdeharvester.cpp
changeset 0 ccd0fd43f247
--- /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