diff -r 99ad1390cd33 -r c499df2dbb33 tvout/tvoutengine/inc/glxtv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tvout/tvoutengine/inc/glxtv.h Mon May 03 12:31:32 2010 +0300 @@ -0,0 +1,186 @@ +/* +* 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 + */ + +#ifndef __GLXTV_H__ +#define __GLXTV_H__ + +// External Includes +#include +#include + +// Internal Includes +#include + +// Forward Declarations +class MGlxTvObserver; +class CGlxWindowVisibilityMonitor; +class CGlxTvConnectionMonitor; +class CRepository; + +// For window server visibility notifications +class MGlxWindowVisibilityObserver + { +public: + /** + * Handle changes to the application window visiblity + * Called when window visible state changes + * @param aChangeType The visibility change type + */ + virtual void HandleWindowVisibilityChangedL( TTvChangeType aChangeType ) = 0; + }; + + + +// For Tv connection notification +class MGlxTvConnectionObserver + { +public: + /** + * Handle TV connection state changes + */ + virtual void HandleTvConnectionStatusChangedL( ) = 0; + }; + + + + +/** + * Class Description + * A class that handles and propagates UI change notifications + * @author Loughlin + */ +NONSHARABLE_CLASS (CGlxTv) : public CBase, + public MGlxWindowVisibilityObserver, + public MGlxTvConnectionObserver + { +public: + /** + * Static Symbian 2 stage constructor. + * @param a TvObserver + */ + IMPORT_C static CGlxTv* NewL( MGlxTvObserver& aTvObserver ); + + /** + * Destructor. + */ + IMPORT_C ~CGlxTv(); + +private: + + /** + * Standard C++ constructor + * @param a TvObserver + */ + CGlxTv(MGlxTvObserver& aTvObserver); + + /* + * Symbian second stage construction + */ + void ConstructL(); + +public: // class public method + + /** + * Get the current screen size + * @return the Screen size in pixels + */ + IMPORT_C TSize ScreenSizeL() const; + + /** + * Is the Analog TV Connected + * @return ETrue if active, otherwise EFalse + */ + IMPORT_C TBool IsConnected() const; + + /** + * Is the TV widescreen + * @return ETrue if widescreen, otherwise EFalse + */ + IMPORT_C TBool IsWidescreen() const; + + /** + * Is the HDMI TV Connected + * @return ETrue if active, otherwise EFalse + */ + IMPORT_C TBool IsHDMIConnected() const; + +public: // from MGlxWindowVisibilityObserver + /** + * @ref MGlxWindowVisibilityObserver::HandleWindowVisibilityChangedL + */ + void HandleWindowVisibilityChangedL( TTvChangeType aChangeType ); + + +public: // from MGlxTvConnectionObserver + /** + * @ref MGlxTvConnectionObserver::HandleTvConnectionStatusChangedL + */ + void HandleTvConnectionStatusChangedL( ); + +private: // new private methods + /** + * Retrive the TV Display Aspect Ratio and TV Setting + * Calculate the screen size from aspect ratio and TV type + */ + void CalcTvScreenSzL(); + + /** + * Start monitoring the environment for changes to the TV aspect ratio + * and the Gallery window groups visiblity + */ + void MonitorEnvironmentL(); + + /** + * Stop monitoring the environment for changes to the TV aspect ratio + * and the Gallery window groups visiblity + */ + void StopMonitoringEnvironment(); + +private: // class member data + // Not Owned: The TV out observer + MGlxTvObserver& iTvObserver; + + // Owned: The Window visibility monitor + CGlxWindowVisibilityMonitor* iWindowVisibilityMonitor; + + // Owned: The TV connection monitor + CGlxTvConnectionMonitor* iTvConnectionMonitor; + + // Size of the TV Out display size + TSize iSzInPixels; + + // Owned: The central repository where TV display ratio is held. + CRepository* iCenRep; + + // The implementation of the class, hidden from clients + class CGlxTvOutCenRepMonitor; + + // Owned: Monitoring class for Tv Ratio Values + CGlxTvOutCenRepMonitor* iTvDisplayAspectRatioMonitor; + + // The TV aspect ratio + TInt iAspectRatio; + }; + + +#endif // __GLXTV_H__ \ No newline at end of file