mpx/tsrc/public/basic/common/testviewframework/src/consolemain.cpp
author hgs
Tue, 21 Sep 2010 11:25:55 -0500
changeset 62 b276843a15ba
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002 - 2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  CConsoleMain class implementation
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// INCLUDES
hgs
parents:
diff changeset
    19
#include "testbaseview.h"
hgs
parents:
diff changeset
    20
#include "consolereader.h"
hgs
parents:
diff changeset
    21
#include "scrollertimer.h"
hgs
parents:
diff changeset
    22
#include "consolemain.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
// CONSTANTS
hgs
parents:
diff changeset
    25
_LIT(KNameTxt,"TEST FRAMEWORK");
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    28
//  Class: CConsoleMain
hgs
parents:
diff changeset
    29
//  Method: NewL
hgs
parents:
diff changeset
    30
//  Description: Construct the console main class
hgs
parents:
diff changeset
    31
//  Parameters: None
hgs
parents:
diff changeset
    32
//  Return Values: CConsoleMain*                    New object
hgs
parents:
diff changeset
    33
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    34
//
hgs
parents:
diff changeset
    35
EXPORT_C CConsoleMain* CConsoleMain::NewL(CActiveScheduler* aScheduler)
hgs
parents:
diff changeset
    36
    {
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
    CConsoleMain* self = new ( ELeave ) CConsoleMain(aScheduler);
hgs
parents:
diff changeset
    39
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    40
    self->ConstructL();
hgs
parents:
diff changeset
    41
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    42
    return self;
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
    }
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    47
//  Method: ActivateL
hgs
parents:
diff changeset
    48
//  Description: Activate a view and start the view handling
hgs
parents:
diff changeset
    49
//  Parameters: aRootView, a root view of test app
hgs
parents:
diff changeset
    50
//  Return Values: None
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
//
hgs
parents:
diff changeset
    53
EXPORT_C void CConsoleMain::ActivateL( CTestBaseView* aRootView )
hgs
parents:
diff changeset
    54
    {
hgs
parents:
diff changeset
    55
    
hgs
parents:
diff changeset
    56
    iReader = CConsoleReader::NewL( this, iConsole );
hgs
parents:
diff changeset
    57
	iScroller = CScrollerTimer::NewL ( this );
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
    // Construct keystroke reader
hgs
parents:
diff changeset
    60
    iScroller->Start();	
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
    // Print the main menu
hgs
parents:
diff changeset
    63
    iCurrentView = aRootView;
hgs
parents:
diff changeset
    64
    iCurrentView->DisplayViewL();
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
    // Start to process keyboard events
hgs
parents:
diff changeset
    67
    iReader->Start();
hgs
parents:
diff changeset
    68
    
hgs
parents:
diff changeset
    69
    iSchedulerStarted = TRUE;    
hgs
parents:
diff changeset
    70
    iScheduler->Start();
hgs
parents:
diff changeset
    71
    }
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    74
//  Method: Stop
hgs
parents:
diff changeset
    75
//  Description: Stop refreshing menu and the timer
hgs
parents:
diff changeset
    76
//  Parameters: None
hgs
parents:
diff changeset
    77
//  Return Values: None
hgs
parents:
diff changeset
    78
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    79
//
hgs
parents:
diff changeset
    80
EXPORT_C void CConsoleMain::Stop()
hgs
parents:
diff changeset
    81
    {
hgs
parents:
diff changeset
    82
    if(iReader)
hgs
parents:
diff changeset
    83
    	{
hgs
parents:
diff changeset
    84
    	iReader->Cancel();
hgs
parents:
diff changeset
    85
    	delete iReader;
hgs
parents:
diff changeset
    86
    	iReader = NULL;
hgs
parents:
diff changeset
    87
    	}
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
	if(iScroller)
hgs
parents:
diff changeset
    90
		{
hgs
parents:
diff changeset
    91
		iScroller->Cancel();
hgs
parents:
diff changeset
    92
		delete iScroller;
hgs
parents:
diff changeset
    93
    	iScroller = NULL;
hgs
parents:
diff changeset
    94
		}
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    if(iSchedulerStarted)
hgs
parents:
diff changeset
    97
    	{
hgs
parents:
diff changeset
    98
    	iScheduler->Stop();
hgs
parents:
diff changeset
    99
    	iSchedulerStarted = FALSE;
hgs
parents:
diff changeset
   100
    	}
hgs
parents:
diff changeset
   101
    }
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   104
//  Method: ReadString
hgs
parents:
diff changeset
   105
//  Description: Reads user input into the start of the descriptor aDes
hgs
parents:
diff changeset
   106
//  Parameters: TDes& aDes      :out: a user input string
hgs
parents:
diff changeset
   107
//  Return Values: None
hgs
parents:
diff changeset
   108
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   109
//
hgs
parents:
diff changeset
   110
EXPORT_C void CConsoleMain::ReadString( TDes& aDes )
hgs
parents:
diff changeset
   111
    {
hgs
parents:
diff changeset
   112
    TChar inputKey;
hgs
parents:
diff changeset
   113
    TInt count = 0;
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
    aDes.Zero();
hgs
parents:
diff changeset
   116
    for (;;)
hgs
parents:
diff changeset
   117
        {
hgs
parents:
diff changeset
   118
        inputKey = (TInt) iConsole->Getch();
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
        if ( inputKey == EKeyEnter || inputKey == EKeyOK )
hgs
parents:
diff changeset
   121
            {
hgs
parents:
diff changeset
   122
            break;
hgs
parents:
diff changeset
   123
            }
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
        if(inputKey == EKeyBackspace)
hgs
parents:
diff changeset
   126
            {
hgs
parents:
diff changeset
   127
            if (count > 0)
hgs
parents:
diff changeset
   128
                {
hgs
parents:
diff changeset
   129
                iConsole->Printf(_L("%C"), (TInt)inputKey);
hgs
parents:
diff changeset
   130
                aDes.Delete(--count,1);
hgs
parents:
diff changeset
   131
                }
hgs
parents:
diff changeset
   132
            }
hgs
parents:
diff changeset
   133
        else if(inputKey.IsPrint())
hgs
parents:
diff changeset
   134
            {
hgs
parents:
diff changeset
   135
            iConsole->Printf(_L("%C"), (TInt)inputKey);
hgs
parents:
diff changeset
   136
            aDes.Append(inputKey);
hgs
parents:
diff changeset
   137
            count++;
hgs
parents:
diff changeset
   138
            }
hgs
parents:
diff changeset
   139
        }
hgs
parents:
diff changeset
   140
    }
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   143
//  Method: ~CConsoleMain
hgs
parents:
diff changeset
   144
//  Description: Destructor
hgs
parents:
diff changeset
   145
//  Parameters: None
hgs
parents:
diff changeset
   146
//  Return Values: None
hgs
parents:
diff changeset
   147
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   148
//
hgs
parents:
diff changeset
   149
CConsoleMain::~CConsoleMain( )
hgs
parents:
diff changeset
   150
    {	
hgs
parents:
diff changeset
   151
    delete iReader;
hgs
parents:
diff changeset
   152
    
hgs
parents:
diff changeset
   153
	delete iScroller;
hgs
parents:
diff changeset
   154
	
hgs
parents:
diff changeset
   155
    delete iConsole;
hgs
parents:
diff changeset
   156
    }
hgs
parents:
diff changeset
   157
	
hgs
parents:
diff changeset
   158
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   159
//  Method: CurrentView
hgs
parents:
diff changeset
   160
//  Description: Return current View
hgs
parents:
diff changeset
   161
//  Parameters: None
hgs
parents:
diff changeset
   162
//  Return Values: CTestBaseView                    iCurrentView
hgs
parents:
diff changeset
   163
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   164
//
hgs
parents:
diff changeset
   165
CTestBaseView* CConsoleMain::CurrentView()
hgs
parents:
diff changeset
   166
    {
hgs
parents:
diff changeset
   167
    return iCurrentView;
hgs
parents:
diff changeset
   168
    }
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   171
//  Method: GetConsole
hgs
parents:
diff changeset
   172
//  Description: Returns the console
hgs
parents:
diff changeset
   173
//  Parameters: None
hgs
parents:
diff changeset
   174
//  Return Values: CConsoleBase*                    Console
hgs
parents:
diff changeset
   175
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   176
//
hgs
parents:
diff changeset
   177
CConsoleBase* CConsoleMain::GetConsole()
hgs
parents:
diff changeset
   178
    {
hgs
parents:
diff changeset
   179
    return iConsole;
hgs
parents:
diff changeset
   180
    }
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   183
//  Method: TimerUpdate
hgs
parents:
diff changeset
   184
//  Description: Updates current menu from timer
hgs
parents:
diff changeset
   185
//  Parameters: None
hgs
parents:
diff changeset
   186
//  Return Values: None
hgs
parents:
diff changeset
   187
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   188
//
hgs
parents:
diff changeset
   189
void CConsoleMain::TimerUpdate()
hgs
parents:
diff changeset
   190
    {
hgs
parents:
diff changeset
   191
	iCurrentView->TimerUpdate();
hgs
parents:
diff changeset
   192
    }
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   196
//  Method: KeyPressed
hgs
parents:
diff changeset
   197
//  Description: Process keyboard events. Print new menu
hgs
parents:
diff changeset
   198
//  Parameters: None
hgs
parents:
diff changeset
   199
//  Return Values: None
hgs
parents:
diff changeset
   200
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   201
//
hgs
parents:
diff changeset
   202
void CConsoleMain::KeyPressedL()
hgs
parents:
diff changeset
   203
    {
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
    TBool cont = ETrue;
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
    // Read the key
hgs
parents:
diff changeset
   208
    TKeyCode key = iConsole->KeyCode();
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
    // Let the menu handle the key press
hgs
parents:
diff changeset
   211
    TRAPD( err, 
hgs
parents:
diff changeset
   212
        iCurrentView->SelectL( key, cont );
hgs
parents:
diff changeset
   213
        );
hgs
parents:
diff changeset
   214
    if( err != KErrNone )
hgs
parents:
diff changeset
   215
        {
hgs
parents:
diff changeset
   216
        User::InfoPrint( 
hgs
parents:
diff changeset
   217
            _L("Processing keystroke failed") );  
hgs
parents:
diff changeset
   218
        }
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
    if( iCurrentView )
hgs
parents:
diff changeset
   221
        {
hgs
parents:
diff changeset
   222
        iCurrentView->DisplayViewL();
hgs
parents:
diff changeset
   223
        // For next key event
hgs
parents:
diff changeset
   224
        iReader->Start();
hgs
parents:
diff changeset
   225
        }
hgs
parents:
diff changeset
   226
    }
hgs
parents:
diff changeset
   227
    
hgs
parents:
diff changeset
   228
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   229
//  Method: CConsoleMain
hgs
parents:
diff changeset
   230
//  Description: Constructor.
hgs
parents:
diff changeset
   231
//  Initialize non-zero member variables.
hgs
parents:
diff changeset
   232
//  Parameters: None
hgs
parents:
diff changeset
   233
//  Return Values: None
hgs
parents:
diff changeset
   234
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   235
//
hgs
parents:
diff changeset
   236
CConsoleMain::CConsoleMain(CActiveScheduler* aScheduler)
hgs
parents:
diff changeset
   237
    {
hgs
parents:
diff changeset
   238
    iScheduler = aScheduler;
hgs
parents:
diff changeset
   239
    iSchedulerStarted = FALSE;
hgs
parents:
diff changeset
   240
    }
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   243
//  Method: ConstructL
hgs
parents:
diff changeset
   244
//  Description: Second level constructor.
hgs
parents:
diff changeset
   245
//  Construct the console
hgs
parents:
diff changeset
   246
//  Construct module and case containers
hgs
parents:
diff changeset
   247
//  Retrieve command line parameters
hgs
parents:
diff changeset
   248
//  Connect to test engine
hgs
parents:
diff changeset
   249
//  Parameters: None
hgs
parents:
diff changeset
   250
//  Return Values: None
hgs
parents:
diff changeset
   251
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   252
//
hgs
parents:
diff changeset
   253
void CConsoleMain::ConstructL( )
hgs
parents:
diff changeset
   254
    {
hgs
parents:
diff changeset
   255
    // Construct the console
hgs
parents:
diff changeset
   256
    iConsole = Console::NewL( KNameTxt,
hgs
parents:
diff changeset
   257
                             TSize( KConsFullScreen, KConsFullScreen ) );
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
    iConsole->Printf(_L("\nViewTest Framework\n"));
hgs
parents:
diff changeset
   260
    }
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   263
//  Method: NextViewL
hgs
parents:
diff changeset
   264
//  Description: activate child view
hgs
parents:
diff changeset
   265
//  Parameters: aChild, a child view
hgs
parents:
diff changeset
   266
//  Return Values: None
hgs
parents:
diff changeset
   267
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   268
//
hgs
parents:
diff changeset
   269
void CConsoleMain::NextViewL(CTestBaseView* aChild)
hgs
parents:
diff changeset
   270
    {
hgs
parents:
diff changeset
   271
    iCurrentView = aChild;
hgs
parents:
diff changeset
   272
    
hgs
parents:
diff changeset
   273
    // Start to process keyboard events
hgs
parents:
diff changeset
   274
    //<-iReader-StartL() will be call in CConsoleMain::KeyPressedL()
hgs
parents:
diff changeset
   275
    //  otherwise, Panic because of activiting an activated CActive
hgs
parents:
diff changeset
   276
    //iReader->StartL();    
hgs
parents:
diff changeset
   277
    }
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   280
//  Method: CurrentViewDoneL
hgs
parents:
diff changeset
   281
//  Description: Remove current view and active parent view if any
hgs
parents:
diff changeset
   282
//  Parameters: None
hgs
parents:
diff changeset
   283
//  Return Values: None
hgs
parents:
diff changeset
   284
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   285
//
hgs
parents:
diff changeset
   286
void CConsoleMain::CurrentViewDoneL()
hgs
parents:
diff changeset
   287
    {
hgs
parents:
diff changeset
   288
    //iCurrentView = (iCurrentView) ? iCurrentView->Parent() : NULL;
hgs
parents:
diff changeset
   289
    if(iCurrentView != NULL)
hgs
parents:
diff changeset
   290
        {
hgs
parents:
diff changeset
   291
        Stop();
hgs
parents:
diff changeset
   292
        }
hgs
parents:
diff changeset
   293
    }
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298