mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobject.cpp
branchRCL_3
changeset 6 ef55b168cedb
parent 3 8b094906a049
--- a/mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobject.cpp	Wed Apr 14 16:49:36 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobject.cpp	Tue Apr 27 17:30:23 2010 +0300
@@ -19,6 +19,7 @@
 #include <mtp/mtpprotocolconstants.h>
 #include <mtp/tmtptyperequest.h>
 #include <mtp/cmtptypearray.h>
+#include <mtp/mtpdataproviderapitypes.h>
 
 #include "cmtpdataprovider.h"
 #include "cmtpdataprovidercontroller.h"
@@ -98,10 +99,6 @@
 	{
     __FLOG(_L8("CheckRequestL - Entry"));
     TMTPResponseCode responseCode = CMTPRequestProcessor::CheckRequestL();   
-    if ((EMTPRespCodeOK == responseCode) && (iSingletons.DpController().EnumerateState() == CMTPDataProviderController::EEnumeratingSubDirFiles))
-        {
-		responseCode = EMTPRespCodeDeviceBusy;
-        }
     
 	__FLOG_VA((_L8("CheckRequestL - Exit with responseCode = 0x%04X"), responseCode));
     return responseCode;
@@ -119,6 +116,27 @@
     router.ParseOperationRequestL(params);
     router.RouteOperationRequestL(params, iTargetDps);
     
+    if (iSingletons.DpController().EnumerateState() == CMTPDataProviderController::EEnumeratingSubDirFiles)
+        {
+		TBool hasBaseFileSystemDp = EFalse;
+		for(TInt i=0; i<iTargetDps.Count(); i++)
+			{
+			CMTPDataProvider& dp = iSingletons.DpController().DataProviderL( iTargetDps[i] );
+			if(dp.SupportedCodes(EStorageSystemTypes).Find(CMTPStorageMetaData::ESystemTypeDefaultFileSystem) != KErrNotFound)
+				{
+				hasBaseFileSystemDp = ETrue;
+				break;
+				}
+			}
+		
+		if(hasBaseFileSystemDp)
+			{
+			SendResponseL(EMTPRespCodeDeviceBusy);
+			__FLOG( _L8("-ServiceL with Device_Busy") );
+			return;
+			}
+        }
+    
     BrowseHandlesL();
     
     __FLOG( _L8("-ServiceL") );