diff -r d45095c2f4f3 -r bee149131e4b mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdescriptionutility.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdescriptionutility.cpp Fri Feb 19 23:18:32 2010 +0200 @@ -0,0 +1,228 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include +#include + +#include "cdescriptionutility.h" +#include "tobjectdescription.h" + +#include "mmmtpdplogger.h" + + +_LIT( KMtpObjDescObjFileName, + "[a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~][a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~ ]{0, 7}\\.[[a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~][a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~ ]{0, 2}]?" ); +// RegEx is [a-zA-Z!#\$%&'\(\)\-0-9@\^_\`\{\}\~][a-zA-Z!#\$%&'\(\)\-0-9@\^_\`\{\}\~ ]{0, 7}\.[[a-zA-Z!#\$%&'\(\)\-0-9@\^_\`\{\}\~][a-zA-Z!#\$%&'\(\)\-0-9@\^_\`\{\}\~ ]{0, 2}]? + +EXPORT_C CDescriptionUtility::CDescriptionUtility() + { + // Do nothing + } + +EXPORT_C CDescriptionUtility::~CDescriptionUtility() + { + // Do nothing + } + +EXPORT_C CMTPTypeObjectPropDesc* CDescriptionUtility::NewCommonObjectPropertyL( TUint16 aPropCode ) + { + CMTPTypeObjectPropDesc* propertyDesc = NULL; + + switch ( aPropCode ) + { + case EMTPObjectPropCodeStorageID: + case EMTPObjectPropCodeObjectFormat: + case EMTPObjectPropCodeObjectSize: + case EMTPObjectPropCodeParentObject: + case EMTPObjectPropCodePersistentUniqueObjectIdentifier: + case EMTPObjectPropCodeName: + case EMTPObjectPropCodeDateAdded: + propertyDesc = CMTPTypeObjectPropDesc::NewL( aPropCode ); + break; + + // Protection Status (m) + case EMTPObjectPropCodeProtectionStatus: + propertyDesc = NewProtectionStatusPropDescL(); + break; + + // FileName + case EMTPObjectPropCodeObjectFileName: + propertyDesc = NewFileNamePropDescL(); + break; + + // Consumable (m) + case EMTPObjectPropCodeNonConsumable: + propertyDesc = NewNonConsumablePropDescL(); + break; + + case EMTPObjectPropCodeDateModified: // Date Modified + case EMTPObjectPropCodeDateCreated: // Date Created + { + CMTPTypeObjectPropDesc::TPropertyInfo propertyInfo; + propertyInfo.iDataType = EMTPTypeString; + propertyInfo.iFormFlag = CMTPTypeObjectPropDesc::EDateTimeForm; + propertyInfo.iGetSet = CMTPTypeObjectPropDesc::EReadOnly; + propertyDesc = CMTPTypeObjectPropDesc::NewL( aPropCode, + propertyInfo, + NULL ); + } + break; + + default: + break; + } + return propertyDesc; + } + +// ----------------------------------------------------------------------------- +// CDescriptionUtility::NewRangeFormDescriptionL +// +// ----------------------------------------------------------------------------- +// +EXPORT_C CMTPTypeObjectPropDesc* CDescriptionUtility::NewRangeFormDescriptionL( TUint16 aPropertyCode, + TUint32 aMinValue, + TUint32 aMaxValue, + TUint32 aStepValue, + TBool aIsReadOnly ) + { + PRINT1( _L( "MM MTP => CDescriptionUtility::NewRangeFormDescriptionL, aPropertyCode = 0x%x" ), + aPropertyCode ); + CMTPTypeObjectPropDescRangeForm* form = + CMTPTypeObjectPropDescRangeForm::NewLC( EMTPTypeUINT32 ); // + form + + // Set expected values + form->SetUint32L( CMTPTypeObjectPropDescRangeForm::EMinimumValue, aMinValue ); + form->SetUint32L( CMTPTypeObjectPropDescRangeForm::EMaximumValue, aMaxValue ); + form->SetUint32L( CMTPTypeObjectPropDescRangeForm::EStepSize, aStepValue ); + + CMTPTypeObjectPropDesc::TPropertyInfo propertyInfo; + propertyInfo.iDataType = EMTPTypeUINT32; + propertyInfo.iFormFlag = CMTPTypeObjectPropDesc::ERangeForm; + propertyInfo.iGetSet = !aIsReadOnly; + + CMTPTypeObjectPropDesc* propertyDesc = CMTPTypeObjectPropDesc::NewL( aPropertyCode, + propertyInfo, + form ); // + propertyDesc + + CleanupStack::PopAndDestroy( form ); // - form + PRINT( _L( "MM MTP <= CDescriptionUtility::NewRangeFormDescriptionL" ) ); + + return propertyDesc; + } + +// ----------------------------------------------------------------------------- +// CDescriptionUtility::GetGroupCode +// Get MTPTypeObjectPropDesc according to property code +// ----------------------------------------------------------------------------- +// +TUint32 CDescriptionUtility::GetGroupCode( TUint32 aPropCode ) + { + TInt count = sizeof( KPropGroupMapTable ) / sizeof( KPropGroupMapTable[0] ); + // TODO: if need to refine the search approach to improve performance + for( TInt i = 0; i < count; i++ ) + { + if ( aPropCode == KPropGroupMapTable[i].iPropCode ) + return KPropGroupMapTable[i].iGroupCode; + } + return EGroupCodeNotDefined; + } + +// ----------------------------------------------------------------------------- +// CDescriptionUtility::NewProtectionStatusPropDescL +// New MTPTypeObjectPropDesc protection status +// ----------------------------------------------------------------------------- +// +CMTPTypeObjectPropDesc* CDescriptionUtility::NewProtectionStatusPropDescL() + { + PRINT( _L( "MM MTP => CDescriptionUtility::NewProtectionStatusPropDescL" ) ); + + CMTPTypeObjectPropDescEnumerationForm* expectedForm = + CMTPTypeObjectPropDescEnumerationForm::NewLC( EMTPTypeUINT16 ); // + expectedForm + + TUint16 values[] = + { + EMTPProtectionNoProtection, + EMTPProtectionReadOnly + }; + + TInt numValues = sizeof ( values ) / sizeof ( values[0] ) ; + for ( TInt i = 0; i < numValues; i++ ) + { + TMTPTypeUint16 data( values[i] ); + expectedForm->AppendSupportedValueL( data ); + } + + CMTPTypeObjectPropDesc* propertyDesc = CMTPTypeObjectPropDesc::NewL( EMTPObjectPropCodeProtectionStatus, *expectedForm ); + CleanupStack::PopAndDestroy( expectedForm ); // - expectedForm + + PRINT( _L( "MM MTP <= CDescriptionUtility::NewProtectionStatusPropDescL" ) ); + return propertyDesc; + } + +// ----------------------------------------------------------------------------- +// CDescriptionUtility::NewFileNamePropDescL +// Get MTPTypeObjectPropDesc New file name +// ----------------------------------------------------------------------------- +// +CMTPTypeObjectPropDesc* CDescriptionUtility::NewFileNamePropDescL() + { + PRINT( _L( "MM MTP => CDescriptionUtility::NewFileNamePropDescL" ) ); + CMTPTypeString* form = CMTPTypeString::NewLC( KMtpObjDescObjFileName ); // + form + + CMTPTypeObjectPropDesc* ret = CMTPTypeObjectPropDesc::NewL( EMTPObjectPropCodeObjectFileName, + CMTPTypeObjectPropDesc::ERegularExpressionForm, + form ); + + CleanupStack::PopAndDestroy( form ); // - form + PRINT( _L( "MM MTP <= CDescriptionUtility::NewFileNamePropDescL" ) ); + return ret; + } + +// ----------------------------------------------------------------------------- +// CDescriptionUtility::NewFileNamePropDescL +// Get MTPTypeObjectPropDesc New file name +// ----------------------------------------------------------------------------- +// +CMTPTypeObjectPropDesc* CDescriptionUtility::NewNonConsumablePropDescL() + { + PRINT( _L( "MM MTP => CDescriptionUtility::NewNonConsumablePropDescL" ) ); + CMTPTypeObjectPropDescEnumerationForm* expectedForm = + CMTPTypeObjectPropDescEnumerationForm::NewLC( EMTPTypeUINT8 ); // + expectedForm + TUint8 values[] = + { + EMTPConsumable, + EMTPNonConsumable + }; + + TInt numValues = sizeof ( values ) / sizeof ( values[0] ); + for ( TInt i = 0; i < numValues; i++ ) + { + TMTPTypeUint8 data( values[i] ); + expectedForm->AppendSupportedValueL( data ); + } + + CMTPTypeObjectPropDesc* ret = CMTPTypeObjectPropDesc::NewL( EMTPObjectPropCodeNonConsumable, + CMTPTypeObjectPropDesc::EEnumerationForm, + expectedForm ); + CleanupStack::PopAndDestroy( expectedForm ); // - expectedForm + + PRINT( _L( "MM MTP <= CDescriptionUtility::NewNonConsumablePropDescL" ) ); + return ret; + } + +// end of file