mmserv/sts/sts/src/stsplayer.cpp
changeset 47 c2e43643db4c
parent 42 1fa3fb47b1e3
child 52 4ce423f34688
equal deleted inserted replaced
42:1fa3fb47b1e3 47:c2e43643db4c
    13  *
    13  *
    14  * Description:
    14  * Description:
    15  * This file provides the implementation for creating and deleting a
    15  * This file provides the implementation for creating and deleting a
    16  * an MMF based player for playing and stopping a tone playback.
    16  * an MMF based player for playing and stopping a tone playback.
    17  */
    17  */
       
    18 
       
    19 //  Include Files  
    18 #include "stsplayer.h"
    20 #include "stsplayer.h"
    19 #include <AudioPreference.h>
    21 #include <AudioPreference.h>
    20 #include <systemtoneservice.h>
    22 #include <systemtoneservice.h>
       
    23 #include "stsplayersettings.h"
       
    24 #include "stssettingsmanager.h"
    21 
    25 
    22 
    26 /*static*/CStsPlayer* CStsPlayer::Create(MStsPlayerObserver& aObserver,
    23 
    27         CStsSettingsManager& aSettingsManager, unsigned int aContext,
    24 /*static*/CStsPlayer* CStsPlayer::CreateTonePlayer(
    28         CSystemToneService::TAlarmType aAlarm)
    25         MStsPlayerObserver& aObserver,CSystemToneService::TToneType aTone,
       
    26        	unsigned int aContext, const TDesC& aFileName, TInt aVolume,
       
    27        	TUint aAudioPreference, TUint  aAudioPriority)
       
    28     {
    29     {
    29     CStsPlayer* self = 0;
    30     CStsPlayer* self = 0;
    30     
    31     CStsSettingsManager::MPlayerSettings& playerSettings =
    31     self = new CStsPlayer(aObserver, aFileName, 0, aContext, aVolume, aAudioPreference, aAudioPriority);
    32             aSettingsManager.GetPlayerSettings(aAlarm);
    32     
    33     TUint audioPreference;
    33            	        
    34     TUint audioPriority;
    34     		if (self != 0)
    35     aSettingsManager.GetAudioPriorityPref(aAlarm, audioPriority,
    35          {
    36             audioPreference);
    36             bool successful = self->Init();
    37     self = new CStsPlayer(aObserver, playerSettings, aContext,
    37             if (!successful)
    38             audioPreference, audioPriority);
       
    39     if (self != 0)
       
    40         {
       
    41         bool successful = self->Init();
       
    42         if (!successful)
    38             {
    43             {
    39                delete self;
    44             delete self;
    40                self = 0;
    45             self = 0;
    41             }
    46             }
    42           }
    47         }
    43         
       
    44     return self;
    48     return self;
    45     }
    49     }
    46 
    50 
    47 /*static*/CStsPlayer* CStsPlayer::CreateAlarmPlayer(
    51 /*static*/CStsPlayer* CStsPlayer::Create(MStsPlayerObserver& aObserver,
    48         MStsPlayerObserver& aObserver, CSystemToneService::TAlarmType aAlarm,
    52         CStsSettingsManager& aSettingsManager, unsigned int aContext,
    49         unsigned int aContext, const TDesC& aFileName, TInt aVolume,
    53         CSystemToneService::TToneType aTone)
    50        	TUint aAudioPreference, TUint  aAudioPriority)
       
    51     {
    54     {
    52     CStsPlayer* self = 0;
    55     CStsPlayer* self = 0;
    53    
    56     CStsSettingsManager::MPlayerSettings& playerSettings =
    54    	
    57             aSettingsManager.GetPlayerSettings(aTone);
    55    	self = new CStsPlayer(aObserver, aFileName, 10, aContext, aVolume, aAudioPreference, aAudioPriority);
    58     TUint audioPreference;
    56    	
    59     TUint audioPriority;
    57      
    60     aSettingsManager.GetAudioPriorityPref(aTone, audioPriority,
    58     	if (self != 0)
    61             audioPreference);
    59       	  {
    62     self = new CStsPlayer(aObserver, playerSettings, aContext,
    60         	  bool successful = self->Init();
    63             audioPreference, audioPriority);
    61           	if (!successful)
    64     if (self != 0)
       
    65         {
       
    66         bool successful = self->Init();
       
    67         if (!successful)
    62             {
    68             {
    63              	  delete self;
    69             delete self;
    64                	self = 0;
    70             self = 0;
    65             }	
    71             }
    66         	}
    72         }
    67         
       
    68     return self;
    73     return self;
    69     }
    74     }
    70 
    75 
    71 
    76 CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver,
    72 
    77         CStsSettingsManager::MPlayerSettings& aPlayerSettings,
    73 
    78         unsigned int aContext, TUint aAudioPreference, TUint aAudioPriority) :
    74 
    79     iObserver(aObserver), iPlayerSettings(aPlayerSettings),
    75 CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
    80             iContext(aContext), iAudioPreference(aAudioPreference),
    76         int aRepeatNumberOfTimes, unsigned int aContext, TInt aVolume, TUint aAudioPreference, TUint aAudioPriority ) :
    81             iAudioPriority(aAudioPriority), iPlayer(0)
    77     iObserver(aObserver), iPlayer(0), iFileName(aFileName),
       
    78             iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext), iVolume(aVolume),
       
    79             iAudioPreference(aAudioPreference), iAudioPriority(aAudioPriority)
       
    80     {
    82     {
    81     	
       
    82     }
    83     }
    83 
    84 
    84 bool CStsPlayer::Init()
    85 bool CStsPlayer::Init()
    85     {
    86     {
    86 
    87     TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
    87     
    88     return result == KErrNone;
    88         TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
       
    89         return result == KErrNone;
       
    90     
       
    91     }
    89     }
    92 
       
    93 
    90 
    94 CStsPlayer::~CStsPlayer()
    91 CStsPlayer::~CStsPlayer()
    95     {
    92     {
    96     	
    93     delete iPlayer;
    97     delete iPlayer; 
       
    98     
       
    99     }
    94     }
   100 
    95 
   101 void CStsPlayer::Play()
    96 void CStsPlayer::Play()
   102     {
    97     {
   103     // Play the tone
    98     // Play the tone
   104     TRAPD(err, iPlayer->OpenFileL(iFileName));
    99     TRAPD( err, iPlayer->OpenFileL(iPlayerSettings.GetFileName()) );
   105 
       
   106     // If there is an error, indicate that the playback is complete. 
   100     // If there is an error, indicate that the playback is complete. 
   107     if (err)
   101     if (err)
   108         {
   102         {
   109         //TODO: Add trace here
   103         //TODO: Add trace here
   110         iObserver.PlayComplete(iContext);
   104         iObserver.PlayComplete(iContext);
   119 void CStsPlayer::MapcInitComplete(TInt aError,
   113 void CStsPlayer::MapcInitComplete(TInt aError,
   120         const TTimeIntervalMicroSeconds& /*aDuration*/)
   114         const TTimeIntervalMicroSeconds& /*aDuration*/)
   121     {
   115     {
   122     if (aError == KErrNone)
   116     if (aError == KErrNone)
   123         {
   117         {
   124         TTimeIntervalMicroSeconds delay = 0;
   118         TInt64 volumex100 = iPlayer->MaxVolume()
       
   119                 * iPlayerSettings.GetVolumePercentage();
       
   120         TInt volume = volumex100 / 100;
   125         // Set PriorityPref
   121         // Set PriorityPref
   126         iPlayer->SetPriority(iAudioPriority,iAudioPreference);
   122         iPlayer->SetPriority(iAudioPriority, iAudioPreference);
   127         iPlayer->SetRepeats(iRepeatNumberOfTimes, delay);
   123         iPlayer->SetRepeats(iPlayerSettings.GetNumberOfRepeats(),
       
   124                 iPlayerSettings.GetRepeatDelay());
       
   125         iPlayer->SetVolume(volume);
       
   126         iPlayer->SetVolumeRamp(iPlayerSettings.GetVolumeRamp());
   128         iPlayer->Play();
   127         iPlayer->Play();
   129         }
   128         }
   130     else
   129     else
   131         {
   130         {
   132         //TODO: add trace
   131         //TODO: add trace