stif/ConsoleUI/src/Consolemenus.cpp
changeset 38 169364e7e4b4
parent 34 7259cf1302ad
child 45 185201be11b0
--- a/stif/ConsoleUI/src/Consolemenus.cpp	Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5700 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-* 
-* Description: This module contains implementation of 
-* CMenu-derived classes.
-*
-*/
-
-// INCLUDE FILES
-#include <e32base.h>
-#include <e32cons.h>
-#include <e32svr.h>
-
-#include <f32file.h>
-#include <stifinternal/UIEngineContainer.h>
-
-#include "ConsoleUI.h"
-#include "ConsoleMenus.h"
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES  
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-LOCAL_C void LimitedAppend( TDes& aOriginal, const TDesC& aAppend);
-
-// FORWARD DECLARATIONS
-
-// ==================== LOCAL FUNCTIONS =======================================
-
-LOCAL_C void LimitedAppend( TDes& aOriginal, const TDesC& aAppend)
-    {
-
-    TInt spaceLeft = aOriginal.MaxLength() - aOriginal.Length();
-    
-    if (spaceLeft > aAppend.Length())
-        {
-        aOriginal.Append ( aAppend );
-        }
-    else
-        {       
-        aOriginal.Append ( aAppend.Left ( spaceLeft ) );
-        }
-
-    }
-
-// None
-
-// ================= MEMBER FUNCTIONS =========================================
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CMenu::NewL( CConsoleMain* aConsole,
-                    CMenu* aParent,
-                    const TDesC& aName
-                  )
-    {
-
-    CMenu* self = new ( ELeave ) CMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-				const TDesC& aHeader	  :in:		Text containing STIF version info
-				
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMenu::ConstructL( CConsoleMain* aConsole,
-                        CMenu* aParent,
-                        const TDesC& aName,
-                        const TDesC& aHeader
-                      )
-    {
- 
-    // Store the parameters
-    iMain = aConsole;
-    iConsole = aConsole->GetConsole();
-    iParent = aParent;
-    iName = aName;
-    iHeader = aHeader;
-
-    // Get display size
-    const TInt KOverHead = 5;
-    iSize = iConsole->ScreenSize();
-    iScreenSize = iSize.iHeight - KOverHead;   // Size available for menus
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: CMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu::CMenu()
-    {
-    iDirection = 1;
-    iPrevPos  = -1;     // Invalid starting value
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: ~CMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CMenu::~CMenu()
-    {
-    
-    iItems.ResetAndDestroy();
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: TimerUpdate
-
-    Description: TimerUpdate
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CMenu::TimerUpdate()
-    {    
-    iScrolledLine.Zero();
-    RRefArray<TDesC> texts;
-    User::LeaveIfError( ItemTexts( texts ) );
-    
-    TInt count = texts.Count();
-    // If list is empty, do not scroll.
-    if ( count < 1 )
-        {
-        texts.Close();
-        return;
-        }
-    
-    // Recalculate visible part of menu
-    Recalculate( count );
-
-    // If menu selection is updated, then restart scrolling
-    if (iPrevPos != iFirst + iPosOnScreen)
-        {
-        iPrevPos = iFirst + iPosOnScreen;
-        iStart = 0;
-        iDirection = 1;
-        }
-
-
-    // If menu item have not been changed after last timer, then
-    // start scrolling  
-    const TDesC& name = texts[ iFirst + iPosOnScreen ];
-    if ( name.Length() > ( iSize.iWidth - KMenuOverhead ) )
-        {
-
-        TInt y = iConsole->WhereY();
-        TInt x = iConsole->WhereX();
-        TBuf<80> iTmp;              
-
-        iStart = iStart + iDirection;
-
-        // "Right end"
-        if ( iStart + iSize.iWidth > name.Length() + KMenuOverhead + 2)
-            {
-            iStart--;
-            iDirection = -1;
-            }
-        
-        // "Left end"
-        if ( iStart == -1 )
-            {
-            iStart++;
-            iDirection = 1;
-            }
-        
-        if( iStart > name.Length() )
-            {
-            iStart = 0;
-            }
-
-        iTmp=_L(" *");
-        LimitedAppend( iTmp, name.Mid ( iStart ) );
-            
-        iConsole->SetPos( 0, iPosOnScreen+1);       
-        Print(iTmp);
-        iScrolledLine.Copy(texts[iFirst + iPosOnScreen].Left(iScrolledLine.MaxLength())); 
-
-        iConsole->SetPos(x,y);
-        }
-    texts.Close();
-
-    }
-    
-
-/*
--------------------------------------------------------------------------------
-    Class: CMenu
-
-    Method: AppendBefore
-
-    Description: Append text before line.
-
-    Parameters: TInt aLine: in: line number 
-                TDes& aLine: in: line text
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CMenu::AppendBefore( TInt aLineNum, TDes& aLine )
-    {
-    
-    if( ( aLine.MaxLength() - aLine.Length() ) < 2 )
-        {
-        return;
-        }        
-    
-    // If printing active line, print the marker
-    if ( aLineNum == iPosOnScreen + iFirst )
-        {
-        aLine.Append( _L(" *") );
-        }
-    else
-        {
-        aLine.Append( _L("  ") );
-        }
-        
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CMenu
-
-    Method: PrintMenuL
-
-    Description: Prints the menu
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CMenu::PrintMenuL( TUpdateType aType )
-    {
-
-    iUpdateType = aType;
-    
-    TBuf<KMaxLineLength> line;
-    
-    //if we are moving between items located on the same page clearing screen is not needed
-    if(!iPreventClearScreen)
-        {
-        // Clear display
-        iConsole->ClearScreen();
-        
-        //Print STIF version information, only when defined (i.e. in main menu)
-        if(iHeader != _L(""))
-           Print(iHeader);
-        
-        // Print menu title
-        Print( Name() );
-        
-        RRefArray<TDesC> texts;
-        User::LeaveIfError( ItemTexts( texts ) );
-        
-        // Recalculate visible part of menu
-        Recalculate( texts.Count() );
-        
-        //needed for setting cursor at correct line 
-        iMenuItemsListStartIndex = iConsole->CursorPos().iY;
-        
-        // Print items
-        for ( TInt i = iFirst; i <= iLast; i++ )
-            {
-            line.Zero();
-            
-            // Append text before line
-            AppendBefore( i, line );
-        
-            // Get the menu line
-            LimitedAppend ( line, texts[i] );
-        
-            // Print the line
-            Print(line);
-            }
-        texts.Close();
-        
-        //needed for setting cursor at correct line 
-        iMenuItemsListEndIndex = iConsole->CursorPos().iY;
-        }
-    else
-        {
-        //removing "*" sign from the previous cursor position
-        iConsole->SetPos(0, iPrevPosOnScreen + iMenuItemsListStartIndex);
-        //line.Append( _L("  ") );
-        AppendBefore(iPrevPosOnScreen + iFirst, line);
-        LimitedAppend(line, iScrolledLine);
-        //iConsole->Printf(line);
-        Print(line);
-        iConsole->SetPos(0, iPosOnScreen + iMenuItemsListStartIndex);
-        line.Zero();
-        iScrolledLine.Zero();
-        
-        //writing "*" sign before the currently selected line
-        line.Append( _L(" *") );
-        iConsole->Printf(line);
-        iConsole->SetPos(0, iMenuItemsListEndIndex);
-        iPreventClearScreen = EFalse;
-        }
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: SelectL
-
-    Description: Common method to count all variables needed for printing
-                 page of the screen.
-
-    Parameters: TInt aDelta       :in:      where to move current position
-                 Value > 0 stands for moving down the menu.
-                 Value < 0 stands for moving up the menu.
-
-    Return Values: 
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMenu::MovePosition(TInt aDelta)
-    {
-    if(iItemCount > 0 && aDelta != 0)
-        {
-        // Valid screen size
-        TInt screenSize = iScreenSize + 1;
-        TInt realPosition = iFirst + iPosOnScreen;
-
-        // Number of all pages and items in the last page
-        TInt rest = iItemCount % screenSize;
-        TInt pages = (iItemCount / screenSize) + ((rest == 0) ? (0) : (1));
-
-        // Current page
-        TInt currPage = realPosition / screenSize;
-        
-        // New page
-        TInt newRealPosition = realPosition + aDelta;
-        while(newRealPosition < 0)
-            newRealPosition += iItemCount;
-        newRealPosition %= iItemCount;
-        TInt newPage = newRealPosition / screenSize;
-        
-        // Change position
-        iFirst = newPage * screenSize;
-        iLast = iFirst + screenSize - 1;
-        if(iLast >= iItemCount)
-            iLast = iItemCount - 1;
-        iPrevPosOnScreen = iPosOnScreen;
-        iPosOnScreen = newRealPosition % screenSize;
-        if(newPage == pages - 1 && iPosOnScreen >= rest)
-            iPosOnScreen = rest - 1;
-            
-        // Prevent refreshing
-        iPreventClearScreen = (currPage == newPage);
-        }
-    else
-        iPreventClearScreen = ETrue;    
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Either updates position in
-    menu or returns new menu.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    switch ( (TInt) aSelection )
-    {
-
-    // Exit
-    case EKeyEscape:
-        aContinue = EFalse;
-        return this;
-
-    // SelectL item
-    case EKeyEnter:
-    case EKeyRightArrow:
-        return iItems[iPosOnScreen];
-
-    // Going back
-    case EKeyLeftArrow:
-        return iParent;
-
-    // Go down
-    case EKeyDownArrow:
-        MovePosition(1);
-        break;
-        
-    // Go Up
-    case EKeyUpArrow:
-        MovePosition(-1);
-        break;
-
-    // Additional keys
-    case EKeyHome:
-    case '3':
-        MovePosition(-iFirst - iPosOnScreen);
-        break;
-
-    case EKeyEnd:
-    case '9':
-        MovePosition(iItemCount - 1 - iFirst - iPosOnScreen);
-        break;
-
-    case EKeyPageUp:
-    case '1':
-        MovePosition((iFirst + iPosOnScreen - iScreenSize - 1 >= 0) ? (-iScreenSize - 1) : (-iFirst - iPosOnScreen));
-        break;
-
-    case EKeyPageDown:
-    case '7':
-        MovePosition((iFirst + iPosOnScreen + iScreenSize + 1 < iItemCount) ? (iScreenSize + 1) : (iItemCount - 1 - iFirst - iPosOnScreen));
-        break;
-    default:  // Bypass the keypress
-        break;
-    }
-
-    // Continue normally and keep in the same menu
-    aContinue = ETrue;
-    return this;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    TInt count = iItems.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        if( aArray.Append( iItems[i]->Name() ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-
-    return KErrNone;
-
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: SetParent
-
-    Description: Sets menu parent menu.
-
-    Parameters: CMenu* aMenu              :in:      Menu parent
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMenu::SetParent ( CMenu* aMenu )
-    {
-
-    iParent = aMenu;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: Print
-
-    Description: Prints one line text and changes to next line. If line is
-    too long, overhead is not printed..
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CMenu::Print( const TDesC& aPrint )
-    {
-    
-    iConsole->Write ( aPrint.Left( iSize.iWidth - KMenuOverhead ) );
-    iConsole->Write(_L("\n"));
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: PrintMulti
-
-    Description: Prints text. If line is too long, it will be continued to
-    following lines.
-
-    Parameters: const TDesC& aPrint       :in:      Text to print
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMenu::PrintMulti( const TDesC& aPrint )
-    {
-
-    // Get current line
-    const TInt KMenuOverHead = 2;
-    TInt y = iConsole->WhereY();
-
-    const TInt KLineLen =iSize.iWidth -4;
-    TBuf<KMaxLineLength+1> oneLine;
-
-    // Loop through the line
-    for (TInt i = 0; i < aPrint.Length(); i++)
-        {
-        oneLine.Append( aPrint[i] );
-
-        // Print one line
-        if (oneLine.Length() == KLineLen )
-            {
-            oneLine.Append (_L("\n"));
-            iConsole->Printf(oneLine);
-            oneLine=_L("");
-            y++;
-            }
-    
-        // Prevent display scrolling
-        if ( y == iScreenSize + KMenuOverHead )
-            {
-            oneLine=_L("");
-            break;
-            }
-        }
-
-    // Print last part if required
-    if ( oneLine.Length() != 0 )
-        {
-        oneLine.Append (_L("\n"));
-        iConsole->Printf(oneLine);
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: AddItem
-
-    Description: Add new item to menu
-
-    Parameters: CMenu* aMenu              :in:      Menu to be added
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if can't add item to menu
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMenu::AddItemL( CMenu* aMenu )
-    {
-
-    User::LeaveIfError ( iItems.Append (aMenu) );
-    
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: Name
-
-    Description: Returns menu name
-
-    Parameters: None
-
-    Return Values: const TDesC&                     Menu name
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-const TDesC& CMenu::Name( ) const
-    {
-
-    return iName;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: MapKeyCode
-
-    Description: Maps numeric keycodes to proper TKeyCode values
-
-    Parameters: TKeyCode 
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-
-void CMenu::MapKeyCode(TKeyCode &aSelection)
-    {
-    
-    TInt asciiCode = (TInt) aSelection;
-    
-    // Handling numeric keys 2,4,6 and 8
-    
-    if(asciiCode == KMyKeyUpAsciiCode)
-        {
-        aSelection = EKeyUpArrow;
-        }
-        
-    if(asciiCode == KMyKeyLeftAsciiCode)
-        {
-        aSelection = EKeyLeftArrow;
-        }
-
-    if(asciiCode == KMyKeyRightAsciiCode)
-        {
-        aSelection = EKeyEnter;
-        }
-
-    if(asciiCode == KMyKeyDownAsciiCode)
-        {
-        aSelection = EKeyDownArrow;
-        }
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: Recalculate
-
-    Description: Recalculates visible menu elements
-
-    Parameters: TInt aItemCount    :in:      Menu items count
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CMenu::Recalculate( TInt aItemCount )
-	{    
-    TInt oldItemCount = iItemCount;
-     
-    iItemCount = aItemCount;
- 
-    // If first time in menu, update start and end positions
-    if ( ( iFirst == 0 ) && ( iLast == 0 ) || (iItemCount == 0)) //if there are no items, update start and end positions too
-    	{
-    	if ( iItemCount - 1 > iScreenSize  )
-    		{
-    		iLast = iScreenSize;
-    		}
-    	else
-    		{
-    		iLast = iItemCount - 1;
-    		}
-    	iPosOnScreen = 0;
-    	}
-    // New menu entry added, update last visible element if needed
-    else if ( oldItemCount < iItemCount )
-    	{
-    	if ( iFirst + iScreenSize < iItemCount )
-    		{
-    		iLast = iFirst + iScreenSize;
-    		}
-    	else
-    		{
-    		iLast = iItemCount - 1;
-    		}
-    	}
-    // Menu entry removed, update last visible element if needed
-    else if ( oldItemCount > iItemCount )
-    	{
-    	if ( iFirst + iScreenSize < iItemCount )
-    		{
-    		iLast = iFirst + iScreenSize;
-    		}
-    	else if ( iFirst > iItemCount - 1 )
-    		{
-    		iFirst = iItemCount - 1 - iScreenSize;
-    		if ( iFirst < 0 )
-    			{
-    			iFirst = 0;
-    			}
-    		iLast = iItemCount - 1;
-    		iPosOnScreen = iFirst - iLast;
-    		}
-    	else
-    		{
-    		iLast = iItemCount - 1;
-    		}
-    	
-    	if ( iFirst + iPosOnScreen > iLast )
-    		{
-    		iPosOnScreen = iLast - iFirst;
-    		}
-    	}
-    
-    if (iFirst < 0)
-        {
-        iFirst = 0;
-        }
-    if (iLast > iItemCount)
-        {
-        iLast = iItemCount - 1;
-        }
-    if ( iFirst + iScreenSize < iItemCount )
-        {
-        iLast = iFirst + iScreenSize;
-        }
-	}
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CFileNameQueryView
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CFileNameQueryView* CFileNameQueryView::NewL( CConsoleMain* aConsole,
-                                              CMenu* aParent,
-                                              const TDesC& aName )
-    {
-
-    CFileNameQueryView* self = new ( ELeave ) CFileNameQueryView();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CFileNameQueryView
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CFileNameQueryView::ConstructL( CConsoleMain* aConsole, 
-                                     CMenu* aParent, 
-                                     const TDesC& aName 
-                                    )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName);
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CFileNameQueryView
-
-    Method: ~CFileNameQueryView
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CFileNameQueryView::~CFileNameQueryView()
-    {
-
-    iTestModuleNames.ResetAndDestroy();
-    iTestModuleNames.Close();
-    
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CFileNameQueryView
-
-    Method: ItemText
-
-    Description: Returns menu item text.
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CFileNameQueryView::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    iTestModuleNames.ResetAndDestroy();    
-    
-    // Add loaded module names to menu
-    TInt ret = iMain->UIStore().ListAllModules( iTestModuleNames );
-
-    if( ret != KErrNone )
-        {                 
-        return ret;
-        }
-        
-    TInt count = iTestModuleNames.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        if( aArray.Append( *iTestModuleNames[i] ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-
-    return KErrNone; 
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CFileNameQueryView
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Just return the parent menu
-
-    Parameters: TKeyCode aSelection       :in:      Not used
-                TBool& aContinue          :out:     Has user pressed "Quit"?
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CFileNameQueryView::SelectL( TKeyCode aSelection, 
-                                    TBool& aContinue )
-    {  
-    
-    MapKeyCode(aSelection);
-
-    if (aSelection == EKeyEnter || aSelection == EKeyRightArrow )
-        {
-        if( iPosOnScreen < iTestModuleNames.Count() )
-            {
-            TInt ret = 
-                iMain->UIStore().AddTestModule( *iTestModuleNames[iPosOnScreen] );
-            if( ret != KErrNone )
-                {
-                TErrorNotification error;
-                error.iModule.Copy( _L("ConsoleUI") );
-                error.iText.Copy( _L("Failed to load test module ") );
-                error.iText.Append( *iTestModuleNames[iPosOnScreen] );
-                error.iText.Append( _L(" error "));
-                error.iText.AppendNum( ret );
-                iMain->Error( error );
-                }
-        return iParent;
-            }
-        else
-            {
-            return this;
-            }
-        }  
-
-    return CMenu::SelectL( aSelection, aContinue );
-
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMainMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                const TDesC& aHeader	  :in:		Text containing STIF version information
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMainMenu* CMainMenu::NewL( CConsoleMain* aConsole,
-                            CMenu* aParent,
-                            const TDesC& aName,
-                            const TDesC& aHeader)
-    {
-
-    CMainMenu* self = new ( ELeave ) CMainMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName, aHeader );
-    CleanupStack::Pop( self );
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CMainMenu
-
-    Method: ~CMainMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMainMenu::~CMainMenu()
-    {
-    delete iOutputView;
-    iOutputView = NULL;
-    delete iOperationMenu;
-    iOperationMenu = NULL;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMainMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text. Add "Exit" to normal SelectLion
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CMainMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    TInt ret = CMenu::ItemTexts( aArray );
-    if ( ret != KErrNone )
-    	{
-    	return ret;
-    	}
-    // Add Exit to last one in menu
-    if( aArray.Append( KExitTxt ) != KErrNone )
-        {
-        return KErrNoMemory;
-        }
-
-    return KErrNone;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMainMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                const TDesC& aHeader	  :in:		Text containing STIF version information
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMainMenu::ConstructL( CConsoleMain* aConsole, 
-                            CMenu* aParent,
-                            const TDesC& aName,
-                            const TDesC& aHeader
-                          )
-    {
-    CMenu::ConstructL( aConsole, aParent, aName, aHeader);
-    iOutputView = NULL;
-    iOperationMenu = NULL;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMainMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle SelectLion in this
-    method, other keys are handles in CMenu class.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CMainMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    // If SelectLion == "exit" and right or enter
-    if (aSelection == EKeyEnter || aSelection == EKeyRightArrow )
-        {
-        if ( iPosOnScreen == iItemCount-1 )
-            {
-            // Exit
-            aContinue = EFalse;
-            return this;
-            }
-        }
-
-    // Normal menu handling
-    CMenu* tmp = CMenu::SelectL(aSelection, aContinue);
-    return tmp;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMainMenu
-
-    Method: CreateOutputViewL
-
-    Description: Creates test case output view.
-
-    Parameters: CMenu* aParent: parent menu for case operation menu
-
-    Return Values: CMenu*        New menu
-
-    Errors/Exceptions: Leaves is CCaseExecutionView menu leaves during creation
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CMainMenu::CreateOutputViewL(CMenu* aParent)
-    {
-    // Get test cases that have been run
-    RRefArray<CStartedTestCase> startedTestCases;
-    CleanupClosePushL(startedTestCases);
-    CMenu* res = NULL;
-
-    startedTestCases.Reset();
-    if(iMain->UIStore().StartedTestCases(startedTestCases, CUIStoreIf::EStatusAll) == KErrNone)
-        {                 
-        TInt count = startedTestCases.Count();
-        if(count > 0)
-            {
-            // Create menu with execution info
-            const CStartedTestCase* caseContainer = &startedTestCases[count - 1];
-            delete iOutputView;
-            iOutputView = NULL;
-            delete iOperationMenu;
-            iOperationMenu = NULL;
-
-            iOperationMenu = CCaseOperationMenu::NewL(iMain,
-                                                      aParent, //back to parent menu
-                                                      caseContainer->TestInfo().TestCaseTitle(),
-                                                      caseContainer
-                                                     );
-
-            iOutputView = CCaseExecutionView::NewL(iMain,
-                                                   iOperationMenu, //back to Case Operation Menu
-                                                   caseContainer->TestInfo().TestCaseTitle(),
-                                                   caseContainer
-                                                  );
-            res = iOutputView;
-            }
-        }
-        
-    CleanupStack::PopAndDestroy(&startedTestCases);
-    return res;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CModuleListView
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CModuleListView* CModuleListView::NewL( CConsoleMain* aConsole,
-                                        CMenu* aParent,
-                                        const TDesC& aName )
-    {    
-
-    CModuleListView* self = new ( ELeave ) CModuleListView();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-/*
--------------------------------------------------------------------------------
-
-    Class: CModuleListView
-
-    Method: ~CModuleListView
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CModuleListView::~CModuleListView()
-    {
-    delete iModuleAdd;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CModuleListView
-
-    Method: ConstructL
-
-    Description: Second level constructor. 
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if parent class ConstructL leaves
-                       Leaves if module can't be appended to list
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CModuleListView::ConstructL( CConsoleMain* aConsole,
-                                  CMenu* aParent,
-                                  const TDesC& aName
-                                 )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName);
-   
-    // Construct module menu
-    iModuleAdd  = CFileNameQueryView::NewL ( iMain, this, KSelectMenuTxt );    
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CModuleListView
-
-    Method: ItemText
-
-    Description: Returns menu item text.
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CModuleListView::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    // Add also "Add module" text
-    if( aArray.Append( KAddMenuTxt ) != KErrNone )
-        {
-        return KErrNoMemory;
-        }
-    if( aArray.Append( KLoadMenuTxt ) != KErrNone )
-        {
-        return KErrNoMemory;
-        } 
-        
-    return KErrNone; 
-
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CModuleListView
-
-    Method: PrintMenuL
-
-    Description: Prints the menu
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CModuleListView::PrintMenuL( TUpdateType aType )
-    {
-    
-    // Get module names
-    RRefArray<TDesC> modules;
-    TInt ret = iMain->UIStore().Modules( modules );
-
-    CMenu::PrintMenuL( aType );
-    
-    // Add loaded module names to menu
-    if( ret != KErrNone )
-        {
-        modules.Reset();
-        modules.Close();
-        return;
-        }
-        
-    TBuf<KMaxLineLength> line;
-    TInt count = modules.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        line = _L("    ");
-        LimitedAppend ( line, modules[i] );
-
-        // Print the line
-        Print(line);
-        }
-    modules.Reset();
-    modules.Close();
-    
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CModuleListView
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle right arrow and enter
-                 here, others in parent menu.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CModuleListView::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-    
-    MapKeyCode(aSelection);
-
-    if( ( aSelection == EKeyRightArrow ||
-            aSelection == EKeyEnter ) )
-        {
-        if( iPosOnScreen == EAddMenuTxtItem )
-            {
-            return iModuleAdd;
-            }
-        else if( iPosOnScreen == ELoadMenuTxtItem )
-            {
-            iMain->UIStore().LoadAllModules();
-            return this;
-            }
-        else 
-            {
-            return this;
-            }
-        }
-
-    return CMenu::SelectL( aSelection, aContinue );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseStartMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                TBool aShowOutput         :in:      Show output after test case is run
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CCaseStartMenu* CCaseStartMenu::NewL( CConsoleMain* aConsole,
-                                      CMenu* aParent,
-                                      const TDesC& aName,
-                                      TBool aShowOutput)
-    {
-
-    CCaseStartMenu* self = new ( ELeave ) CCaseStartMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName, aShowOutput );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseStartMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CCaseStartMenu::ConstructL( CConsoleMain* aConsole,
-                                 CMenu* aParent,
-                                 const TDesC& aName,
-                                 TBool aShowOutput
-                               )
-    {
-
-    iShowOutput = aShowOutput;
-    CMenu::ConstructL( aConsole, aParent, aName);
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CCaseStartMenu
-
-    Method: ~CCaseStartMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CCaseStartMenu::~CCaseStartMenu()
-    {
-    iTestCases.Close();
-
-    iMapFilteredToAll.Reset();
-    iMapFilteredToAll.Close();
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseStartMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CCaseStartMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-
-    iTestCases.Reset();
-    TInt ret = iMain->UIStore().TestCases( iTestCases );
-    if( ret != KErrNone )
-        {
-        return ret;
-        }
-    
-    const RPointerArray<TDesC> &filters = iMain->GetFilterArray();
-    const TInt filterindex = iMain->GetFilterIndex(); 
-    iMapFilteredToAll.Reset();
-    
-    TInt count = iTestCases.Count();
-    for( TInt i = 0; i < count; i++ )
-        {
-        //If user has chosen filter, let's apply it
-        if(filterindex > 0) //skip the first filter which always is "No filter"
-            {
-            //Check whether test title is matching the applied filter
-            iTitleLowerCase.Copy(iTestCases[i].TestCaseTitle());
-            iTitleLowerCase.LowerCase();
-            iFilterLowerCase.Copy(*filters[filterindex]);
-            iFilterLowerCase.LowerCase();
-
-            if(iTitleLowerCase.Match(iFilterLowerCase) != KErrNotFound)
-                {
-                ret = aArray.Append(iTestCases[i].TestCaseTitle());
-                if(ret != KErrNone)
-                    {
-                    return ret;
-                    }
-                ret = iMapFilteredToAll.Append(i);
-                if(ret != KErrNone)
-                    {
-                    return ret;
-                    }                
-                }
-            }
-        else
-            {
-            ret = aArray.Append( iTestCases[i].TestCaseTitle() );
-            if(ret != KErrNone)
-                {
-                return ret;
-                }
-            ret = iMapFilteredToAll.Append(i);
-            if(ret != KErrNone)
-                {
-                return ret;
-                }                
-            }
-        }
-        
-    return KErrNone;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseStartMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle enter and right arrow here,
-    others in CMenu::SelectL.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CCaseStartMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    switch ( aSelection )
-        {
-        case EKeyEnter:
-        case EKeyRightArrow:
-            {
-            // Start the case
-            if ( (iFirst + iPosOnScreen) < iMapFilteredToAll.Count() ) //changed from iTestCases to iMapFilteredToAll, because first table keeps info about all test cases, and second one about filtered cases
-                {
-                TInt index;
-                User::LeaveIfError( 
-                    iMain->UIStore().StartTestCase( 
-                        iTestCases[iMapFilteredToAll[iFirst + iPosOnScreen]], index ) );
-                // Create output screen (menu) if needed
-                if(iShowOutput)
-                    {
-                    CMenu* m = iMain->GetMainMenu()->CreateOutputViewL(iParent);
-                    if(m)
-                        return m;
-                    }
-                return iParent;
-                }
-            else
-                {
-                return this;
-                }
-            }
-
-        default:
-            return CMenu::SelectL( aSelection, aContinue);
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CMultipleBaseMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMultipleBaseMenu* CMultipleBaseMenu::NewL( CConsoleMain* aConsole,
-                                            CMenu* aParent,
-                                            const TDesC& aName )
-    {
-
-    CMultipleBaseMenu* self = new ( ELeave ) CMultipleBaseMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CMultipleBaseMenu
-
-    Method: CMultipleBaseMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMultipleBaseMenu::CMultipleBaseMenu(): 
-    iSetFinished( ETrue ),
-    iRunType( ERunSequential ),
-    iMenuTotCount( 0 ),
-    iMenuCount( 0 )
-    {
-    
-    iMenuCount = EChangeAll + 1;
-    iMenuTotCount = iMenuCount;
-    
-    }   
-    
-/*
--------------------------------------------------------------------------------
-
-    CMultipleBaseMenu
-
-    Method: ~CMultipleBaseMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMultipleBaseMenu::~CMultipleBaseMenu()
-    {
-    
-    iSetState.Close();
-    
-    }   
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleBaseMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMultipleBaseMenu::ConstructL( CConsoleMain* aConsole,
-                               CMenu* aParent,
-                               const TDesC& aName 
-                             )
-    {
-
-    CCaseStartMenu::ConstructL( aConsole, aParent, aName );
-
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleBaseMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CMultipleBaseMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-
-    if ( iSetFinished )
-        {
-        if( aArray.Append( KChangeAll ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        
-        if( iUpdateType ==  EMenuPrint )
-            {   
-            TInt ret = UpdateTestCases();
-            if( ret != KErrNone )
-                {                 
-                return ret;
-                }
-            }
-        TInt count = iTestCases.Count();
-        for( TInt j=0; j<count; j++ )
-            {
-            if( aArray.Append( iTestCases[j].TestCaseTitle() ) 
-                != KErrNone )
-                {
-                return KErrNoMemory;
-                }
-            if( aArray.Count() > iSetState.Count())
-                {
-                // Appends iSetState only if aArray's size is bigger @js
-                if( iSetState.Append(EFalse) != KErrNone )
-                    {
-                    return KErrNoMemory;
-                    }
-                }
-            }
-        }
-    else
-        {
-        if( aArray.Append( KCancelSet ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-    
-    return KErrNone;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CMultipleBaseMenu
-
-    Method: AppendBefore
-
-    Description: Append text before line.
-
-    Parameters: TInt aLine: in: line number 
-                TDes& aLine: in: line text
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CMultipleBaseMenu::AppendBefore( TInt aLineNum, TDes& aLine )
-    {
-    
-    CMenu::AppendBefore( aLineNum, aLine );
-    if( ( aLine.MaxLength() - aLine.Length() ) < 2 )
-        {
-        return;
-        }        
-    
-    if( aLineNum >= iMenuTotCount )
-        {
-        if ( iSetState[ aLineNum - iMenuTotCount ] )
-            {
-            aLine.Append(_L("S "));
-            }
-        else
-            {
-            aLine.Append(_L("  "));
-            }
-        }
-   
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleBaseMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle enter and right arrow here,
-    others in CMenu::SelectL.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CMultipleBaseMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    if ( iSetFinished )
-        {
-
-        if ( ( aSelection == EKeyEnter  ) || ( aSelection == EKeyRightArrow ) )
-            {
-            // CMultipleBaseMenu relative position 
-            TInt pos = iFirst + iPosOnScreen - iMenuTotCount + iMenuCount;
-            if( pos  == EChangeAll )
-                {
-                TInt count = iTestCases.Count();    
-
-                // Change all                                       
-                for (TInt i = 0; i < count; i++)
-                    {
-                    iSetState[i] = !iSetState[i];
-                    }
-
-                return this;
-                }
-            else
-                {
-                // Normal item, change state...
-                iSetState[ iFirst + iPosOnScreen - iMenuTotCount ] = 
-                    !iSetState[ iFirst + iPosOnScreen - iMenuTotCount ];
-                return this;
-                }            
-            
-            }
-
-		return CMenu::SelectL( aSelection, aContinue );
-        }
-    else
-        {
-
-        switch ( aSelection )
-            {
-            case EKeyEnter:
-            case EKeyRightArrow:
-                {
-                if ( iOngoingCaseContainer != NULL )
-                    {
-                    iOngoingCaseContainer->UIEngineContainer().CancelTest();
-                    }
-                iSetFinished = ETrue;
-                iFirst = 0;
-                iLast = 0;
-                return this;
-                }
-            default:
-                return CMenu::SelectL( aSelection, aContinue );
-            }
-
-
-
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleBaseMenu
-
-    Method: CheckIfAnyCaseIsSelected
-
-    Description: Checks if any of testcases was selected in multiple selection menu
-
-    Parameters: TInt aCount number of testcases in multiple selection menu
-
-    Return Values: ETrue if any testcase was selected, EFalse if none of testcases was selected
-
-    Errors/Exceptions: None
-
-    Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-TBool CMultipleBaseMenu::CheckIfAnyCaseIsSelected(TInt aCount)
-{
-	TInt currentPos = 0;
-	for(; currentPos<aCount; currentPos++)	
-	{
-		//if any of testcases was selected then return true
-		if (iSetState[currentPos])
-			return ETrue;
-	}
-	//if none of testcases was selected then return false
-	return EFalse;
-}
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleBaseMenu
-
-    Method: SignalL
-
-    Description: Handle test case starts
-
-    Parameters: CStartedTestCase* aContainer: in: CStartedTestCase container
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CMultipleBaseMenu::SignalL( CStartedTestCase* /*aContainer*/ )
-    {
-
-    TInt count = iTestCases.Count();
-    
-    TBool started = EFalse;
-    TInt index;
-    TInt err = KErrNone;
-
-    // Counter to prevent infinite loop when cases can't be started at all
-    // when running cases in repeat mode.
-    TInt casesChecked = 0;
-
-    // If cases are not aborted or not in last case and at least one test
-    // case was selected, start a new one
-    if ( !iSetFinished && iCurrentRunPos != count && CheckIfAnyCaseIsSelected(count) )
-        {
-        // Search next case from set and execute it.
-        while( iCurrentRunPos < count )
-            {
-            if ( iSetState[iCurrentRunPos] )
-                {       
-                err = iMain->UIStore().StartTestCase( 
-                    iTestCases[ iCurrentRunPos ], 
-                    index );
-
-                iCurrentRunPos++;
-                casesChecked++;
-
-                // Go to start of list, if running cases in repeat mode. 
-                // In other modes, just get out from the main loop
-                if( ( iRunType == ERunRepeatSequential ) &&
-                    ( iCurrentRunPos >= count ) )
-                    {
-                    // Restart from first one on next time.
-                    iCurrentRunPos = 0;
-                    }
-
-                // Handle out of memory error separately, because there is
-                // always new test case result display constructed when
-                // starting case => Starting more new cases uses more memory
-                // and it will not work, so stop starting new cases.
-                if( err == KErrNoMemory )
-                    {
-                    iSetFinished = ETrue;
-                    break;
-                    }
-
-                // Get pointer to ongoing case in case that user wants to
-                // cancel it.
-                iOngoingCaseContainer = 
-                    &iMain->UIStore().StartedTestCaseL( index );
-
-                // Store pointer to this object to allow 
-                // SignalL call when test case is completed
-                iOngoingCaseContainer->iBackPtr = (TAny*)this;
-
-                if( err != KErrNone )
-                    {
-                    TFullTestResult result;  
-                    result.iTestResult.iResult = err;
-                    result.iTestResult.iResultDes.Copy( 
-                                            _L("Failed to start testcase") );
-                    // Prevent infinite loop in case, where
-                    // ERunRepeatSequential and ALL cases fail to start.
-                    if ( iRunType == ERunRepeatSequential && 
-                                            casesChecked == count )
-                        {
-                        // In this state, started = EFalse so final check
-                        // stops running
-                        break;
-                        }
-                    }
-                else if( ( iRunType == ERunSequential ) ||
-                         ( iRunType == ERunRepeatSequential ) )
-                    {
-                    started = ETrue;
-                    break;
-                    }
-                }
-            else 
-                {
-                iCurrentRunPos++;
-                casesChecked++;
-
-                // Go to start of list, if running cases in repeat mode. 
-                // In other modes, just get out from the main loop
-                if( ( iRunType == ERunRepeatSequential ) &&
-                    ( iCurrentRunPos >= count ) )
-                    {
-                    // Restart from first one
-                    iCurrentRunPos = 0;
-                    }
-                }
-            }
-        }
-
-    if ( err == KErrNoMemory )
-    	{
-    	iMain->ExitWithNoMemoryErrorMessage();
-    	}
-    
-    // If nothing was selected, then mark set as finished. 
-    // Or running cases at same time, so all have been started.
-    if ( started == EFalse )
-        {
-        iFirst = 0;
-        iLast = 0;
-        iSetFinished = ETrue;
-        iCurrentRunPos = 0;
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleBaseMenu
-
-    Method: UpdateTestCases
-
-    Description: 
-
-    Parameters: 
-
-    Return Values: 
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CMultipleBaseMenu::UpdateTestCases()
-    {
-
-    // Update test cases
-    iTestCases.Reset();
-    iSetState.Reset();
-    return iMain->UIStore().TestCases( iTestCases );
-            
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CMultipleCaseMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMultipleCaseMenu* CMultipleCaseMenu::NewL( CConsoleMain* aConsole,
-                                            CMenu* aParent,
-                                            const TDesC& aName )
-    {
-
-    CMultipleCaseMenu* self = new ( ELeave ) CMultipleCaseMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CMultipleCaseMenu
-
-    Method: CMultipleCaseMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMultipleCaseMenu::CMultipleCaseMenu()    
-    {
-    
-    iMenuItemsCount = ERepeatRunSelection + 1;
-    iMenuItemsCount++; //Select all between already selected
-    iMenuTotCount += iMenuItemsCount;
-    
-    }   
-
-/*
--------------------------------------------------------------------------------
-
-    CMultipleCaseMenu
-
-    Method: ~CMultipleCaseMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMultipleCaseMenu::~CMultipleCaseMenu()
-    {
-    }   
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleCaseMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMultipleCaseMenu::ConstructL( CConsoleMain* aConsole,
-                               CMenu* aParent,
-                               const TDesC& aName 
-                             )
-    {
-
-    CCaseStartMenu::ConstructL( aConsole, aParent, aName );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleCaseMenu
-
-    Method: StartRunningL
-
-    Description: Start running multiple cases.
-
-    Parameters: TRunType aRunType: in: Running type
-                const TDesC& aModule: in: module name 
-                const TDesC& aTestCaseFile: in: test case file name 
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves on error
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CMultipleCaseMenu::StartRunningL( TRunType aRunType, 
-                                       const TDesC& aModule, 
-                                       const TDesC& aTestCaseFile )
-    {
-    
-    // Update test cases
-    iTestCases.Reset();
-    iSetState.Reset();
-    User::LeaveIfError( 
-        iMain->UIStore().TestCases( iTestCases, aModule, aTestCaseFile ) );
-    
-    // Select all for running
-    TInt count = iTestCases.Count();
-    for( TInt j=0; j<count; j++ )
-        {
-        User::LeaveIfError( iSetState.Append(ETrue) );
-        }
-        
-    // Start running
-    iCurrentRunPos = 0;
-    iSetFinished = EFalse;
-    iRunType = aRunType;
-    SignalL ( NULL );
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleCaseMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CMultipleCaseMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-
-    if ( iSetFinished )
-        {
-        if( aArray.Append( KRunSequentially ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        if( aArray.Append( KRunParallel ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        if( aArray.Append( KRepeatRunSequentially ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        if(aArray.Append(KSelectFromTo) != KErrNone)
-            {
-            return KErrNoMemory;
-            }
-        }
-
-    TInt ret = CMultipleBaseMenu::ItemTexts(aArray);
-    if(ret != KErrNone)
-        {
-        return ret;
-        }
-    
-    return KErrNone;    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMultipleCaseMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle enter and right arrow here,
-    others in CMenu::SelectL.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CMultipleCaseMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    if ( iSetFinished )
-        {
-        switch ( aSelection )
-            {
-            case EKeyEnter:
-            case EKeyRightArrow:
-                {
-
-                if ( iFirst + iPosOnScreen == ERunSelection )
-                    {
-                    // Start the first one
-                    iCurrentRunPos = 0;
-                    iSetFinished = EFalse;
-                    iRunType = ERunSequential;
-                    SignalL ( NULL );
-
-                    return iParent;
-                    }
-                else if ( iFirst + iPosOnScreen == ERunSelectionParaller )
-                    {
-                    // Start the first one
-                    iCurrentRunPos = 0;
-                    iSetFinished = EFalse;
-                    iRunType = ERunParallel;
-                    SignalL ( NULL );
-
-                    return iParent;
-                    }
-                else if ( iFirst + iPosOnScreen == ERepeatRunSelection )
-                    {
-                    // Start the first one
-                    iCurrentRunPos = 0;
-                    iSetFinished = EFalse;
-                    iRunType = ERunRepeatSequential;
-                    SignalL ( NULL );
-
-                    return iParent;
-                    }
-                else if(iFirst + iPosOnScreen == ESelectFromTo)
-                    {
-                    TInt count = iTestCases.Count();
-                    TInt indexFirst = count;
-                    TInt indexLast = count - 1;
-                    TInt i;
-                    
-                    // Find first test case which is set
-                    for(i = 0; i < count; i++)
-                        {
-                        if(iSetState[i])
-                            {
-                            indexFirst = i;
-                            break;
-                            }
-                        }
-                    
-                    // Find last test case which is set
-                    if(indexFirst < count)
-                        {
-                        for(i = count - 1; i > indexFirst; i--)
-                            {
-                            if(iSetState[i])
-                                {
-                                indexLast = i;
-                                break;
-                                }
-                            }
-                        
-                        // Set test cases between first and last
-                        for(i = indexFirst; i <= indexLast; i++)
-                            {
-                            iSetState[i] = ETrue;
-                            }
-                        }
-
-                    return this;
-                    }
-                }
-                break;
-            default:
-                break;
-            }
-        }   
-        
-    return CMultipleBaseMenu::SelectL( aSelection, aContinue );
-        
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                TCaseState aType          :in:      Case state
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CCaseMenu* CCaseMenu::NewL( CConsoleMain* aConsole, 
-                            CMenu* aParent, 
-                            const TDesC& aName, 
-                            TInt aType )
-    {
-
-    CCaseMenu* self = new ( ELeave ) CCaseMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName, aType );
-    CleanupStack::Pop( self );
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                TCaseState aType          :in:      Case state
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if parent class ConstructL leaves
-                       Leaves if memory allocation fails
-                       Leaves if CCaseOperation menu NewL leaves
-                       Leaves if UpcateCaseListL leaves
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CCaseMenu::ConstructL( CConsoleMain* aConsole, 
-                            CMenu* aParent, 
-                            const TDesC& aName, 
-                            TInt aType
-                          )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName);
-    iType = aType;
-
-    }
-
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseMenu
-
-    Method: ~CCaseMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CCaseMenu::~CCaseMenu()
-    {
-
-    delete iCaseOperationMenu;
-    iCaseOperationMenu = 0;
-    
-    iTestCases.Close();
-
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CCaseMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    iTestCases.Reset();
-    
-    TInt ret = iMain->UIStore().StartedTestCases( iTestCases, iType );
-    if ( ret != KErrNone )
-    	{
-    	return ret;
-    	}
-
-    TInt count = iTestCases.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        if( aArray.Append( iTestCases[i].TestInfo().TestCaseTitle() ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-
-    return KErrNone;
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CCaseMenu
-
-    Method: AppendBefore
-
-    Description: Append text before line.
-
-    Parameters: TInt aLine: in: line number
-                TDes& aLine: in: line text
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CCaseMenu::AppendBefore(TInt aLineNum, TDes& aLine)
-    {
-    CMenu::AppendBefore(aLineNum, aLine);
-
-    //START of --Add number to the test case title--
-    //First check how much space we need
-    TInt additionalSpace = 0;
-    TInt currentCount = aLineNum + 1;
-
-    if(currentCount >= 10000) additionalSpace = 10; //f.e. "10157521. "
-    else if(currentCount >= 1000) additionalSpace = 6; //f.e. "1157. "
-    else if(currentCount >= 100) additionalSpace = 5; //f.e. "101. "
-    else if(currentCount >= 10) additionalSpace = 4; //f.e. "15. "
-    else additionalSpace = 3; //f.e. "1. "
-
- //Create descriptor, add content to it, and finally append to line
-    TBuf<20> num;
-
-    if(iTestCases[aLineNum].Status() == CUIStoreIf::EStatusRunning )
- 	   {
-    if( iTestCases[aLineNum].UIEngineContainer().State() == CUIEngineContainer::EPaused)
-     	{
-     	  //If not enough space, return
-     	if((aLine.MaxLength() - aLine.Length()) < additionalSpace + 4)
-     	     {
-     	     return;
-     	     }
-     		num.Format(_L("%d.(P) "), currentCount);
-     	}
-     else
-     	{
-        //If not enough space, return
-     	if((aLine.MaxLength() - aLine.Length()) < additionalSpace)
-     		{
-     	  	return;
-     	     }     		  			
-     	num.Format(_L("%d."), currentCount);
-     	}
- 	   }
-    aLine.Append(num);
-    }
-    //END of --Add number to test case title--
-    
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle Enter and Right Arrow
-    here, other will be handled in CMenu::SelectL
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CCaseMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    switch (aSelection)
-        {
-        case EKeyEnter:
-        case EKeyRightArrow:
-            {
-            if ( iFirst + iPosOnScreen < iTestCases.Count() )
-                {
-                delete iCaseOperationMenu;
-                iCaseOperationMenu = 0;
-                iCaseOperationMenu = CCaseOperationMenu::NewL( 
-                    iMain, 
-                    this, 
-                    iTestCases[iFirst + iPosOnScreen].TestInfo().TestCaseTitle(), 
-                    &iTestCases[iFirst + iPosOnScreen] );   
-
-                return iCaseOperationMenu;
-                }
-            }
-            return this;
-        default:
-            // Let the parent class handle rest
-            return CMenu::SelectL(aSelection, aContinue);
-        }
-    
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseOperationMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                CStartedTestCase* aCaseContainer:in: Case container
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CCaseOperationMenu* CCaseOperationMenu::NewL( CConsoleMain* aConsole,
-                                 CMenu* aParent,
-                                 const TDesC& aName,
-                                 const CStartedTestCase* aCaseContainer
-                               )
-    {
-
-    CCaseOperationMenu* self = new ( ELeave ) CCaseOperationMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName, aCaseContainer );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseOperationMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                CStartedTestCase* aCaseContainer:in: Case container
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CCaseOperationMenu::ConstructL( CConsoleMain* aConsole,
-                                     CMenu* aParent,
-                                     const TDesC& aName,
-                                     const CStartedTestCase* aCaseContainer
-                                   )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName); 
-    iCaseContainer = aCaseContainer;
-    
-    // Indicate that this menu contains prints, update when needed
-    iType = CUIStoreIf::EStatusExecuted;
-    
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CMenu
-
-    Method: ~CMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CCaseOperationMenu::~CCaseOperationMenu()
-    {
-    delete iView;
-    iView = 0;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseOperationMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CCaseOperationMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    if( iCaseContainer->Status() & CUIStoreIf::EStatusRunning )
-        {
-        if( aArray.Append( KOutputViewDes ) != KErrNone )
-            {
-            return KErrNoMemory; 
-            }
-                
-        // Set resume/pause text
-        if( iCaseContainer->UIEngineContainer().State() == 
-            CUIEngineContainer::EPaused )
-            {
-            if( aArray.Append( KResumeCaseDes ) != KErrNone )
-                {
-                return KErrNoMemory; 
-                }
-            }
-        else
-            {
-            if( aArray.Append( KPauseCaseDes ) != KErrNone )
-                {
-                return KErrNoMemory; 
-                }
-            }
-        if( aArray.Append( KAbortCaseDes ) != KErrNone )
-            {
-            return KErrNoMemory; 
-            }
-        }
-    else
-        {
-        if(aArray.Append(KRestartCaseDes) != KErrNone)
-            {
-            return KErrNoMemory; 
-            }
-        if( aArray.Append( KOutputViewDes ) != KErrNone )
-            {
-            return KErrNoMemory; 
-            }
-        }
-
-    return KErrNone;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CMenu
-
-    Method: PrintMenuL
-
-    Description: Prints the menu and test case specific information after that.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if FormatL leaves
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CCaseOperationMenu::PrintMenuL( TUpdateType  aType )
-    {
-
-    // Print menu
-    CMenu::PrintMenuL( aType );
-    
-    // Print the result description + result code
-    // If case is finished, print also result string
-    TInt state = iCaseContainer->Status();
-    if  ( ! ( state & CUIStoreIf::EStatusRunning ) )
-        {        
-
-        TName resultLine;
-        
-        Print (_L(""));
-        resultLine.Append(_L("Result info: ") );
-
-        if( state & CUIStoreIf::EStatusPassed )
-            {
-            resultLine.Append( _L("Passed" ) );
-            } 
-        else if( state & CUIStoreIf::EStatusFailed )
-            {
-            resultLine.Append( _L("Failed" ) );
-            } 
-        else if( state & CUIStoreIf::EStatusAborted )
-            {
-            resultLine.Append( _L("Aborted" ) );
-            } 
-        else if( state & CUIStoreIf::EStatusCrashed )
-            {
-            resultLine.Append( _L("Crashed" ) );
-            }
-        PrintMulti( resultLine );
-        resultLine.Zero();             
-
-        // Print test results
-        if( !( ( state & CUIStoreIf::EStatusAborted ) || 
-               ( state & CUIStoreIf::EStatusCrashed ) || 
-               ( state & CUIStoreIf::EStatusPassed ) ) )
-            {
-
-            resultLine.Format(_L("Result code %d"), 
-                iCaseContainer->Result().iTestResult.iResult );
-            PrintMulti ( resultLine );            
-            }
-
-        if( iCaseContainer->Result().iCaseExecutionResultType == 
-            TFullTestResult::ECaseErrorFromModule )
-            {
-            PrintMulti ( _L("Error from RunTestCase():"));
-            }
-
-        // Print result descriptor if that is available
-        const TDesC& des = iCaseContainer->Result().iTestResult.iResultDes;
-        if ( des.Length() >0 )
-            {
-            PrintMulti(des);
-            }
-
-        // Print abort code if that is available
-        if( ( state & CUIStoreIf::EStatusAborted ) ||
-            ( state & CUIStoreIf::EStatusCrashed ) )
-            {
-            // Print abort type, if that is available
-            TFullTestResult::TCaseExecutionResult res = 
-                iCaseContainer->Result().iCaseExecutionResultType;
-            
-            if ( res == TFullTestResult::ECaseLeave ||
-                 res == TFullTestResult::ECasePanic ||
-                 res == TFullTestResult::ECaseException || 
-                 res == TFullTestResult::ECaseErrorFromModule ||
-                 res == TFullTestResult::ECaseSuicided )
-                {
-                TInt code = iCaseContainer->Result().iCaseExecutionResultCode;
-                resultLine.Format(_L("Code %d (0x%x)"), code, code );
-                PrintMulti ( resultLine );
-                }
-            }
-
-        // Print start and end times
-        const TInt KTimeFieldLength = 30;
-        TBuf<KTimeFieldLength> time;
-        _LIT(KDateString,"%-B%:0%J%:1%T%:2%S%.%*C4%:3%+B");
-
-        resultLine = _L("Started:");
-        iCaseContainer->Result().iStartTime.FormatL(time,KDateString);
-        resultLine.Append(time);
-        PrintMulti (resultLine);
-
-        resultLine = _L("Completed:");
-        iCaseContainer->Result().iEndTime.FormatL(time,KDateString);
-        
-        resultLine.Append(time);
-        PrintMulti (resultLine);
-
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseOperationMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle Enter and right arrow
-    here, others are handled in parent menu.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CCaseOperationMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {   
-
-    MapKeyCode(aSelection);
-    
-    if (aSelection == EKeyEnter || aSelection == EKeyRightArrow )
-        {        
-        // restartOptionModifier is used because when test case is running
-        // restart option is not available (and visible) and that's why
-        // we need to modify switch by 1.
-        // When test case is finished, restart option becomes available
-        // and is put at the first place.
-        TInt restartOptionModifier = 0;
-        if(iCaseContainer->Status() & CUIStoreIf::EStatusRunning)
-            restartOptionModifier = 1;
-        
-        switch (iPosOnScreen + iFirst + restartOptionModifier)
-        {
-        case ERestartCase:
-            {
-            TInt index;
-            User::LeaveIfError(iMain->UIStore().StartTestCase(iCaseContainer->TestInfo(), index));
-            // Create output screen
-            CMenu* m = iMain->GetMainMenu()->CreateOutputViewL(iParent);
-            return m;
-            }
-        case EOutputView:
-            {
-            delete iView;
-            iView = 0;
-            iView = CCaseExecutionView::NewL( 
-                iMain, 
-                this, 
-                iCaseContainer->TestInfo().TestCaseTitle(), 
-                iCaseContainer );
-
-            return iView;
-            }
-
-        case EPauseResume:
-
-            if( iCaseContainer->UIEngineContainer().State() == 
-                CUIEngineContainer::ERunning )
-                {    
-                // Pausing a running case
-                iCaseContainer->UIEngineContainer().PauseTest();
-
-                }
-            else if( iCaseContainer->UIEngineContainer().State() == 
-                     CUIEngineContainer::EPaused )
-                {
-                // Resuming a paused case
-                iCaseContainer->UIEngineContainer().ResumeTest();
-
-                }
-            // No other possibilities
-            return this;
-
-        case EAbortCase:
-            iCaseContainer->UIEngineContainer().CancelTest();
-            break;
-
-        }
-        
-        return this;
-        }
-    else
-        {
-        return CMenu::SelectL(aSelection, aContinue);
-        }
-        
-    }
-
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseExecutionView
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                CStartedTestCase* aCase :in:      Case container
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CCaseExecutionView* CCaseExecutionView::NewL( CConsoleMain* aConsole,
-                                              CMenu* aParent,
-                                              const TDesC& aName,
-                                              const CStartedTestCase* aCase )
-    {
-
-    CCaseExecutionView* self = new ( ELeave ) CCaseExecutionView();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName, aCase );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseExecutionView
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                CStartedTestCase* aCase :in:      Case container
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if parent class ConstructL leaves
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CCaseExecutionView::ConstructL( CConsoleMain* aConsole,
-                                     CMenu* aParent,
-                                     const TDesC& aName,
-                                     const CStartedTestCase* aCase
-                                    )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName );
-
-    iCase = aCase;
-    
-    // Indicate that this menu contains prints, update when needed
-    iType = CUIStoreIf::EPrintUpdate;
-
-    iLine = 0;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CCaseExecutionView
-
-    Method: ~CCaseExecutionView
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CCaseExecutionView::~CCaseExecutionView()
-    {
-    delete iLineTextBuf;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CMenu
-
-    Method: PrintMenuL
-
-    Description: Prints the menu. Show the test status and the test case
-    print statements.
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CCaseExecutionView::PrintMenuL( TUpdateType  /*aType*/ )
-    {
-    
-    if( iShowLine )
-        {
-        // User want to see whole line 
-        iConsole->ClearScreen();
-        this->PrintMulti( iLineTextBuf->Des() );
-        return;
-        }
-
-    // Print the status
-    TName tmp;
-    TInt state = iCase->Status();
-    if( state & CUIStoreIf::EStatusRunning )
-        {
-        if( iCase->UIEngineContainer().State() == 
-            CUIEngineContainer::EPaused )
-            {
-            tmp = _L("Paused");
-            }
-        else
-            {
-            tmp = _L("Running");
-            }
-        }
-    else if( state & CUIStoreIf::EStatusPassed )
-        {
-        tmp = _L("Passed");
-        }
-    else if( state & CUIStoreIf::EStatusFailed )
-        {
-        tmp = _L("Failed");
-        }
-    else if( state & CUIStoreIf::EStatusAborted )
-        {
-        tmp = _L("Aborted");
-        }
-    else if( state & CUIStoreIf::EStatusCrashed )
-        {
-        tmp = _L("Aborted");
-        }
-    else
-        {
-        tmp = _L("Unknown");
-        }
-    
-    // Clear screen.
-    iConsole->ClearScreen();
-    TBuf<KMaxLineLength> line;
-
-    line.Append(_L(" : "));
-    LimitedAppend(line, iCase->TestInfo().TestCaseTitle() );
-    Print( line );
-
-    const RPointerArray<CTestProgress>& prints = iCase->PrintArray();
-
-    Recalculate( prints.Count() );
-
-    // Print the print statements.
-    for ( TInt i = iFirst; i <= iLast; i++ )
-        {
-        line.Zero();
-        if( iLine == i )
-            {
-            line = _L( "*" ); // For indicating current line
-            }
-        line.Append( prints[i]->iDescription );
-        line.Append(_L(" : "));
-        LimitedAppend(line, prints[i]->iText );
-
-        // Print the line
-        TSize screenSize;
-        screenSize = iConsole->ScreenSize();
-        Print ( line.Left(screenSize.iWidth ) );
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseExecutionView
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Either updates position in
-    menu or returns new menu.
-
-    Parameters: TKeyCode aSelection: in: Key
-                TBool& aContinue: out: Has user pressed "Quit"
-
-    Return Values: CMenu* New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CCaseExecutionView::SelectL( TKeyCode aSelection, TBool& /*aContinue*/ )
-    {
-    iShowLine = EFalse;
-    MapKeyCode(aSelection);
-
-    // Take prints
-    const RPointerArray<CTestProgress>& prints = iCase->PrintArray();
-
-    switch( aSelection  )
-        {        
-        case EKeyEnter:
-        case EKeyRightArrow:
-            {
-            // Check that not out of range(too many EKeyUpArrow or EKeyDownArrow)
-            if( iLine >= prints.Count() || iLine < 0)
-                {
-                // do nothing
-                break;
-                }
-            TInt extra = 3; // ' : '
-            TInt length( 0 );
-            length = length + prints[iLine]->iDescription.Length();
-            length = length + prints[iLine]->iText.Length();
-            // Selected print line in seperate(operation will do in
-            // CCaseExecutionView::PrintMenuL() method )
-            delete iLineTextBuf;
-			iLineTextBuf = NULL;
-            TRAPD( ret, iLineTextBuf = HBufC::NewL( length + extra ) );
-            if( ret != KErrNone )
-                {
-                User::InfoPrint( _L("Line show failed, maybe out of memory!!!") );
-                break;
-                }
-            TPtr ptr = iLineTextBuf->Des();
-            ptr.Copy( prints[iLine]->iDescription );
-            ptr.Append( _L( " : " ) );
-            ptr.Append( prints[iLine]->iText );
-            iShowLine = ETrue;
-            break;
-            }
-        case EKeyLeftArrow:
-            {
-            return iParent;
-            }
-		// Go down
-		case EKeyDownArrow:
-			{
-			if ( iFirst + iPosOnScreen == iItemCount - 1 )
-				{
-				// If end of the list, go to beginning
-				iPosOnScreen = 0;
-				iFirst = 0;
-				iLast = iScreenSize;
-				if ( iLast > iItemCount - 1 )
-					{
-					iLast = iItemCount - 1;
-					}
-				iLine = 0;
-				}
-			else 
-				{
-				if ( iPosOnScreen == iScreenSize )
-					{
-					iLast++;
-					iFirst++;
-					}
-				else
-					{
-					// Going down "in-screen", no need to update items
-					iPosOnScreen++;
-					}
-				iLine++;
-				}			
-			break;
-			}
-			
-		// Go Up
-		case EKeyUpArrow:
-			{
-			if ( iFirst + iPosOnScreen == 0 )
-				{
-				// If in the beginning of the list
-
-				iLast = iItemCount - 1;
-				iFirst = iLast - iScreenSize;
-				if ( iFirst < 0 )
-					{
-					iFirst = 0;            	
-					}
-				iPosOnScreen = iLast - iFirst;
-				iLine = iItemCount - 1;
-				}
-			else 
-				{
-				if ( iPosOnScreen == 0 )
-					{
-					iLast--;
-					iFirst--;
-					}
-				else
-					{
-					iPosOnScreen--;
-					}
-				iLine--;
-			}
-			break;
-			}
-		// Additional keys
-		case EKeyHome:
-		case '3':
-			iPosOnScreen = 0;
-			iLine = 0;
-			iFirst = 0;
-			iLast = iScreenSize;
-
-			if ( iLast > iItemCount - 1 )
-				{
-				iLast = iItemCount - 1;
-				}
-			break;
-
-		case EKeyEnd:
-		case '9':
-			iLast = iItemCount - 1;
-			iFirst = iLast - iScreenSize;
-			iLine = iItemCount - 1;
-			
-			if ( iFirst < 0 )
-				{
-				iFirst = 0;
-				}
-			iPosOnScreen = iLast - iFirst;        
-			break;
-
-		case EKeyPageUp:
-		case '1':
-			iFirst = iFirst - iScreenSize;
-			iLast = iLast - iScreenSize;
-
-			if ( iFirst < 0 )
-				{
-				iFirst = 0;
-				iLast = iScreenSize;
-				if ( iLast > iItemCount - 1 )
-					{
-					iLast = iItemCount - 1;
-					}
-				iPosOnScreen = 0;
-				}
-			
-			iLine = iLine - iScreenSize;
-			if ( iLine < 0 )
-				{
-				iLine = 0;
-				}
-			break;
-
-		case EKeyPageDown:
-		case '7':
-			iFirst = iFirst + iScreenSize;
-			iLast = iLast + iScreenSize;
-
-			// Going too far
-			if ( iLast > iItemCount - 1 )
-				{
-				iLast = iItemCount - 1;
-				iFirst = iLast - iScreenSize;
-				if ( iFirst < 0 )
-					{
-					iFirst = 0;
-					}
-				iPosOnScreen = iLast - iFirst;
-				}
-
-			iLine = iLine + iScreenSize;
-			if ( iLine > iItemCount - 1 )
-				{
-				iLine = iItemCount - 1;
-				}
-			break;
-        default:
-            {
-            break;
-            }
-        }
-    
-    return this;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetMenu* CTestSetMenu::NewL( CConsoleMain* aConsole,
-                                        CMenu* aParent,
-                                        const TDesC& aName )
-    {    
-
-    CTestSetMenu* self = new ( ELeave ) CTestSetMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-       
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetMenu
-
-    Method: CTestSetMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetMenu::CTestSetMenu():
-    iTestSetCreated( EFalse )
-    {
-    
-    iTestSetName.Copy( KDefaultSetName );    
-    
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetMenu
-
-    Method: ~CTestSetMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CTestSetMenu::~CTestSetMenu()
-    {
-    
-    delete iSubMenu;
-    iSubMenu = 0;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor. 
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if parent class ConstructL leaves
-                       Leaves if module can't be appended to list
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetMenu::ConstructL( CConsoleMain* aConsole,
-                                  CMenu* aParent,
-                                  const TDesC& aName
-                                 )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName);
-   
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetMenu
-
-    Method: SetTestSetName
-
-    Description: Set test set name.
-
-    Parameters: const TFileName& aTestSetName: in: Test set name
-
-    Return Values: None
-    
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetMenu::SetTestSetFileName( const TFileName& aTestSetName )
-    {
-    
-    iTestSetName.Copy( aTestSetName );    
-    
-    }
-        
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text.
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    if( !iTestSetCreated )
-        {
-        if( aArray.Append( KSetCreate ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        if( aArray.Append( KSetLoad ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }        
-        }
-    else
-        {
-        if( aArray.Append( KSetShow ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                
-        if( aArray.Append( KSetStartSeq ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                
-        if( aArray.Append( KSetStartPar ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        if( aArray.Append( KSetUnload ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                        
-        if( aArray.Append( KSetRemove ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                
-        if( aArray.Append( KSetSave ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                
-        if( aArray.Append( KSetCaseAdd ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                
-        if( aArray.Append( KSetCaseRemove ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                
-        if( aArray.Append( KSetStartSeqNotRun ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }                
-        }
-        
-    return KErrNone; 
-
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CTestSetMenu
-
-    Method: PrintMenuL
-
-    Description: Prints the menu
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CTestSetMenu::PrintMenuL( TUpdateType aType )
-    {
-    
-    if( iTestSetCreated )
-        {
-        RRefArray<CTestSetInfo> setInfos;
-        TInt ret = iMain->UIStore().TestSets( setInfos );
-
-        CMenu::PrintMenuL( aType );
-
-        if( (  ret != KErrNone ) ||
-            ( setInfos.Count() != 1 ) )
-            {
-            // Should never ever happen
-            User::Panic( KTestSetMenu, KErrGeneral );
-            return;
-            }
-        const CTestSetInfo& set = setInfos[0];
-        setInfos.Reset();
-        setInfos.Close();
-        
-        const RRefArray<const CTestInfo> testCases = set.TestCases();
-        
-        TBuf<KMaxLineLength> line;
-        TInt count = testCases.Count();
-        for(TInt i = 0; i < count && i + ESetLAST <= iScreenSize; i++)
-            {
-            line = _L("    ");
-            LimitedAppend ( line, testCases[i].TestCaseTitle() );
-
-            // Print the line
-            Print(line);
-            }
-        }
-    else
-        {
-        CMenu::PrintMenuL( aType );
-        }    
-    
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle right arrow and enter
-                 here, others in parent menu.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CTestSetMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-    TBuf<32> currSetName;
-    MapKeyCode(aSelection);    
-    
-    if( ( aSelection != EKeyRightArrow ) &&
-        ( aSelection != EKeyEnter ) )
-        {
-        return CMenu::SelectL( aSelection, aContinue );
-        }            
-    
-    TInt ret = KErrNone;        
-    if( !iTestSetCreated )
-        {
-        switch( iPosOnScreen )
-            {
-            case ESetCreate:
-                ret = iMain->UIStore().CreateTestSet( iTestSetName );
-                if( ret != KErrNone )
-                    {
-                    User::InfoPrint( _L("Test set creation failed") );
-                    }
-                break;
-            case ESetLoad: 
-            
-            	return iItems[0];
-            } 
-        if( ret == KErrNone )
-            {
-            iTestSetCreated = ETrue;
-            }      
-        }
-    else
-        {
-        CStartedTestSet::TSetType setType = CStartedTestSet::ESetSequential;
-        switch( iPosOnScreen )
-            {
-            case ESetShow:   
-            // Add the test sets menu
-                delete iSubMenu;
-                iSubMenu = 0;
-                iSubMenu = CStartedTestSetMenu::NewL( iMain, 
-                                        this, 
-                                        _L("Started test sets menu"));
-                return iSubMenu;
-            case ESetUnload:
-                ret = iMain->UIStore().UnloadTestSet( iTestSetName );
-                if( ret != KErrNone )
-                    {
-                    User::InfoPrint( _L("Test set unload failed") );
-                    }
-                iTestSetCreated = EFalse;                  
-                break;
-            case ESetRemove: 
-                ret = iMain->UIStore().RemoveTestSet( iTestSetName );
-                if( ret != KErrNone )
-                    {
-                    User::InfoPrint( _L("Test set remove failed") );
-                    }
-                iTestSetCreated = EFalse;  
-                break;
-            case ESetCaseAdd:   
-                delete iSubMenu;
-                iSubMenu = 0;
-                iSubMenu = CTestSetAddCaseMenu::NewL( 
-                                iMain, 
-                                this, 
-                                _L("Add test cases to test set"),
-                                iTestSetName );
-                                
-                return iSubMenu;
-            case ESetCaseRemove: 
-                delete iSubMenu;
-                iSubMenu = 0;
-                iSubMenu =  CTestSetRemoveCaseMenu::NewL( 
-                                iMain, 
-                                this, 
-                                _L("Remove test cases from test set"),
-                                iTestSetName );
-                                
-                                
-                return iSubMenu;  
-            case ESetSave:   
-                // during the save operation default set name (ConsoleUI.set) is replaced with
-                // new name created base on current date.
-                // Set is the reloaded to make sure that 
-                // old test set with default name will not affect test execution
-                currSetName.Copy( iTestSetName );
-                ret = iMain->UIStore().SaveTestSet2( iTestSetName );
-                if( ret != KErrNone )
-                    {
-                    User::InfoPrint( _L("Test set saving failed at saving test set") );
-                    } 
-                
-                break;
-  
-  			default:          
-//            case ESetStartPar:   
-//                setType = CStartedTestSet::ESetParallel;
-//            case ESetStartSeq: 
-            //case ESetStartRep: 
-            	if( iPosOnScreen == ESetStartPar )
-                  {
-	            		setType = CStartedTestSet::ESetParallel;
-                  }
-              if( iPosOnScreen == ESetStartSeq || iPosOnScreen == ESetStartSeqNotRun)
-	                {
-	                RRefArray<CTestSetInfo> setInfos;
-	                ret = iMain->UIStore().TestSets( setInfos );
-	                if( (  ret != KErrNone ) ||
-	                    ( setInfos.Count() != 1 ) )
-	                    {
-	                    // Should never ever happen
-	                    User::Panic( KTestSetMenu, KErrGeneral );
-	                    }
-	                const CTestSetInfo& set = setInfos[0];
-	                setInfos.Reset();
-	                setInfos.Close();
-	                
-	                TInt index;
-	                ret = KErrGeneral;
-	                if(iPosOnScreen == ESetStartSeq)
-	                    {
-                        ret = iMain->UIStore().StartTestSet(set, index, setType);
-                        }
-                    else if(iPosOnScreen == ESetStartSeqNotRun)
-                        {
-	                    ret = iMain->UIStore().StartTestSet(set, index, setType, ETrue);
-	                    }
-	                if( ret != KErrNone )
-	                    {
-	                    User::InfoPrint( _L("Test set starting failed") );
-	                    }                 
-	                }    
-                break;
-            }
-        }
-        
-    return this;
-
-    }
-/**
--------------------------------------------------------------------------------
-
-Class: CTestSetChoiceMenu
-
-Method: NewL
-
-Description: Constructs new menu.
-
-Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-            CMenu* aParent            :in:      Parent menu
-            const TDesC& aName        :in:      Menu name
-
-Return Values: CMenu*                           New menu
-
-Errors/Exceptions: Leaves if memory allocation fails
-                   Leaves if ConstructL leaves.
-
-Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetChoiceMenu* CTestSetChoiceMenu::NewL( CConsoleMain* aConsole,
-                                    CMenu* aParent,
-                                    const TDesC& aName )
-{    
-
-	CTestSetChoiceMenu* self = new ( ELeave ) CTestSetChoiceMenu();
-	CleanupStack::PushL( self );
-	self->ConstructL( aConsole, aParent, aName );
-	CleanupStack::Pop( self );
-	return self;
-
-}
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetChoiceMenu
-
-    Method: CTestSetChoiceMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetChoiceMenu::CTestSetChoiceMenu()
-    
-    {
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetChoiceMenu
-
-    Method: ~CTestSetChoiceMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CTestSetChoiceMenu::~CTestSetChoiceMenu()
-    {
-    
-    
-
-    iFileList.ResetAndDestroy();
-    iFileList.Close();
-
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetChoiceMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor. 
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if parent class ConstructL leaves
-                       Leaves if module can't be appended to list
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetChoiceMenu::ConstructL( CConsoleMain* aConsole,
-                                  CMenu* aParent,
-                                  const TDesC& aName
-                                 )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName);    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetChoiceMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text.
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetChoiceMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-
-   TInt ret = iMain->UIStore().GetTestSetsList( aArray );
-
-	if ( ret != KErrNone )
-		{
-		return ret;
-		}
-
-   iFileList.ResetAndDestroy();
-   TRAPD( err,
-	//Assign aArray to iFileList, it is used in LoadTestSet
-   for( TInt i=0 ; i < aArray.Count(); i++)
-	  {
-	  iFileList.AppendL(aArray[i].AllocL());
-	  }
-     ); // TRAPD
-   return err;       
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CTestSetChoiceMenu
-
-    Method: PrintMenuL
-
-    Description: Prints the menu
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CTestSetChoiceMenu::PrintMenuL( TUpdateType aType )
-    {
-    
-    iUpdateType = aType;
-    
-    TBuf<KMaxLineLength> line;
-    
-    // Clear display
-    iConsole->ClearScreen();
-
-    // Print menu title
-    Print( Name() );
-    
-    RRefArray<TDesC> texts;
-    if(  iMain->UIStore().GetTestSetsList( texts ) != KErrNone )
-        {
-        return;
-        }
-    
-    TInt oldItemCount = iItemCount;
-     
-    iItemCount = texts.Count();
-
-    // If first time in menu, update start and end positions
-    if( (iFirst == iLast) ||        // First time here..
-        ( iLast >= iItemCount ) ||
-        ( oldItemCount != iItemCount ) )      // Menu size changed
-        {
-        iLast = iItemCount - 1;
-        iPosOnScreen = 0;
-
-        // If "overflow", then adjust the end
-        if (iLast > iScreenSize )
-            {
-            iLast = iScreenSize;
-            }
-        }
-    
-    // Print items
-    for ( TInt i = iFirst; i <= iLast; i++ )
-        {
-        line.Zero();
-        
-        // Append text before line
-        AppendBefore( i, line );
-
-        // Get the menu line
-        LimitedAppend ( line, texts[i] );
-
-        // Print the line
-        Print(line);
-
-        }
-    texts.Close();
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetChoiceMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle right arrow and enter
-                 here, others in parent menu.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CTestSetChoiceMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-    
-    //return CMenu::SelectL( aSelection, aContinue );    
-    //return iParent;
-	    MapKeyCode(aSelection);
-	    TInt ret = 0;
-
-        switch ( aSelection )
-            {
-            case EKeyEnter:
-            case EKeyRightArrow:
-                {           
-                if(iPosOnScreen < iFileList.Count())
-                    {
-                    ret = iMain->UIStore().LoadTestSet( iFileList.operator [](iPosOnScreen)->Des() );
-                    if (ret == KErrNone)
-                        {
-                        ((CTestSetMenu*)iParent)->SetCreated();
-                        ((CTestSetMenu*)iParent)->SetTestSetFileName(iFileList.operator [](iPosOnScreen)->Des());
-                        }
-                    return iParent;
-                    }
-                else
-                    {
-                    return this;
-                    }
-                }
-            default:
-                break;
-            }
-            
-    return CMenu::SelectL( aSelection, aContinue );    
-
-    }
-
-
-
-
-
-
-/*
--------------------------------------------------------------------------------
-
-    CTestSetAddCaseMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetAddCaseMenu* CTestSetAddCaseMenu::NewL( CConsoleMain* aConsole,
-                                            CMenu* aParent,
-                                            const TDesC& aName,
-                                            TDesC& aTestSetName )
-    {
-
-    CTestSetAddCaseMenu* self = 
-        new ( ELeave ) CTestSetAddCaseMenu( aTestSetName );
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CTestSetAddCaseMenu
-
-    Method: CTestSetAddCaseMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetAddCaseMenu::CTestSetAddCaseMenu( TDesC& aTestSetName ):
-    iTestSetName( aTestSetName )    
-    {
-    
-    iMenuItemsCount = EAddSelected + 1;
-    iMenuTotCount += iMenuItemsCount;
-    
-    }   
-
-/*
--------------------------------------------------------------------------------
-
-    CTestSetAddCaseMenu
-
-    Method: ~CTestSetAddCaseMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetAddCaseMenu::~CTestSetAddCaseMenu()
-    {
-    }   
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetAddCaseMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetAddCaseMenu::ConstructL( CConsoleMain* aConsole,
-                               CMenu* aParent,
-                               const TDesC& aName )
-    {
-
-    CCaseStartMenu::ConstructL( aConsole, aParent, aName );
-
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetAddCaseMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetAddCaseMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    if ( iSetFinished )
-        {
-        if( aArray.Append( KAddSelected ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-    
-    return CMultipleBaseMenu::ItemTexts( aArray );
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetAddCaseMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle enter and right arrow here,
-    others in CMenu::SelectL.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CTestSetAddCaseMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    if ( iSetFinished )
-        {
-        switch ( aSelection )
-            {
-            case EKeyEnter:
-            case EKeyRightArrow:
-                {
-
-                if ( iFirst + iPosOnScreen == EAddSelected )
-                    {
-                    TInt count = iTestCases.Count();    
-                    for( TInt i=0; i<count; i++ )
-                        {
-                        if ( iSetState[i] )
-                            {
-                            TInt ret = 
-                                iMain->UIStore().AddToTestSet( iTestSetName,
-                                                               iTestCases[i] );
-                            if( ret != KErrNone )
-                                {
-                                User::InfoPrint( _L("Test case adding failed") );
-                                }   
-                            }
-                        } 
-                    return iParent;
-                    }               
-                }
-                break;
-            default:
-                break;
-            }
-        }   
-        
-    return CMultipleBaseMenu::SelectL( aSelection, aContinue );
-        
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CTestSetAddCaseMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetRemoveCaseMenu* CTestSetRemoveCaseMenu::NewL( CConsoleMain* aConsole,
-                                            CMenu* aParent,
-                                            const TDesC& aName,
-                                            TDesC& aTestSetName )
-    {
-
-    CTestSetRemoveCaseMenu* self = 
-        new ( ELeave ) CTestSetRemoveCaseMenu( aTestSetName );
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CTestSetRemoveCaseMenu
-
-    Method: CTestSetRemoveCaseMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetRemoveCaseMenu::CTestSetRemoveCaseMenu( TDesC& aTestSetName ):
-    iTestSetName( aTestSetName )    
-    {
-    
-    iMenuItemsCount = ERemoveSelected + 1;
-    iMenuTotCount += iMenuItemsCount;
-    
-    }   
-
-/*
--------------------------------------------------------------------------------
-
-    CTestSetRemoveCaseMenu
-
-    Method: ~CTestSetRemoveCaseMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetRemoveCaseMenu::~CTestSetRemoveCaseMenu()
-    {
-    }   
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetRemoveCaseMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetRemoveCaseMenu::ConstructL( CConsoleMain* aConsole,
-                               CMenu* aParent,
-                               const TDesC& aName )
-    {
-
-    CCaseStartMenu::ConstructL( aConsole, aParent, aName );
-
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetRemoveCaseMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetRemoveCaseMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-
-    if ( iSetFinished )
-        {
-        if( aArray.Append( KRemoveSelected ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-    
-    return CMultipleBaseMenu::ItemTexts( aArray );
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetRemoveCaseMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle enter and right arrow here,
-    others in CMenu::SelectL.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CTestSetRemoveCaseMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    if ( iSetFinished )
-        {
-        switch ( aSelection )
-            {
-            case EKeyEnter:
-            case EKeyRightArrow:
-                {
-
-                if ( iFirst + iPosOnScreen == ERemoveSelected )
-                    {
-                    TInt count = iTestCases.Count();    
-                    for( TInt i=0; i<count; i++ )
-                        {
-                        if ( iSetState[i] )
-                            {
-                            TInt ret = 
-                                iMain->UIStore().RemoveFromTestSet( iTestSetName,
-                                                                    iTestCases[i] );
-                            if( ret != KErrNone )
-                                {
-                                User::InfoPrint( _L("Test case adding failed") );
-                                }   
-                            }
-                        } 
-                    return iParent;
-                    }               
-                }
-                break;
-            default:
-                break;
-            }
-        }   
-        
-    return CMultipleBaseMenu::SelectL( aSelection, aContinue );
-        
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetRemoveCaseMenu
-
-    Method: UpdateTestCases
-
-    Description: 
-
-    Parameters: 
-
-    Return Values: 
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetRemoveCaseMenu::UpdateTestCases()
-    {
-    
-    TRAPD( err,
-        const CTestSetInfo& set = iMain->UIStore().TestSetL( iTestSetName );                
-        const RRefArray<const CTestInfo>& testCases = set.TestCases();
-
-        // Update test cases
-        iTestCases.Reset();
-        iSetState.Reset();
-        
-        TInt count = testCases.Count();
-        for( TInt i=0; i<count; i++ )
-            {
-            err = iTestCases.Append( testCases[i] );
-            if( err != KErrNone )
-                {
-                break;
-                }
-            }
-
-        ); // TRAPD
-                
-    return err;
-                
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CCaseMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                TCaseState aType          :in:      Case state
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CStartedTestSetMenu* CStartedTestSetMenu::NewL( CConsoleMain* aConsole, 
-                            CMenu* aParent, 
-                            const TDesC& aName )
-    {
-
-    CStartedTestSetMenu* self = new ( ELeave ) CStartedTestSetMenu();
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStartedTestSetMenu
-
-    Method: CStartedTestSetMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CStartedTestSetMenu::CStartedTestSetMenu()
-    {
-    iType = CUIStoreIf::ESetAll;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStartedTestSetMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                TCaseState aType          :in:      Case state
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if parent class ConstructL leaves
-                       Leaves if memory allocation fails
-                       Leaves if CCaseOperation menu NewL leaves
-                       Leaves if UpcateCaseListL leaves
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CStartedTestSetMenu::ConstructL( CConsoleMain* aConsole, 
-                            CMenu* aParent, 
-                            const TDesC& aName )
-    {
-
-    CMenu::ConstructL( aConsole, aParent, aName);
-
-    }
-
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStartedTestSetMenu
-
-    Method: ~CStartedTestSetMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CStartedTestSetMenu::~CStartedTestSetMenu()
-    {
-
-    delete iCaseMenu;
-    iCaseMenu = 0;
-    
-    iTestSets.Reset();
-    iTestSets.Close();
-
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CStartedTestSetMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CStartedTestSetMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    iTestSets.Reset();
-    
-    TInt ret = iMain->UIStore().StartedTestSets( iTestSets, iType );
-    if ( ret != KErrNone )
-    	{
-    	return ret;
-    	}
-
-    TInt count = iTestSets.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        if( aArray.Append( iTestSets[i].TestSetInfo().Name() ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-
-    return KErrNone;
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CStartedTestSetMenu
-
-    Method: AppendBefore
-
-    Description: Append text before line.
-
-    Parameters: TInt aLine: in: line number 
-                TDes& aLine: in: line text
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CStartedTestSetMenu::AppendBefore( TInt aLineNum, TDes& aLine )
-    {
-    
-    CMenu::AppendBefore( aLineNum, aLine );
-    
-    if( ( aLine.MaxLength() - aLine.Length() ) < 2 )
-        {
-        return;
-        }        
-    if( iTestSets[aLineNum].Status() & CUIStoreIf::ESetRunning )
-        {
-        aLine.Append( _L("O ") );
-        }
-    else if( iTestSets[aLineNum].Status() & CUIStoreIf::ESetPassed )
-        {
-        aLine.Append( _L("P ") );
-        }    
-    else if( iTestSets[aLineNum].Status() & CUIStoreIf::ESetFailed )
-        {
-        aLine.Append( _L("F ") );
-        }    
-            
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CStartedTestSetMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle Enter and Right Arrow
-    here, other will be handled in CMenu::SelectL
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CStartedTestSetMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-
-    MapKeyCode(aSelection);
-    
-    switch (aSelection)
-        {
-        case EKeyEnter:
-        case EKeyRightArrow:
-            {
-            if ( iFirst + iPosOnScreen < iTestSets.Count() )
-                {
-                delete iCaseMenu;
-                iCaseMenu = 0;
-                iCaseMenu = CTestSetCaseMenu::NewL( 
-                    iMain, 
-                    this, 
-                    iTestSets[iFirst + iPosOnScreen].TestSetInfo().Name(), 
-                    iTestSets[iFirst + iPosOnScreen] ); 
-
-                return iCaseMenu;
-                }
-            }
-            return this;
-        default:
-            break;
-        }   
-        
-    // Let the parent class handle rest
-    return CMenu::SelectL(aSelection, aContinue);
-    
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetCaseMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                TCaseState aType          :in:      Case state
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetCaseMenu* CTestSetCaseMenu::NewL( CConsoleMain* aConsole, 
-                                          CMenu* aParent, 
-                                          const TDesC& aName,
-                                          CStartedTestSet& aTestSet  )
-    {
-
-    CTestSetCaseMenu* self = new ( ELeave ) CTestSetCaseMenu( aTestSet );
-    CleanupStack::PushL( self );
-    self->ConstructL( aConsole, aParent, aName );
-    CleanupStack::Pop( self );
-    return self;
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetCaseMenu
-
-    Method: CTestSetCaseMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CTestSetCaseMenu::CTestSetCaseMenu( CStartedTestSet& aTestSet ):
-    iTestSet( aTestSet )
-    {
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetCaseMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-                TCaseState aType          :in:      Case state
-
-    Return Values: None
-
-    Errors/Exceptions: Leaves if parent class ConstructL leaves
-                       Leaves if memory allocation fails
-                       Leaves if CCaseOperation menu NewL leaves
-                       Leaves if UpcateCaseListL leaves
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CTestSetCaseMenu::ConstructL( CConsoleMain* aConsole, 
-                            CMenu* aParent, 
-                            const TDesC& aName )
-    {
-
-    CCaseMenu::ConstructL( aConsole, aParent, aName, 
-                           CUIStoreIf::EStatusAll );
-
-    }
-
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetCaseMenu
-
-    Method: ~CTestSetCaseMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-CTestSetCaseMenu::~CTestSetCaseMenu()
-    {
-    }
-
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetCaseMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CTestSetCaseMenu::ItemTexts( RRefArray<TDesC>& aArray )
-    {
-    
-    if ( iTestSet.Status() & CUIStoreIf::ESetRunning )
-        {
-        if( aArray.Append( KCancelTestSet ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }
-        }
-    
-    const RRefArray<CStartedTestCase>& testCases = iTestSet.TestCases();
-        
-    iTestCases.Reset();
-    
-    TInt count = testCases.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        if( iTestCases.Append( testCases[i] ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }  
-        if( aArray.Append( testCases[i].TestInfo().TestCaseTitle() ) != KErrNone )
-            {
-            return KErrNoMemory;
-            }   
-        }
-
-    return KErrNone;
-    
-    }
-
-/*
--------------------------------------------------------------------------------
-    Class: CTestSetCaseMenu
-
-    Method: AppendBefore
-
-    Description: Append text before line.
-
-    Parameters: TInt aLine: in: line number 
-                TDes& aLine: in: line text
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-    
--------------------------------------------------------------------------------
-*/
-void CTestSetCaseMenu::AppendBefore( TInt aLineNum, TDes& aLine )
-    {
-    
-    CMenu::AppendBefore( aLineNum, aLine );
-   
-    TInt testCaseNum = aLineNum; 
-    if( iTestSet.Status() & CUIStoreIf::ESetRunning ) 
-        {
-        if( aLineNum == 0 )
-            {
-            // "Cancel test set" row
-            return;
-            }
-        testCaseNum--;
-        }
-        
-    if( ( aLine.MaxLength() - aLine.Length() ) < 2 )
-        {
-        return;
-        }        
-    
-   if( iTestCases[testCaseNum].Status() & CUIStoreIf::EStatusRunning )
-        {
-        aLine.Append( _L("O ") );
-        }
-    else if( iTestCases[testCaseNum].Status() & CUIStoreIf::EStatusPassed )
-        {
-        aLine.Append( _L("P ") );
-        }
-    else if( iTestCases[testCaseNum].Status() & CUIStoreIf::EStatusFailed )
-        {
-        aLine.Append( _L("F ") );
-        }
-    else if( iTestCases[testCaseNum].Status() & CUIStoreIf::EStatusAborted )
-        {
-        aLine.Append( _L("A ") );
-        }
-    else if( iTestCases[testCaseNum].Status() & CUIStoreIf::EStatusCrashed )
-        {
-        aLine.Append( _L("C ") );
-        }
-
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CTestSetCaseMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle enter and right arrow here,
-    others in CMenu::SelectL.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CTestSetCaseMenu::SelectL( TKeyCode aSelection, TBool& aContinue )
-    {
-    
-    MapKeyCode(aSelection);
-
-    if( ( aSelection == EKeyEnter ) || ( aSelection == EKeyRightArrow ) )
-        {
-        TInt pos = iFirst + iPosOnScreen; 
-        if( iTestSet.Status() & CUIStoreIf::ESetRunning )
-            {
-            pos--;
-            }               
-        if( pos == -1 )
-            {
-            User::LeaveIfError( 
-                iMain->UIStore().AbortTestSet( iTestSet ) );
-            return iParent;             
-            }
-        else if( pos < iTestCases.Count() )
-            {
-            delete iCaseOperationMenu;
-            iCaseOperationMenu = 0;
-            iCaseOperationMenu = CCaseOperationMenu::NewL( 
-                iMain, 
-                this, 
-                iTestCases[pos].TestInfo().TestCaseTitle(), 
-                &iTestCases[pos] ); 
-
-            return iCaseOperationMenu;
-            }
-        }
-
-        // Let the parent class handle rest
-    return CMenu::SelectL(aSelection, aContinue);
-    }
-        
-/*
--------------------------------------------------------------------------------
-
-    Class: CFilterMenu
-
-    Method: NewL
-
-    Description: Constructs new menu.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: Leaves if memory allocation fails
-                       Leaves if ConstructL leaves.
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CFilterMenu* CFilterMenu::NewL(CConsoleMain* aConsole,
-                               CMenu* aParent,
-                               const TDesC& aName)
-    {
-    CFilterMenu* self = new (ELeave) CFilterMenu();
-    CleanupStack::PushL(self);
-    self->ConstructL(aConsole, aParent, aName);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CFilterMenu
-
-    Method: ConstructL
-
-    Description: Second level constructor.
-
-    Parameters: CConsoleMain* aConsole    :in:      Pointer to main console
-                CMenu* aParent            :in:      Parent menu
-                const TDesC& aName        :in:      Menu name
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CFilterMenu::ConstructL(CConsoleMain* aConsole,
-                             CMenu* aParent,
-                             const TDesC& aName
-                            )
-    {
-    CMenu::ConstructL(aConsole, aParent, aName);
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    CFilterMenu
-
-    Method: CFilterMenu
-
-    Description: Constructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CFilterMenu::CFilterMenu()
-    {
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    CFilterMenu
-
-    Method: ~CFilterMenu
-
-    Description: Destructor
-
-    Parameters: None
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CFilterMenu::~CFilterMenu()
-    {
-    delete iTestCaseMenu;
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CFilterMenu
-
-    Method: ItemText
-
-    Description: Returns menu item text
-
-    Parameters: const TInt                :in:      Menu index
-
-    Return Values: const TDesC&                     Menu line text
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CFilterMenu::ItemTexts(RRefArray<TDesC>& aArray)
-    {
-    const RPointerArray<TDesC> &filters = iMain->GetFilterArray();
-    TInt ret;
-    
-    TInt count = filters.Count();
-    for(TInt i = 0; i < count; i++)
-        {    
-        ret = aArray.Append(*filters[i]);
-        if(ret != KErrNone)
-            {
-            return ret;
-            }
-        }
-        
-    return KErrNone;
-    }
-
-/*
--------------------------------------------------------------------------------
-
-    Class: CFilterMenu
-
-    Method: SelectL
-
-    Description: Process keypresses in menu. Handle enter and right arrow here,
-    others in CMenu::SelectL.
-
-    Parameters: TKeyCode aSelection       :in:      Key
-                TBool& aContinue          :out:     Has user pressed "Quit"
-
-    Return Values: CMenu*                           New menu
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CMenu* CFilterMenu::SelectL(TKeyCode aSelection, TBool& aContinue)
-    {
-    const RPointerArray<TDesC> &filters = iMain->GetFilterArray();
-    
-    MapKeyCode(aSelection);
-    
-    switch ( aSelection )
-        {
-        case EKeyEnter:
-        case EKeyRightArrow:
-            {
-            // Start the case
-            if((iFirst + iPosOnScreen) < filters.Count())
-                {
-                // Show test cases menu
-                iMain->SetFilterIndex(iFirst + iPosOnScreen);
-                if(iTestCaseMenu)
-                    {
-                    return iTestCaseMenu;
-                    }
-                else
-                    {
-                    RDebug::Print(_L("STIF: CFilterMenu::SelectL: test case menu is not set, however it should be"));
-                    return this;
-                    }
-                }
-            else
-                {
-                return this;
-                }
-            }
-
-        default:
-            return CMenu::SelectL( aSelection, aContinue);
-        }
-    }
-    
-/*
--------------------------------------------------------------------------------
-
-    Class: CFilterMenu
-
-    Method: SetTestCaseMenu
-
-    Description: Set pointer to test case menu, so it can be shown when user
-                 selects filter.
-                 This menu will be deleted along with the filter menu.
-
-    Parameters: CMenu* aTestCaseMenu      :in:      test case menu
-
-    Return Values: None
-
-    Errors/Exceptions: None
-
-    Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CFilterMenu::SetTestCaseMenu(CMenu* aTestCaseMenu)
-    {
-    if(iTestCaseMenu)
-        {
-        RDebug::Print(_L("STIF: CFilterMenu::SetTestCaseMenu: test case menu is already set!"));
-        delete iTestCaseMenu;
-        iTestCaseMenu = NULL;
-        }
-    iTestCaseMenu = aTestCaseMenu;
-    }
-
-// End of File