memana/analyzetoolclient/consoleui/inc/atconsoleviews.h
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:51:35 +0200
changeset 0 f0f2b8682603
permissions -rw-r--r--
Add initial version of AnalyzeTool client under EPL

/*
* 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: 
*
*/

#ifndef ATCONSOLE_VIEWS_H
#define ATCONSOLE_VIEWS_H


//  INCLUDES
#include <e32std.h>
#include <e32base.h>

// CONSTANTS
const TInt KViewOverhead = 4;

// Numeric key ascii code values for ATConsoleUI's menu
const TInt KMyKeyDownAsciiCode = 56; // Ascii code for number '8'
const TInt KMyKeyLeftAsciiCode = 52; // Ascii code for number '4'
const TInt KMyKeyRightAsciiCode = 54; // Ascii code for number '6'
const TInt KMyKeyUpAsciiCode = 50;  // Ascii code for number '2'

// FORWARD DECLARATIONS
class CView;
class CConsoleMain;

// CLASS DECLARATION

/**
 * @class CView atconsoleviews.h
 * @brief The CView is used for making views needed in the console
 * application.
 */
class CView
        :public CBase
    {
    public:  // Enumerations
        enum TUpdateType
            {
            EViewPrint,
            EViewRefresh,
            };

    public:  // Constructors and destructor
        // None

        /**
        * NewL is first phase of two-phased constructor.
        */
        static CView* NewL( CConsoleMain* aConsole,
                            CView* aParent,
                            const TDesC& aName, TInt64 aProcessId );

       /**
        * Destructor of CConsoleMain.
        */
        virtual ~CView();

    public: // New functions
    
        /** 
        * Return menu name
        */
        virtual const TDesC& Name() const;

        /** 
        * Return item texts.
        */
        virtual TInt ItemTexts( RArray<TDesC>& aArray );

        /** 
        * Prints the view
        */
        virtual void PrintViewL( TUpdateType  aType );

        /** 
        * Process keypresses on this menu
        */
        virtual CView* SelectL( TKeyCode aSelection, TBool& aContinue );

        /** 
        * Set parent menu
        */
        virtual void SetParent ( CView* aMenu );

        /** 
        * Print line
        */
        virtual void Print( const TDesC& aPrint );

        /** 
        * Add item to menu
        */
        virtual void AddItemL ( CView* aItem );

        /** 
        * Resets the item list
        */
        virtual void ResetItems();

        /** 
        * Update display from timer
        */
		virtual void TimerUpdate();
		
		/**
		* Append text before original text.
		*/
		virtual void AppendBefore(  TInt aLineNum, TDes& aLine );
		
		/**
		* Get menu type.
		*/
		inline TInt Type(){ return iType; };
		
		/**
		* Map KeyCode 
		*/
		void MapKeyCode( TKeyCode &aSelection );

    protected:  // Functions from base classes
        // None    

        /** 
        * C++ default constructor.
        */
        CView();

        /**
        * By default Symbian OS constructor is private.
        */
        void ConstructL( CConsoleMain* aConsole,
                         CView* aParent,
                         const TDesC& aName, TInt64 aProcessId );

    protected:  // Data    
    
        CConsoleBase*           iConsole;      // Pointer to console
        CConsoleMain*           iMain;         // Pointer to main console
        CView*                  iParent;       // Pointer to parent menu
        TName                   iViewName;         // Menu name
        TInt64                  iProcessId;    // Process id of the menu

        RPointerArray<CView>    iItems;        // Menu items

        TInt                    iPositionOnScreen;  // Position on display
        TInt                    iFirstItem;        // First displayed item
        TInt                    iLastItem;         // 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
        // Menu type (which updates must cause console update) 
        TInt                    iType;
		TUpdateType             iUpdateType;
		// Determines if libraries are to be shown
		TBool   iShowLibraries;
		// Determines if set logging mode query is to be shown
		TBool iSetLoggingMode;
    };

/**
 * @class CProcessInfoView atconsoleviews.h
 * @brief The CProcessInfoView is used for showing information about
 * some process and starting/stopping subtests.
 */
class CProcessInfoView 
    :public CView
  
    {

    private: // Enumerations
        enum TProcessInfoView
            {
            EStartSubtestTxtItem,
            EStopSubtestTxtItem,
            EViewLibrariesTxtItem,
            EEndProcessTxtItem,
            EKillProcessTxtItem,
            ECancelLoggingTxtItem
            };

        enum TProcessEnds
            {
            ETryToEnd,
            ETryToKill
            };
            
    public:  // Constructors and destructor

        /**
        * NewL is first phase of two-phased constructor.
        */
        static CProcessInfoView* NewL( CConsoleMain* aConsole,
                                      CView* aParent,
                                      const TDesC& aName, TInt64 aProcessId );

       /**
        * Destructor
        */
        ~CProcessInfoView();

    public: // Functions from base classes

        /** 
        * Return item texts.
        */
        virtual TInt ItemTexts( RArray<TDesC>& aArray );
        
        /** 
        * Process keypresses on this menu
        */
        virtual CView* SelectL( TKeyCode aSelectLion, 
                                TBool& aContinue );
 
        /** 
        * Prints the view
        */
        virtual void PrintViewL( TUpdateType  aType );
        
        /** 
        * Prints libraries
        */
        void ViewLibrariesL();
 
        /** 
        * Prints logging modes
        */
        void SetLoggingModeL();
        
        /**
        * Ends a process with a certain method.
        * @param aCommand command id
        */
        void EndProcessL( TInt aCommand );
        
    protected:  // New functions
        // None

    protected:  // Functions from base classes
        // None
       
        /**
        * By default Symbian OS constructor is private.
        */
        void ConstructL( CConsoleMain* aConsole, 
                         CView* aParent,
                         const TDesC& aName, TInt64 aProcessId );

    private:    // Data
        // Current opened process's info
        TATProcessInfo iCurrentProcessInfo;
        
    };

// CONSTANTS
_LIT( KExitTxt,     "Exit" );

/**
 * @class CMainView atconsoleviews.h
 * @brief The CMainView is used for showing all the processes
 * currently under testing.
 */
class CMainView 
    :public CView
  
    {
    public:  // Constructors and destructor

        /**
        * NewL is first phase of two-phased constructor.
        */
        static CMainView* NewL( CConsoleMain* aConsole, 
                                CView* aParent, 
                                const TDesC& aName );

    public: // Functions from base classes    

        /** 
        * Return item texts.
        */
        virtual TInt ItemTexts( RArray<TDesC>& aArray );

        /** 
        * Process keypresses on this menu
        */
        virtual CView* SelectL( TKeyCode aSelectLion, TBool& aContinue );

    protected:  // Functions from base classes

        /**
        * By default Symbian OS constructor is private.
        */
        void ConstructL( CConsoleMain* aConsole, 
                         CView* aParent,
                         const TDesC& aName );

    };
 
#endif // ATCONSOLE_VIEWS_H

// End of File