diff -r d189ee25cf9d -r 3533d4323edc emailuis/uicomponents/inc/fsslideeffect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/uicomponents/inc/fsslideeffect.h Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,176 @@ +/* +* 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: Data structure class for tree list component + * +*/ + + +#ifndef C_FSSLIDEEFFECT_H +#define C_FSSLIDEEFFECT_H + +// SF +#include +// +//////TOOLKIT CLASSES +class CAlfVisual; +class CAlfControl; + +//////PROJECT CLASSES +class MFsSlideEffectObserver; + + +/** + * Class used for slide in/out effects. + * + * @lib + */ +NONSHARABLE_CLASS(CFsSlideEffect) : public CBase, public MAlfEventHandler + { +public: + + enum TSlideEffectDirection + { + ESlideNone = 0, + ESlideFromTop, + ESlideFromBottom, + ESlideFromRight, + ESlideFromLeft + }; + +public: + /** + * Two-phased constructor + * + * @param aRoot Root visual/layout which of the opacity is controlled + * @param aTime Speed of slide in/out effect. Time in miliseconds. + * + * @return Pointer to the new slide effect object + */ + static CFsSlideEffect* NewL(CAlfControl* aControl, CAlfVisual* aRoot, TInt aTime); + + /** + * Two-phased constructor + * + * @param aObserver Observer which will receive events about state chages + * @param aRoot Root visual/layout which of the opacity is controlled + * @param aTime Speed of slide in/out effect. Time in miliseconds. + * + * @return Pointer to the new slide effect object + */ + static CFsSlideEffect* NewL(CAlfControl* aControl, MFsSlideEffectObserver* aObserver, + CAlfVisual* aRoot, + TInt aTime); + + + /** + * Launches slide in effect + */ + void SlideIn(TSlideEffectDirection aDirection); + + /** + * Launches slide out effect + */ + void SlideOut(TSlideEffectDirection aDirection); + + /** + * Sets duration of the slide effects. + * @param aTime Slide's effect duration in miliseconds. + */ + void SetTime(const TInt aTime); + + /** + * Returns duration of the slide effect + * + * @return Duration (in miliseconds) of the slide effect. + */ + TInt Time() const; + +public: //From MAlfEventHandler + + /** + * From MAlfEventHandler + * Called when an input event is being offered to this object. + * + * The implementation must ensure that the function returns EFalse if + * it does not do anything in response to the event, otherwise, other objects + * may be prevented from receiving the event. If it is able to process the + * event it should return ETrue. + * + * @param aEvent Event to be handled. + * + * @return ETrue, if the event was handled. + * Otherwise EFalse. + */ + virtual TBool OfferEventL(const TAlfEvent& aEvent); + +private: + /** + * Constructor + * + * @param aRoot Root visual/layout which of the opacity is controlled + * @param aTime Speed of slide in/out effect. Time in miliseconds. + * + */ + CFsSlideEffect(CAlfControl* aControl, CAlfVisual* aRoot, TInt aTime); + + /** + * Constructor + * + * @param aObserver Observer which will receive events about state chages + * @param aRoot Root visual/layout which of the opacity is controlled + * @param aTime Speed of slide in/out effect. Time in miliseconds. + * + * @return Pointer to the new slide effect object + */ + CFsSlideEffect(CAlfControl* aControl, MFsSlideEffectObserver* aObserver, + CAlfVisual* aRoot, + TInt aTime); + +private: + /** + * Custom events that informs about ending a slide effect. + */ + enum TCustomEvent + { + ECustomEventSlideInFinished = 300, + ECustomEventSlideOutFinished + }; + +private: + + /** + * + */ + CAlfControl* iControl; + + /** + * Root visual/layout which of the opacity is controlled + * Not own. + */ + CAlfVisual* iRoot; + + /** + * Observer of slide eddects + * Not own. + */ + MFsSlideEffectObserver* iObserver; + + /** + * Duration of slide in/out effects + */ + TInt iTime; + + }; + +#endif //C_FSSLIDEEFFECT_H