diff -r d189ee25cf9d -r 3533d4323edc meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrdescriptionfield.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/mrfieldbuilderplugin/inc/cesmrdescriptionfield.h Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,139 @@ +/* +* 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: ESMR Description field. + * +*/ + + +#ifndef CESMRDESCRIPTIONFIELD_H +#define CESMRDESCRIPTIONFIELD_H + +#include +#include +#include +#include "cesmrfield.h" + +class CESMREditor; +class CCalEntry; +class CESMRRichTextLink; +class CESMRFeatureSettings; +class CAknsBasicBackgroundControlContext; +class CESMRUrlParserPlugin; + +/** + * This class is a custom field control that shows the description of calendar events + */ +NONSHARABLE_CLASS( CESMRDescriptionField ): public CESMRField, + public MEikEdwinSizeObserver, + public MEikEdwinObserver + { + public: + /** + * Creates new CESMRDescriptionField object. Ownership + * is transferred to caller. + * @return Pointer to created object, + */ + static CESMRDescriptionField* NewL(); + + /** + * C++ Destructor. + */ + ~CESMRDescriptionField(); + + public: // From CESMRField + void InitializeL(); + void InternalizeL( MESMRCalEntry& aEntry ); + void ExternalizeL( MESMRCalEntry& aEntry ); + void SetOutlineFocusL( TBool aFocus ); + TInt GetVerticalFocusPosition(); + void GetCursorLineVerticalPos(TInt& aUpper, TInt& aLower); + void ListObserverSet(); + TBool ExecuteGenericCommandL( TInt aCommand ); + + public: // From CCoeControl + TKeyResponse OfferKeyEventL(const TKeyEvent& aEvent, TEventCode aType); + TInt CountComponentControls() const; + CCoeControl* ComponentControl( TInt aInd ) const; + void SizeChanged(); + TSize MinimumSize(); + void SetContainerWindowL( + const CCoeControl& aContainer ); + + public: // From MEikEdwinSizeObserver + TBool HandleEdwinSizeEventL( CEikEdwin* aEdwin, TEdwinSizeEvent aType, TSize aSize ); + + public: // From MEikEdwinObserver + void HandleEdwinEventL(CEikEdwin* aEdwin,TEdwinEvent aEventType); + + private: + /** + * Constructor. + */ + CESMRDescriptionField(); + + /** + * Second phase constructor. + */ + void ConstructL(); + + /** + * Converts raw URL text to a link in description editor field + * + * @param aEntry Calendar entry from which the description text is received + */ + void StoreLinkL( MESMRCalEntry& aEntry ); + + /** + * Adds link to the beginning of text from editor field + * + * @param abuf initial description text buffer before addition + * + * @return The description text buffer with link added + */ + HBufC* AddLinkToTextL( const TDesC& aBuf ); + + /** + * Gets feature settings + */ + CESMRFeatureSettings& FeaturesL(); + + /** + * Converts location URL to vCal GEO value in calendar entry + */ + void StoreGeoValueL( CCalEntry& aCalEntry, + const TDesC& aLocationUrl ); + + CESMRUrlParserPlugin& UrlParserL(); + + private: + // Not owned. Description editor object. + CESMREditor* iDescription; + // Field size. + TSize iSize; + // Own: Location Url link + CESMRRichTextLink* iLocationLink; + // Own: Feature settings. + CESMRFeatureSettings* iFeatures; + // Field editor line count + TInt iLineCount; + // Own: Background for the editor when it is focused + CAknsBasicBackgroundControlContext* iBgControlContext; + // Field rect for comparison purposes + TRect iFieldRect; + // Own: URL parser plugin + CESMRUrlParserPlugin* iUrlParser; + }; + +#endif // CESMRDESCRIPTIONFIELD_H +