diff -r cad71a31b7fc -r e36f3802f733 srsf/speechsynthesis/server/src/speechsynthesisserverutilities.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srsf/speechsynthesis/server/src/speechsynthesisserverutilities.cpp Wed Sep 01 12:29:17 2010 +0100 @@ -0,0 +1,302 @@ +/* +* 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: Speech synthesis server utility classes +* +*/ + + +// INCLUDES + +#include // For listening sw installer's actions +#include // For listening memory card insertion/removal + +#include "speechsynthesisserverutilities.h" +#include "rubydebug.h" + + +// ---------------------------------------------------------------------------- +// PanicClient +// +// ---------------------------------------------------------------------------- +// +void PanicClient( const RMessagePtr2& aMessage, TSpeechSynthesisPanic aPanic ) + { + aMessage.Panic( KPanic, aPanic ); + } + + +// ---------------------------------------------------------------------------- +// CShutdown::NewL +// +// ---------------------------------------------------------------------------- +CShutdown* CShutdown::NewL() + { + CShutdown* self = new(ELeave) CShutdown(); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + +// ---------------------------------------------------------------------------- +// CShutdown::CShutdown +// +// ---------------------------------------------------------------------------- +inline CShutdown::CShutdown(): + CTimer( EPriorityIdle ) + { + CActiveScheduler::Add( this ); + } + +// ---------------------------------------------------------------------------- +// CShutdown::ConstructL +// +// ---------------------------------------------------------------------------- +// +inline void CShutdown::ConstructL() + { + CTimer::ConstructL(); + } + +// ---------------------------------------------------------------------------- +// CShutdown::Start +// +// ---------------------------------------------------------------------------- +// +void CShutdown::Start() + { + RUBY_DEBUG0( "SpeechSynthesisServer: starting shutdown timeout" ); + + After( KSpeechSynthesisShutdownDelay ); + } + +// ---------------------------------------------------------------------------- +// CShutdown::RunL +// +// ---------------------------------------------------------------------------- +// +void CShutdown::RunL() + { + RUBY_DEBUG0( "SpeechSynthesisServer: server timeout ... closing" ); + + CActiveScheduler::Stop(); + } + + +// ---------------------------------------------------------------------------- +// CConfigurationListener::NewL +// +// ---------------------------------------------------------------------------- +// +CConfigurationListener* CConfigurationListener::NewL( MConfigurationObserver& aHost ) + { + RUBY_DEBUG_BLOCK( "" ); + + CConfigurationListener* self = new(ELeave) CConfigurationListener( aHost ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self); + + return self; + } + +// ---------------------------------------------------------------------------- +// CConfigurationListener::CConfigurationListener +// +// ---------------------------------------------------------------------------- +// +CConfigurationListener::CConfigurationListener( MConfigurationObserver& aHost ) : + CActive( CActive::EPriorityLow ), + iHost( aHost ) + { + // Nothing + } + +// ---------------------------------------------------------------------------- +// CConfigurationListener::ConstructL +// +// ---------------------------------------------------------------------------- +// +void CConfigurationListener::ConstructL() + { + User::LeaveIfError( iProperty.Attach( KUidSystemCategory, + Swi::KUidSoftwareInstallKey ) ); + + CActiveScheduler::Add( this ); + + // Initial subscription + iProperty.Subscribe( iStatus ); + SetActive(); + } + +// ---------------------------------------------------------------------------- +// CConfigurationListener::~CConfigurationListener +// +// ---------------------------------------------------------------------------- +// +CConfigurationListener::~CConfigurationListener() + { + RUBY_DEBUG0( "Destructing.." ); + Cancel(); + iProperty.Close(); + } + +// ---------------------------------------------------------------------------- +// CConfigurationListener::DoCancel +// +// ---------------------------------------------------------------------------- +// +void CConfigurationListener::DoCancel() + { + RUBY_DEBUG0( "DoCancel" ) + iProperty.Cancel(); + } + +// ---------------------------------------------------------------------------- +// CConfigurationListener::RunL +// +// ---------------------------------------------------------------------------- +// +void CConfigurationListener::RunL() + { + RUBY_DEBUG_BLOCK( "" ); + + // Resubscribe before processing new value to prevent missing updates + iProperty.Subscribe( iStatus ); + SetActive(); + + // Property updated, get new value + TInt value( 0 ); + if ( iProperty.Get( value ) == KErrNone ) + { + TInt operation( value & Swi::KSwisOperationMask ); + TInt operationStatus( value & Swi::KSwisOperationStatusMask ); + + RUBY_DEBUG1( "value = %d", value ); + RUBY_DEBUG2( "operation %d, status %d", operation, operationStatus ); + + if ( operationStatus == Swi::ESwisStatusSuccess && + ( operation == Swi::ESwisInstall || + operation == Swi::ESwisUninstall || + operation == Swi::ESwisRestore ) ) + { + RUBY_DEBUG0( "Update needed!" ); + iHost.McoConfigurationChanged(); + } + } + } + + +// ---------------------------------------------------------------------------- +// CMMCListener::NewL +// +// ---------------------------------------------------------------------------- +// +CMMCListener* CMMCListener::NewL( MConfigurationObserver& aHost ) + { + RUBY_DEBUG_BLOCK( "" ); + + CMMCListener* self = new(ELeave) CMMCListener( aHost ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self); + + return self; + } + +// ---------------------------------------------------------------------------- +// CMMCListener::CMMCListener +// +// ---------------------------------------------------------------------------- +// +CMMCListener::CMMCListener( MConfigurationObserver& aHost ) : + CActive( CActive::EPriorityLow ), + iPrevValue( -1 ), + iHost( aHost ) + { + // Nothing + } + +// ---------------------------------------------------------------------------- +// CMMCListener::ConstructL +// +// ---------------------------------------------------------------------------- +// +void CMMCListener::ConstructL() + { + User::LeaveIfError( iProperty.Attach( KPSUidUikon, KUikMMCInserted ) ); + + CActiveScheduler::Add( this ); + + // Initial subscription + iProperty.Subscribe( iStatus ); + SetActive(); + } + +// ---------------------------------------------------------------------------- +// CMMCListener::~CMMCListener +// +// ---------------------------------------------------------------------------- +// +CMMCListener::~CMMCListener() + { + RUBY_DEBUG0( "Destructing.." ); + Cancel(); + iProperty.Close(); + } + +// ---------------------------------------------------------------------------- +// CMMCListener::DoCancel +// +// ---------------------------------------------------------------------------- +// +void CMMCListener::DoCancel() + { + RUBY_DEBUG0( "DoCancel" ) + iProperty.Cancel(); + } + +// ---------------------------------------------------------------------------- +// CMMCListener::RunL +// +// ---------------------------------------------------------------------------- +// +void CMMCListener::RunL() + { + RUBY_DEBUG_BLOCK( "" ); + + // Resubscribe before processing new value to prevent missing updates + iProperty.Subscribe( iStatus ); + SetActive(); + + TInt value( 0 ); + if ( iProperty.Get( value ) == KErrNone ) + { + RUBY_DEBUG1( "value = %d", value ); + + // Extra calls coming -> check if status is changed + if ( iPrevValue != value ) + { + iPrevValue = value; + + iHost.McoConfigurationChanged(); + } + } + } + +// End of file