calendarui/controller/src/calenstate.cpp
changeset 18 c198609911f9
parent 0 f979ecb2b13e
child 51 0b38fc5b94c6
equal deleted inserted replaced
0:f979ecb2b13e 18:c198609911f9
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:   Calendar state machine
    14 * Description:  Calendar state machine
    15 *
    15 *
    16 */
    16 */
    17 
       
    18 
    17 
    19 
    18 
    20 // includes
    19 // includes
    21 #include "calendarui_debug.h"           // Debug macros
    20 #include "calendarui_debug.h"           // Debug macros
    22 #include "calenstate.h"                 // Calendar States
    21 #include "calenstate.h"                 // Calendar States
    47     {
    46     {
    48     TRACE_ENTRY_POINT;
    47     TRACE_ENTRY_POINT;
    49     
    48     
    50     TCalenCommand command;
    49     TCalenCommand command;
    51     MCalenCommandHandler* handler( NULL );
    50     MCalenCommandHandler* handler( NULL );
    52     iCallBackPackage = new( ELeave ) CCalenCallbackPackage( this, command, handler );
    51     iCallBackPackage = new( ELeave ) CalenCallbackPackage( this, command, handler );
    53     
    52     
    54     TRACE_EXIT_POINT;
    53     TRACE_EXIT_POINT;
    55     }
    54     }
    56 
    55 
    57 // ----------------------------------------------------------------------------
    56 // ----------------------------------------------------------------------------
    80     iCallBackPackage->SetCommandHandler(this, aCommand, aCommandHandler);
    79     iCallBackPackage->SetCommandHandler(this, aCommand, aCommandHandler);
    81      
    80      
    82     if( !iCmdCallback )
    81     if( !iCmdCallback )
    83         {
    82         {
    84         TCallBack callback( CommandCallback, iCallBackPackage );
    83         TCallBack callback( CommandCallback, iCallBackPackage );
    85         iCmdCallback = CCalenAsyncCallBack::NewL( callback, CActive::EPriorityHigh , iController );
    84         iCmdCallback = CalenAsyncCallBack::NewL( callback, CActive::EPriorityHigh , iController );
    86        }
    85        }
    87 
    86 
    88     TCallBack callback( CommandCallback, iCallBackPackage );
    87     TCallBack callback( CommandCallback, iCallBackPackage );
    89     
    88     
    90     iCmdCallback->Cancel();
    89     iCmdCallback->Cancel();
   103 TInt CCalenState::CommandCallback( TAny* aCommandStruct )
   102 TInt CCalenState::CommandCallback( TAny* aCommandStruct )
   104     {
   103     {
   105     TRACE_ENTRY_POINT;
   104     TRACE_ENTRY_POINT;
   106     TBool continueCommand(EFalse);
   105     TBool continueCommand(EFalse);
   107     
   106     
   108     CCalenCallbackPackage* package = static_cast<CCalenCallbackPackage*>( aCommandStruct );
   107     CalenCallbackPackage* package = static_cast<CalenCallbackPackage*>( aCommandStruct );
   109     continueCommand = package->HandleCallBack();
   108     continueCommand = package->HandleCallBack();
   110     
   109     
   111     TRACE_EXIT_POINT;
   110     TRACE_EXIT_POINT;
   112     return continueCommand;
   111     return continueCommand;
   113     }
   112     }
   126     switch( aNotification )
   125     switch( aNotification )
   127         {
   126         {
   128         case ECalenNotifyAppBackgrounded:
   127         case ECalenNotifyAppBackgrounded:
   129         	{
   128         	{
   130         	CCalenStateMachine::TCalenStateIndex cachedState = aStateMachine.GetCurrentState();
   129         	CCalenStateMachine::TCalenStateIndex cachedState = aStateMachine.GetCurrentState();
   131         	if(cachedState != CCalenStateMachine::ECalenMapState) // Never send calendar to background state in MapState as maps will 
   130 			aStateMachine.SetCurrentState(CCalenStateMachine::ECalenBackgroundState);
   132         	                                                        // launched in cahin mode not in stand alone mode
   131 			aStateMachine.SetCurrentPreviousState(cachedState);
   133         	    {
   132 			iOutstandingNotifications.InsertL(aNotification);
   134                 aStateMachine.SetCurrentState(CCalenStateMachine::ECalenBackgroundState);
   133 			aStateMachine.ActivateCurrentStateL();
   135                 aStateMachine.SetCurrentPreviousState(cachedState);
   134         	    
   136                 iOutstandingNotifications.InsertL(aNotification);
       
   137                 aStateMachine.ActivateCurrentStateL();
       
   138         	    }
       
   139         	}
   135         	}
   140             break;
   136             break;
   141         default:
   137         default:
   142             iController.Notifier().BroadcastApprovedNotification( aNotification );
   138             iController.Notifier().BroadcastApprovedNotification( aNotification );
   143             break;
   139             break;
   183     TRACE_ENTRY_POINT;
   179     TRACE_ENTRY_POINT;
   184     TRACE_EXIT_POINT;
   180     TRACE_EXIT_POINT;
   185     }  
   181     }  
   186 
   182 
   187 // ----------------------------------------------------------------------------
   183 // ----------------------------------------------------------------------------
   188 // CCalenState::CCalenCallbackPackage::CCalenCallbackPackage
   184 // CCalenState::CalenCallbackPackage::CalenCallbackPackage
   189 // C++ constructor
   185 // C++ constructor
   190 // ----------------------------------------------------------------------------
   186 // ----------------------------------------------------------------------------
   191 CCalenState::CCalenCallbackPackage::CCalenCallbackPackage( CCalenState* aSelf,
   187 CCalenState::CalenCallbackPackage::CalenCallbackPackage( CCalenState* aSelf,
   192                         TCalenCommand aCommand,  MCalenCommandHandler* aCommandHandler)
   188                         TCalenCommand aCommand,  MCalenCommandHandler* aCommandHandler)
   193     : iSelf( aSelf ), iCommand( aCommand ), iCommandHandler( aCommandHandler )                   
   189     : iSelf( aSelf ), iCommand( aCommand ), iCommandHandler( aCommandHandler )                   
   194     {
   190     {
   195     TRACE_ENTRY_POINT;
   191     TRACE_ENTRY_POINT;
   196     TRACE_EXIT_POINT;
   192     TRACE_EXIT_POINT;
   197     }
   193     }
   198 
   194 
   199 // ----------------------------------------------------------------------------
   195 // ----------------------------------------------------------------------------
   200 // CCalenState::CCalenCallbackPackage::HandleCallBack
   196 // CCalenState::CalenCallbackPackage::HandleCallBack
   201 // Handles a callback
   197 // Handles a callback
   202 // ----------------------------------------------------------------------------
   198 // ----------------------------------------------------------------------------
   203 TBool CCalenState::CCalenCallbackPackage::HandleCallBack()
   199 TBool CCalenState::CalenCallbackPackage::HandleCallBack()
   204     {
   200     {
   205     TRACE_ENTRY_POINT;
   201     TRACE_ENTRY_POINT;
   206     TBool continueCommand(EFalse);
   202     TBool continueCommand(EFalse);
   207 
   203 
   208     iSelf->CommandExecuting();
   204     iSelf->CommandExecuting();
   211     TRACE_EXIT_POINT;
   207     TRACE_EXIT_POINT;
   212     return continueCommand;
   208     return continueCommand;
   213     }
   209     }
   214 
   210 
   215 // ----------------------------------------------------------------------------
   211 // ----------------------------------------------------------------------------
   216 // CCalenState::CCalenCallbackPackage::SetCommandHandler
   212 // CCalenState::CalenCallbackPackage::SetCommandHandler
   217 // Sets the command handler and command
   213 // Sets the command handler and command
   218 // ----------------------------------------------------------------------------
   214 // ----------------------------------------------------------------------------
   219 void CCalenState::CCalenCallbackPackage::SetCommandHandler(CCalenState* aSelf,
   215 void CCalenState::CalenCallbackPackage::SetCommandHandler(CCalenState* aSelf,
   220                         TCalenCommand aCommand,  MCalenCommandHandler* aCommandHandler)
   216                         TCalenCommand aCommand,  MCalenCommandHandler* aCommandHandler)
   221     {
   217     {
   222     TRACE_ENTRY_POINT;
   218     TRACE_ENTRY_POINT;
   223         
   219         
   224     iSelf = aSelf;
   220     iSelf = aSelf;