diff -r 095bea5f582e -r 0ac9a5310753 mmserv/tms/tmsserver/src/tmsrtcontainer.cpp --- a/mmserv/tms/tmsserver/src/tmsrtcontainer.cpp Tue Aug 31 15:43:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ -/* - * 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" - * 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: Class representing ringing tone - * - */ - -// INCLUDE FILES -#include -#include -#include -#include "tmsrtcontainer.h" - -using namespace TMS; - -// CONSTANTS -// Rich audio file MIME types -_LIT(KAac, "audio/aac"); -_LIT(KMp3, "audio/mp3"); -_LIT(KMpeg, "audio/mpeg"); -_LIT(K3gpp, "audio/3gpp"); -_LIT(KMp4, "audio/mp4"); -_LIT(KAmrWb, "audio/amr-wb"); -_LIT(KWavX, "audio/x-wav"); -_LIT(KWav, "audio/wav"); -// Rich video file MIME types -_LIT(KV3gpp, "video/3gpp"); -_LIT(KVMp4, "video/mp4"); -_LIT(KV3gpp2, "video/3gpp2"); -// Used in CPhoneRingingTone -_LIT(KPhoneRingingToneDriveZ, "z:"); -#ifdef RD_VIDEO_AS_RINGING_TONE -_LIT(KPhoneRingingToneVideoMime, "video/*"); -_LIT(KPhoneRingingToneRealVideoMime, "*realmedia"); -#endif - -// ----------------------------------------------------------------------------- -// TMSRtContainer::TMSRtContainer -// C++ default constructor -// ----------------------------------------------------------------------------- -// -TMSRtContainer::TMSRtContainer(TBool aDrmInPlayback) : - iDrmInPlayback(aDrmInPlayback) - { - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::ConstructL -// Symbian 2nd phase constructor -// ----------------------------------------------------------------------------- -// -void TMSRtContainer::ConstructL(const TDesC& aFileName) - { - iFileName = aFileName.AllocL(); - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -TMSRtContainer* TMSRtContainer::NewL(const TDesC& aFileName, - TBool aDrmInPlayback) - { - TMSRtContainer* self = new (ELeave) TMSRtContainer(aDrmInPlayback); - CleanupStack::PushL(self); - self->ConstructL(aFileName); - CleanupStack::Pop(self); - return self; - } - -// Destructor -TMSRtContainer::~TMSRtContainer() - { - delete iFileName; - delete iMimeType; - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::SetFileName -// ----------------------------------------------------------------------------- -// -void TMSRtContainer::SetFileName(const TDesC& aFileName) - { - delete iFileName; - iFileName = aFileName.Alloc(); - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::FileName -// ----------------------------------------------------------------------------- -// -const TDesC& TMSRtContainer::FileName() const - { - // iFileName is never NULL - return *iFileName; - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::MimeType -// ----------------------------------------------------------------------------- -// -const TDesC& TMSRtContainer::MimeType() const - { - if (iMimeType) - { - return *iMimeType; - } - else - { - return KNullDesC; - } - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::IsVideoRingingTone -// ----------------------------------------------------------------------------- -// -TBool TMSRtContainer::IsVideoRingingTone() - { -#ifdef RD_VIDEO_AS_RINGING_TONE - if (RefreshMime() != KErrNone) - { - // try to handle as audio - return EFalse; - } - - TBool isVideo(EFalse); - - if (iMimeType && iMimeType->MatchF(KPhoneRingingToneVideoMime) - != KErrNotFound) - { - isVideo = ETrue; - } - else if (iMimeType && iMimeType->MatchF(KPhoneRingingToneRealVideoMime) - != KErrNotFound) - { - isVideo = ETrue; - } - - if (isVideo) - { - if (IsFileInRom() && !IsFileInVideoDirectory()) - { - // For ROM files check also location, because - // MIME check is not fully reliable. - isVideo = EFalse; - } - } - - return isVideo; - -#else - // if extended security -> refresh MIME - if (iDrmInPlayback) - { - RefreshMime(); - } - - return EFalse; -#endif - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::IsFileDrmProtected -// ----------------------------------------------------------------------------- -// -TBool TMSRtContainer::IsFileDrmProtected() const - { - const TDesC& type = MimeType(); - - if (type == KAac || type == KMp3 || type == KMpeg || type == K3gpp || - type == KMp4 || type == KAmrWb || type == KWavX || type == KWav || - type == KV3gpp || type == KVMp4 || type == KV3gpp2) - { - ContentAccess::CContent* content = NULL; - TRAPD(err, content = ContentAccess::CContent::NewL(*iFileName)); - if (err == KErrNone && content) - { - TInt drmProtected(0); - content->GetAttribute(ContentAccess::EIsProtected, drmProtected); - delete content; - return drmProtected; - } - } - - return ETrue; // Other MIMEs can be played without DRM check. - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::IsFileInRom -// ----------------------------------------------------------------------------- -// -TBool TMSRtContainer::IsFileInRom() const - { - TParsePtrC parsedName(*iFileName); - - // Files on ROM don't need to be checked for DRM - if (parsedName.Drive().CompareF(KPhoneRingingToneDriveZ) == 0) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::IsFileInVideoDirectory -// ----------------------------------------------------------------------------- -// -TBool TMSRtContainer::IsFileInVideoDirectory() const - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::RefreshMime -// ----------------------------------------------------------------------------- -// -TInt TMSRtContainer::RefreshMime() - { - TRAPD(err, RefreshMimeL()); - return err; - } - -// ----------------------------------------------------------------------------- -// TMSRtContainer::RefreshMimeL -// ----------------------------------------------------------------------------- -// -void TMSRtContainer::RefreshMimeL() - { - RApaLsSession apaLsSession; - User::LeaveIfError(apaLsSession.Connect()); - CleanupClosePushL(apaLsSession); - TUid dummyUid = {0}; - TDataType dataType(dummyUid); - User::LeaveIfError(apaLsSession.AppForDocument(*iFileName, dummyUid, - dataType)); - CleanupStack::PopAndDestroy(); // CleanupClosePushL - delete iMimeType; - iMimeType = NULL; - iMimeType = dataType.Des().AllocL(); - } - -// End of File