stif/ConsoleUI/inc/ConsoleMenus.h
changeset 0 a03f92240627
child 12 7e287c5c61f0
equal deleted inserted replaced
-1:000000000000 0:a03f92240627
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 * 
       
    14 * Description: This file contains the header file of the CMenu 
       
    15 * derived classes.
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 #ifndef CONSOLE_MENUS_H
       
    21 #define CONSOLE_MENUS_H
       
    22 
       
    23 
       
    24 //  INCLUDES
       
    25 #include <e32std.h>
       
    26 #include <e32base.h>
       
    27 #include <stifinternal/UIStoreIf.h>
       
    28 #include <stifinternal/UIStoreContainer.h>
       
    29 #include <stifinternal/UIEngineContainer.h>
       
    30 
       
    31 #include "CallBack.h"
       
    32 
       
    33 // CONSTANTS
       
    34 const TInt KMenuOverhead = 4;
       
    35 
       
    36 // Numeric key ascii code values for ConsoleUI's menu
       
    37 const TInt KMyKeyDownAsciiCode = 56; // Ascii code for number '8'
       
    38 const TInt KMyKeyLeftAsciiCode = 52; // Ascii code for number '4'
       
    39 const TInt KMyKeyRightAsciiCode = 54; // Ascii code for number '6'
       
    40 const TInt KMyKeyUpAsciiCode = 50;  // Ascii code for number '2'
       
    41 
       
    42 // MACROS
       
    43 
       
    44 // DATA TYPES
       
    45 
       
    46 // FUNCTION PROTOTYPES
       
    47 
       
    48 // FORWARD DECLARATIONS
       
    49 class CMenu;
       
    50 class CConsoleMain;
       
    51 class CCaseOperationMenu;
       
    52 class CCaseExecutionView;
       
    53 
       
    54 // CLASS DECLARATION
       
    55 
       
    56 // DESCRIPTION
       
    57 // Main menu
       
    58 class CMenu
       
    59         :public CBase
       
    60     {
       
    61     public:  // Enumerations
       
    62         enum TUpdateType
       
    63             {
       
    64             EMenuPrint,
       
    65             EMenuRefresh,
       
    66             };
       
    67 
       
    68         // None
       
    69 
       
    70     private: // Enumerations
       
    71         // None
       
    72 
       
    73     public:  // Constructors and destructor
       
    74         // None
       
    75 
       
    76         /**
       
    77         * NewL is first phase of two-phased constructor.
       
    78         */
       
    79         static CMenu* NewL( CConsoleMain* aConsole,
       
    80                             CMenu* aParent,
       
    81                             const TDesC& aName);
       
    82 
       
    83        /**
       
    84         * Destructor of CConsoleMain.
       
    85         */
       
    86         virtual ~CMenu();
       
    87 
       
    88     public: // New functions
       
    89     
       
    90         /** 
       
    91         * Return menu name
       
    92         */
       
    93         virtual const TDesC& Name() const;
       
    94 
       
    95         /** 
       
    96         * Return item texts.
       
    97         */
       
    98         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
    99 
       
   100         /** 
       
   101         * Prints the menu
       
   102         */
       
   103         virtual void PrintMenuL( TUpdateType  aType );
       
   104 
       
   105         /** 
       
   106         * Process keypresses on this menu
       
   107         */
       
   108         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
   109 
       
   110         /** 
       
   111         * Set parent menu
       
   112         */
       
   113         virtual void SetParent ( CMenu* aMenu );
       
   114 
       
   115         /** 
       
   116         * Print line
       
   117         */
       
   118         virtual void Print( const TDesC& aPrint);
       
   119 
       
   120         /** 
       
   121         * Multi line print
       
   122         */
       
   123         virtual void PrintMulti( const TDesC& aPrint );
       
   124 
       
   125         /** 
       
   126         * Add item to menu
       
   127         */
       
   128         virtual void AddItemL ( CMenu* aItem );
       
   129         
       
   130         /** 
       
   131         * Signals test completion
       
   132         */
       
   133         virtual void SignalL ( CStartedTestCase* /*aContainer*/ ){};
       
   134 		
       
   135         /** 
       
   136         * Update display from timer
       
   137         */
       
   138 		virtual void TimerUpdate();
       
   139 		
       
   140 		/**
       
   141 		* Append text before original text.
       
   142 		*/
       
   143 		virtual void AppendBefore(  TInt aLineNum, TDes& aLine );
       
   144 		
       
   145 		/**
       
   146 		* Get menu type.
       
   147 		*/
       
   148 		inline TInt Type(){ return iType; };
       
   149 		
       
   150 		/**
       
   151 		* Map KeyCode 
       
   152 		*/
       
   153 		void MapKeyCode(TKeyCode &aSelection);
       
   154 
       
   155 		/**
       
   156 		 * Recalculates visible menu elements.
       
   157 		 */
       
   158 		void Recalculate( TInt aItemCount );
       
   159 		
       
   160     public: // Functions from base classes
       
   161         // None
       
   162 
       
   163     protected:  // New functions
       
   164         // None
       
   165 
       
   166     protected:  // Functions from base classes
       
   167         // None    
       
   168 
       
   169         /** 
       
   170         * C++ default constructor.
       
   171         */
       
   172         CMenu();
       
   173 
       
   174         /**
       
   175         * By default Symbian OS constructor is private.
       
   176         */
       
   177         void ConstructL( CConsoleMain* aConsole,
       
   178                          CMenu* aParent,
       
   179                          const TDesC& aName,
       
   180                          const TDesC& aHeader = KNullDesC);
       
   181     
       
   182     private:   // Functions from base classes
       
   183         // None
       
   184 
       
   185     public:   // Data
       
   186         // None
       
   187 
       
   188     protected:  // Data    
       
   189     
       
   190         CConsoleBase*           iConsole;      // Pointer to console
       
   191         CConsoleMain*           iMain;         // Pointer to main console
       
   192         CMenu*                  iParent;       // Pointer to parent menu
       
   193         TName                   iName;         // Menu name
       
   194     	TName					iHeader;	   // Used to display STIF version information
       
   195 
       
   196         RPointerArray<CMenu>    iItems;        // Menu items
       
   197 
       
   198         TInt                    iPosOnScreen;  // Position on display
       
   199         TInt                    iPrevPosOnScreen; // Previous position on display
       
   200         TInt                    iMenuItemsListStartIndex;    // Y-index of the first line containing menu item
       
   201         TInt                    iMenuItemsListEndIndex;    // Y-index of the last line containing menu item
       
   202         TInt                    iFirst;        // First displayed item
       
   203         TInt                    iLast;         // Last displayed item
       
   204         TBool                   iPreventClearScreen;  // In case of moving cursor "in screen" cleaning screen is not needed
       
   205         TInt                    iItemCount;    // Last Item
       
   206         TSize                   iSize;         // Display size
       
   207         TInt                    iScreenSize;   // "Work area" size
       
   208 		TInt                    iDirection;    // Scrolling direction
       
   209 		TInt                    iStart;        // Scrolling position
       
   210 		TInt                    iPrevPos;      // Previous position in scrolling
       
   211 
       
   212         // Menu type (which updates must cause console update) 
       
   213         // Flags from CUIStoreIf::TUpdateFlags 
       
   214         TInt                    iType;
       
   215         
       
   216         // Update type set from PrintMenuL
       
   217 		TUpdateType             iUpdateType;
       
   218 		
       
   219     private:    // Data
       
   220         // None
       
   221 
       
   222     public:     // Friend classes
       
   223         // None
       
   224 
       
   225     protected:  // Friend classes
       
   226         // None
       
   227 
       
   228     private:    // Friend classes
       
   229         // None
       
   230 
       
   231     };
       
   232 
       
   233 
       
   234 
       
   235 // CONSTANTS
       
   236 _LIT( KSelectMenuTxt, "Select module to load, if using ini or test case file use testframework.ini" );
       
   237 
       
   238 // DESCRIPTION
       
   239 // Filename query menu
       
   240 class CFileNameQueryView 
       
   241     :public CMenu
       
   242   
       
   243     {
       
   244     public:  // Enumerations
       
   245         // None
       
   246 
       
   247     private: // Enumerations
       
   248         // None
       
   249 
       
   250     public:  // Constructors and destructor
       
   251         // None
       
   252 
       
   253         /**
       
   254         * NewL is first phase of two-phased constructor.
       
   255         */
       
   256         static CFileNameQueryView* NewL( CConsoleMain* aConsole, 
       
   257                                          CMenu* aParent, 
       
   258                                          const TDesC& aName);
       
   259 
       
   260         ~CFileNameQueryView();
       
   261         
       
   262     public: // New functions
       
   263        // None
       
   264 
       
   265     public: // Functions from base classes
       
   266         /** 
       
   267         * Return item texts.
       
   268         */
       
   269         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   270         
       
   271         /** 
       
   272         * Process keypresses on this menu
       
   273         */
       
   274         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
   275 
       
   276     protected:  // New functions
       
   277 
       
   278         /**
       
   279         * By default Symbian OS constructor is private.
       
   280         */
       
   281         void ConstructL( CConsoleMain* aConsole, 
       
   282                          CMenu* aParent, 
       
   283                          const TDesC& aName );
       
   284 
       
   285     protected:  // Functions from base classes
       
   286         // None
       
   287 
       
   288     private:
       
   289 
       
   290     public:   // Data
       
   291         // None
       
   292 
       
   293     protected:  // Data
       
   294         // None
       
   295 
       
   296     private:    // Data
       
   297         // List of module names
       
   298         RPointerArray<TDesC>    iTestModuleNames;
       
   299         
       
   300     public:     // Friend classes
       
   301         // None
       
   302 
       
   303     protected:  // Friend classes
       
   304         // None
       
   305 
       
   306     private:    // Friend classes
       
   307         // None
       
   308 
       
   309     };
       
   310 
       
   311 // CONSTANTS
       
   312 _LIT( KAddMenuTxt,  "Add test module" );
       
   313 _LIT( KLoadMenuTxt,  "Load all test modules" );
       
   314 
       
   315 // DESCRIPTION
       
   316 // Module list menu
       
   317 class CModuleListView 
       
   318     :public CMenu
       
   319   
       
   320     {
       
   321     public:  // Enumerations
       
   322         // None
       
   323 
       
   324     private: // Enumerations
       
   325         enum TModuleListMenu
       
   326             {
       
   327             EAddMenuTxtItem,
       
   328             ELoadMenuTxtItem,
       
   329             };
       
   330             
       
   331     public:  // Constructors and destructor
       
   332 
       
   333         /**
       
   334         * NewL is first phase of two-phased constructor.
       
   335         */
       
   336         static CModuleListView* NewL( CConsoleMain* aConsole,
       
   337                                       CMenu* aParent,
       
   338                                       const TDesC& aName );
       
   339 
       
   340        /**
       
   341         * Destructor
       
   342         */
       
   343         ~CModuleListView();
       
   344 
       
   345     public: // New functions
       
   346         // None
       
   347 
       
   348     public: // Functions from base classes
       
   349 
       
   350         /** 
       
   351         * Return item texts.
       
   352         */
       
   353         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   354         
       
   355         /** 
       
   356         * Process keypresses on this menu
       
   357         */
       
   358         virtual CMenu* SelectL( TKeyCode aSelectLion, 
       
   359                                 TBool& aContinue );
       
   360  
       
   361         /** 
       
   362         * Prints the menu
       
   363         */
       
   364         virtual void PrintMenuL( TUpdateType  aType );
       
   365         
       
   366     protected:  // New functions
       
   367         // None
       
   368 
       
   369     protected:  // Functions from base classes
       
   370         // None
       
   371        
       
   372         /**
       
   373         * By default Symbian OS constructor is private.
       
   374         */
       
   375         void ConstructL( CConsoleMain* aConsole, 
       
   376                          CMenu* aParent,
       
   377                          const TDesC& aName );
       
   378 
       
   379     private:
       
   380 
       
   381     public:   //Data
       
   382         // None
       
   383     
       
   384     protected:  // Data
       
   385         // None
       
   386 
       
   387     private:    // Data
       
   388         CMenu*                     iModuleAdd;
       
   389 
       
   390     public:     // Friend classes
       
   391          // None
       
   392 
       
   393     protected:  // Friend classes
       
   394         // None
       
   395 
       
   396     private:    // Friend classes
       
   397         // None
       
   398 
       
   399     };
       
   400 
       
   401 // DESCRIPTION
       
   402 // Test case starting menu
       
   403 class CCaseStartMenu 
       
   404     :public CMenu
       
   405   
       
   406     {
       
   407     public:  // Enumerations
       
   408         // None
       
   409 
       
   410     private: // Enumerations
       
   411         // None
       
   412 
       
   413     public:  // Constructors and destructor
       
   414         /**
       
   415         * NewL is first phase of two-phased constructor.
       
   416         */
       
   417         static CCaseStartMenu* NewL( CConsoleMain* aConsole, 
       
   418                                      CMenu* aParent, 
       
   419                                      const TDesC& aName,
       
   420                                      TBool aShowOutput = EFalse);
       
   421 
       
   422         /**
       
   423         * Destructor.
       
   424         */
       
   425 		~CCaseStartMenu();
       
   426 
       
   427     public: // New functions
       
   428        // None
       
   429 
       
   430     public: // Functions from base classes
       
   431 
       
   432         /** 
       
   433         * Process keypresses on this menu
       
   434         */
       
   435         virtual CMenu* SelectL( TKeyCode aSelectLion, 
       
   436                                 TBool& aContinue );
       
   437 
       
   438         /** 
       
   439         * Return item texts.
       
   440         */
       
   441         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   442 
       
   443     protected:  // New functions
       
   444         // None
       
   445 
       
   446     protected:  // Functions from base classes
       
   447 
       
   448         /**
       
   449         * By default Symbian OS constructor is private.
       
   450         */
       
   451         void ConstructL( CConsoleMain* aConsole,
       
   452                          CMenu* aParent,
       
   453                          const TDesC& aName,
       
   454                          TBool aShowOutput = EFalse);
       
   455 
       
   456     private:
       
   457         // None
       
   458 
       
   459     public:     // Data
       
   460         // None
       
   461 
       
   462     protected:  // Data
       
   463         // Test case array
       
   464         RRefArray<CTestInfo> iTestCases;
       
   465 
       
   466     private:    // Data
       
   467         // Show output automaticly after test case is started
       
   468         TBool iShowOutput;
       
   469         
       
   470         // Map table. Translates indexes from filtered to all loaded from module  
       
   471         RArray<TInt> iMapFilteredToAll;
       
   472         
       
   473         // Keeps filter name converted to lower case
       
   474         TFileName iFilterLowerCase;
       
   475         
       
   476         // Keeps title of test case converted to lower case
       
   477         TFileName iTitleLowerCase;
       
   478         
       
   479     public:     // Friend classes
       
   480         // None
       
   481 
       
   482     protected:  // Friend classes
       
   483         // None
       
   484 
       
   485     private:    // Friend classes
       
   486         // None
       
   487 
       
   488     };
       
   489 
       
   490 // CONSTANTS
       
   491 _LIT( KChangeAll, "Change all");
       
   492 _LIT( KCancelSet, "Cancel set execution" );
       
   493 
       
   494 // Test set creation menu
       
   495 class CMultipleBaseMenu 
       
   496     :public CCaseStartMenu
       
   497   
       
   498     {
       
   499     public:  // Enumerations
       
   500          enum TMenuIndex
       
   501 		    {  
       
   502 		    EChangeAll = 0,
       
   503 		    ECancelSet = 0,
       
   504 		    };
       
   505         enum TRunType
       
   506             {
       
   507             ERunSequential,
       
   508             ERunParallel,
       
   509             ERunRepeatSequential,
       
   510             };
       
   511 		    
       
   512     protected: // Enumerations
       
   513 
       
   514     public:  // Constructors and destructor
       
   515         /**
       
   516         * NewL is first phase of two-phased constructor.
       
   517         */
       
   518         static CMultipleBaseMenu* NewL( CConsoleMain* aConsole, 
       
   519                                         CMenu* aParent, 
       
   520                                         const TDesC& aName);
       
   521         
       
   522         /**
       
   523         * Destructor.
       
   524         */
       
   525 		~CMultipleBaseMenu();
       
   526 
       
   527     public: // New functions
       
   528        // None
       
   529 
       
   530     public: // Functions from base classes
       
   531 
       
   532         /** 
       
   533         * Process keypresses on this menu
       
   534         */
       
   535         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
   536 
       
   537         /** 
       
   538         * Return item texts.
       
   539         */
       
   540         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   541 
       
   542 		/** 
       
   543         * Signals test completion
       
   544         */
       
   545         virtual void SignalL ( CStartedTestCase* aContainer );
       
   546         
       
   547         /** 
       
   548         * Append text before line print.
       
   549         */
       
   550         virtual void AppendBefore( TInt aLineNum, TDes& aLine );
       
   551         
       
   552     protected:  // New functions
       
   553 
       
   554         //inline void SetRunType( TRunType aRunType )
       
   555         //    { iRunType = aRunType; };
       
   556             
       
   557         /**
       
   558         * Update iTestCases();
       
   559         */ 
       
   560         virtual TInt UpdateTestCases();
       
   561         TBool CheckIfAnyCaseIsSelected(TInt aCount);
       
   562                       
       
   563     protected:  // Functions from base classes
       
   564 
       
   565         /**
       
   566         * Constructor.
       
   567         */
       
   568 		CMultipleBaseMenu();
       
   569         
       
   570         /**
       
   571         * By default Symbian OS constructor is private.
       
   572         */
       
   573         void ConstructL( CConsoleMain* aConsole,
       
   574                          CMenu* aParent,
       
   575                          const TDesC& aName );
       
   576 
       
   577     private:
       
   578        
       
   579     public:     // Data
       
   580 
       
   581     protected:  // Data
       
   582 		RArray<TBool>       iSetState;
       
   583 		TInt                iCurrentRunPos;
       
   584 		TBool               iSetFinished;
       
   585 		CStartedTestCase*   iOngoingCaseContainer;
       
   586 		TRunType            iRunType;
       
   587 				
       
   588 		// Number of items in "static" menu (including derived classes)
       
   589 		TInt                iMenuTotCount;
       
   590 
       
   591     private:    // Data
       
   592 		// Number of items in "static" menu of this class
       
   593 		// (excluding derived classes)  
       
   594 		TInt                iMenuCount;
       
   595 
       
   596     public:     // Friend classes
       
   597 
       
   598     protected:  // Friend classes
       
   599 
       
   600     private:    // Friend classes
       
   601 
       
   602     };
       
   603 
       
   604 // CONSTANTS
       
   605 _LIT( KRunSequentially, "Run selection sequentially");
       
   606 _LIT( KRunParallel, "Run selection parallel");
       
   607 _LIT( KRepeatRunSequentially, "Repeat run selection sequentially");
       
   608 
       
   609 _LIT( KSelectFromTo, "Select all between already selected"); 
       
   610 
       
   611 // Test set creation menu
       
   612 class CMultipleCaseMenu 
       
   613     :public CMultipleBaseMenu
       
   614   
       
   615     {
       
   616     public:  // Enumerations
       
   617         // None
       
   618 
       
   619     private: // Enumerations
       
   620         enum TMultipleMenuIndex
       
   621 		    {  
       
   622 		    ERunSelection = 0,
       
   623 		    ERunSelectionParaller = 1,
       
   624 		    ERepeatRunSelection = 2,
       
   625 		    ESelectFromTo = 3,
       
   626 		    };
       
   627 		    
       
   628     public:  // Constructors and destructor
       
   629         /**
       
   630         * NewL is first phase of two-phased constructor.
       
   631         */
       
   632         static CMultipleCaseMenu* NewL( CConsoleMain* aConsole, 
       
   633                                         CMenu* aParent, 
       
   634                                         const TDesC& aName);
       
   635         
       
   636         /**
       
   637         * Destructor.
       
   638         */
       
   639 		~CMultipleCaseMenu();
       
   640 
       
   641     public: // New functions
       
   642        /**
       
   643        * Start running.
       
   644        */
       
   645        virtual void StartRunningL( TRunType aRunType, 
       
   646                                    const TDesC& aModule = KNullDesC, 
       
   647                                    const TDesC& aTestCaseFile = KNullDesC );
       
   648 
       
   649     public: // Functions from base classes
       
   650 
       
   651         /** 
       
   652         * Process keypresses on this menu
       
   653         */
       
   654         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
   655 
       
   656         /** 
       
   657         * Return item texts.
       
   658         */
       
   659         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   660 
       
   661     protected:  // New functions
       
   662         // None
       
   663 
       
   664     protected:  // Functions from base classes
       
   665     
       
   666         /**
       
   667         * Constructor.
       
   668         */
       
   669 		CMultipleCaseMenu();
       
   670 
       
   671         /**
       
   672         * By default Symbian OS constructor is private.
       
   673         */
       
   674         void ConstructL( CConsoleMain* aConsole,
       
   675                          CMenu* aParent,
       
   676                          const TDesC& aName );
       
   677 
       
   678     private:
       
   679        
       
   680     public:     // Data
       
   681         // None
       
   682 
       
   683     protected:  // Data
       
   684         // None
       
   685 
       
   686     private:    // Data
       
   687         // Number of items in "static" menu of this class
       
   688 		// (excluding derived classes)  
       
   689 		TInt                iMenuItemsCount;
       
   690 		
       
   691     public:     // Friend classes
       
   692         // None
       
   693 
       
   694     protected:  // Friend classes
       
   695         // None
       
   696 
       
   697     private:    // Friend classes
       
   698         // None
       
   699 
       
   700     };
       
   701 
       
   702 
       
   703 // CONSTANTS
       
   704 _LIT( KExitTxt,     "Exit" );
       
   705 
       
   706 // DESCRIPTION
       
   707 // The main menu class
       
   708 class CMainMenu 
       
   709     :public CMenu
       
   710   
       
   711     {
       
   712     public:  // Enumerations
       
   713         // None
       
   714 
       
   715     private: // Enumerations
       
   716         // None
       
   717 
       
   718     public:  // Constructors and destructor
       
   719 
       
   720         /**
       
   721         * NewL is first phase of two-phased constructor.
       
   722         */
       
   723         static CMainMenu* NewL( CConsoleMain* aConsole, 
       
   724                                 CMenu* aParent, 
       
   725                                 const TDesC& aName,
       
   726                                 const TDesC& aHeader );
       
   727 
       
   728         /**
       
   729         * Destructor
       
   730         */
       
   731         ~CMainMenu();
       
   732 
       
   733     public: // New functions
       
   734         /**
       
   735         * Creates CaseOperationMenu and CaseExecutionView.
       
   736         * Used when after test case starting its output view needs to be shown.
       
   737         */
       
   738         CMenu* CreateOutputViewL(CMenu* aParent);
       
   739 
       
   740     public: // Functions from base classes    
       
   741 
       
   742         /** 
       
   743         * Return item texts.
       
   744         */
       
   745         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   746 
       
   747         /** 
       
   748         * Process keypresses on this menu
       
   749         */
       
   750         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
   751 
       
   752 
       
   753     protected:  // New functions
       
   754         // None
       
   755 
       
   756     protected:  // Functions from base classes
       
   757 
       
   758         /**
       
   759         * By default Symbian OS constructor is private.
       
   760         */
       
   761         void ConstructL( CConsoleMain* aConsole, 
       
   762                          CMenu* aParent,
       
   763                          const TDesC& aName,
       
   764                          const TDesC& aHeader );
       
   765 
       
   766     private:
       
   767 
       
   768     public:   //Data
       
   769 
       
   770     protected:  // Data
       
   771 
       
   772     private:    // Data
       
   773         // Menu representing output view, used to show it after test case is started
       
   774         CCaseExecutionView* iOutputView;
       
   775 
       
   776         // Operation menu used to show output view after test case is started
       
   777         CCaseOperationMenu* iOperationMenu;
       
   778 		
       
   779     public:     // Friend classes
       
   780 
       
   781     protected:  // Friend classes
       
   782 
       
   783     private:    // Friend classes
       
   784 
       
   785     };
       
   786 
       
   787 
       
   788 // DESCRIPTION
       
   789 // The case list (passed/failed/...) menu class
       
   790 class CCaseMenu 
       
   791     :public CMenu
       
   792   
       
   793     {
       
   794     public:  // Enumerations
       
   795         // None
       
   796 
       
   797     private: // Enumerations
       
   798         // None
       
   799 
       
   800     public:  // Constructors and destructor
       
   801         // None
       
   802 
       
   803         /**
       
   804         * NewL is first phase of two-phased constructor.
       
   805         */
       
   806         static CCaseMenu* NewL( CConsoleMain* aConsole, 
       
   807                                 CMenu* aParent, 
       
   808                                 const TDesC& aName, 
       
   809                                 TInt aType );
       
   810 
       
   811         /**
       
   812         * Destructor
       
   813         */
       
   814         ~CCaseMenu();
       
   815 
       
   816     public: // New functions
       
   817         // None
       
   818 
       
   819     public: // Functions from base classes    
       
   820 
       
   821         /** 
       
   822         * Process keypresses on this menu
       
   823         */
       
   824         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
   825         
       
   826         /** 
       
   827         * Return item texts.
       
   828         */
       
   829         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   830 
       
   831         /**
       
   832         * Append text before original text.
       
   833         */
       
   834         virtual void AppendBefore(TInt aLineNum, TDes& aLine);
       
   835 
       
   836     protected:  // New functions
       
   837 
       
   838     protected:  // Functions from base classes
       
   839 
       
   840         /**
       
   841         * By default Symbian OS constructor is private.
       
   842         */
       
   843         void ConstructL( CConsoleMain* aConsole, 
       
   844                          CMenu* aParent, 
       
   845                          const TDesC& aName, 
       
   846                          TInt aType );
       
   847 
       
   848     private:    // Data
       
   849         // None
       
   850 
       
   851     public:     // Data
       
   852         // None
       
   853 
       
   854     protected:  // Data
       
   855         CCaseOperationMenu*             iCaseOperationMenu;    // Submenu
       
   856         RRefArray<CStartedTestCase>     iTestCases;
       
   857 
       
   858     private:    // Data
       
   859         
       
   860     public:     // Friend classes
       
   861         // None
       
   862 
       
   863     protected:  // Friend classes
       
   864         // None
       
   865 
       
   866     private:    // Friend classes
       
   867         // None
       
   868 
       
   869     };
       
   870 
       
   871 // CONSTANTS
       
   872 _LIT( KOutputViewDes,   "View Output");
       
   873 _LIT( KPauseCaseDes,    "Pause");
       
   874 _LIT( KResumeCaseDes,   "Resume");
       
   875 _LIT( KAbortCaseDes,    "Abort case");
       
   876 _LIT( KRestartCaseDes,  "Restart");
       
   877 
       
   878 // DESCRIPTION
       
   879 // Case specific operations, like pause, abort etc.
       
   880 class CCaseOperationMenu 
       
   881     :public CMenu
       
   882   
       
   883     {
       
   884     public:  // Enumerations
       
   885         // None
       
   886 
       
   887     private: // Enumerations
       
   888         enum TCaseOperationMenu
       
   889             {
       
   890             ERestartCase,
       
   891             EOutputView,
       
   892             EPauseResume,
       
   893             EAbortCase,   
       
   894             };
       
   895 
       
   896     public:  // Constructors and destructor
       
   897         // None
       
   898 
       
   899         /**
       
   900         * NewL is first phase of two-phased constructor.
       
   901         */
       
   902         static CCaseOperationMenu* NewL( CConsoleMain* aConsole, 
       
   903                             CMenu* aParent, 
       
   904                             const TDesC& aName, 
       
   905                             const CStartedTestCase* aCaseContainer );
       
   906         
       
   907         /**
       
   908         * Destructor.
       
   909         */
       
   910         ~CCaseOperationMenu();
       
   911         
       
   912     public: // New functions
       
   913 
       
   914     public: // Functions from base classes
       
   915 
       
   916         /** 
       
   917         * Process keypresses on this menu
       
   918         */
       
   919         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
   920 
       
   921         /** 
       
   922         * Prints the menu
       
   923         */
       
   924         virtual void PrintMenuL( TUpdateType  aType );
       
   925 
       
   926         /** 
       
   927         * Return item texts.
       
   928         */
       
   929         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
   930 
       
   931     protected:  // New functions
       
   932         // None
       
   933 
       
   934     protected:  // Functions from base classes
       
   935 
       
   936         /**
       
   937         * By default Symbian OS constructor is private.
       
   938         */
       
   939         void ConstructL( CConsoleMain* aConsole, 
       
   940                          CMenu* aParent,
       
   941                          const TDesC& aName,
       
   942                          const CStartedTestCase* aCaseContainer );
       
   943 
       
   944     private:    // Functions from base classes
       
   945         // None
       
   946 
       
   947     public:   //Data
       
   948         // None
       
   949     
       
   950     protected:  // Data
       
   951         // None
       
   952 
       
   953     private:    // Data
       
   954         // Case container
       
   955         const CStartedTestCase* iCaseContainer; 
       
   956         // Execution view                       
       
   957         CCaseExecutionView*     iView;
       
   958         
       
   959     public:     // Friend classes
       
   960         // None        
       
   961 
       
   962     protected:  // Friend classes
       
   963         // None
       
   964 
       
   965     private:    // Friend classes
       
   966         // None
       
   967 
       
   968     };
       
   969 
       
   970 
       
   971 class CCaseExecutionView 
       
   972     :public CMenu
       
   973   
       
   974     {
       
   975     public:  // Enumerations
       
   976         // None
       
   977 
       
   978     private: // Enumerations
       
   979         // None
       
   980 
       
   981     public:  // Constructors and destructor
       
   982         // None
       
   983 
       
   984         /**
       
   985         * NewL is first phase of two-phased constructor.
       
   986         */
       
   987         static CCaseExecutionView* NewL( CConsoleMain* aConsole, 
       
   988                                          CMenu* aParent, 
       
   989                                          const TDesC& aName, 
       
   990                                          const CStartedTestCase* aCase);
       
   991 
       
   992          /**
       
   993         * Destructor.
       
   994         */
       
   995         ~CCaseExecutionView();
       
   996 
       
   997     public: // New functions
       
   998         // None
       
   999 
       
  1000     public: // Functions from base classes
       
  1001 
       
  1002         /** 
       
  1003         * Prints the menu
       
  1004         */
       
  1005         virtual void PrintMenuL( TUpdateType  aType );
       
  1006 
       
  1007         /** 
       
  1008         * Process keypresses on this menu
       
  1009         */
       
  1010         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
  1011         
       
  1012         /**
       
  1013         * Get current testcase info.
       
  1014         */ 
       
  1015         inline const CStartedTestCase* TestCase(){ return iCase; };
       
  1016 
       
  1017     protected:  // New functions
       
  1018         // None
       
  1019 
       
  1020     protected:  // Functions from base classes
       
  1021 
       
  1022         /**
       
  1023         * By default Symbian OS constructor is private.
       
  1024         */
       
  1025         void ConstructL( CConsoleMain* aConsole, 
       
  1026                          CMenu* aParent,
       
  1027                          const TDesC& aName,
       
  1028                          const CStartedTestCase* aCase );
       
  1029 
       
  1030     private:   // Functions from base classes
       
  1031         // None
       
  1032 
       
  1033     public:     // Data
       
  1034         // None
       
  1035 
       
  1036     protected:  // Data
       
  1037         // None
       
  1038 
       
  1039     private:    // Data
       
  1040         const CStartedTestCase* iCase;
       
  1041 
       
  1042         /**
       
  1043         * Indicates current selected line.
       
  1044         */
       
  1045         TInt                    iLine;
       
  1046         /**
       
  1047         * Indicates will line show.
       
  1048         */
       
  1049         TBool                   iShowLine;
       
  1050         /**
       
  1051         * Line to be show.
       
  1052         */
       
  1053         HBufC*                  iLineTextBuf;
       
  1054 
       
  1055     public:     // Friend classes
       
  1056         // None
       
  1057 
       
  1058     protected:  // Friend classes
       
  1059         // None
       
  1060 
       
  1061     private:    // Friend classes
       
  1062         // None
       
  1063 
       
  1064     };
       
  1065 
       
  1066 // CMenu notifier class shows dialogs in UI.
       
  1067 class CMenuNotifier
       
  1068         :public CBase
       
  1069     {
       
  1070     public:  // Enumerations
       
  1071 
       
  1072     private: // Enumerations
       
  1073         // None
       
  1074 
       
  1075     public:  // Constructors and destructor
       
  1076         // None
       
  1077 
       
  1078         /**
       
  1079         * NewL is first phase of two-phased constructor.
       
  1080         */
       
  1081         static CMenuNotifier* NewL( const TDesC& aError, 
       
  1082                                     CConsoleMain* aMain );
       
  1083 
       
  1084        /**
       
  1085         * Destructor of CConsoleMain.
       
  1086         */
       
  1087         virtual ~CMenuNotifier();
       
  1088 
       
  1089     public: // New functions  
       
  1090             
       
  1091     public: // Functions from base classes
       
  1092         // None
       
  1093 
       
  1094     protected:  // New functions
       
  1095         // None
       
  1096 
       
  1097     protected:  // Functions from base classes
       
  1098         // None    
       
  1099 
       
  1100         /** 
       
  1101         * C++ default constructor.
       
  1102         */
       
  1103         CMenuNotifier( CConsoleMain* aMain );
       
  1104 
       
  1105         /**
       
  1106         * By default Symbian OS constructor is private.
       
  1107         */
       
  1108         void ConstructL( const TDesC& aError );
       
  1109     
       
  1110     private:   // Functions from base classes
       
  1111         // None
       
  1112 
       
  1113     private:   // New functions
       
  1114         /** 
       
  1115         * C++ default constructor.
       
  1116         */
       
  1117         void Run1();	
       
  1118 
       
  1119     public:   // Data
       
  1120         // None
       
  1121 
       
  1122     protected:  // Data      
       
  1123 
       
  1124     private:    // Data
       
  1125         CActiveCallback <CMenuNotifier> iCallBack1;
       
  1126         CActiveCallback <CMenuNotifier> iCallBack2;
       
  1127         RTimer iTimer;
       
  1128         CConsoleBase* iConsole;
       
  1129         CConsoleMain* iMain;        
       
  1130         TInt iCompletionCode; 
       
  1131 
       
  1132     public:     // Friend classes
       
  1133         // None
       
  1134 
       
  1135     protected:  // Friend classes
       
  1136         // None
       
  1137 
       
  1138     private:    // Friend classes
       
  1139         // None
       
  1140 
       
  1141     };
       
  1142 
       
  1143 // CMenu dialog class shows dialogs in UI and waits for keypress.
       
  1144 class CMenuDialog
       
  1145     :public CBase
       
  1146     {
       
  1147     public:  // Enumerations
       
  1148 
       
  1149     private: // Enumerations
       
  1150         // None
       
  1151 
       
  1152     public:  // Constructors and destructor
       
  1153         // None
       
  1154 
       
  1155         /**
       
  1156         * NewL is first phase of two-phased constructor.
       
  1157         */
       
  1158         static CMenuDialog* NewL( CConsoleMain* aMain, 
       
  1159                                   const TDesC& aMessage, 
       
  1160                                   const TDesC& aInstruction,
       
  1161                                   TInt aTimeInSecs );
       
  1162 
       
  1163        /**
       
  1164         * Destructor.
       
  1165         */
       
  1166         virtual ~CMenuDialog();
       
  1167 
       
  1168     public: // New functions  
       
  1169             
       
  1170     public: // Functions from base classes
       
  1171         
       
  1172         TInt WaitForKeypress( TKeyCode& aKeyCode, 
       
  1173                               TRequestStatus& aStatus  );
       
  1174 
       
  1175     protected:  // New functions
       
  1176         // None
       
  1177 
       
  1178     protected:  // Functions from base classes
       
  1179         // None    
       
  1180 
       
  1181         /** 
       
  1182         * C++ default constructor.
       
  1183         */
       
  1184         CMenuDialog( CConsoleMain* aMain );
       
  1185 
       
  1186         /**
       
  1187         * By default Symbian OS constructor is private.
       
  1188         */
       
  1189         void ConstructL( const TDesC& aMessage, 
       
  1190                          const TDesC& aInstruction, 
       
  1191                          TInt aTimeInSecs );
       
  1192     
       
  1193     private:   // Functions from base classes
       
  1194         // None
       
  1195 
       
  1196     private:   // New functions
       
  1197         /**
       
  1198         * Handle completions.
       
  1199         */
       
  1200         void Run1();	
       
  1201 
       
  1202     public:   // Data
       
  1203         // None
       
  1204 
       
  1205     protected:  // Data      
       
  1206 
       
  1207     private:    // Data
       
  1208         // Backpointer
       
  1209         CConsoleMain* iMain;        
       
  1210         CConsoleBase* iConsole;
       
  1211 
       
  1212         // Timer support
       
  1213         CActiveCallback <CMenuDialog> iCallBack1;
       
  1214         RTimer iTimer;
       
  1215         
       
  1216         // Reading
       
  1217         CActiveCallback <CMenuDialog> iCallBack2;
       
  1218         
       
  1219         // For reading keys        
       
  1220         TRequestStatus* iStatus;
       
  1221         TKeyCode*     iKeyCode;
       
  1222     
       
  1223     public:     // Friend classes
       
  1224         // None
       
  1225 
       
  1226     protected:  // Friend classes
       
  1227         // None
       
  1228 
       
  1229     private:    // Friend classes
       
  1230         // None
       
  1231 
       
  1232     };
       
  1233 
       
  1234 // CONSTANTS
       
  1235 _LIT( KTestSetMenu,     "CTestSetMenu" );
       
  1236 
       
  1237 _LIT( KDefaultSetName,  "ConsoleUI.set" );
       
  1238 
       
  1239 _LIT( KSetCreate,       "Create test set" );
       
  1240 _LIT( KSetLoad,         "Load test set" );
       
  1241 
       
  1242 _LIT( KSetShow,         "Show started test sets" );
       
  1243 _LIT( KSetRemove,       "Remove test set" );
       
  1244 _LIT( KSetCaseAdd,      "Add test case to test set" );
       
  1245 _LIT( KSetCaseRemove,   "Remove test case from test set" );
       
  1246 _LIT( KSetSave,         "Save test set" );
       
  1247 
       
  1248 _LIT( KSetStartSeq,     "Start sequential test set execution" );
       
  1249 _LIT( KSetStartPar,     "Start parallel test set execution" );
       
  1250 //_LIT( KSetStartRep,     "Start repeating test set execution" );
       
  1251 
       
  1252 _LIT( KSetStartSeqNotRun, "Start sequentially not started tests" );
       
  1253 
       
  1254 // DESCRIPTION
       
  1255 // Test set menu
       
  1256 class CTestSetMenu 
       
  1257     :public CMenu
       
  1258   
       
  1259     {
       
  1260     public:  // Enumerations
       
  1261         
       
  1262     private: // Enumerations
       
  1263         
       
  1264         enum TCreateMenu
       
  1265             {
       
  1266             ESetCreate,
       
  1267             ESetLoad,    
       
  1268             };
       
  1269             
       
  1270         enum TEditMenu
       
  1271             {
       
  1272             ESetShow,
       
  1273  
       
  1274             ESetStartSeq,
       
  1275             ESetStartPar,
       
  1276             //ESetStartRep,
       
  1277  
       
  1278             ESetRemove,
       
  1279             ESetSave,
       
  1280             ESetCaseAdd,
       
  1281             ESetCaseRemove,
       
  1282             
       
  1283             ESetStartSeqNotRun,
       
  1284             
       
  1285 
       
  1286             ESetLAST //This entry must remain LAST in this menu
       
  1287             };
       
  1288             
       
  1289     public:  // Constructors and destructor
       
  1290 
       
  1291         /**
       
  1292         * NewL is first phase of two-phased constructor.
       
  1293         */
       
  1294         static CTestSetMenu* NewL( CConsoleMain* aConsole,
       
  1295                                    CMenu* aParent,
       
  1296                                    const TDesC& aName );
       
  1297 
       
  1298        /**
       
  1299         * Destructor
       
  1300         */
       
  1301         ~CTestSetMenu();
       
  1302 
       
  1303     public: // New functions
       
  1304         /**
       
  1305         * Set test set file name.
       
  1306         */
       
  1307         void SetTestSetFileName( const TFileName& aTestSetFileName ); 
       
  1308         
       
  1309         /**
       
  1310         * Set test set state created.
       
  1311         */
       
  1312         void SetCreated(){ iTestSetCreated = ETrue; };
       
  1313          
       
  1314     public: // Functions from base classes
       
  1315 
       
  1316         /** 
       
  1317         * Return item texts.
       
  1318         */
       
  1319         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
  1320         
       
  1321         /** 
       
  1322         * Process keypresses on this menu
       
  1323         */
       
  1324         virtual CMenu* SelectL( TKeyCode aSelectLion, 
       
  1325                                 TBool& aContinue );
       
  1326  
       
  1327         /** 
       
  1328         * Prints the menu
       
  1329         */
       
  1330         virtual void PrintMenuL( TUpdateType  aType );
       
  1331         
       
  1332     protected:  // New functions
       
  1333 
       
  1334     protected:  // Functions from base classes
       
  1335         /**
       
  1336         * Constructor
       
  1337         */
       
  1338         CTestSetMenu();
       
  1339        
       
  1340         /**
       
  1341         * By default Symbian OS constructor is private.
       
  1342         */
       
  1343         void ConstructL( CConsoleMain* aConsole, 
       
  1344                          CMenu* aParent,
       
  1345                          const TDesC& aName );
       
  1346 
       
  1347     private:
       
  1348 
       
  1349     public:   //Data
       
  1350         // None
       
  1351     
       
  1352     protected:  // Data
       
  1353         // None
       
  1354 
       
  1355     private:    // Data
       
  1356         TBool               iTestSetCreated;
       
  1357         TFileName           iTestSetName;
       
  1358         
       
  1359         CMenu*              iSubMenu;
       
  1360         
       
  1361     public:     // Friend classes
       
  1362          // None
       
  1363 
       
  1364     protected:  // Friend classes
       
  1365         // None
       
  1366 
       
  1367     private:    // Friend classes
       
  1368         // None
       
  1369 
       
  1370     };
       
  1371 
       
  1372     // CONSTANTS
       
  1373     _LIT( KTestSetChoice,     "CTestSetChoiceMenu" );
       
  1374     _LIT( KSetSelect,       "Select Test Set" );
       
  1375 
       
  1376 
       
  1377     // DESCRIPTION
       
  1378     // Test set choice menu
       
  1379     class CTestSetChoiceMenu 
       
  1380         :public CMenu
       
  1381 
       
  1382         {
       
  1383         public:  // Enumerations
       
  1384             
       
  1385         private: // Enumerations
       
  1386             
       
  1387             
       
  1388                 
       
  1389         public:  // Constructors and destructor
       
  1390 
       
  1391             /**
       
  1392             * NewL is first phase of two-phased constructor.
       
  1393             */
       
  1394             static CTestSetChoiceMenu* NewL( CConsoleMain* aConsole,
       
  1395                                        CMenu* aParent,
       
  1396                                        const TDesC& aName );
       
  1397 
       
  1398            /**
       
  1399             * Destructor
       
  1400             */
       
  1401             ~CTestSetChoiceMenu();
       
  1402 
       
  1403         public: // New functions
       
  1404              
       
  1405         public: // Functions from base classes
       
  1406 
       
  1407             /** 
       
  1408             * Return item texts.
       
  1409             */
       
  1410            virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
  1411             
       
  1412             /** 
       
  1413             * Process keypresses on this menu
       
  1414             */
       
  1415             virtual CMenu* SelectL( TKeyCode aSelectLion, 
       
  1416                                     TBool& aContinue );
       
  1417      
       
  1418             /** 
       
  1419             * Prints the menu
       
  1420             */
       
  1421             virtual void PrintMenuL( TUpdateType  aType );
       
  1422             
       
  1423         protected:  // New functions
       
  1424 
       
  1425         protected:  // Functions from base classes
       
  1426             /**
       
  1427             * Constructor
       
  1428             */
       
  1429             CTestSetChoiceMenu();
       
  1430            
       
  1431             /**
       
  1432             * By default Symbian OS constructor is private.
       
  1433             */
       
  1434             void ConstructL( CConsoleMain* aConsole, 
       
  1435                              CMenu* aParent,
       
  1436                              const TDesC& aName );
       
  1437 
       
  1438         private:
       
  1439 
       
  1440         public:   //Data
       
  1441             // None
       
  1442 
       
  1443         protected:  // Data
       
  1444             // None
       
  1445 
       
  1446         private:    // Data
       
  1447             TFileName           iTestSetName;
       
  1448             RPointerArray<HBufC> iFileList;
       
  1449             
       
  1450         public:     // Friend classes
       
  1451              // None
       
  1452 
       
  1453         protected:  // Friend classes
       
  1454             // None
       
  1455 
       
  1456         private:    // Friend classes
       
  1457             // None
       
  1458 
       
  1459         };
       
  1460     
       
  1461 // CONSTANTS
       
  1462 _LIT( KAddSelected, "Add selected cases");
       
  1463 
       
  1464 // Test set case add menu
       
  1465 class CTestSetAddCaseMenu 
       
  1466     :public CMultipleBaseMenu
       
  1467   
       
  1468     {
       
  1469     public:  // Enumerations
       
  1470         // None
       
  1471 
       
  1472     private: // Enumerations
       
  1473         enum TTestSetAddCaseMenuIndex
       
  1474 		    {  
       
  1475 		    EAddSelected = 0,
       
  1476 		    };
       
  1477 		    
       
  1478     public:  // Constructors and destructor
       
  1479         /**
       
  1480         * NewL is first phase of two-phased constructor.
       
  1481         */
       
  1482         static CTestSetAddCaseMenu* NewL( CConsoleMain* aConsole, 
       
  1483                                          CMenu* aParent, 
       
  1484                                          const TDesC& aName,
       
  1485                                          TDesC& aTestSetName );
       
  1486         
       
  1487         /**
       
  1488         * Destructor.
       
  1489         */
       
  1490 		~CTestSetAddCaseMenu();
       
  1491 
       
  1492     public: // New functions
       
  1493        // None
       
  1494 
       
  1495     public: // Functions from base classes
       
  1496 
       
  1497         /** 
       
  1498         * Process keypresses on this menu
       
  1499         */
       
  1500         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
  1501 
       
  1502         /** 
       
  1503         * Return item texts.
       
  1504         */
       
  1505         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
  1506 
       
  1507     protected:  // New functions
       
  1508         // None
       
  1509 
       
  1510     protected:  // Functions from base classes
       
  1511     
       
  1512         /**
       
  1513         * Constructor.
       
  1514         */
       
  1515 		CTestSetAddCaseMenu( TDesC& aTestSetName );
       
  1516 
       
  1517         /**
       
  1518         * By default Symbian OS constructor is private.
       
  1519         */
       
  1520         void ConstructL( CConsoleMain* aConsole,
       
  1521                          CMenu* aParent,
       
  1522                          const TDesC& aName );
       
  1523 
       
  1524     private:
       
  1525        
       
  1526     public:     // Data
       
  1527         // None
       
  1528 
       
  1529     protected:  // Data
       
  1530         // None
       
  1531 
       
  1532     private:    // Data
       
  1533         // Number of items in "static" menu of this class
       
  1534 		// (excluding derived classes)  
       
  1535 		TInt    iMenuItemsCount;
       
  1536 		
       
  1537         TPtrC   iTestSetName;
       
  1538 
       
  1539     public:     // Friend classes
       
  1540         // None
       
  1541 
       
  1542     protected:  // Friend classes
       
  1543         // None
       
  1544 
       
  1545     private:    // Friend classes
       
  1546         // None
       
  1547 
       
  1548     };
       
  1549 
       
  1550 // CONSTANTS
       
  1551 _LIT( KRemoveSelected, "Remove selected cases");
       
  1552 
       
  1553 // Test set case add menu
       
  1554 class CTestSetRemoveCaseMenu 
       
  1555     :public CMultipleBaseMenu
       
  1556   
       
  1557     {
       
  1558     public:  // Enumerations
       
  1559         // None
       
  1560 
       
  1561     private: // Enumerations
       
  1562         enum TTestSetRemoveCaseMenuIndex
       
  1563 		    {  
       
  1564 		    ERemoveSelected = 0,
       
  1565 		    };
       
  1566 		    
       
  1567     public:  // Constructors and destructor
       
  1568         /**
       
  1569         * NewL is first phase of two-phased constructor.
       
  1570         */
       
  1571         static CTestSetRemoveCaseMenu* NewL( CConsoleMain* aConsole, 
       
  1572                                              CMenu* aParent, 
       
  1573                                              const TDesC& aName,
       
  1574                                              TDesC& aTestSetName );
       
  1575         
       
  1576         /**
       
  1577         * Destructor.
       
  1578         */
       
  1579 		~CTestSetRemoveCaseMenu();
       
  1580 
       
  1581     public: // New functions
       
  1582        // None
       
  1583 
       
  1584     public: // Functions from base classes
       
  1585 
       
  1586         /** 
       
  1587         * Process keypresses on this menu
       
  1588         */
       
  1589         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
  1590 
       
  1591         /** 
       
  1592         * Return item texts.
       
  1593         */
       
  1594         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
  1595         
       
  1596         /**
       
  1597         * Update iTestCases;
       
  1598         */ 
       
  1599         virtual TInt UpdateTestCases();
       
  1600 
       
  1601     protected:  // New functions
       
  1602         // None
       
  1603 
       
  1604     protected:  // Functions from base classes
       
  1605     
       
  1606         /**
       
  1607         * Constructor.
       
  1608         */
       
  1609 		CTestSetRemoveCaseMenu( TDesC& aTestSetName );
       
  1610 
       
  1611         /**
       
  1612         * By default Symbian OS constructor is private.
       
  1613         */
       
  1614         void ConstructL( CConsoleMain* aConsole,
       
  1615                          CMenu* aParent,
       
  1616                          const TDesC& aName );
       
  1617 
       
  1618     private:
       
  1619        
       
  1620     public:     // Data
       
  1621         // None
       
  1622 
       
  1623     protected:  // Data
       
  1624         // None
       
  1625 
       
  1626     private:    // Data
       
  1627         // Number of items in "static" menu of this class
       
  1628 		// (excluding derived classes)  
       
  1629 		TInt        iMenuItemsCount;
       
  1630 		
       
  1631         TPtrC       iTestSetName;
       
  1632 
       
  1633     public:     // Friend classes
       
  1634         // None
       
  1635 
       
  1636     protected:  // Friend classes
       
  1637         // None
       
  1638 
       
  1639     private:    // Friend classes
       
  1640         // None
       
  1641 
       
  1642     };    
       
  1643 
       
  1644 // DESCRIPTION
       
  1645 // The case list (passed/failed/...) menu class
       
  1646 class CTestSetCaseMenu  
       
  1647     :public CCaseMenu
       
  1648   
       
  1649     {
       
  1650     public:  // Enumerations
       
  1651         // None
       
  1652 
       
  1653     private: // Enumerations
       
  1654         // None
       
  1655 
       
  1656     public:  // Constructors and destructor
       
  1657         // None
       
  1658 
       
  1659         /**
       
  1660         * NewL is first phase of two-phased constructor.
       
  1661         */
       
  1662         static CTestSetCaseMenu* NewL( CConsoleMain* aConsole, 
       
  1663                                        CMenu* aParent, 
       
  1664                                        const TDesC& aName,
       
  1665                                        CStartedTestSet& aTestSet );
       
  1666 
       
  1667         /**
       
  1668         * Destructor
       
  1669         */
       
  1670         ~CTestSetCaseMenu();
       
  1671 
       
  1672     public: // New functions
       
  1673         // None
       
  1674 
       
  1675     public: // Functions from base classes    
       
  1676 
       
  1677         /** 
       
  1678         * Return item texts.
       
  1679         */
       
  1680         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
  1681 
       
  1682         /** 
       
  1683         * Prints the menu
       
  1684         */
       
  1685         void AppendBefore( TInt aLineNum, TDes& aLine );
       
  1686         
       
  1687         /** 
       
  1688         * Process keypresses on this menu
       
  1689         */
       
  1690         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );     
       
  1691         
       
  1692     protected:  // New functions
       
  1693 
       
  1694     protected:  // Functions from base classes
       
  1695 
       
  1696        
       
  1697 
       
  1698     private:    // Data
       
  1699     
       
  1700         CTestSetCaseMenu( CStartedTestSet& aTestSet );
       
  1701         
       
  1702         /**
       
  1703         * By default Symbian OS constructor is private.
       
  1704         */
       
  1705         void ConstructL( CConsoleMain* aConsole, 
       
  1706                          CMenu* aParent, 
       
  1707                          const TDesC& aName );
       
  1708     public:     // Data
       
  1709         // None
       
  1710 
       
  1711     protected:  // Data
       
  1712 
       
  1713     private:    // Data
       
  1714         CStartedTestSet& iTestSet;
       
  1715         
       
  1716     public:     // Friend classes
       
  1717         // None
       
  1718 
       
  1719     protected:  // Friend classes
       
  1720         // None
       
  1721 
       
  1722     private:    // Friend classes
       
  1723         // None
       
  1724 
       
  1725     };
       
  1726 
       
  1727 // CONSTANTS
       
  1728 _LIT( KCancelTestSet, "Cancel test set");
       
  1729         
       
  1730 // DESCRIPTION
       
  1731 // Started test sets (passed/failed/...) menu class
       
  1732 class CStartedTestSetMenu 
       
  1733     :public CMenu
       
  1734   
       
  1735     {
       
  1736     public:  // Enumerations
       
  1737         // None
       
  1738 
       
  1739     private: // Enumerations
       
  1740         // None
       
  1741 
       
  1742     public:  // Constructors and destructor
       
  1743         // None
       
  1744 
       
  1745         /**
       
  1746         * NewL is first phase of two-phased constructor.
       
  1747         */
       
  1748         static CStartedTestSetMenu* NewL( CConsoleMain* aConsole, 
       
  1749                                           CMenu* aParent, 
       
  1750                                           const TDesC& aName );
       
  1751 
       
  1752         /**
       
  1753         * Destructor
       
  1754         */
       
  1755         ~CStartedTestSetMenu();
       
  1756 
       
  1757     public: // New functions
       
  1758         // None
       
  1759 
       
  1760     public: // Functions from base classes    
       
  1761 
       
  1762         /** 
       
  1763         * Process keypresses on this menu
       
  1764         */
       
  1765         virtual CMenu* SelectL( TKeyCode aSelectLion, TBool& aContinue );
       
  1766         
       
  1767         /** 
       
  1768         * Return item texts.
       
  1769         */
       
  1770         virtual TInt ItemTexts( RRefArray<TDesC>& aArray );
       
  1771 
       
  1772 
       
  1773         /** 
       
  1774         * Prints the menu
       
  1775         */
       
  1776         void AppendBefore( TInt aLineNum, TDes& aLine );
       
  1777         
       
  1778         
       
  1779     protected:  // New functions
       
  1780 
       
  1781     protected:  // Functions from base classes
       
  1782 
       
  1783        
       
  1784 
       
  1785     private:    // Data
       
  1786     
       
  1787         CStartedTestSetMenu();
       
  1788 
       
  1789         /**
       
  1790         * By default Symbian OS constructor is private.
       
  1791         */
       
  1792         void ConstructL( CConsoleMain* aConsole, 
       
  1793                          CMenu* aParent, 
       
  1794                          const TDesC& aName );
       
  1795     public:     // Data
       
  1796         // None
       
  1797 
       
  1798     protected:  // Data
       
  1799         // None
       
  1800 
       
  1801     private:    // Data
       
  1802         CTestSetCaseMenu*           iCaseMenu;    // Submenu
       
  1803         RRefArray<CStartedTestSet>  iTestSets;
       
  1804         
       
  1805     public:     // Friend classes
       
  1806         // None
       
  1807 
       
  1808     protected:  // Friend classes
       
  1809         // None
       
  1810 
       
  1811     private:    // Friend classes
       
  1812         // None
       
  1813 
       
  1814     };
       
  1815 
       
  1816 // DESCRIPTION
       
  1817 // Menu which shows available filters for test case titles
       
  1818 class CFilterMenu 
       
  1819     :public CMenu
       
  1820   
       
  1821     {
       
  1822     public:  // Enumerations
       
  1823         // None
       
  1824 
       
  1825     private: // Enumerations
       
  1826         // None
       
  1827 
       
  1828     public:  // Constructors and destructor
       
  1829         /**
       
  1830         * NewL is first phase of two-phased constructor.
       
  1831         */
       
  1832         static CFilterMenu* NewL(CConsoleMain* aConsole, 
       
  1833                                  CMenu* aParent, 
       
  1834                                  const TDesC& aName);
       
  1835 
       
  1836         /**
       
  1837         * Destructor.
       
  1838         */
       
  1839         ~CFilterMenu();
       
  1840 
       
  1841     public: // New functions
       
  1842         /**
       
  1843         * Set test case menu, so it can be shown when user selects filter
       
  1844         */
       
  1845         void SetTestCaseMenu(CMenu* aTestCaseMenu);
       
  1846 
       
  1847     public: // Functions from base classes
       
  1848 
       
  1849         /** 
       
  1850         * Process keypresses on this menu
       
  1851         */
       
  1852         virtual CMenu* SelectL(TKeyCode aSelectLion, 
       
  1853                                TBool& aContinue);
       
  1854 
       
  1855         /** 
       
  1856         * Return item texts.
       
  1857         */
       
  1858         virtual TInt ItemTexts(RRefArray<TDesC>& aArray);
       
  1859 
       
  1860     protected:  // New functions
       
  1861         // None
       
  1862 
       
  1863     protected:  // Functions from base classes
       
  1864         /** 
       
  1865         * C++ default constructor.
       
  1866         */
       
  1867         CFilterMenu();
       
  1868         
       
  1869         /**
       
  1870         * By default Symbian OS constructor is private.
       
  1871         */
       
  1872         void ConstructL(CConsoleMain* aConsole,
       
  1873                         CMenu* aParent,
       
  1874                         const TDesC& aName);
       
  1875 
       
  1876     private:    // Functions
       
  1877         // None
       
  1878 
       
  1879     public:     // Data
       
  1880         // None
       
  1881 
       
  1882     protected:  // Data
       
  1883         // None
       
  1884         
       
  1885     private:    // Data
       
  1886         /**
       
  1887         * Test case menu. It will be shown when user selects filter.
       
  1888         */
       
  1889         CMenu *iTestCaseMenu;
       
  1890 
       
  1891     public:     // Friend classes
       
  1892         // None
       
  1893 
       
  1894     protected:  // Friend classes
       
  1895         // None
       
  1896 
       
  1897     private:    // Friend classes
       
  1898         // None
       
  1899 
       
  1900     };
       
  1901    
       
  1902 #endif // CONSOLE_MENUS_H
       
  1903 
       
  1904 // End of File