--- /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 <w32std.h>
+
+
+//
+// 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