mtpfws/mtpfw/datatypes/src/cmtptypeobjectproplist.cpp
branchRCL_3
changeset 17 dbd1c5e08735
parent 0 d0791faffa3f
--- a/mtpfws/mtpfw/datatypes/src/cmtptypeobjectproplist.cpp	Mon Jun 21 16:36:59 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/src/cmtptypeobjectproplist.cpp	Thu Jul 15 19:35:12 2010 +0300
@@ -609,9 +609,27 @@
                 {
                   User::Leave(KErrArgument);
                 }
-            TUint16 retValue;
-            GetValueL(&retValue, sizeof(TUint16));
-			return retValue;
+            
+            //Workaround for partial deletion issue observed on Windows XP/Windows7.
+            //When send an object from PC to device through Windows explorer, it will
+            //include the 'ProtectionStatus' property in the dataset of 'SendObjectPropList' 
+            //command. While syncing through Ovi player or Windows Media Player, this property
+            //will not be included.
+            //When we delete a folder which contains read-only objects,we returns partial 
+            //deletion code, because read-only object should not be deleted according to MTP spec.
+            //On receiving this,Windows popup a dialog saying 'device stops response', this really
+            //give user bad experience, to prevent this, we make this workaround here: when dataprovider
+            //query value of 'ProtectionStatus' property,always return EMTPProtectionNoProtection(0x0000).
+            if (EMTPObjectPropCodeProtectionStatus == iPropertyCode)
+                {
+                return EMTPProtectionNoProtection;
+                }
+            else
+                {
+                TUint16 retValue;
+                GetValueL(&retValue, sizeof(TUint16));
+                return retValue;
+                }
 		default:
 			User::Leave(KErrArgument);
 		}