--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appfw/uiftestfw/src/appfwk_test_AppUi.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,288 @@
+// Copyright (c) 2005-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
+*/
+
+
+#include <techview/eikmenub.h>
+#include <techview/eikbtgpc.h>
+#include <eikenv.h>
+#include <hal.h>
+
+#include "appfwk_test_AppUi.h"
+
+
+EXPORT_C void PreallocateHALBuffer()
+ {
+ HAL::SEntry* pE=NULL;
+ TInt entries=0;
+ HAL::GetAll(entries, pE);
+ User::Free(pE);
+ }
+
+EXPORT_C void CloseAllPanicWindowsL()
+ {
+ RWsSession ws;
+ User::LeaveIfError(ws.Connect());
+
+ TInt wgFocus = ws.GetFocusWindowGroup();
+
+ const TUint32 ENullWsHandle = 0xFFFFFFFF; // Events delivered to this handle are thrown away
+ RWindowGroup wg = RWindowGroup(ws);
+
+ wg.Construct(ENullWsHandle);
+ TInt wgId = wg.Identifier();
+
+ TWsEvent event;
+ event.SetType(EEventKey);
+ TKeyEvent *keyEvent = event.Key();
+ keyEvent->iCode = EKeyEscape;
+ keyEvent->iScanCode = EStdKeyEscape;
+ keyEvent->iModifiers = 0;
+
+ TInt limit = 0;
+ for(limit = 0; wgFocus != wgId && (limit < 50); limit++)
+ {
+ ws.SendEventToAllWindowGroups(event);
+ wgFocus = ws.GetFocusWindowGroup();
+ RDebug::Print(_L("CloseAllPanicWindowsL() - EKeyEscape sent to Windows Group"));
+ }
+
+ // close everything
+ wg.Close();
+ ws.Close();
+ }
+
+
+EXPORT_C CAutoTestManager::CAutoTestManager(MAutoTestApp* aAutoTestApp) :
+ CActive(EPriorityIdle), iAutoTestApp(aAutoTestApp)
+ {
+ }
+
+
+EXPORT_C CAutoTestManager::~CAutoTestManager()
+ {
+ Cancel();
+ }
+
+
+EXPORT_C CAutoTestManager* CAutoTestManager::NewL(MAutoTestApp* aAutoTestApp)
+ {
+ CAutoTestManager *theTestManager=new (ELeave) CAutoTestManager(aAutoTestApp);
+ CActiveScheduler::Add(theTestManager);
+ return theTestManager;
+ }
+
+
+void CAutoTestManager::RunL()
+ {
+ __ASSERT_DEBUG(iAutoTestApp, User::Panic(KPanicNullPointer, KNullPointer));
+ iAutoTestApp->RunTestStepL(++iNumStep);
+ StartAutoTest();
+ }
+
+
+void CAutoTestManager::DoCancel()
+ {
+ }
+
+
+/**
+ Init active object and set it active
+ */
+EXPORT_C void CAutoTestManager::StartAutoTest()
+ {
+ TRequestStatus *pS=(&iStatus);
+ User::RequestComplete(pS,0);
+ SetActive();
+ }
+
+
+/**
+ This function must be called after all test cases will be completed
+ */
+EXPORT_C void CAutoTestManager::FinishAllTestCases(TTestResult aResult)
+ {
+ iResult = aResult;
+ if(aResult != EPass)
+ {
+ RDebug::Print(_L("\nTest completed with error %d"), aResult);
+ }
+ CCoeEnv::Static()->Flush();
+ CBaActiveScheduler::Exit();
+ }
+
+
+/**
+ This function will set the internal test state variable to the user defined state.
+ */
+EXPORT_C void CAutoTestManager::SetTestCaseNumber(TInt aNumber)
+ {
+ iNumStep = aNumber;
+ }
+
+
+EXPORT_C CTestCoeAppUi::CTestCoeAppUi(CTmsTestStep* aStep) :
+ iStep(aStep)
+ {
+ }
+
+
+EXPORT_C CTestCoeAppUi::~CTestCoeAppUi()
+ {
+ if(iAutoTestManager)
+ {
+ iAutoTestManager->Cancel();
+ }
+ delete iAutoTestManager;
+ }
+
+
+/**
+ Read thread local storage read and free thread local storage STL is used for storage Auto attribute,
+ it sets in an export function void ProcessParam(TAny* aParam)
+ */
+EXPORT_C void CTestCoeAppUi::ConstructL()
+ {
+ iAutoTestManager = CAutoTestManager::NewL(this);
+
+ CCoeAppUi::ConstructL();
+ }
+
+
+EXPORT_C CTestAppUi::CTestAppUi(CTmsTestStep* aStep, const TDesC& aRes, TInt aResourceHotKeysId, TInt aResourceMenuBarId, TInt aResourceToolBarId) :
+ CEikAppUi(),
+ iResourceHotKeysId(aResourceHotKeysId),
+ iResourceMenuBarId(aResourceMenuBarId),
+ iResourceToolBarId(aResourceToolBarId),
+ iStep(aStep)
+ {
+ iRes.Copy(aRes);
+ }
+
+
+EXPORT_C CTestAppUi::~CTestAppUi()
+ {
+ if(iResourceFileFlag)
+ {
+ CCoeEnv::Static()->DeleteResourceFile(iResourceFileFlag);
+ }
+
+ if(iAutoTestManager)
+ {
+ iAutoTestManager->Cancel();
+ }
+ delete iAutoTestManager;
+
+ if(iMenuBar)
+ {
+ RemoveFromStack(iMenuBar);
+ }
+ delete iMenuBar;
+
+ if(iToolBar)
+ {
+ RemoveFromStack(iToolBar);
+ }
+ delete iToolBar;
+ }
+
+
+/**
+ Load resource, create toolbar & menubar, read and free thread local storage
+ */
+EXPORT_C void CTestAppUi::ConstructL()
+ {
+ iAutoTestManager = CAutoTestManager::NewL(this);
+
+ if(iStep == 0)
+ {
+ BaseConstructL(ENoAppResourceFile);
+ }
+ else
+ {
+ CCoeAppUi::ConstructL();
+ }
+
+ if(iRes.Length() > 0)
+ {
+ CCoeEnv* coeEnv = CCoeEnv::Static();
+ TBuf8<256> buf;
+ buf.Copy(iRes);
+ iResourceFileFlag=coeEnv->AddResourceFileL(iRes);
+ }
+
+ if(iResourceMenuBarId)
+ {
+ iMenuBar = new (ELeave) CEikMenuBar;
+ iMenuBar->ConstructL(this,iResourceHotKeysId,iResourceMenuBarId);
+ iMenuBar->MakeVisible(ETrue);
+ AddToStackL(iMenuBar);
+ }
+
+ if(iResourceToolBarId)
+ {
+ iToolBar=CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::EToolbar, CEikButtonGroupContainer::EVertical, this, iResourceToolBarId);
+ const TRect boundingRect = ClientRect(); // make toolband stretch to the screen width by default
+ iToolBar->SetBoundingRect(boundingRect);
+ iToolBar->MakeVisible(ETrue);
+ AddToStackL(iToolBar);
+ }
+ }
+
+
+/**
+ Reduce client rectangle
+ */
+EXPORT_C void CTestAppUi::ReduceRect(TRect& aRect) const
+ {
+ if(iMenuBar)
+ {
+ iMenuBar->ReduceRect(aRect);
+ }
+
+ if(iToolBar)
+ {
+ iToolBar->ReduceRect(aRect);
+ }
+ }
+
+
+/**
+ Hide menu from screen and pass on to the parent method
+ */
+EXPORT_C void CTestAppUi::ProcessCommandL(TInt aCommand)
+ {
+ if (iMenuBar && iMenuBar->IsVisible())
+ {
+ iMenuBar->StopDisplayingMenuBar();
+ }
+ if(aCommand != EEikCmdCanceled)
+ {
+ CEikAppUi::ProcessCommandL(aCommand);
+ }
+ }
+
+
+TInt E32Dll()
+ {
+ return 0;
+ }
+
+