internetradio2.0/uicontrolsinc/irstationinformationdisplay.h
changeset 0 09774dfdd46b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/uicontrolsinc/irstationinformationdisplay.h	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,249 @@
+/*
+* Copyright (c) 2007-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:  Control that displays current station information
+*
+*/
+
+
+#ifndef C_CIRSTATIONINFORMATIONDISPLAY_H
+#define C_CIRSTATIONINFORMATIONDISPLAY_H
+
+#include <alf/alfcontrol.h>
+
+#include "irmarqueeclet.h"
+#include "irstationinformationdata.h"
+
+class CAlfLayout;
+class CAlfDeckLayout;
+class CAlfGridLayout;
+class CIRStationInformationData;
+
+/**
+ * Control that displays current station information.
+ * 
+ * Responsible for handling fade effects and transitions for the station information.
+ */
+class CIRStationInformationDisplay : public CAlfControl
+    {
+
+public:
+
+    /**
+     * Two-phased constructor.
+     * 
+     * The object's ownership is implicitly transferred to the supplied control group.
+     * 
+     * @param   aEnv                Alfred environment to use.
+     * @param   aControlGroupId     Control group into which this control is added.
+     * @param   aParentLayout       Parent layout to use.
+     *
+     * @return  The constructed object. Does not transfer ownership to the caller.
+     */
+    static CIRStationInformationDisplay* NewL( CAlfEnv& aEnv, TInt aControlGroupId,
+    											CAlfLayout* aParentLayout = NULL );
+
+    // <TUNING TEMP>
+    ~CIRStationInformationDisplay();
+   
+    // </TUNING TEMP>
+    
+    /**
+     * Sets the displayed data.
+     * 
+     * This causes an animation to take place that is determined by the supplied data's transition argument.
+     * 
+     * @param   aData   The data to set.
+     */
+    void SetDisplayedDataL( const CIRStationInformationData& aData );
+
+    /**
+     * Sets the RDS PS name.
+     * 
+     * Does not do anything if there is no data being displayed currently.
+     *
+     * @param   aRdsPsName      RDS PS name to set.
+     */
+    void RdsDataReceivedL( const TDesC& aRdsData );
+    
+    /**
+     * Called when orienattion of the display has changed.
+     * 
+     * @param   aRdsDataDisplay   RDS data display.
+     */
+    void SetDisplayOrientation( TBool aLandscape ); 
+    
+    /**
+     * Returns current fade style.
+     * 
+     * @return Fade style.
+     */
+    TIRFadeStyle FadeStyle(); 
+ 
+// from base class CAlfControl
+
+    void VisualLayoutUpdated( CAlfVisual& aVisual );
+    TBool OfferEventL( const TAlfEvent& aEvent );
+    
+private:
+
+    /**
+     * Supported custom events.
+     */
+    enum TIRDisplayCustomEvents
+        {
+        EIRCustomEventDisplayFadeInCompleted,     /**< Event that is executed when a display has faded in. */
+        EIRCustomEventDisplayFadeOutCompleted,    /**< Event that is executed when a display has faded out. */
+        EIRCustomEventVisualFadeOutCompleted   /**< Event that is executed when a display has faded out. */
+        };
+    
+private:
+
+    /**
+     * Constructor.
+     */
+    CIRStationInformationDisplay( CAlfLayout& aParentLayout );
+
+    /**
+     * Second-phase constructor.
+     * 
+     * @param   aEnv                Alfred environment to use.
+     * @param   aControlGroupId     Control group into which this control is added.
+     * @param   aParentLayout       Parent layout to use.
+     */
+    void ConstructL( CAlfEnv& aEnv, TInt aControlGroupId,CAlfLayout* aParentLayout );
+
+    /**
+     * Creates a new display that is used to show the supplied data.
+     * 
+     * @param   aData       Station information data to display.
+     */
+    void CreateDisplayL( const CIRStationInformationData& aData );
+
+    /**
+     * Fades out the current display.
+     */
+    void FadeOutDisplay( const CIRStationInformationData& aData );
+
+    /**
+     * Fades in the current display.
+     */
+    void FadeInDisplay( const CIRStationInformationData& aData );
+    
+    /**
+     * Fades a single visual.
+     * 
+     * If the supplied visual is a text visual, its shadow opacity is also modified.
+     * 
+     * @param   aVisual     Visual to fade.
+     * @param   aOpacity    Target opacity.
+     */
+    void FadeVisual( CAlfVisual& aVisual, const TAlfTimedValue& aOpacity );
+
+    /**
+     * Fades all visuals contained within the supplied layout.
+     * 
+     * If the layout contains other layouts, also their child visuals will be modified.
+     * 
+     * @param   aLayout     Layout whose visuals to fade.
+     * @param   aOpacity    Target opacity.
+     */
+    void FadeLayout( CAlfLayout& aLayout, const TAlfTimedValue& aOpacity );
+
+    /**
+     * Starts to display RDS data.
+     */
+    void DisplayRdsDataL();
+private:
+    /**
+     * Parent anchor layout.
+     * Needed when creating own separate display for RDS data.
+     */
+    CAlfLayout& iParentAnchorLayout;
+
+    /**
+     * Base layout for the visuals.
+     * Not owned.
+     */
+    CAlfDeckLayout* iBaseLayout;
+
+    /**
+     * Layout that is currently being displayed.
+     * Contains all the visuals necessary to display any kind of station information data.
+     * Not owned.
+     */
+    CAlfGridLayout* iLayout;
+
+    /**
+     * Layout for the name and index number.
+     * Not owned.
+     */
+    CAlfGridLayout* iNameIndexLayout;
+
+    /**
+     * Layout for the RDS data.
+     * Not owned.
+     */
+    CAlfGridLayout* iRdsDataLayout;
+
+    /**
+     * Text visual for the station name.
+     * Not owned.
+     */
+    CAlfTextVisual* iName;
+
+    /**
+     * Text visual for the index number.
+     * Not owned.
+     */
+    CAlfTextVisual* iIndex;
+
+    /**
+     * Text visual for the RDS PS name.
+     * Not owned.
+     */
+    CAlfTextVisual* iRdsData;
+
+    /**
+     * Marquee controlet for the name.
+     */
+    TIRMarqueeClet iNameMarqueeClet;
+    
+    /**
+     * Marquee controlet for the PS name (and Radio Text).
+     */
+    TIRMarqueeClet iRdsDataMarqueeClet;
+    
+    
+    /**
+     * RDS data text.
+     * Owned.
+     */
+    RBuf iRdsDataText;
+
+    /**
+     * ETrue if orientation is landscape, otherwise EFalse.
+     */
+    TBool iLandscape;
+
+    /**
+     * Style of the logo fading.
+     */
+    TIRFadeStyle iFadeStyle;
+
+    TBool iLandScapSetFalg;
+    // </TUNING TEMP>
+    
+    };
+
+#endif // C_CIRSTATIONINFORMATIONDISPLAY_H