perfapps/memspyui/ui/avkon/src/MemSpyViewProcesses.cpp
changeset 53 819e59dfc032
parent 52 36d60d12b4af
--- a/perfapps/memspyui/ui/avkon/src/MemSpyViewProcesses.cpp	Fri Sep 17 14:22:55 2010 +0300
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewProcesses.cpp	Mon Oct 04 10:09:02 2010 +0300
@@ -56,8 +56,7 @@
 
 CMemSpyViewProcesses::~CMemSpyViewProcesses()
     {	
-	iProcesses.Reset();
-    //delete iSearchField;
+	iProcesses.ResetAndDestroy();
     delete iMatcherBuffer;
     }
 
@@ -65,7 +64,15 @@
 //void CMemSpyViewProcesses::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
 void CMemSpyViewProcesses::ConstructL( const TRect& aRect, CCoeControl& aContainer, TProcessId aSelectionRune )
     {
-	iMemSpySession.GetProcessesL(iProcesses); // get processes array;
+    RArray<CMemSpyApiProcess*> processes;
+	iMemSpySession.GetProcessesL( processes ); // get processes array;
+	CleanupClosePushL( processes );
+	iProcesses.ResetAndDestroy();
+	for (TInt i=0; i<processes.Count(); i++)
+	    {
+	    iProcesses.Append(processes[i]);
+	    }
+	CleanupStack::PopAndDestroy( &processes );
 	
     _LIT( KTitle, "Processes\n& Threads" );
     SetTitleL( KTitle );
@@ -302,7 +309,7 @@
     if ( doTerminate )
         {        
         TRAP( err, iMemSpySession.EndProcessL( iCurrentProcessId, ETerminate ) );
-        if( err = KErrNone )
+        if( err == KErrNone )
             RefreshL();
         }        
     }
@@ -358,21 +365,23 @@
 
 void CMemSpyViewProcesses::SetListBoxModelL()
     {	
-	if( iProcesses.Count() > 0 )
-		{
-		iProcesses.Close();
-		}
-	
-	iMemSpySession.GetProcessesL(iProcesses); // get processes array;
-	iModel = new (ELeave) CDesC16ArrayFlat( iProcesses.Count() + 1); //array for formated items
-	
-	_LIT( KTab, "\t" );
-	iModel = FormatModel( iProcesses ); //TODO Format model method with advanced formatting
+    RArray<CMemSpyApiProcess*> processes;
+    iMemSpySession.GetProcessesL( processes ); // get processes array;
+    CleanupClosePushL( processes );
+    iProcesses.ResetAndDestroy();
+    for (TInt i=0; i<processes.Count(); i++)
+        {
+        iProcesses.Append( processes[i] );
+        }
+    
+    CDesCArrayFlat* model = FormatModelLC( processes ); //TODO Format model method with advanced formatting
 		
 	CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    //listbox->Model()->SetItemTextArray( &iEngine.Container() );
-    listbox->Model()->SetItemTextArray( iModel );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    
+    CleanupStack::Pop( model );
+    CleanupStack::PopAndDestroy( &processes );
     }
 
 
@@ -561,9 +570,11 @@
 //Model formating methods
 //TODO: to be debbuged
 
-CDesCArrayFlat* CMemSpyViewProcesses::FormatModel( RArray<CMemSpyApiProcess*> aProcesses )
+CDesCArrayFlat* CMemSpyViewProcesses::FormatModelLC( const RArray<CMemSpyApiProcess*> &aProcesses )
 	{		
-	model = new (ELeave) CDesC16ArrayFlat( iProcesses.Count() + 16 ); //array for formated items
+    CDesCArrayFlat* model = new (ELeave) CDesC16ArrayFlat( iProcesses.Count() + 16 ); //array for formated items
+    CleanupStack::PushL( model );
+    
 	_LIT( KMemSpyProcessNameFormatSpecBasicName, " \t%S\t\t%8x, " );
 	
 	for( TInt i=0; i < aProcesses.Count(); i++ )