classicui_plat/misc_controls_api/inc/EIKCAPC.H
changeset 49 31c16e0c5e3e
equal deleted inserted replaced
40:7165f928e888 49:31c16e0c5e3e
       
     1 /*
       
     2 * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #if !defined(__EIKCAPC_H__)
       
    20 #define __EIKCAPC_H__
       
    21 
       
    22 #if !defined(__COECNTRL_H__)
       
    23 #include <coecntrl.h>
       
    24 #endif
       
    25 
       
    26 #if !defined(__FEPBASE_H__)
       
    27 #include <fepbase.h>
       
    28 #endif
       
    29 
       
    30 #if !defined(__EIKLABEL_H__)
       
    31 #include <eiklabel.h>
       
    32 #endif
       
    33 
       
    34 #include <eikdialg.h>
       
    35 #include <eikdpage.h>
       
    36 
       
    37 #include <AknControl.h>
       
    38 #include <aknsconstants.h>
       
    39 
       
    40 class CEikImage ;
       
    41 class CEikDialogPage;
       
    42 // Forward declaration of types used in layout routines.
       
    43 class CAknPopupField;
       
    44 class CAknSlider;
       
    45 class CEikEdwin;
       
    46 class CEikMfne; 
       
    47 class CEikSecretEditor;
       
    48 class CEikCapCLabel ;
       
    49 class CEikCapCExtension;
       
    50 class MPointerEventObserver;
       
    51 class MAknsControlContext;
       
    52 
       
    53 /** CaptionedControl
       
    54  *
       
    55  * CaptionedControl is part of the dialogs. All dialogs and forms use captionedcontrol
       
    56  * as a control for one DLG_LINE. Each DLG_LINE has one captionedcontrol in it.
       
    57  * 
       
    58  * Rectangle of the captionedcontrol is single form field / form line or DLG_LINE's
       
    59  * rectangle dependent on the dialog type.
       
    60  */
       
    61 class CEikCaptionedControl : public CAknControl, public MCoeCaptionRetrieverForFep, public MCoeControlObserver
       
    62     {
       
    63     friend class CEikCapCExtension;
       
    64 public:
       
    65     enum TSpaceSharingFlags
       
    66         {
       
    67         EIfTooSmallCtlGetsWidthLast         =0x0,
       
    68         EIfTooSmallCtlGetsWidthFirst        =0x1,
       
    69         EIfTooSmallCtlGetsEqualShareOfWidth =0x2,
       
    70         EIfTooBigCtlStaysMinHeight          =0x4,
       
    71         EIfTooBigCtlStaysMinWidth           =0x8,
       
    72         EIfTooBigCtlStaysMinSize            =0xc,
       
    73         EIfTooSmallDontStrech               =0x10
       
    74         };
       
    75     enum TCaptionExpandingState
       
    76         {
       
    77         EInitial = 0,
       
    78         EExtended =1,
       
    79         ERetracted =2
       
    80         };
       
    81 
       
    82 public:
       
    83  	/** Constructor
       
    84  	 */	
       
    85     IMPORT_C CEikCaptionedControl();
       
    86     /** Destructor
       
    87      */
       
    88     IMPORT_C ~CEikCaptionedControl();
       
    89 public: // new functions
       
    90 	/** SetUsesEars() sets a flag Uses Ears.
       
    91 	 */
       
    92     IMPORT_C void SetUsesEars();
       
    93     /** SetSpaceSharingFlags() sets flags for space sharing
       
    94      */
       
    95     IMPORT_C void SetSpaceSharingFlags(TInt aFlags);
       
    96     /** SetExtraAscent() modifies layout to include extra ascent for fonts
       
    97      */
       
    98     IMPORT_C void SetExtraAscent();
       
    99     /** SetCaptionL() Sets label of the DLG_LINE
       
   100      * @param aText Descriptor
       
   101      */
       
   102     IMPORT_C void SetCaptionL(const TDesC& aText);
       
   103     /** SetTrailerL() Sets trailer
       
   104      * Should not be used
       
   105      * @param aText Descriptor
       
   106      */
       
   107     IMPORT_C void SetTrailerL(const TDesC& aText);
       
   108 	/** Sets the captionedcontrol to be currently focused or not
       
   109      * @param aSelected whether captionedcontrol is focused
       
   110 	 */
       
   111     IMPORT_C void SetCurrent(TBool aSelected);
       
   112 	/** Updates captionedcontrol's dimmed state
       
   113 	 */
       
   114     IMPORT_C void CheckDimmedDisplayState();
       
   115 	/** Sets minimumsizes to zero
       
   116 	 */
       
   117     IMPORT_C void ResetMinimumSizes();
       
   118 	/** Whether captionedcontrol is latent
       
   119 	 *
       
   120 	 * @return true if is latent
       
   121 	 */
       
   122     IMPORT_C TBool IsLatent() const;
       
   123 	/** Sets captionedcontrol latent status
       
   124 	 */
       
   125     IMPORT_C void SetLatent(TBool aLatent);
       
   126 	/** Whether captionedcontrol has latent group following it
       
   127      * @returns true if has latent group following
       
   128 	 */
       
   129     IMPORT_C TBool LatentGroupLineFollows() const;
       
   130 	/** Sets latent group following flag
       
   131      * @param aLglf true if latent group following
       
   132 	 */
       
   133     IMPORT_C void SetLatentGroupLineFollows(TBool aLglf);
       
   134 	/** Whether there is a divider after the captionedcontrol
       
   135 	 */
       
   136     IMPORT_C TBool DividerAfter() const;
       
   137     /** Sets divider after the captionedcontrol
       
   138      */
       
   139     IMPORT_C void SetDividerAfter(TBool aDividerAfter);
       
   140     /** Whether captionedcontrol consumes enter key
       
   141      */
       
   142     IMPORT_C TBool TakesEnterKey() const;
       
   143     /** Sets captionedcontrol to take enter key
       
   144      * @param aTakesEnter true if takes enter key, false if not
       
   145      */
       
   146     IMPORT_C void SetTakesEnterKey(TBool aTakesEnter);
       
   147     /** Whether offers hot keys
       
   148      * @return boolean true if offers hotkeys
       
   149      */
       
   150     IMPORT_C TBool OfferHotKeys() const;
       
   151     /** Sets captionedcontrol to offer hotkeys
       
   152      */
       
   153     IMPORT_C void SetOfferHotKeys(TBool aOffer);
       
   154     
       
   155 
       
   156     /**
       
   157      * From MCoeControlObserver:
       
   158      * Acts upon changes in the hosted control's state. 
       
   159      * 
       
   160      * This class's implementation handles events from MFNE editor editing
       
   161      * buttons in touch enabled builds
       
   162      *
       
   163      * @param	aControl	The control changing its state (not used)
       
   164      * @param	aEventType	The type of control event 
       
   165      */
       
   166 	IMPORT_C virtual void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
       
   167 	
       
   168 public:
       
   169     TInt MaximumNumberOfControlLinesOnVisiblePage() const;
       
   170 	TInt NumberOfLines() const;
       
   171 	TInt NumberOfLinesForScrollBar() const;
       
   172 public:
       
   173     TBool ControlIsAnEdwin(TInt aControlType) const;
       
   174     TBool ControlIsAMfne(TInt aControlType) const;
       
   175     TBool ControlIsAPopfield(TInt aControlType) const;
       
   176     TBool ControlIsASecretEditor(TInt aControlType) const;
       
   177     TBool ControlIsASlider(TInt aControlType) const;
       
   178     TBool ControlIsAColourSelGrid(TInt aControlType) const;
       
   179 	TInt ControlType() const;
       
   180 
       
   181 public: // from CCoeControl
       
   182     /** MinimumSize() returns minimum size of the control
       
   183      */
       
   184     IMPORT_C TSize MinimumSize();
       
   185     /** ConstructFromResourceL() constructs the captionedcontrol from DLG_LINE resource
       
   186      *
       
   187      * usually called with the following code:
       
   188      * TResourceReader reader;
       
   189      * iCoeEnv->CreateResourceReaderLC(reader, resId);
       
   190      * control->ConstructFromResourceL(reader);
       
   191      * CleanupStack::PopAndDestroy();
       
   192      */
       
   193     IMPORT_C void ConstructFromResourceL(TResourceReader& aReader);
       
   194     /** OfferKeyEventL() handles key events
       
   195      */
       
   196     IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
       
   197     /** GetColorUseListL() gets color use list
       
   198      */
       
   199     IMPORT_C virtual void GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const; // not available before Release 005u
       
   200     /** HandleResourceChange handles several kinds of resource change event
       
   201      */
       
   202     IMPORT_C virtual void HandleResourceChange(TInt aType);         // not available before Release 005u
       
   203     /** Provides ability to get input capabilities needed for fep
       
   204      */
       
   205     IMPORT_C TCoeInputCapabilities InputCapabilities() const;
       
   206     /** SetDimmed sets captionedcontrol to dimmed state
       
   207      */
       
   208     IMPORT_C void SetDimmed(TBool aDimmed);
       
   209     /** HandlePointerEventL handles touch pointer events
       
   210      */
       
   211     IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
       
   212 public:
       
   213     void RegisterPageWithCaptionControl(CEikDialogPage* aPage);
       
   214 
       
   215 public: // internal layout properties
       
   216 	//void SetProperties(const TRegion &aRegion, const RArray<TCapCProperty> &aProperties);
       
   217 	//TRect Line(TInt aLineIndex); // text line rectangles
       
   218 	//TInt LineIndex(TPoint aPoint);
       
   219 	//TPoint LineControlPoint(TInt aLineIndex);
       
   220 	//RArray<TInt> LineIndexesIntersecting(TRect aRect);
       
   221 	//void SetProperty(TInt aLine, TCapCProperty &aProperty);
       
   222 	//void ClearProperty(TInt aLine, TCapCProperty &aProperty);
       
   223 	//TCapCProperty Properties(TInt aLine);
       
   224 	//void LineRegions(TRegion &aRegion);
       
   225 	//void SetVisibleArea(TRect aRect);
       
   226 	//void RemoveVisibleArea();
       
   227 private: // from CCoeControl
       
   228     IMPORT_C TInt CountComponentControls() const;
       
   229     IMPORT_C CCoeControl* ComponentControl(TInt aIndex) const;
       
   230     IMPORT_C void SizeChanged();
       
   231     IMPORT_C void FocusChanged(TDrawNow aDrawNow);
       
   232 protected: // from CCoeControl
       
   233     IMPORT_C void Draw(const TRect& aRect) const;
       
   234     IMPORT_C void WriteInternalStateL(RWriteStream& aWriteStream) const;
       
   235 private: // from CCoeControl
       
   236     IMPORT_C void Reserved_2();
       
   237     // from MCoeCaptionRetrieverForFep
       
   238     IMPORT_C virtual void GetCaptionForFep(TDes& aCaption) const;
       
   239     IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_1();
       
   240     IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_2();
       
   241 private:
       
   242     /**
       
   243     * From CAknControl
       
   244     */
       
   245     IMPORT_C void* ExtensionInterface( TUid aInterface );
       
   246 
       
   247 protected: // from MObjectProvider
       
   248     IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
       
   249 
       
   250 public:
       
   251     /** SetToolTipTextL() sets tooltip text
       
   252      * @param aText descriptor for tooltip text
       
   253      */
       
   254       
       
   255     IMPORT_C void SetToolTipTextL( const TDesC& aText ) ;
       
   256     /** Ability to query tooltip text string
       
   257      */
       
   258     IMPORT_C const TDesC* ToolTipText() const ;
       
   259     /** SetBitmapFromFileL() sets icon contents for the captionedcontrol
       
   260      */
       
   261     IMPORT_C void SetBitmapFromFileL( const TDesC& aFilename,TInt aMainId,TInt aMaskId =-1 ) ;
       
   262     /** SetEditable sets captionedcontrol to editable state
       
   263      */
       
   264     IMPORT_C void SetEditableL( TBool aEditable, TBool aShowEmptyFields = ETrue ) ;
       
   265     
       
   266     IMPORT_C void SetFormFlags( TInt aFlags ) ;
       
   267     void GetAknLayoutValuesL() ;  // Visible within DLL only.
       
   268     TBool HasSeparator() const;
       
   269     /** GetFullCaptionText() gets caption descriptor
       
   270      *
       
   271      */
       
   272     IMPORT_C const TPtrC GetFullCaptionText() const;
       
   273     TBool   IsDisplayable() const;
       
   274     /** 
       
   275      * Allows clients of CEikCaptionedControl to turn off drawing 
       
   276      * of white background of captionedcontrol.
       
   277      *
       
   278      * @since 2.1
       
   279      */
       
   280     IMPORT_C void SetDrawNoWhiteBackground(TBool aEnabled); // for list queries with find.
       
   281 
       
   282     /**
       
   283     * In case of an editor control residing in a form,
       
   284     * sets up a pictograph animation callback to redraw the form highlight
       
   285     * control when pictograph animations are updated.
       
   286     */
       
   287     void SetPictographCallBack();
       
   288     
       
   289     /**
       
   290     * Sets icon and sets its size.
       
   291     * @param aBitmap a bitmap which has already been loaded. Must not be NULL.
       
   292     * @param aMask a mask bitmap which has already been loaded. Can be NULL.
       
   293     * Takes ownership of the bitmap objects.
       
   294     * @since 2.8
       
   295     */
       
   296     IMPORT_C void SetIconL( CFbsBitmap* aBitmap, CFbsBitmap* aMask ); 
       
   297 
       
   298     /**
       
   299      * Sets one of the two small indicator icons
       
   300      * @param aIcon a index 0 or 1 depending on which icon to set
       
   301      * @param aBitmap a bitmap pointer or NULL
       
   302      * @param aMask a mask pointer or NULL
       
   303      */
       
   304 	IMPORT_C void SetIndicatorIconL( TInt aIcon, CFbsBitmap *aBitmap, CFbsBitmap *aMask );
       
   305 
       
   306     /** SetPointerEventObserver
       
   307      * Low level observer for touch related pointer events.
       
   308      * This can be used to receive low level pointer events.
       
   309      */
       
   310 	IMPORT_C void SetPointerEventObserver(MPointerEventObserver *aObserver);
       
   311 	MPointerEventObserver *PointerEventObserver() const;
       
   312 	
       
   313     /** Sets the captionedcontrol to be currently focused or not.
       
   314      * @param aSelected whether captionedcontrol is focused
       
   315      * @param aRedraw whether redraw is needed or not
       
   316      */    
       
   317     void SetCurrent(TBool aSelected, TBool aRedraw );
       
   318     
       
   319 protected:
       
   320     TRect ViewRect() const;
       
   321     TRect EditRect() const;
       
   322 
       
   323 private:
       
   324     enum TWhichEars
       
   325         {
       
   326         ENoEar=0x00,
       
   327         ELeftEar=0x01,
       
   328         ERightEar=0x02,
       
   329         EBothEars=0x03
       
   330         };
       
   331 private: // new functions
       
   332     TInt WidthForEars(TInt aWidthRemaining) const;
       
   333     void DrawEarsNow(TWhichEars aEar) const;
       
   334     void DrawEars(TWhichEars aEar) const;
       
   335     void DrawSingleEar(TWhichEars aEar,TBool aPressed) const;
       
   336     TRect EarRect(TWhichEars aEar) const;
       
   337     void FireEarL(TWhichEars aEar,TInt aEarRepeat);
       
   338     TInt SquashComponentWidth(TInt& aTotalWidth,const TInt aComponentWidthHint);
       
   339     void StretchComponents();
       
   340     void SetVertEdgeSpacing( TInt aVertEdgeSpacing );
       
   341     void SetHorzEdgeSpacing( TInt aHorzEdgeSpacing );
       
   342     void SquashComponents();
       
   343     void CalculateNumberOfLinesForControl( TInt aLines ) ;
       
   344     void SizeDialogComponents() ;
       
   345     void PositionDialogComponents() ;
       
   346     static TInt PictographAnimationCallBack( TAny* aPtr );
       
   347     /**
       
   348     * Sets a size for a bitmap that has already been loaded.
       
   349     * @since 2.8
       
   350     */    
       
   351     void SetIconSizeL(CFbsBitmap* aBitmap);
       
   352     /**
       
   353     * Gets control context for the given control
       
   354     * @param aDialog a dialog to get context for
       
   355     * If aDialog provided does not exist, TODO
       
   356     */
       
   357     MAknsControlContext* GetDialogControlContext(const CCoeControl* aDialog) const;
       
   358 
       
   359     /**
       
   360      * Searches recursively for control's parents until it finds a window owning control
       
   361      */
       
   362     const CCoeControl* WindowOwningParent() const;
       
   363 
       
   364 public:
       
   365     /**
       
   366      * Positions form components in accordance with dialog page flags. 
       
   367      * If the dialog instance is not registered, them flags set with SetFormFlags() are used. 
       
   368      */	
       
   369     void PositionFormComponents();
       
   370     void ScrollBackEditor();
       
   371     
       
   372 public:
       
   373     void DrawClosingLine() const;
       
   374 	const CEikDialogPage* DialogPage() const { return iDialogPage; }
       
   375 	void SetPartiallyVisible( TBool aPVisible );
       
   376     TBool PressedDownState() const;
       
   377 	void SetPressedDownState( TBool aPressed );
       
   378 private:
       
   379     TSize EditorControlSize() const ;
       
   380     void SetElementBrushColorsL( TRgb aColor ) ;
       
   381     void SetElementTextColorsL( TRgb aColor ) ;
       
   382 
       
   383     TBool ShowBitmap() const;
       
   384     void  LayoutBitmap(const TRect& aRect);
       
   385     void  LayoutCaption(const TRect& aRect);
       
   386     void DoFormCaptionSettingsL(const TDesC& aText);
       
   387 private:
       
   388     static void FormLayoutControlBitmap(CEikImage* aBitmap, const TRect& aParent, TBool aIsEditable, TBool aSingleLayout, TInt aNumberOfLines);
       
   389     void FormLayoutControlEdwin(CEikEdwin* aEdwin, const TRect& aParent, TBool aIsEditable, TBool aSingleLayout, TInt aNumberOfLines, TBool aBitmapPresent, TBool aIsFocused);
       
   390     void FormLayoutControlLabel(CEikLabel* aSlider, const TRect& aParent, TBool aIsEditable, TBool aSingleLayout, TInt aNumberOfLines, TBool aLayoutWithBitmap, TBool aIsFocused, TInt aIconCount);
       
   391     void FormLayoutControlMfne(CEikMfne* aMfne,  const TRect& aParent, TBool aIsEditable, TBool aSingleLayout, TInt aNumberOfLines, TBool aBitmapPresent, TBool aIsFocused );
       
   392     void FormLayoutControlPopfield(CAknPopupField* aPopfield, const TRect& aParent, TBool aIsEditable, TBool aSingleLayout, TInt aNumberOfLines, TBool aBitmapPresent, TBool aIsFocused);
       
   393     void FormLayoutControlSecretEditor(CEikSecretEditor* aSecretEd, const TRect& aParent, TBool aIsEditable, TBool aSingleLayout, TInt aNumberOfLines, TBool aBitmapPresent, TBool aIsFocused );
       
   394     static void FormLayoutControlSlider(CAknSlider* aSlider, const TRect& aParent, TBool aIsEditable, TBool aSingleLayout, TInt aNumberOfLines, TBool aBitmapPresent);
       
   395     static void ConvertViewRectToEditRect(TRect& aRect);
       
   396     static void ConvertEditRectToViewRect(TRect& aRect);
       
   397 
       
   398     /*	
       
   399     *
       
   400     * Access method for use in a CAknForm context. 
       
   401     *
       
   402     * @return   Enumeration for layout for the CAknForm
       
   403     *           Layout value is received from owning CEikDialogPage, if it is not defined then EEikFormUseDoubleSpacedFormat flag is checked.
       
   404     *           Default value is CEikDialogPage::ESingle
       
   405     */
       
   406     CEikDialogPage::TFormLayoutSelection FormLayout() const;
       
   407 
       
   408     /**
       
   409     * Draws the separator between (at the top of current ) caption control(s)
       
   410     *
       
   411     * @param    gc  Current graphics contect
       
   412     */
       
   413     void DrawFormSeparator( CWindowGc& gc ) const;
       
   414 
       
   415     /**
       
   416     * Constructs the extension object.
       
   417     * There is no base constructL, so it is necessary to call this in several places
       
   418     */
       
   419     void ConstructExtensionL() ;
       
   420 
       
   421     void DrawAsSkinnedForm( CWindowGc& aGc, const TRect& aRect ) const;
       
   422     void LayoutSkinControlContexts();
       
   423     TBool DrawingSkins() const;
       
   424     void DrawAsForm( const TRect& aRect ) const;
       
   425     void DrawAsEikonDialog( const TRect& aRect ) const;
       
   426     void DrawAsFormInEditMode( const TRect& aRect ) const;
       
   427     void DrawAsFormInViewMode( const TRect& aRect ) const;
       
   428     void DrawAsFormUnFocusedLine( const TRect& aRect ) const;
       
   429     
       
   430     /**
       
   431      * Returns correct text color index.
       
   432      *
       
   433      * @since S60 5.2
       
   434      * @return Text color index.
       
   435      */
       
   436     TAknsQsnTextColorsIndex TextColorIndex() const;
       
   437 
       
   438 public:
       
   439     CCoeControl* iControl;
       
   440     CEikCapCLabel* iCaption;
       
   441     HBufC* iCaptionText;
       
   442 
       
   443     CEikLabel* iTrailer;
       
   444     TInt iId;
       
   445     TInt iControlType;
       
   446     TAny* iReturnValue;
       
   447     TBool iIsFormControl ;
       
   448     CEikImage* iBitmap ;
       
   449     TBool iIsEditable ;
       
   450 
       
   451 private:
       
   452     TBool iHasAppendedEditIndicator;
       
   453     TSize iMinSize;
       
   454     TInt  iCapCFlags;
       
   455     TInt  iCaptionWidth;
       
   456     TInt  iFullWidth;
       
   457     TSize iNormalSize ;
       
   458     HBufC*iToolTipText ;
       
   459     TBool iDoNotDisplay ;
       
   460 
       
   461     TInt iVertEdgeSpacing ;
       
   462     TInt iHorzEdgeSpacing ;
       
   463     TInt iOriginalHeight ;
       
   464 
       
   465     TSize iEditorControlSize ;
       
   466     TInt iNumberOfLines ;
       
   467 
       
   468     friend class CEikCapCArray;
       
   469 
       
   470     enum { ENotSupplied = -1 } ;
       
   471     TInt iFlags ;
       
   472 
       
   473     TBool iRefresh ;
       
   474 
       
   475     TInt iCaptionFontId ;
       
   476     TInt iEditorFontId ;
       
   477     TInt iVerticalLineXPosition; //iAknTopSpacing ;         
       
   478     CCoeControl* iHighlightControl;
       
   479     CEikCapCExtension* iExtension ;  // BC extension for additional Data members.
       
   480     TInt iAknFormControlHeight ;
       
   481     TInt iAknFormControlWidth ;
       
   482     TInt iPenColor ;
       
   483     TInt iShadowColor ;
       
   484     TBool iIsCurrentLine;
       
   485     CEikDialogPage* iDialogPage;
       
   486 
       
   487 
       
   488     };
       
   489 
       
   490 
       
   491 /*
       
   492  * Special Label Class which appends colon to label text
       
   493  */
       
   494 
       
   495 NONSHARABLE_CLASS(CEikCapCLabel) : public CEikLabel
       
   496     {
       
   497 public :
       
   498     CEikCapCLabel() ;
       
   499     ~CEikCapCLabel() ;
       
   500 
       
   501     TBool ColonEnabled() const ;
       
   502     void EnableColon( TBool aEnable ) ;
       
   503 
       
   504 protected :
       
   505     void Draw(const TRect& aRect) const ;
       
   506     void DrawL(const TRect& aRect) ;
       
   507 
       
   508 private:
       
   509     TBool iIsColonEnabled ;
       
   510     } ;
       
   511 
       
   512 class MPointerEventObserver
       
   513 	{
       
   514 public:
       
   515 	virtual bool PointerEvent(CEikCaptionedControl *aControl, const TPointerEvent& aPointerEvent)=0;
       
   516 	};
       
   517 
       
   518 #endif