mmserv/sts/sts/src/stsplayer.cpp
author hgs
Fri, 03 Sep 2010 19:34:12 -0500
changeset 48 a493a607b5bf
parent 43 9894ed580e4a
permissions -rw-r--r--
201035
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
 */
43
hgs
parents: 38
diff changeset
    18
hgs
parents: 38
diff changeset
    19
//  Include Files  
21
hgs
parents: 20
diff changeset
    20
#include "stsplayer.h"
hgs
parents: 20
diff changeset
    21
#include <AudioPreference.h>
hgs
parents: 20
diff changeset
    22
#include <systemtoneservice.h>
43
hgs
parents: 38
diff changeset
    23
#include "stsplayersettings.h"
hgs
parents: 38
diff changeset
    24
#include "stssettingsmanager.h"
48
hgs
parents: 43
diff changeset
    25
#include "stsdebug.h"
21
hgs
parents: 20
diff changeset
    26
43
hgs
parents: 38
diff changeset
    27
/*static*/CStsPlayer* CStsPlayer::Create(MStsPlayerObserver& aObserver,
hgs
parents: 38
diff changeset
    28
        CStsSettingsManager& aSettingsManager, unsigned int aContext,
hgs
parents: 38
diff changeset
    29
        CSystemToneService::TAlarmType aAlarm)
20
hgs
parents:
diff changeset
    30
    {
hgs
parents:
diff changeset
    31
    CStsPlayer* self = 0;
43
hgs
parents: 38
diff changeset
    32
    CStsSettingsManager::MPlayerSettings& playerSettings =
hgs
parents: 38
diff changeset
    33
            aSettingsManager.GetPlayerSettings(aAlarm);
hgs
parents: 38
diff changeset
    34
    TUint audioPreference;
hgs
parents: 38
diff changeset
    35
    TUint audioPriority;
hgs
parents: 38
diff changeset
    36
    aSettingsManager.GetAudioPriorityPref(aAlarm, audioPriority,
hgs
parents: 38
diff changeset
    37
            audioPreference);
hgs
parents: 38
diff changeset
    38
    self = new CStsPlayer(aObserver, playerSettings, aContext,
hgs
parents: 38
diff changeset
    39
            audioPreference, audioPriority);
hgs
parents: 38
diff changeset
    40
    if (self != 0)
hgs
parents: 38
diff changeset
    41
        {
hgs
parents: 38
diff changeset
    42
        bool successful = self->Init();
hgs
parents: 38
diff changeset
    43
        if (!successful)
20
hgs
parents:
diff changeset
    44
            {
43
hgs
parents: 38
diff changeset
    45
            delete self;
hgs
parents: 38
diff changeset
    46
            self = 0;
20
hgs
parents:
diff changeset
    47
            }
43
hgs
parents: 38
diff changeset
    48
        }
20
hgs
parents:
diff changeset
    49
    return self;
hgs
parents:
diff changeset
    50
    }
hgs
parents:
diff changeset
    51
43
hgs
parents: 38
diff changeset
    52
/*static*/CStsPlayer* CStsPlayer::Create(MStsPlayerObserver& aObserver,
hgs
parents: 38
diff changeset
    53
        CStsSettingsManager& aSettingsManager, unsigned int aContext,
hgs
parents: 38
diff changeset
    54
        CSystemToneService::TToneType aTone)
20
hgs
parents:
diff changeset
    55
    {
hgs
parents:
diff changeset
    56
    CStsPlayer* self = 0;
43
hgs
parents: 38
diff changeset
    57
    CStsSettingsManager::MPlayerSettings& playerSettings =
hgs
parents: 38
diff changeset
    58
            aSettingsManager.GetPlayerSettings(aTone);
hgs
parents: 38
diff changeset
    59
    TUint audioPreference;
hgs
parents: 38
diff changeset
    60
    TUint audioPriority;
hgs
parents: 38
diff changeset
    61
    aSettingsManager.GetAudioPriorityPref(aTone, audioPriority,
hgs
parents: 38
diff changeset
    62
            audioPreference);
hgs
parents: 38
diff changeset
    63
    self = new CStsPlayer(aObserver, playerSettings, aContext,
hgs
parents: 38
diff changeset
    64
            audioPreference, audioPriority);
hgs
parents: 38
diff changeset
    65
    if (self != 0)
hgs
parents: 38
diff changeset
    66
        {
hgs
parents: 38
diff changeset
    67
        bool successful = self->Init();
hgs
parents: 38
diff changeset
    68
        if (!successful)
20
hgs
parents:
diff changeset
    69
            {
43
hgs
parents: 38
diff changeset
    70
            delete self;
hgs
parents: 38
diff changeset
    71
            self = 0;
hgs
parents: 38
diff changeset
    72
            }
hgs
parents: 38
diff changeset
    73
        }
20
hgs
parents:
diff changeset
    74
    return self;
hgs
parents:
diff changeset
    75
    }
hgs
parents:
diff changeset
    76
43
hgs
parents: 38
diff changeset
    77
CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver,
hgs
parents: 38
diff changeset
    78
        CStsSettingsManager::MPlayerSettings& aPlayerSettings,
hgs
parents: 38
diff changeset
    79
        unsigned int aContext, TUint aAudioPreference, TUint aAudioPriority) :
hgs
parents: 38
diff changeset
    80
    iObserver(aObserver), iPlayerSettings(aPlayerSettings),
hgs
parents: 38
diff changeset
    81
            iContext(aContext), iAudioPreference(aAudioPreference),
hgs
parents: 38
diff changeset
    82
            iAudioPriority(aAudioPriority), iPlayer(0)
20
hgs
parents:
diff changeset
    83
    {
hgs
parents:
diff changeset
    84
    }
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
bool CStsPlayer::Init()
hgs
parents:
diff changeset
    87
    {
43
hgs
parents: 38
diff changeset
    88
    TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
48
hgs
parents: 43
diff changeset
    89
    TRACE_LOG((_L("CStsPlayer::Init() : CMdaAudioPlayerUtility::NewL result[%d]"), result));
43
hgs
parents: 38
diff changeset
    90
    return result == KErrNone;
20
hgs
parents:
diff changeset
    91
    }
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
CStsPlayer::~CStsPlayer()
hgs
parents:
diff changeset
    94
    {
48
hgs
parents: 43
diff changeset
    95
    TRACE_FUNCTION_ENTRY;
43
hgs
parents: 38
diff changeset
    96
    delete iPlayer;
48
hgs
parents: 43
diff changeset
    97
    TRACE_FUNCTION_EXIT;
20
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
void CStsPlayer::Play()
hgs
parents:
diff changeset
   101
    {
hgs
parents:
diff changeset
   102
    // Play the tone
43
hgs
parents: 38
diff changeset
   103
    TRAPD( err, iPlayer->OpenFileL(iPlayerSettings.GetFileName()) );
48
hgs
parents: 43
diff changeset
   104
    TRACE_LOG((_L("CStsPlayer::Play() : CMdaAudioPlayerUtility::OpenFileL result[%d]"), err));
20
hgs
parents:
diff changeset
   105
    // If there is an error, indicate that the playback is complete. 
hgs
parents:
diff changeset
   106
    if (err)
hgs
parents:
diff changeset
   107
        {
hgs
parents:
diff changeset
   108
        //TODO: Add trace here
hgs
parents:
diff changeset
   109
        iObserver.PlayComplete(iContext);
hgs
parents:
diff changeset
   110
        }
hgs
parents:
diff changeset
   111
    }
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
void CStsPlayer::Stop()
hgs
parents:
diff changeset
   114
    {
48
hgs
parents: 43
diff changeset
   115
    TRACE_FUNCTION_ENTRY;
20
hgs
parents:
diff changeset
   116
    iPlayer->Stop();
48
hgs
parents: 43
diff changeset
   117
    TRACE_FUNCTION_EXIT;
20
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
void CStsPlayer::MapcInitComplete(TInt aError,
hgs
parents:
diff changeset
   121
        const TTimeIntervalMicroSeconds& /*aDuration*/)
hgs
parents:
diff changeset
   122
    {
hgs
parents:
diff changeset
   123
    if (aError == KErrNone)
hgs
parents:
diff changeset
   124
        {
43
hgs
parents: 38
diff changeset
   125
        TInt64 volumex100 = iPlayer->MaxVolume()
hgs
parents: 38
diff changeset
   126
                * iPlayerSettings.GetVolumePercentage();
hgs
parents: 38
diff changeset
   127
        TInt volume = volumex100 / 100;
21
hgs
parents: 20
diff changeset
   128
        // Set PriorityPref
43
hgs
parents: 38
diff changeset
   129
        iPlayer->SetPriority(iAudioPriority, iAudioPreference);
hgs
parents: 38
diff changeset
   130
        iPlayer->SetRepeats(iPlayerSettings.GetNumberOfRepeats(),
hgs
parents: 38
diff changeset
   131
                iPlayerSettings.GetRepeatDelay());
hgs
parents: 38
diff changeset
   132
        iPlayer->SetVolume(volume);
hgs
parents: 38
diff changeset
   133
        iPlayer->SetVolumeRamp(iPlayerSettings.GetVolumeRamp());
48
hgs
parents: 43
diff changeset
   134
        TRACE_LOG((_L("CStsPlayer::Play() Settings-Priority[%d]Preference[0x%x]Repeats[%d]Volume[%d]"), 
hgs
parents: 43
diff changeset
   135
                iAudioPriority,
hgs
parents: 43
diff changeset
   136
                iAudioPreference,
hgs
parents: 43
diff changeset
   137
                iPlayerSettings.GetNumberOfRepeats(),
hgs
parents: 43
diff changeset
   138
                volume));
hgs
parents: 43
diff changeset
   139
        TRACE_LOG((_L("CStsPlayer::Play() Settings-RepeatDelay[%d]VolumeRamp[0x%x]"), 
hgs
parents: 43
diff changeset
   140
                iPlayerSettings.GetRepeatDelay().Int64(),
hgs
parents: 43
diff changeset
   141
                iPlayerSettings.GetVolumeRamp().Int64()));
20
hgs
parents:
diff changeset
   142
        iPlayer->Play();
hgs
parents:
diff changeset
   143
        }
hgs
parents:
diff changeset
   144
    else
hgs
parents:
diff changeset
   145
        {
hgs
parents:
diff changeset
   146
        //TODO: add trace
hgs
parents:
diff changeset
   147
        // Since there is an error, indicate that the playback is complete
48
hgs
parents: 43
diff changeset
   148
        //RDebug::Print(_L("InitCompleteReturned"), aError);
hgs
parents: 43
diff changeset
   149
        TRACE_LOG((_L("CStsPlayer::MapcInitComplete() Error[%d]"), aError));
20
hgs
parents:
diff changeset
   150
        iObserver.PlayComplete(iContext);
hgs
parents:
diff changeset
   151
        }
hgs
parents:
diff changeset
   152
    }
hgs
parents:
diff changeset
   153
hgs
parents:
diff changeset
   154
void CStsPlayer::MapcPlayComplete(TInt aError)
hgs
parents:
diff changeset
   155
    {
48
hgs
parents: 43
diff changeset
   156
    TRACE_LOG((_L("CStsPlayer::MapcPlayComplete() Error[%d]"), aError));
20
hgs
parents:
diff changeset
   157
    if (aError != KErrNone)
hgs
parents:
diff changeset
   158
        {
hgs
parents:
diff changeset
   159
        //TODO: add trace
hgs
parents:
diff changeset
   160
        }
hgs
parents:
diff changeset
   161
    iObserver.PlayComplete(iContext);
hgs
parents:
diff changeset
   162
    }