logsui/logsengine/logssymbianos/src/logsreaderstates.cpp
changeset 14 f27aebe284bb
parent 0 4a5361db8937
child 15 76d2cf7a585e
--- a/logsui/logsengine/logssymbianos/src/logsreaderstates.cpp	Tue Jul 06 14:16:36 2010 +0300
+++ b/logsui/logsengine/logssymbianos/src/logsreaderstates.cpp	Wed Aug 18 09:49:12 2010 +0300
@@ -20,6 +20,7 @@
 #include <logview.h>
 #include <logwraplimits.h>
 #include "logsreaderstates.h"
+#include "logsstatebasecontext.h"
 #include "logsreaderstatecontext.h"
 #include "logsevent.h"
 #include "logseventdata.h"
@@ -35,9 +36,9 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateBase::LogsReaderStateBase(
-    LogsReaderStateContext& context) 
- : mContext(context),
-   mNextState(0)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext) 
+ : LogsStateBase(context),
+   mContext(readerContext)
 {
 }
 
@@ -51,67 +52,6 @@
 }
 
 // ----------------------------------------------------------------------------
-// LogsReaderStateFiltering::setNextState
-// ----------------------------------------------------------------------------
-//
-void LogsReaderStateBase::setNextState(LogsReaderStateBase& nextState)
-{
-    mNextState = &nextState;
-}
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateFiltering::enterNextStateL
-// ----------------------------------------------------------------------------
-//
-bool LogsReaderStateBase::enterNextStateL()
-{
-    if ( mNextState ){
-        mContext.setCurrentState(*mNextState);
-        return mNextState->enterL();
-    }
-    return false;
-}
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateBase::enterL
-// ----------------------------------------------------------------------------
-//
-bool LogsReaderStateBase::enterL()
-{
-    return false;
-}
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateBase::continueL
-// ----------------------------------------------------------------------------
-//
-bool LogsReaderStateBase::continueL()
-{
-    return false;
-}
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateBase::viewCount
-// ----------------------------------------------------------------------------
-//
-int LogsReaderStateBase::viewCountL() const
-    {
-    return mContext.logView().CountL();
-    }
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateBase::event
-// ----------------------------------------------------------------------------
-//
-CLogEvent& LogsReaderStateBase::event() const
-    {
-    //The RVCT compiler provides warnings "type qualifier on return type is meaningless"
-    //for functions that return const values. In order to avoid these numerous warnings and 
-    //const cascading, the CLogEvent is const_casted here.
-    return const_cast<CLogEvent&>( mContext.logView().Event() );
-    }
-
-// ----------------------------------------------------------------------------
 // LogsReaderStateBase::updateAndInsertEventL
 // ----------------------------------------------------------------------------
 //
@@ -191,32 +131,12 @@
 }
 
 // ----------------------------------------------------------------------------
-// LogsReaderStateBase::duplicatesL
-// ----------------------------------------------------------------------------
-//
-bool LogsReaderStateBase::duplicatesL(const CLogFilter* aFilter){
-    bool gettingDuplicates( false );
-    if ( mContext.isRecentView() ){
-        if ( aFilter ){
-            gettingDuplicates = 
-                static_cast<CLogViewRecent&>( mContext.logView() ).DuplicatesL( 
-                        mContext.duplicatesView(), *aFilter, mContext.reqStatus() ); 
-        } else {
-            gettingDuplicates = 
-                static_cast<CLogViewRecent&>( mContext.logView() ).DuplicatesL( 
-                        mContext.duplicatesView(), mContext.reqStatus() ); 
-        }
-    }
-    return gettingDuplicates;
-}
-
-// ----------------------------------------------------------------------------
 // LogsReaderStateInitReading::LogsReaderStateInitReading
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateInitReading::LogsReaderStateInitReading(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateBase(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext)
 {
 }
 
@@ -236,8 +156,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateFiltering::LogsReaderStateFiltering(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateBase(context),
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext),
    mFilterList(0)
 {
 }
@@ -303,9 +223,9 @@
 // ----------------------------------------------------------------------------
 //
 bool LogsReaderStateFiltering::setFilterL(CLogFilterList& filterList){
-    __ASSERT_ALWAYS( mContext.isRecentView(), User::Leave( KErrNotFound ) );
-    return static_cast<CLogViewRecent&>( mContext.logView() ).SetRecentListL( 
-            KLogNullRecentList, filterList, mContext.reqStatus() );
+    __ASSERT_ALWAYS( mBaseContext.isRecentView(), User::Leave( KErrNotFound ) );
+    return static_cast<CLogViewRecent&>( mBaseContext.logView() ).SetRecentListL( 
+            KLogNullRecentList, filterList, mBaseContext.reqStatus() );
 }
     
 // ----------------------------------------------------------------------------
@@ -313,8 +233,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateFilteringAll::LogsReaderStateFilteringAll(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateFiltering(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateFiltering(context, readerContext)
 {
 }
 
@@ -331,9 +251,9 @@
 // ----------------------------------------------------------------------------
 //
 bool LogsReaderStateFilteringAll::setFilterL(CLogFilterList& filterList){
-    __ASSERT_ALWAYS( !mContext.isRecentView(), User::Leave( KErrNotFound ) );
-    return static_cast<CLogViewEvent&>( mContext.logView() ).SetFilterL( 
-            filterList, mContext.reqStatus() );
+    __ASSERT_ALWAYS( !mBaseContext.isRecentView(), User::Leave( KErrNotFound ) );
+    return static_cast<CLogViewEvent&>( mBaseContext.logView() ).SetFilterL( 
+            filterList, mBaseContext.reqStatus() );
 }
 
 // ----------------------------------------------------------------------------
@@ -341,8 +261,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateReading::LogsReaderStateReading(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateBase(context),
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext),
    mDuplicateMissedFilter(0),
    mCheckingMissed(false),
    mEventIndex(0),
@@ -376,7 +296,7 @@
         mDuplicateMissedFilter->SetNullFields(ELogFlagsField);
     }
     
-    if ( viewCountL() > 0 && mContext.logView().FirstL( mContext.reqStatus() ) ){
+    if ( viewCountL() > 0 && mBaseContext.logView().FirstL( mBaseContext.reqStatus() ) ){
         return true;
     }
     
@@ -390,12 +310,12 @@
 //
 bool LogsReaderStateReading::continueL()
 {
-    int& index = mContext.index();  
+    int& index = mBaseContext.index();  
     QList<LogsEvent*> &events = mContext.events();
         
     if ( mCheckingMissed ) {
         events.at(mEventIndex-1)->setDuplicates( 
-                mContext.duplicatesView().CountL() );
+            mBaseContext.duplicatesView().CountL() );
         mCheckingMissed = false;
     } 
     else {
@@ -424,7 +344,7 @@
 
     index++;    
     if ( canContinueReadingL(index) ){
-        return mContext.logView().NextL( mContext.reqStatus() );
+        return mBaseContext.logView().NextL( mBaseContext.reqStatus() );
     }           
     return enterNextStateL();
 }
@@ -476,8 +396,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateFillDetails::LogsReaderStateFillDetails(
-    LogsReaderStateContext& context) 
- : LogsReaderStateBase(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext)
 {
 }
 
@@ -539,8 +459,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateDone::LogsReaderStateDone(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateBase(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext)
 {
 }
 
@@ -560,65 +480,21 @@
 {
     LOGS_QDEBUG( "logs [ENG] -> LogsReaderStateDone::enterL" );
     
-    int numRead = qMin(mContext.index(),viewCountL());
+    int numRead = qMin(mBaseContext.index(),viewCountL());
     mContext.observer().readCompleted(numRead);
 
     LOGS_QDEBUG( "logs [ENG] <- LogsReaderStateDone::enterL" );
     
     return false;
-}
-
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateSearchingEvent::LogsReaderStateSearchingEvent
-// ----------------------------------------------------------------------------
-//
-LogsReaderStateSearchingEvent::LogsReaderStateSearchingEvent(
-    LogsReaderStateContext& context ) 
-  : LogsReaderStateBase(context)
-{
-}
-
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateSearchingEvent::enterL
-// ----------------------------------------------------------------------------
-//
-bool LogsReaderStateSearchingEvent::enterL()
-{
-    LOGS_QDEBUG( "logs [ENG] -> LogsReaderStateSearchingEvent::enterL" );
-    if ( viewCountL() > 0 && mContext.logView().FirstL( mContext.reqStatus() ) ){
-        return true;
-    }    
-    return enterNextStateL();    
-}
-
-
-// ----------------------------------------------------------------------------
-// LogsReaderStateSearchingEvent::continueL
-// ----------------------------------------------------------------------------
-//
-bool LogsReaderStateSearchingEvent::continueL()
-{
-    LOGS_QDEBUG( "logs [ENG] -> LogsReaderStateSearchingEvent::continueL" );
-    int& index = mContext.index();
-    if ( event().Id() != mContext.currentEventId() ) {
-        index++;            
-        if ( index < viewCountL() ){
-            return mContext.logView().NextL( mContext.reqStatus() );
-        }
-    }
-    
-    return enterNextStateL();
-}    
+} 
 
 // ----------------------------------------------------------------------------
 // LogsReaderStateFindingDuplicates::LogsReaderStateFindingDuplicates
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateFindingDuplicates::LogsReaderStateFindingDuplicates(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateBase(context),
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext),
    mDuplicateFilter(0)
 {
 }
@@ -673,8 +549,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateMarkingDuplicates::LogsReaderStateMarkingDuplicates(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateBase(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext)
 {
 }
     
@@ -687,10 +563,10 @@
     LOGS_QDEBUG( "logs [ENG] -> LogsReaderStateMarkingDuplicates::enterL" );
     
     mGettingDuplicates = false;
-    if ( event().Id() == mContext.currentEventId() ) {
+    if ( event().Id() == mBaseContext.currentEventId() ) {
         // Mark event read
         event().SetFlags( event().Flags() | KLogEventRead ); 
-        mContext.logClient().ChangeEvent(event(), mContext.reqStatus());
+        mBaseContext.logClient().ChangeEvent(event(), mBaseContext.reqStatus());
         return true;
     }
     
@@ -714,8 +590,8 @@
         }
     } else {
         // Mark duplicate events read
-        mContext.duplicatesView().SetFlagsL(
-                mContext.duplicatesView().Event().Flags() | KLogEventRead ); 
+        mBaseContext.duplicatesView().SetFlagsL(
+            mBaseContext.duplicatesView().Event().Flags() | KLogEventRead ); 
     }
 
     LOGS_QDEBUG( "logs [ENG] <- LogsReaderStateMarkingDuplicates::continueL" );
@@ -728,8 +604,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateReadingDuplicates::LogsReaderStateReadingDuplicates(
-    LogsReaderStateContext& context ) 
- : LogsReaderStateBase(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext)
 {
 }
 
@@ -740,8 +616,8 @@
 bool LogsReaderStateReadingDuplicates::enterL()
 {
     LOGS_QDEBUG( "logs [ENG] -> LogsReaderStateReadingDuplicates::enterL" );
-    if ( mContext.duplicatesView().CountL() > 0 && 
-         mContext.duplicatesView().FirstL(mContext.reqStatus()) ){
+    if ( mBaseContext.duplicatesView().CountL() > 0 && 
+        mBaseContext.duplicatesView().FirstL(mBaseContext.reqStatus()) ){
          LOGS_QDEBUG( "logs [ENG] duplicates exist!");
          return true;
     }
@@ -759,11 +635,11 @@
     LOGS_QDEBUG( "logs [ENG] -> LogsReaderStateReadingDuplicates::continueL" );
 
     int nextIndex = mContext.duplicatedEvents().count();
-    const CLogEvent& sourceEvent = mContext.duplicatesView().Event();
+    const CLogEvent& sourceEvent = mBaseContext.duplicatesView().Event();
     LogsEvent* event = new LogsEvent;
     constructAndInsertEventL( 
             sourceEvent, event, nextIndex, mContext.duplicatedEvents() );
-    if ( mContext.duplicatesView().NextL(mContext.reqStatus()) ) {
+    if ( mBaseContext.duplicatesView().NextL(mBaseContext.reqStatus()) ) {
         return true;
     } 
 
@@ -777,7 +653,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateModifyingDone::LogsReaderStateModifyingDone(
-    LogsReaderStateContext& context) : LogsReaderStateBase(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext)
 {
 
 }
@@ -790,7 +667,7 @@
 {
     LOGS_QDEBUG( "logs [ENG] -> LogsReaderStateModifyingDone::enterL" );
     
-    LogsEvent* modifiedEvent = eventById(mContext.currentEventId());
+    LogsEvent* modifiedEvent = eventById(mBaseContext.currentEventId());
     if ( modifiedEvent ){
         // Update modified event to know that it has been marked. Real
         // update of the event happens soon when db notifies the change.
@@ -808,7 +685,8 @@
 // ----------------------------------------------------------------------------
 //
 LogsReaderStateReadingDuplicatesDone::LogsReaderStateReadingDuplicatesDone(
-    LogsReaderStateContext& context) : LogsReaderStateBase(context)
+    LogsStateBaseContext& context, LogsReaderStateContext& readerContext ) 
+ : LogsReaderStateBase(context, readerContext)
 {
 
 }