# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284545247 -10800 # Node ID debf68073f2f0d52309ee61c69b4b2c4cd273665 # Parent 74aa6861c87daa10a3e049bb225ac5ae3c01d65c Revision: 201035 Kit: 201036 diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/clients/syncclient/inc/sconsyncclient.h --- a/connectivitymodules/SeCon/clients/syncclient/inc/sconsyncclient.h Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/clients/syncclient/inc/sconsyncclient.h Wed Sep 15 13:07:27 2010 +0300 @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include "scondataproviderinfo.h" diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/servers/pcconn/bld/sconpcconnserver.mmp --- a/connectivitymodules/SeCon/servers/pcconn/bld/sconpcconnserver.mmp Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/servers/pcconn/bld/sconpcconnserver.mmp Wed Sep 15 13:07:27 2010 +0300 @@ -21,8 +21,7 @@ #include VENDORID VID_DEFAULT - -CAPABILITY CAP_SERVER TrustedUI +CAPABILITY ReadDeviceData WriteDeviceData SwEvent NetworkServices ReadUserData WriteUserData LocalServices TrustedUI TARGET sconpcconnserver.exe TARGETTYPE exe diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/servers/pcconn/inc/sconbtengine.h --- a/connectivitymodules/SeCon/servers/pcconn/inc/sconbtengine.h Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/servers/pcconn/inc/sconbtengine.h Wed Sep 15 13:07:27 2010 +0300 @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include const TInt KCenRepAddrBufSize = 2 * KBTDevAddrSize; diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/servers/pcconn/inc/sconimsireader.h --- a/connectivitymodules/SeCon/servers/pcconn/inc/sconimsireader.h Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/servers/pcconn/inc/sconimsireader.h Wed Sep 15 13:07:27 2010 +0300 @@ -20,7 +20,7 @@ #define __SCONIMSIREADER_H__ #include -#include +#include enum TImsiReaderStatus { diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/servers/pcconn/src/sconpcconnserver.cpp --- a/connectivitymodules/SeCon/servers/pcconn/src/sconpcconnserver.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/servers/pcconn/src/sconpcconnserver.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -18,7 +18,7 @@ #include // For RMemReadStream #include -#include +#include #include #include "sconpcconnclientserver.h" diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/servers/syncserver/group/sconsyncserver.mmp --- a/connectivitymodules/SeCon/servers/syncserver/group/sconsyncserver.mmp Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/servers/syncserver/group/sconsyncserver.mmp Wed Sep 15 13:07:27 2010 +0300 @@ -44,7 +44,7 @@ USERINCLUDE ../../../clients/syncclient/inc SOURCE scondataproviderinfo.cpp -USERINCLUDE ..\inc +USERINCLUDE ../inc // Default system include paths for middleware layer modules. MW_LAYER_SYSTEMINCLUDE diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/servers/syncserver/inc/sconsyncrelationship.h --- a/connectivitymodules/SeCon/servers/syncserver/inc/sconsyncrelationship.h Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/servers/syncserver/inc/sconsyncrelationship.h Wed Sep 15 13:07:27 2010 +0300 @@ -22,8 +22,8 @@ #include #include #include -#include -#include +#include +#include class CDictionaryFileStore; diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/servers/syncserver/src/sconasynchandler.cpp --- a/connectivitymodules/SeCon/servers/syncserver/src/sconasynchandler.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/servers/syncserver/src/sconasynchandler.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include "sconsyncclientserver.h" @@ -42,8 +42,9 @@ const TInt KMaxStoresCount = 10; const TInt KDefaultTimeOutInMicroSeconds = 30 * 1000000; // 30 seconds -const TInt KDeleteAllTimeOutInMicroSeconds = 300 * 1000000; // 5 minutes -const TInt KOpenStoreTimeOutInMicroSeconds = 180 * 1000000; // 180 seconds +const TInt KDeleteAllTimeOutInMicroSeconds = 540 * 1000000; // 9 minutes +const TInt KOpenStoreTimeOutInMicroSeconds = 540 * 1000000; // 9 minutes +const TInt KResetChangeInfoTimeOutInMicroSeconds = 540 * 1000000; // 9 minutes CSconAsyncHandler::~CSconAsyncHandler() { @@ -180,6 +181,7 @@ MovedItemsL(); break; case EResetChangeInfo: + iTimeOut->Start( KResetChangeInfoTimeOutInMicroSeconds ); ResetChangeInfoL(); break; case ECommitChangeInfo: diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/services/csc/bld/101F99F6.xml Binary file connectivitymodules/SeCon/services/csc/bld/101F99F6.xml has changed diff -r 74aa6861c87d -r debf68073f2f connectivitymodules/SeCon/services/pcd/src/sconsynchandler.cpp --- a/connectivitymodules/SeCon/services/pcd/src/sconsynchandler.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/connectivitymodules/SeCon/services/pcd/src/sconsynchandler.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -18,8 +18,8 @@ #include "sconsynchandler.h" #include -#include -#include +#include +#include #include #include #include diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpfileandfolderdp/inc/mtpfiledpconst.h --- a/mtpdataproviders/mtpfileandfolderdp/inc/mtpfiledpconst.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpfileandfolderdp/inc/mtpfiledpconst.h Wed Sep 15 13:07:27 2010 +0300 @@ -75,7 +75,8 @@ EMTPObjectPropCodeParentObject, EMTPObjectPropCodePersistentUniqueObjectIdentifier, EMTPObjectPropCodeName, - EMTPObjectPropCodeNonConsumable + EMTPObjectPropCodeNonConsumable, + EMTPObjectPropCodeHidden }; /** diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetformatcapabilities.h --- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetformatcapabilities.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetformatcapabilities.h Wed Sep 15 13:07:27 2010 +0300 @@ -51,6 +51,7 @@ void ServiceOneFormatCapabilitiesL(TUint aFormatCode); CMTPTypeObjectPropDesc* ServiceProtectionStatusL(); CMTPTypeObjectPropDesc* ServiceNonConsumableL(); + CMTPTypeObjectPropDesc* ServiceHiddenL(); TUint16 GetPropertyGroupNumber(const TUint16 aPropCode) const; diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobjectpropdesc.h --- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobjectpropdesc.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobjectpropdesc.h Wed Sep 15 13:07:27 2010 +0300 @@ -70,6 +70,7 @@ void ServiceRepresentativeSampleWidthL(); void ServiceRepresentativeSampleDataL(); void ServiceNonConsumableL(); + void ServiceHiddenL(); TUint16 GetPropertyGroupNumber(const TUint16 aPropCode) const; private: diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobjectpropvalue.h --- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobjectpropvalue.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobjectpropvalue.h Wed Sep 15 13:07:27 2010 +0300 @@ -73,6 +73,7 @@ void ServiceRepresentativeSampleWidthL(); void ServiceRepresentativeSampleDataL(); void ServiceNonConsumableL(); + void ServiceHiddenL(); private: CMTPImageDpObjectPropertyMgr& iObjectPropertyMgr; diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/inc/cmtpimagedpsendobjectinfo.h --- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedpsendobjectinfo.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedpsendobjectinfo.h Wed Sep 15 13:07:27 2010 +0300 @@ -175,6 +175,7 @@ CMTPObjectMetaData* iReceivedObject; TMTPTypeRequest iExpectedSendObjectRequest; TUint16 iProtectionStatus; + TUint16 iHiddenStatus; TUint16 iFormatCode; TUint32 iPreviousTransactionID; CMTPImageDpObjectPropertyMgr& iObjectPropertyMgr; diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/inc/mtpimagedpconst.h --- a/mtpdataproviders/mtpimagedp/inc/mtpimagedpconst.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/inc/mtpimagedpconst.h Wed Sep 15 13:07:27 2010 +0300 @@ -98,7 +98,8 @@ EMTPObjectPropCodeRepresentativeSampleHeight, EMTPObjectPropCodeRepresentativeSampleWidth, EMTPObjectPropCodeRepresentativeSampleData, - EMTPObjectPropCodeNonConsumable + EMTPObjectPropCodeNonConsumable, + EMTPObjectPropCodeHidden }; /** @@ -134,7 +135,10 @@ EMTPObjectPropCodeRepresentativeSampleSize, EMTPObjectPropCodeRepresentativeSampleHeight, EMTPObjectPropCodeRepresentativeSampleWidth, - EMTPObjectPropCodeRepresentativeSampleData + EMTPObjectPropCodeRepresentativeSampleData, + + //From file system + EMTPObjectPropCodeHidden }; /** diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpcopyobject.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpcopyobject.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpcopyobject.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -45,7 +45,7 @@ const TMTPRequestElementInfo KMTPCopyObjectPolicy[] = { {TMTPTypeRequest::ERequestParameter2, EMTPElementTypeStorageId, EMTPElementAttrWrite, 0, 0, 0}, - {TMTPTypeRequest::ERequestParameter3, EMTPElementTypeObjectHandle, EMTPElementAttrDir | EMTPElementAttrWrite, 1, 0, 0} + {TMTPTypeRequest::ERequestParameter3, EMTPElementTypeObjectHandle, EMTPElementAttrDir, 1, 0, 0} }; /** diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectpropdesc.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectpropdesc.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectpropdesc.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -175,7 +175,10 @@ break; case EMTPObjectPropCodeNonConsumable: ServiceNonConsumableL(); - break; + break; + case EMTPObjectPropCodeHidden: + ServiceHiddenL(); + break; default: { //Leave @@ -434,6 +437,21 @@ iObjectProperty = CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeNonConsumable, *expectedForm); CleanupStack::PopAndDestroy(expectedForm); } + +void CMTPImageDpGetObjectPropDesc::ServiceHiddenL() + { + CMTPTypeObjectPropDescEnumerationForm* expectedForm = CMTPTypeObjectPropDescEnumerationForm::NewL(EMTPTypeUINT16); + CleanupStack::PushL(expectedForm); + TUint16 values[] = {EMTPVisible,EMTPHidden}; + TUint numValues((sizeof(values) / sizeof(values[0]))); + for (TUint i = 0; i < numValues; i++) + { + TMTPTypeUint16 data(values[i]); + expectedForm->AppendSupportedValueL(data); + } + iObjectProperty = CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeHidden, *expectedForm); + CleanupStack::PopAndDestroy(expectedForm); + } TUint16 CMTPImageDpGetObjectPropDesc::GetPropertyGroupNumber(const TUint16 aPropCode) const { diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -424,7 +424,24 @@ propElem.SetUint8L(CMTPTypeObjectPropListElement::EValue, value); iPropertyList->CommitPropElemL(propElem); } - break; + break; + case EMTPObjectPropCodeHidden: + { + TEntry FileEntry; + User::LeaveIfError(iFramework.Fs().Entry(iObjectMeta->DesC(CMTPObjectMetaData::ESuid), FileEntry)); + CMTPTypeObjectPropListElement& propElem = iPropertyList->ReservePropElemL(aHandle, aPropCode); + TBool isHidden = FileEntry.IsHidden(); + if ( isHidden ) + { + propElem.SetUint16L(CMTPTypeObjectPropListElement::EValue,EMTPHidden ); + } + else + { + propElem.SetUint16L(CMTPTypeObjectPropListElement::EValue,EMTPVisible ); + } + iPropertyList->CommitPropElemL(propElem); + } + break; default: //Leave { diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectpropvalue.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectpropvalue.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectpropvalue.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -189,7 +189,10 @@ break; case EMTPObjectPropCodeNonConsumable: ServiceNonConsumableL(); - break; + break; + case EMTPObjectPropCodeHidden: + ServiceHiddenL(); + break; default: User::Leave(KErrGeneral); } @@ -353,3 +356,11 @@ iMTPTypeUint8.Set(nonConsumable); SendDataL(iMTPTypeUint8); } + +void CMTPImageDpGetObjectPropValue::ServiceHiddenL() + { + TUint16 hiddenStatus; + iObjectPropertyMgr.GetPropertyL(EMTPObjectPropCodeHidden, hiddenStatus); + iMTPTypeUint16.Set(hiddenStatus); + SendDataL(iMTPTypeUint16); + } diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -277,6 +277,24 @@ case EMTPObjectPropCodeProtectionStatus://this property does not supported by image dp //nothing to do break; + case EMTPObjectPropCodeHidden: + { + __ASSERT_ALWAYS(( EMTPHidden == aValue )||( EMTPVisible == aValue ), User::Leave(KErrArgument)); + TEntry entry; + User::LeaveIfError(iFramework.Fs().Entry(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), entry)); + if (( EMTPHidden == aValue ) && ( !entry.IsHidden())) + { + entry.iAtt &= ~KEntryAttHidden; + entry.iAtt |= KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt)); + } + else if (( EMTPVisible == aValue )&&( entry.IsHidden())) + { + entry.iAtt &= ~KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt)); + } + } + break; default: //nothing to do break; @@ -420,7 +438,20 @@ aValue = EMTPProtectionNoProtection; } } - break; + break; + case EMTPObjectPropCodeHidden: + { + TInt err = iFs.Entry(iObjectInfo->DesC(CMTPObjectMetaData::ESuid), entry); + if ( err == KErrNone && entry.IsHidden()) + { + aValue = EMTPHidden; + } + else + { + aValue = EMTPVisible; + } + } + break; default: aValue = 0;//initialization //ingore the failure if we can't get properties form MdS diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpsendobjectinfo.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpsendobjectinfo.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpsendobjectinfo.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -98,6 +98,7 @@ CMTPImageDpSendObjectInfo::CMTPImageDpSendObjectInfo(MMTPDataProviderFramework& aFramework, MMTPConnection& aConnection, CMTPImageDataProvider& aDataProvider) : CMTPRequestProcessor(aFramework, aConnection, 0, NULL), iDataProvider(aDataProvider), + iHiddenStatus( EMTPVisible ), iObjectPropertyMgr(aDataProvider.PropertyMgr()) { @@ -785,12 +786,12 @@ SendResponseL(EMTPRespCodeTransactionCancelled); } else if (result && !iCancelled) - { + { + TUint attValue = 0; + User::LeaveIfError(iFileReceived->File().Att(attValue)); if (iProtectionStatus == EMTPProtectionNoProtection || iProtectionStatus == EMTPProtectionReadOnly) { - TUint attValue = 0; - User::LeaveIfError(iFileReceived->File().Att(attValue)); attValue &= ~(KEntryAttNormal | KEntryAttReadOnly); if (iProtectionStatus == EMTPProtectionNoProtection) @@ -803,6 +804,12 @@ } User::LeaveIfError(iFileReceived->File().SetAtt(attValue, ~attValue)); } + if ( iHiddenStatus == EMTPHidden ) + { + attValue &= ~KEntryAttHidden; + attValue |= KEntryAttHidden; + User::LeaveIfError(iFileReceived->File().SetAtt(attValue, ~attValue)); + } TTime modifiedTime; //update datemodified property. if(iDateMod != NULL && iDateMod->Length()) @@ -1062,7 +1069,9 @@ case EMTPObjectPropCodeNonConsumable: iNonConsumable = aElement.Uint8L(CMTPTypeObjectPropListElement::EValue); break; - + case EMTPObjectPropCodeHidden: + iHiddenStatus = aElement.Uint16L(CMTPTypeObjectPropListElement::EValue); + break; default: break; } @@ -1133,6 +1142,7 @@ case EMTPObjectPropCodeRepresentativeSampleFormat: case EMTPObjectPropCodeProtectionStatus: + case EMTPObjectPropCodeHidden: if (aElement.Uint16L(CMTPTypeObjectPropListElement::EDatatype) != EMTPTypeUINT16) { responseCode = EMTPRespCodeInvalidObjectPropFormat; diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpsetobjectproplist.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpsetobjectproplist.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpsetobjectproplist.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -116,7 +116,10 @@ case EMTPObjectPropCodeNonConsumable: iPropertyMgr.SetPropertyL(TMTPObjectPropertyCode(propertyCode), element.Uint8L(CMTPTypeObjectPropListElement::EValue)); objects.ModifyObjectL(*iObjectMeta); - break; + break; + case EMTPObjectPropCodeHidden: + iPropertyMgr.SetPropertyL(TMTPObjectPropertyCode(propertyCode), element.Uint16L(CMTPTypeObjectPropListElement::EValue)); + break; default: responseCode = EMTPRespCodeInvalidObjectPropCode; break; @@ -180,7 +183,13 @@ { responseCode = EMTPRespCodeInvalidObjectPropFormat; } - break; + break; + case EMTPObjectPropCodeHidden: + if (aDataType != EMTPTypeUINT16) + { + responseCode = EMTPRespCodeInvalidObjectPropFormat; + } + break; default: responseCode = EMTPRespCodeInvalidObjectPropCode; } diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/cmtpimagedpsetobjectpropvalue.cpp --- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpsetobjectpropvalue.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpsetobjectpropvalue.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -168,7 +168,10 @@ break; case EMTPObjectPropCodeNonConsumable: ReceiveDataL(iMTPTypeUint8); - break; + break; + case EMTPObjectPropCodeHidden: + ReceiveDataL(iMTPTypeUint16); + break; default: User::Leave(KErrGeneral); } @@ -233,7 +236,13 @@ iFramework.ObjectMgr().ModifyObjectL(*iObjectMeta); responseCode = EMTPRespCodeOK; } - break; + break; + case EMTPObjectPropCodeHidden: + { + iObjectPropertyMgr.SetPropertyL(TMTPObjectPropertyCode(propCode), iMTPTypeUint16.Value()); + responseCode = EMTPRespCodeOK; + } + break; default: responseCode = EMTPRespCodeInvalidObjectPropFormat; //Panic(EMTPImageDpUnsupportedProperty); diff -r 74aa6861c87d -r debf68073f2f mtpdataproviders/mtpimagedp/src/mtpimagedpgetformatcapabilities.cpp --- a/mtpdataproviders/mtpimagedp/src/mtpimagedpgetformatcapabilities.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpdataproviders/mtpimagedp/src/mtpimagedpgetformatcapabilities.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -132,7 +132,8 @@ //EMTPObjectPropCodeNonConsumable frmCap->AppendL(ServiceNonConsumableL() ); - + //EMTPObjectPropCodeHidden + frmCap->AppendL( ServiceHiddenL() ); CMTPTypeObjectPropDesc::TPropertyInfo info; info.iDataType = EMTPTypeString; @@ -294,6 +295,22 @@ __FLOG(_L8("<< CMTPPictureDpGetFormatCapabilities::ConstructL")); } +CMTPTypeObjectPropDesc* CMTPImageDpGetFormatCapabilities::ServiceHiddenL() + { + CMTPTypeObjectPropDescEnumerationForm* expectedForm = CMTPTypeObjectPropDescEnumerationForm::NewL(EMTPTypeUINT16); + CleanupStack::PushL(expectedForm); + TUint16 values[] = {EMTPVisible, EMTPHidden}; + TUint numValues((sizeof(values) / sizeof(values[0]))); + for (TUint i = 0; i < numValues; i++) + { + TMTPTypeUint16 data(values[i]); + expectedForm->AppendSupportedValueL(data); + } + CMTPTypeObjectPropDesc* ret = CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeHidden, *expectedForm); + CleanupStack::PopAndDestroy(expectedForm); + return ret; + } + TUint16 CMTPImageDpGetFormatCapabilities::GetPropertyGroupNumber(const TUint16 aPropCode) const { for( TInt propCodeIndex = 0 ; propCodeIndex < KMTPImageDpGroupOneSize ; propCodeIndex++) diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/devdp/inc/mtpdevicedpconst.h --- a/mtpfws/mtpfw/dataproviders/devdp/inc/mtpdevicedpconst.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/devdp/inc/mtpdevicedpconst.h Wed Sep 15 13:07:27 2010 +0300 @@ -110,7 +110,8 @@ EMTPObjectPropCodeParentObject, EMTPObjectPropCodePersistentUniqueObjectIdentifier, EMTPObjectPropCodeName, - EMTPObjectPropCodeNonConsumable + EMTPObjectPropCodeNonConsumable, + EMTPObjectPropCodeHidden }; static const TUint16 KMTPDeviceDpSupportedEvents[] = diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp --- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -416,7 +416,14 @@ TInt lengthOfRight( folderRight.Length()); TFileName folderLeft; - _LIT( KRootFolder, "?:\\"); + // get root path of storage + TInt driveNumber; + User::LeaveIfError(Framework().Fs().CharToDrive(folderRight[0], driveNumber)); + RBuf rootDirPath; + rootDirPath.CreateL(KMaxFileName); + rootDirPath.CleanupClosePushL(); + iDevDpSingletons.ConfigMgr().GetRootDirPathL(driveNumber, rootDirPath); + rootDirPath.Insert(0, folderRight.Mid(0, 2));// get drive: /* Go through from beginning. @@ -434,7 +441,7 @@ lengthOfRight = folderRight.Length()-pos -1; folderRight.Set( folderRight.Right( lengthOfRight )); - if ( KErrNotFound != folderLeft.Match( KRootFolder )) + if ( rootDirPath.FindF(folderLeft) != KErrNotFound) { //first time, root folder //continue @@ -444,7 +451,7 @@ handle = Framework().ObjectMgr().HandleL( folderLeft ); } while( KMTPHandleNone != handle ); - + CleanupStack::PopAndDestroy(&rootDirPath); if ( KMTPHandleNone == handle ) { diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/inc/cmtpcopyobject.h --- a/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpcopyobject.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpcopyobject.h Wed Sep 15 13:07:27 2010 +0300 @@ -84,6 +84,7 @@ TUint32 iNewParentHandle; TUint32 iStorageId; TTime iPreviousModifiedTime; + TBool iIsHidden; RMTPFramework iSingletons; RMTPDpSingletons iDpSingletons; CPeriodic* iTimer; diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetformatcapabilities.h --- a/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetformatcapabilities.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetformatcapabilities.h Wed Sep 15 13:07:27 2010 +0300 @@ -52,6 +52,7 @@ CMTPTypeObjectPropDesc* ServiceProtectionStatusL(); CMTPTypeObjectPropDesc* ServiceAssociationTypeL(); CMTPTypeObjectPropDesc* ServiceNonConsumableL(); + CMTPTypeObjectPropDesc* ServiceHiddenL(); private: // Owned diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetobjectpropdesc.h --- a/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetobjectpropdesc.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetobjectpropdesc.h Wed Sep 15 13:07:27 2010 +0300 @@ -62,6 +62,7 @@ void ServicePuidL(); void ServiceNameL(); void ServiceNonConsumableL(); + void ServiceHiddenL(); TUint16 GetPropertyGroupNumber(const TUint16 aPropCode) const; private: diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetobjectpropvalue.h --- a/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetobjectpropvalue.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpgetobjectpropvalue.h Wed Sep 15 13:07:27 2010 +0300 @@ -69,6 +69,8 @@ void ServicePuidL(); void ServiceNameL(); void ServiceNonConsumableL(); + void ServiceHiddenL(); + private: TMTPTypeUint8 iMTPTypeUint8; TMTPTypeUint16 iMTPTypeUint16; diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/inc/cmtpmoveobject.h --- a/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpmoveobject.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpmoveobject.h Wed Sep 15 13:07:27 2010 +0300 @@ -85,6 +85,7 @@ CPeriodic* iTimer; HBufC* iNewFileName; TBool iIsFolder; + TBool iIsHidden; /** FLOGGER debug trace member variable. */ diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/inc/cmtpsendobjectinfo.h --- a/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpsendobjectinfo.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpsendobjectinfo.h Wed Sep 15 13:07:27 2010 +0300 @@ -123,6 +123,7 @@ TBool iIsFolder; TMTPTypeNull iNullObject; TUint16 iProtectionStatus; + TUint16 iHiddenStatus; TUint32 iPreviousTransactionID; RMTPDpSingletons iDpSingletons; TFileName iName; diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/inc/mtpdpconst.h --- a/mtpfws/mtpfw/dataproviders/dputility/inc/mtpdpconst.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/inc/mtpdpconst.h Wed Sep 15 13:07:27 2010 +0300 @@ -40,7 +40,8 @@ EMTPObjectPropCodeParentObject, EMTPObjectPropCodePersistentUniqueObjectIdentifier, EMTPObjectPropCodeName, - EMTPObjectPropCodeNonConsumable + EMTPObjectPropCodeNonConsumable, + EMTPObjectPropCodeHidden }; /** @@ -64,7 +65,7 @@ static const TUint16 KMTPDpPropertyGroups[KMTPDpPropertyGroupNumber+1][KMTPDpPropertyNumber] = { {}, // group 0 is not used. - // group 1 contains 10 proeprties + // group 1 contains 11 proeprties { EMTPObjectPropCodeStorageID, EMTPObjectPropCodeObjectFormat, EMTPObjectPropCodeProtectionStatus, @@ -74,7 +75,8 @@ EMTPObjectPropCodeParentObject, EMTPObjectPropCodePersistentUniqueObjectIdentifier, EMTPObjectPropCodeName, - EMTPObjectPropCodeNonConsumable } + EMTPObjectPropCodeNonConsumable, + EMTPObjectPropCodeHidden} }; diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpcopyobject.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpcopyobject.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpcopyobject.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -359,6 +359,12 @@ { __FLOG(_L8("GetPreviousPropertiesL - Entry")); User::LeaveIfError(iFramework.Fs().Modified(aFileName, iPreviousModifiedTime)); + if ( iIsFolder ) + { + TEntry fileEntry; + User::LeaveIfError(iFramework.Fs().Entry( aFileName, fileEntry )); + iIsHidden = fileEntry.IsHidden(); + } __FLOG(_L8("GetPreviousPropertiesL - Exit")); } @@ -369,6 +375,14 @@ { __FLOG(_L8("SetPreviousPropertiesL - Entry")); User::LeaveIfError(iFramework.Fs().SetModified(aFileName, iPreviousModifiedTime)); + if ( iIsFolder && iIsHidden ) + { + TEntry fileEntry; + User::LeaveIfError(iFramework.Fs().Entry( aFileName, fileEntry )); + fileEntry.iAtt &= ~KEntryAttHidden; + fileEntry.iAtt |= KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt( aFileName, fileEntry.iAtt, ~fileEntry.iAtt)); + } __FLOG(_L8("SetPreviousPropertiesL - Exit")); } diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetformatcapabilities.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetformatcapabilities.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetformatcapabilities.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -160,6 +160,12 @@ CleanupStack::PushL(nonConsumable); frmCap->AppendL(nonConsumable); CleanupStack::Pop(nonConsumable); + + //Hidden + CMTPTypeObjectPropDesc* hidden = ServiceHiddenL(); + CleanupStack::PushL( hidden ); + frmCap->AppendL( hidden ); + CleanupStack::Pop( hidden ); iCapabilityList->AppendL(frmCap); CleanupStack::Pop(frmCap); @@ -227,6 +233,11 @@ CleanupStack::PushL(nonConsumable); frmCap->AppendL(nonConsumable); CleanupStack::Pop(nonConsumable); + //Hidden + CMTPTypeObjectPropDesc* hidden = ServiceHiddenL(); + CleanupStack::PushL( hidden ); + frmCap->AppendL( hidden ); + CleanupStack::Pop( hidden ); iCapabilityList->AppendL(frmCap); CleanupStack::Pop(frmCap); @@ -295,6 +306,23 @@ return ret; } +CMTPTypeObjectPropDesc* CMTPGetFormatCapabilities::ServiceHiddenL() + { + CMTPTypeObjectPropDescEnumerationForm* expectedForm = CMTPTypeObjectPropDescEnumerationForm::NewL(EMTPTypeUINT16); + CleanupStack::PushL(expectedForm); + TUint16 values[] = {EMTPVisible, EMTPHidden}; + TUint numValues((sizeof(values) / sizeof(values[0]))); + for (TUint i = 0; i < numValues; i++) + { + TMTPTypeUint16 data(values[i]); + expectedForm->AppendSupportedValueL(data); + } + CMTPTypeObjectPropDesc* ret = CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeHidden, *expectedForm); + CleanupStack::PopAndDestroy(expectedForm); + + return ret; + } + TMTPResponseCode CMTPGetFormatCapabilities::CheckRequestL() { TMTPResponseCode response = CMTPRequestProcessor::CheckRequestL(); diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectpropdesc.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectpropdesc.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectpropdesc.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -157,6 +157,9 @@ case EMTPObjectPropCodeNonConsumable: ServiceNonConsumableL(); break; + case EMTPObjectPropCodeHidden: + ServiceHiddenL(); + break; default: User::Leave( KErrNotSupported ); break; @@ -294,7 +297,20 @@ CleanupStack::PopAndDestroy(expectedForm); } - +void CMTPGetObjectPropDesc::ServiceHiddenL() + { + CMTPTypeObjectPropDescEnumerationForm* expectedForm = CMTPTypeObjectPropDescEnumerationForm::NewL(EMTPTypeUINT16); + CleanupStack::PushL(expectedForm); + TUint16 values[] = {EMTPVisible,EMTPHidden}; + TUint numValues((sizeof(values) / sizeof(values[0]))); + for (TUint i = 0; i < numValues; i++) + { + TMTPTypeUint16 data(values[i]); + expectedForm->AppendSupportedValueL(data); + } + iObjectProperty = CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeHidden, *expectedForm); + CleanupStack::PopAndDestroy(expectedForm); + } TUint16 CMTPGetObjectPropDesc::GetPropertyGroupNumber(const TUint16 aPropCode) const { diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectproplist.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectproplist.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectproplist.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -477,7 +477,22 @@ iPropertyList->CommitPropElemL(propElem); } } - break; + break; + case EMTPObjectPropCodeHidden: + { + TBool isHidden = iFileEntry.IsHidden(); + CMTPTypeObjectPropListElement& propElem = iPropertyList->ReservePropElemL(aHandle, aPropCode); + if ( isHidden ) + { + propElem.SetUint16L(CMTPTypeObjectPropListElement::EValue, EMTPHidden); + } + else + { + propElem.SetUint16L(CMTPTypeObjectPropListElement::EValue, EMTPVisible); + } + iPropertyList->CommitPropElemL(propElem); + } + break; default: User::Leave( KErrNotSupported ); break; diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectpropvalue.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectpropvalue.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetobjectpropvalue.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -165,6 +165,9 @@ case EMTPObjectPropCodeNonConsumable: ServiceNonConsumableL(); break; + case EMTPObjectPropCodeHidden: + ServiceHiddenL(); + break; default: User::Leave( KErrNotSupported ); break; @@ -265,6 +268,19 @@ SendDataL(iMTPTypeUint8); } +void CMTPGetObjectPropValue::ServiceHiddenL() + { + TBool isHidden = iFileEntry.IsHidden(); + if ( isHidden ) + { + iMTPTypeUint16.Set(EMTPHidden); + } + else + { + iMTPTypeUint16.Set(EMTPVisible); + } + SendDataL(iMTPTypeUint16); + } diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -380,6 +380,12 @@ { __FLOG(_L8("GetPreviousPropertiesL - Entry")); User::LeaveIfError(iFramework.Fs().Modified(aFileName, iPreviousModifiedTime)); + if ( iIsFolder ) + { + TEntry fileEntry; + User::LeaveIfError(iFramework.Fs().Entry( aFileName, fileEntry )); + iIsHidden = fileEntry.IsHidden(); + } __FLOG(_L8("GetPreviousPropertiesL - Exit")); } @@ -390,6 +396,14 @@ { __FLOG(_L8("SetPreviousPropertiesL - Entry")); User::LeaveIfError(iFramework.Fs().SetModified(aFileName, iPreviousModifiedTime)); + if ( iIsFolder && iIsHidden ) + { + TEntry fileEntry; + User::LeaveIfError(iFramework.Fs().Entry( aFileName, fileEntry )); + fileEntry.iAtt &= ~KEntryAttHidden; + fileEntry.iAtt |= KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt( aFileName, fileEntry.iAtt, ~fileEntry.iAtt)); + } __FLOG(_L8("SetPreviousPropertiesL - Exit")); } diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -100,7 +100,8 @@ @param aConnection The connection from which the request comes */ CMTPSendObjectInfo::CMTPSendObjectInfo(MMTPDataProviderFramework& aFramework, MMTPConnection& aConnection) : - CMTPRequestProcessor(aFramework, aConnection, 0, NULL) + CMTPRequestProcessor(aFramework, aConnection, 0, NULL), + iHiddenStatus( EMTPVisible ) { } @@ -660,14 +661,15 @@ if (!iIsFolder) { - delete iFileReceived; - iFileReceived = NULL; TEntry fileEntry; User::LeaveIfError(iFramework.Fs().Entry(iFullPath, fileEntry)); if (fileEntry.FileSize() != iObjectSize) { + delete iFileReceived; + iFileReceived = NULL; + iFramework.RouteRequestUnregisterL(iExpectedSendObjectRequest, iConnection); iFramework.Fs().Delete(iFullPath); @@ -713,6 +715,8 @@ if(!iIsFolder) { SetPropertiesL(); + delete iFileReceived; + iFileReceived = NULL; iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObject); iFullPath.LowerCase(); __FLOG_VA((_L8("File Name %S"), &iFullPath)); @@ -939,6 +943,9 @@ case EMTPObjectPropCodeName: iName = aElement.StringL(CMTPTypeObjectPropListElement::EValue); break; + case EMTPObjectPropCodeHidden: + iHiddenStatus = aElement.Uint16L(CMTPTypeObjectPropListElement::EValue); + break; default: break; } @@ -1031,6 +1038,7 @@ break; case EMTPObjectPropCodeAssociationType: + case EMTPObjectPropCodeHidden: if (aElement.Uint16L(CMTPTypeObjectPropListElement::EDatatype) != EMTPTypeUINT16) { responseCode = EMTPRespCodeInvalidObjectPropFormat; @@ -1199,6 +1207,7 @@ void CMTPSendObjectInfo::SetPropertiesL() { __FLOG(_L8("SetPropertiesL - Entry")); + TEntry entry; User::LeaveIfError(iFramework.Fs().Entry(iFullPath, entry)); @@ -1235,14 +1244,42 @@ { entry.iAtt |= KEntryAttReadOnly; } - User::LeaveIfError(iFramework.Fs().SetAtt(iFullPath, entry.iAtt, ~entry.iAtt)); + if ( iFileReceived ) + { + User::LeaveIfError(iFileReceived->File().SetAtt(entry.iAtt, ~entry.iAtt)); + } + else + { + User::LeaveIfError(iFramework.Fs().SetAtt(iFullPath, entry.iAtt, ~entry.iAtt)); + } } - + + if ( EMTPHidden == iHiddenStatus ) + { + entry.iAtt &= ~KEntryAttHidden; + entry.iAtt |= KEntryAttHidden; + if ( iFileReceived ) + { + User::LeaveIfError(iFileReceived->File().SetAtt(entry.iAtt, ~entry.iAtt)); + } + else + { + User::LeaveIfError(iFramework.Fs().SetAtt(iFullPath, entry.iAtt, ~entry.iAtt)); + } + } + if(iDateMod != NULL && iDateMod->Length()) { TTime modifiedTime; iDpSingletons.MTPUtility().MTPTimeStr2TTime(*iDateMod, modifiedTime); - User::LeaveIfError(iFramework.Fs().SetModified(iFullPath, modifiedTime)); + if ( iFileReceived ) + { + User::LeaveIfError(iFileReceived->File().SetModified( modifiedTime )); + } + else + { + User::LeaveIfError(iFramework.Fs().SetModified(iFullPath, modifiedTime)); + } } iReceivedObject->SetDesCL(CMTPObjectMetaData::EName, iName); diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectproplist.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectproplist.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectproplist.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -128,7 +128,35 @@ } } break; - + case EMTPObjectPropCodeHidden: + { + TUint16 hiddenStatus = element.Uint16L(CMTPTypeObjectPropListElement::EValue); + TEntry entry; + if ( EMTPHidden == hiddenStatus ) + { + User::LeaveIfError(iFramework.Fs().Entry(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry)); + if ( !entry.IsHidden()) + { + entry.iAtt &= ~KEntryAttHidden; + entry.iAtt |= KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt)); + } + } + else if ( EMTPVisible == hiddenStatus ) + { + User::LeaveIfError(iFramework.Fs().Entry(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry)); + if ( entry.IsHidden()) + { + entry.iAtt &= ~KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt)); + } + } + else + { + responseCode = EMTPRespCodeInvalidObjectPropValue; + } + break; + } case EMTPObjectPropCodeNonConsumable: iObjMeta->SetUint( CMTPObjectMetaData::ENonConsumable, element.Uint8L(CMTPTypeObjectPropListElement::EValue)); iFramework.ObjectMgr().ModifyObjectL(*iObjMeta); @@ -211,6 +239,7 @@ } break; case EMTPObjectPropCodeAssociationType: + case EMTPObjectPropCodeHidden: if (aDataType != EMTPTypeUINT16) { responseCode = EMTPRespCodeInvalidObjectPropFormat; diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectpropvalue.cpp --- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectpropvalue.cpp Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsetobjectpropvalue.cpp Wed Sep 15 13:07:27 2010 +0300 @@ -192,6 +192,7 @@ ReceiveDataL(iMTPTypeUint8); break; case EMTPObjectPropCodeAssociationType: + case EMTPObjectPropCodeHidden: { ReceiveDataL(iMTPTypeUint16); } @@ -245,7 +246,37 @@ } } break; - + case EMTPObjectPropCodeHidden: + { + if ( EMTPHidden == iMTPTypeUint16.Value()) + { + TEntry entry; + User::LeaveIfError(iFramework.Fs().Entry(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry)); + if ( !entry.IsHidden()) + { + entry.iAtt &= ~KEntryAttHidden; + entry.iAtt |= KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt)); + } + responseCode = EMTPRespCodeOK; + } + else if ( EMTPVisible == iMTPTypeUint16.Value()) + { + TEntry entry; + User::LeaveIfError(iFramework.Fs().Entry(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry)); + if ( entry.IsHidden()) + { + entry.iAtt &= ~KEntryAttHidden; + User::LeaveIfError(iFramework.Fs().SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt)); + } + responseCode = EMTPRespCodeOK; + } + else + { + responseCode = EMTPRespCodeInvalidObjectPropValue; + } + } + break; case EMTPObjectPropCodeObjectFileName: { diff -r 74aa6861c87d -r debf68073f2f mtpfws/mtpfw/datatypes/interface/mtpprotocolconstants.h --- a/mtpfws/mtpfw/datatypes/interface/mtpprotocolconstants.h Tue Sep 14 22:52:29 2010 +0300 +++ b/mtpfws/mtpfw/datatypes/interface/mtpprotocolconstants.h Wed Sep 15 13:07:27 2010 +0300 @@ -800,6 +800,12 @@ EMTPProtectionNonTransferable = 0x8003 }; +enum TMTPHiddenStatus + { + EMTPVisible = 0x0000, + EMTPHidden = 0x0001 + }; + /** The MTP consumable status datacodes. For a description of these datacodes, please refer to the "Media Transfer Protocol Enhanced" specification.