diff -r 9360ca28b668 -r c4687ff85147 omadm/lawmo/lawmoplugins/mediaplugin/src/mediaplugin.cpp --- /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 +#include +#include +#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 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"); + } + +//