graphicstest/uibench/s60/src/windows/tflowwindowscontroller.h
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/uibench/s60/src/windows/tflowwindowscontroller.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,104 @@
+// Copyright (c) 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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+#ifndef TFLOWINDOWSCONTROLLER_H
+#define TFLOWINDOWSCONTROLLER_H
+
+
+#include "twindow.h"
+
+
+class CSurfaceUtility;
+
+
+/**
+ * Creates and manages the windows and moves them around.
+ * It uses function pointers to create the windows.
+ * 
+ */
+class CTFlowWindowsController : public CBase
+    {
+public:    
+    virtual ~CTFlowWindowsController();
+    static CTFlowWindowsController* NewL (TBool aPreload, RArray<TPtrC>& aFileNames, 
+										  TSize& aWindowSize, RArray<pTWindowCreatorFunction>& aNewLs,
+										  RArray<TPoint>& aInitialPositions, TBool aBouncing,
+										  TBool aMoveHorizontal = ETrue);
+
+    inline TInt NumberOfWindows() const;
+    inline void SetFlowRate(TInt aFlowRate);
+    
+	void Rotate(CFbsBitGc::TGraphicsOrientation aOrientation);
+	void SetWindowsVisibility(TBool aVisible);
+	
+	virtual void MoveL();
+	
+protected:
+    CTFlowWindowsController(TInt aNumWindows, TBool aPreload, TSize& aWindowSize, TBool aBouncing, TBool aMoveHorizontal);
+    void ConstructL(RArray<TPtrC>& aFileNames, RArray<pTWindowCreatorFunction>& aNewLs, RArray<TPoint>& aInitialPositions);
+	void SubmitUpdateL();
+	
+protected:
+	RWsSession              iWs;
+	RWindowGroup            iWinGroup;
+	CWsScreenDevice*        iScreenDev;
+	CSurfaceUtility*        iUtility;
+
+	RArray<CTWindow*>       iFlowWindows;
+	RArray<TPtrC>           iFileNames;
+	
+	RRegion                 iWindowsRegion;
+	    
+	TSize                   iWindowSize;
+	TRect                   iScreenRect;
+	TBool                   iPreload;
+	TInt                    iNumWindows;
+	TInt                    iDeltaX;
+	TInt                    iDeltaY;
+	TBool                   iBouncing;
+    };
+
+
+inline TInt CTFlowWindowsController::NumberOfWindows() const
+    {
+    return iNumWindows;
+    }
+
+/**
+    Sets the rate at which the images are scrolled.
+    
+    @param aSpeed The number of pixels to move the image each cycle.
+    */
+inline void CTFlowWindowsController::SetFlowRate(TInt aFlowRate)
+    {
+    if (iDeltaX > 0)
+        {
+        iDeltaX = aFlowRate;
+        }
+    else 
+        {
+        iDeltaY = aFlowRate;
+        }
+    }
+
+
+
+#endif /*TFLOWINDOWSCONTROLLER_H*/