diff -r 000000000000 -r 4e91876724a2 photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/viewframework/tvout/src/glxtvconnectionmonitor.cpp Thu Dec 17 08:45:44 2009 +0200 @@ -0,0 +1,175 @@ +/* +* Copyright (c) 2008-2009 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: Monitors the Tv Out Connection +* +*/ + + + +/** + * @internal reviewed 24/08/2007 by D Holland + */ + +// CLASS HEADER +#include "glxtvconnectionmonitor.h" + +// EXTERNAL INCLUDES + +// INTERNAL INCLUDES + +#include +#include +#include "glxtv.h" + + +//----------------------------------------------------------------------------- +// Return new object +//----------------------------------------------------------------------------- +// +CGlxTvConnectionMonitor* CGlxTvConnectionMonitor::NewL( + MGlxTvConnectionObserver& aConnectionObserver ) + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::NewL"); + CGlxTvConnectionMonitor* self = new (ELeave) + CGlxTvConnectionMonitor( aConnectionObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +//----------------------------------------------------------------------------- +// Destructor +//----------------------------------------------------------------------------- +// +CGlxTvConnectionMonitor::~CGlxTvConnectionMonitor() + { + GLX_LOG_INFO("~CGlxTvConnectionMonitor"); + Cancel(); + iTvAccServer.Disconnect(); + } + + +//----------------------------------------------------------------------------- +// Default C++ constructor +//----------------------------------------------------------------------------- +// +CGlxTvConnectionMonitor::CGlxTvConnectionMonitor + ( MGlxTvConnectionObserver& aConnectionObserver ) + :CActive(EPriorityStandard), + iConnectionObserver ( aConnectionObserver ) + { + GLX_LOG_INFO("CGlxTvConnectionMonitor"); + CActiveScheduler::Add( this ); + } + + +//----------------------------------------------------------------------------- +// Symbian second phase constructor +//----------------------------------------------------------------------------- +// +void CGlxTvConnectionMonitor::ConstructL() + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::ConstructL"); + User::LeaveIfError( iTvAccServer.Connect() ); + User::LeaveIfError( iTvAccMode.CreateSubSession( iTvAccServer ) ); + User::LeaveIfError( iTvAccMode.GetAccessoryMode( iCurrentAccMode ) ); + iConnectionState = ( iCurrentAccMode.iAccessoryMode == EAccModeTVOut ); + + IssueRequest(); + } + +//----------------------------------------------------------------------------- +// From class CActive. +// Receive notification of change in the connection state +//----------------------------------------------------------------------------- +// +void CGlxTvConnectionMonitor::RunL() + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::RunL"); + // Check for errors + User::LeaveIfError( iStatus.Int() ); + // Notify observers + IssueNotificationL(); + // Request the next event + IssueRequest(); + } + + +//----------------------------------------------------------------------------- +// From class CActive. +// DoCancel +//----------------------------------------------------------------------------- +// +void CGlxTvConnectionMonitor::DoCancel() + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::DoCancel"); + iTvAccMode.CancelNotifyAccessoryModeChanged(); + } + + + +//----------------------------------------------------------------------------- +// From class CActive. +// RunError +//----------------------------------------------------------------------------- +// +TInt CGlxTvConnectionMonitor::RunError(TInt aError) + { + GLX_LOG_INFO1("CGlxTvConnectionMonitor::RunError - %d", aError); + return KErrNone; + } + +//----------------------------------------------------------------------------- +// Is the TV out cable connected +// IsConnected +//----------------------------------------------------------------------------- +// +TBool CGlxTvConnectionMonitor::IsConnected() const + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::IsConnected"); + return iConnectionState; + } + + +//----------------------------------------------------------------------------- +// Request accessory server events +//----------------------------------------------------------------------------- +// +void CGlxTvConnectionMonitor::IssueRequest() + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueRequest"); + if (!IsActive()) // required for testing + { + iTvAccMode.NotifyAccessoryModeChanged( iStatus, iCurrentAccMode ); + SetActive(); + } + } + + +//----------------------------------------------------------------------------- +// Sends notification to observers if TV Out is connected +//----------------------------------------------------------------------------- +// +void CGlxTvConnectionMonitor::IssueNotificationL() + { + GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL"); + iConnectionState = ( iCurrentAccMode.iAccessoryMode == EAccModeTVOut ); + iConnectionObserver.HandleTvConnectionStatusChangedL(); + } + + + +