perfapps/memspyui/ui/avkon/src/MemSpyViewKernelObjects.cpp
changeset 53 819e59dfc032
parent 51 b048e15729d6
--- a/perfapps/memspyui/ui/avkon/src/MemSpyViewKernelObjects.cpp	Fri Sep 17 14:22:55 2010 +0300
+++ b/perfapps/memspyui/ui/avkon/src/MemSpyViewKernelObjects.cpp	Mon Oct 04 10:09:02 2010 +0300
@@ -26,6 +26,7 @@
 #include <aknnotewrappers.h>
 #include <apgwgnam.h>
 #include <aknmessagequerydialog.h>
+#include <aknwaitdialog.h>
 
 // Engine includes
 #include <memspy/engine/memspyengine.h>
@@ -71,20 +72,35 @@
         iNavContainer->Pop( iNavDecorator );
         delete iNavDecorator;
         }
-    delete iModel;
     delete iItems;
     delete iObjectList;
+    
+    if( iWaitDialog )
+    	delete iWaitDialog;
+    
+    for (TInt i=0; i<iKernelObjectItems.Count(); i++)
+        {
+        delete iKernelObjectItems[i];
+    }
+
+    iKernelObjectItems.Close();
     }
 
 
 void CMemSpyViewKernelObjects::ConstructL( const TRect& aRect, CCoeControl& aContainer, TAny* aSelectionRune )
     {
+	iWaitDialog = new (ELeave) CAknWaitDialog((REINTERPRET_CAST(CEikDialog**, &iWaitDialog)), ETrue);
+	iWaitDialog->PrepareLC( R_MEMSPY_WAIT_NOTE );	
+	iWaitDialog->RunLD();
+	
     _LIT( KTitle, "Kernel Objects" );
     SetTitleL( KTitle );
     iItems = new(ELeave) CDesCArrayFlat(5);
     //
     CMemSpyViewBase::ConstructL( aRect, aContainer, aSelectionRune );
     CreateTabsL();
+    
+    iWaitDialog->ProcessFinishedL(); 
     }
 
 
@@ -107,9 +123,9 @@
 
 
 void CMemSpyViewKernelObjects::RefreshL()
-    {
+    {	
     SetListBoxModelL();
-    CMemSpyViewBase::RefreshL();
+    CMemSpyViewBase::RefreshL();               
     }
 
 
@@ -168,9 +184,14 @@
     //_LIT( KLineFormatSpec, "\t%S" );
     _LIT( KTab, "\t" );
        
+    for (TInt i=0; i<iKernelObjectItems.Count(); i++)
+        {
+        delete iKernelObjectItems[i];
+        }
     iMemSpySession.GetKernelObjectItems( iKernelObjectItems, iObjectType );    
     
-    iModel = new (ELeave) CDesC16ArrayFlat( iKernelObjectItems.Count() + 1 ); //array for formated items, +1 added there for 0 case - creating 0-sized array panics
+    CDesC16ArrayFlat* model = new (ELeave) CDesC16ArrayFlat( iKernelObjectItems.Count() + 1 ); //array for formated items, +1 added there for 0 case - creating 0-sized array panics
+    CleanupStack::PushL( model );
         
     for ( TInt i = 0; i < iKernelObjectItems.Count(); i++ )
         {
@@ -182,14 +203,16 @@
         TBuf<KMaxName> temp;
         temp.Copy(iKernelObjectItems[i]->Name());    	
         tempNamePtr.Append( temp	 );
-        iModel->AppendL( tempNamePtr );
+        model->AppendL( tempNamePtr );
             
         CleanupStack::PopAndDestroy( tempName ); 
         }
     
     CAknSettingStyleListBox* listbox = static_cast< CAknSettingStyleListBox* >( iListBox );
-    listbox->Model()->SetItemTextArray( iModel );
-    listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );       
+    listbox->Model()->SetItemTextArray( model );
+    listbox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+    
+    CleanupStack::Pop( model );
     }