diff -r 2e1adbfc62af -r ee64f059b8e1 internetradio2.0/uiinc/irradioidle.h --- a/internetradio2.0/uiinc/irradioidle.h Mon May 03 12:25:23 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,447 +0,0 @@ -/* -* Copyright (c) 2009 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: -* -*/ -/* -* ============================================================================ -* Name : vrradioidle.h -* Part of : S60VisualRadio / UI -* Description : -* Version : -* -* ============================================================================== -*/ - -#ifndef IRRADIOIDLE_H_ -#define IRRADIOIDLE_H_ - -// INCLUDES - -#include -#include -#include -#include - -// FORWARD DECLARATIONS - -class CAlfGradientBrush; -class CAlfViewportLayout; -class CAlfEnv; - -// CONSTANTS - -/** Commands for radio idle. */ -enum TRadioIdleCommand - { - ESuspend = 0x4A, - EStartup, - EShutdown, - ERefresh, - EResetContent - }; - -// CLASS DEFINITIONS - -class MIRRadioIdleCommandObserver - { - public: - /** - * Called when change to the state of radio idle is wanted - */ - virtual void HandleCommandL( TRadioIdleCommand aCommand ) = 0; - }; - -/** -* CVRRadioIdle class -* -* Class launches animated information in the defined subregion of the display after startup delay. -* Launching and radio idle running can be suspended by giving ESuspend command via -* MVRRadioIdleCommandObserver interface. When suspended, -* background bitmap will replace the animated information and startup delay is reset to zero. -* The animation will start again after the delay. -*/ -NONSHARABLE_CLASS(CIRRadioIdle) : public CAlfControl, public MIRRadioIdleCommandObserver - { -public: // Constructors and destructor - - /** Display orientations. */ - enum TOrientation - { - EPortrait = 0x4A, - ELandscape, - EOrientationNone - }; - - /** - * Epoc two-phased constructor. - * @param aAlfEnv The Alfred environment. - * @param aControlGroupId The control group that this control is to be added to. - * @param aParentLayout The parent layout for the visuals. - */ - static CIRRadioIdle* NewL( CAlfEnv& aEnv, TInt aControlGroupId, CAlfLayout* aParentLayout ); - /** - * Destructor - */ - virtual ~CIRRadioIdle(); - -public: // Functions from base classes - /** - * From CAlfControl, takes care of alfred event handling. - */ - TBool OfferEventL( const TAlfEvent& aEvent ); - -public: // New functions - - /** States of radio idle. */ - enum TRadioIdleState - { - ERunning = 0xA0, - ESuspended, - EStopped - }; - - /** Radio idle modes. */ - enum TRadioIdleMode - { - EOnlyBackgroundText = 0xB0, - EBackgroundTextAndRadioIdleItems - }; - - /** Fade styles. */ - enum TRadioIdleFadeStyle - { - EFadeLeft = 0xC0, - EFadeRight, - EFadeStyleNone - }; - - /** - * Adds radio idle item text to be used in the radio idle - * @param aRadioIdleItemText Text of the radio idle item - * @return Index of the added item - */ - TInt AddRadioIdleContentL( const TDesC& aRadioIdleItemText ); - /** - * Updates radio idle item text in specified index - * @param aRadioIdleItemText Text of the radio idle item - * @param aIndex Index of the radio idle item to be updated - */ - void UpdateRadioIdleContent( const TDesC& aRadioIdleItemText, TInt aIndex ); - /** - * Removes all radio idle item texts - */ - void ResetRadioIdleContent(); - /** - * Returns number of radio idle content items - * @return content count - */ - TInt RadioIdleContentCount() const; - /** - * Sets the fade style for radio idle. - * @param aFadeStyle Fade style - */ - void SetIdleFadeStyle( TRadioIdleFadeStyle aFadeStyle ); - /** - * Sets the mode request for mode change. The mode - * will be changed as soon as possible. - * @param aRequestedMode Requested mode - */ - void SetModeChangeRequestL( TRadioIdleMode aRequestedMode ); - /** - * Retrieves the radio idle mode - */ - TRadioIdleMode Mode(); - /** - * Retrieves the radio idle state - */ - TRadioIdleState State(); - /** - * Sets primary color for the radio idle - * @param aColor The color that is used as primary color of radio idle - */ - void SetPrimaryColor( TRgb aColor ); - /** - * Sets secondary color for the radio idle - * @param aColor The color that is used as secondary color of radio idle - */ - void SetSecondaryColor( TRgb aColor ); - /** - * Sets the background color of the radio idle - * @param aColor The color that is used as the background color of the radio idle - */ - void SetBackgroundColor( TRgb aColor ); - /** - * Return orientation of the display - */ - TOrientation Orientation(); - /** - * Set orientation of the display - * @param aOrientation The display orientation - */ - void SetOrientation( TOrientation aOrientation ); - /** - * Calculates display layout - */ - void UpdateLayout(); - /** - * From MIRRadioIdleCommandObserver, takes care of radio idle command handling. - * @param aCommand Radio idle command - */ - void HandleCommandL( TRadioIdleCommand aCommand ); - -private: - /** - * C++ default constructor - */ - CIRRadioIdle(); - /** - * EPOC second phase constructor. - * @param aEnv Reference to the Hitchcock environment instance. - * @param aControlGroupId Id of the control group to which radio idle belongs. - * @param aParentLayout Pointer to parent layout. - */ - void ConstructL( CAlfEnv& aEnv, TInt aControlGroupId, CAlfLayout* aParentLayout ); - -private: // New functions - - /** Scroll directions for the radio idle item. */ - enum TRadioIdleItemScrollDirection - { - EScrollLeftToRight = 0xA0, - EScrollRightToLeft, - EScrollNone - }; - - /** Custom events for the radio idle. */ - enum TRadioIdleCustomEvent - { - ERadioIdleItemTransformationEnd = 0x5B, - ERadioIdleBackgroundTextScrollEnd, - EAfterStartupDelay, - ERadioIdleChangeMode, - ERadioIdleEventNone, - ERadioIdleFadeOutCompleted - }; - - /** - * Suspends radio idle and starts it again after startup delay - */ - void SuspendRadioIdle(); - /** - * Stops radio idle. Radio idle is set to stopped state. - */ - void ShutdownRadioIdle(); - /** - * Launches radio idle immediately. - * The background bitmap fades out and at the same time radio idle fades in - */ - void StartRadioIdleL(); - /** - * Starts radio idle again without reseting radio idle items. - */ - void RefreshL(); - /** - * Creates radio idle with passed number of the radio idle items - * @param aNumberOfRadioIdleItems Number of the radio idle items - */ - void AddRadioIdleL( const TInt aNumberOfRadioIdleItems ); - /** - * Creates the radio idle item to the passed radio idle view port. - * @param aRadioIdle The view port of the radio idle, ownership now transferred - * @param aRadioIdleItemText Text of the radio idle item - * @param aRadioIdleItemHasBackground TBool to indicate background visibility - * @param aBackgroundColor The background color of the radio idle item - * @param aBackgroundOpacity The background opacity of the radio idle item - */ - CAlfTextVisual* AddRadioIdleItemL( CAlfLayout* aRadioIdle, - const TDesC& aRadioIdleItemText, - const TDesC8& aTag, - TBool aRadioIdleItemHasBackground = EFalse, - const TRgb& aBackgroundColor = KRgbWhite, - const TReal32 aBackgroundOpacity = 0.5f ); - /** - * Creates, initializes and animates the radio idle background text visual - */ - void CreateBacgroundTextVisualL(); - /** - * Initializes the radio idle items - * @param aNumberOfRadioIdleItems Number of the radio idle items - */ - void InitializeRadioIdleItemsL( const TInt aNumberOfRadioIdleItems ); - /** - * Sets defined animation to the created radio idle items - */ - void AnimateRadioIdleItems(); - /** - * Retrieves text from randomly chosen radio idle item. - * Transfers ownership. - */ - HBufC* GetRandomRadioIdleContentL(); - /** - * Sets color, opacity and scaling settings to the radio idle item - * @param aRadioIdleItem The radio idle item, ownership not transferred - * @param aRadioIdleItemText Text of the radio idle item - * @param aTextStyleId Text style for text of the radio idle item - */ - void SetRadioIdleItemSettingsL( CAlfTextVisual* aRadioIdleItem, const TDesC& aRadioIdleItemText, - const TInt aTextStyleId ); - /** - * Sets translating animations to the radio idle item - * @param aRadioIdleItem The radio idle item, ownership not transferred - * @param aRandomSeed - */ - void SetRadioIdleItemAnimation( CAlfTextVisual* aRadioIdleItem ); - - /** - * Sets the radio idle mode - */ - void SetMode( TRadioIdleMode aMode ); - /** - * Fades in radio idle - * @param aNow If ETrue shows radio idle immediately otherwise - * fades with defined fading duration - */ - void RadioIdleFadeIn( TBool aNow = EFalse ); - /** - * Fades out radio idle - * @param aNow If ETrue hides radio idle immediately otherwise - * fades with defined fading duration - */ - void RadioIdleFadeOut( TBool aNow = EFalse ); - /** - * Sets and starts scrolling animation to CAlfTextVisual. - * The visual object is scrolled from current position to - * right side of the display - * @param aVisual a pointer to the visual object, ownership not transferred - */ - void ScrollToRight( CAlfTextVisual* aVisual ) const; - /** - * Sets and starts scrolling animation to CAlfTextVisual. - * The visual object is scrolled from current position to - * left side of the display - * @param aVisual a pointer to the visual object, ownership not transferred - */ - void ScrollToLeft( CAlfTextVisual* aVisual ) const; - /** - * todo - * @param aVisual a pointer to the visual object, ownership not transferred - * @param aTransitionTime Duration for reaching the target. - * @param aEventAfterScrollingEnd todo custom even that will be sent when transition time is end - */ - void SetScrollingToBackgroundText( CAlfTextVisual* aVisual, - TInt aTransitionTime, - TRadioIdleCustomEvent aEventAfterScrollingEnd = ERadioIdleEventNone ) ; - /** - * Sets fade-in animation to the CAlfVisual. - * @param aVisual a pointer to the visual object, ownership not transferred - * @param aTime Time duration after the visual object has been faded in. Fading duration in milliseconds - * @param aOpacity Target opacity value - */ - void FadeIn( CAlfVisual* aVisual, TInt aFadingTime, TReal32 aOpacity = 1.0f ) const; - /** - * Sets fade-out animation to the CAlfVisual. - * @param aVisual a pointer to the visual object, ownership not transferred - * @param aTime Time duration after the visual object has been faded out. Fading duration in milliseconds - * @param aOpacity Target opacity value - */ - void FadeOut( CAlfVisual* aVisual, TInt aFadingTime, TReal32 aOpacity = 0.0f ) const; - /** - * Translates the visual object with passed arguments - * @param aVisual a pointer to the visual object, ownership not transferred - * @param aX Translation value in the horizontal direction - * @param aY Translation value in the vertical direction - */ - void Translate( CAlfTextVisual* aTextVisual, const TAlfTimedValue& aX, - const TAlfTimedValue& aY ); - /** - * Scales the visual object with passed arguments - * @param aVisual a pointer to the visual object, ownership not transferred - * @param aX Scaling value in the horizontal direction - * @param aY Scaling value in the vertical direction - */ - void Scale( CAlfTextVisual* aTextVisual, const TAlfTimedValue& aX, const TAlfTimedValue& aY ); - /** - * Removes all transformations of the visual object such as the scaling and translating. - * @param aVisual a pointer to the visual object, ownership not transferred - */ - void LoadTextVisualIdentity( CAlfTextVisual* aTextVisual ); - /** - * Converts CAlfVisual reference to pointer - */ - CAlfVisual* GetPointer( CAlfVisual& aRef ); - /** - * Callback for radio idle item transformation end. - */ - void HandleRadioIdleItemTransformationEndEventL( const TAlfEvent& aEvent ); - /** - * Callback for background text transformation end. - */ - void HandleBackgroundTextScrollEndEventL( const TAlfEvent& aEvent ); - /** - * Randomly modifies a component of a radio idle text color. - */ - TInt DeviateColorComponent( TInt aBaseValue ); - -private: // Data - - /** Display orientation */ - TOrientation iOrientation; - - /** Visual of radio idle content. Not owned. */ - CAlfViewportLayout* iViewport; - /** Parent layout. Not owned. */ - CAlfLayout* iParentLayout; - /** Layout for radio idle */ - TAknLayoutRect iRadioIdleLayout; - - /** Fade style for radio idle */ - TRadioIdleFadeStyle iFadeStyle; - /** States of radio idle */ - TRadioIdleState iRadioIdleState; - /** Keeps track of the current radio idle mode */ - TRadioIdleMode iRadioIdleMode; - /** Keeps track of the requested mode */ - TRadioIdleMode iRadioIdleRequestedMode; - /** Counts the items that have finished their transformations for mode change */ - TInt iItemsTransformationEndEventCounter; - - /** Color to be used for the radio idle items */ - TRgb iRadioIdlePrimaryColor; - /** Color to be used for the radio idle items */ - TRgb iRadioIdleSecondaryColor; - /** Scroll direction for the radio idle item */ - TRadioIdleItemScrollDirection iScrollDirection; - - /** Array for the strings of the radio idle items. Owned. */ - CDesCArrayFlat* iRadioIdleItemArray; - /** Array for the text styles of the radio idle items */ - RArray iTextStyleIdArray; - - /** Background of radio idle. Not owned.*/ - CAlfGradientBrush* iRadioIdleBackgroundGradientBrush; - /** Text style id of the radio idle background text */ - TInt iRadioIdleItemBackgroundTextStyleId; - /** Color that is used as the background color of radio idle */ - TRgb iRadioIdleBackgroundColor; - /** Scroll direction for the radio idle background text */ - TRadioIdleItemScrollDirection iBackgroundTextScrollDirection; - /** Indicates whether fading is ongoing */ - TBool iFading; - /** Indicates whether there was a startup try when fading out radio idle */ - TBool iDelayedStartup; - - }; - -#endif /*VRRADIOIDLE_H_*/