35 CLogClient& logClient, |
35 CLogClient& logClient, |
36 LogsEventStrings& strings, |
36 LogsEventStrings& strings, |
37 QList<LogsEvent*>& events, |
37 QList<LogsEvent*>& events, |
38 LogsReaderObserver& observer, |
38 LogsReaderObserver& observer, |
39 bool readAllEvents) |
39 bool readAllEvents) |
40 : CActive( EPriorityStandard ), |
40 : LogsWorker(readAllEvents), |
41 mLogViewRecent(0), |
|
42 mLogViewEvent(0), |
|
43 mDuplicatesView(0), |
|
44 mFsSession(fsSession), |
41 mFsSession(fsSession), |
45 mLogClient(logClient), |
|
46 mStrings(strings), |
42 mStrings(strings), |
47 mEvents(events), |
43 mEvents(events), |
48 mObserver(observer), |
44 mObserver(observer), |
49 mReadAllEvents(readAllEvents), |
|
50 mIndex(0), |
|
51 mCurrentStateIndex(0), |
|
52 mCurrentStateMachine(0), |
|
53 mCurrentEventId(-1), |
|
54 mGlobalObserverSet(false) |
45 mGlobalObserverSet(false) |
55 { |
46 { |
56 LOGS_QDEBUG( "logs [ENG] -> LogsReader::LogsReader()" ) |
47 LOGS_QDEBUG( "logs [ENG] -> LogsReader::LogsReader()" ) |
57 |
48 |
58 CActiveScheduler::Add( this ); |
49 mLogClient = &logClient; |
59 |
50 initializeReadStates(); |
60 initializeReadStates(); |
|
61 |
|
62 setGlobalObserver(); |
51 setGlobalObserver(); |
63 |
52 |
64 LOGS_QDEBUG( "logs [ENG] <- LogsReader::LogsReader()" ) |
53 LOGS_QDEBUG( "logs [ENG] <- LogsReader::LogsReader()" ) |
65 } |
54 } |
66 |
55 |
75 Cancel(); |
64 Cancel(); |
76 qDeleteAll( mReadStates ); |
65 qDeleteAll( mReadStates ); |
77 qDeleteAll( mModifyingStates ); |
66 qDeleteAll( mModifyingStates ); |
78 qDeleteAll( mDuplicateReadingStates ); |
67 qDeleteAll( mDuplicateReadingStates ); |
79 delete mLogViewRecent; |
68 delete mLogViewRecent; |
|
69 mLogViewRecent = 0; |
80 delete mLogViewEvent; |
70 delete mLogViewEvent; |
|
71 mLogViewEvent = 0; |
81 delete mDuplicatesView; |
72 delete mDuplicatesView; |
|
73 mDuplicatesView = 0; |
82 qDeleteAll( mDuplicatedEvents ); |
74 qDeleteAll( mDuplicatedEvents ); |
83 |
75 |
84 LOGS_QDEBUG( "logs [ENG] <- LogsReader::~LogsReader()" ) |
76 LOGS_QDEBUG( "logs [ENG] <- LogsReader::~LogsReader()" ) |
85 } |
77 } |
86 |
78 |
156 LOGS_QDEBUG_2( "logs [ENG] <- LogsReader::readDuplicates(), err:", err ) |
148 LOGS_QDEBUG_2( "logs [ENG] <- LogsReader::readDuplicates(), err:", err ) |
157 return err; |
149 return err; |
158 } |
150 } |
159 |
151 |
160 // ---------------------------------------------------------------------------- |
152 // ---------------------------------------------------------------------------- |
161 // LogsReader::RunL |
|
162 // ---------------------------------------------------------------------------- |
|
163 // |
|
164 void LogsReader::RunL() |
|
165 { |
|
166 LOGS_QDEBUG_3( "logs [ENG] -> LogsReader::RunL(), (state, status):", |
|
167 mCurrentStateIndex, iStatus.Int() ) |
|
168 |
|
169 // Error handling in RunError |
|
170 __ASSERT_ALWAYS( iStatus.Int() == KErrNone, User::Leave( iStatus.Int() ) ); |
|
171 |
|
172 if ( currentState().continueL() ){ |
|
173 SetActive(); |
|
174 } |
|
175 |
|
176 LOGS_QDEBUG( "logs [ENG] <- LogsReader::RunL()" ) |
|
177 } |
|
178 |
|
179 // ---------------------------------------------------------------------------- |
|
180 // LogsReader::RunError |
153 // LogsReader::RunError |
181 // ---------------------------------------------------------------------------- |
154 // ---------------------------------------------------------------------------- |
182 // |
155 // |
183 TInt LogsReader::RunError(TInt error) |
156 TInt LogsReader::RunError(TInt error) |
184 { |
157 { |
186 |
159 |
187 handleError(error); |
160 handleError(error); |
188 |
161 |
189 LOGS_QDEBUG( "logs [ENG] <- LogsReader::RunError()" ) |
162 LOGS_QDEBUG( "logs [ENG] <- LogsReader::RunError()" ) |
190 return KErrNone; |
163 return KErrNone; |
191 } |
|
192 |
|
193 // ---------------------------------------------------------------------------- |
|
194 // LogsReader::DoCancel |
|
195 // ---------------------------------------------------------------------------- |
|
196 // |
|
197 void LogsReader::DoCancel() |
|
198 { |
|
199 logView().Cancel(); |
|
200 mDuplicatesView->Cancel(); |
|
201 mLogClient.Cancel(); |
|
202 } |
164 } |
203 |
165 |
204 // ---------------------------------------------------------------------------- |
166 // ---------------------------------------------------------------------------- |
205 // LogsReader::startL |
167 // LogsReader::startL |
206 // ---------------------------------------------------------------------------- |
168 // ---------------------------------------------------------------------------- |
373 |
335 |
374 LOGS_QDEBUG( "logs [ENG] <- LogsReader::HandleLogViewChangeEventDeletedL()" ) |
336 LOGS_QDEBUG( "logs [ENG] <- LogsReader::HandleLogViewChangeEventDeletedL()" ) |
375 } |
337 } |
376 |
338 |
377 // ---------------------------------------------------------------------------- |
339 // ---------------------------------------------------------------------------- |
378 // LogsReader::setCurrentState |
|
379 // ---------------------------------------------------------------------------- |
|
380 // |
|
381 void LogsReader::setCurrentState(const LogsReaderStateBase& state) |
|
382 { |
|
383 bool found(false); |
|
384 for( int i = 0; i < mCurrentStateMachine->count() && !found; i++ ){ |
|
385 if ( mCurrentStateMachine->at(i) == &state ){ |
|
386 mCurrentStateIndex = i; |
|
387 found = true; |
|
388 LOGS_QDEBUG_2( "logs [ENG] <-> LogsReader::setCurrentState, index:", |
|
389 mCurrentStateIndex ) |
|
390 } |
|
391 } |
|
392 } |
|
393 |
|
394 // ---------------------------------------------------------------------------- |
|
395 // LogsReader::logView |
|
396 // ---------------------------------------------------------------------------- |
|
397 // |
|
398 CLogView& LogsReader::logView() |
|
399 { |
|
400 if ( mLogViewRecent ){ |
|
401 return *mLogViewRecent; |
|
402 } |
|
403 return *mLogViewEvent; |
|
404 } |
|
405 |
|
406 // ---------------------------------------------------------------------------- |
|
407 // LogsReader::duplicatesView |
|
408 // ---------------------------------------------------------------------------- |
|
409 // |
|
410 CLogViewDuplicate& LogsReader::duplicatesView() |
|
411 { |
|
412 return *mDuplicatesView; |
|
413 } |
|
414 |
|
415 // ---------------------------------------------------------------------------- |
|
416 // LogsReader::events |
340 // LogsReader::events |
417 // ---------------------------------------------------------------------------- |
341 // ---------------------------------------------------------------------------- |
418 // |
342 // |
419 QList<LogsEvent*>& LogsReader::events() |
343 QList<LogsEvent*>& LogsReader::events() |
420 { |
344 { |
421 return mEvents; |
345 return mEvents; |
422 } |
346 } |
423 |
347 |
424 // ---------------------------------------------------------------------------- |
348 // ---------------------------------------------------------------------------- |
425 // LogsReader::index |
|
426 // ---------------------------------------------------------------------------- |
|
427 // |
|
428 int& LogsReader::index() |
|
429 { |
|
430 return mIndex; |
|
431 } |
|
432 |
|
433 // ---------------------------------------------------------------------------- |
|
434 // LogsReader::strings |
349 // LogsReader::strings |
435 // ---------------------------------------------------------------------------- |
350 // ---------------------------------------------------------------------------- |
436 // |
351 // |
437 LogsEventStrings& LogsReader::strings() |
352 LogsEventStrings& LogsReader::strings() |
438 { |
353 { |
439 return mStrings; |
354 return mStrings; |
440 } |
355 } |
441 |
356 |
442 // ---------------------------------------------------------------------------- |
357 // ---------------------------------------------------------------------------- |
443 // LogsReader::reqStatus |
|
444 // ---------------------------------------------------------------------------- |
|
445 // |
|
446 TRequestStatus& LogsReader::reqStatus() |
|
447 { |
|
448 return iStatus; |
|
449 } |
|
450 |
|
451 // ---------------------------------------------------------------------------- |
|
452 // LogsReader::observer |
358 // LogsReader::observer |
453 // ---------------------------------------------------------------------------- |
359 // ---------------------------------------------------------------------------- |
454 // |
360 // |
455 LogsReaderObserver& LogsReader::observer() |
361 LogsReaderObserver& LogsReader::observer() |
456 { |
362 { |
465 { |
371 { |
466 return mContactCache; |
372 return mContactCache; |
467 } |
373 } |
468 |
374 |
469 // ---------------------------------------------------------------------------- |
375 // ---------------------------------------------------------------------------- |
470 // LogsReader::currentEventId |
|
471 // ---------------------------------------------------------------------------- |
|
472 // |
|
473 int LogsReader::currentEventId() |
|
474 { |
|
475 return mCurrentEventId; |
|
476 } |
|
477 |
|
478 // ---------------------------------------------------------------------------- |
|
479 // LogsReader::logClient |
|
480 // ---------------------------------------------------------------------------- |
|
481 // |
|
482 CLogClient& LogsReader::logClient() |
|
483 { |
|
484 return mLogClient; |
|
485 } |
|
486 |
|
487 // ---------------------------------------------------------------------------- |
|
488 // LogsReader::isRecentView |
|
489 // ---------------------------------------------------------------------------- |
|
490 // |
|
491 bool LogsReader::isRecentView() |
|
492 { |
|
493 return ( mLogViewRecent != 0 ); |
|
494 } |
|
495 |
|
496 // ---------------------------------------------------------------------------- |
|
497 // LogsReader::duplicatedEvents |
376 // LogsReader::duplicatedEvents |
498 // ---------------------------------------------------------------------------- |
377 // ---------------------------------------------------------------------------- |
499 // |
378 // |
500 QList<LogsEvent*>& LogsReader::duplicatedEvents() |
379 QList<LogsEvent*>& LogsReader::duplicatedEvents() |
501 { |
380 { |
502 return mDuplicatedEvents; |
381 return mDuplicatedEvents; |
503 } |
|
504 |
|
505 // ---------------------------------------------------------------------------- |
|
506 // LogsReader::currentState |
|
507 // ---------------------------------------------------------------------------- |
|
508 // |
|
509 LogsReaderStateBase& LogsReader::currentState() |
|
510 { |
|
511 return *(mCurrentStateMachine->at(mCurrentStateIndex)); |
|
512 } |
382 } |
513 |
383 |
514 // ---------------------------------------------------------------------------- |
384 // ---------------------------------------------------------------------------- |
515 // LogsReader::initializeReadStates |
385 // LogsReader::initializeReadStates |
516 // ---------------------------------------------------------------------------- |
386 // ---------------------------------------------------------------------------- |
517 // |
387 // |
518 void LogsReader::initializeReadStates() |
388 void LogsReader::initializeReadStates() |
519 { |
389 { |
520 if ( mReadStates.count() == 0 ){ |
390 if ( mReadStates.count() == 0 ){ |
521 |
391 |
522 LogsReaderStateInitReading* init = new LogsReaderStateInitReading(*this); |
392 LogsReaderStateInitReading* init = new LogsReaderStateInitReading(*this, *this); |
523 LogsReaderStateFiltering* filtering = createFilteringState(); |
393 LogsReaderStateFiltering* filtering = createFilteringState(); |
524 LogsReaderStateReading* reading = new LogsReaderStateReading(*this); |
394 LogsReaderStateReading* reading = new LogsReaderStateReading(*this, *this); |
525 LogsReaderStateFillDetails* fillDetails = new LogsReaderStateFillDetails(*this); |
395 LogsReaderStateFillDetails* fillDetails = new LogsReaderStateFillDetails(*this, *this); |
526 LogsReaderStateDone* done = new LogsReaderStateDone(*this); |
396 LogsReaderStateDone* done = new LogsReaderStateDone(*this, *this); |
527 init->setNextState(*filtering); |
397 init->setNextState(*filtering); |
528 filtering->setNextState(*reading); |
398 filtering->setNextState(*reading); |
529 reading->setNextState(*fillDetails); |
399 reading->setNextState(*fillDetails); |
530 fillDetails->setNextState(*done); |
400 fillDetails->setNextState(*done); |
531 mReadStates.append(init); |
401 mReadStates.append(init); |
544 // |
414 // |
545 void LogsReader::initializeDuplicateReadingStates() |
415 void LogsReader::initializeDuplicateReadingStates() |
546 { |
416 { |
547 if ( mDuplicateReadingStates.count() == 0 ){ |
417 if ( mDuplicateReadingStates.count() == 0 ){ |
548 LogsReaderStateFiltering* filtering = createFilteringState(); |
418 LogsReaderStateFiltering* filtering = createFilteringState(); |
549 LogsReaderStateSearchingEvent* searching = |
419 LogsStateSearchingEvent* searching = |
550 new LogsReaderStateSearchingEvent(*this); |
420 new LogsStateSearchingEvent(*this); |
551 LogsReaderStateFindingDuplicates* findingDuplicates = |
421 LogsReaderStateFindingDuplicates* findingDuplicates = |
552 new LogsReaderStateFindingDuplicates(*this); |
422 new LogsReaderStateFindingDuplicates(*this, *this); |
553 LogsReaderStateReadingDuplicates* readingDuplicates = |
423 LogsReaderStateReadingDuplicates* readingDuplicates = |
554 new LogsReaderStateReadingDuplicates(*this); |
424 new LogsReaderStateReadingDuplicates(*this, *this); |
555 LogsReaderStateReadingDuplicatesDone* done = |
425 LogsReaderStateReadingDuplicatesDone* done = |
556 new LogsReaderStateReadingDuplicatesDone(*this); |
426 new LogsReaderStateReadingDuplicatesDone(*this, *this); |
557 filtering->setNextState(*searching); |
427 filtering->setNextState(*searching); |
558 searching->setNextState(*findingDuplicates); |
428 searching->setNextState(*findingDuplicates); |
559 findingDuplicates->setNextState(*readingDuplicates); |
429 findingDuplicates->setNextState(*readingDuplicates); |
560 readingDuplicates->setNextState(*done); |
430 readingDuplicates->setNextState(*done); |
561 mDuplicateReadingStates.append(filtering); |
431 mDuplicateReadingStates.append(filtering); |
574 // |
444 // |
575 void LogsReader::initializeModifyingStates() |
445 void LogsReader::initializeModifyingStates() |
576 { |
446 { |
577 if ( mModifyingStates.count() == 0 ){ |
447 if ( mModifyingStates.count() == 0 ){ |
578 LogsReaderStateFiltering* filtering = createFilteringState(); |
448 LogsReaderStateFiltering* filtering = createFilteringState(); |
579 LogsReaderStateSearchingEvent* searching = |
449 LogsStateSearchingEvent* searching = |
580 new LogsReaderStateSearchingEvent(*this); |
450 new LogsStateSearchingEvent(*this); |
581 LogsReaderStateMarkingDuplicates* duplicates = |
451 LogsReaderStateMarkingDuplicates* duplicates = |
582 new LogsReaderStateMarkingDuplicates(*this); |
452 new LogsReaderStateMarkingDuplicates(*this, *this); |
583 LogsReaderStateModifyingDone* done = new LogsReaderStateModifyingDone(*this); |
453 LogsReaderStateModifyingDone* done = new LogsReaderStateModifyingDone(*this, *this); |
584 filtering->setNextState(*searching); |
454 filtering->setNextState(*searching); |
585 searching->setNextState(*duplicates); |
455 searching->setNextState(*duplicates); |
586 duplicates->setNextState(*done); |
456 duplicates->setNextState(*done); |
587 mModifyingStates.append(filtering); |
457 mModifyingStates.append(filtering); |
588 mModifyingStates.append(searching); |
458 mModifyingStates.append(searching); |
627 // |
497 // |
628 void LogsReader::createLogViewsL() |
498 void LogsReader::createLogViewsL() |
629 { |
499 { |
630 if ( mReadAllEvents ){ |
500 if ( mReadAllEvents ){ |
631 if ( !mLogViewEvent ){ |
501 if ( !mLogViewEvent ){ |
632 mLogViewEvent = CLogViewEvent::NewL( mLogClient, *this ); |
502 mLogViewEvent = CLogViewEvent::NewL( *mLogClient, *this ); |
633 } |
503 } |
634 } |
504 } |
635 else if ( !mLogViewRecent ) { |
505 else if ( !mLogViewRecent ) { |
636 mLogViewRecent = CLogViewRecent::NewL( mLogClient, *this ); |
506 mLogViewRecent = CLogViewRecent::NewL( *mLogClient, *this ); |
637 } |
507 } |
638 |
508 |
639 if ( !mDuplicatesView ){ |
509 if ( !mDuplicatesView ){ |
640 mDuplicatesView = CLogViewDuplicate::NewL( mLogClient, *this ); |
510 mDuplicatesView = CLogViewDuplicate::NewL( *mLogClient, *this ); |
641 } |
511 } |
642 } |
512 } |
643 |
513 |
644 // ---------------------------------------------------------------------------- |
514 // ---------------------------------------------------------------------------- |
645 // LogsReader::deleteLogViews |
515 // LogsReader::deleteLogViews |
693 void LogsReader::setGlobalObserver() |
563 void LogsReader::setGlobalObserver() |
694 { |
564 { |
695 // Have to ensure that same observer is not set twice, otherwise |
565 // Have to ensure that same observer is not set twice, otherwise |
696 // causes crash at later point inside eventlogger |
566 // causes crash at later point inside eventlogger |
697 if ( !mGlobalObserverSet ){ |
567 if ( !mGlobalObserverSet ){ |
698 TRAP_IGNORE( mLogClient.SetGlobalChangeObserverL( this ) ) |
568 TRAP_IGNORE( mLogClient->SetGlobalChangeObserverL( this ) ) |
699 mGlobalObserverSet = true; |
569 mGlobalObserverSet = true; |
700 } |
570 } |
701 } |
571 } |
702 |
572 |
703 // ---------------------------------------------------------------------------- |
573 // ---------------------------------------------------------------------------- |