diff -r 058b1fc1663a -r 8a173132b0aa src/screensavershareddatamonitor.cpp --- a/src/screensavershareddatamonitor.cpp Mon Jan 18 20:19:52 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,283 +0,0 @@ -/* -* Copyright (c) 2003 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: Implementation for screensaver shared data monitoring. -* -*/ - - - -#include -#include -#include -#include // kaknkeyguardstatus -#include // kpsuidctsycallinformation -#include // kpsglobalsystemstate -#include -#include // kuikmmcinserted - -#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2 -#include -#endif - -#include "screensavershareddatamonitor.h" -#include "screensavershareddatai.h" -#include "screensaverrepositorywatcher.h" -#include "screensaverview.h" -#include "screensaverengine.h" -#include "screensaverappui.h" -#include "screensaversubscriber.h" -#include "screensaverutility.h" - -//System shuttingdown value -const TInt KSystemShuttingdown = 1; - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::~CScreensaverSharedDataMonitor -// ----------------------------------------------------------------------------- -// -CScreensaverSharedDataMonitor::~CScreensaverSharedDataMonitor() - { - DeleteSubscriber( iPreviewModeSubscriber ); - iPreviewModeProperty.Close(); - - DeleteSubscriber( iMMCWatchSubscriber ); - iMMCWatchProperty.Close(); - - DeleteSubscriber( iUSBWatchSubscriber ); - iUSBWatchProperty.Close(); - - DeleteSubscriber( iKeyguardStateSubscriber ); - iKeyguardStateProperty.Close(); - - DeleteSubscriber( iCallStateSubscriber ); - iCallStateProperty.Close(); - - DeleteSubscriber( iShuttingDownSubscriber ); - iShuttingDownProperty.Close(); - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::NewL -// ----------------------------------------------------------------------------- -// -CScreensaverSharedDataMonitor* CScreensaverSharedDataMonitor::NewL( CScreensaverSharedDataI* aData ) - { - CScreensaverSharedDataMonitor* self = new( ELeave )CScreensaverSharedDataMonitor( aData ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); // self; - return self; - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::CScreensaverSharedDataMonitor -// ----------------------------------------------------------------------------- -// -CScreensaverSharedDataMonitor::CScreensaverSharedDataMonitor( - CScreensaverSharedDataI* aData ) - :iData( aData ) - { - // No implementation required - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::ConstructL -// ----------------------------------------------------------------------------- -// -void CScreensaverSharedDataMonitor::ConstructL() - { - User::LeaveIfError(iPreviewModeProperty.Attach(KPSUidScreenSaver, KScreenSaverPreviewMode)); - iPreviewModeSubscriber = new (ELeave) CSubscriber(TCallBack(HandlePreviewModeChanged, this), iPreviewModeProperty); - iPreviewModeSubscriber->SubscribeL(); - - - // MMC watcher - User::LeaveIfError(iMMCWatchProperty.Attach(KPSUidUikon, KUikMMCInserted)); - iMMCWatchSubscriber = new (ELeave) CSubscriber( - TCallBack(HandleMMCStateChanged, this), iMMCWatchProperty); - iMMCWatchSubscriber->SubscribeL(); - - // USB watcher (MMC dismount) - User::LeaveIfError(iUSBWatchProperty.Attach( - KPSUidUsbWatcher, KUsbWatcherSelectedPersonality)); - iUSBWatchSubscriber = new (ELeave) CSubscriber( - TCallBack(HandleUSBStateChanged, this), iUSBWatchProperty); - iUSBWatchSubscriber->SubscribeL(); - - // Keyguard state watcher - User::LeaveIfError(iKeyguardStateProperty.Attach( - KPSUidAvkonDomain, KAknKeyguardStatus)); - iKeyguardStateSubscriber = new (ELeave) CSubscriber( - TCallBack(HandleKeyguardStateChanged, this), iKeyguardStateProperty); - iKeyguardStateSubscriber->SubscribeL(); - - // Call state watcher - User::LeaveIfError(iCallStateProperty.Attach( KPSUidCtsyCallInformation, KCTsyCallState ) ); - iCallStateSubscriber = new (ELeave) CSubscriber( - TCallBack(HandleCallStateChanged, this), iCallStateProperty); - iCallStateSubscriber->SubscribeL(); - - // Shutting down state watcher - User::LeaveIfError( iShuttingDownProperty.Attach( KPSUidStartup, KPSGlobalSystemState ) ); - iShuttingDownSubscriber = new (ELeave) CSubscriber( - TCallBack(HandleShuttingDownStateChanged, this), iShuttingDownProperty); - iShuttingDownSubscriber->SubscribeL(); - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::View -// ----------------------------------------------------------------------------- -// -CScreensaverView* CScreensaverSharedDataMonitor::View() - { - return STATIC_CAST( CScreensaverAppUi*, CCoeEnv::Static()->AppUi() )->ScreensaverView(); - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::Model -// ----------------------------------------------------------------------------- -// -CScreensaverEngine& CScreensaverSharedDataMonitor::Model() - { - return STATIC_CAST( CScreensaverAppUi*, CCoeEnv::Static()->AppUi() )->Model(); - } - - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::DeteleSubscriber -// ----------------------------------------------------------------------------- -// -void CScreensaverSharedDataMonitor::DeleteSubscriber( CSubscriber*& aSubscriber ) - { - if ( aSubscriber ) - { - aSubscriber->StopSubscribe(); - } - delete aSubscriber; - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::HandlePreviewModeChanged -// Handles preview mode property key change. If key is changed to 1, -// preview mode is started -// ----------------------------------------------------------------------------- -// -TInt CScreensaverSharedDataMonitor::HandlePreviewModeChanged(TAny *aPtr) - { - CScreensaverSharedDataMonitor *data = STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr); - - if ( data->iData->ScreensaverPreviewMode() == 1) - { - TRAP_IGNORE( data->Model().StartPreviewModeL() ); - } - - return KErrNone; - } - - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::HandleMMCStateChanged -// Handles MMC state change callback. If current plugin is loaded from -// MMC, screensaver defaults to date & time when MMC removed -// ----------------------------------------------------------------------------- -// -TInt CScreensaverSharedDataMonitor::HandleMMCStateChanged(TAny* aPtr) - { - STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr)->Model().StopScreenSaver(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::HandleUSBStateChanged -// Handles USB state change callback. If current plugin is loaded from -// MMC, screensaver defaults to date & time when USB attached -// ----------------------------------------------------------------------------- -// -TInt CScreensaverSharedDataMonitor::HandleUSBStateChanged(TAny* aPtr) - { - // Same handler as in MMC removal, parameter tells it's because of USB - STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr)->Model().StopScreenSaver(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::HandleKeyguardStateChanged -// Handles keyguards status change callback. -// When keys become locked, screensaver timeout is shortened. -// ----------------------------------------------------------------------------- -// -TInt CScreensaverSharedDataMonitor::HandleKeyguardStateChanged(TAny* aPtr) - { - // If keyguard just became unlocked, inform model so that - // short timeout use is reset. Otherwise there might be a situation - // where short timeout was in use, user opened keys, did something - // without letting the device idle for short timeout period and - // locked keys again. Then short timeout would remain in use without this - // notification. - // Also inform of keys locked, in case Screensaver is running this - // happened because of automatic keyguard fired, and screensaver - // should update the display to show the keyguard indicator - CScreensaverSharedDataMonitor* _this = - STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr); - - if ( _this->iData->IsKeyguardOn() ) - { - // Keys locked - if screensaver is running, this was caused by - // automatic keyguard and screensaver should refresh the view - // to show the keylock indicator - if ( _this->Model().ScreenSaverIsOn() ) - { - _this->View()->UpdateAndRefresh(); - } - } - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::HandleCallStateChanged -// Handles call state change callback. If call state changes, -// screensaver is stopped -// ----------------------------------------------------------------------------- -// -TInt CScreensaverSharedDataMonitor::HandleCallStateChanged(TAny* aPtr) - { -#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2 - // Prevent fullscreen transition from screensaver on incoming call - CAknTransitionUtils::SetData( KScreensaverCallStateChange, (TAny*)1 ); -#endif - - STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr)->Model().StopScreenSaver(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverSharedDataMonitor::HandleShuttingDownStateChanged -// ----------------------------------------------------------------------------- -// -TInt CScreensaverSharedDataMonitor::HandleShuttingDownStateChanged( TAny* /*aPtr*/ ) - { - TInt startupState = -1; - - RProperty::Get( KPSUidStartup, KPSGlobalSystemState, startupState ); - - if( startupState == ESwStateShuttingDown ) - { - RProperty::Set( KPSUidScreenSaver, KScreenSaverAllowScreenSaver, KSystemShuttingdown); - } - - return KErrNone; - } - -// End of file