sl@0: // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent - Internal Symbian test code sl@0: */ sl@0: sl@0: #ifndef __TPOINTER_H__ sl@0: #define __TPOINTER_H__ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include "../tlib/testbase.h" sl@0: #include "AUTO.H" sl@0: #include "TGraphicsHarness.h" sl@0: sl@0: class CTPointer; sl@0: class CGrabWindow; sl@0: sl@0: class CPointerWindow : public CTWin sl@0: { sl@0: enum {KRepeatMargin=200000}; // 0.2 Seconds sl@0: enum {KRepeatCount=4}; sl@0: enum {KRepeatIntervalIncrements=100000}; sl@0: enum {KRepeatRectXExtra=50}; sl@0: enum {KRepeatRectYExtra=50}; sl@0: enum {KStateWaitingForTest1,KStateFailed,KStateTesting1, sl@0: KStateWaitingForTest2,KStateTesting2, sl@0: KStateWaitingForTest3,KStateTesting3, sl@0: KStateWaitingForTest4,KStateTesting4, sl@0: KStateWaitingForTest5,KStateTesting5, sl@0: KStateWaitingForTest6,KStateTesting6, sl@0: KStateWaitingForTest8,KStateTesting8, sl@0: KStateWaitingForTest7,KStateTesting7, sl@0: KStateFinished}; sl@0: public: sl@0: CPointerWindow(CTPointer *aTest); sl@0: void SetUpLD(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); sl@0: void Draw(); sl@0: void StartNextRepeatTest(); sl@0: void QueueNextRepeat(); sl@0: void PointerL(const TPointerEvent &aPointer,const TTime&); sl@0: void WinKeyL(const TKeyEvent &aKey,const TTime &aTime); sl@0: private: sl@0: void SwitchOn(const TTime &); sl@0: void ResetTest(TInt aState); sl@0: void SetState(TInt aState); sl@0: void FinishedTests(); sl@0: void TestFailed(TBool aRetest=EFalse); sl@0: void SendEvent(); sl@0: private: sl@0: CTPointer *iTest; sl@0: TInt iRepeatCount; sl@0: TInt iState; sl@0: TTimeIntervalMicroSeconds32 iInterval; sl@0: TTime iPrevTime; sl@0: TRect iRepeatRect; sl@0: TPoint iTl; sl@0: TSize iSize; sl@0: }; sl@0: sl@0: class CGrabWindow2 : public CTWin sl@0: { sl@0: public: sl@0: CGrabWindow2(CGrabWindow *aWindow); sl@0: void SetUpLD(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); sl@0: private: sl@0: void Draw(); sl@0: void PointerL(const TPointerEvent &aPointer,const TTime&); sl@0: private: sl@0: CGrabWindow *iGrabWindow; sl@0: }; sl@0: sl@0: class CGrabWindow : public CTWin sl@0: { sl@0: enum {KGrabStateWaitingForDown,KGrabStateWaitingForDragOut,KGrabStateWaitingForUp,KGrabStateFinished, sl@0: KGrabStateWaitingForDown2,KGrabStateWaitingForUp2a,KGrabStateWaitingForDrag2,KGrabStateWaitingForUp2b, sl@0: KGrabStateWaitingForDown3,KGrabStateWaitingForUp3a,KGrabStateWaitingForUp3b, sl@0: KGrabStateWaitingForDown4,KGrabStateWaitingForUp4, sl@0: KGrabStateWaitingForDown5,KGrabStateWaitingForUp5,KGrabStateWaitingForDrag5, sl@0: KStateFailed}; sl@0: public: sl@0: CGrabWindow(CTPointer *aTest); sl@0: void Pointer2(const TPointerEvent &aPointer); sl@0: void SetUpLD(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); sl@0: void WinKeyL(const TKeyEvent &aKey,const TTime &aTime); sl@0: private: sl@0: void Draw(); sl@0: void SetState(TInt aState); sl@0: void ResetTest(); sl@0: void PointerL(const TPointerEvent &aPointer,const TTime&); sl@0: void TestFailed(); sl@0: void FinishedTests(); sl@0: void SendEvent(); sl@0: private: sl@0: TInt iState; sl@0: CTPointer *iTest; sl@0: TPoint iTl; sl@0: TSize iSize; sl@0: }; sl@0: sl@0: sl@0: class CTPointer : public CTWsGraphicsBase sl@0: { sl@0: public: sl@0: enum {KTimeOutAfter=20000000}; //20secs sl@0: public: sl@0: CTPointer(CTestStep* aStep); sl@0: ~CTPointer(); sl@0: void ConstructL(); sl@0: sl@0: TBool TestFailed(TInt aCase,TBool aRetry=EFalse); sl@0: void StartGrabTestL(); sl@0: static TInt TimeOut(TAny* aTest); sl@0: void TimeOut(); sl@0: CGrabWindow2 *GrabWin2() const; sl@0: inline TBool Digitiser() const {return !iNoDigitiser;} sl@0: inline void SimulatePointer(TRawEvent::TType aType, TInt aX, TInt aY){iTest->SimulatePointer(aType, aX, aY);} sl@0: inline void SimulateEvent(TRawEvent::TType aType){iTest->SimulateEvent(aType);} sl@0: protected: sl@0: virtual void RunTestCaseL(TInt aCurTestCase); sl@0: private: sl@0: TInt doTestFailedL(); sl@0: inline TestClient* Client() {return TheClient;} sl@0: TInt iState; sl@0: sl@0: private: sl@0: CTimeOut* iTimeOut; sl@0: TInt iTimeOutCount; sl@0: CPointerWindow *iRepeatWin; sl@0: CGrabWindow *iGrabWin; sl@0: CGrabWindow2 *iGrabWin2; sl@0: TSize iWinSize; sl@0: //TInt iState; sl@0: TBool iOldPointerState; sl@0: TBool iNoDigitiser; sl@0: }; sl@0: sl@0: sl@0: class CTPointerStep : public CTGraphicsStep sl@0: { sl@0: public: sl@0: CTPointerStep(); sl@0: protected: sl@0: //from CTGraphicsStep sl@0: virtual CTGraphicsBase* CreateTestL(); sl@0: }; sl@0: sl@0: _LIT(KTPointerStep,"TPointer"); sl@0: sl@0: sl@0: #endif