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() |
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 } |