diff -r 0fd27995241b -r 9ac0a0a7da70 javauis/mmapi_qt/volumekeys/src/cmmaglobalvolume.cpp --- a/javauis/mmapi_qt/volumekeys/src/cmmaglobalvolume.cpp Tue May 11 16:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,241 +0,0 @@ -/* -* Copyright (c) 2006 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: This class is used for global volume -* -*/ - - -// CLASS HEADER -#include "cmmaglobalvolume.h" - -// INTERNAL INCLUDES -#include "cmmaplayer.h" -#include "cmmaforeground.h" -#include "cmmavolumekeyslistener.h" -#include "mmaprivatecrkeys.h" - -// EXTERNAL INCLUDES -#include -#include - -// UNNAMED LOCAL NAMESPACE -namespace -{ -// Volume level step size -const TInt KMMAVolumeLevelStep = 10; -// Error when setting new volume level for a control -_LIT(KMMAGlobalVolumeSetError, "Can't set volume level"); -} - - -// ============================ MEMBER FUNCTIONS ============================= - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::NewL -// --------------------------------------------------------------------------- -// -CMMAGlobalVolume* CMMAGlobalVolume::NewL(CMMAForeground* aForeground) -{ - CMMAGlobalVolume* self = new(ELeave) CMMAGlobalVolume(aForeground); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::~CMMAGlobalVolume -// --------------------------------------------------------------------------- -// -CMMAGlobalVolume::~CMMAGlobalVolume() -{ - delete iVolumeKeysListener; - //delete iSettingsStore; - delete iForeground; - iControlList.Close(); -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::AddPlayerL -// --------------------------------------------------------------------------- -// -void CMMAGlobalVolume::AddPlayerL(CMMAPlayer* aPlayer) -{ - // Find if the player has a volume control - CMMAVolumeControl* control = FindVolumeControl(aPlayer); - - // Ignore adding new player if it does not support volume control - if (control) - { - TMMAPlayerHolder playerHolder; - // Create new volume control and level index pair - playerHolder.iVolumeControl = control; - playerHolder.iVolumeIndex = control->AddLevelL(); - playerHolder.iPlayer = aPlayer; - // Set current volume level for the control - control->SetVolumeLevelL(playerHolder.iVolumeIndex, iLevel); - // Add created pair to the control list - iControlList.AppendL(playerHolder); - } -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::RemovePlayer -// --------------------------------------------------------------------------- -// -void CMMAGlobalVolume::RemovePlayer(CMMAPlayer* aPlayer) -{ - // Find if the player has a volume control - CMMAVolumeControl* control = FindVolumeControl(aPlayer); - - // Ignore adding new player if it does not support volume control - if (control) - { - // Check that if this type of volume control can be found from - // the control list and remove it - TInt count(iControlList.Count()); - for (TInt i(0); i < count; i++) - { - const TMMAPlayerHolder& holder = iControlList[ i ]; - if (control == holder.iVolumeControl) - { - iControlList.Remove(i); - break; - } - } - } -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::VolumeUp -// --------------------------------------------------------------------------- -// -void CMMAGlobalVolume::VolumeUp() -{ - LOG1( EJavaMMAPI, EInfo, "THREADID = %d : CMMAGlobalVolume: VolumeUp: +", RThread().Id().Id()); - // Adjust volume if midlet is in foreground and the volume level value - // is not too high, in this case it cannot be set over KMMAVolumeMaxLevel - if (iForeground->IsForeground() && (iLevel < KMMAVolumeMaxLevel)) - { - LOG( EJavaMMAPI, EInfo, "CMMAGlobalVolume: VolumeUp: Volume up"); - // Check that the current volume level is not increased too much - TInt level = - iLevel > (KMMAVolumeMaxLevel - KMMAVolumeLevelStep) ? - KMMAVolumeMaxLevel - iLevel : iLevel + KMMAVolumeLevelStep; - // Increase level by new value - SetControlVolumeLevels(level); - } - LOG( EJavaMMAPI, EInfo, "CMMAGlobalVolume: VolumeUp: -"); -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::VolumeDown -// --------------------------------------------------------------------------- -// -void CMMAGlobalVolume::VolumeDown() -{ - LOG1( EJavaMMAPI, EInfo, "THREADID = %d : CMMAGlobalVolume: VolumeDown: +", RThread().Id().Id()); - // Adjust volume if midlet is in foreground and the volume value - // is not too low, in this case it cannot be set under zero - if (iForeground->IsForeground() && (iLevel > 0)) - { - LOG( EJavaMMAPI, EInfo, "CMMAGlobalVolume: VolumeDown: Volume down"); - // Check that the currnet volume level is not decreased too much - TInt level = - iLevel < KMMAVolumeLevelStep ? - 0 : iLevel - KMMAVolumeLevelStep; - // Decrease level by new value - SetControlVolumeLevels(level); - } - LOG( EJavaMMAPI, EInfo, "CMMAGlobalVolume: VolumeDown: -"); -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::FindVolumeControl -// --------------------------------------------------------------------------- -// -CMMAVolumeControl* CMMAGlobalVolume::FindVolumeControl(CMMAPlayer* aPlayer) -{ - TInt count(aPlayer->ControlCount()); - for (TInt i(0); i < count; i++) - { - CMMAControl* control = aPlayer->Control(i); - // Check that if this control supports volume control - if (control->ClassName() == KMMAVolumeControlName) - { - return static_cast< CMMAVolumeControl* >(control); - } - } - // Does not support volume control - return NULL; -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::SetControlVolumeLevels -// --------------------------------------------------------------------------- -// -void CMMAGlobalVolume::SetControlVolumeLevels(TInt aLevel) -{ - TInt count(iControlList.Count()); - // Adjust volume for all current volume controls associated - for (TInt i(0); i < count; i++) - { - const TMMAPlayerHolder& hdr = iControlList[ i ]; - // Set new volume level for this control - TRAPD(error, - hdr.iVolumeControl->SetVolumeLevelL(hdr.iVolumeIndex, aLevel)); - if (error != KErrNone) - { - hdr.iPlayer->PostStringEvent( - CMMAPlayerEvent::EError, - KMMAGlobalVolumeSetError()); - } - } - - iLevel = aLevel; - LOG1( EJavaMMAPI, EInfo, - "CMMAGlobalVolume::SetControlVolumeLevels - iLevel = %d", iLevel); - - // Store new volume to MMA global settings. Error cannot be reported - // in any sophisticated way so we just have to ignore it. Debug builds - // may panic in this case - TInt error = iSettingsStore->Set(KMobileMediaVolumeLevel, aLevel); - __ASSERT_DEBUG(error == KErrNone, User::Invariant()); -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::CMMAGlobalVolume -// --------------------------------------------------------------------------- -// -CMMAGlobalVolume::CMMAGlobalVolume(CMMAForeground* aForeground) : - iLevel(KMMAVolumeMaxLevel), - iForeground(aForeground) -{ -} - -// --------------------------------------------------------------------------- -// CMMAGlobalVolume::ConstructL -// --------------------------------------------------------------------------- -// -void CMMAGlobalVolume::ConstructL() -{ - iVolumeKeysListener = CMMAVolumeKeysListener::NewL(this); - // TO-DO remove TRAP_IGNORE - // TRAP_IGNORE(err,iSettingsStore = CRepository::NewL(KCRUidMobileMedia)); - - // Get level from the settings store - //User::LeaveIfError(iSettingsStore->Get(KMobileMediaVolumeLevel, iLevel)); -} - -// End of file