diff -r b31261fd4e04 -r ccd8e69b5392 mmsharing/mmshindicator/src/musindicatorapi.cpp --- a/mmsharing/mmshindicator/src/musindicatorapi.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,350 +0,0 @@ -/* -* Copyright (c) 2007 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: MusIndicatorApi provides means to show notes and indicate -* availability of videosharing to user. -* -*/ - - - -#include "musindicatorapi.h" -#include "musresourcefinderutil.h" -#include "muslogger.h" -#include "musindicatordsa.h" -#include "mussettings.h" -#include "mussettingskeys.h" -#include "mussoundplayer.h" -#include "musresourceutil.h" -#include -#include - - -// ======== MEMBER FUNCTIONS ======== - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -EXPORT_C CMusIndicatorApi* CMusIndicatorApi::NewL( MMusIndicatorObserver& aObserver ) - { - CMusIndicatorApi* self = CMusIndicatorApi::NewLC( aObserver ); - CleanupStack::Pop( self ); - return self; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -EXPORT_C CMusIndicatorApi* CMusIndicatorApi::NewLC( MMusIndicatorObserver& aObserver ) - { - CMusIndicatorApi* self = new (ELeave) CMusIndicatorApi( &aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -EXPORT_C CMusIndicatorApi* CMusIndicatorApi::NewL() - { - CMusIndicatorApi* self = new (ELeave) CMusIndicatorApi( NULL ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusIndicatorApi::~CMusIndicatorApi() - { - MUS_LOG( "mus: [MUSIND ] -> MusIndicatorApi::~CMusIndicatorApi" ); - - Cancel(); - delete iIndicatorWindow; - delete iSoundPlayer; - if ( !IsSubscriber() ) - { - Indicator( EFalse ); - } - - iProperty.Close(); - - MUS_LOG( "mus: [MUSIND ] <- MusIndicatorApi::~CMusIndicatorApi" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -TBool CMusIndicatorApi::IsSubscriber() const - { - return !iObserver; - } - - -// ----------------------------------------------------------------------------- -// Indicates VS availability to user. -// In operator specific variant this can include DSA note and an audio tone -// played with CMdaAudioPlayerUtility. -// ----------------------------------------------------------------------------- -// -EXPORT_C void CMusIndicatorApi::IndicateAvailabilityL() - { - MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::IndicateAvailabilityL" ) - __ASSERT_ALWAYS( !IsSubscriber(), User::Leave( KErrArgument ) ); - - Indicator( ETrue ); - - if( MultimediaSharingSettings::AuditoryNotificationSettingL() == - MusSettingsKeys::EAuditoryNotificationOn ) - { - MUS_LOG( "mus: [MUSIND] Play tone" ) - PlayToneL(); - } - - MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::IndicateAvailabilityL" ) - } - - -// ----------------------------------------------------------------------------- -// From CActive. -// Handles completion of an outstanding asynchronous request. -// ----------------------------------------------------------------------------- -// -void CMusIndicatorApi::RunL() - { - MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::RunL" ) - - if ( !IsSubscriber() ) - { - MUS_LOG( "mus: [MUSIND ] : publisher" ) - StartLiveSharingL(); - } - else - { - MUS_LOG( "mus: [MUSIND ] : subscriber" ) - ToggleIndicatorL(); - } - - MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::RunL" ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusIndicatorApi::StartLiveSharingL() - { - MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::StartLiveSharingL" ) - - if( iStatus.Int() != KErrNotFound ) // eq. Cancel -button - { - if ( iObserver ) - { - iObserver->StartLiveSharingL(); - } - } - - MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::StartLiveSharingL" ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusIndicatorApi::ToggleIndicatorL() - { - MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::ToggleIndicatorL" ) - TInt val; - - - - User::LeaveIfError( RProperty::Get( KPSUidCoreApplicationUIs, - KCoreAppUIsVideoSharingIndicator, - val ) ); - iProperty.Subscribe( iStatus ); - SetActive(); - - TBool on = ( val == ECoreAppUIsVideoSharingIndicatorOn ); - - if ( on && !iIndicatorWindow - && MultimediaSharingSettings::OperatorVariantSettingL() == - MusSettingsKeys::EOperatorSpecific ) - { - iIndicatorWindow = CMusIndicatorDsa::NewL(); - } - else if ( !on ) - { - delete iIndicatorWindow; - iIndicatorWindow = NULL; - } - else - { - //NOP - } - - MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::ToggleIndicatorL" ) - } - - -// ----------------------------------------------------------------------------- -// From CActive. -// Cancels an outstanding asynchronous request. -// ----------------------------------------------------------------------------- -// -void CMusIndicatorApi::DoCancel() - { - MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::DoCancel" ) - - if ( IsSubscriber() ) - { - iProperty.Cancel(); - } - MUS_LOG( "mus: [MUSIND] -> CMusIndicatorApi::DoCancel" ) - } - - -// ----------------------------------------------------------------------------- -// From CActive. -// Handles a leave occurring in the request completion event handler RunL. -// ----------------------------------------------------------------------------- -// -#ifdef _DEBUG -TInt CMusIndicatorApi::RunError( TInt aError ) -#else -TInt CMusIndicatorApi::RunError( TInt ) -#endif - { - MUS_LOG1( "mus: [MUSIND] -> CMusIndicatorApi::RunError(%d)", aError ) - - MUS_LOG( "mus: [MUSIND] <- CMusIndicatorApi::RunError(%d)" ) - return KErrNone; - } - - -// ----------------------------------------------------------------------------- -// From MMusSoundPlayerObserver. -// Indicates completion of sound playback. -// ----------------------------------------------------------------------------- -// -#ifdef _DEBUG -void CMusIndicatorApi::PlaySoundComplete( TInt aError ) -#else -void CMusIndicatorApi::PlaySoundComplete( TInt /* aError */ ) -#endif - { - MUS_LOG1( "mus: [MUSIND ] -> MusIndicatorApi::PlaySoundComplete(%d)", aError ) - delete iSoundPlayer; - iSoundPlayer = NULL; - MUS_LOG( "mus: [MUSIND ] <- MusIndicatorApi::PlaySoundComplete" ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusIndicatorApi::CMusIndicatorApi( MMusIndicatorObserver* aObserver ) - : CActive( EPriorityStandard ), - iObserver( aObserver ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusIndicatorApi::ConstructL() - { - MUS_LOG( "mus: [MUSIND ] -> MusIndicatorApi::ConstructL" ) - - if ( IsSubscriber() ) - { - MUS_LOG( "mus: [MUSIND ] : subscriber (called by aiwprovider)" ) - - User::LeaveIfError( iProperty.Attach( KPSUidCoreApplicationUIs, - KCoreAppUIsVideoSharingIndicator ) ); - CActiveScheduler::Add( this ); - iProperty.Subscribe( iStatus ); - SetActive(); - } - else - { - MUS_LOG( "mus: [MUSIND ] : publisher (called by manager)" ) - CActiveScheduler::Add( this ); - } - MUS_LOG( "mus: [MUSIND ] <- MusIndicatorApi::ConstructL" ) - } - - -// ----------------------------------------------------------------------------- -// Indicating availability of VS. -// ----------------------------------------------------------------------------- -// -void CMusIndicatorApi::Indicator( TBool aShown ) - { - MUS_LOG1( "mus: [MUSIND ] <- MusIndicatorApi::Indicator( %d)" , aShown ) - - RProperty property; - TInt error( KErrNone ); - - error = property.Attach( KPSUidCoreApplicationUIs, KCoreAppUIsVideoSharingIndicator ); - if ( error == KErrNone ) - { - if ( aShown ) - { - MUS_LOG( "mus: [MUSIND ] : indicator ON" ) - - property.Set( ECoreAppUIsVideoSharingIndicatorOn ); - } - else - { - MUS_LOG( "mus: [MUSIND ] : indicator OFF" ) - property.Set( ECoreAppUIsVideoSharingIndicatorOff ); - } - } - property.Close(); - MUS_LOG( "mus: [MUSIND ] <- MusIndicatorApi::Indicator" ) - - } - -// ----------------------------------------------------------------------------- -// Plays tone indicating availability of VS. -// ----------------------------------------------------------------------------- -// -void CMusIndicatorApi::PlayToneL() - { - MUS_LOG( "mus: [MUSIND ] -> MusIndicatorApi::PlayToneL" ) - delete iSoundPlayer; - iSoundPlayer = NULL; - iSoundPlayer = CMusSoundPlayer::NewL( *this ); - MUS_LOG( "mus: [MUSIND ] MusIndicatorApi::PlayToneL - Play sound" ) - iSoundPlayer->PlayL( CMusSoundPlayer::EVsAvailableSound ); - MUS_LOG( "mus: [MUSIND ] <- MusIndicatorApi::PlayToneL" ) - } - -