/** 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 <e32def.h>#include <e32base.h>// Internal Includes#include <glxtvconstants.h>// Forward Declarationsclass 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 notificationclass MGlxTvConnectionObserver {public: /** * Handle TV/HDMI/Headset connection state changes * @param aChangeType The connection change type */ virtual void HandleTvConnectionStatusChangedL(TTvChangeType aChangeType) = 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(TTvChangeType aChangeType);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__