diff -r 000000000000 -r 2e3d3ce01487 appfw/viewserver/inc/VWSWEVNT.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appfw/viewserver/inc/VWSWEVNT.H Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,120 @@ +// Copyright (c) 1999-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: +// + +#ifndef __VWSWEVNT_H__ +#define __VWSWEVNT_H__ + +#include + + +// +// Forward declarations. +// + +class CVwsServer; + + +/** + * The CVwsWServEventHandler class actively monitors the window server for screen device change notifications. + */ +class CVwsWServEventHandler : public CActive + { +public: + static CVwsWServEventHandler* NewL(CVwsServer& aServer, RWsSession& aWsSession, TBool aIgnoreFirstScreenDeviceChangedEvent); + + ~CVwsWServEventHandler(); + void Queue(); +private: // From CActive. + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); +private: + CVwsWServEventHandler(CVwsServer& aServer, RWsSession& aWsSession, TBool aIgnoreFirstScreenDeviceChangedEvent); + void ConstructL(); +private: + CVwsServer& iServer; + RWsSession& iWsSession; + TBool iIgnoreNextScreenDeviceChangedEvent; + }; + +/** + * The CVwsWServRedrawer class handles redraw events for the window used by the view server to manage WSERV activity + * during view transistions. The window is created in front of normal applications and is put up for the duration of + * a view transistion. The window is transparent for ordinary view switches and opaque for screen orientation changes. + */ +class CVwsWServRedrawer : public CActive + { +public: + static CVwsWServRedrawer* NewL(RWsSession& aWsSession, CWindowGc& aGc, RWindow& aWindow); + ~CVwsWServRedrawer(); + void SetDrawMode(TBool aOpaque); + void Queue(); +private: // From CActive + void RunL(); + void DoCancel(); +private: + void HandleRedrawEvent(const TRect& aRect); + void ConstructL(); + CVwsWServRedrawer(RWsSession& aWsSession, CWindowGc& aGc, RWindow& aWindow); +private: + RWsSession& iWsSession; + CWindowGc& iGc; + RWindow& iWindow; + TBool iOpaque; + }; + +/** + * The CVwsWServSessionHandler class connects to the window server and manages WSERV activity. + * It uses an event handler to detect screen device changes for the view server and puts up a window in front of normal + * applications to manage activity during view transistions. + */ +class CVwsWServSessionHandler : public CBase + { +public: + static CVwsWServSessionHandler* NewL(CVwsServer& aServer); + ~CVwsWServSessionHandler(); + void DisplayWindow(); + void HideWindow(); + void ConfigureScreenDevice(); + TInt GetScreenMode(); + void UpdateScreenAndDisplayWindow(); + inline RWsSession& WsSession() const; + void SetWindowBackgroundColor(const TRgb& aBgColor); +private: + void ConstructL(); + void CreateWServSessionL(); + CVwsWServSessionHandler(CVwsServer& aServer); + + CVwsWServEventHandler* iWServEventHandler; + CVwsWServRedrawer* iWServRedrawer; + CVwsServer& iServer; + TBool iFirstDisplay; + + RWsSession iWsSession; + CWsScreenDevice* iScreen; + CWindowGc* iGc; + RWindowGroup iRootWin; + RWindow* iWindow; + }; + + +// +// Inlines +// + +inline RWsSession& CVwsWServSessionHandler::WsSession() const + { return((RWsSession&)iWsSession); } + +#endif