diff -r 1fc85118c3ae -r 870918037e16 basiclocationinfodisplay/blid/ui/inc/CHtkNavigationControl.h --- /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 +#include +#include + +//#ifdef RD_SCALABLE_UI_V2 +#include +#include +#include +//#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 iTextures; + RPointerArray iPopupTextures; + RPointerArray 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__