diff -r 000000000000 -r ff3b6d0fd310 satengine/SatServer/EventMonitors/src/CSatUserActivityMonitor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/satengine/SatServer/EventMonitors/src/CSatUserActivityMonitor.cpp Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,249 @@ +/* +* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Monitor for user activity +* +*/ + + +// INCLUDE FILES +#include "CSatUserActivityMonitor.h" +#include "SatLog.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::CSatUserActivityMonitor +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CSatUserActivityMonitor::CSatUserActivityMonitor( + MSatEventMonitorUtils& aUtils ) : + CSatEventMonitorHandler( aUtils ) + { + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::\ + CSatUserActivityMonitor calling" ) + + iActivityManager = NULL; + + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::\ + CSatUserActivityMonitor exiting" ) + } + +// Destructor +CSatUserActivityMonitor::~CSatUserActivityMonitor() + { + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::\ + ~CSatUserActivityMonitor calling" ) + + Cancel(); + + if ( iActivityManager ) + { + delete iActivityManager; + iActivityManager = NULL; + } + + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::\ + ~CSatUserActivityMonitor exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CSatUserActivityMonitor* CSatUserActivityMonitor::NewL( + MSatEventMonitorUtils& aUtils ) + { + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::NewL calling" ) + + CSatUserActivityMonitor* self = + new( ELeave ) CSatUserActivityMonitor( aUtils ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::NewL exiting" ) + return self; + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CSatUserActivityMonitor::ConstructL() + { + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::\ + ConstructL calling" ) + + // Create base class and give this monitors event as a parameter + BaseConstructL( MSatEventMonitor::EUserActivity ); + iMonitoring = EFalse; + + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::\ + ConstructL exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::StartActivityManagerL +// Called when user has been inactive for a pre-defined time period +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CSatUserActivityMonitor::StartActivityManagerL() + { + LOG( SIMPLE,"SATEVENTMONITORS: \ + CSatUserActivityMonitor::StartActivityManag calling" ) + + // Delete activity manager if it exists + if ( iActivityManager ) + { + LOG( SIMPLE,"SATEVENTMONITORS: \ + CSatUserActivityMonitor::StartActivityManag iActivityManager true" ) + iActivityManager->Cancel(); + delete iActivityManager; + iActivityManager = NULL; + } + + iMonitoring = ETrue; + + iActivityManager = CUserActivityManager::NewL( EPriorityNormal ); + iActivityManager->Start( + TTimeIntervalSeconds( 1 ), + TCallBack( DispatchUserInactive, this ), + TCallBack( DispatchUserActive, this ) ); + + // Changes checking immediatelly activity, + // activity before exceeding one second. + iActivityManager->SetInactivityTimeout( TTimeIntervalSeconds( 0 ) ); + + LOG( SIMPLE, "SATEVENTMONITORS: \ + CSatUserActivityMonitor::StartActivityManagerL exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::DispatchUserInactive +// Called when user has been inactive for a pre-defined time period +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CSatUserActivityMonitor::DispatchUserInactive( TAny* /* aPtr */ ) + { + LOG( SIMPLE, "SATEVENTMONITORS: \ + CSatUserActivityMonitor::DispatchUserInactive calling/exiting" ) + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::DispatchUserActive +// Called when user does something +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CSatUserActivityMonitor::DispatchUserActive( TAny* aPtr ) + { + LOG( SIMPLE, "SATEVENTMONITORS: \ + CSatUserActivityMonitor::DispatchUserActive calling" ) + + TInt retVal( KErrNone ); + + if ( aPtr ) + { + LOG( SIMPLE, "SATEVENTMONITORS: \ + CSatUserActivityMonitor::DispatchUserActive aPtr true" ) + CSatUserActivityMonitor* ptrThis = + static_cast( aPtr ); + if ( ptrThis->iMonitoring ) + { + LOG( SIMPLE, "SATEVENTMONITORS: \ + CSatUserActivityMonitor::DispatchUserActive ptrThis->iMonitoring" ) + // Notify observer and set flag off, no more monitoring. + ptrThis->EventOccured(); + ptrThis->iMonitoring = EFalse; + } + else + { + retVal = KErrCancel; + } + } + LOG2( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::\ + DispatchUserActive exiting, retVal: %d", retVal ) + return retVal; + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::DoCancelMonitor +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CSatUserActivityMonitor::DoCancelMonitor() + { + LOG( SIMPLE, + "SATEVENTMONITORS: CSatUserActivityMonitor::DoCancelMonitor calling" ) + + Cancel(); + + LOG( SIMPLE, + "SATEVENTMONITORS: CSatUserActivityMonitor::DoCancelMonitor exiting" ) + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::StartMonitor +// Starts monitoring the user activity. The real start of user actitivity +// monitoring starts in RunL, after call of Inactivity( 0 ), which causes run of +// RunL immediatly. The inacativity call is needed to reset the user activity +// timers in User class. +// ----------------------------------------------------------------------------- +// +TInt CSatUserActivityMonitor::StartMonitor() + { + LOG( SIMPLE, + "SATEVENTMONITORS: CSatUserActivityMonitor::StartMonitor calling" ) + + // Starts activity manager. + TRAPD( err, StartActivityManagerL() ); + + LOG2( SIMPLE, + "SATEVENTMONITORS: CSatUserActivityMonitor::StartMonitor exiting,\ + err: %d", err ) + return err; + } + +// ----------------------------------------------------------------------------- +// CSatUserActivityMonitor::Cancel +// Cancels user activity monitor. +// If activity manager is active, cancels request +// and deletes activity manager. +// ----------------------------------------------------------------------------- +// +void CSatUserActivityMonitor::Cancel() + { + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::Cancel calling" ) + + if ( iActivityManager ) + { + LOG( DETAILED, + "SATEVENTMONITORS: CSatUAMon::Cancel AM Cancel call" ) + iActivityManager->Cancel(); + + delete iActivityManager; + iActivityManager = NULL; + } + + LOG( SIMPLE, "SATEVENTMONITORS: CSatUserActivityMonitor::Cancel exiting" ) + } + +// End of file