--- a/memspyui/ui/avkon/src/MemSpyDeviceWideOperationDialog.cpp Wed Jun 23 18:13:31 2010 +0300
+++ b/memspyui/ui/avkon/src/MemSpyDeviceWideOperationDialog.cpp Tue Jul 06 14:17:03 2010 +0300
@@ -26,12 +26,25 @@
#include <avkon.hrh>
#include <memspyui.rsg>
+#include <memspysession.h>
+/*
CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver )
: iEngine( aEngine ), iObserver( aObserver )
{
}
+CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession, MMemSpyDeviceWideOperationDialogObserver& aObserver )
+: iSession( aSession ), iObserver( aObserver )
+ {
+ }
+*/
+
+CMemSpyDeviceWideOperationDialog::CMemSpyDeviceWideOperationDialog( RMemSpySession& aSession )
+: iSession( aSession )
+ {
+ }
+
CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog()
{
@@ -54,7 +67,7 @@
RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - sending EDialogDismissed to observer..." );
#endif
- iObserver.DWOperationCompleted();
+ //iObserver.DWOperationCompleted(); //TODO
#ifdef _DEBUG
RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::~CMemSpyDeviceWideOperationDialog() - END" );
@@ -62,8 +75,10 @@
}
-void CMemSpyDeviceWideOperationDialog::ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation )
+//void CMemSpyDeviceWideOperationDialog::ExecuteL( CMemSpyDeviceWideOperations::TOperation aOperation )
+void CMemSpyDeviceWideOperationDialog::ExecuteL( TDeviceWideOperation aOp )
{
+ /*
#ifdef _DEBUG
RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - START" );
#endif
@@ -88,13 +103,15 @@
#ifdef _DEBUG
RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::ExecuteL() - END" );
#endif
+ */
}
-void CMemSpyDeviceWideOperationDialog::ExecuteLD( CMemSpyEngine& aEngine, MMemSpyDeviceWideOperationDialogObserver& aObserver, CMemSpyDeviceWideOperations::TOperation aOperation )
+void CMemSpyDeviceWideOperationDialog::ExecuteLD( RMemSpySession& aSession, TDeviceWideOperation aOp )
{
- CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aEngine, aObserver );
+ //CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession, aObserver );
+ CMemSpyDeviceWideOperationDialog* self = new(ELeave) CMemSpyDeviceWideOperationDialog( aSession );
CleanupStack::PushL( self );
- self->ExecuteL( aOperation );
+ self->ExecuteL( aOp );
CleanupStack::PopAndDestroy( self );
}
@@ -112,7 +129,7 @@
iOperation->Cancel();
}
//
- iObserver.DWOperationCancelled();
+ //iObserver.DWOperationCancelled();
#ifdef _DEBUG
RDebug::Printf("[MemSpy] CMemSpyDeviceWideOperationDialog::Cancel() - END" );
@@ -147,7 +164,7 @@
case MMemSpyDeviceWideOperationsObserver::EOperationSized:
break;
case MMemSpyDeviceWideOperationsObserver::EOperationStarting:
- iObserver.DWOperationStarted();
+ //iObserver.DWOperationStarted();
break;
case MMemSpyDeviceWideOperationsObserver::EOperationProgressStart:
ASSERT( iProgressDialog != NULL );
@@ -191,7 +208,180 @@
}
}
+CMemSpyDwoTracker* CMemSpyDeviceWideOperationDialog::CreateDeviceWideOperation( RMemSpySession& aSession, TDeviceWideOperation aOp )
+{
+ return new CMemSpyDwoTracker( aSession, aOp );
+}
+
+
+
+
+
+
+
+
+
+CMemSpyDwoProgressTracker::CMemSpyDwoProgressTracker(RMemSpySession &aSession)
+ : CActive( EPriorityStandard ), iSession( aSession )
+ {
+ CActiveScheduler::Add(this);
+ }
+
+CMemSpyDwoProgressTracker::~CMemSpyDwoProgressTracker()
+ {
+ Cancel();
+ }
+
+void CMemSpyDwoProgressTracker::Start()
+ {
+ ASSERT( iProgressDialog == NULL );
+ iProgressDialog = new( ELeave ) CAknProgressDialog( reinterpret_cast< CEikDialog** >( &iProgressDialog ), ETrue );
+ iProgressDialog->PrepareLC( R_MEMSPY_DEVICE_WIDE_OPERATION_PROGRESS_DIALOG );
+ iProgressDialog->SetCallback( this );
+ iProgressDialog->SetGloballyCapturing( ETrue );
+ iProgressInfo = iProgressDialog->GetProgressInfoL();
+
+ iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );
+
+ UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );
+
+ SetActive();
+
+ iProgressDialog->RunLD();
+ }
+
+void CMemSpyDwoProgressTracker::Cancel()
+ {
+ }
+
+void CMemSpyDwoProgressTracker::RunL()
+ {
+ // If an error occurred handle it in RunError().
+ User::LeaveIfError(iStatus.Int());
+
+ // Resubmit the request immediately
+ iSession.NotifyDeviceWideOperationProgress( iProgress, iStatus );
+
+ SetActive();
+
+ UpdateProcessDialogL( iProgress.Progress(), iProgress.Description() );
+ }
+
+void CMemSpyDwoProgressTracker::DoCancel()
+ {
+ }
+
+TInt CMemSpyDwoProgressTracker::RunError(TInt aError)
+ {
+ // KErrNotReady and KErrCancel errors are OK, they just notify
+ // us about the outstanding notification request that won't be
+ // processed.
+ return KErrNone;
+ }
+
+void CMemSpyDwoProgressTracker::UpdateProcessDialogL( TInt aProgress, const TDesC& aProgressText )
+ {
+ if(iProgressDialog)
+ {
+ iProgressDialog->SetTextL( aProgressText );
+ }
+
+ if(iProgressInfo)
+ {
+ iProgressInfo->SetAndDraw( aProgress );
+ }
+ }
+
+void CMemSpyDwoProgressTracker::DialogDismissedL(TInt aButtonId)
+ {
+ iProgressDialog = NULL;
+ iProgressInfo = NULL;
+
+ Cancel();
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CMemSpyDwoTracker::CMemSpyDwoTracker( RMemSpySession &aSession, TDeviceWideOperation aOperation )
+: CActive( EPriorityStandard ),
+ iSession( aSession ),
+ iProgressTracker(new CMemSpyDwoProgressTracker( aSession )),
+ iOperation( aOperation )
+ {
+ CActiveScheduler::Add(this);
+ }
+
+CMemSpyDwoTracker::~CMemSpyDwoTracker()
+ {
+ Cancel();
+
+ delete iProgressTracker;
+ }
+
+void CMemSpyDwoTracker::Start()
+{
+ void (RMemSpySession::*functions[])(TRequestStatus&) = {
+ &RMemSpySession::OutputPhoneInfo,
+ &RMemSpySession::OutputDetailedPhoneInfo,
+ &RMemSpySession::OutputHeapInfo,
+ &RMemSpySession::OutputCompactHeapInfo,
+ &RMemSpySession::OutputHeapCellListing,
+ &RMemSpySession::OutputHeapData,
+ &RMemSpySession::OutputStackInfo,
+ &RMemSpySession::OutputCompactStackInfo,
+ &RMemSpySession::OutputUserStackData,
+ &RMemSpySession::OutputKernelStackData };
+
+ (iSession.*functions[iOperation])(iStatus);
+
+ SetActive();
+
+ iProgressTracker->Start();
+}
+
+void CMemSpyDwoTracker::Cancel()
+{
+}
+
+void CMemSpyDwoTracker::RunL()
+ {
+ // If an error occurred handle it in RunError().
+ User::LeaveIfError(iStatus.Int());
+
+ if( !IsActive() )
+ {
+ iProgressTracker->ProgressDialog()->ProcessFinishedL();
+ }
+ }
+
+void CMemSpyDwoTracker::DoCancel()
+{
+ // Cancel progress tracker
+ iProgressTracker->Cancel();
+
+ iSession.CancelDeviceWideOperationL();
+}
+
+TInt CMemSpyDwoTracker::RunError(TInt aError)
+{
+ // Emit the finished(false) signal to notify user
+ // operation was canceled
+ //emit finished(false); //TODO:
+
+ return KErrNone;
+}