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