basiclocationinfodisplay/blid/ui/inc/CHtkNavigationControl.h
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/basiclocationinfodisplay/blid/ui/inc/CHtkNavigationControl.h	Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,566 @@
+/*
+* Copyright (c) 2005-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:  Blid application compass view's compass control class definition.
+*
+*/
+
+
+
+#ifndef __CHTKNAVIGATIONCONTROL_H__
+#define __CHTKNAVIGATIONCONTROL_H__
+
+// SYSTEM INCLUDES
+#include <lbspositioninfo.h>
+#include <EPos_CPosLandmark.h>
+#include <alf/alfcontrol.h>
+
+//#ifdef RD_SCALABLE_UI_V2
+#include <barsread.h>
+#include <StringLoader.h>
+#include <aknstyluspopupmenu.h>
+//#endif // RD_SCALABLE_UI_V2
+
+// USER INCLUDE
+#include "CBlidBaseView.h"
+
+//FORWARD DCLERATION
+class MBlidLocation;
+class MBlidRouter;
+class MBlidEngObserver;
+class MBlidSettings;
+class CBlidEng;
+class CEikonEnv;
+class MKeyProcessor;
+class CAlfEnv;
+class CAlfImageVisual;
+class CAlfTextVisual;
+class CAlfBorderBrush;
+class CAlfAnchorLayout;
+class CAlfLayout;
+class CAlfCurvePath;
+class CAlfCurvePathLayout;
+class CAlfDeckLayout;
+class CAlfTextStyle;
+class CBlidArrivedTonePlayerUtility;
+class CAlfFrameBrush;
+class CAlfImageLoaderUtil;
+class CAlfTexture;
+
+const TInt KNumTexts = 3;
+
+/*! 
+  @class CHtkNavigationControl
+  
+  @discussion 
+  */
+class CHtkNavigationControl : public CAlfControl
+    {
+	public:
+		 /*!
+		  @function NewL
+		   
+		  @discussion Create a CHtkNavigationControl object, which will draw itself to aRect
+		  @param aRect the rectangle this view will be drawn to
+		  @result a pointer to the created instance of CHtkNavigationControl
+		  */
+		    static CHtkNavigationControl* NewL(CAlfEnv& aEnv,
+					                           MObjectProvider* aParent,
+							                   const TRect& aRect,
+					                           MBlidLocation& aLocation,
+					                           MBlidRouter& aRouter,
+					                           CBlidEng& aEngine,
+					                           CBlidBaseView& aView);
+
+		 /*!
+		  @function NewLC
+		   
+		  @discussion Create a CHtkNavigationControl object, which will draw itself to aRect
+		  @param aRect the rectangle this view will be drawn to
+		  @result a pointer to the created instance of CHtkNavigationControl
+		  */
+		    static CHtkNavigationControl* NewLC(CAlfEnv& aEnv,
+					                            MObjectProvider* aParent,
+							                    const TRect& aRect,
+					                            MBlidLocation& aLocation,
+					                            MBlidRouter& aRouter,
+					                            CBlidEng& aEngine,
+					                            CBlidBaseView& aView);
+
+
+		 /*!
+		  @function ~CHtkNavigationControl
+		  
+		  @discussion Destroy the object and release all memory objects
+		  */
+		     ~CHtkNavigationControl();
+
+	  
+	private:
+		 /*!
+		  @function CHtkNavigationControl
+		  
+		  @discussion Perform the first phase of two phase construction 
+		  */
+		    CHtkNavigationControl(CAlfEnv& aEnv,
+                                  MBlidLocation& aLocation,
+                                  CBlidBaseView& aView,
+                                  CBlidEng& aEngine );
+
+		 /*!
+		  @function ConstructL
+		  
+		  @discussion  Perform the second phase construction of a CHtkNavigationControl object
+		  */
+		    void ConstructL(CAlfEnv& aEnv,
+		                    const TRect& aRect,
+                            MBlidRouter& aRouter,
+                            CBlidEng& aEngine);
+
+	private:    
+        /** 
+         * Add new tabs to tabgroup
+         * @param aTabGroup
+         */
+        void AddTabsL(CAknTabGroup& aTabGroup);
+        
+        /**
+         * Appui's status pane getter
+         * @return Statuspane pointer
+         */
+        CEikStatusPane* StatusPane();
+        /**
+         * Creates navigation visuals
+         */
+        void CreateNavigationVisualsL( );
+        /**
+         * Creates navigation text visuals
+         */						     
+		void CreateNavigationTextVisualsL( CAlfTextStyle* aStyle1 );
+		/**
+         * Creates disstance visuals
+         */
+		void CreateDistanceVisualL( CAlfTextStyle* aStyle1 );
+		/**
+         * Play arrived tone
+         */
+		void PlayArrivedToneL();
+		/**
+         * Calculate if user has arrived to destination
+         */
+		void CalculateIfArrivedL();
+		/**
+         * Creates application strings
+         */
+		void CreateApplicationStringsL( );
+		/**
+         * Converts durtion into descriptor
+         */
+		void DurationFormat( TDes& aDurationString );
+		/**
+         * Converts distance unit into descriptor
+         */
+		void DistanceUnit( TDes& aUnitString );
+		/**
+         * Converts distance into descriptor
+         */
+		void DistanceFormat( TDes& aDistanceString );
+		/**
+         * Calculates durtion
+         */
+		void CalculateDurationL( TCourse aCourse );
+		/**
+         * Calculates distance
+         */
+		void CalculateDistanceL( TPosition aPosition );
+		/**
+         * Converts speed format into descriptor
+         */
+		void SpeedFormat( TDes& aSpeedString, TDes& aSpeedFormatString);
+		/**
+         * Creates speed visuals
+         */
+		void CreateSpeedVisualL( CAlfTextStyle* aStyle1 );
+		/**
+         * Prepares for dynamic move
+         */
+		void PrepareDynamicMoveL( );
+		/**
+         * Sets the landmark name
+         */                             
+		void SetLandMarksNameL();
+		/**
+         * Displays the current signal strength
+         */
+		void DisplaySatelliteSignalStrength( TInt aSatCount );
+		/**
+         * Creates textures for signal images
+         */
+		void CreateSignalTexturesL();
+		/**
+         * Create popup image texture
+         */
+		void CreatePopupImgTextureL();
+		/**
+         * Creates accuracy ring texture
+         */
+		void CreateAccTextureL();
+
+       /*
+        * This function checks wheather
+        * distance to destination is less than 10 meter
+        * and return ETrue or EFalse depends upon the condition.
+        */        
+        TBool IsInArrivedZone();
+		/**
+         * Creates indicator visual
+         */      
+        void CreateIndicatorVisualL();
+        /**
+         * Launches device not available note
+         */
+        void LaunchDeviceNotAvlNoteL();
+        /**
+         * Launches infor query dialog
+         */
+        void LaunchInfoQueryDlgL();
+		/**
+         * Creates animation
+         */
+        void CreateAnimationL();
+        /**
+         * Creates popup visuals
+         */
+        void CreatePopUpVisualL();
+        /**
+         * Updates visual image when timer is expired
+         */
+        void UpdateVisualImage();
+        /**
+         * Called when timer is expired
+         */
+        static TInt Tick(TAny* aObject); // functions for TCallBack protocol
+        /**
+         * Launches stylus activated popup
+         */
+        void LaunchStylusPopupMenuL( TPointerEvent aPointerEvent );
+        /**
+         * Calculate the Layout Rects
+         */
+        void CalculateRects();
+        /**
+         * Set Anchors for Visuals
+         */
+        void SetAnchors();
+        
+	public:	    //from CAlfControl
+		/**
+         * Handles the key events
+         */
+		TBool OfferEventL( const TAlfEvent& aEvent );
+		/**
+         * Notify about control visibility
+         */
+		void NotifyControlVisibility( TBool aIsVisible, 
+		       						  CAlfDisplay& aDisplay );
+					
+		
+	public:
+        /**
+         * Update controls
+         */ 
+        void UpdateL();
+        /**
+         * Clears the navigation info
+         */
+        void ClearNavigationInfoL();
+		/**
+         * Set update option
+         */
+		void SetUpdateOptionL( TBool aIsDestSet );        
+		/**
+         * Draw curves
+         */
+		void DrawCurvesL( );
+		/**
+         * Sets the flag visual
+         */
+		void SetFlagVisualL();
+		/**
+         * Sets the accuracy visual
+         */
+		void SetAccRacyVisualL();
+
+        /**
+         * Create CAknNavigationDecorator, ownership passed to caller.
+         * @param aDefaultNaviPane, ETrue if default, EFalse if tabgroup
+         * @return new instance of object. NULL, if something fails
+         */
+        void CreateNaviPaneL( TBool aDefaultNaviPane );
+
+
+        /**
+         * Activate navigation decorator.
+         * Method can called if tab needs to be refreshed.
+         * @param aNaviDecorator    navigation decorator
+         * @param aTabId            activated tabulator id             
+         */
+        void ActivateTabL( CAknNavigationDecorator& aNaviDecorator, 
+                            TInt aTabId );
+		/**
+         * Retruns the navi decorator
+         */
+		CAknNavigationDecorator* GetNiviDecorator( );
+		/**
+         * Change the flag visual image when reaching destination
+         */
+        void ChangeFlagVisualImageL();
+        /**
+         * Check if user has arrived to the destination
+         */
+        TBool HasArrivedDestination();        
+        /**
+         * Make title
+         * @param aResourceText resource to create title
+         */
+        void MakeTitleL( TInt aResourceText );
+        /**
+         * Stop the arrrival tone player
+         */
+        void StopPlayerL(  ); 
+        /**
+         * Update the layout
+         */
+        void UpdateLayoutL();
+        /**
+         * Displays the info popup msg
+         */
+        void DisplayInfoPopUpMsgL();
+        
+	private:
+		
+        /// Ref: A reference to MBlidLocation model
+        MBlidLocation& iLocationModel;
+
+        /// Ref: A pointer to MBlidRouter model
+        MBlidRouter* iRouter;
+
+        /// Reference to the view to handle resource change
+        CBlidBaseView& iView;
+        
+        /// Reference to the engine
+        CBlidEng& iEngine;
+
+        /// Own: Decorator class for navigation pane controls.
+        CAknNavigationDecorator* iDecoratedTabGroup;        
+        
+		//Own: Layout for all the visuals.
+		CAlfAnchorLayout* iLayout;
+
+		//Own: Text visuals. 
+		CAlfTextVisual* iLabel;
+		
+		//Own: Text visuals. 
+		CAlfTextVisual* iDistanceLabel;
+
+		//Own: Text visuals. 
+		CAlfTextVisual* iSpeedLabel;
+
+		//Own: Text visuals. 
+		CAlfTextVisual* iSpeedFormatLabel;
+
+		CAlfEnv& iEnv;
+		
+		CAlfImageVisual* iImageVisual;
+		
+        TInt iIndex;
+        
+        /// Own: Position information 
+        TPosition iPositionInfo;
+
+        /// Own: Course information
+        TCourse iCourse;
+        
+        /// Ref: A pointer to MBlidSettings model
+        MBlidSettings* iSettings;        
+        
+        // To determine if user has arrived to destination
+        static TBool iHasArrived;
+        
+        //variable to check wheather user arrived to destination
+        TBool iTimeFirstArrived;
+        
+        //Boolean to determine whether the arrived tone has palyed/not         
+        static TBool       iHasToPlayArrivedTone;
+
+        /// Own: Metric distance functionality text string 
+        HBufC* iDistanceFormatKm;
+
+        /// Own: Metric distance functionality text string 
+        HBufC* iDistanceFormatM;
+
+        /// Own: Imperial distance functionality text string 
+        HBufC* iDistanceFormatMiles;
+
+        /// Own: Imperial distance functionality text string 
+        HBufC* iDistanceFormatFt;
+
+        /// Own: Duration functionality text string 
+        HBufC* iDurationFormatLong;
+
+        /// Distance variable
+        TReal32 iDistance;
+
+        /// Duration variable
+        TTime iDuration;
+
+        /// Duration in days
+        TInt iDurationInDays;
+
+        /// Duration in seconds
+        TReal64 iDurationInSeconds;
+
+        /// Own: Speed's title text string
+        HBufC* iBlidSpeed;
+        
+        /// Speed variable
+        TReal iSpeed;
+
+        /// Is speed data available
+        TBool iIsSpeed;
+
+        /// Own: Metric speed's format text string
+        HBufC* iSpeedFormatKmph;
+
+        /// Own: Imperial speed's format text string
+        HBufC* iSpeedFormatMph;
+
+        // Own: No Data indicator
+        HBufC* iDataBeingCalculated;
+
+       // Own: No Data indicator
+        HBufC* iDataBlank;
+        
+		
+		TBool iIsDestinationSet;
+		
+		CAlfCurvePath* iCurvePath;		
+		
+		CAlfCurvePathLayout* iCurveLayout;
+		
+		HBufC8* iFlagText;
+		HBufC8* iAccText;
+		
+		CAlfImageVisual*  iFlagVisual;
+		
+		CAlfImageVisual*  iAccVisual;		
+		
+		CAlfImageVisual*  iNorthVisual;
+		
+		CAlfDeckLayout*  idecLayout;
+		
+		CAlfDeckLayout*  iNdecLayout;
+		
+		TReal iHeading;
+		
+		TRect iAccuracyRingRect;
+		
+		TPoint* iCharPoint;
+		
+		CAlfDeckLayout* iAccLayout;
+		
+        CPeriodic* iTimer;
+        
+        TInt iIsFirstDistance;
+        TReal32 iFirstDistance;
+    	HBufC*	iImagePath;
+    	TSize iCurveSize;
+    	TSize iFlagSize;
+    	TSize iAccuracyringcurveSize;   
+        
+        CAlfDeckLayout* iCurveDecLyt;
+        
+        CAlfAnchorLayout* iIndiAccAnchor;
+        
+        CAlfImageVisual* iIndicatorVisual;
+        
+        CAlfDeckLayout* iFlagdeck;
+        
+        CAlfDeckLayout* iActualNdeck;
+		
+		CBlidArrivedTonePlayerUtility* iToneUtility;
+		
+		TBool isStopUpdate;
+		
+		CAlfAnchorLayout* iPopUpLayout;
+		
+		CAlfTextVisual* iPopUpMsg;
+		
+		CAlfImageVisual* iPopImage;
+		
+		TBool isSatelliteInfoLaunch;
+		
+		CAlfDeckLayout* iPopupDeck;
+		
+		CAlfFrameBrush* iFrameBrush;
+		
+		CAlfAnchorLayout* iPopUpAnchor;
+
+		TRgb	iVisualColor;
+		
+		TBool iMskInfoVisible;
+		
+		CAlfImageVisual* iNavigationRing;
+
+	    CPeriodic* iPeriodic; // periodic timer active object
+        TInt iDisplayIcon;    // Current svg animation icon
+	    RPointerArray<CAlfTexture> iTextures;
+	    RPointerArray<CAlfTexture> iPopupTextures;
+	    RPointerArray<CAlfTexture> iSignalTextures;
+	    CAlfTexture* iAccTexture;
+	    CAlfTexture* iPopupImgTexture;
+				
+		MAlfBitmapProvider* iProvider;
+		
+		TRect iSignalStrengthRect;
+		
+		TRect iLmkNameRect;
+		
+		TRect iDistanceRect;
+		
+		TRect iSpeedBgRect;
+		
+		TRect iSpeedRect;
+		
+		TRect iSpdFormatRect;
+		
+		TRect iNavRingBgRect;
+		
+		TRect iAccRingRect;
+		
+		TRect iDirectionIndRect;
+		
+		TRect iNorthRect;
+
+		TRect iFlagRect;
+
+		CAknStylusPopUpMenu* iMenu;
+		
+		TBool isDeviceUnavailableDisplayed;
+    public:        
+        TBool iTimerComplete;
+        static TBool       iInArrivedZone;
+        TBool iIsDownPressed;
+    };
+
+#endif // __CHTKNAVIGATIONCONTROL_H__