|
1 /* |
|
2 * Copyright (c) 2002-2005 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: drop-down list control |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #ifndef C_SPLITITUTWINDOW_H |
|
20 #define C_SPLITITUTWINDOW_H |
|
21 |
|
22 #include <peninputlayout.h> |
|
23 #include <peninputpluginutils.h> |
|
24 #include <peninputinputcontextfield.h> |
|
25 #include <peninputlayoutmultilineicf.h> |
|
26 #include <peninputlayoutvkb.h> |
|
27 |
|
28 #include "peninputsplititutwindowmanager.h" |
|
29 #include "peninputsplititutpropertysubscriber.h" |
|
30 #include "peninputsplititutlayoutcontext.h" |
|
31 |
|
32 class CSplitItutDataMgr; |
|
33 class CFepCtrlDropdownList; |
|
34 class CAknFepCtrlCommonBgCtrl; |
|
35 class CPeninputSyncBitmapRotator; |
|
36 |
|
37 const TInt KUnavailableID = -1; |
|
38 |
|
39 /** |
|
40 * class CSplitItutWindow. |
|
41 * |
|
42 * Split itu-t window class. |
|
43 * |
|
44 * @lib peninputsplititut.lib |
|
45 * @since S60 v5.0 |
|
46 */ |
|
47 class CSplitItutWindow : public CBase |
|
48 { |
|
49 private: |
|
50 |
|
51 enum TButtonType |
|
52 { |
|
53 ERawKeyButton, |
|
54 ECommonButton, |
|
55 ERepeatButtonEx |
|
56 }; |
|
57 |
|
58 enum TIndicatorAlign |
|
59 { |
|
60 EIndiAlignLeft, |
|
61 EIndiAlignCenter, |
|
62 EIndiAlignRight |
|
63 }; |
|
64 public: |
|
65 /** |
|
66 * Symbian constructor. |
|
67 * |
|
68 * @since S60 5.0 |
|
69 * |
|
70 * @param aWindowMgr |
|
71 * @param aLayoutOwner |
|
72 * @param aDataMgr |
|
73 * @return Pointer to created CSplitItutWindow object |
|
74 */ |
|
75 static CSplitItutWindow* NewL(CSplitItutWindowManager* aWindowMgr, |
|
76 CSplitItutUiLayout* aLayoutOwner, |
|
77 CSplitItutDataMgr* aDataMgr); |
|
78 |
|
79 /** |
|
80 * tandard c++ destructor. |
|
81 * |
|
82 * @since S60 5.0 |
|
83 * @return None |
|
84 */ |
|
85 ~CSplitItutWindow(); |
|
86 |
|
87 |
|
88 /** |
|
89 * Get Icf pointer |
|
90 * |
|
91 * @since S60 v5.0 |
|
92 * @return CFepLayoutMultiLineIcf* |
|
93 */ |
|
94 inline CFepLayoutMultiLineIcf* Icf(); |
|
95 /** |
|
96 * get pen input type |
|
97 * |
|
98 * @since S60 5.0 |
|
99 * @return peninput type |
|
100 */ |
|
101 TInt PenInputType(); |
|
102 |
|
103 /** |
|
104 * set property |
|
105 * |
|
106 * @since S60 5.0 |
|
107 * @param aPropertyName |
|
108 * @param aPropertyValue |
|
109 * @return peninput type |
|
110 */ |
|
111 void SetPropertyL( MItutPropertySubscriber::TItutProperty aPropertyName, |
|
112 const TDesC& aPropertyValue); |
|
113 |
|
114 /** |
|
115 * handle size change |
|
116 * |
|
117 * @since S60 5.0 |
|
118 * @return TInt |
|
119 */ |
|
120 TInt SizeChanged(); |
|
121 |
|
122 /** |
|
123 * get control |
|
124 * |
|
125 * @since S60 5.0 |
|
126 * @param aCtrlId |
|
127 * @return return control pointer |
|
128 */ |
|
129 CFepUiBaseCtrl* Control(const TInt aCtrlId); |
|
130 |
|
131 /** |
|
132 * create chinese spec controls |
|
133 * |
|
134 * @since S60 5.0 |
|
135 * @return None |
|
136 */ |
|
137 void CreateChineseSpecificCtrlsIfNeededL(); |
|
138 |
|
139 /** |
|
140 * get itut keypad |
|
141 * |
|
142 * @since S60 5.0 |
|
143 * @return return itut keypad |
|
144 */ |
|
145 inline CVirtualKeyboard* ItutKeypad(); |
|
146 |
|
147 /** |
|
148 * construct itut keypad |
|
149 * |
|
150 * @since S60 5.0 |
|
151 * @param aResId |
|
152 * @return None |
|
153 */ |
|
154 void ConstructItutKeypadFromResourceL(TInt aResId); |
|
155 |
|
156 /** |
|
157 * construct icf from resource |
|
158 * |
|
159 * @since S60 5.0 |
|
160 * @return None |
|
161 */ |
|
162 void ConstructIcfFromResourceL(); |
|
163 |
|
164 /** |
|
165 * handle skin change |
|
166 * |
|
167 * @since S60 5.0 |
|
168 * @return None |
|
169 */ |
|
170 void OnSkinChange(); |
|
171 |
|
172 /** |
|
173 * apply variant laf data |
|
174 * |
|
175 * @since S60 5.0 |
|
176 * @param aResolutionChange |
|
177 * @return None |
|
178 */ |
|
179 void ApplyVariantLafDataL(TBool aResolutionChange = EFalse); |
|
180 |
|
181 /** |
|
182 * apply spell variant laf data |
|
183 * |
|
184 * @since S60 5.0 |
|
185 * @return None |
|
186 */ |
|
187 void ApplyVariantLafDataForSpellL(); |
|
188 |
|
189 /** |
|
190 * construct spell control |
|
191 * |
|
192 * @since S60 5.0 |
|
193 * @return None |
|
194 */ |
|
195 void ConstructSpellCtrlFromResourceL(); |
|
196 |
|
197 /** |
|
198 * set hard key |
|
199 * |
|
200 * @since S60 5.0 |
|
201 * @param aData |
|
202 * @return None |
|
203 */ |
|
204 void SetHardKeyOneSymbol(TUint8* aData); |
|
205 |
|
206 /** |
|
207 * set hard key |
|
208 * |
|
209 * @since S60 5.0 |
|
210 * @param aData |
|
211 * @return None |
|
212 */ |
|
213 void SetHardKeyOneSymbolL(TUint8* aData); |
|
214 |
|
215 /** |
|
216 * handle button res |
|
217 * |
|
218 * @since S60 5.0 |
|
219 * @param aControlId |
|
220 * @return None |
|
221 */ |
|
222 void HandleButtonResOnLangDirChange( TInt aControlId ); |
|
223 |
|
224 /** |
|
225 * handle button res |
|
226 * |
|
227 * @since S60 5.0 |
|
228 * @param aControlId |
|
229 * @return None |
|
230 */ |
|
231 void HandleButtonResOnLangDirChangeL( TInt aControlId ); |
|
232 |
|
233 /** |
|
234 * Set prompt text |
|
235 * |
|
236 * @since S60 5.0 |
|
237 * @param aData text |
|
238 * @return None |
|
239 */ |
|
240 void SetPromptTextL( TUint8* aData ); |
|
241 |
|
242 /** |
|
243 * Set bubble |
|
244 * |
|
245 * @since S60 5.0 |
|
246 * @return None |
|
247 */ |
|
248 void SetIndiBubble(); |
|
249 |
|
250 /** |
|
251 * Update bubble prompt text |
|
252 * |
|
253 * @since S60 5.0 |
|
254 * @param aData text |
|
255 * @return None |
|
256 */ |
|
257 void UpdateIndiBubbleL( TUint8* aData ); |
|
258 |
|
259 /** |
|
260 * Set bubble image |
|
261 * |
|
262 * @since S60 5.0 |
|
263 * @param aImgID1 image ID1 |
|
264 * @param aMaskID1 mask image id1 |
|
265 * @param aImgID2 image ID2 |
|
266 * @param aMaskID2 mask image id2 |
|
267 * @return None |
|
268 */ |
|
269 void SetIndiBubbleImageL( const TInt aImgID1, |
|
270 const TInt aMaskID1, |
|
271 const TInt aImgID2, |
|
272 const TInt aMaskID2 ); |
|
273 private: |
|
274 /** |
|
275 * C++ constructor |
|
276 * |
|
277 * @since S60 5.0 |
|
278 * @param aWindowMgr |
|
279 * @param aLayoutOwner |
|
280 * @param aDataMgr |
|
281 * @return none |
|
282 */ |
|
283 CSplitItutWindow(CSplitItutWindowManager* aWindowMgr, |
|
284 CSplitItutUiLayout* aLayoutOwner, |
|
285 CSplitItutDataMgr* aDataMgr); |
|
286 |
|
287 /** |
|
288 * Symbian second-phase constructor |
|
289 * |
|
290 * @since S60 5.0 |
|
291 * @return none |
|
292 */ |
|
293 void ConstructL(); |
|
294 |
|
295 /** |
|
296 * create itut keypad |
|
297 * |
|
298 * @since S60 5.0 |
|
299 * @return none |
|
300 */ |
|
301 void CreateItutKeypadL(); |
|
302 |
|
303 /** |
|
304 * create layout icons |
|
305 * |
|
306 * @since S60 5.0 |
|
307 * @param aMajorSkinId |
|
308 * @param aMinorSkinId |
|
309 * @param aBmpFileName |
|
310 * @param aBmpId |
|
311 * @param aMaskBmpId |
|
312 * @param aBmp |
|
313 * @param aMaskBmp |
|
314 * @param aSize |
|
315 * @return none |
|
316 */ |
|
317 void CreateLayoutIconL(TInt aMajorSkinId, |
|
318 TInt aMinorSkinId, |
|
319 const TDesC& aBmpFileName, |
|
320 TInt aBmpId, |
|
321 TInt aMaskBmpId, |
|
322 CFbsBitmap*& aBmp, |
|
323 CFbsBitmap*& aMaskBmp, |
|
324 TSize aSize); |
|
325 |
|
326 |
|
327 /** |
|
328 * create virtual keys |
|
329 * |
|
330 * @since S60 5.0 |
|
331 * @param aReader |
|
332 * @param aKeyRect |
|
333 * @return return virtual key |
|
334 */ |
|
335 CVirtualKey* CreateKeyL(TResourceReader& aReader, |
|
336 TRect aKeyRect); |
|
337 |
|
338 /** |
|
339 * create virtual keys |
|
340 * |
|
341 * @since S60 5.0 |
|
342 * @param aReader |
|
343 * @param aKeyRect |
|
344 * @return None |
|
345 */ |
|
346 void ChangeVirtualKeyInfoL(TResourceReader& aReader, |
|
347 CVirtualKey* aKey); |
|
348 |
|
349 /** |
|
350 * create all buttons |
|
351 * |
|
352 * @since S60 5.0 |
|
353 * @return None |
|
354 */ |
|
355 void CreateAllButtonL(); |
|
356 |
|
357 /** |
|
358 * create back ground control |
|
359 * |
|
360 * @since S60 5.0 |
|
361 * @param aReader |
|
362 * @param aKeyRect |
|
363 * @return None |
|
364 */ |
|
365 void CreateBackGroundControlL(); |
|
366 |
|
367 /** |
|
368 * create dropdown list |
|
369 * |
|
370 * @since S60 5.0 |
|
371 * @param aReader |
|
372 * @param aKeyRect |
|
373 * @return None |
|
374 */ |
|
375 void CreateDropdownListL(); |
|
376 |
|
377 /** |
|
378 * create virtual keys |
|
379 * |
|
380 * @since S60 5.0 |
|
381 * @param aCtrl |
|
382 * @param aRectIdx |
|
383 * @return None |
|
384 */ |
|
385 void SetCtrlRect(CFepUiBaseCtrl* aCtrl, TInt aRectIdx, const TBool aOffset = EFalse); |
|
386 |
|
387 /** |
|
388 * resize candidate list |
|
389 * |
|
390 * @since S60 5.0 |
|
391 * @param aList |
|
392 * @param aLTPosIdx |
|
393 * @param aExpandable |
|
394 * @return None |
|
395 */ |
|
396 void ResizeCandidateList( CFepCtrlDropdownList* aList, |
|
397 TInt aLTPosIdx, |
|
398 TBool aExpandable); |
|
399 |
|
400 /** |
|
401 * Calculate frame rects |
|
402 * |
|
403 * @since S60 5.0 |
|
404 * @param aRect |
|
405 * @param aOuterRect |
|
406 * @param aInnerRect |
|
407 * @return None |
|
408 */ |
|
409 void CalculateFrameRects(const TRect aRect, |
|
410 TRect& aOuterRect, |
|
411 TRect& aInnerRect); |
|
412 |
|
413 /** |
|
414 * create rawkey buttons |
|
415 * |
|
416 * @since S60 5.0 |
|
417 * @param aControlId |
|
418 * @param aCommand |
|
419 * @return raw key button |
|
420 */ |
|
421 CAknFepCtrlCommonButton* CreateRawKeyButtonL( const TInt aControlId, |
|
422 const TInt aCommand); |
|
423 |
|
424 /** |
|
425 * get common button control |
|
426 * |
|
427 * @since S60 5.0 |
|
428 * @param aControlId |
|
429 * @return common button control |
|
430 */ |
|
431 CAknFepCtrlCommonButton* CommonButtonControl(const TInt aControlId); |
|
432 |
|
433 /** |
|
434 * create repeat buttons |
|
435 * |
|
436 * @since S60 5.0 |
|
437 * @param aControlId |
|
438 * @param aCommand |
|
439 * @return repeat button |
|
440 */ |
|
441 CAknFepCtrlCommonButton* CreateRepeatButtonL( const TInt aControlId, |
|
442 const TInt aCommand); |
|
443 |
|
444 /** |
|
445 * create common buttons |
|
446 * |
|
447 * @since S60 5.0 |
|
448 * @param aControlId |
|
449 * @return common button |
|
450 */ |
|
451 CAknFepCtrlCommonButton* CreateCommonButtonL(const TInt aControlId); |
|
452 |
|
453 /** |
|
454 * create buttons |
|
455 * |
|
456 * @since S60 5.0 |
|
457 * @param aType |
|
458 * @param aControlId |
|
459 * @param aRectId |
|
460 * @param aInnerRectId |
|
461 * @param aResourceId |
|
462 * @param aCommand |
|
463 * @return button |
|
464 */ |
|
465 CFepUiBaseCtrl* CreateButtonL(TButtonType aType, |
|
466 const TInt aControlId, |
|
467 const TInt aRectId, |
|
468 const TInt aInnerRectId, |
|
469 const TInt aResourceId, |
|
470 const TInt aCommand = KUnavailableID); |
|
471 |
|
472 /** |
|
473 * Create ICF for spell mode |
|
474 * |
|
475 * @since S60 5.0 |
|
476 * @return None |
|
477 */ |
|
478 void CreateICFL(); |
|
479 |
|
480 /** |
|
481 * Check control size change |
|
482 * |
|
483 * @since S60 5.0 |
|
484 * @param aRect |
|
485 * @param aControlId |
|
486 * @param aInnerRect |
|
487 * @param aIsReloadImages |
|
488 * @return TBool |
|
489 */ |
|
490 TBool ControlSizeChanged(const TInt aControlId, |
|
491 const TInt aRect, |
|
492 const TInt aInnerRect, |
|
493 TBool aIsReloadImages); |
|
494 |
|
495 /** |
|
496 * add control |
|
497 * |
|
498 * @since S60 5.0 |
|
499 * @param aControl |
|
500 * @return None |
|
501 */ |
|
502 void AddControlL(CFepUiBaseCtrl* aControl); |
|
503 |
|
504 /** |
|
505 * is chinese mode |
|
506 * |
|
507 * @since S60 5.0 |
|
508 * @return TBool |
|
509 */ |
|
510 TBool IsChineseMode(); |
|
511 |
|
512 /** |
|
513 * construct key image |
|
514 * |
|
515 * @since S60 5.0 |
|
516 * @param aKeyImageResID |
|
517 * @return None |
|
518 */ |
|
519 void ConstructKeyImageFromResourceL( TInt aKeyImageResID ); |
|
520 |
|
521 /** |
|
522 * construct key image |
|
523 * |
|
524 * @since S60 5.0 |
|
525 * @param aKey |
|
526 * @param aMapData |
|
527 * @return None |
|
528 */ |
|
529 void SetUnicodesForHardKey1(CVirtualKey* aKey, const TDesC& aMapData); |
|
530 |
|
531 /** |
|
532 * construct key image |
|
533 * |
|
534 * @since S60 5.0 |
|
535 * @param aKeyImageResID |
|
536 * @return None |
|
537 */ |
|
538 void SetUnicodesForHardKey1L(CVirtualKey* aKey, const TDesC& aMapData); |
|
539 |
|
540 /** |
|
541 * Indicator rect |
|
542 * |
|
543 * @since S60 5.0 |
|
544 * @param aBoundRect |
|
545 * @param aRealRect1 |
|
546 * @param aRealRect2 |
|
547 * @param aAlign |
|
548 * @return None |
|
549 */ |
|
550 void CalIndicatorRect( const TRect& aBoundRect, |
|
551 TRect& aRealRect1, |
|
552 TRect& aRealRect2, |
|
553 TIndicatorAlign aAlign ); |
|
554 private: |
|
555 /** |
|
556 * ITUT keypad. |
|
557 * own |
|
558 */ |
|
559 CVirtualKeyboard* iStandardItutKp; |
|
560 |
|
561 /** |
|
562 * spell candidate list. |
|
563 * own |
|
564 */ |
|
565 CFepCtrlDropdownList* iSpellCandsList; |
|
566 |
|
567 /** |
|
568 * candidate list. |
|
569 * own |
|
570 */ |
|
571 CFepCtrlDropdownList* iCandsList; |
|
572 |
|
573 /** |
|
574 * Punc candidate list. |
|
575 * own |
|
576 */ |
|
577 CFepCtrlDropdownList* iPuncCandsList; |
|
578 |
|
579 /** |
|
580 * data manager. |
|
581 * not own |
|
582 */ |
|
583 CSplitItutDataMgr* iDataMgr; |
|
584 |
|
585 /** |
|
586 * init chinese control flag. |
|
587 */ |
|
588 TBool iChnCtrlInited; |
|
589 |
|
590 /** |
|
591 * layout owner. |
|
592 * not own |
|
593 */ |
|
594 CSplitItutUiLayout* iLayoutOwner; |
|
595 |
|
596 /** |
|
597 * window manager |
|
598 * not own |
|
599 */ |
|
600 CSplitItutWindowManager* iWindowMgr; |
|
601 |
|
602 /** |
|
603 * Background control |
|
604 * Own |
|
605 */ |
|
606 CAknFepCtrlCommonBgCtrl* iBackgroundCtrl; |
|
607 |
|
608 /** |
|
609 * Spell candidate list |
|
610 * Own |
|
611 */ |
|
612 CFepInputContextField* iSpell; |
|
613 |
|
614 /** |
|
615 * bitmap rotator |
|
616 * Own |
|
617 */ |
|
618 CPeninputSyncBitmapRotator* iBmpRotator; |
|
619 |
|
620 /** |
|
621 * symbol data for chinese |
|
622 */ |
|
623 TFepSymbolOfHardwareOne iSymbolData; |
|
624 |
|
625 TSize iIndicatorSize; |
|
626 TSize iIndicatorTextSize; |
|
627 TBool iImDimensionSet; |
|
628 CFepLayoutMultiLineIcf* iICF; |
|
629 }; |
|
630 |
|
631 // --------------------------------------------------------------------------- |
|
632 // CSplitItutWindow::ItutKeypad |
|
633 // --------------------------------------------------------------------------- |
|
634 // |
|
635 inline CVirtualKeyboard* CSplitItutWindow::ItutKeypad() |
|
636 { |
|
637 return iStandardItutKp; |
|
638 } |
|
639 |
|
640 // --------------------------------------------------------------------------- |
|
641 // CSplitItutWindow::Icf |
|
642 // --------------------------------------------------------------------------- |
|
643 // |
|
644 inline CFepLayoutMultiLineIcf* CSplitItutWindow::Icf() |
|
645 { |
|
646 return iICF; |
|
647 } |
|
648 #endif //C_SPLITITUTWINDOW_H |