diff -r 000000000000 -r 164170e6151a securitydialogs/lockapp/inc/lockappstatecontrol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/securitydialogs/lockapp/inc/lockappstatecontrol.h Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,322 @@ +/* +* Copyright (c) 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: Controls lock states (keyguard locked/unlocked, devicelock) + * +*/ + + +#ifndef __LOCKAPPSTATECONTROL_H__ +#define __LOCKAPPSTATECONTROL_H__ + +// INCLUDES +#include "lockappobserverlist.h" +#include "lockappstatecontrolinterface.h" +#include "lockappobserverinterface.h" +#include + +// FORWARD DECLARATIONS +class CLockAppBaseControl; +class CLockAppIdleControl; +class CLockAppKeyguardControl; +class CLockAppDevicelockControl; +class CLockAppEcsDetector; +class CLockAppPubSubObserver; +class CAknIncallBubble; + +/** + * CLockAppStateControl class is the main locking state control class. + * Class is derived from CLockAppObserverList observer list class. + * Does not own visible user interface, but directs window server events like + * key events to window-owning child controls (keyguard ui, emergency support). + * All lock state changes should be handled through this class. + * + * @lib lockapp + * @since 5.0 + * @author Joona Petrell + * @author Tamas Koteles + */ +class CLockAppStateControl : public CLockAppObserverList, public MLockAppStateControl, + public MLockAppObserverInterface + { + public: + + /** + * Two-phased constructor. + */ + static CLockAppStateControl* NewL( ); + + /** + * Destructor. + */ + ~CLockAppStateControl( ); + + private: + + /** + * C++ default constructor. + */ + CLockAppStateControl( ); + + /** + * Second phase constructor allowed to fail (leave). + */ + void ConstructL( ); + + public: + + /** + * Activate keyguard lock. + * + * @param aWithNote if "keys locked" note is shown + * @return KErrAlreadyExists if already enabled + * KErrPermissionDenied if devicelock is activated + * KErrNone if succeeded + */ + TInt EnableKeyguardL( TBool aWithNote ); + + /** + * Dectivate keyguard lock. + * + * @param aWithNote if "keys active" note is shown. + * @return KErrAlreadyExists if already disabled + * KErrPermissionDenied if devicelock is activated + * KErrNone if succeeded + */ + TInt DisableKeyguardL( TBool aWithNote ); + + /** + * Activate devicelock. + * + * @param aReason the device locking reason. + * @return KErrAlreadyExists if already enabled. + * KErrNone if succeeded + */ + TInt EnableDevicelockL( TDevicelockReason aReason = EDevicelockManual ); + + /** + * Dectivate devicelock. + * + * @return KErrAlreadyExists if already disabled + * KErrPermissionDenied if keyguard is activated + * KErrNone if succeeded + */ + TInt DisableDevicelockL( ); + + /** + * Offer to enable keyguard by showing "offerkeylock" note. + * @return KErrPermissionDenied if keyguard/devicelock already activated + * KErrNone if succeeded + */ + TInt OfferKeyguard( ); + + /** + * Offer to enable keyguard by showing "offerkeylock" note. + * + * @return KErrNone if succeeded + * KErrPermissionDenied if keyguard not enabled + */ + TInt ShowKeysLockedNote( ); + + /** + * External access to lock state + * + * @return Current lock state + */ + TLockStatus LockStatus( ) const; + + /** + * External access to lock environment + * + * @return Current environment state mask + */ + TUint EnvironmentStatus( ) const; + + /** + * Only used for internal testing. + * @return error code + */ + TInt ExecuteInternalTest( ); + + public: + // From MLockAppObserverInterface + + /** + * Handle Central Repository observer callback. + */ + void HandleCenRepNotify( TUid aCenRepUid, TUint32 aKeyId, TInt aValue ); + + /** + * Handle Publish & Subscribe observer callback. + */ + void HandlePubSubNotify( TUid aPubSubUid, TUint aKeyId, TInt aValue ); + + public: + // from CCoeControl + + TInt CountComponentControls( ) const; + + CCoeControl* ComponentControl( TInt aIndex ) const; + + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination ); + + void HandleResourceChange( TInt aType ); + + private: + + /** + * Creates the second "visibility gate" window group. + */ + void CreateVisibilityGateWgL( ); + + /** + * Logs the telephony P&S call state. + */ + void PrintCallState( TInt aValue ); + + /** + * Update the environment variable with the event. + * @return ETrue if the environment value has changed + * EFalse otherwise + */ + TBool HandleEnvironmentChange( TUint aEventMask, TBool aEnable ); + + /** + * Check if given transition is valid. + * @return KErrNone if transition is legal + * KErrAlreadyExists if LockApp already is in requested state + * KErrPermissionDenied if illegal transition + */ + TInt CheckIfLegal( TLockAppMessageReason aReason ); + + /** + * Handle lock state change. Should only called from + * method PostStatusChangeL. + * + * @param aLockStatus The new lock state + */ + void HandleLockStatusChangedL( TLockStatus aLockStatus ); + + void BringForward( TBool aForeground ); + + /** + * Mute/Unmute key sounds when phone is locked/unlocked. + * + * @param aMuteSounds mute switch + */ + void MuteSounds( TBool aMuteSounds ); + + /** + * Prescreen key events for special cases before giving them to child controls. + */ + TKeyResponse PreCheckKeyEvents( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * Power key needs to always activate lights. + */ + void CheckForPowerKeyLights( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * Green and Red keys should be passed to Phone during phone call. + * @return ETrue if the keys have been forwarded + * EFalse otherwise + */ + TBool CheckForPhoneKeys( const TKeyEvent& aKeyEvent, TEventCode aType ); + + private: + + /** + * Internal lock state. + */ + TLockStatus iLockStatus; + + /** + * Current control; + */ + CLockAppBaseControl* iCurrentControl; + + /** + * Idle UI. + * Owned by superclass. + */ + CLockAppIdleControl* iIdle; // owned by superclass + + /** + * Keyguard UI. + * Owned by superclass. + */ + CLockAppKeyguardControl* iKeyguard; // owned by superclass + + /** + * Autolock UI + * Owned by superclass. + */ + CLockAppDevicelockControl* iDevicelock; + + /** + * Emergency call detector with emergency note. + * Owned by superclass. + */ + CLockAppEcsDetector* iLockEcsDetector; + + /** + * PubSub observers + */ + CLockAppPubSubObserver* iPSScreenSaverObserver; + CLockAppPubSubObserver* iPSTelephonyObserver; + CLockAppPubSubObserver* iPSGripObserver; + CLockAppPubSubObserver* iPSFPSObserver; + + /** + * Application's main window group - Event gate + */ + RWindowGroup& iWGEventGate; + + /** + * Visibility gate (owned) + */ + RWindowGroup iWGVisibilityGate; + + /** + * Incall Bubble. (owned) + */ + CAknIncallBubble* iIncallBubble; + + private: + + /** + * feature manager keys + */ + TBool iFeatureNoPowerkey; + + /** + * Offset value used to free reserved localization resources + */ + TInt iResourceFileOffset; + + /** + * if sounds are muted + */ + TBool iSoundsMuted; + + /** + * Environment state descriptor bit-mask + */ + TUint iEnvState; + + }; + +#endif // __LOCKAPPSTATECONTROL_H__ +// End of File