phoneapp/phoneringingtoneplayer/src/cphoneringingtone.cpp
changeset 78 baacf668fe89
parent 76 cfea66083b62
--- a/phoneapp/phoneringingtoneplayer/src/cphoneringingtone.cpp	Mon Oct 04 16:06:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-/*
-* 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 FILES
-#include <apgcli.h>
-#include <DRMHelper.h>
-#include <bldvariant.hrh>
-#include <pathinfo.h>
-#include <ProfileEngineDomainCRKeys.h>
-#include "cphoneringingtone.h"
-#include "cphonecenrepproxy.h"
-#include "phonelogger.h"
-#include "phoneconstants.h"
-#include "phonelogger.h"
-
-// 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");
-
-//file size limit
-const TUint KPhoneToneFileSizeLimitKB = 5000;
-
-// MACROS
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::CPhoneRingingTone
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPhoneRingingTone::CPhoneRingingTone( TBool aDrmInPlayback ) :
-    iDrmInPlayback( aDrmInPlayback )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPhoneRingingTone::ConstructL( const TDesC& aFileName )
-    {
-    iFileName = aFileName.AllocL();
-    
-    GetMaxToneFileSize();
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CPhoneRingingTone* CPhoneRingingTone::NewL( 
-    const TDesC& aFileName,
-    TBool aDrmInPlayback )
-    {
-    CPhoneRingingTone* self = new( ELeave ) CPhoneRingingTone(
-        aDrmInPlayback );
-
-    CleanupStack::PushL( self );
-    self->ConstructL( aFileName );
-    CleanupStack::Pop( self );
-    
-    return self;
-    }
-    
-// Destructor
-CPhoneRingingTone::~CPhoneRingingTone()
-    {
-    delete iFileName;
-    delete iMimeType;    
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::SetFileName
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CPhoneRingingTone::SetFileName( const TDesC& aFileName )
-    {
-    delete iFileName;
-    iFileName = NULL;
-    iFileName = aFileName.Alloc();
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::SetVolume
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CPhoneRingingTone::SetVolume( const TInt aVolume )
-    {
-    iVolume = aVolume;
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::SetRingingType
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CPhoneRingingTone::SetRingingType( TProfileRingingType aRingingType)
-    {
-    iRingingType = aRingingType;
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::Volume
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CPhoneRingingTone::Volume() const
-    {
-    return iVolume;
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::RingingType
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TProfileRingingType CPhoneRingingTone::RingingType() const
-    {
-    return iRingingType; 
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::FileName
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TDesC& CPhoneRingingTone::FileName() const
-    {
-    // iFileName is never NULL
-    return *iFileName;            
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::SetTtsToneToBePlayed
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CPhoneRingingTone::SetTtsToneToBePlayed( TBool aTtsToneToBePlayed ) 
-    {
-    iTtsToneToBePlayed = aTtsToneToBePlayed;          
-    }
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::TtsToneToBePlayed
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneRingingTone::TtsToneToBePlayed() const
-    {
-    
-    return iTtsToneToBePlayed;    
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::MimeType
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TDesC& CPhoneRingingTone::MimeType() const
-    {
-    if ( iMimeType )
-        {
-        return *iMimeType;        
-        }
-    else
-        {
-        return KNullDesC;    
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::IsVideoRingingTone
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-TBool CPhoneRingingTone::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    
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::IsFileDrmProtected
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-TBool CPhoneRingingTone::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.    
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::IsFileInRom
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-TBool CPhoneRingingTone::IsFileInRom() const
-    {
-    TParsePtrC parsedName( *iFileName );
-    
-    // Files on rom are not DRM checked
-    if ( parsedName.Drive().CompareF( KPhoneRingingToneDriveZ ) == 0 )
-        {
-        return ETrue;
-        }
-    else
-        {
-        return EFalse;    
-        }        
-    }    
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::IsFileInVideoDirectory
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneRingingTone::IsFileInVideoDirectory() const
-    {
-    TParsePtrC parsedName( *iFileName );
-    
-    if ( PathInfo::PathType( parsedName.DriveAndPath() ) == 
-         PathInfo::EVideosPath )
-        {
-        return ETrue;
-        }
-    else
-        {
-        return EFalse;    
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::RefreshMime
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CPhoneRingingTone::RefreshMime()
-    {
-    TRAPD( err, RefreshMimeL() );
-    return err;        
-    }
-
-// -----------------------------------------------------------------------------
-// CPhoneRingingTone::RefreshMimeL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-void CPhoneRingingTone::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();
-    }
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-TBool CPhoneRingingTone::CheckAndHandleToneSizeLimit()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingtone::CheckAndHandleToneSizeLimit()" );
-    
-    TBool bValidSize = ETrue;
- 
-    // If user has somehow managed to get a too large file as ringing tone,
-    // play default tone instead.
-    if ( iToneFileSizeLimitKB )
-        {
-        if ( CheckToneFileSize( FileName(), iToneFileSizeLimitKB) != KErrNone )
-            {
-            bValidSize = EFalse;
-            }            
-        }
-    __PHONELOG1( 
-        EBasic,
-        EPhoneControl, 
-        "CPhoneRingingtone::CheckAndHandleToneSizeLimit - bValidSize(%d)",
-        bValidSize);
-        
-    return bValidSize;
-    }
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-TInt CPhoneRingingTone::CheckToneFileSize( const TDesC& aFile, 
-                                           TInt aSizeLimitKB )
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingtone::CheckToneFileSize()" );
-    //return KErrNone;
-    
-    // Get file size
-    TInt size = 0;
-
-    RFs fs;   
-    TInt error = fs.Connect();
-    TEntry entry;
-    if ( KErrNone == error )
-        {
-        if (KErrNone == fs.Entry( aFile, entry ))
-            {
-            size = entry.iSize;
-            }    
-            
-        // Check
-        aSizeLimitKB *= Kkilo;
-        if ( aSizeLimitKB  &&  size > aSizeLimitKB )
-            {
-            error = KErrTooBig;
-            }
-        }
-
-    fs.Close();
-    __PHONELOG1( 
-        EBasic,
-        EPhoneControl, 
-        "CPhoneRingingtonePlayer::CheckToneFileSize - size (%d)",
-        size );    
-    return error;
-   
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CPhoneRingingTone::GetMaxToneFileSize()
-    {
-    __LOGMETHODSTARTEND( EPhoneControl, "CPhoneRingingtone::GetMaxToneFileSize()" );              
-    iToneFileSizeLimitKB = KPhoneToneFileSizeLimitKB;   
-    }
-
-//  End of File