mpx/tsrc/public/basic/common/testviewframework/inc/testmenuview.h
author hgs
Tue, 21 Sep 2010 11:25:55 -0500
changeset 62 b276843a15ba
permissions -rw-r--r--
201037

/*
* Copyright (c) 2002 - 2007 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:  part of testviewframework.
*
*/

#ifndef TESTMENUVIEW_H
#define TESTMENUVIEW_H

//INCLUDES
#include <badesca.h>
#include "testbaseview.h"


// FORWARD DECLARATION
class CConsoleMain;

// CLASS DECLARATION

/**
*  Abstract View class - contains functions which must be derived
*/
class MTestMenuView
    {
    public:
    
        /**
        * Handle number key press
        * NOTE: Must be derived
        */
        virtual void HandleNumKeyL() = 0;
        
        /**
        * Handle left key press
        * NOTE: Must be derived
        */
        virtual void HandleLeftKeyL() = 0;
        
        /**
        * Handle right/enter key press
        * NOTE: Must be derived
        */
        virtual void HandleRightKeyL() = 0;
    };

/**
*  Menu View class - Console base
*/
class CTestMenuView :public CTestBaseView, public MTestMenuView
    {
    public:
        /**
        * Destructor
        */
        IMPORT_C virtual ~CTestMenuView();

        
    public: //Implement abstract function from base classes
        /** 
        * From: CTestBaseView
        * Display view
        */
        IMPORT_C void DisplayViewL();

        /** 
        * From: CTestBaseView
        * Process keypresses on this menu - called by ConsoleMain
        * @param aSelection, key pressed
        * @param aContinue, whether to continue or stop scheduler
        */
        IMPORT_C void SelectL( TKeyCode aSelection, TBool& aContinue );

        /** 
        * From: CTestBaseView
        * Update display from timer - called by ConsoleMain
        */
        IMPORT_C void TimerUpdate();
    

    protected:
    
        /**
        * C++ default constructor
        */
        IMPORT_C CTestMenuView(CConsoleMain* aConsoleMain,
                         CTestBaseView* aParent,
                         const TDesC& aName);

        
        /**
        * NOTE: This function must be call within deriving class ConstructL
        * the second phase constructor ConstructL to safely construct things 
        * that can leave 
        * @param aConsole, console to display menu
        * @param aParent, parent menu
        * @param aName, name of current menu to be set
        * @param aLastMenu, whether the current has child menu
        */
        IMPORT_C void ConstructL();
                         
    protected:
        /** 
        * Print line
        * @param aPrint, descriptor of message to be printed
        */
        IMPORT_C void Print( const TDesC& aPrint);

        /** 
        * Multi line print if message exceeds one line
        * @param aPrint, descriptor of message to be printed
        */
        IMPORT_C void PrintMulti( const TDesC& aPrint );

        /** 
        * Add item to menu
        * @param aItem, item of current menu
        */
        IMPORT_C void AddItemL ( const TDesC& aItem );
        
        /** 
        * Delete an item from menu
        * @param aIndex, index of item to be deleted
        */
        IMPORT_C void DeleteItem ( TInt aIndex );

        /**
        * Get last key pressed
        * @return code of last key pressed
        */
        IMPORT_C TKeyCode LastKeyPressed();

        /**
        * Determine whether there are items added to iItems
        * @return whether item is empty
        */
        IMPORT_C TBool ItemsCreated();

        /**
        * Get the position that the cursor is point to in the items
        * @return index of current cursor pointing item in iItems
        */
        IMPORT_C TInt CurrentIndex();

        /**
        * Get the position that the cursor is point to on the screen
        * @return index of current cursor pointing item on screen
        */
        IMPORT_C TInt CurrentPosition();

        /**
        * Get the item
        * @return reference of item
        */
        IMPORT_C TPtrC ItemL(TInt aIndex);

        /**
        * Count the number of items in the current menu
        * @return number of items in the current menu
        */
        IMPORT_C TInt ItemCount() const;
        
        /**
        * Reads user input into the start of the descriptor aDes
        * @param aDes, descriptor to store input string
        */
        IMPORT_C void ReadString( TDes& aDes );
        
    protected:  // New functions

        /**
        * Append text before original text.
        */
        void AppendBefore(  TInt aLineNum, TDes& aLine );

    protected:  // Data
        CDesCArrayFlat*         iItems;         // View items

        TInt                    iPosOnScreen;  // Position on display
        TInt                    iFirst;        // First displayed item
        TInt                    iLast;         // Last displayed item
        TInt                    iItemCount;    // Last Item
        TSize                   iSize;         // Display size
        TInt                    iScreenSize;   // "Work area" size
        TInt                    iDirection;    // Scrolling direction
        TInt                    iStart;        // Scrolling position
        TInt                    iPrevPos;      // Previous position in scrolling
        TKeyCode                iKey;          // Last key pressed

    };


#endif  //TESTMENUVIEW_H