mmserv/sts/sts/src/stsplayer.cpp
author hgs
Fri, 09 Jul 2010 16:43:35 -0500
changeset 33 5e8b14bae8c3
parent 21 2ed61feeead6
child 36 73253677b50a
permissions -rw-r--r--
201027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:
hgs
parents:
diff changeset
    15
 * This file provides the implementation for creating and deleting a
hgs
parents:
diff changeset
    16
 * an MMF based player for playing and stopping a tone playback.
hgs
parents:
diff changeset
    17
 */
21
hgs
parents: 20
diff changeset
    18
#include "stsplayer.h"
hgs
parents: 20
diff changeset
    19
#include <AudioPreference.h>
hgs
parents: 20
diff changeset
    20
#include <systemtoneservice.h>
20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
21
hgs
parents: 20
diff changeset
    23
20
hgs
parents:
diff changeset
    24
/*static*/CStsPlayer* CStsPlayer::CreateTonePlayer(
33
hgs
parents: 21
diff changeset
    25
        MStsPlayerObserver& aObserver,CSystemToneService::TToneType aTone,
hgs
parents: 21
diff changeset
    26
       	unsigned int aContext, const TDesC& aFileName, TInt aVolume,
hgs
parents: 21
diff changeset
    27
       	TUint aAudioPreference, TUint  aAudioPriority)
20
hgs
parents:
diff changeset
    28
    {
hgs
parents:
diff changeset
    29
    CStsPlayer* self = 0;
33
hgs
parents: 21
diff changeset
    30
    
21
hgs
parents: 20
diff changeset
    31
    
33
hgs
parents: 21
diff changeset
    32
    self = new CStsPlayer(aObserver, aFileName, 0, aContext, aVolume, aAudioPreference, aAudioPriority);
hgs
parents: 21
diff changeset
    33
    
hgs
parents: 21
diff changeset
    34
           	        
21
hgs
parents: 20
diff changeset
    35
    		if (self != 0)
hgs
parents: 20
diff changeset
    36
         {
hgs
parents: 20
diff changeset
    37
            bool successful = self->Init();
hgs
parents: 20
diff changeset
    38
            if (!successful)
20
hgs
parents:
diff changeset
    39
            {
21
hgs
parents: 20
diff changeset
    40
               delete self;
hgs
parents: 20
diff changeset
    41
               self = 0;
20
hgs
parents:
diff changeset
    42
            }
21
hgs
parents: 20
diff changeset
    43
          }
33
hgs
parents: 21
diff changeset
    44
        
20
hgs
parents:
diff changeset
    45
    return self;
hgs
parents:
diff changeset
    46
    }
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
/*static*/CStsPlayer* CStsPlayer::CreateAlarmPlayer(
hgs
parents:
diff changeset
    49
        MStsPlayerObserver& aObserver, CSystemToneService::TAlarmType aAlarm,
33
hgs
parents: 21
diff changeset
    50
        unsigned int aContext, const TDesC& aFileName, TInt aVolume,
hgs
parents: 21
diff changeset
    51
       	TUint aAudioPreference, TUint  aAudioPriority)
20
hgs
parents:
diff changeset
    52
    {
hgs
parents:
diff changeset
    53
    CStsPlayer* self = 0;
21
hgs
parents: 20
diff changeset
    54
   	
33
hgs
parents: 21
diff changeset
    55
   	self = new CStsPlayer(aObserver, aFileName, 10, aContext, aVolume, aAudioPreference, aAudioPriority);
21
hgs
parents: 20
diff changeset
    56
   	
33
hgs
parents: 21
diff changeset
    57
     
21
hgs
parents: 20
diff changeset
    58
    	if (self != 0)
hgs
parents: 20
diff changeset
    59
      	  {
hgs
parents: 20
diff changeset
    60
        	  bool successful = self->Init();
hgs
parents: 20
diff changeset
    61
          	if (!successful)
20
hgs
parents:
diff changeset
    62
            {
21
hgs
parents: 20
diff changeset
    63
             	  delete self;
hgs
parents: 20
diff changeset
    64
               	self = 0;
hgs
parents: 20
diff changeset
    65
            }	
hgs
parents: 20
diff changeset
    66
        	}
33
hgs
parents: 21
diff changeset
    67
        
20
hgs
parents:
diff changeset
    68
    return self;
hgs
parents:
diff changeset
    69
    }
hgs
parents:
diff changeset
    70
21
hgs
parents: 20
diff changeset
    71
hgs
parents: 20
diff changeset
    72
hgs
parents: 20
diff changeset
    73
hgs
parents: 20
diff changeset
    74
20
hgs
parents:
diff changeset
    75
CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
33
hgs
parents: 21
diff changeset
    76
        int aRepeatNumberOfTimes, unsigned int aContext, TInt aVolume, TUint aAudioPreference, TUint aAudioPriority ) :
20
hgs
parents:
diff changeset
    77
    iObserver(aObserver), iPlayer(0), iFileName(aFileName),
33
hgs
parents: 21
diff changeset
    78
            iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext), iVolume(aVolume),
hgs
parents: 21
diff changeset
    79
            iAudioPreference(aAudioPreference), iAudioPriority(aAudioPriority)
20
hgs
parents:
diff changeset
    80
    {
33
hgs
parents: 21
diff changeset
    81
    	
20
hgs
parents:
diff changeset
    82
    }
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
bool CStsPlayer::Init()
hgs
parents:
diff changeset
    85
    {
21
hgs
parents: 20
diff changeset
    86
hgs
parents: 20
diff changeset
    87
    
hgs
parents: 20
diff changeset
    88
        TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
hgs
parents: 20
diff changeset
    89
        return result == KErrNone;
hgs
parents: 20
diff changeset
    90
    
20
hgs
parents:
diff changeset
    91
    }
hgs
parents:
diff changeset
    92
21
hgs
parents: 20
diff changeset
    93
20
hgs
parents:
diff changeset
    94
CStsPlayer::~CStsPlayer()
hgs
parents:
diff changeset
    95
    {
33
hgs
parents: 21
diff changeset
    96
    	
21
hgs
parents: 20
diff changeset
    97
    delete iPlayer; 
hgs
parents: 20
diff changeset
    98
    
20
hgs
parents:
diff changeset
    99
    }
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
void CStsPlayer::Play()
hgs
parents:
diff changeset
   102
    {
hgs
parents:
diff changeset
   103
    // Play the tone
hgs
parents:
diff changeset
   104
    TRAPD(err, iPlayer->OpenFileL(iFileName));
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
    // If there is an error, indicate that the playback is complete. 
hgs
parents:
diff changeset
   107
    if (err)
hgs
parents:
diff changeset
   108
        {
hgs
parents:
diff changeset
   109
        //TODO: Add trace here
hgs
parents:
diff changeset
   110
        iObserver.PlayComplete(iContext);
hgs
parents:
diff changeset
   111
        }
hgs
parents:
diff changeset
   112
    }
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
void CStsPlayer::Stop()
hgs
parents:
diff changeset
   115
    {
hgs
parents:
diff changeset
   116
    iPlayer->Stop();
hgs
parents:
diff changeset
   117
    }
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
void CStsPlayer::MapcInitComplete(TInt aError,
hgs
parents:
diff changeset
   120
        const TTimeIntervalMicroSeconds& /*aDuration*/)
hgs
parents:
diff changeset
   121
    {
hgs
parents:
diff changeset
   122
    if (aError == KErrNone)
hgs
parents:
diff changeset
   123
        {
hgs
parents:
diff changeset
   124
        TTimeIntervalMicroSeconds delay = 0;
21
hgs
parents: 20
diff changeset
   125
        // Set PriorityPref
hgs
parents: 20
diff changeset
   126
        iPlayer->SetPriority(iAudioPriority,iAudioPreference);
20
hgs
parents:
diff changeset
   127
        iPlayer->SetRepeats(iRepeatNumberOfTimes, delay);
hgs
parents:
diff changeset
   128
        iPlayer->Play();
hgs
parents:
diff changeset
   129
        }
hgs
parents:
diff changeset
   130
    else
hgs
parents:
diff changeset
   131
        {
hgs
parents:
diff changeset
   132
        //TODO: add trace
hgs
parents:
diff changeset
   133
        // Since there is an error, indicate that the playback is complete
21
hgs
parents: 20
diff changeset
   134
        RDebug::Print(_L("InitCompleteReturned"), aError);
20
hgs
parents:
diff changeset
   135
        iObserver.PlayComplete(iContext);
hgs
parents:
diff changeset
   136
        }
hgs
parents:
diff changeset
   137
    }
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
void CStsPlayer::MapcPlayComplete(TInt aError)
hgs
parents:
diff changeset
   140
    {
hgs
parents:
diff changeset
   141
    if (aError != KErrNone)
hgs
parents:
diff changeset
   142
        {
hgs
parents:
diff changeset
   143
        //TODO: add trace
hgs
parents:
diff changeset
   144
        }
hgs
parents:
diff changeset
   145
    iObserver.PlayComplete(iContext);
hgs
parents:
diff changeset
   146
    }