diff -r d8a3531bc6b8 -r 433cbbb6a04b uiacceltk/hitchcock/ServerCore/Inc/alfeffectutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/ServerCore/Inc/alfeffectutils.h Fri Mar 12 15:47:04 2010 +0200 @@ -0,0 +1,198 @@ +/* +* Copyright (c) 2008 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: internal for Nokia +* +*/ + +#include +#include +#include "alfbridge.h" + +// Timer to send finish full screen effect +// --------------------------------------------------------- +// CAlfFinishTimer +// --------------------------------------------------------- +// +NONSHARABLE_CLASS( CAlfRosterFreezeEndTimer ):public CTimer + { + public: // Constructors and destructor + static CAlfRosterFreezeEndTimer* NewL( CAlfBridge& aBridge ); + virtual ~CAlfRosterFreezeEndTimer(); + + public: // New functions + void Start( TTimeIntervalMicroSeconds32 aPeriod ); + + protected: // Functions from base classes + void DoCancel(); + + private: + CAlfRosterFreezeEndTimer( CAlfBridge& aBridge ); + void ConstructL(); + void RunL(); + + private: // Data + CAlfBridge& iBridge; + + }; + + + +// Timer to send finish full screen effect +// --------------------------------------------------------- +// CAlfFinishTimer +// --------------------------------------------------------- +// +NONSHARABLE_CLASS( CAlfEffectEndTimer ):public CTimer + { + public: // Constructors and destructor + static CAlfEffectEndTimer* NewL( CAlfBridge& aBridge ); + virtual ~CAlfEffectEndTimer(); + + public: // New functions + void Start( TTimeIntervalMicroSeconds32 aPeriod, TInt aHandle ); + + protected: // Functions from base classes + void DoCancel(); + + private: + CAlfEffectEndTimer( CAlfBridge& aBridge ); + void ConstructL(); + void RunL(); + + private: // Data + CAlfBridge& iBridge; + TInt iHandle; + + }; + +// --------------------------------------------------------- +// CAlfLayoutSwitchEffectcoordinator +// --------------------------------------------------------- +// +NONSHARABLE_CLASS( CAlfLayoutSwitchEffectCoordinator ) : public CBase, public MAlfGfxEffectObserver + { + public: // Constructors and destructor + CAlfLayoutSwitchEffectCoordinator( CAlfBridge& aBridge ); + virtual ~CAlfLayoutSwitchEffectCoordinator(); + + public: // MAlfGfxEffectObserver + void AlfGfxEffectEndCallBack( TInt aHandle ); + + public: + void BeginLayoutSwitch(); + void Cancel(); + + private: + AknTransEffect::TContext NextLayoutSwitchContext(); + void SetLayoutSwitchEffect(AknTransEffect::TContext aContext); + TBool LayoutSwitchEffectsExist(); + + private: // Data + + CAlfBridge& iBridge; + AknTransEffect::TContext iLayoutSwitchEffectContext; + TThreadPriority iOriginalPriority; + CAlfRosterFreezeEndTimer* iRosterFreezeEndTimer; + }; + +// --------------------------------------------------------- +// Effects states are used for effects request that arrive before the effected +// window has been created. This is very common with fullscreen effects and +// occational with control effects. +// +// NOTE: control effects support currently only one "delayed" effect. This is propably +// not sufficient for all sitations. +// --------------------------------------------------------- +// +NONSHARABLE_CLASS(CEffectState) : public CBase + { + public: + + CEffectState(); + virtual ~CEffectState(); + + protected: + /** + * ResolveFileNameL + * + * Reads filename from stream and composes it to iEffectName variable. + */ + void ResolveFileNameL(RMemReadStream& aStream); + + public: + + TInt iAction; + TInt iHandle; + + HBufC* iEffectName; + // Handle using which client should be informed of completion. + TInt iCompletionHandle; + // State information + TInt iOperation; + + }; + + NONSHARABLE_CLASS(CControlEffectState ) : public CEffectState + { + public: + + TUint32 iClientHandle; + TUint32 iClientGroupHandle; + + void ConstructL(TInt aAction, RMemReadStream& aStream); + }; + + NONSHARABLE_CLASS(CFullScreenEffectState ) : public CEffectState + { + public: + ~CFullScreenEffectState(); + + void ConstructL(TInt aAction, RMemReadStream& aStream); + + TBool ResetTimerL(CAlfBridge* aBridge); + + void NotifyDrawingTimeout(); + + // Information from BeginFullScreen + TInt iType; + TInt iWg1; + TInt iWg2; + TInt iToAppId; + TInt iFromAppId; + TRect iRect; + + // ETrue if waiting for window group to appear + TBool iWaitingWindowGroup; + // ETrue if end fullscreen has been performed + TBool iEndFullScreen; + // ETrue if setup effect container has been done + TBool iSetupDone; + + // used for resolving the iCleanupStackItem that holds the frozen app layout underneath the starting application + TInt iAppStartScreenshotItemHandle; + + RRegion iPaintedRegion; + enum TEffectType + { + ENotDefinedEffect = 0, + EStartEffect, + EExitEffect + }; + + TEffectType iEffectType; + TSize iDisplaySize; + CAlfBridge* iBridge; // for callback. not own. + + CPeriodic* iDrawingCompleteTimer; + };