/*
* 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: This file contains the header file of the ConsoleUI.
*
*/
#ifndef CONSOLE_UI_H
#define CONSOLE_UI_H
// INCLUDE
#include <e32std.h>
#include <e32base.h>
#include <e32twin.h>
#include <stifinternal/UIStoreIf.h>
#include <stifinternal/UIStore.h>
#include <stifinternal/UIEngine.h>
#include "CallBack.h"
#include "TestModuleInfo.h"
#include "ConsoleMenus.h"
// CONSTANTS
const TInt KMaxLineLength = 80; // Longest supported line length
const TInt KScrollPeriod = 300000; // Scrolling speed
// MACROS
// DATA TYPES
// Case state
// Menu update type
enum TConsoleUIPanic
{
EInvalidCaseCompletion,
};
// FUNCTION PROTOTYPES
// FORWARD DECLARATIONS
class CMenu;
class CConsoleMain;
class CConsoleReader;
class CMenuDialog;
// CLASS DECLARATION
// DESCRIPTION
// CModule contains a test module data
class CScrollerTimer
:public CActive
{
public: // Enumerations
// None
private: // Enumerations
public: // Constructors and destructor
/**
* NewL is first phase of two-phased constructor.
*/
static CScrollerTimer* NewL( CConsoleMain* aMain );
/**
* Destructor of CModule.
*/
~CScrollerTimer();
public: // New functions
/**
* StartL
*/
void StartL();
/**
* RunL
*/
void RunL();
/**
* DoCancel
*/
void DoCancel();
/**
* RunError
*/
TInt RunError ( TInt aError );
public: // Functions from base classes
protected: // New functions
// None
protected: // Functions from base classes
// None
private:
/**
* C++ default constructor.
*/
CScrollerTimer();
/**
* By default Symbian OS constructor is private.
*/
void ConstructL( CConsoleMain* aMain );
public: //Data
// None
protected: // Data
// None
private: // Data
CConsoleMain* iMain; // Pointer to main console
RTimer iTimer;
public: // Friend classes
// None
protected: // Friend classes
// None
private: // Friend classes
// None
};
// DESCRIPTION
// Console UI main class
class CConsoleMain
:public CUIStoreIf
{
public: // Enumerations
// None
private: // Enumerations
enum TStartCasesOnStart
{
EStartCaseNo = 0,
EStartSingleCase,
EStartCasesSeq,
EStartCasesPar,
};
public: // Constructors and destructor
/**
* NewL is first phase of two-phased constructor.
*/
static CConsoleMain* NewL();
/**
* Start
*/
TInt StartL();
/**
* Destructor of CConsoleMain.
*/
~CConsoleMain();
public: // New functions
/**
* Receives output update notification from CUIStore.
*/
void Update( CStartedTestCase* aTestCase,
TInt aFlags );
/**
* Function is called when test framework prints error.
*/
void Error( TErrorNotification& aError );
/**
* Function is called when testframework
* wants to print a popup window.
*/
TInt PopupMsg( const TDesC& aLine1,
const TDesC& aLine2,
TInt aTimeInSecs );
/**
* Function is called when testframework
* wants to print a popup window and
* get the key pressed.
*/
TInt PopupMsg( const TDesC& aLine1,
const TDesC& aLine2,
TInt aTimeInSecs,
TKeyCode& aKey,
TRequestStatus& aStatus );
/**
* Close instance.
*/
void Close( TInt aHandle );
/**
* Console UI panic function
*/
static void Panic( TConsoleUIPanic aPanic );
/**
* Return pointer to console
*/
RConsole* GetConsole();
/**
* Called from timer to perform scrolling
*/
void TimerUpdate();
/**
* Process keystokes.
*/
void KeyPressed();
TKeyCode mapKey();
/**
* Displays no memory error message and closes ConsoleUI
*/
void ExitWithNoMemoryErrorMessage();
/**
* Returns MainMenu of console
*/
CMainMenu* GetMainMenu();
/**
* Get filter array for reading purpose
*/
const RPointerArray<TDesC>& GetFilterArray(void) const;
/**
* Set info about which index filter is used
*/
void SetFilterIndex(TInt aFilterIndex);
/**
* Get info about which index filter is used
*/
TInt GetFilterIndex(void);
public: // Functions from base classes
protected: // New functions
// None
protected: // Functions from base classes
// None
private:
/**
* C++ default constructor.
*/
CConsoleMain();
/**
* By default Symbian OS constructor is private.
*/
void ConstructL();
/**
* Print error from ConsoleUI.
*/
void UiError( const TDesC& aInfo );
/**
* Process command line parameters.
*/
void ProcessCommandlineL( TFileName& aIniFile );
/**
* Parse and search for module info and fill list of modules.
*/
void ParseTestModulesL(CStifParser* aParser, CTestModuleList* aModuleList, const TDesC& aSectionStart, const TDesC& aSectionEnd);
public: //Data
RPointerArray<CMenuDialog> iDialogs;
TConsoleKey key;
protected: // Data
// None
private: // Data
//CConsoleBase* iConsole; // Pointer to console
RConsole iConsole; // Pointer to console
TBool rConsoleCreated;
CMenu* iMainMenu; // Root menu
CMenu* iCurrentMenu; // Current menu
CScrollerTimer* iScroller;
CConsoleReader* iReader; // Console reader
// For starting runnning multiple cases upon start
TStartCasesOnStart iStartCases;
HBufC* iTestModule;
HBufC* iTestModuleIni;
HBufC* iTestCaseFile;
TInt iTestCaseNum;
HBufC* iTestSetName;
// List of found modules (included from module given in parameters)
CTestModuleList* iModuleList;
// List of filters (for test cases title)
RPointerArray<TDesC> iFilters;
// Chosen filter index
TInt iChosenFilterIndex;
public: // Friend classes
// None
protected: // Friend classes
// None
private: // Friend classes
// None
};
// DESCRIPTION
// Read keystrokes from console
class CConsoleReader
:public CActive
{
public: // Enumerations
// None
private: // Enumerations
// None
public: // Constructors and destructor
/**
* NewL is first phase of two-phased constructor.
*/
static CConsoleReader* NewL( CConsoleMain* aMain,
//CConsoleBase* aConsole );
RConsole* aConsole );
/**
* Start
*/
void StartL();
/**
* Destructor of CConsoleReader.
*/
~CConsoleReader();
public: // New functions
public: // Functions from base classes
/**
* RunL derived from CActive handles the completed requests.
*/
void RunL();
/**
* DoCancel derived from CActive handles the Cancel
*/
void DoCancel();
/**
* RunError derived from CActive handles errors from active object
*/
virtual TInt RunError(TInt aError);
protected: // New functions
// None
protected: // Functions from base classes
// None
private:
/**
* C++ default constructor.
*/
CConsoleReader( CConsoleMain* aMain,
//CConsoleBase* iConsole );
RConsole* iConsole );
/**
* By default Symbian OS constructor is private.
*/
void ConstructL();
public: //Data
// None
protected: // Data
// None
private: // Data
//CConsoleBase* iConsole; // Pointer to console
RConsole* iConsole; // Pointer to console
CConsoleMain* iMain; // Backpointer
public: // Friend classes
// None
protected: // Friend classes
// None
private: // Friend classes
// None
};
#endif // CONSOLEUI_H
// End of File