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