diff -r 4843bb5893b6 -r 8b094906a049 mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetobjecthandles.cpp --- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetobjecthandles.cpp Fri Mar 12 15:46:41 2010 +0200 +++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetobjecthandles.cpp Mon Mar 15 12:43:12 2010 +0200 @@ -18,11 +18,15 @@ #include #include #include +#include +#include "cmtpdevicedatastore.h" #include "cmtpgetobjecthandles.h" #include "mtpdevicedpconst.h" #include "mtpdevdppanic.h" +// Class constants. +__FLOG_STMT(_LIT8(KComponent,"GetObjectHandles");) /** Two-phase construction method @@ -45,7 +49,8 @@ */ CMTPGetObjectHandles::~CMTPGetObjectHandles() { - delete iHandles; + delete iHandles; + __FLOG_CLOSE; } /** @@ -62,6 +67,7 @@ */ void CMTPGetObjectHandles::ConstructL() { + __FLOG_OPEN(KMTPSubsystem, KComponent); CMTPGetNumObjects::ConstructL(); } @@ -70,43 +76,102 @@ */ void CMTPGetObjectHandles::ServiceL() { + __FLOG(_L8("ServiceL - Entry")); RMTPObjectMgrQueryContext context; RArray handles; - TMTPObjectMgrQueryParams params(Request().Uint32(TMTPTypeRequest::ERequestParameter1), Request().Uint32(TMTPTypeRequest::ERequestParameter2), Request().Uint32(TMTPTypeRequest::ERequestParameter3)); CleanupClosePushL(context); CleanupClosePushL(handles); - delete iHandles; iHandles = CMTPTypeArray::NewL(EMTPTypeAUINT32); - - do - { - iFramework.ObjectMgr().GetObjectHandlesL(params, context, handles); - iHandles->AppendL(handles); - } - while (!context.QueryComplete()); - + + __FLOG_VA((_L8("IsConnectMac = %d; ERequestParameter2 = %d" ), iDevDpSingletons.DeviceDataStore().IsConnectMac(), Request().Uint32(TMTPTypeRequest::ERequestParameter2))); + if(iDevDpSingletons.DeviceDataStore().IsConnectMac() + &&(KMTPFormatsAll == Request().Uint32(TMTPTypeRequest::ERequestParameter2))) + { + __FLOG(_L8("ConnectMac and Fetch all.")); + //get folder object handles + TMTPObjectMgrQueryParams paramsFolder(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeAssociation, Request().Uint32(TMTPTypeRequest::ERequestParameter3)); + do + { + iFramework.ObjectMgr().GetObjectHandlesL(paramsFolder, context, handles); + iHandles->AppendL(handles); + } + while (!context.QueryComplete()); + + //get script object handles + RMTPObjectMgrQueryContext contextScript; + RArray handlesScript; + CleanupClosePushL(contextScript); + CleanupClosePushL(handlesScript); + TMTPObjectMgrQueryParams paramsScript(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeScript, Request().Uint32(TMTPTypeRequest::ERequestParameter3)); + do + { + iFramework.ObjectMgr().GetObjectHandlesL(paramsScript, contextScript, handlesScript); + iHandles->AppendL(handlesScript); + } + while (!contextScript.QueryComplete()); + CleanupStack::PopAndDestroy(&contextScript); + CleanupStack::PopAndDestroy(&handlesScript); + + //get image object handles + RMTPObjectMgrQueryContext contextImage; + RArray handlesImage; + CleanupClosePushL(contextImage); + CleanupClosePushL(handlesImage); + TMTPObjectMgrQueryParams paramsImage(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeEXIFJPEG, Request().Uint32(TMTPTypeRequest::ERequestParameter3)); + do + { + iFramework.ObjectMgr().GetObjectHandlesL(paramsImage, contextImage, handlesImage); + iHandles->AppendL(handlesImage); + } + while (!contextImage.QueryComplete()); + CleanupStack::PopAndDestroy(&contextImage); + CleanupStack::PopAndDestroy(&handlesImage); + } + else + { + TMTPObjectMgrQueryParams params(Request().Uint32(TMTPTypeRequest::ERequestParameter1), Request().Uint32(TMTPTypeRequest::ERequestParameter2), Request().Uint32(TMTPTypeRequest::ERequestParameter3)); + do + { + iFramework.ObjectMgr().GetObjectHandlesL(params, context, handles); + + TUint32 storageId = Request().Uint32(TMTPTypeRequest::ERequestParameter1); + TUint32 parentHandle = Request().Uint32(TMTPTypeRequest::ERequestParameter3); + if ( storageId != KMTPStorageAll && parentHandle == KMTPHandleNoParent ) + { + const CMTPStorageMetaData& storage(iFramework.StorageMgr().StorageL(storageId)); + HBufC* StorageSuid = storage.DesC(CMTPStorageMetaData::EStorageSuid).AllocL(); + + RBuf suid; + suid.CleanupClosePushL(); + suid.CreateL(KMaxFileName); + suid = *StorageSuid; + _LIT(WMPInfoXml,"WMPInfo.xml"); + suid.Append(WMPInfoXml); + TUint32 handle = iFramework.ObjectMgr().HandleL(suid); + if ( handle != KMTPHandleNone ) + { + TInt index = handles.Find(handle); + if ( index != KErrNotFound ) + { + handles.Remove(index); + handles.Insert(handle,0); + } + } + delete StorageSuid; + StorageSuid = NULL; + CleanupStack::PopAndDestroy(); + } + iHandles->AppendL(handles); + } + while (!context.QueryComplete()); + } + + + CleanupStack::PopAndDestroy(&handles); CleanupStack::PopAndDestroy(&context); - SendDataL(*iHandles); + SendDataL(*iHandles); + __FLOG(_L8("ServiceL - Exit")); } - - - - - - - - - - - - - - - - - - -