perfapps/memspyui/ui/avkon/src/MemSpyViewHeapTrackingResults.cpp
author hgs
Fri, 03 Sep 2010 17:11:21 +0300
changeset 51 b048e15729d6
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 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:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "MemSpyViewHeapTrackingResults.h"
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// System includes
hgs
parents:
diff changeset
    21
#include <hal.h>
hgs
parents:
diff changeset
    22
#ifdef __EPOC32__
hgs
parents:
diff changeset
    23
#include <e32rom.h>
hgs
parents:
diff changeset
    24
#endif
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
// Engine includes
hgs
parents:
diff changeset
    27
#include <memspy/engine/memspyengine.h>
hgs
parents:
diff changeset
    28
#include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
hgs
parents:
diff changeset
    29
#include <memspy/engine/memspyenginehelpersysmemtrackercyclechange.h>
hgs
parents:
diff changeset
    30
#include <memspy/engine/memspyenginehelpersysmemtrackerenums.h>
hgs
parents:
diff changeset
    31
#include <memspy/engine/memspyenginehelpersysmemtracker.h>
hgs
parents:
diff changeset
    32
#include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
hgs
parents:
diff changeset
    33
#include <memspyui.rsg>
hgs
parents:
diff changeset
    34
#include <memspysession.h>
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// User includes
hgs
parents:
diff changeset
    37
#include "MemSpyUiUtils.h"
hgs
parents:
diff changeset
    38
#include "MemSpyContainer.h"
hgs
parents:
diff changeset
    39
#include "MemSpyViewHeapTracking.h"
hgs
parents:
diff changeset
    40
#include "MemSpyContainerObserver.h"
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
_LIT( KCycle, "Cycle" );
hgs
parents:
diff changeset
    44
_LIT( KTime, "Time" );
hgs
parents:
diff changeset
    45
_LIT( KMemoryFree, "Memory Free" );
hgs
parents:
diff changeset
    46
_LIT( KMemoryChange, "Memory Change (vs. Last Cycle)" );
hgs
parents:
diff changeset
    47
_LIT( KNumOfChanges, "Number of Changes" );
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
CMemSpyViewHeapTrackingResults::CMemSpyViewHeapTrackingResults( RMemSpySession& aSession, MMemSpyViewObserver& aObserver )
hgs
parents:
diff changeset
    50
:   CMemSpyViewBase( aSession, aObserver )
hgs
parents:
diff changeset
    51
    {
hgs
parents:
diff changeset
    52
    //iEngine.HelperSysMemTracker().SetObserver( this );
hgs
parents:
diff changeset
    53
    }
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
CMemSpyViewHeapTrackingResults::~CMemSpyViewHeapTrackingResults()
hgs
parents:
diff changeset
    57
    {
hgs
parents:
diff changeset
    58
    //iEngine.HelperSysMemTracker().RemoveObserver( this );
hgs
parents:
diff changeset
    59
    }
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
void CMemSpyViewHeapTrackingResults::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
hgs
parents:
diff changeset
    63
    {
hgs
parents:
diff changeset
    64
    _LIT( KTitle, "Results Summary" );
hgs
parents:
diff changeset
    65
    SetTitleL( KTitle );
hgs
parents:
diff changeset
    66
    //
hgs
parents:
diff changeset
    67
    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
    // Make sure the correct item is selected
hgs
parents:
diff changeset
    70
    const TInt cycleNumber = ((TInt) aSelectionRune);    
hgs
parents:
diff changeset
    71
    TInt maxCycle = iMemSpySession.GetSwmtCyclesCount();    
hgs
parents:
diff changeset
    72
    if  ( cycleNumber > 0 && cycleNumber <= maxCycle )
hgs
parents:
diff changeset
    73
        {
hgs
parents:
diff changeset
    74
        iListBox->SetCurrentItemIndex( cycleNumber - 1 );
hgs
parents:
diff changeset
    75
        HandleListBoxItemSelectedL( cycleNumber );
hgs
parents:
diff changeset
    76
        }
hgs
parents:
diff changeset
    77
    }
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
void CMemSpyViewHeapTrackingResults::RefreshL()
hgs
parents:
diff changeset
    81
    {
hgs
parents:
diff changeset
    82
    SetListBoxModelL();
hgs
parents:
diff changeset
    83
    CMemSpyViewBase::RefreshL();
hgs
parents:
diff changeset
    84
    }
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
TMemSpyViewType CMemSpyViewHeapTrackingResults::ViewType() const
hgs
parents:
diff changeset
    88
    {
hgs
parents:
diff changeset
    89
    return EMemSpyViewTypeHeapTrackingResults;
hgs
parents:
diff changeset
    90
    }
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
CMemSpyViewBase* CMemSpyViewHeapTrackingResults::PrepareParentViewL()
hgs
parents:
diff changeset
    94
    {
hgs
parents:
diff changeset
    95
    CMemSpyViewHeapTracking* parent = new(ELeave) CMemSpyViewHeapTracking( iMemSpySession, iObserver );
hgs
parents:
diff changeset
    96
    CleanupStack::PushL( parent );
hgs
parents:
diff changeset
    97
    parent->ConstructL( Rect(), *Parent(), (TAny*) ViewType() );
hgs
parents:
diff changeset
    98
    CleanupStack::Pop( parent );
hgs
parents:
diff changeset
    99
    //
hgs
parents:
diff changeset
   100
   // iEngine.HelperSysMemTracker().RemoveObserver( this );
hgs
parents:
diff changeset
   101
    //
hgs
parents:
diff changeset
   102
    return parent;
hgs
parents:
diff changeset
   103
    }
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
CMemSpyViewBase* CMemSpyViewHeapTrackingResults::PrepareChildViewL()
hgs
parents:
diff changeset
   107
    {
hgs
parents:
diff changeset
   108
    const TInt index = iListBox->CurrentItemIndex();
hgs
parents:
diff changeset
   109
    //
hgs
parents:
diff changeset
   110
    CMemSpyViewBase* child = NULL;
hgs
parents:
diff changeset
   111
    
hgs
parents:
diff changeset
   112
    if  ( index >= 0 )
hgs
parents:
diff changeset
   113
        {
hgs
parents:
diff changeset
   114
        //const CMemSpyEngineHelperSysMemTrackerCycle* cycle = iEngine.HelperSysMemTracker().CompletedCycles()[ index ];
hgs
parents:
diff changeset
   115
		const CMemSpyApiMemoryTrackingCycle* cycle = iCycles[ index ];
hgs
parents:
diff changeset
   116
        //
hgs
parents:
diff changeset
   117
        child = new(ELeave) CMemSpyViewHeapTrackingResultsCycleInfo( iMemSpySession, iObserver, *cycle );
hgs
parents:
diff changeset
   118
        CleanupStack::PushL( child );
hgs
parents:
diff changeset
   119
        child->ConstructL( Rect(), *Parent() );
hgs
parents:
diff changeset
   120
        CleanupStack::Pop( child );
hgs
parents:
diff changeset
   121
        //
hgs
parents:
diff changeset
   122
        //iEngine.HelperSysMemTracker().RemoveObserver( this );
hgs
parents:
diff changeset
   123
        }
hgs
parents:
diff changeset
   124
    
hgs
parents:
diff changeset
   125
    //
hgs
parents:
diff changeset
   126
    return child;
hgs
parents:
diff changeset
   127
    }
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
void CMemSpyViewHeapTrackingResults::SetListBoxModelL()
hgs
parents:
diff changeset
   131
    {
hgs
parents:
diff changeset
   132
    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
hgs
parents:
diff changeset
   133
            
hgs
parents:
diff changeset
   134
    iMemSpySession.GetMemoryTrackingCyclesL( iCycles );
hgs
parents:
diff changeset
   135
    
hgs
parents:
diff changeset
   136
    CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( iCycles.Count());
hgs
parents:
diff changeset
   137
    
hgs
parents:
diff changeset
   138
    for ( TInt i = 0; i < iCycles.Count(); i++ )
hgs
parents:
diff changeset
   139
     	{
hgs
parents:
diff changeset
   140
 		HBufC* tempName = HBufC::NewL( iCycles[i]->Caption().Length() + 16 );
hgs
parents:
diff changeset
   141
     	CleanupStack::PushL( tempName );
hgs
parents:
diff changeset
   142
     	TPtr tempNamePtr( tempName->Des() );     
hgs
parents:
diff changeset
   143
     	
hgs
parents:
diff changeset
   144
     	TBuf<KMaxName> temp;
hgs
parents:
diff changeset
   145
     	temp.Copy(iCycles[i]->Caption());  	
hgs
parents:
diff changeset
   146
     	tempNamePtr.Append( temp );
hgs
parents:
diff changeset
   147
     	model->AppendL( tempNamePtr );
hgs
parents:
diff changeset
   148
     	
hgs
parents:
diff changeset
   149
     	CleanupStack::PopAndDestroy( tempName ); 
hgs
parents:
diff changeset
   150
     	}    
hgs
parents:
diff changeset
   151
        
hgs
parents:
diff changeset
   152
    listbox->Model()->SetItemTextArray( model );
hgs
parents:
diff changeset
   153
    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
hgs
parents:
diff changeset
   154
    }
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
void CMemSpyViewHeapTrackingResults::HandleCyclesResetL()
hgs
parents:
diff changeset
   158
    {
hgs
parents:
diff changeset
   159
    CMemSpyViewBase::RefreshL();
hgs
parents:
diff changeset
   160
    }
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
void CMemSpyViewHeapTrackingResults::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
hgs
parents:
diff changeset
   164
    {
hgs
parents:
diff changeset
   165
    }
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
void CMemSpyViewHeapTrackingResults::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
hgs
parents:
diff changeset
   169
    {
hgs
parents:
diff changeset
   170
	TInt count = iMemSpySession.GetSwmtCyclesCount();    
hgs
parents:
diff changeset
   171
	SetListBoxCurrentItemIndexL( count - 1 );
hgs
parents:
diff changeset
   172
    CMemSpyViewBase::RefreshL();
hgs
parents:
diff changeset
   173
    }
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
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
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
CMemSpyViewHeapTrackingResultsCycleInfo::CMemSpyViewHeapTrackingResultsCycleInfo( RMemSpySession& aSession, MMemSpyViewObserver& aObserver, const CMemSpyApiMemoryTrackingCycle& aCycle )
hgs
parents:
diff changeset
   207
:   CMemSpyViewBase( aSession, aObserver ), iCycle( aCycle )
hgs
parents:
diff changeset
   208
    {
hgs
parents:
diff changeset
   209
    //iEngine.HelperSysMemTracker().SetObserver( this );
hgs
parents:
diff changeset
   210
    }
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
CMemSpyViewHeapTrackingResultsCycleInfo::~CMemSpyViewHeapTrackingResultsCycleInfo()
hgs
parents:
diff changeset
   214
    {
hgs
parents:
diff changeset
   215
    //iEngine.HelperSysMemTracker().RemoveObserver( this );
hgs
parents:
diff changeset
   216
    }
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
void CMemSpyViewHeapTrackingResultsCycleInfo::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
hgs
parents:
diff changeset
   220
    {
hgs
parents:
diff changeset
   221
    _LIT( KTitleFormat, "Cycle Summary [%04d]" );
hgs
parents:
diff changeset
   222
    TBuf<30> buf;
hgs
parents:
diff changeset
   223
    buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   224
    SetTitleL( buf );
hgs
parents:
diff changeset
   225
    //
hgs
parents:
diff changeset
   226
    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
    // Make sure the correct item is selected
hgs
parents:
diff changeset
   229
    const TInt index = ((TInt) aSelectionRune);
hgs
parents:
diff changeset
   230
    iListBox->SetCurrentItemIndex( index );
hgs
parents:
diff changeset
   231
    HandleListBoxItemSelectedL( index );
hgs
parents:
diff changeset
   232
    }
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
void CMemSpyViewHeapTrackingResultsCycleInfo::RefreshL()
hgs
parents:
diff changeset
   236
    {
hgs
parents:
diff changeset
   237
    SetListBoxModelL();
hgs
parents:
diff changeset
   238
    CMemSpyViewBase::RefreshL();
hgs
parents:
diff changeset
   239
    }
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
TMemSpyViewType CMemSpyViewHeapTrackingResultsCycleInfo::ViewType() const
hgs
parents:
diff changeset
   243
    {
hgs
parents:
diff changeset
   244
    return EMemSpyViewTypeHeapTrackingResultsCycleInfo;
hgs
parents:
diff changeset
   245
    }
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
CMemSpyViewBase* CMemSpyViewHeapTrackingResultsCycleInfo::PrepareParentViewL()
hgs
parents:
diff changeset
   249
    {
hgs
parents:
diff changeset
   250
    CMemSpyViewHeapTrackingResults* parent = new(ELeave) CMemSpyViewHeapTrackingResults( iMemSpySession, iObserver );
hgs
parents:
diff changeset
   251
    CleanupStack::PushL( parent );
hgs
parents:
diff changeset
   252
    parent->ConstructL( Rect(), *Parent(), (TAny*) iCycle.CycleNumber() );
hgs
parents:
diff changeset
   253
    CleanupStack::Pop( parent );
hgs
parents:
diff changeset
   254
    //
hgs
parents:
diff changeset
   255
    //iEngine.HelperSysMemTracker().RemoveObserver( this );
hgs
parents:
diff changeset
   256
    //
hgs
parents:
diff changeset
   257
    return parent;
hgs
parents:
diff changeset
   258
    }
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
void CMemSpyViewHeapTrackingResultsCycleInfo::SetListBoxModelL()
hgs
parents:
diff changeset
   262
    {
hgs
parents:
diff changeset
   263
	CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( 6 );
hgs
parents:
diff changeset
   264
			
hgs
parents:
diff changeset
   265
	HBufC* buf = HBufC::NewL( 64 );
hgs
parents:
diff changeset
   266
	TPtr pBuf( buf->Des() );
hgs
parents:
diff changeset
   267
	
hgs
parents:
diff changeset
   268
	TBuf<4> cycleBuf;
hgs
parents:
diff changeset
   269
	_LIT( KCycleFormat, "%d");
hgs
parents:
diff changeset
   270
	cycleBuf.Format( KCycleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   271
	
hgs
parents:
diff changeset
   272
	pBuf.Zero();	
hgs
parents:
diff changeset
   273
	pBuf.Append( _L("\t") );
hgs
parents:
diff changeset
   274
	pBuf.Append( KCycle );
hgs
parents:
diff changeset
   275
	pBuf.Append( _L("\t\t") );
hgs
parents:
diff changeset
   276
	pBuf.Append( cycleBuf );	
hgs
parents:
diff changeset
   277
	model->AppendL( pBuf );
hgs
parents:
diff changeset
   278
	
hgs
parents:
diff changeset
   279
	//time:
hgs
parents:
diff changeset
   280
	TBuf<128> timeBuf;
hgs
parents:
diff changeset
   281
    const TDateTime dt = iCycle.Time().DateTime();
hgs
parents:
diff changeset
   282
    //
hgs
parents:
diff changeset
   283
    _LIT( KTimeFormatSpec, "%04d%02d%02d %02d:%02d:%02d" );
hgs
parents:
diff changeset
   284
    timeBuf.Format( KTimeFormatSpec, dt.Year(), dt.Month()+1, dt.Day()+1, dt.Hour(), dt.Minute(), dt.Second() );	    
hgs
parents:
diff changeset
   285
    pBuf.Zero();
hgs
parents:
diff changeset
   286
    pBuf.Append( _L("\t"));
hgs
parents:
diff changeset
   287
    pBuf.Append( KTime );
hgs
parents:
diff changeset
   288
    pBuf.Append( _L("\t\t") );        
hgs
parents:
diff changeset
   289
    pBuf.Append( timeBuf );         
hgs
parents:
diff changeset
   290
	model->AppendL( pBuf );
hgs
parents:
diff changeset
   291
	
hgs
parents:
diff changeset
   292
	TBuf<16> memoryFreeBuf;	
hgs
parents:
diff changeset
   293
	memoryFreeBuf.Format( KCycleFormat, iCycle.FreeMemory() );
hgs
parents:
diff changeset
   294
	pBuf.Zero();	
hgs
parents:
diff changeset
   295
	pBuf.Append( _L("\t") );
hgs
parents:
diff changeset
   296
	pBuf.Append( KMemoryFree );
hgs
parents:
diff changeset
   297
	pBuf.Append( _L("\t\t") );
hgs
parents:
diff changeset
   298
	pBuf.Append( memoryFreeBuf );
hgs
parents:
diff changeset
   299
	model->AppendL( pBuf );
hgs
parents:
diff changeset
   300
	
hgs
parents:
diff changeset
   301
	memoryFreeBuf.Format( KCycleFormat, iCycle.MemoryDelta() );
hgs
parents:
diff changeset
   302
	pBuf.Zero();	
hgs
parents:
diff changeset
   303
	pBuf.Append( _L("\t") );
hgs
parents:
diff changeset
   304
	pBuf.Append( KMemoryChange );
hgs
parents:
diff changeset
   305
	pBuf.Append( _L("\t\t") );
hgs
parents:
diff changeset
   306
	pBuf.Append( memoryFreeBuf );
hgs
parents:
diff changeset
   307
	model->AppendL( pBuf );
hgs
parents:
diff changeset
   308
	
hgs
parents:
diff changeset
   309
	cycleBuf.Format( KCycleFormat, iCycle.ChangeCount() );
hgs
parents:
diff changeset
   310
	pBuf.Zero();	
hgs
parents:
diff changeset
   311
	pBuf.Append( _L("\t") );
hgs
parents:
diff changeset
   312
	pBuf.Append( KNumOfChanges );
hgs
parents:
diff changeset
   313
	pBuf.Append( _L("\t\t") );
hgs
parents:
diff changeset
   314
	pBuf.Append( cycleBuf );
hgs
parents:
diff changeset
   315
	model->AppendL( pBuf );	
hgs
parents:
diff changeset
   316
	
hgs
parents:
diff changeset
   317
	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
hgs
parents:
diff changeset
   318
	listbox->Model()->SetItemTextArray( model );
hgs
parents:
diff changeset
   319
	listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
hgs
parents:
diff changeset
   320
    }
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCyclesResetL()
hgs
parents:
diff changeset
   324
    {
hgs
parents:
diff changeset
   325
    Container().NavigateToParentViewL();
hgs
parents:
diff changeset
   326
    }
hgs
parents:
diff changeset
   327
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
hgs
parents:
diff changeset
   330
    {
hgs
parents:
diff changeset
   331
    }
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
hgs
parents:
diff changeset
   334
void CMemSpyViewHeapTrackingResultsCycleInfo::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
hgs
parents:
diff changeset
   335
    {
hgs
parents:
diff changeset
   336
    }
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
hgs
parents:
diff changeset
   345
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
hgs
parents:
diff changeset
   355
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
hgs
parents:
diff changeset
   360
hgs
parents:
diff changeset
   361
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
/*
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
hgs
parents:
diff changeset
   380
hgs
parents:
diff changeset
   381
CMemSpyViewHeapTrackingResultsChangeDescriptor::CMemSpyViewHeapTrackingResultsChangeDescriptor( CMemSpyEngine& aEngine, MMemSpyViewObserver& aObserver, const CMemSpyEngineHelperSysMemTrackerCycle& aCycle, const CMemSpyEngineHelperSysMemTrackerCycleChange& aChangeDescriptor, TInt aIndex )
hgs
parents:
diff changeset
   382
:   CMemSpyViewBase( aEngine, aObserver ), iCycle( aCycle ), iChangeDescriptor( aChangeDescriptor ), iIndex( aIndex )
hgs
parents:
diff changeset
   383
    {
hgs
parents:
diff changeset
   384
    iEngine.HelperSysMemTracker().SetObserver( this );
hgs
parents:
diff changeset
   385
    }
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
hgs
parents:
diff changeset
   388
CMemSpyViewHeapTrackingResultsChangeDescriptor::~CMemSpyViewHeapTrackingResultsChangeDescriptor()
hgs
parents:
diff changeset
   389
    {
hgs
parents:
diff changeset
   390
    iEngine.HelperSysMemTracker().RemoveObserver( this );
hgs
parents:
diff changeset
   391
    }
hgs
parents:
diff changeset
   392
hgs
parents:
diff changeset
   393
hgs
parents:
diff changeset
   394
void CMemSpyViewHeapTrackingResultsChangeDescriptor::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
hgs
parents:
diff changeset
   395
    {
hgs
parents:
diff changeset
   396
    TBuf<30> buf;
hgs
parents:
diff changeset
   397
    if  ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHeapUser )
hgs
parents:
diff changeset
   398
        {
hgs
parents:
diff changeset
   399
        _LIT( KTitleFormat, "User Heap Change [%04d]" );
hgs
parents:
diff changeset
   400
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   401
        }
hgs
parents:
diff changeset
   402
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHeapKernel )
hgs
parents:
diff changeset
   403
        {
hgs
parents:
diff changeset
   404
        _LIT( KTitleFormat, "Kernel Heap Change [%04d]" );
hgs
parents:
diff changeset
   405
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   406
        }
hgs
parents:
diff changeset
   407
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeChunk )
hgs
parents:
diff changeset
   408
        {
hgs
parents:
diff changeset
   409
        _LIT( KTitleFormat, "Chunk Change [%04d]" );
hgs
parents:
diff changeset
   410
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   411
        }
hgs
parents:
diff changeset
   412
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeRamDrive )
hgs
parents:
diff changeset
   413
        {
hgs
parents:
diff changeset
   414
        _LIT( KTitleFormat, "RAM Drive Change [%04d]" );
hgs
parents:
diff changeset
   415
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   416
        }
hgs
parents:
diff changeset
   417
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeStack )
hgs
parents:
diff changeset
   418
        {
hgs
parents:
diff changeset
   419
        _LIT( KTitleFormat, "Stack Change [%04d]" );
hgs
parents:
diff changeset
   420
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   421
        }
hgs
parents:
diff changeset
   422
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeGlobalData )
hgs
parents:
diff changeset
   423
        {
hgs
parents:
diff changeset
   424
        _LIT( KTitleFormat, "Global Data Change [%04d]" );
hgs
parents:
diff changeset
   425
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   426
        }
hgs
parents:
diff changeset
   427
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeCode )
hgs
parents:
diff changeset
   428
        {
hgs
parents:
diff changeset
   429
        _LIT( KTitleFormat, "RAM-Loaded Code Change [%04d]" );
hgs
parents:
diff changeset
   430
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   431
        }
hgs
parents:
diff changeset
   432
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeHandle )
hgs
parents:
diff changeset
   433
        {
hgs
parents:
diff changeset
   434
        _LIT( KTitleFormat, "Handle Change [%04d]" );
hgs
parents:
diff changeset
   435
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   436
        }
hgs
parents:
diff changeset
   437
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeOpenFile )
hgs
parents:
diff changeset
   438
        {
hgs
parents:
diff changeset
   439
        _LIT( KTitleFormat, "Open File Change [%04d]" );
hgs
parents:
diff changeset
   440
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   441
        }
hgs
parents:
diff changeset
   442
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeDiskSpace )
hgs
parents:
diff changeset
   443
        {
hgs
parents:
diff changeset
   444
        _LIT( KTitleFormat, "Disk Space Change [%04d]" );
hgs
parents:
diff changeset
   445
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   446
        }
hgs
parents:
diff changeset
   447
    else if ( iChangeDescriptor.Type() == EMemSpyEngineSysMemTrackerTypeBitmap )
hgs
parents:
diff changeset
   448
        {
hgs
parents:
diff changeset
   449
        _LIT( KTitleFormat, "Bitmap Change [%04d]" );
hgs
parents:
diff changeset
   450
        buf.Format( KTitleFormat, iCycle.CycleNumber() );
hgs
parents:
diff changeset
   451
        }
hgs
parents:
diff changeset
   452
    //
hgs
parents:
diff changeset
   453
    SetTitleL( buf );
hgs
parents:
diff changeset
   454
    //
hgs
parents:
diff changeset
   455
    CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
hgs
parents:
diff changeset
   456
    }
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
hgs
parents:
diff changeset
   459
void CMemSpyViewHeapTrackingResultsChangeDescriptor::RefreshL()
hgs
parents:
diff changeset
   460
    {
hgs
parents:
diff changeset
   461
    SetListBoxModelL();
hgs
parents:
diff changeset
   462
    CMemSpyViewBase::RefreshL();
hgs
parents:
diff changeset
   463
    }
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
hgs
parents:
diff changeset
   466
TMemSpyViewType CMemSpyViewHeapTrackingResultsChangeDescriptor::ViewType() const
hgs
parents:
diff changeset
   467
    {
hgs
parents:
diff changeset
   468
    return EMemSpyViewTypeHeapTrackingResultsCycleChangeDescriptor;
hgs
parents:
diff changeset
   469
    }
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
hgs
parents:
diff changeset
   472
CMemSpyViewBase* CMemSpyViewHeapTrackingResultsChangeDescriptor::PrepareParentViewL()
hgs
parents:
diff changeset
   473
    {
hgs
parents:
diff changeset
   474
    CMemSpyViewHeapTrackingResultsCycleInfo* parent = new(ELeave) CMemSpyViewHeapTrackingResultsCycleInfo( iEngine, iObserver, iCycle );
hgs
parents:
diff changeset
   475
    CleanupStack::PushL( parent );
hgs
parents:
diff changeset
   476
    parent->ConstructL( Rect(), *Parent(), (TAny*) iIndex );
hgs
parents:
diff changeset
   477
    CleanupStack::Pop( parent );
hgs
parents:
diff changeset
   478
    //
hgs
parents:
diff changeset
   479
    iEngine.HelperSysMemTracker().RemoveObserver( this );
hgs
parents:
diff changeset
   480
    //
hgs
parents:
diff changeset
   481
    return parent;
hgs
parents:
diff changeset
   482
    }
hgs
parents:
diff changeset
   483
hgs
parents:
diff changeset
   484
hgs
parents:
diff changeset
   485
void CMemSpyViewHeapTrackingResultsChangeDescriptor::SetListBoxModelL()
hgs
parents:
diff changeset
   486
    {
hgs
parents:
diff changeset
   487
    MDesCArray& model = const_cast< MDesCArray& >( static_cast< const MDesCArray&>( iChangeDescriptor ) );
hgs
parents:
diff changeset
   488
    //
hgs
parents:
diff changeset
   489
    CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
hgs
parents:
diff changeset
   490
    listbox->Model()->SetItemTextArray( &model );
hgs
parents:
diff changeset
   491
    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
hgs
parents:
diff changeset
   492
    }
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
hgs
parents:
diff changeset
   495
void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCyclesResetL()
hgs
parents:
diff changeset
   496
    {
hgs
parents:
diff changeset
   497
    CMemSpyViewHeapTrackingResults* mainResultsMenu = new(ELeave) CMemSpyViewHeapTrackingResults( iEngine, iObserver );
hgs
parents:
diff changeset
   498
    CleanupStack::PushL( mainResultsMenu );
hgs
parents:
diff changeset
   499
    mainResultsMenu->ConstructL( Rect(), *Parent() );
hgs
parents:
diff changeset
   500
    CleanupStack::Pop( mainResultsMenu );
hgs
parents:
diff changeset
   501
    //
hgs
parents:
diff changeset
   502
    Container().SetNewActiveViewL( mainResultsMenu );
hgs
parents:
diff changeset
   503
    }
hgs
parents:
diff changeset
   504
hgs
parents:
diff changeset
   505
hgs
parents:
diff changeset
   506
void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCycleStartedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
hgs
parents:
diff changeset
   507
    {
hgs
parents:
diff changeset
   508
    }
hgs
parents:
diff changeset
   509
hgs
parents:
diff changeset
   510
hgs
parents:
diff changeset
   511
void CMemSpyViewHeapTrackingResultsChangeDescriptor::HandleCycleFinishedL( const CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
hgs
parents:
diff changeset
   512
    {
hgs
parents:
diff changeset
   513
    }
hgs
parents:
diff changeset
   514
*/
hgs
parents:
diff changeset
   515