|
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 |