diff -r 3ff3fecb12fe -r 6a82cd05fb1e memana/analyzetoolclient/consoleui/src/atconsoleviews.cpp --- a/memana/analyzetoolclient/consoleui/src/atconsoleviews.cpp Thu Feb 11 15:52:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1247 +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: -* -*/ - - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include "atconsoleui.h" -#include "atconsoleviews.h" - -// LOCAL FUNCTION PROTOTYPES -LOCAL_C void LimitedAppend( TDes& aOriginal, const TDesC& aAppend); - -// FORWARD DECLARATIONS - -// ==================== LOCAL FUNCTIONS ======================================= -// ----------------------------------------------------------------------------- -// LimitedAppend() -// Appends texts. -// ----------------------------------------------------------------------------- -// -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 ) ); - } - } - -// ----------------------------------------------------------------------------- -// CView::NewL() -// First phase constructor. -// ----------------------------------------------------------------------------- -// -CView* CView::NewL( CConsoleMain* aConsole, - CView* aParent, - const TDesC& aName, - TInt64 aProcessId - ) - { - - CView* self = new ( ELeave ) CView(); - CleanupStack::PushL( self ); - self->ConstructL( aConsole, aParent, aName, aProcessId ); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CView::ConstructL() -// Second phase constructor. -// ----------------------------------------------------------------------------- -// -void CView::ConstructL( CConsoleMain* aConsole, - CView* aParent, - const TDesC& aName, TInt64 aProcessId - ) - { - // Store the parameters - iMain = aConsole; - iConsole = aConsole->GetConsole(); - iParent = aParent; - iViewName = aName; - iProcessId = aProcessId; - - // Get display size - const TInt KOverHead = 5; - iSize = iConsole->ScreenSize(); - iScreenSize = iSize.iHeight - KOverHead; // Size available for menus - } - -// ----------------------------------------------------------------------------- -// CView::CView() -// C++ default constructor. -// ----------------------------------------------------------------------------- -// -CView::CView() - { - iDirection = 1; - iPrevPos = -1; // Invalid starting value - } - -// ----------------------------------------------------------------------------- -// CView::~CView() -// Destructor. -// ----------------------------------------------------------------------------- -// -CView::~CView() - { - iItems.ResetAndDestroy(); - } - -// ----------------------------------------------------------------------------- -// CView::TimerUpdate() -// Handles screen updates. -// ----------------------------------------------------------------------------- -// -void CView::TimerUpdate() - { - RArray texts; - if( ItemTexts( texts ) != KErrNone ) - { - texts.Close(); - return; - } - TInt count = texts.Count(); - // If list is empty, do not scroll. - if ( count < 1 ) - { - texts.Close(); - return; - } - else if( iFirstItem + iPositionOnScreen > count ) - { - iFirstItem = iPositionOnScreen = 0; - } - - // If menu selection is updated, then restart scrolling - if (iPrevPos != iFirstItem + iPositionOnScreen) - { - iPrevPos = iFirstItem + iPositionOnScreen; - iStart = 0; - iDirection = 1; - } - - // If menu item have not been changed after last timer, then - // start scrolling - const TDesC& name = texts[ iFirstItem + iPositionOnScreen ]; - if ( name.Length() > iSize.iWidth) - { - TInt y = iConsole->WhereY(); - TInt x = iConsole->WhereX(); - TBuf<80> iTmp; - - iStart = iStart + iDirection; - - // "Right end" - if ( iStart + iSize.iWidth > name.Length() + KViewOverhead ) - { - 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, iPositionOnScreen + 1 ); - iConsole->Printf ( iTmp.Left( iSize.iWidth -2 ) ); - - iConsole->SetPos(x,y); - } - texts.Close(); - } - -// ----------------------------------------------------------------------------- -// CView::AppendBefore() -// Appends cursor to the line. -// ----------------------------------------------------------------------------- -// -void CView::AppendBefore( TInt aLineNum, TDes& aLine ) - { - if( ( aLine.MaxLength() - aLine.Length() ) < 2 ) - { - return; - } - - // If printing active line, print the marker - if ( aLineNum == iPositionOnScreen + iFirstItem ) - { - aLine.Append( _L(" *") ); - } - else - { - aLine.Append( _L(" ") ); - } - } - -// ----------------------------------------------------------------------------- -// CView::PrintViewL() -// Prints view. -// ----------------------------------------------------------------------------- -// -void CView::PrintViewL( TUpdateType aType ) - { - iUpdateType = aType; - TBuf line; - - // Clear display - iConsole->ClearScreen(); - - // Print menu title - Print( Name() ); - - RArray texts; - if( ItemTexts( texts ) != KErrNone ) - { - texts.Close(); - return; - } - - TInt oldItemCount = iItemCount; - - iItemCount = texts.Count(); - - // If first time in menu, update start and end positions - if( ( iFirstItem == iLastItem ) || // First time here.. - ( iLastItem >= iItemCount ) || - ( oldItemCount != iItemCount ) ) // Menu size changed - { - iLastItem = iItemCount - 1; - iPositionOnScreen = 0; - - // If "overflow", then adjust the end - if (iLastItem > iScreenSize ) - { - iLastItem = iScreenSize; - } - } - - // Print items - for ( TInt i = iFirstItem; i <= iLastItem; i++ ) - { - line.Zero(); - - // Append text before line - AppendBefore( i, line ); - TBuf<2*KMaxName> temp; - if ( i < iItems.Count() ) - { - temp.Copy( iItems[ i ]->Name() ); - TATLogOption loggingMode; - iMain->StorageServer().GetLoggingModeL( iMain->Processes()[ i ].iProcessId, loggingMode ); - if ( EATLoggingOff != loggingMode ) - { - if ( iMain->IsSubTestRunning( iMain->Processes()[ i ].iProcessId ) > KErrNotFound ) - { - temp.Append( _L(": ") ); - temp.Append( _L("subtest running") ); - } - } - else - { - temp.Append( _L(": ") ); - temp.Append( _L("logging cancelled") ); - } - // TEST START - /*if ( i == iFirstItem ) - { - temp.Append( _L(": ") ); - temp.Append( _L("subtest running") ); - } - else if ( i == iFirstItem + 1 ) - { - temp.Append( _L(": ") ); - temp.Append( _L("logging cancelled") ); - } - else if ( i == iFirstItem + 2 ) - { - temp.Append( _L(": ") ); - temp.Append( _L("subtest running") ); - }*/ - // TEST END - LimitedAppend ( line, temp /*texts[i]*/ ); - } - else - LimitedAppend ( line, KExitTxt ); - - // Print the line - Print(line); - } - texts.Close(); - } - -// ----------------------------------------------------------------------------- -// CView::SelectL() -// Handles line selections. -// ----------------------------------------------------------------------------- -// -CView* CView::SelectL( TKeyCode aSelection, TBool& aContinue ) - { - MapKeyCode( aSelection ); - - switch ( ( TInt )aSelection ) - { - // Exit - case EKeyEscape: - aContinue = EFalse; - return this; - // SelectL item - case EKeyEnter: - case EKeyRightArrow: - { - // Print items - for ( TInt i = iFirstItem; i <= iLastItem; i++ ) - { - if ( i < iItems.Count() ) - { - TATLogOption loggingMode; - TInt processCount ( iMain->Processes().Count() ); - if ( i < processCount ) - { - iMain->StorageServer().GetLoggingModeL( iMain->Processes()[ i ].iProcessId, loggingMode ); - if ( EATLoggingOff != loggingMode ) - { - return iItems[ iPositionOnScreen ]; - } - else - { - return this; - } - } - } - } - //return iItems[ iPositionOnScreen ]; - } - // Going back - case EKeyLeftArrow: - { - TBool tmp = iShowLibraries | iSetLoggingMode; - iShowLibraries = EFalse; - iSetLoggingMode = EFalse; - if ( tmp ) - return this; - else - return iParent; - } - // Go down - case EKeyDownArrow: - { - if ( iFirstItem + iPositionOnScreen == iItemCount - 1 ) - { - // If end of the list, go to beginning - iLastItem = iLastItem - iFirstItem; - iFirstItem = 0; - iPositionOnScreen = 0; - } - else - { - if ( iPositionOnScreen == iScreenSize ) - { - // If in end of screen, update items - if ( iLastItem != ( iItemCount - 1 ) ) - { - // If not end of the list, then update first and last - // but do not update position in screen. - iLastItem++; - iFirstItem++; - } - } - else - { - // Going down "in-screen", no need to update items - iPositionOnScreen++; - } - } - break; - } - // Go Up - case EKeyUpArrow: - { - if ( iFirstItem + iPositionOnScreen == 0 ) - { - // If in the beginning of the list - - if ( iItemCount <= iScreenSize ) - { - // Wrap around when the list is not full - iPositionOnScreen = iItemCount-1; - } - else - { - // Wrap around when there are more items than - // can be shown at once. - iPositionOnScreen = iScreenSize; - iLastItem = iItemCount-1; - iFirstItem = iItemCount - iPositionOnScreen - 1; - } - } - else if ( iPositionOnScreen == 0 ) - { - // If not at the beginning of the list, then update first and - // last but do not update position in screen. - if ( iFirstItem != 0 ) - { - iLastItem--; - iFirstItem--; - } - } - else - { - // Going up "in-screen", no need to update items - iPositionOnScreen--; - } - - break; - } - - // Additional keys - case EKeyHome: - case '3': - iPositionOnScreen = 0; - iFirstItem = 0; - iLastItem = iScreenSize; - - if ( iLastItem > iItemCount-1 ) - { - iLastItem = iItemCount-1; - } - break; - case EKeyEnd: - case '9': - iPositionOnScreen = iScreenSize; - iLastItem = iItemCount-1; - iFirstItem = iLastItem - iScreenSize; - - if ( iFirstItem < 0 ) - { - iFirstItem = 0; - iPositionOnScreen = iLastItem-1; - } - break; - case EKeyPageUp: - case '1': - - iFirstItem = iFirstItem - iScreenSize - 1; - iLastItem = iLastItem - iScreenSize - 1; - - if ( iFirstItem < 0 ) - { - iFirstItem = 0; - iPositionOnScreen = 0; - iLastItem = iScreenSize; - if ( iLastItem > iItemCount-1 ) - { - iLastItem = iItemCount-1; - } - } - break; - case EKeyPageDown: - case '7': - iFirstItem = iFirstItem + iScreenSize + 1; - iLastItem = iLastItem + iScreenSize + 1; - - // Going too far - if ( iLastItem > iItemCount - 1 ) - { - iLastItem = iItemCount-1; - iFirstItem = iLastItem - iScreenSize; - iPositionOnScreen = iScreenSize; - } - - // Ok, list is smaller than screen - if ( iFirstItem < 0 ) - { - iFirstItem = 0; - iLastItem = iItemCount-1; - iPositionOnScreen = iLastItem; - } - break; - default: // Bypass the keypress - break; - } - - // Continue normally and keep in the same menu - aContinue = ETrue; - return this; - - } - -// ----------------------------------------------------------------------------- -// CView::ItemTexts() -// Formats menu texts -// ----------------------------------------------------------------------------- -// -TInt CView::ItemTexts( RArray& aArray ) - { - - TInt count = iItems.Count(); - for( TInt i=0; i temp; - temp.Copy( iItems[i]->Name() ); - if( aArray.Append( iItems[i]->Name() ) != KErrNone ) - { - return KErrNoMemory; - } - } - - return KErrNone; - - } - -// ----------------------------------------------------------------------------- -// CView::SetParent() -// Sets menu parent menu -// ----------------------------------------------------------------------------- -// -void CView::SetParent ( CView* aMenu ) - { - - iParent = aMenu; - - } - -// ----------------------------------------------------------------------------- -// CView::Print() -// Prints line to the screen. -// ----------------------------------------------------------------------------- -// -void CView::Print( const TDesC& aPrint ) - { - iConsole->Printf ( aPrint.Left( iSize.iWidth - KViewOverhead ) ); - iConsole->Printf(_L("\n")); - } - -// ----------------------------------------------------------------------------- -// CView::AddItemL() -// Adds item to the list. -// ----------------------------------------------------------------------------- -// -void CView::AddItemL( CView* aMenu ) - { - - User::LeaveIfError ( iItems.Append( aMenu ) ); - - } - -// ----------------------------------------------------------------------------- -// CView::ResetItems() -// Resets the item list. -// ----------------------------------------------------------------------------- -// -void CView::ResetItems() - { - iItems.ResetAndDestroy(); - } -// ----------------------------------------------------------------------------- -// CView::Name() -// Returns the name of view. -// ----------------------------------------------------------------------------- -// -const TDesC& CView::Name( ) const - { - - return iViewName; - - } - -// ----------------------------------------------------------------------------- -// CView::MapKeyCode() -// Maps numeric keycodes to proper TKeyCode values. -// ----------------------------------------------------------------------------- -// -void CView::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; - } - } - -// ----------------------------------------------------------------------------- -// CMainView::NewL() -// First phase constructor. -// ----------------------------------------------------------------------------- -// -CMainView* CMainView::NewL( CConsoleMain* aConsole, - CView* aParent, - const TDesC& aName ) - { - - CMainView* self = new ( ELeave ) CMainView(); - CleanupStack::PushL( self ); - self->ConstructL( aConsole, aParent, aName ); - CleanupStack::Pop( self ); - return self; - - } - -// ----------------------------------------------------------------------------- -// CMainView::ItemTexts() -// Format menu texts. -// ----------------------------------------------------------------------------- -// -TInt CMainView::ItemTexts( RArray& aArray ) - { - - CView::ItemTexts( aArray ); - // Add Exit to last one in menu - if( aArray.Append( KExitTxt ) != KErrNone ) - { - return KErrNoMemory; - } - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CMainView::ConstructL() -// Second phase constructor. -// ----------------------------------------------------------------------------- -// -void CMainView::ConstructL( CConsoleMain* aConsole, - CView* aParent, - const TDesC& aName - ) - { - - CView::ConstructL( aConsole, aParent, aName, NULL ); - - } - -// ----------------------------------------------------------------------------- -// CMainView::SelectL() -// Process keypresses in menu. -// ----------------------------------------------------------------------------- -// -CView* CMainView::SelectL( TKeyCode aSelection, TBool& aContinue ) - { - - MapKeyCode( aSelection ); - - // If SelectLion == "exit" and right or enter - if ( aSelection == EKeyEnter || aSelection == EKeyRightArrow ) - { - if ( iPositionOnScreen == iItemCount - 1 ) - { - // Exit - aContinue = EFalse; - return this; - } - } - - // Normal menu handling - CView* tmp = CView::SelectL( aSelection, aContinue ); - return tmp; - - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::NewL() -// First phase constructor. -// ----------------------------------------------------------------------------- -// -CProcessInfoView* CProcessInfoView::NewL( CConsoleMain* aConsole, - CView* aParent, - const TDesC& aName, TInt64 aProcessId ) - { - - CProcessInfoView* self = new ( ELeave ) CProcessInfoView(); - CleanupStack::PushL( self ); - self->ConstructL( aConsole, aParent, aName, aProcessId ); - CleanupStack::Pop( self ); - return self; - - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::~CProcessInfoView() -// Destructor. -// ----------------------------------------------------------------------------- -// -CProcessInfoView::~CProcessInfoView() - { - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::ConstructL() -// First phase constructor. -// ----------------------------------------------------------------------------- -// -void CProcessInfoView::ConstructL( CConsoleMain* aConsole, - CView* aParent, - const TDesC& aName, TInt64 aProcessId - ) - { - CView::ConstructL( aConsole, aParent, aName, aProcessId ); - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::ItemTexts() -// Formats menu item texts. -// ----------------------------------------------------------------------------- -// -TInt CProcessInfoView::ItemTexts( RArray& /*aArray*/ ) - { - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::PrintViewL() -// Prints process info view. -// ----------------------------------------------------------------------------- -// -void CProcessInfoView::PrintViewL( TUpdateType /*aType*/ ) - { - if ( !iShowLibraries && !iSetLoggingMode ) - { - // Get module names - RArray processes; - // Clear display - iConsole->ClearScreen(); - // Print menu title - TBuf<2*KMaxName> title; - title.Copy( Name() ); - TInt subTest = iMain->IsSubTestRunning( iProcessId ); - if ( subTest > KErrNotFound ) - { - // Append subtest running text - title.Append( _L(": ") ); - title.Append( _L( "subtest running" ) ); - } - - Print( title /*Name()*/ ); - // Update positions - RArray texts; - if( ItemTexts( texts ) != KErrNone ) - { - return; - } - - TInt oldItemCount = iItemCount; - iItemCount = texts.Count(); - - // If first time in menu, update start and end positions - if( ( iFirstItem == iLastItem ) || // First time here.. - ( iLastItem >= iItemCount ) || - ( oldItemCount != iItemCount ) ) // Menu size changed - { - iLastItem = iItemCount - 1; - iPositionOnScreen = 0; - - // If "overflow", then adjust the end - if ( iLastItem > iScreenSize ) - { - iLastItem = iScreenSize; - } - } - // Update pos screen - if ( iPositionOnScreen > ( TInt )ECancelLoggingTxtItem - 1 ) - iPositionOnScreen = 0; - else if ( iPositionOnScreen < ( TInt )EStartSubtestTxtItem ) - iPositionOnScreen = ( TInt )ECancelLoggingTxtItem - 1; - - // Get processes - processes = iMain->Processes(); - // Get current opened process - for ( TInt num = 0 ; num < processes.Count() ; num++ ) - { - TATProcessInfo tmpProcessInfo; - tmpProcessInfo = processes[ num ]; - if ( tmpProcessInfo.iProcessId == iProcessId ) - { - iCurrentProcessInfo = tmpProcessInfo; - break; - } - } - - TBuf line; - // Get curr. and max. allocations - TUint32 number( KErrNone ); - TUint32 size( KErrNone ); - TUint32 maxNumber( KErrNone ); - TUint32 maxSize( KErrNone ); - TInt currErr = iMain->StorageServer().GetCurrentAllocsL( iProcessId, number, size ); - TInt maxErr = iMain->StorageServer().GetMaxAllocsL( iProcessId, maxNumber, maxSize ); - // Get logging mode - TATLogOption loggingMode; - TInt loggingErr = iMain->StorageServer().GetLoggingModeL( iProcessId, loggingMode ); - - // Print curr. allocations - line = _L(" "); - LimitedAppend ( line, _L( "Curr. allocations: " ) ); - // Append curr. allocs - if ( currErr == KErrNone ) - line.AppendNum( number ); - - Print( line ); - line = _L(" "); - if ( currErr == KErrNone ) - { - if ( size >= KATThousand && size < KATMillion ) // kiloByte range - { - TReal value( size ); - value = value / KATThousand; - line.Format( _L(" %.1f"), value ); - line.Append( _L(" ") ); - line.Append( KATKB ); - } - else if ( size >= KATMillion ) // megaByte range - { - TReal value( size ); - value = value / KATMillion; - line.Format( _L(" %.1f"), value ); - line.Append( _L(" ") ); - line.Append( KATMB ); - } - else - { - line.Copy( _L(" ") ); - line.AppendNum( size ); - line.Append( _L(" ") ); - line.Append( KATB ); - } - } - else - { - LimitedAppend ( line, _L( "unavailable" ) ); - } - Print( line ); - - // Print max. allocations - line = _L(" "); - LimitedAppend ( line, _L( "Max. allocations: " ) ); - // Append curr. allocs - if ( maxErr == KErrNone ) - line.AppendNum( maxNumber ); - - Print( line ); - line = _L(" "); - if ( maxErr == KErrNone ) - { - if ( size >= KATThousand && size < KATMillion ) // kiloByte range - { - TReal value( maxSize ); - value = value / KATThousand; - line.Format( _L(" %.1f"), value ); - line.Append( _L(" ") ); - line.Append( KATKB ); - } - else if ( size >= KATMillion ) // megaByte range - { - TReal value( maxSize ); - value = value / KATMillion; - line.Format( _L(" %.1f"), value ); - line.Append( _L(" ") ); - line.Append( KATMB ); - } - else - { - line.Copy( _L(" ") ); - line.AppendNum( maxSize ); - line.Append( _L(" ") ); - line.Append( KATB ); - } - } - else - { - LimitedAppend ( line, _L( "unavailable") ); - } - Print( line ); - - // Print starting time - line = _L(" "); - LimitedAppend ( line, _L( "Process started:") ); - Print( line ); - line = _L(" "); - TTime time( iCurrentProcessInfo.iStartTime ); - TBuf<50> dateString; - _LIT( KDateString3,"%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B" ); - time.FormatL( dateString, KDateString3 ); - LimitedAppend ( line, dateString ); - Print( line ); - - // Print logging mode - line = _L(" "); - LimitedAppend ( line, _L( "Logging mode:") ); - Print( line ); - line = _L(" "); - if ( KErrNone == loggingErr ) - { - if ( EATUseDefault == loggingMode ) - { - LimitedAppend ( line, _L( "External" ) ); - } - else if ( EATLogToFile == loggingMode ) - { - LimitedAppend ( line, _L( "Internal" ) ); - } - else if ( EATLogToXti == loggingMode ) - { - LimitedAppend ( line, _L( "External" ) ); - } - else if( EATLoggingOff == loggingMode ) - { - LimitedAppend ( line, _L( "None" ) ); - } - } - else - { - LimitedAppend ( line, _L( "unavailable" ) ); - } - Print(line); - - // Print mode information (UDEB/UREL) - line = _L(" "); - LimitedAppend ( line, _L( "Mode:") ); - Print( line ); - line = _L(" "); - TUint32 isUdeb; - TInt udebErr = iMain->StorageServer().GetUdebL( iProcessId, isUdeb ); - if ( KErrNone == udebErr ) - { - if ( isUdeb > KErrNone ) - { - LimitedAppend ( line, _L( "UDEB" ) ); - } - else - { - LimitedAppend ( line, _L( "UREL" ) ); - } - } - else - { - LimitedAppend ( line, _L( "unavailable" ) ); - } - Print( line ); - - // Print logging file information - line = _L(" "); - LimitedAppend ( line, _L( "Logging file:") ); - Print( line ); - line = _L(" "); - TBuf8 fileName; - TInt fileErr = iMain->StorageServer().GetLoggingFileL( iProcessId, fileName ); - if ( KErrNone == fileErr ) - { - if ( fileName.Length() > KErrNone ) - { - TBuf unicodeFile; - CnvUtfConverter::ConvertToUnicodeFromUtf8( unicodeFile, fileName ); - LimitedAppend ( line, unicodeFile ); - } - else - { - LimitedAppend ( line, _L( "None" ) ); - } - } - else - { - LimitedAppend ( line, _L( "unavailable" ) ); - } - Print( line ); - - line = _L("\n"); - Print( line ); - - // Print process info menu - TInt cursor( KErrNone ); - while ( cursor <= ( TInt )ECancelLoggingTxtItem - 1 ) // -1, dyninitmenupane - { - line.Zero(); - if ( cursor == 0 && iMain->IsSubTestRunning( iProcessId ) == KErrNotFound ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "Start subtest") ); - // Print the line - Print( line ); - } - else if ( cursor == 0 && iMain->IsSubTestRunning( iProcessId ) > KErrNotFound ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "Stop subtest") ); - // Print the line - Print( line ); - } - else if ( cursor == 1 ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "View libraries") ); - // Print the line - Print( line ); - } - else if ( cursor == 2 ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "End process") ); - // Print the line - Print( line ); - } - else if ( cursor == 3 ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "Kill process") ); - // Print the line - Print( line ); - } - else if ( cursor == 4 ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "Cancel logging") ); - // Print the line - Print( line ); - } - cursor++; - } - texts.Close(); - } - else if ( iShowLibraries && !iSetLoggingMode ) - { - ViewLibrariesL(); - } - else if ( !iShowLibraries && iSetLoggingMode ) - { - SetLoggingModeL(); - } - - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::SelectL() -// Process keypresses in menu. -// ----------------------------------------------------------------------------- -// -CView* CProcessInfoView::SelectL( TKeyCode aSelection, TBool& aContinue ) - { - MapKeyCode( aSelection ); - - if( ( aSelection == EKeyRightArrow || - aSelection == EKeyEnter ) ) - { - if ( !iSetLoggingMode ) - { - if( iPositionOnScreen == EStartSubtestTxtItem ) - { - if ( iMain->IsSubTestRunning( iProcessId ) == KErrNotFound ) - iMain->SetProcessSubTestStart( iProcessId ); - else - iMain->SetProcessSubTestStop( iProcessId ); - return NULL; - } - else if( iPositionOnScreen == EViewLibrariesTxtItem - 1 ) - { - iShowLibraries = ETrue; - return NULL; - } - else if( iPositionOnScreen == EEndProcessTxtItem - 1 ) - { - EndProcessL( ETryToEnd ); - // Trying to end process -> go processes view - return iParent; - } - else if( iPositionOnScreen == EKillProcessTxtItem - 1 ) - { - EndProcessL( ETryToKill ); - // Trying to kill process -> go processes view - return iParent; - } - else if( iPositionOnScreen == ECancelLoggingTxtItem - 1 ) - { - iMain->StorageServer().CancelLogging( iProcessId ); - return iParent; - } - else - { - return this; - } - } - else if ( iSetLoggingMode ) - { - return NULL; - } - } - - return CView::SelectL( aSelection, aContinue ); - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::ViewLibrariesL() -// Prints libraries loaded by current process. -// ----------------------------------------------------------------------------- -// -void CProcessInfoView::ViewLibrariesL() - { - // Clear display - iConsole->ClearScreen(); - // Print menu title - Print( _L( "Loaded libraries:") ); - - TBuf line; - // Loaded libraries for this process - RArray< TBuf8 > libraries; - iMain->StorageServer().GetLoadedDllsL( iCurrentProcessInfo.iProcessId, libraries ); - TInt lCount = libraries.Count(); - for ( TInt count = 0 ; count < lCount ; count++ ) - { - TBuf library; - library.Copy( libraries[ count ] ); - line = _L(" "); - LimitedAppend ( line, library ); - Print(line); - } - libraries.Close(); - } - - -// ----------------------------------------------------------------------------- -// CProcessInfoView::SetLoggingModeL() -// Prints logging modes which user wants to select to current process. -// ----------------------------------------------------------------------------- -// -void CProcessInfoView::SetLoggingModeL() - { - // Clear display - iConsole->ClearScreen(); - // Print menu title - Print( _L( "Logging mode:") ); - - // Update pos screen - if ( iPositionOnScreen > 2 ) - iPositionOnScreen = 0; - else if ( iPositionOnScreen < 0 ) - iPositionOnScreen = 2; - - TBuf line; - - // Print logging modes - TInt cursor( KErrNone ); - while ( cursor <= 2 ) // Three items - { - line.Zero(); - if ( cursor == 0 ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "External") ); - // Print the line - Print( line ); - } - else if ( cursor == 1 ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "Internal") ); - // Print the line - Print( line ); - } - else if ( cursor == 2 ) - { - AppendBefore( cursor, line ); - LimitedAppend ( line, _L( "None") ); - // Print the line - Print( line ); - } - cursor++; - } - } - -// ----------------------------------------------------------------------------- -// CProcessInfoView::EndProcessL() -// Ends process with a specific method. -// ----------------------------------------------------------------------------- -// -void CProcessInfoView::EndProcessL( TInt aCommand ) - { - RProcess endProcess; - TUint processId = iProcessId; - TBuf processName; - processName.Copy( Name() ); - TInt find = processName.Find( _L( "." ) ); - if ( find > KErrNotFound ) - processName.Delete( find, processName.Length() - find ); - - TInt openErr = endProcess.Open( TProcessId( processId ) ); - if ( openErr ==KErrNone ) - { - if ( aCommand == ETryToEnd ) - { - endProcess.Close(); - RWsSession wsSession; - TInt wsErr = wsSession.Connect(); - if ( KErrNone == wsErr ) - { - TApaTaskList apList = TApaTaskList( wsSession ); - TApaTask apTask = apList.FindApp( processName ); - if ( apTask.Exists() ) - { - apTask.EndTask(); - } - wsSession.Close(); - } - - } - else if ( aCommand == ETryToKill ) - { - endProcess.Kill( KErrNone ); - endProcess.Close(); - } - } - } - -// End of file