diff -r 2717213c588a -r 171fae344dd4 windowing/windowserver/tman/TMMODCHG.CPP --- a/windowing/windowserver/tman/TMMODCHG.CPP Tue Jun 22 15:21:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,301 +0,0 @@ -// Copyright (c) 1996-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: -// Test modifier changed message -// -// - -#include -#include -#include "W32STD.H" -#include "../tlib/testbase.h" -#include "TMAN.H" - -class CTModifiersChangedTest; - -class CMCWindow : public CTWin - { -public: - CMCWindow(CTModifiersChangedTest *aTest); - void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); - void Draw(); - void DrawModSetLine(const TDesC &aDes,TInt aModifier,TInt iSettableModifiers); -protected: - CTModifiersChangedTest *iTest; - TRgb iBack; - TInt iLineHeight; - TInt iFontAscent; - TInt iYpos; - TInt iXpos1; - TInt iXpos2; - }; - -class CTEventWindowGroup : public CTWindowGroup - { -public: - CTEventWindowGroup(CTClient *aClient, CTModifiersChangedTest *iTest); - void ConstructL(); - void ModifiersChanged(const TModifiersChangedEvent &aModifiersChanged ,const TTime &aTime); - void KeyL(const TKeyEvent &aKey,const TTime &aTime); -private: - CTModifiersChangedTest *iTest; - }; - -class CTModifiersChangedTest : public CTestBase - { -public: - CTModifiersChangedTest(); - ~CTModifiersChangedTest(); - TestState DoTestL(); - void ConstructL(); - void EndTest(); - TInt SubState() const; - void IncSubState(); - void BadParams(); - void ModifierChangedEventsL(); - void SetModifiersL(); - void CheckModifierL(TEventModifier aModifier); -public: - TBool iModSetTest; - TInt iSettable; -private: - TSize iWinSize; - TInt iState; - TInt iSubState; - CTEventWindowGroup *iEventGroup; - CMCWindow *iWin; - }; - -struct TModifierChangedTestsParams - { - TText *txt; // Text message telling user what to do - TUint changed; - TUint state; - TUint stateMask; - }; - -LOCAL_D TModifierChangedTestsParams ModifierChangedTests[]={ -#if defined(__WINS__) - {(TText *)_S("Press Caps"),EModifierCapsLock,EModifierCapsLock,EModifierCapsLock}, - {(TText *)_S("Press Caps (again)"),EModifierCapsLock,0,EModifierCapsLock}, -#endif - {(TText *)_S("Press left shift"),EModifierShift|EModifierLeftShift,EModifierShift|EModifierLeftShift,EModifierShift|EModifierLeftShift}, - {(TText *)_S("Release left shift"),EModifierShift|EModifierLeftShift,0,EModifierShift|EModifierLeftShift}, - {(TText *)_S("Press right shift"),EModifierShift|EModifierRightShift,EModifierShift|EModifierRightShift,EModifierShift|EModifierRightShift}, - {(TText *)_S("Release right shift"),EModifierShift|EModifierRightShift,0,EModifierShift|EModifierRightShift}, - {(TText *)_S("Press (left) func"),EModifierFunc|EModifierLeftFunc,EModifierFunc|EModifierLeftFunc,EModifierFunc|EModifierLeftFunc}, - {(TText *)_S("Release (left) func"),EModifierFunc|EModifierLeftFunc,0,EModifierFunc|EModifierLeftFunc}, - {(TText *)_S("Press (left) control"),EModifierCtrl|EModifierLeftCtrl,EModifierCtrl|EModifierLeftCtrl,EModifierCtrl|EModifierLeftCtrl}, - {(TText *)_S("Release (left) control"),EModifierCtrl|EModifierLeftCtrl,0,EModifierCtrl|EModifierLeftCtrl}, - }; - -const TInt numTests=sizeof(ModifierChangedTests)/sizeof(ModifierChangedTests[0]); - -GLDEF_C CTestBase *CreateModifiersChangedTest() - { - return(new(ELeave) CTModifiersChangedTest()); - } - -// -// CTEventWindowGroup class // -// - -CTEventWindowGroup::CTEventWindowGroup(CTClient *aClient, CTModifiersChangedTest *aTest) : CTWindowGroup(aClient), iTest(aTest) - {} - -void CTEventWindowGroup::ConstructL() - { - CTWindowGroup::ConstructL(); - iGroupWin.EnableModifierChangedEvents(EModifierShift|EModifierLeftShift|EModifierRightShift|EModifierCapsLock| - EModifierFunc|EModifierLeftFunc|EModifierCtrl|EModifierLeftCtrl,EEventControlAlways); - } - -void CTEventWindowGroup::ModifiersChanged(const TModifiersChangedEvent &aModifiersChanged ,const TTime &) - { - TInt ss=iTest->SubState(); - TInt getMods=Client()->iWs.GetModifierState(); // Double check the mods with get mods - if (aModifiersChanged.iChangedModifiers==ModifierChangedTests[ss].changed && - (aModifiersChanged.iModifiers&ModifierChangedTests[ss].stateMask)==ModifierChangedTests[ss].state && - (getMods&ModifierChangedTests[ss].stateMask)==ModifierChangedTests[ss].state) - iTest->IncSubState(); - } - -void CTEventWindowGroup::KeyL(const TKeyEvent &aKey,const TTime &) - { - if (aKey.iCode==EKeyEscape || (aKey.iCode==' ' && iTest->iModSetTest)) - iTest->EndTest(); - } - -// -// CMCWindow, class // -// - -CMCWindow::CMCWindow(CTModifiersChangedTest *aTest) : CTWin(), iTest(aTest) - { - iBack=TRgb::Gray256(230); - } - -void CMCWindow::SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc) - { - ConstructExtLD(*parent,pos,size); - iWin.SetBackgroundColor(iBack); - Activate(); - AssignGC(aGc); - iLineHeight=iFont->HeightInPixels()*5/4; - iFontAscent=iFont->AscentInPixels(); - iXpos1=4; - iXpos2=iXpos1+12*iFont->TextWidthInPixels(_L("M")); - } - -void CMCWindow::DrawModSetLine(const TDesC &aDes,TInt aModifier,TInt iSettableModifiers) - { - iYpos+=iLineHeight; - iGc->DrawText(aDes, TPoint(iXpos1,iYpos)); - iGc->DrawText(aModifier&iSettableModifiers ? _L("Yes"):_L("No"), TPoint(iXpos2,iYpos)); - } - -void CMCWindow::Draw() - { - iGc->Clear(); - if (iTest->iModSetTest) - { - iYpos=iFontAscent+3; - TBuf<32> buf; - buf.Format(TRefByValue(_L("Settable? [0x%4x]")), iTest->iSettable); - iGc->DrawText(_L("Modifier"), TPoint(iXpos1,iYpos)); - iGc->DrawText(buf, TPoint(iXpos2,iYpos)); - DrawModSetLine(_L("Shift"),EModifierShift,iTest->iSettable); - DrawModSetLine(_L("Left Shift"),EModifierLeftShift,iTest->iSettable); - DrawModSetLine(_L("Func"),EModifierFunc,iTest->iSettable); - DrawModSetLine(_L("Caps"),EModifierCapsLock,iTest->iSettable); - DrawModSetLine(_L("NumLock"),EModifierNumLock,iTest->iSettable); - DrawModSetLine(_L("Double Click"),EModifierDoubleClick,iTest->iSettable); - } - else - iGc->DrawText(TPtrC(ModifierChangedTests[iTest->SubState()].txt), TPoint(10,20)); - } - -// - -CTModifiersChangedTest::CTModifiersChangedTest() : CTestBase(_L("Capture Key")) - {} - -CTModifiersChangedTest::~CTModifiersChangedTest() - { - delete iWin; - delete iEventGroup; - } - -void CTModifiersChangedTest::EndTest() - { - if (iModSetTest) - { - iModSetTest=EFalse; - iWin->Invalidate(); - } - Request(); - } - -void CTModifiersChangedTest::ConstructL() - { - iWin=new(ELeave) CMCWindow(this); - iWin->SetUpL(TPoint(10,10),TSize(240,200),Client()->iGroup, *Client()->iGc); - } - -TInt CTModifiersChangedTest::SubState() const - { - return(iSubState); - } - -void CTModifiersChangedTest::IncSubState() - { - if (iSubState==(numTests-1)) - EndTest(); - else - { - iSubState++; - iWin->Invalidate(); - } - } - -void CTModifiersChangedTest::BadParams() - { - } - -void CTModifiersChangedTest::ModifierChangedEventsL() - { - iEventGroup=new(ELeave) CTEventWindowGroup(Client(), this); - iEventGroup->ConstructL(); - } - -void CTModifiersChangedTest::CheckModifierL(TEventModifier aModifier) - { - TInt oldMods=Client()->iWs.GetModifierState(); - Client()->iWs.SetModifierState(aModifier, EToggleModifier); - TInt getMods=Client()->iWs.GetModifierState(); - if (oldMods!=getMods) - { - iSettable|=aModifier; - Client()->iWs.SetModifierState(aModifier, ETurnOffModifier); - getMods=Client()->iWs.GetModifierState(); - TestL(!(getMods&aModifier)); - Client()->iWs.SetModifierState(aModifier, ETurnOnModifier); - getMods=Client()->iWs.GetModifierState(); - TestL(getMods&aModifier); - Client()->iWs.SetModifierState(aModifier, ETurnOffModifier); - getMods=Client()->iWs.GetModifierState(); - TestL(!(getMods&aModifier)); - if (oldMods&aModifier) - Client()->iWs.SetModifierState(aModifier, ETurnOnModifier); - } - else - { - Client()->iWs.SetModifierState(aModifier, ETurnOffModifier); - TestL(oldMods==Client()->iWs.GetModifierState()); - Client()->iWs.SetModifierState(aModifier, ETurnOnModifier); - TestL(oldMods==Client()->iWs.GetModifierState()); - } - } - -void CTModifiersChangedTest::SetModifiersL() - { - iModSetTest=ETrue; - for(TInt mod=1;mod!=0;mod<<=1) - CheckModifierL((TEventModifier)mod); - iWin->Invalidate(); - Client()->iWs.Flush(); - } - -TestState CTModifiersChangedTest::DoTestL() - { - switch(iState) - { - case 0: //The first 2 tests have been converted to TAuto test code. - ModifierChangedEventsL(); - /* iState++; - return(EContinue); - case 1: - LogSubTest(_L("Errors"),1); - BadParams(); - break; - case 2:*/ - LogSubTest(_L("Set modifiers"),1); - SetModifiersL(); - iState++; - return(EContinue); - default: - return(EFinished); - } - //iState++; - //return(ENext); - }