memspyui/ui/avkon/src/MemSpyAppUi.cpp
branchRCL_3
changeset 22 fad26422216a
parent 21 b3cee849fa46
child 23 f8280f3bfeb7
equal deleted inserted replaced
21:b3cee849fa46 22:fad26422216a
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "MemSpyAppUi.h"
       
    19 
       
    20 // System includes
       
    21 #include <AknQueryDialog.h>
       
    22 #include <aknmessagequerydialog.h> 
       
    23 #include <aknradiobuttonsettingpage.h>
       
    24 #include <eikaufty.h>
       
    25 #include <eikmenub.h>
       
    26 #include <avkon.hrh>
       
    27 #include <barsread.h>
       
    28 #include <f32file.h>
       
    29 #include <apgtask.h>
       
    30 #include <memspyui.rsg>
       
    31 
       
    32 // Engine includes
       
    33 #include <memspy/engine/memspyengine.h>
       
    34 #include <memspy/engine/memspyengineoutputsink.h>
       
    35 #include <memspy/engine/memspyengineobjectcontainer.h>
       
    36 #include <memspy/engine/memspyengineobjectprocess.h>
       
    37 #include <memspy/engine/memspyengineobjectthread.h>
       
    38 #include <memspy/engine/memspyengineobjectthreadinfoobjects.h>
       
    39 #include <memspy/engine/memspyenginehelperchunk.h>
       
    40 #include <memspy/engine/memspyenginehelperthread.h>
       
    41 #include <memspy/engine/memspyenginehelperprocess.h>
       
    42 #include <memspy/engine/memspyenginehelperkernelcontainers.h>
       
    43 #include <memspy/engine/memspyenginehelperfbserv.h>
       
    44 #include <memspyengineclientinterface.h>
       
    45 #include <memspy/driver/memspydriverenumerationsshared.h>
       
    46 #include <memspy/engine/memspyenginehelperkernelcontainers.h>
       
    47 //cigasto
       
    48 #include <memspysession.h>
       
    49 
       
    50 // User includes
       
    51 #include "MemSpyContainer.h"
       
    52 #include "MemSpyDocument.h"
       
    53 #include "MemSpySettings.h"
       
    54 #include "MemSpyDeviceWideOperationDialog.h"
       
    55 #include "MemSpyViewRAMInfo.h" // for aknicon config check
       
    56 #include "MemSpyExportBitmapsToMemoryCardDialog.h"
       
    57 #include "MemSpy.hrh"
       
    58 #include "viewcli.h"
       
    59 
       
    60 // Constants
       
    61 const TInt KMemSpyDefaultAutoCaptureTimerPeriod = 60;
       
    62 const TUint32 KMemSpyEikSrvSID = 0x10003a4a;
       
    63 
       
    64 /*
       
    65 CMemSpyAppUi::CMemSpyAppUi( CMemSpyEngine& aEngine )
       
    66 :   iEngine( aEngine ), iAutoCaptureTimerPeriod( KMemSpyDefaultAutoCaptureTimerPeriod ), iAutoCaptureOperationType( CMemSpyDeviceWideOperations::EPerEntityHeapInfo )
       
    67     {
       
    68     iEngine.SetObserver( this );
       
    69     }
       
    70 */
       
    71 CMemSpyAppUi::CMemSpyAppUi( RMemSpySession &aSession )
       
    72 :   iMemSpySession( aSession ), iAutoCaptureTimerPeriod( KMemSpyDefaultAutoCaptureTimerPeriod ), iAutoCaptureOperationType( CMemSpyDeviceWideOperations::EPerEntityHeapInfo )
       
    73     {
       
    74     //iEngine.SetObserver( this );
       
    75     }
       
    76 
       
    77 CMemSpyAppUi::~CMemSpyAppUi()
       
    78     {
       
    79     RDebug::Printf( "[MemSpy] MemSpy is now closing." );
       
    80     //
       
    81     delete iAutoCaptureTimer;
       
    82     //
       
    83     if (iAppContainer)
       
    84         {
       
    85         RemoveFromStack( iAppContainer );
       
    86         delete iAppContainer;
       
    87         }
       
    88     //
       
    89     //iEngine.SetObserver( NULL );
       
    90     SetViewServerTimeOutStatus( ETrue );
       
    91     }
       
    92 
       
    93 
       
    94 void CMemSpyAppUi::ConstructL()
       
    95     {
       
    96     BaseConstructL( EAknEnableSkin );
       
    97     //
       
    98     //iAppContainer = new (ELeave) CMemSpyContainer( iEngine, *this );
       
    99     iAppContainer = new (ELeave) CMemSpyContainer( iMemSpySession, *this );
       
   100     iAppContainer->SetMopParent(this);
       
   101     iAppContainer->ConstructL( ClientRect() );
       
   102     iAppContainer->SetObserver( this );
       
   103     iAppContainer->SetFocus( ETrue );
       
   104     AddToStackL( iAppContainer );
       
   105     //
       
   106     iAutoCaptureTimer = CPeriodic::NewL( CActive::EPriorityIdle );
       
   107 	//
       
   108 	iEikonEnv->SetSystem( ETrue );
       
   109     //
       
   110     SetViewServerTimeOutStatus( EFalse );
       
   111     }
       
   112 
       
   113 
       
   114 CMemSpyDocument& CMemSpyAppUi::MemSpyDocument()
       
   115     {
       
   116 	CMemSpyDocument* doc = static_cast< CMemSpyDocument* >( Document() );
       
   117     return *doc;
       
   118     }
       
   119 
       
   120 
       
   121 const CMemSpyDocument& CMemSpyAppUi::MemSpyDocument() const
       
   122     {
       
   123 	const CMemSpyDocument* doc = static_cast< const CMemSpyDocument* >( Document() );
       
   124     return *doc;
       
   125     }
       
   126 
       
   127 
       
   128 void CMemSpyAppUi::HandleStatusPaneSizeChange()
       
   129 	{
       
   130 	iAppContainer->SetRect( ClientRect() );
       
   131 	} 
       
   132 
       
   133 
       
   134 void CMemSpyAppUi::HandleControlEventL( CCoeControl* aControl, TCoeEvent /*aEventType*/ )
       
   135     {
       
   136     if  ( aControl == iAppContainer )
       
   137         {
       
   138         UpdateCBAL();
       
   139         }
       
   140     }
       
   141 
       
   142 
       
   143 void CMemSpyAppUi::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
       
   144     {
       
   145     CMemSpyViewBase& view = iAppContainer->ActiveView();
       
   146     const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
       
   147     //
       
   148     const TBool openableView = MemSpyViewTypeUtils::IsOpenableItem( viewType );
       
   149     const TBool exitable = MemSpyViewTypeUtils::IsExitableView( viewType );
       
   150     //
       
   151 #ifdef _DEBUG
       
   152     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - START - aResourceId: 0x%08x (%8d), iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d, viewType: %d, openableView: %d, exitable: %d", aResourceId, aResourceId, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive(), viewType, openableView, exitable );
       
   153 #endif
       
   154     //
       
   155     if  ( aResourceId == R_MEMSPY_MENUPANE )
       
   156         {
       
   157         const TInt count = aMenuPane->NumberOfItemsInPane();
       
   158         for( TInt i=0; i<count; i++ )
       
   159             {
       
   160             TBool dimItem = EFalse;
       
   161             CEikMenuPaneItem::SData& menuPaneMetaData = aMenuPane->ItemDataByIndexL( i );
       
   162 
       
   163             // If the command is inside the view-specific range then we'll hide it
       
   164             // unless the view and command id matches.
       
   165             const TBool isViewSpecific = ( menuPaneMetaData.iCommandId >= KMemSpyMenuCommandViewSpecific );
       
   166             if  ( isViewSpecific )
       
   167                 {
       
   168                 // Check whether this view requires this command item.
       
   169                 dimItem = ( view.MenuCascadeCommandId() != menuPaneMetaData.iCommandId );
       
   170                 }
       
   171 
       
   172             aMenuPane->SetItemDimmed( menuPaneMetaData.iCommandId, dimItem );
       
   173             }
       
   174 
       
   175         aMenuPane->SetItemDimmed( EMemSpyCmdOpen, !openableView );
       
   176         aMenuPane->SetItemDimmed( EAknSoftkeyBack, exitable );
       
   177         aMenuPane->SetItemDimmed( EAknCmdExit, !exitable );
       
   178         }
       
   179     else if ( aResourceId == R_MEMSPY_MENUPANE_TOOLS )
       
   180         {
       
   181         const TBool inOpenFilesView = ( viewType == EMemSpyViewTypeOpenFiles );
       
   182         aMenuPane->SetItemDimmed( EMemSpyCmdToolsListOpenFiles, !inOpenFilesView );
       
   183         }
       
   184     else if ( aResourceId == R_MEMSPY_MENUPANE_VIEW )
       
   185         {
       
   186         // Hide the refresh item when in the thread info container view
       
   187         aMenuPane->SetItemDimmed( EMemSpyCmdViewRefresh, viewType == EMemSpyViewTypeThreadInfoItemList );
       
   188         aMenuPane->SetItemDimmed( EMemSpyCmdViewOutputToSink, viewType == EMemSpyViewTypeThreadInfoItemList );
       
   189         }
       
   190     else if ( aResourceId == R_MEMSPY_MENUPANE_OUTPUT )
       
   191         {
       
   192 		/* TODO
       
   193         //const TMemSpySinkType currentSink = iEngine.SinkType();		
       
   194 		const TMemSpySinkType currentSink = iMemSpySession.GetSinkType();
       
   195         aMenuPane->SetItemDimmed( EMemSpyCmdOutputToDebug, currentSink == ESinkTypeDebug );
       
   196         aMenuPane->SetItemDimmed( EMemSpyCmdOutputToFile, currentSink == ESinkTypeFile );
       
   197         */        
       
   198         }
       
   199     else if ( aResourceId == R_MEMSPY_MENUPANE_AUTO_CAPTURE )
       
   200         {
       
   201         // Change the auto-capture toggle caption appropriately...
       
   202         TInt resId = R_MEMSPY_AUTO_CAPTURE_ENABLE;
       
   203         if  ( iAutoCaptureTimer->IsActive() )
       
   204             {
       
   205             resId = R_MEMSPY_AUTO_CAPTURE_DISABLE;
       
   206             }
       
   207         aMenuPane->SetItemTextL( EMemSpyCmdAutoCaptureToggle, resId );
       
   208         }
       
   209 
       
   210 #ifdef _DEBUG
       
   211     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - sending to view..." );
       
   212 #endif
       
   213 
       
   214     view.DynInitMenuPaneL( aResourceId, aMenuPane );
       
   215 
       
   216 #ifdef _DEBUG
       
   217     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DynInitMenuPaneL() - END - aResourceId: 0x%08x (%8d), iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d, viewType: %d, openableView: %d, exitable: %d", aResourceId, aResourceId, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive(), viewType, openableView, exitable );
       
   218 #endif
       
   219     }
       
   220 
       
   221 
       
   222 TKeyResponse CMemSpyAppUi::HandleKeyEventL( const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/ )
       
   223     {
       
   224     return EKeyWasNotConsumed;
       
   225     }
       
   226 
       
   227 
       
   228 void CMemSpyAppUi::HandleCommandL( TInt aCommand )
       
   229     {
       
   230 #ifdef _DEBUG
       
   231     RDebug::Printf( "[MemSpy] CMemSpyAppUi::HandleCommandL() - START - aCommand: %8d, iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", aCommand, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
       
   232 #endif
       
   233 
       
   234     switch ( aCommand )
       
   235         {
       
   236     case EAknSoftkeyBack:
       
   237         OnCmdBackL();
       
   238         break;
       
   239 
       
   240     case EEikCmdExit:
       
   241     case EAknCmdExit:
       
   242     case EAknSoftkeyExit:
       
   243         OnCmdExitL();
       
   244         break;
       
   245 
       
   246     case EMemSpyCmdOpen:
       
   247         OnCmdOpenL();
       
   248         break;
       
   249 
       
   250     case EMemSpyCmdOutputToDebug:
       
   251         OnCmdOutputToDebugL();
       
   252 		break;
       
   253     case EMemSpyCmdOutputToFile:
       
   254         OnCmdOutputToFileL();
       
   255 		break;
       
   256 
       
   257     case EMemSpyCmdToolsAbout:
       
   258         OnCmdAboutL();
       
   259         break;
       
   260     //         
       
   261     case EMemSpyCmdPhoneInfoGeneralSummary:
       
   262         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralSummary );
       
   263     	OnCmdPhoneInformationOperationL( OutputPhoneInfo );
       
   264         break;        
       
   265     case EMemSpyCmdPhoneInfoGeneralDetailed:
       
   266         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralDetailed );
       
   267         OnCmdPhoneInformationOperationL( OutputDetailedPhoneInfo );
       
   268         break;
       
   269     /*
       
   270     case EMemSpyCmdPhoneInfoGeneralHandles:
       
   271         OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityGeneralHandles );
       
   272         break;
       
   273     case EMemSpyCmdPhoneInfoGeneralKernelContainers:
       
   274         OnCmdPhoneInformationOperationKernelContainersL();
       
   275         break;
       
   276     //
       
   277     */
       
   278     case EMemSpyCmdPhoneInfoHeapInfoSummary:
       
   279         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapInfo );
       
   280     	OnCmdPhoneInformationOperationL (OutputHeapInfo );
       
   281         break;
       
   282     case EMemSpyCmdPhoneInfoHeapInfoCompact:
       
   283         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EEntireDeviceHeapInfoCompact );
       
   284     	OnCmdPhoneInformationOperationL( OutputCompactHeapInfo );
       
   285         break;
       
   286     case EMemSpyCmdPhoneInfoHeapCellListing:
       
   287         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapCellListing );
       
   288         OnCmdPhoneInformationOperationL( OutputHeapCellListing );
       
   289         break;
       
   290         
       
   291     case EMemSpyCmdPhoneInfoHeapDump:
       
   292         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityHeapData );
       
   293     	OnCmdPhoneInformationOperationL( OutputHeapData );
       
   294         break;
       
   295     //		   		    		
       
   296     case EMemSpyCmdPhoneInfoStackInfo:
       
   297         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackInfo );
       
   298         OnCmdPhoneInformationOperationL( OutputStackInfo );
       
   299         break;
       
   300     case EMemSpyCmdPhoneInfoStackInfoCompact:
       
   301         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EEntireDeviceStackInfoCompact );
       
   302         OnCmdPhoneInformationOperationL( OutputCompactStackInfo );
       
   303         break;
       
   304     case EMemSpyCmdPhoneInfoStackDumpUser:
       
   305         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackDataUser );
       
   306     	OnCmdPhoneInformationOperationL( OutputUserStackData );
       
   307         break;
       
   308     case EMemSpyCmdPhoneInfoStackDumpKernel:
       
   309         //OnCmdPhoneInformationOperationL( CMemSpyDeviceWideOperations::EPerEntityStackDataKernel );
       
   310         OnCmdPhoneInformationOperationL( OutputKernelStackData );
       
   311         break;
       
   312 
       
   313     case EMemSpyCmdAutoCaptureToggle:
       
   314         OnCmdAutoCaptureToggleL();
       
   315         break;
       
   316     case EMemSpyCmdAutoCaptureRetryTime:
       
   317         OnCmdAutoCaptureRetryTimeL();
       
   318         break;
       
   319     case EMemSpyCmdAutoCaptureOperationType:
       
   320         OnCmdAutoCaptureOperationTypeL();
       
   321         break;
       
   322 
       
   323     default:
       
   324         iAppContainer->HandleCommandL( aCommand );
       
   325         break;
       
   326         }
       
   327 
       
   328 #ifdef _DEBUG
       
   329     RDebug::Printf( "[MemSpy] CMemSpyAppUi::HandleCommandL() - END - aCommand: %8d, iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", aCommand, iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
       
   330 #endif
       
   331     }
       
   332 
       
   333 
       
   334 void CMemSpyAppUi::HandleForegroundEventL( TBool aForeground)
       
   335     {
       
   336     // Refresh the container when coming to the foreground
       
   337     if  ( aForeground )
       
   338         {
       
   339         iAppContainer->OnCmdViewRefreshL();
       
   340         }
       
   341     }
       
   342 
       
   343 
       
   344 void CMemSpyAppUi::HandleThreadSelectedL( const CMemSpyThread& /*aThread*/ )
       
   345     {
       
   346 	MEikAppUiFactory* appUiFactory = (iEikonEnv)->AppUiFactory();
       
   347     appUiFactory->MenuBar()->TryDisplayMenuBarL();
       
   348     }
       
   349 
       
   350 
       
   351 void CMemSpyAppUi::HandleMemSpyEngineEventL( MMemSpyEngineObserver::TEvent aEvent, TAny* aContext )
       
   352     {
       
   353     if  ( aEvent == MMemSpyEngineObserver::EHandleThreadsOrProcessesChanged )
       
   354         {
       
   355         // Get the original container
       
   356         const CMemSpyEngineObjectContainer& oldContainer = *reinterpret_cast< CMemSpyEngineObjectContainer* >( aContext );
       
   357         (void) oldContainer;
       
   358 
       
   359         // Refresh the container
       
   360         iAppContainer->OnCmdViewRefreshL();
       
   361         }
       
   362     else if ( aEvent == MMemSpyEngineObserver::EHandleClientServerOperationRequest )
       
   363         {
       
   364         const TInt function = reinterpret_cast<TInt>( aContext );
       
   365         InitiateMemSpyClientServerOperationL( function );
       
   366         }
       
   367     }
       
   368 
       
   369 
       
   370 void CMemSpyAppUi::DWOperationStarted()
       
   371     {
       
   372 #ifdef _DEBUG
       
   373     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationStarted() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
       
   374 #endif
       
   375 
       
   376     iRunningDeviceWideOperation = ETrue;
       
   377 
       
   378 #ifdef _DEBUG
       
   379     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationStarted() - END - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
       
   380 #endif
       
   381     }
       
   382 
       
   383 
       
   384 void CMemSpyAppUi::DWOperationCancelled()
       
   385     {
       
   386 #ifdef _DEBUG
       
   387     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCancelled() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
       
   388 #endif
       
   389 
       
   390     iAutoCaptureTimer->Cancel();
       
   391 
       
   392 #ifdef _DEBUG
       
   393     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCancelled() - END - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
       
   394 #endif
       
   395     }
       
   396 
       
   397 
       
   398 void CMemSpyAppUi::DWOperationCompleted()
       
   399     {
       
   400 #ifdef _DEBUG
       
   401     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCompleted() - START - iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
       
   402 #endif
       
   403 
       
   404     iRunningDeviceWideOperation = EFalse;
       
   405 
       
   406 #ifdef _DEBUG
       
   407     RDebug::Printf( "[MemSpy] CMemSpyAppUi::DWOperationCompleted() - END - iAutoCaptureTimer is active: %d", iAutoCaptureTimer->IsActive() );
       
   408 #endif
       
   409     }
       
   410 
       
   411 
       
   412 void CMemSpyAppUi::UpdateCBAL()
       
   413     {
       
   414     CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
       
   415     const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
       
   416     //
       
   417     if  ( MemSpyViewTypeUtils::IsExitableView( viewType ) )
       
   418         {
       
   419         cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_EXIT );
       
   420         }
       
   421     else
       
   422         {
       
   423         cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
   424         }
       
   425 
       
   426     cba->MakeVisible( ETrue );
       
   427     cba->DrawNow();
       
   428     }
       
   429 
       
   430 
       
   431 void CMemSpyAppUi::InitiateMemSpyClientServerOperationL( TInt aOpCode )
       
   432     {
       
   433 #ifdef _DEBUG
       
   434     RDebug::Printf( "[MemSpy] CMemSpyAppUi::InitiateMemSpyClientServerOperationL() - START - aOpCode: %d", aOpCode );
       
   435 #endif
       
   436 
       
   437     switch( aOpCode )
       
   438         {
       
   439     case EMemSpyClientServerOpSummaryInfo:
       
   440         HandleCommandL( EMemSpyCmdPhoneInfoGeneralSummary );
       
   441         break;
       
   442     case EMemSpyClientServerOpSummaryInfoDetailed:
       
   443         HandleCommandL( EMemSpyCmdPhoneInfoGeneralDetailed );
       
   444         break;
       
   445     //
       
   446     case EMemSpyClientServerOpHeapInfo:
       
   447         HandleCommandL( EMemSpyCmdPhoneInfoHeapInfoSummary );
       
   448         break;
       
   449     case EMemSpyClientServerOpHeapCellListing:
       
   450         HandleCommandL( EMemSpyCmdPhoneInfoHeapCellListing );
       
   451         break;
       
   452     case EMemSpyClientServerOpHeapData:
       
   453         HandleCommandL( EMemSpyCmdPhoneInfoHeapDump );
       
   454         break;
       
   455     //
       
   456     case EMemSpyClientServerOpStackInfo:
       
   457         HandleCommandL( EMemSpyCmdPhoneInfoStackInfo );
       
   458         break;
       
   459     case EMemSpyClientServerOpStackDataUser:
       
   460         HandleCommandL( EMemSpyCmdPhoneInfoStackDumpUser );
       
   461         break;
       
   462     case EMemSpyClientServerOpStackDataKernel:
       
   463         HandleCommandL( EMemSpyCmdPhoneInfoStackDumpKernel );
       
   464         break;
       
   465     //
       
   466     case EMemSpyClientServerOpBitmapsSave:
       
   467         OnCmdToolsBitmapsSaveToMemoryCardL();
       
   468         break;
       
   469     case EMemSpyClientServerOpSendToBackground:
       
   470         OnCmdToolsSendToBackgroundL();
       
   471         break;
       
   472     case EMemSpyClientServerOpBringToForeground:
       
   473         OnCmdToolsBringToForegroundL();
       
   474         break;
       
   475     case EMemSpyClientServerOpExit:
       
   476         OnCmdExitL();
       
   477         break;
       
   478     //
       
   479     default:
       
   480         User::Leave( KErrNotSupported );
       
   481         break;
       
   482         }
       
   483 
       
   484 #ifdef _DEBUG
       
   485     RDebug::Printf( "[MemSpy] CMemSpyAppUi::InitiateMemSpyClientServerOperationL() - END - aOpCode: %d", aOpCode );
       
   486 #endif
       
   487     }
       
   488 
       
   489 
       
   490 void CMemSpyAppUi::SetViewServerTimeOutStatus( TBool aEnabled )
       
   491     {
       
   492 	/* TODO
       
   493 	iMemSpySession.SetServerTimeOutStatus( KMemSpyEikSrvSID, aEnabled );
       
   494 	*/
       
   495 	/*
       
   496     TRAP_IGNORE(
       
   497         iEngine.HelperProcess().ImpersonateL( KMemSpyEikSrvSID );
       
   498         //
       
   499         CVwsSessionWrapper* ses = CVwsSessionWrapper::NewLC();
       
   500         ses->EnableServerEventTimeOut( aEnabled );
       
   501         CleanupStack::PopAndDestroy( ses );
       
   502         //
       
   503         iEngine.HelperProcess().ImpersonateL( 0 );
       
   504         );
       
   505     */	
       
   506     }
       
   507 
       
   508 
       
   509 void CMemSpyAppUi::OnCmdBackL()
       
   510     {
       
   511     const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
       
   512     //
       
   513     if  ( !MemSpyViewTypeUtils::IsExitableView( viewType ) )
       
   514         {
       
   515         // Should go back one view
       
   516         iAppContainer->NavigateToParentViewL();
       
   517         }
       
   518     }
       
   519 
       
   520 
       
   521 void CMemSpyAppUi::OnCmdExitL()
       
   522     {
       
   523     Exit();
       
   524     }
       
   525 
       
   526 
       
   527 void CMemSpyAppUi::OnCmdOpenL()
       
   528     {
       
   529     const TMemSpyViewType viewType = iAppContainer->ActiveViewType();
       
   530     //
       
   531     if  ( !MemSpyViewTypeUtils::IsOpenableItem( viewType ) )
       
   532         {
       
   533         // Should go back one view
       
   534         iAppContainer->NavigateToChildViewL();
       
   535         }
       
   536     }
       
   537 
       
   538 
       
   539 void CMemSpyAppUi::OnCmdPhoneInformationOperationL( TDeviceWideOperation aOperation )
       
   540     {	
       
   541 	//
       
   542 	//CMemSpyDeviceWideOperationDialog::ExecuteLD( iMemSpySession, aOperation );
       
   543 	CMemSpyDwoTracker* tracker = CMemSpyDeviceWideOperationDialog::CreateDeviceWideOperation( iMemSpySession, aOperation );
       
   544 	tracker->Start();		
       
   545 	/*
       
   546 #ifdef _DEBUG
       
   547     RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdPhoneInformationOperationL() - START - aOp: %d, iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", aOp, iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
       
   548 #endif
       
   549 
       
   550     if  ( !iRunningDeviceWideOperation )
       
   551         {        
       
   552 		CMemSpyDeviceWideOperationDialog::ExecuteLD( iMemSpySession, *this, aOp );
       
   553         }
       
   554 
       
   555 #ifdef _DEBUG
       
   556     RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdPhoneInformationOperationL() - END - aOp: %d, iRunningDeviceWideOperation: %d, iAutoCaptureTimer is active: %d", aOp, iRunningDeviceWideOperation, iAutoCaptureTimer->IsActive() );
       
   557 #endif
       
   558 	*/
       
   559     }
       
   560 
       
   561 
       
   562 void CMemSpyAppUi::OnCmdPhoneInformationOperationKernelContainersL()
       
   563     {
       
   564 	/* TODO
       
   565 	iMemSpySession.OutputKernelObjects();
       
   566 	*/
       
   567 	/*
       
   568     CMemSpyEngineGenericKernelObjectContainer* list = iEngine.HelperKernelContainers().ObjectsAllL();
       
   569     CleanupStack::PushL( list );
       
   570     iEngine.HelperKernelContainers().OutputL( *list );
       
   571     CleanupStack::PopAndDestroy( list );
       
   572     */	
       
   573     }
       
   574 
       
   575 
       
   576     
       
   577     
       
   578     
       
   579     
       
   580     
       
   581     
       
   582     
       
   583     
       
   584     
       
   585     
       
   586     
       
   587     
       
   588     
       
   589     
       
   590     
       
   591     
       
   592     
       
   593     
       
   594 
       
   595 
       
   596 void CMemSpyAppUi::OnCmdAutoCaptureToggleL()
       
   597     {
       
   598 #ifdef _DEBUG
       
   599     RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdAutoCaptureToggleL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
       
   600 #endif
       
   601 
       
   602     if  ( iAutoCaptureTimer->IsActive() )
       
   603         {
       
   604         iAutoCaptureTimer->Cancel();
       
   605         }
       
   606     else
       
   607         {
       
   608         iAutoCaptureTimer->Cancel();
       
   609         //
       
   610         const TTimeIntervalMicroSeconds32 interval( iAutoCaptureTimerPeriod * 1000000 );
       
   611         iAutoCaptureTimer->Start( 0, interval, TCallBack(AutoCaptureCallBack, this) );
       
   612         }
       
   613 
       
   614 #ifdef _DEBUG
       
   615     RDebug::Printf( "[MemSpy] CMemSpyAppUi::OnCmdAutoCaptureToggleL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
       
   616 #endif
       
   617     }
       
   618 
       
   619 
       
   620 void CMemSpyAppUi::OnCmdAutoCaptureRetryTimeL()
       
   621     {
       
   622     CAknNumberQueryDialog* dialog = new(ELeave) CAknNumberQueryDialog( iAutoCaptureTimerPeriod );
       
   623     dialog->ExecuteLD( R_MEMSPY_DEVICE_WIDE_SETTINGS );
       
   624     }
       
   625 
       
   626 
       
   627 void CMemSpyAppUi::OnCmdAutoCaptureOperationTypeL()
       
   628     {
       
   629     CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL( R_MEMSPY_AUTO_CAPTURE_OPERATION_TYPES );
       
   630     CleanupStack::PushL(items);
       
   631     //
       
   632     TInt currentItem = iAutoCaptureOperationType;
       
   633     //
       
   634     CAknRadioButtonSettingPage* dialog = new(ELeave) CAknRadioButtonSettingPage( R_MEMSPY_AUTO_CAPTURE_OPERATION_TYPES_SETTINGS_PAGE, currentItem, items );
       
   635     if  ( dialog->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
       
   636         {
       
   637         iAutoCaptureOperationType = static_cast< CMemSpyDeviceWideOperations::TOperation >( currentItem );
       
   638         }
       
   639     //
       
   640     CleanupStack::PopAndDestroy( items ); 
       
   641     }
       
   642 
       
   643 
       
   644 TInt CMemSpyAppUi::AutoCaptureCallBack( TAny* aSelf )
       
   645     {
       
   646     CMemSpyAppUi* self = reinterpret_cast< CMemSpyAppUi* >( aSelf );
       
   647     TRAPD( err, self->AutoCaptureCallBackL() );
       
   648     //
       
   649     const TBool callMeBackAgain = ( err == KErrNone );
       
   650     return callMeBackAgain;
       
   651     }
       
   652 
       
   653 
       
   654 void CMemSpyAppUi::AutoCaptureCallBackL()
       
   655     {
       
   656 #ifdef _DEBUG
       
   657     RDebug::Printf( "[MemSpy] CMemSpyAppUi::AutoCaptureCallBackL() - START - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
       
   658 #endif
       
   659 
       
   660    // OnCmdPhoneInformationOperationL( iAutoCaptureOperationType );
       
   661 
       
   662 #ifdef _DEBUG
       
   663     RDebug::Printf( "[MemSpy] CMemSpyAppUi::AutoCaptureCallBackL() - END - iAutoCaptureOperationType: %d, iAutoCaptureTimer is active: %d", iAutoCaptureOperationType, iAutoCaptureTimer->IsActive() );
       
   664 #endif
       
   665     }
       
   666 
       
   667 
       
   668 
       
   669 
       
   670 
       
   671 
       
   672 
       
   673 
       
   674 
       
   675 
       
   676 
       
   677 
       
   678 
       
   679 
       
   680 
       
   681 
       
   682 
       
   683 
       
   684 
       
   685 
       
   686 
       
   687 void CMemSpyAppUi::OnCmdOutputToDebugL()
       
   688     {
       
   689 	iMemSpySession.SwitchOutputSink( ESinkTypeDebug ); //set in engine
       
   690 	MemSpyDocument().Settings().SetSinkType( ESinkTypeDebug ); //set in settings
       
   691     }
       
   692 
       
   693 
       
   694 void CMemSpyAppUi::OnCmdOutputToFileL()
       
   695     {
       
   696 	iMemSpySession.SwitchOutputSink( ESinkTypeFile ); //set in engine
       
   697 	MemSpyDocument().Settings().SetSinkType( ESinkTypeFile ); //set in settings
       
   698     }
       
   699 
       
   700 
       
   701 
       
   702 
       
   703 
       
   704 
       
   705 
       
   706 
       
   707 
       
   708 
       
   709 
       
   710 void CMemSpyAppUi::OnCmdAboutL()
       
   711     {
       
   712     CAknMessageQueryDialog* dialog = new(ELeave) CAknMessageQueryDialog;
       
   713     dialog->ExecuteLD( R_MEMSPYUI_ABOUT_DIALOG );
       
   714     }
       
   715 
       
   716 
       
   717 
       
   718 
       
   719 
       
   720 
       
   721 
       
   722 
       
   723 
       
   724 
       
   725 
       
   726 
       
   727 void CMemSpyAppUi::OnCmdToolsBitmapsSaveToMemoryCardL()
       
   728     {
       
   729 	/* TODO
       
   730     // Get bitmap handles
       
   731     RArray<TInt> handles;
       
   732     CleanupClosePushL( handles );
       
   733     iEngine.HelperFbServ().GetArrayOfBitmapHandlesL( handles );
       
   734 
       
   735     // Build bitmap list
       
   736     CMemSpyEngineFbServBitmapArray* array = CMemSpyEngineFbServBitmapArray::NewL( handles );
       
   737     CleanupStack::PopAndDestroy( &handles );
       
   738     CleanupStack::PushL( array );
       
   739 
       
   740     // Export...
       
   741     CMemSpyExportBitmapsToMemoryCardDialog* dialog = CMemSpyExportBitmapsToMemoryCardDialog::NewL( iCoeEnv->FsSession(), *array );
       
   742     
       
   743     // All done
       
   744     CleanupStack::PopAndDestroy( array );
       
   745     */
       
   746     }
       
   747 
       
   748 
       
   749 void CMemSpyAppUi::OnCmdToolsSendToBackgroundL()
       
   750     {
       
   751     TApaTask task( iCoeEnv->WsSession() );
       
   752     task.SendToBackground();
       
   753     }
       
   754 
       
   755 
       
   756 void CMemSpyAppUi::OnCmdToolsBringToForegroundL()
       
   757     {
       
   758     iCoeEnv->BringOwnerToFront();
       
   759     }
       
   760 
       
   761 
       
   762 
       
   763