tvout/src/glxtv.cpp
changeset 26 c499df2dbb33
parent 24 99ad1390cd33
child 27 0d818da5a659
child 29 2c833fc9e98f
child 40 112f0ac2d1f0
--- a/tvout/src/glxtv.cpp	Fri Apr 16 14:58:46 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,474 +0,0 @@
-/*
-* 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:    Handles & propogates UI state change notifications.
-*
-*/
-
-
-
-/**
- * @internal reviewed 24/08/2007 by D Holland
- */
-
-// Class header
-#include "glxtv.h"
-
-// External includes
-#include <w32std.h>                     // for TWsVisibilityChangedEvent
-
-//  INTERNAL INCLUDES
-#include <glxlog.h>                     // for debug logging 
-#include <glxtracer.h>                  // for debug logging
-#include <glxpanic.h>                   // for Gallery panic codes
-#include <glxtvconstants.h>             // for ETvConnectionChanged, TV heights
-#include <centralrepository.h>          // for CRepository
-#ifdef __MARM
-#include <GSServerEngine.h>
-#endif
-
-// GLXTVOUT INCLUDES
-#include "mglxtvobserver.h"             // for MGlxTvObserver
-#include "glxwindowvisibilitymonitor.h" // for CGlxWindowVisibilityMonitor
-#include "glxtvconnectionmonitor.h"     // for CGlxTvConnectionMonitor
-
-const TUid KCRUidTvoutSettings = {0x1020730B};
-
-using namespace glxTvOut;
-
-/**
-*  CGlxTvOutCenRepMonitor
-*  CGlxTv conainted class for observing changes in central 
-*					 repository TV aspect Ratio value
-* @author Loughlin Spollen
-*/
-NONSHARABLE_CLASS( CGlxTv::CGlxTvOutCenRepMonitor )
-	                      : public CActive
-	{
-	public:  // Constructors and destructor
-	    /**
-	    * Symbian Constructor.
-	    * @param The TV Observer
-	    * @param The central repository
-	    * @return constructed object
-	    */
-	    static CGlxTvOutCenRepMonitor* NewL(MGlxTvObserver& aTvObserver,
-	                                    CRepository& aRepository);
-
-	    /**
-	    * Destructor.
-	    */
-	    ~CGlxTvOutCenRepMonitor();
-	    
-	private: 
-	    /**
-	    * C++ constructor.
-	    * @param The TV Observer
-	    * @param The central repository
-	    * @return constructed object
-	    */
-	    CGlxTvOutCenRepMonitor(MGlxTvObserver& aTvObserver,
-	                            CRepository& aRepository);
-	    /**
-	    * 2nd phase constructor
-	    */
-	    void ConstructL();
-	    
-	protected: // from CActive
-	    /**
-	    * @ref CActive::RunL
-	    */
-	    void RunL();
-
-	    /**
-	    * @ref CActive::DoCancel
-	    */
-	    void DoCancel();
-	    
-	    /**
-	    * @ref CActive::RunError
-	    */
-	    TInt RunError(TInt aError);
-
-	private:
-	    
-	    // Not Owned: the Glx TV observer
-	    MGlxTvObserver& iTvObserver;
-	     
-		// Not Owned: the central repository API
-	    CRepository& iRepository;       
-	    
-	    TUint iSettingsTVAspectRatio;
-	    // the central repository identifier
-	    TUid iRepositoryUid;
-	}; 
-
-
-
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-CGlxTv::CGlxTvOutCenRepMonitor* CGlxTv::CGlxTvOutCenRepMonitor::NewL
-										        ( MGlxTvObserver& aTvObserver,
-	                                                CRepository& aRepository )
-    {
-    TRACER("CGlxTv::CGlxTvOutCenRepMonitor::NewL()");
-			    
-    CGlxTvOutCenRepMonitor* self 
-                = new(ELeave) CGlxTvOutCenRepMonitor( aTvObserver, aRepository );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-
-
-// -----------------------------------------------------------------------------
-// C++ constructor.
-// -----------------------------------------------------------------------------
-inline CGlxTv::CGlxTvOutCenRepMonitor::CGlxTvOutCenRepMonitor
-                                                ( MGlxTvObserver& aTvObserver,
-	                                              CRepository& aRepository )
-                    				 : CActive( EPriorityStandard ),
-                    				   iTvObserver ( aTvObserver ),
-                 				       iRepository( aRepository )
-    {
-    TRACER("CGlxTv::CGlxTvOutCenRepMonitor::CGlxTvOutCenRepMonitor()");
-    }
-
-
-
-// ----------------------------------------------------------------------------
-// Symbian 2nd phase constructor 
-// ----------------------------------------------------------------------------
-void CGlxTv::CGlxTvOutCenRepMonitor::ConstructL()
-    {
-	TRACER("CGlxTv::CGlxTvOutCenRepMonitor::ConstructL");
-    CActiveScheduler::Add( this );
-#ifdef __MARM
-    CGSServerEngine* aGSServerEngine= CGSServerEngine::NewLC();
-    iSettingsTVAspectRatio = aGSServerEngine->AspectRatioL();
-    CleanupStack::Pop(aGSServerEngine);
-#else
-    iSettingsTVAspectRatio = 0;
-#endif
-    }
-
-    
-
-// ----------------------------------------------------------------------------
-// Destructor
-// ----------------------------------------------------------------------------
-CGlxTv::CGlxTvOutCenRepMonitor::~CGlxTvOutCenRepMonitor()
-    {
-    TRACER("CGlxTv::~CGlxTvOutCenRepMonitor()");
-    Cancel();
-    }
-
-
-
-// ----------------------------------------------------------------------------
-// CGlxTvOutCenRepMonitor::RunL
-// From class CActive.
-// ----------------------------------------------------------------------------
-void CGlxTv::CGlxTvOutCenRepMonitor::RunL()
-    {
-    TRACER("CGlxTv::CGlxTvOutCenRepMonitor::RunL");
-    // Check for errors
-    User::LeaveIfError( iStatus.Int() );
-    GLX_LOG_INFO("CGlxTvOutCenRepMonitor - RunL completed with Err Code"); 
-    User::LeaveIfError( iRepository.NotifyRequest( iSettingsTVAspectRatio, iStatus ) );
-    if (!IsActive())
-        {
-        SetActive();
-        iTvObserver.HandleTvStatusChangedL( ETvConnectionChanged );
-        }
-    }
-
-
-
-// ----------------------------------------------------------------------------
-// CGlxTvOutCenRepMonitor::DoCancel
-// From class CActive.
-// ----------------------------------------------------------------------------
-void CGlxTv::CGlxTvOutCenRepMonitor::DoCancel()
-    {
-    TRACER("CGlxTv::CGlxTvOutCenRepMonitor::DoCancel()");
-    iRepository.NotifyCancel( iSettingsTVAspectRatio );  
-    }
-
-
-
-//-----------------------------------------------------------------------------
-// CGlxTvOutCenRepMonitor::RunError
-// From class CActive.
-//-----------------------------------------------------------------------------
-//
-TInt CGlxTv::CGlxTvOutCenRepMonitor::RunError( TInt /*aError*/ )
-    {
-    TRACER("CGlxTv::CGlxTvOutCenRepMonitor::RunError()");
-    return KErrNone;
-    }
-    
-
-//-----------------------------------------------------------------------------
-// Return new object
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CGlxTv* CGlxTv::NewL( MGlxTvObserver& aTvObserver ) 
-    {
-    TRACER("CGlxTv::NewL()");
-    CGlxTv* self = new (ELeave) CGlxTv( aTvObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-    
-    
-
-//-----------------------------------------------------------------------------
-// Destructor
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CGlxTv::~CGlxTv()
-    {
-    TRACER("CGlxTv::~CGlxTv()");
-    StopMonitoringEnvironment();
-    delete iTvConnectionMonitor;
-    }
-
-
-
-
-//-----------------------------------------------------------------------------
-// Default C++ constructor
-//-----------------------------------------------------------------------------
-//
-CGlxTv::CGlxTv( MGlxTvObserver& aTvObserver ) : iTvObserver( aTvObserver ),
-                                                iAspectRatio( KErrUnknown )
-    {
-    TRACER("CGlxTv::CGlxTv()");
-    }
-
-
-
-
-//-----------------------------------------------------------------------------
-// Symbian second phase constructor
-//-----------------------------------------------------------------------------
-//
-void CGlxTv::ConstructL()
-    {
-    TRACER("CGlxTv::ConstructL()");
-    // Don't create the visibility monitor until the TV Out cable is connected
-
-    // Owned: The TV connection monitor
-    iTvConnectionMonitor = CGlxTvConnectionMonitor::NewL( *this );
-
-    if ( iTvConnectionMonitor->IsConnected() )
-        {
-        // Start monitoring the environment for changes
-        MonitorEnvironmentL();
-
-        // Calculate the TV Out screen buffer size
-        CalcTvScreenSzL();
-        }
-    }
-
-
-
-
-//-----------------------------------------------------------------------------
-// returns the TV screen size 
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TSize CGlxTv::ScreenSizeL() const
-    {
-    TRACER("CGlxTv::ScreenSizeL()");
-    return iSzInPixels;
-    }
-
-
-
-
-//-----------------------------------------------------------------------------
-// Is the analog TV Connected
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TBool CGlxTv::IsConnected() const
-    {
-    TRACER("CGlxTv::IsConnected()");
-    return iTvConnectionMonitor->IsConnected();
-    }
-    
-    
-//-----------------------------------------------------------------------------
-// Is the HDMI TV Connected
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TBool CGlxTv::IsHDMIConnected() const
-    {
-    TRACER("CGlxTv::IsHDMIConnected()");
-    return iTvConnectionMonitor->IsHDMIConnected();
-    }
-    
-//-----------------------------------------------------------------------------
-// Is the TV widescreen
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TBool CGlxTv::IsWidescreen() const
-    {
-    TRACER("CGlxTv::IsWidescreen()");
-    return iAspectRatio == KGlxTvAspectWide;
-    }
-    
-    
-//-----------------------------------------------------------------------------
-// From class MGlxWindowVisibilityObserver.
-// Called when window becomes fully visible or not visible.
-//-----------------------------------------------------------------------------
-//
-void CGlxTv::HandleWindowVisibilityChangedL( TTvChangeType aChangeType )
-    {
-    TRACER("CGlxTv::HandleWindowVisibilityChangedL()");
-    iTvObserver.HandleTvStatusChangedL( aChangeType );
-    }
-    
-    
-    
-//-----------------------------------------------------------------------------
-// From class MGlxTvConnectionObserver.
-// Called when TV connection state changes
-//-----------------------------------------------------------------------------
-//
-void CGlxTv::HandleTvConnectionStatusChangedL( )
-    {
-    TRACER("CGlxTv::HandleTvConnectionStatusChangedL()");
-
-    if ( iTvConnectionMonitor->IsConnected() )
-        {
-        // Start monitoring the environment for changes
-        MonitorEnvironmentL();
-        // Calculate the TV Out screen buffer
-        CalcTvScreenSzL();
-        }
-    else
-        {
-        StopMonitoringEnvironment();
-        }
-    iTvObserver.HandleTvStatusChangedL( ETvConnectionChanged );
-    }
-    
-        
-   
-//-----------------------------------------------------------------------------
-// Retrieve the TV display aspect ratio
-//-----------------------------------------------------------------------------
-//
-void CGlxTv::CalcTvScreenSzL()
-    {
-    TRACER("CGlxTv::CalcTvScreenSzL()");
-
-    // Retrieve the aspect ratio and the settings info from CenRep        
-    iAspectRatio  = KErrNotFound;
-   
-#ifdef __MARM
-    CGSServerEngine* aGSServerEngine = CGSServerEngine::NewLC();
-    iAspectRatio = aGSServerEngine->AspectRatioL();
-    CleanupStack::Pop(aGSServerEngine);
-	User::LeaveIfError( iAspectRatio );
-#else
-	iAspectRatio = 0;
-#endif
-    // note: Constants are defined in the GSServerEngine.cpp and not exported
-    // they are defined locally in glxtvconstants.h
-    switch( iAspectRatio )
-        {
-        case KGlxTvAspectWide:
-            {
-            iSzInPixels = TSize ( KGlxTvOutWidthWide, KGlxTvOutHeightWide) ;
-            break;
-            }
-        case KGlxTvAspectNormal:
-            {
-            iSzInPixels = TSize ( KGlxTvOutWidth, KGlxTvOutHeight );
-            break;
-            }
-        default:
-            {
-            User::Leave(KErrUnknown);
-            }
-        }
-	}
-    
-
-//-----------------------------------------------------------------------------
-// From class MonitorEnvironmentL.
-// Called when TV connection state changes to connected
-//-----------------------------------------------------------------------------
-//
-void CGlxTv::MonitorEnvironmentL()
-    {
-    TRACER("CGlxTv::MonitorEnvironmentL()");
-  
-    // Instantiate the central repository
-    if (!iCenRep)
-        {
-        // The Uid is hardcoded here as the hrh file giving us the Uid has been depricated and 
-        // moved to a private folder
-        iCenRep = CRepository::NewL( KCRUidTvoutSettings );
-        }
-    
-    // Monitor changes to the aspect ratio in the central repository
-    if (!iTvDisplayAspectRatioMonitor)    
-        {
-        iTvDisplayAspectRatioMonitor 
-                    = CGlxTvOutCenRepMonitor::NewL( iTvObserver, *iCenRep );
-        }
-    
-    // create window visibility monitoring object
-    if ( !iWindowVisibilityMonitor )
-        {
-        iWindowVisibilityMonitor = 
-                                CGlxWindowVisibilityMonitor::NewL( *this );
-        }
-    }
-
-    
-//-----------------------------------------------------------------------------
-// StopMonitoringEnvironment().
-// Called when TV connection state changes to disconnected
-//-----------------------------------------------------------------------------
-//
-void CGlxTv::StopMonitoringEnvironment()
-    {
-    TRACER("CGlxTv::StopMonitoringEnvironment()");
-    delete iTvDisplayAspectRatioMonitor; // destroy before iCenRep - must cancel 
-    iTvDisplayAspectRatioMonitor = NULL; // outstanding requests
-    if (iWindowVisibilityMonitor)
-        {
-        iWindowVisibilityMonitor->Close();
-        }
-    delete iWindowVisibilityMonitor;
-    iWindowVisibilityMonitor = NULL;
-    delete iCenRep;
-    iCenRep = NULL;
-    }
-
-    
-// End of file