diff -r 5a06f39ad45b -r 80975da52420 mmserv/sts/tsrc/ststester/src/testappbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmserv/sts/tsrc/ststester/src/testappbase.h Mon May 03 12:59:52 2010 +0300 @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2010 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: + * Header specifying the common test functionality. + */ + +#ifndef TESTAPPBASE_H_ +#define TESTAPPBASE_H_ + +#include +#include +#include // for volume key handling +class CRemConCoreApiTarget; +class CRemConInterfaceSelector; + +#define STR(a) (TText*)L##a + +// 15 keys are supported. The keys are in this order: +// Enter, Up, Down, Left, Right, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 +const TInt KSupportedKeysCount = 15; + +struct TOperationEntry + { + const TText* text; + TInt operation; + }; + +struct TOperationsPage + { + const TText* pageName; + TInt defaultSoftkeyIndex; + TOperationEntry mapping[KSupportedKeysCount]; + }; + +// Predefined standard operations +const TInt KOperation_None = 0; +const TInt KOperation_Exit = 1; +const TInt KOperation_PreviousOptionPage = 2; +const TInt KOperation_NextOptionPage = 3; +const TInt KOperation_NextOption = 4; +const TInt KOperation_PreviousOption = 5; +const TInt KOperation_ExecuteOption = 6; +const TInt KOperation_ToggleHelpVisibility = 7; +const TInt KOperation_ToggleHelpTransparency = 8; +const TInt KOperation_FirstCustomIndex = 10; // app-specific operations can start here + +const TUint32 KNullWsHandle = 0xFFFFFFFF; + +class CTestAppBase : public CActive, private MRemConCoreApiTargetObserver + { +public: + + CTestAppBase(TInt aFontSize); + + ~CTestAppBase(); + + // inherited from CActive + void RunL(); + void DoCancel(); + +protected: + + virtual void ExecuteOperation(TInt aOperation, + const TDesC& aOperationText) = 0; + + // Subclasses can override this function to take action when the current softkey function has been changed. + virtual void SoftkeyFunctionUpdated() + { + } + ; + + // Subclasses can override this function to override the default key event handling. + virtual bool ConsumeKeyEvent(TInt /*aScanCode*/) + { + return false; + } + ; + + void BaseConstructL(const TOperationsPage* aKeyMap, TInt aPageCount); + + void SetupVolumeKeysL(); + + void StartMonitoringWindowEvents(); + + TInt CurrentPageNumber(); + + TPtrC CurrentPageName(); + + TPtrC CurrentSoftkeyName(); + + // Presents a selection list to the user and returns the index of the selected entry. + // Synchronous call. + // returns -1 if the selection was backed out without making a selection + TInt SelectFromListL(TPoint aTopLeft, TSize aSize, + const TDesC& aHeaderText, RPointerArray& aSelectionList, + TInt aInitialSelectionIndex = 0); + + // Synchronous call. + // returns false if the selection was backed out without making a selection + bool SelectDriveL(TPoint aTopLeft, TSize aSize, const TDesC& aHeaderText, + TDes& aDrive); + + // Synchronous call. + // returns false if the selection was backed out without making a selection + bool SelectFileL(TPoint aTopLeft, TSize aSize, const TDesC& aHeaderText, + const TDesC& aDrive, TDes& aFullFilename); + + // Synchronous call. + // returns false if the selection was backed out without making a selection + bool SelectFileWithHistoryL(TPoint aTopLeft, TSize aSize, + TDes& aFullFilename, const TDesC& aHistoryFilename, + TInt aMaxHistoryEntries); + + // Synchronous call. + // returns false if the selection was backed out without making a selection + bool SelectIntegerL(TPoint aTopLeft, TSize aSize, + const TDesC& aHeaderText, TInt aMin, TInt aMax, TInt& aSelection); // set aSelection to default value + + // Synchronous call. Returns the scan code of the pressed key. + TInt WaitForAnyKey(); + + const TInt iFontSize; + + RFs iFs; + RWsSession iWs; + CWsScreenDevice* iScreenDevice; + RWindowGroup* iWindowGroup; + CWindowGc* iGc; + CFont* iFont; + CFbsTypefaceStore* iTypefaceStore; + TSize iDisplaySize; + RWindow* iSelectionWindow; + RWindow* iHelpWindow; + +private: + + enum TTestAppPointerEvent + { + EPointerEvent_None, + EPointerEvent_Up, + EPointerEvent_Down, + EPointerEvent_Left, + EPointerEvent_Right, + EPointerEvent_Select + }; + + // inherited from MRemConCoreApiTargetObserver + void MrccatoCommand(TRemConCoreApiOperationId aOperationId, + TRemConCoreApiButtonAction aButtonAct); + + TInt KeyMapOperation(TInt aIndex, TInt aPage); + + TPtrC KeyMapText(TInt aIndex, TInt aPage); + + void IncrementKeymapIndex(TInt& aIndex, TInt aPage); + + void DecrementKeymapIndex(TInt& aIndex, TInt aPage); + + void CalculateHelpWindowSize(); + + void DrawHelpText(); + + void DoSelectFileL(TPoint aTopRight, TSize aWindowSize, + const TDesC& aHeaderText, const TFileName& aDirectory, + TInt aDirectoryLevel, TDes& aSelectedDirectory, + TDes& aSelectedFilename); + + void ReadDirectoryEntriesL(const TFileName& aDirectoryName, + RPointerArray& aFileNames); + + void ReadFileHistory(const TDesC& aHistoryFilename); + + void AddToFileHistory(const TDesC& aFilename, + const TDesC& aHistoryFilename, TInt aMaxHistoryEntries); + + TTestAppPointerEvent CharacterizePointerEvent( + TAdvancedPointerEvent& event); + + const TOperationsPage* iKeyMap; + TInt iPageCount; + TInt iCurrentPage; + TInt iSoftkeyIndex; + RPointerArray iFileHistory; + + CActiveSchedulerWait iWait; + + TPoint iHelpWindowTopRight; + TSize iHelpWindowSize; + TInt iHelpWindowColumn1Width; + TInt iHelpWindowColumn2Width; + bool iHelpActive; + bool iHelpSemitransparentBackgroundActive; + + TPoint iPointerDownPosition; + + // For volume key support + CRemConCoreApiTarget* iCoreTarget; + CRemConInterfaceSelector* iInterfaceSelector; + }; + +#endif // TESTAPPBASE_H_