mmserv/sts/sts/src/stsplayer.cpp
changeset 31 8dfd592727cb
parent 22 128eb6a32b84
child 33 5e8b14bae8c3
child 42 1fa3fb47b1e3
equal deleted inserted replaced
22:128eb6a32b84 31:8dfd592727cb
    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 "stsplayer.h"
    18 #include "stsplayer.h"
       
    19 #include <AudioPreference.h>
       
    20 #include <MProEngEngine.h>
       
    21 #include <MProEngProfile.h>
       
    22 #include <MProEngTones.h>
       
    23 #include <MProEngToneSettings.h>
       
    24 #include <ProEngFactory.h>
       
    25 #include <systemtoneservice.h>
       
    26 
    20 
    27 
    21 _LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac");
    28 _LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac");
       
    29 
       
    30 
       
    31 
       
    32 
    22 
    33 
    23 /*static*/CStsPlayer* CStsPlayer::CreateTonePlayer(
    34 /*static*/CStsPlayer* CStsPlayer::CreateTonePlayer(
    24         MStsPlayerObserver& aObserver, CSystemToneService::TToneType aTone,
    35         MStsPlayerObserver& aObserver, CSystemToneService::TToneType aTone,
    25         unsigned int aContext)
    36         unsigned int aContext)
    26     {
    37     {
    27     CStsPlayer* self = 0;
    38     CStsPlayer* self = 0;
    28     switch (aTone)
    39      
    29         {
    40     self = new CStsPlayer(aObserver, KDefaultFile, 0, aContext);
    30         default:
    41     
    31             self = new CStsPlayer(aObserver, KDefaultFile, 0, aContext);
    42     if( self != 0)
    32             break;
    43     	{
    33         }
    44     		TRAPD(err,self->LoadActiveProfileSettingsL());
    34     if (self != 0)
    45              
    35         {
    46     		if( err == KErrNone )
    36         bool successful = self->Init();
    47        		self->SetToneSettings(aTone);
    37         if (!successful)
    48     		else 
       
    49         {
       
    50           delete self;
       
    51           self = 0;
       
    52          }
       
    53         	        
       
    54     		if (self != 0)
       
    55          {
       
    56             bool successful = self->Init();
       
    57             if (!successful)
    38             {
    58             {
    39             delete self;
    59                delete self;
    40             self = 0;
    60                self = 0;
    41             }
    61             }
       
    62           }
    42         }
    63         }
    43     return self;
    64     return self;
    44     }
    65     }
    45 
    66 
    46 /*static*/CStsPlayer* CStsPlayer::CreateAlarmPlayer(
    67 /*static*/CStsPlayer* CStsPlayer::CreateAlarmPlayer(
    47         MStsPlayerObserver& aObserver, CSystemToneService::TAlarmType aAlarm,
    68         MStsPlayerObserver& aObserver, CSystemToneService::TAlarmType aAlarm,
    48         unsigned int aContext)
    69         unsigned int aContext)
    49     {
    70     {
    50     CStsPlayer* self = 0;
    71     CStsPlayer* self = 0;
    51     switch (aAlarm)
    72    	
    52         {
    73    	self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext);
    53         case CSystemToneService::EClockAlarm:
    74    	
    54             self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext);
    75    	if( self != 0)
    55             break;
    76     	{		
    56         default:
    77    			TRAPD(err,self->LoadActiveProfileSettingsL());
    57             self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext);
    78    			
    58             break;
    79    			if( err == KErrNone )
    59         }
    80    	    	self->SetAlarmSettings(aAlarm); 
    60     if (self != 0)
    81    			else 
    61         {
    82    	  	 {
    62         bool successful = self->Init();
    83    	    	 delete self;
    63         if (!successful)
    84    	     	 self = 0;
       
    85    	   		}           
       
    86    
       
    87     	if (self != 0)
       
    88       	  {
       
    89         	  bool successful = self->Init();
       
    90           	if (!successful)
    64             {
    91             {
    65             delete self;
    92              	  delete self;
    66             self = 0;
    93                	self = 0;
    67             }
    94             }	
       
    95         	}
    68         }
    96         }
    69     return self;
    97     return self;
    70     }
    98     }
       
    99 
       
   100 void CStsPlayer::LoadActiveProfileSettingsL()
       
   101 	{
       
   102 		if(!iEngine)
       
   103 		   	{
       
   104 		   		iEngine =  ProEngFactory::NewEngineL();
       
   105         	}
       
   106 		
       
   107         if (iEngine)
       
   108             iProfile = iEngine->ActiveProfileL();
       
   109 	    
       
   110 	    if (iProfile)
       
   111 	        {
       
   112              MProEngToneSettings& settings  = iProfile->ToneSettings();
       
   113              iWarningToneEnabled = settings.WarningAndGameTones();
       
   114 	        }
       
   115      
       
   116      
       
   117      
       
   118      
       
   119   }
       
   120 
       
   121 void CStsPlayer::SetToneSettings(CSystemToneService::TToneType aTone)
       
   122 	{
       
   123 		
       
   124     if(iProfile)
       
   125     
       
   126     {
       
   127     	MProEngTones&         tones = iProfile->ProfileTones();
       
   128 		
       
   129 			switch (aTone)
       
   130 				{
       
   131 				case CSystemToneService::EEmailAlert:
       
   132 				    iFileName.Set(tones.EmailAlertTone());
       
   133 				    iAudioPreference = KAudioPrefNewSMS;
       
   134 				    iAudioPriority = KAudioPriorityRecvMsg ;
       
   135 				    break;
       
   136 				case CSystemToneService::ESmsAlert:
       
   137 				    iFileName.Set(tones.MessageAlertTone());
       
   138 				    iAudioPreference = KAudioPrefNewSMS;
       
   139 				    iAudioPriority = KAudioPriorityRecvMsg;
       
   140 				    break; 
       
   141 				case CSystemToneService::EMmsAlert:
       
   142 				    iFileName.Set(tones.MessageAlertTone());
       
   143 				    iAudioPreference = KAudioPrefNewSMS;
       
   144 				    iAudioPriority = KAudioPriorityRecvMsg;
       
   145 				    break;
       
   146 				case CSystemToneService::EChatAlert:
       
   147 				    iFileName.Set(tones.MessageAlertTone());
       
   148 				    iAudioPreference = KAudioPrefNewSMS ;
       
   149 				    iAudioPriority = KAudioPriorityRecvMsg;
       
   150 				    break; 
       
   151 				case CSystemToneService::EWarningBeep:
       
   152 				    iAudioPreference = KAudioPrefWarning;
       
   153 				    iAudioPriority =  KAudioPriorityWarningTone ;
       
   154 				    if (iWarningToneEnabled)
       
   155 				        iFileName.Set(KDefaultFile);
       
   156 				    else
       
   157 				        iVolume = 0;
       
   158 				        
       
   159 				    break;
       
   160 				default:
       
   161 					iAudioPreference = KAudioPrefDefaultTone;
       
   162 				    iAudioPriority = KAudioPriorityWarningTone ;
       
   163 				    break;
       
   164 				}
       
   165 			}
       
   166 			
       
   167 		else
       
   168 		{			 
       
   169 				 iAudioPreference = KAudioPrefDefaultTone;
       
   170 				 iAudioPriority = KAudioPriorityWarningTone ;
       
   171 		}
       
   172 		
       
   173 	}	
       
   174 	
       
   175 	
       
   176 void CStsPlayer::SetAlarmSettings(CSystemToneService::TAlarmType aAlarm)
       
   177 	{
       
   178 		if(iProfile)
       
   179     
       
   180    		 {
       
   181     		MProEngTones&         tones = iProfile->ProfileTones();
       
   182 		 
       
   183 		 	switch (aAlarm)
       
   184         	{
       
   185         	case CSystemToneService::EIncomingCall:
       
   186             	iFileName.Set(tones.RingingTone1());
       
   187             	iAudioPreference = KAudioPrefIncomingCall ;
       
   188 				iAudioPriority = KAudioPriorityRingingTone ;
       
   189             	break;
       
   190        		case CSystemToneService::EIncomingCallLine2:
       
   191             	iFileName.Set(tones.RingingTone2());
       
   192             	iAudioPreference = KAudioPrefIncomingCall;
       
   193 				iAudioPriority = KAudioPriorityRingingTone ;
       
   194             	break;  
       
   195             case CSystemToneService::EIncomingDataCall:
       
   196             	iFileName.Set(tones.VideoCallRingingTone());
       
   197             	iAudioPreference = KAudioPrefIncomingDataCall;
       
   198 		    	iAudioPriority = KAudioPriorityRealOnePlayer;
       
   199             	break;
       
   200         	default:
       
   201         		iAudioPreference = KAudioPrefAlarmClock  ;
       
   202 				iAudioPriority = KAudioPriorityAlarm;
       
   203             	break;
       
   204        		}
       
   205       	}
       
   206       else
       
   207 		{			 
       
   208 				 iAudioPreference = KAudioPrefDefaultTone;
       
   209 				 iAudioPriority = KAudioPriorityWarningTone ;
       
   210 		}  
       
   211 	}	
       
   212 
       
   213 
       
   214 
    71 
   215 
    72 CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
   216 CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
    73         int aRepeatNumberOfTimes, unsigned int aContext) :
   217         int aRepeatNumberOfTimes, unsigned int aContext) :
    74     iObserver(aObserver), iPlayer(0), iFileName(aFileName),
   218     iObserver(aObserver), iPlayer(0), iFileName(aFileName),
    75             iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext)
   219             iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext)
    76     {
   220     {
       
   221     	iEngine =  ProEngFactory::NewEngineL();
    77     }
   222     }
    78 
   223 
    79 bool CStsPlayer::Init()
   224 bool CStsPlayer::Init()
    80     {
   225     {
    81     TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
   226 
    82     return result == KErrNone;
   227     
    83     }
   228         TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
       
   229         return result == KErrNone;
       
   230     
       
   231     }
       
   232 
    84 
   233 
    85 CStsPlayer::~CStsPlayer()
   234 CStsPlayer::~CStsPlayer()
    86     {
   235     {
    87     delete iPlayer;
   236     	if (iProfile)
       
   237         {
       
   238         iProfile->Release();
       
   239         }
       
   240     	if (iEngine)
       
   241         {
       
   242         iEngine->Release();
       
   243         }
       
   244         
       
   245     delete iPlayer; 
       
   246     
    88     }
   247     }
    89 
   248 
    90 void CStsPlayer::Play()
   249 void CStsPlayer::Play()
    91     {
   250     {
    92     // Play the tone
   251     // Play the tone
   109         const TTimeIntervalMicroSeconds& /*aDuration*/)
   268         const TTimeIntervalMicroSeconds& /*aDuration*/)
   110     {
   269     {
   111     if (aError == KErrNone)
   270     if (aError == KErrNone)
   112         {
   271         {
   113         TTimeIntervalMicroSeconds delay = 0;
   272         TTimeIntervalMicroSeconds delay = 0;
       
   273         // Set PriorityPref
       
   274         iPlayer->SetPriority(iAudioPriority,iAudioPreference);
   114         iPlayer->SetRepeats(iRepeatNumberOfTimes, delay);
   275         iPlayer->SetRepeats(iRepeatNumberOfTimes, delay);
   115         iPlayer->Play();
   276         iPlayer->Play();
   116         }
   277         }
   117     else
   278     else
   118         {
   279         {
   119         //TODO: add trace
   280         //TODO: add trace
   120         // Since there is an error, indicate that the playback is complete
   281         // Since there is an error, indicate that the playback is complete
       
   282         RDebug::Print(_L("InitCompleteReturned"), aError);
   121         iObserver.PlayComplete(iContext);
   283         iObserver.PlayComplete(iContext);
   122         }
   284         }
   123     }
   285     }
   124 
   286 
   125 void CStsPlayer::MapcPlayComplete(TInt aError)
   287 void CStsPlayer::MapcPlayComplete(TInt aError)