diff -r 000000000000 -r 8c5d936e5675 profilesservices/ProfileEngine/WrapperSrc/CProEngMediaVariation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/profilesservices/ProfileEngine/WrapperSrc/CProEngMediaVariation.cpp Thu Dec 17 08:52:52 2009 +0200 @@ -0,0 +1,165 @@ +/* +* Copyright (c) 2002-2004 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: Implementation of CProEngMediaVariation. +* +*/ + + + +// INCLUDE FILES +#include "CProEngMediaVariation.h" +#include +#include // RApaLsSession +#include "ProfileEngineInternalCRKeys.h" +#include "ProEngMmfInfoUtility.h" +#include "MProfileUtilitySingleton.h" +#include "MProfilesLocalFeatures.h" + +namespace + { + // CONSTANTS + _LIT( KProEngVideoMimeType, "video/*" ); + _LIT( KProEngRMVideoMimeType, "application/vnd.rn-realmedia" ); + _LIT( KProEngSDPVideoMimeType, "application/sdp" ); +#ifdef RD_VIDEO_AS_RINGING_TONE + const TInt KProEngFeatureIdVideoAsRingingTone( 1 ); +#else + const TInt KProEngFeatureIdVideoAsRingingTone( 0 ); +#endif + } + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CProEngMediaVariation::CProEngMediaVariation +// ----------------------------------------------------------------------------- +// +CProEngMediaVariation::CProEngMediaVariation() + { + } + +// ----------------------------------------------------------------------------- +// CProEngMediaVariation::ConstructL +// ----------------------------------------------------------------------------- +// +void CProEngMediaVariation::ConstructL() + { + User::LeaveIfError( iApaLsSession.Connect() ); + + // Singleton must be released in destructor + iLocalFeatures = &( ProfileUtilityInstanceL().ProfilesLocalFeatures() ); + + const TInt KProEngMimesGranularity( 10 ); + iSupportedMimeTypes = new ( ELeave ) CDesC8ArrayFlat( + KProEngMimesGranularity ); + iMimeTypeBuf.CreateL( KMaxDataTypeLength ); + ProEngMmfInfoUtility::GetSupportedMimeTypesL( *iSupportedMimeTypes ); + } + +// ----------------------------------------------------------------------------- +// CProEngMediaVariation::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CProEngMediaVariation* CProEngMediaVariation::NewL() + { + CProEngMediaVariation* self = + new ( ELeave ) CProEngMediaVariation(); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + +// Destructor +CProEngMediaVariation::~CProEngMediaVariation() + { + delete iSupportedMimeTypes; + iMimeTypeBuf.Close(); + iApaLsSession.Close(); + + if ( iLocalFeatures ) + { + ReleaseProfileUtility(); + } + } + +// ----------------------------------------------------------------------------- +// CProEngMediaVariation::DataTypeL +// ----------------------------------------------------------------------------- +// +void CProEngMediaVariation::GetDataTypeL( + const TDesC& aFileName, TDes16& aDataType ) const + { + TUid dummyUid = { 0 }; // instantiate as zero + TDataType dataType( dummyUid ); + User::LeaveIfError( + iApaLsSession.AppForDocument( aFileName, dummyUid, dataType ) ); + aDataType.Copy( dataType.Des8() ); + } + +// ----------------------------------------------------------------------------- +// CProEngMediaVariation::IsSupported +// ----------------------------------------------------------------------------- +// +TBool CProEngMediaVariation::IsSupported( const TDesC16& aMimeType ) + { + if( !KProEngFeatureIdVideoAsRingingTone && + ( ( aMimeType.MatchF( KProEngVideoMimeType ) == 0 ) || + ( aMimeType.CompareF( KProEngRMVideoMimeType ) == 0 ) || + ( aMimeType.CompareF( KProEngSDPVideoMimeType ) == 0 ) ) ) + { + return EFalse; + } + + if( iLocalFeatures->IsBlockedType( aMimeType ) || + iLocalFeatures->IsExcludedType( aMimeType ) ) + { + return EFalse; + } + + TInt ignore( 0 ); + iMimeTypeBuf.Copy( aMimeType ); + if( iSupportedMimeTypes->FindIsq( iMimeTypeBuf, ignore ) != KErrNone ) + { + return EFalse; + } + + return ETrue; + } + +// ----------------------------------------------------------------------------- +// CProEngMediaVariation::IsAllowedProtected +// ----------------------------------------------------------------------------- +// +TBool CProEngMediaVariation::IsAllowedProtected( const TDesC16& aMimeType ) + const + { + return !iLocalFeatures->IsBlockedProtectedType( aMimeType ); + } + +// ----------------------------------------------------------------------------- +// CProEngMediaVariation::IsAllowedUnProtected +// ----------------------------------------------------------------------------- +// +TBool CProEngMediaVariation::IsAllowedUnProtected( const TDesC16& aMimeType ) + const + { + return !iLocalFeatures->IsBlockedUnprotectedType( aMimeType ); + } + +// End of File +