memspyui/ui/avkon/src/MemSpyDeviceWideOperationDialog.cpp
changeset 31 e7a04a6385be
parent 17 4f2773374eff
equal deleted inserted replaced
30:d8e625c87f33 31:e7a04a6385be
    24 #include <coemain.h>
    24 #include <coemain.h>
    25 #include <eikenv.h>
    25 #include <eikenv.h>
    26 #include <avkon.hrh>
    26 #include <avkon.hrh>
    27 #include <memspyui.rsg>
    27 #include <memspyui.rsg>
    28 
    28 
    29 
    29 #include <memspysession.h>
       
    30 
       
    31 /*
    30 CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver )
    32 CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver )
    31 :   iEngine( aEngine ), iObserver( aObserver )
    33 :   iEngine( aEngine ), iObserver( aObserver )
    32     {
    34     {
    33     }
    35     }
    34 
    36 
       
    37 CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver )
       
    38 :   iSession( aSession ), iObserver( aObserver )
       
    39     {
       
    40     }    
       
    41 */
       
    42 
       
    43 CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession )
       
    44 :   iSession( aSession )
       
    45     {
       
    46     }    
       
    47 
    35 
    48 
    36 CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog()
    49 CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog()
    37     {
    50     {
    38 #ifdef _DEBUG
    51 #ifdef _DEBUG
    39     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - START - iForcedCancel: %d", iForcedCancel );
    52     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - START - iForcedCancel: %d", iForcedCancel );
    52 
    65 
    53 #ifdef _DEBUG
    66 #ifdef _DEBUG
    54     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - sending EDialogDismissed to observer..." );
    67     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - sending EDialogDismissed to observer..." );
    55 #endif
    68 #endif
    56 
    69 
    57     iObserver.DWOperationCompleted();
    70     //iObserver.DWOperationCompleted(); //TODO
    58 
    71 
    59 #ifdef _DEBUG
    72 #ifdef _DEBUG
    60     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - END" );
    73     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - END" );
    61 #endif
    74 #endif
    62     }
    75     }
    63 
    76 
    64 
    77 
    65 void CMemSpyDeviceWideOperationDialog::ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation )
    78 //void CMemSpyDeviceWideOperationDialog::ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation )
    66     {
    79 void CMemSpyDeviceWideOperationDialog::ExecuteL( TDeviceWideOperation aOp )
       
    80     {
       
    81 	/*
    67 #ifdef _DEBUG
    82 #ifdef _DEBUG
    68     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - START" );
    83     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - START" );
    69 #endif
    84 #endif
    70 
    85 
    71     iOperation = CMemSpyDeviceWideOperations::NewL( iEngine, *this, aOperation );
    86     iOperation = CMemSpyDeviceWideOperations::NewL( iEngine, *this, aOperation );
    86     iProgressDialog->RunLD();
   101     iProgressDialog->RunLD();
    87 
   102 
    88 #ifdef _DEBUG
   103 #ifdef _DEBUG
    89     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - END" );
   104     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - END" );
    90 #endif
   105 #endif
    91     }
   106 	*/
    92 
   107     }
    93 void CMemSpyDeviceWideOperationDialog::ExecuteLD( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver, CMemSpyDeviceWideOperations::TOperation aOperation )
   108 
    94     {
   109 void CMemSpyDeviceWideOperationDialog::ExecuteLD( RMemSpySession& aSession, TDeviceWideOperation aOp )
    95     CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aEngine, aObserver );
   110     {
       
   111     //CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession, aObserver );
       
   112 	CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession );
    96     CleanupStack::PushL( self );
   113     CleanupStack::PushL( self );
    97     self->ExecuteL( aOperation );
   114     self->ExecuteL( aOp );
    98     CleanupStack::PopAndDestroy( self );
   115     CleanupStack::PopAndDestroy( self );
    99     }
   116     }
   100 
   117 
   101 
   118 
   102 void CMemSpyDeviceWideOperationDialog::Cancel()
   119 void CMemSpyDeviceWideOperationDialog::Cancel()
   110     if  ( iOperation )
   127     if  ( iOperation )
   111         {
   128         {
   112         iOperation->Cancel();
   129         iOperation->Cancel();
   113         }
   130         }
   114     //
   131     //
   115     iObserver.DWOperationCancelled();
   132     //iObserver.DWOperationCancelled();
   116 
   133 
   117 #ifdef _DEBUG
   134 #ifdef _DEBUG
   118     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::Cancel() - END" );
   135     RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::Cancel() - END" );
   119 #endif
   136 #endif
   120     }
   137     }
   145     switch( aEvent )
   162     switch( aEvent )
   146         {
   163         {
   147     case MMemSpyDeviceWideOperationsObserver::EOperationSized:
   164     case MMemSpyDeviceWideOperationsObserver::EOperationSized:
   148         break;
   165         break;
   149     case MMemSpyDeviceWideOperationsObserver::EOperationStarting:
   166     case MMemSpyDeviceWideOperationsObserver::EOperationStarting:
   150         iObserver.DWOperationStarted();
   167         //iObserver.DWOperationStarted();
   151         break;
   168         break;
   152     case MMemSpyDeviceWideOperationsObserver::EOperationProgressStart:
   169     case MMemSpyDeviceWideOperationsObserver::EOperationProgressStart:
   153         ASSERT( iProgressDialog != NULL );
   170         ASSERT( iProgressDialog != NULL );
   154         SetDialogCaptionL( aParam2 );
   171         SetDialogCaptionL( aParam2 );
   155         break;
   172         break;
   189         iProgressDialog->SetTextL( aText );
   206         iProgressDialog->SetTextL( aText );
   190         iProgressDialog->DrawNow();
   207         iProgressDialog->DrawNow();
   191         }
   208         }
   192     }
   209     }
   193 
   210 
   194 
   211 CMemSpyDwoTracker* CMemSpyDeviceWideOperationDialog::CreateDeviceWideOperation( RMemSpySession& aSession, TDeviceWideOperation aOp )
   195 
   212 {
   196 
   213 	return new CMemSpyDwoTracker( aSession, aOp );
   197 
   214 }
       
   215 
       
   216 
       
   217 
       
   218 
       
   219 
       
   220 
       
   221 
       
   222 
       
   223 
       
   224 
       
   225 
       
   226 
       
   227 
       
   228 CMemSpyDwoProgressTracker::CMemSpyDwoProgressTracker(RMemSpySession &aSession) 
       
   229 	: CActive( EPriorityStandard ), iSession( aSession )
       
   230 	{
       
   231 	CActiveScheduler::Add(this);
       
   232 	}
       
   233 
       
   234 CMemSpyDwoProgressTracker::~CMemSpyDwoProgressTracker()
       
   235 	{
       
   236 	Cancel();	
       
   237 	}
       
   238 
       
   239 void CMemSpyDwoProgressTracker::Start()
       
   240 	{
       
   241 	ASSERT( iProgressDialog == NULL );
       
   242 	iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ), ETrue );
       
   243 	iProgressDialog->PrepareLC( R_MEMSPY_DEVICE_WIDE_OPERATION_PROGRESS_DIALOG );
       
   244 	iProgressDialog->SetCallback( this );
       
   245 	iProgressDialog->SetGloballyCapturing( ETrue );
       
   246 	iProgressInfo = iProgressDialog->GetProgressInfoL();	
       
   247 	
       
   248 	iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );
       
   249 	
       
   250 	UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );
       
   251 	
       
   252 	SetActive();
       
   253 	
       
   254 	iProgressDialog->RunLD();
       
   255 	}
       
   256 
       
   257 void CMemSpyDwoProgressTracker::Cancel()
       
   258 	{	
       
   259 	}
       
   260 
       
   261 void CMemSpyDwoProgressTracker::RunL()
       
   262     { 		
       
   263     // If an error occurred handle it in RunError().
       
   264     User::LeaveIfError(iStatus.Int());
       
   265  
       
   266     // Resubmit the request immediately    
       
   267     iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );     
       
   268     
       
   269     SetActive();            
       
   270     
       
   271     UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );    
       
   272     }
       
   273  
       
   274 void CMemSpyDwoProgressTracker::DoCancel()
       
   275 	{ 	
       
   276 	}
       
   277  
       
   278 TInt CMemSpyDwoProgressTracker::RunError(TInt aError)
       
   279 	{ 
       
   280 	// KErrNotReady and KErrCancel errors are OK, they just notify 
       
   281 	// us about the outstanding notification request that won't be 
       
   282 	// processed.		
       
   283     return KErrNone;
       
   284 	}
       
   285 
       
   286 void CMemSpyDwoProgressTracker::UpdateProcessDialogL( TInt aProgress, const TDesC& aProgressText )
       
   287 	{
       
   288 	if(iProgressDialog)
       
   289 		{
       
   290 		iProgressDialog->SetTextL( aProgressText );
       
   291 	    }
       
   292 	 
       
   293 	if(iProgressInfo)
       
   294 		{
       
   295 	    iProgressInfo->SetAndDraw( aProgress );	
       
   296 		}
       
   297 	}
       
   298 
       
   299 void CMemSpyDwoProgressTracker::DialogDismissedL(TInt aButtonId)
       
   300 	{
       
   301 	iProgressDialog = NULL;
       
   302 	iProgressInfo = NULL;	
       
   303 	 
       
   304 	Cancel();
       
   305 	}
       
   306 
       
   307 
       
   308 
       
   309 
       
   310 
       
   311 
       
   312 
       
   313 
       
   314 
       
   315 
       
   316 
       
   317 
       
   318 
       
   319 
       
   320 CMemSpyDwoTracker::CMemSpyDwoTracker( RMemSpySession &aSession, TDeviceWideOperation aOperation )
       
   321 :	CActive( EPriorityStandard ), 
       
   322 	iSession( aSession ),
       
   323 	iProgressTracker(new CMemSpyDwoProgressTracker( aSession )),
       
   324 	iOperation( aOperation )
       
   325 	{
       
   326 	CActiveScheduler::Add(this);
       
   327 	}
       
   328 
       
   329 CMemSpyDwoTracker::~CMemSpyDwoTracker()
       
   330 	{		
       
   331 	Cancel();
       
   332 	
       
   333 	delete iProgressTracker;
       
   334 	}
       
   335 
       
   336 void CMemSpyDwoTracker::Start()
       
   337 {	
       
   338 	void (RMemSpySession::*functions[])(TRequestStatus&) = { 
       
   339 		&RMemSpySession::OutputPhoneInfo,
       
   340 		&RMemSpySession::OutputDetailedPhoneInfo,
       
   341 		&RMemSpySession::OutputHeapInfo,
       
   342 		&RMemSpySession::OutputCompactHeapInfo,
       
   343 		&RMemSpySession::OutputHeapCellListing,
       
   344 		&RMemSpySession::OutputHeapData,
       
   345 		&RMemSpySession::OutputStackInfo,
       
   346 		&RMemSpySession::OutputCompactStackInfo,
       
   347 		&RMemSpySession::OutputUserStackData,
       
   348 		&RMemSpySession::OutputKernelStackData };
       
   349 		
       
   350 	(iSession.*functions[iOperation])(iStatus);			
       
   351 	
       
   352 	SetActive();
       
   353 	
       
   354 	iProgressTracker->Start();				
       
   355 }
       
   356 
       
   357 void CMemSpyDwoTracker::Cancel()
       
   358 {
       
   359 }
       
   360  
       
   361 void CMemSpyDwoTracker::RunL()
       
   362     { 
       
   363     // If an error occurred handle it in RunError().
       
   364     User::LeaveIfError(iStatus.Int());
       
   365  
       
   366     if( !IsActive() )
       
   367     	{
       
   368 		iProgressTracker->ProgressDialog()->ProcessFinishedL();
       
   369     	}
       
   370     }
       
   371  
       
   372 void CMemSpyDwoTracker::DoCancel()
       
   373 { 
       
   374 	// Cancel progress tracker
       
   375 	iProgressTracker->Cancel();
       
   376 	
       
   377 	iSession.CancelDeviceWideOperationL();	
       
   378 }
       
   379  
       
   380 TInt CMemSpyDwoTracker::RunError(TInt aError)
       
   381 { 
       
   382 	// Emit the finished(false) signal to notify user 
       
   383 	// operation was canceled
       
   384 	//emit finished(false); //TODO:
       
   385 	
       
   386     return KErrNone;
       
   387 }