logsui/logsengine/logssymbianos/src/logsreader.cpp
changeset 14 f27aebe284bb
parent 2 7119b73b84d6
child 15 76d2cf7a585e
equal deleted inserted replaced
11:64a47b97e1e1 14:f27aebe284bb
    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 
   125     }
   117     }
   126     if ( clearCached ) {
   118     if ( clearCached ) {
   127         mContactCache.clear();
   119         mContactCache.clear();
   128     }
   120     }
   129     LogsReaderStateFillDetails* fillDetailsState = 
   121     LogsReaderStateFillDetails* fillDetailsState = 
   130                 new LogsReaderStateFillDetails(*this);
   122                 new LogsReaderStateFillDetails(*this, *this);
   131     fillDetailsState->fillDetails();
   123     fillDetailsState->fillDetails();
   132     delete fillDetailsState;
   124     delete fillDetailsState;
   133     LOGS_QDEBUG( "logs [ENG] <- LogsReader::updateDetails()" )
   125     LOGS_QDEBUG( "logs [ENG] <- LogsReader::updateDetails()" )
   134 }
   126 }
   135 
   127 
   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
   661 //
   531 //
   662 LogsReaderStateFiltering* LogsReader::createFilteringState()
   532 LogsReaderStateFiltering* LogsReader::createFilteringState()
   663 {
   533 {
   664     LogsReaderStateFiltering* filtering = 0;
   534     LogsReaderStateFiltering* filtering = 0;
   665     if ( mReadAllEvents ) {
   535     if ( mReadAllEvents ) {
   666         filtering = new LogsReaderStateFilteringAll(*this);
   536         filtering = new LogsReaderStateFilteringAll(*this, *this);
   667     } 
   537     } 
   668     else {
   538     else {
   669         filtering = new LogsReaderStateFiltering(*this);
   539         filtering = new LogsReaderStateFiltering(*this, *this);
   670     }
   540     }
   671     return filtering;
   541     return filtering;
   672 }
   542 }
   673 
   543 
   674 // ----------------------------------------------------------------------------
   544 // ----------------------------------------------------------------------------
   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 // ----------------------------------------------------------------------------
   705 // ----------------------------------------------------------------------------
   575 // ----------------------------------------------------------------------------
   706 //
   576 //
   707 void LogsReader::clearGlobalObserver()
   577 void LogsReader::clearGlobalObserver()
   708 {
   578 {
   709     if ( mGlobalObserverSet ){
   579     if ( mGlobalObserverSet ){
   710         TRAP_IGNORE( mLogClient.SetGlobalChangeObserverL( 0 ) )
   580         TRAP_IGNORE( mLogClient->SetGlobalChangeObserverL( 0 ) )
   711         mGlobalObserverSet = false;
   581         mGlobalObserverSet = false;
   712     }
   582     }
   713 }
   583 }