diff -r 1fc85118c3ae -r 870918037e16 mapnavproviderrefapp/inc/mnrpmapcontrol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mapnavproviderrefapp/inc/mnrpmapcontrol.h Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,117 @@ +/* +* Copyright (c) 2006 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: CMnrpMapControl class definition +* +*/ + + +#ifndef MNRP_MAPCONTROL_H +#define MNRP_MAPCONTROL_H + +#include +#include "mnrpmapmodel.h" + +class CMnrpEngine; +class CMnrpMapView; + +/** Map view. Draws map on screen using information from + CMnrpMapModel. + */ +class CMnrpMapControl : public CCoeControl, public MMapModelObserver + { + public: + + static CMnrpMapControl* NewL( CMnrpMapView& aView, const TRect& aRect, CMnrpEngine& aEngine ); + virtual ~CMnrpMapControl(); + + void UpdateModelL( CMnrpMapViewService& aService ); + void SetSelectionModeL( TBool aSelectionMode ); + + /** Returns current cursor location in selection mode */ + TCoordinate CurrentLocation(); + + void ToggleFullScreen(); + + public: // from CCoeControl + + void Draw( const TRect& aRect ) const; + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + void SizeChanged(); + void HandleResourceChange( TInt aType ); + + public: // from MMapModelObserver + + /** Redraws itself when model is updated */ + void HandleModelUpdateL(); + + private: + + CMnrpMapControl( CMnrpMapView& aView ); + void ConstructL( const TRect& aRect, CMnrpEngine& aEngine ); + + void DrawCursor( CWindowGc& aGc ) const; + + /** Draws text around map + * Top area - left longitude, cell size, right longitude + * Left area - top latitude, bottom latitude + * Bottom area - center coordinates + */ + void DrawGridText( + CWindowGc& aGc, + const TRect& aInnerBox, + const TRect& aOuterBox, + const CFont* aFont, + CMnrpMapModel::TGrid& aGrid ) const; + + /** Helper to find out border size based on font dimensions */ + TSize BorderSize() const; + + /** Returns specifications of used font */ + TFontSpec SmallFontSpec( TInt aFontHeightInTwips ) const; + + void MoveCursor( TInt aXmove, TInt aYmove ); + TRect CursorMargin(); + + void Zoom( TReal aRate ); + + void SetFullScreen( TBool aFullScreen ); + + void CreateFonts(); + void DestroyFonts(); + + void CreateScreenBufferL( const TSize& aSize ); + void RenderL(); + + private: + /** Parent view */ + CMnrpMapView& iView; + + /** Model */ + CMnrpMapModel* iModel; + TSize iViewSize; + + TBool iSelectionMode; + TPoint iCursor; + TCoordinate iAbsoluteCursor; + + /** Whether fullscreen mode on or off*/ + TBool iIsFullScreen; + + mutable CFbsBitmap* iOffScreenBitmap; + CFont* iTextFont; + CFont* iItemFont; + }; + +#endif // MNRP_MAPVIEW_H +