--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omadm/lawmo/lawmoplugins/mediaplugin/src/mediaplugin.cpp Thu Aug 19 09:42:30 2010 +0300
@@ -0,0 +1,224 @@
+/*
+* 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 the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Media plug-in for LAWMO
+*
+*/
+
+#include <f32file.h>
+#include <data_caging_path_literals.hrh>
+#include <centralrepository.h>
+#include "mediaplugin.h"
+#include "lawmodebug.h"
+
+// ----------------------------------------------------------------------------------------
+// CLAWMOMediaPlugin::NewL
+// ----------------------------------------------------------------------------------------
+CLAWMOMediaPlugin* CLAWMOMediaPlugin::NewL(MLawmoPluginWipeObserver* aObserver)
+ {
+ RDEBUG( "CLAWMOMediaPlugin NewL");
+ CLAWMOMediaPlugin* self=new(ELeave) CLAWMOMediaPlugin();
+ CleanupStack::PushL(self);
+ self->ConstructL(aObserver);
+ if(self)
+ RDEBUG( "CLAWMOMediaPlugin NewL self obj created");
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ----------------------------------------------------------------------------------------
+// CLAWMOMediaPlugin::~CLAWMOMediaPlugin
+// ----------------------------------------------------------------------------------------
+CLAWMOMediaPlugin::~CLAWMOMediaPlugin()
+ {
+ RDEBUG( "CLAWMOMediaPlugin destructor");
+ if(iQuery)
+ {
+ delete iQuery;
+ RDEBUG( "iQuery deleted");
+ }
+ if(iMdeSession)
+ {
+ delete iMdeSession;
+ RDEBUG( "iMdeSession deleted");
+ }
+ iRfs.Close();
+ }
+
+// ----------------------------------------------------------------------------------------
+// CLAWMOMediaPlugin::CLAWMOMediaPlugin
+// ----------------------------------------------------------------------------------------
+CLAWMOMediaPlugin::CLAWMOMediaPlugin()
+ {
+ // See ConstructL() for initialisation completion.
+ }
+
+// ----------------------------------------------------------------------------------------
+// CLAWMOMediaPlugin::ConstructL
+// ----------------------------------------------------------------------------------------
+void CLAWMOMediaPlugin::ConstructL(MLawmoPluginWipeObserver* aObserver)
+{
+ RDEBUG( "CLAWMOMediaPlugin ConstructL");
+ iState = EUninitialized;
+ iObserver = aObserver;
+ User::LeaveIfError(iRfs.Connect());
+ RDEBUG( "CLAWMOMediaPlugin ConstructL done");
+}
+
+// Implementation of CLAWMOPluginInterface
+
+// ----------------------------------------------------------------------------------------
+// CLAWMOMediaPlugin::WipeL
+// Wipes the Media.
+// ----------------------------------------------------------------------------------------
+
+void CLAWMOMediaPlugin::WipeL ()
+{
+ RDEBUG( "CLAWMOMediaPlugin WipeL()");
+ iMdeSession = CMdESession::NewL( *this ); //MMdESessionObserver
+ RDEBUG( "CLAWMOMediaPlugin WipeL() iMdeSession");
+ iState = EInitialized;
+}
+
+void CLAWMOMediaPlugin::HandleSessionOpened( CMdESession& /*aSession*/, TInt aError )
+ {
+ RDEBUG( "HandleSessionOpened start");
+ iState = ESession;
+ if(aError == KErrNone)
+ {
+ TRAPD(err,StartMdsQueryL());
+ if(err!=KErrNone)
+ iObserver->HandleWipeCompleted(KErrGeneral);
+ }
+ else
+ iObserver->HandleWipeCompleted(aError);
+ RDEBUG( "HandleSessionOpened done");
+ }
+
+// ----------------------------------------------------------------------------
+// CMdsQueryHandler::HandleSessionError
+// From MMdESessionObserver
+// ----------------------------------------------------------------------------
+//
+void CLAWMOMediaPlugin::HandleSessionError( CMdESession& /*aSession*/, TInt aError )
+ {
+ RDEBUG( "CLAWMOMediaPlugin HandleSessionError()");
+ iState = EError;
+ iObserver->HandleWipeCompleted(aError);
+ }
+
+void CLAWMOMediaPlugin::StartMdsQueryL()
+ {
+ RDEBUG( "CLAWMOMediaPlugin StartMdsQuery() start");
+ if(iState == ESession)
+ {
+ iState = ESession;
+ TInt counT = iMdeSession->NamespaceDefCount();
+ RDEBUG_2("NamespaceDefCount %d", counT);
+
+ CMdENamespaceDef& defaultNamespaceDef = iMdeSession->GetDefaultNamespaceDefL();
+ RDEBUG( "HandleSessionOpened StartMdsQuery() defaultNamespaceDef");
+ CMdEObjectDef& imageObjDef = defaultNamespaceDef.GetObjectDefL(MdeConstants::Image::KImageObject);
+ RDEBUG( "RunL() imageObjDef");
+
+ //CMdEPropertyDef& itemProperty = imageObjDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty );
+ CMdEPropertyDef& titleProperty = imageObjDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty );
+
+ RDEBUG( "RunL() titleProperty");
+ iQuery = iMdeSession->NewObjectQueryL( iMdeSession->GetDefaultNamespaceDefL(),
+ imageObjDef,
+ this );
+ iQuery->AddPropertyFilterL(&titleProperty);
+
+ RDEBUG( "RunL() NewObjQuery");
+ //_LIT(KJpegMime, "image/jpeg");
+ //CMdELogicCondition& rootCondition = iQuery->Conditions();
+ //rootCondition.AddPropertyConditionL(itemProperty, ETextPropertyConditionCompareEquals,KJpegMime);
+ //RDEBUG( "RunL()LogicCondition");
+ iState = EImage;
+ iQuery->FindL(); // starts the object query
+ RDEBUG( "RunL() FindL");
+ }
+ else if(iState == EVideo)
+ {
+ CMdENamespaceDef& defaultNamespaceDef = iMdeSession->GetDefaultNamespaceDefL();
+ RDEBUG( "StartMdsQuery StartVideoL() defaultNamespaceDef");
+ CMdEObjectDef& vidObjDef = defaultNamespaceDef.GetObjectDefL(MdeConstants::Video::KVideoObject);
+ RDEBUG( "StartMdsQuery StartVideoL() imageObjDef");
+
+ iQuery = iMdeSession->NewObjectQueryL( iMdeSession->GetDefaultNamespaceDefL(),
+ vidObjDef,
+ this );
+ RDEBUG( "StartMdsQuery StartVideoL() NewObjQuery");
+ CMdEPropertyDef& titleProperty = vidObjDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty );
+ iQuery->AddPropertyFilterL(&titleProperty);
+ RDEBUG( "StartMdsQuery StartVideoL() BeforeFindL");
+ iQuery->FindL(); // starts the object query
+ RDEBUG( "StartMdsQuery StartVideoL() FindL");
+ }
+ RDEBUG( "CLAWMOMediaPlugin StartMdsQuery() done");
+ }
+
+void CLAWMOMediaPlugin::HandleQueryCompleted( CMdEQuery& aQuery, TInt aError )
+ {
+ // query is completed
+ RDEBUG( "CLAWMOMediaPlugin HandleQueryCompleted, Begin");
+ RDEBUG_2("CLAWMOMediaPlugin error %d", aError);
+ RDEBUG_2("aQuery.Count %d", aQuery.Count());
+ TBool comp = iQuery->IsComplete();
+ RDEBUG_2("Query complete ? %d",comp);
+
+ CMdEObjectQuery& query = (CMdEObjectQuery &) aQuery;
+ if( aQuery.Count() > 0 && aError == KErrNone )
+ {
+ // some items were found!
+ RDEBUG( "CLAWMOMediaPlugin HandleQueryCompleted, objects found");
+ for(TInt i=0;i<aQuery.Count();i++)
+ {
+ TBuf<255> uri;
+ CMdEObject* obj = (CMdEObject*)query.TakeOwnershipOfResult(i);
+ RDEBUG( "CLAWMOMediaPlugin HandleQueryCompleted, own one obj");
+ uri.Copy(obj->Uri());
+ RDEBUG_2("HandleQueryCompleted URI %s", uri.PtrZ());
+ if(iRfs.IsValidName(uri))
+ {
+ RDEBUG( "CLAWMOMediaPlugin HandleQueryCompleted file exists");
+ iRfs.Delete ( uri );
+ }
+ delete obj;
+ }
+ }
+ // After deletion, decide if its video/image and do accordingly
+ if(iState == EVideo)
+ {
+ iObserver->HandleWipeCompleted(aError);
+ }
+ else if(iState == EImage)
+ {
+ iState = EVideo;
+ RDEBUG( "CLAWMOMediaPlugin HandleQueryCompleted() ****reqcomplete");
+ TRAPD(err,StartMdsQueryL());
+ if(err!=KErrNone)
+ iObserver->HandleWipeCompleted(KErrGeneral);
+ }
+ RDEBUG( "CLAWMOMediaPlugin HandleQueryCompleted, out of loop");
+ }
+
+void CLAWMOMediaPlugin::HandleQueryNewResults(CMdEQuery& aQuery,
+ TInt aFirstNewItemIndex,
+ TInt aNewItemCount)
+ {
+ RDEBUG( "CLAWMOMediaPlugin HandleQueryNewResults");
+ }
+
+//