|
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: peninput VKB data manager |
|
15 * |
|
16 */ |
|
17 |
|
18 #include <AknDef.h> |
|
19 #include <AknFepGlobalEnums.h> |
|
20 #include <aknfeppeninputenums.h> |
|
21 #include <PeninputCommonLayoutGlobalEnum.h> |
|
22 #include <PeninputUiStateMgr.h> |
|
23 #include <PeninputLayoutBubbleCtrl.h> |
|
24 #include <PeninputLayoutMultilineIcf.h> |
|
25 #include <PtiEngine.h> |
|
26 |
|
27 #include "PeninputVkbKrDbg.h" |
|
28 #include "PeninputVkbKrLayout.h" |
|
29 #include "PeninputVkbKrWindow.h" |
|
30 #include "PeninputVkbKrDataMgr.h" |
|
31 |
|
32 #include "PeninputVkbKrUiStateType.h" |
|
33 #include "PeninputVkbKrUiStateNone.h" |
|
34 #include "PeninputVkbKrUiStateStandby.h" |
|
35 |
|
36 /* Teleca change begin, 21.05.2009 ssal */ |
|
37 const TInt KPeriodicTimerIntervalSec(2500000); |
|
38 /* Teleca change end, 21.05.2009 ssal */ |
|
39 // --------------------------------------------------------------------------- |
|
40 // Constructors & Destructors |
|
41 // --------------------------------------------------------------------------- |
|
42 // |
|
43 |
|
44 CPeninputVkbKrLayout* CPeninputVkbKrLayout::NewL( |
|
45 MLayoutOwner* aLayoutOwner, |
|
46 const TAny* aInitData, |
|
47 const TInt& aInputMode) |
|
48 { |
|
49 CPeninputVkbKrLayout* self = |
|
50 new (ELeave) CPeninputVkbKrLayout(aLayoutOwner,aInputMode); |
|
51 CleanupStack::PushL(self); |
|
52 self->ConstructL(aInitData); |
|
53 CleanupStack::Pop(self); |
|
54 return self; |
|
55 } |
|
56 |
|
57 CPeninputVkbKrLayout::CPeninputVkbKrLayout( |
|
58 MLayoutOwner* aLayoutOwner, |
|
59 const TInt& aInputMode) |
|
60 : CPeninputCommonLayoutExt(aLayoutOwner), |
|
61 iInputMode(aInputMode), |
|
62 iInEditWordQueryDlg(EFalse) |
|
63 { |
|
64 } |
|
65 |
|
66 void CPeninputVkbKrLayout::ConstructL(const TAny* aInitData) |
|
67 { |
|
68 LOG(""); |
|
69 LOG("Vkb.Layout.ConstructL=================================="); |
|
70 |
|
71 iPtiEngine=CPtiEngine::NewL(); |
|
72 #ifdef RD_INTELLIGENT_TEXT_INPUT |
|
73 iPtiEngine->ActivateLanguageL(ELangKorean,EPtiEngineQwertyKorean); |
|
74 #else |
|
75 iPtiEngine->ActivateLanguageL(ELangKorean,EPtiEngineQwerty); |
|
76 #endif //RD_INTELLIGENT_TEXT_INPUT |
|
77 |
|
78 CPeninputCommonLayoutExt::ConstructL(aInitData); |
|
79 CPeninputVkbKrUiStateNone* stateNone= |
|
80 CPeninputVkbKrUiStateNone::NewL(UiStateMgr(),this,*iPtiEngine); |
|
81 UiStateMgr()->AddUiState(stateNone,EPeninputVkbKrUiStateNone); |
|
82 CPeninputVkbKrUiStateStandby* stateStandby= |
|
83 CPeninputVkbKrUiStateStandby::NewL(UiStateMgr(),this,*iPtiEngine); |
|
84 UiStateMgr()->AddUiState(stateStandby,EPeninputVkbKrUiStateStandby); |
|
85 UiStateMgr()->SetCurrentUiState(EPeninputVkbKrUiStateNone); |
|
86 |
|
87 /* Teleca change begin, 21.05.2009 ssal */ |
|
88 iInfoTimer = CPeriodic::NewL(CActive::EPriorityStandard); |
|
89 /* Teleca change end, 21.05.2009 ssal */ |
|
90 } |
|
91 |
|
92 CPeninputVkbKrLayout::~CPeninputVkbKrLayout() |
|
93 { |
|
94 delete iPtiEngine; |
|
95 |
|
96 /* Teleca change begin, 21.05.2009 ssal */ |
|
97 if (iInfoTimer) |
|
98 { |
|
99 iInfoTimer->Cancel(); |
|
100 } |
|
101 delete iInfoTimer; |
|
102 /* Teleca change end, 21.05.2009 ssal */ |
|
103 } |
|
104 |
|
105 // --------------------------------------------------------------------------- |
|
106 // from CFepUiLayout |
|
107 // --------------------------------------------------------------------------- |
|
108 // |
|
109 |
|
110 TBool CPeninputVkbKrLayout::HandleEventL( |
|
111 TEventType aType, |
|
112 const TAny* aData) |
|
113 { |
|
114 LOG1("Vkb.Layout.HandleEventL %d",aType); |
|
115 return CPeninputCommonLayoutExt::HandleEventL(aType,aData); |
|
116 } |
|
117 |
|
118 TInt CPeninputVkbKrLayout::HandleCommand(TInt aCmd, TUint8* aData) |
|
119 { |
|
120 CPeninputVkbKrWindow* vkbWindow = |
|
121 static_cast<CPeninputVkbKrWindow*>(iLayoutWindow); |
|
122 switch ( aCmd ) |
|
123 { |
|
124 case ECmdPenInputRange: |
|
125 vkbWindow->PreProcessRange(*aData); |
|
126 break; |
|
127 default: |
|
128 break; |
|
129 } |
|
130 |
|
131 TInt ret(CPeninputCommonLayoutExt::HandleCommand(aCmd,aData)); |
|
132 switch ( aCmd ) |
|
133 { |
|
134 case ECmdPenInputPermittedRange: |
|
135 LOG("Vkb.Layout.HandleCommand ECmdPenInputPermittedRange"); |
|
136 break; |
|
137 case ECmdPenInputEditorNumericKeyMap: |
|
138 LOG("Vkb.Layout.HandleCommand ECmdPenInputEditorNumericKeyMap"); |
|
139 break; |
|
140 case ECmdPenInputCase: |
|
141 LOG("Vkb.Layout.HandleCommand ECmdPenInputCase"); |
|
142 break; |
|
143 case ECmdPenInputLanguage: |
|
144 LOG("Vkb.Layout.HandleCommand ECmdPenInputLanguage"); |
|
145 UiStateMgr()->CurrentUiState()->HandleControlEvent(EPeninputLayoutEventOpen,KNullDesC); |
|
146 break; |
|
147 case ECmdPenInputEditorState: |
|
148 LOG("Vkb.Layout.HandleCommand ECmdPenInputEditorState"); |
|
149 break; |
|
150 case ECmdPenInputSetWindowPos: |
|
151 LOG("Vkb.Layout.HandleCommand ECmdPenInputSetWindowPos"); |
|
152 break; |
|
153 case ECmdPenInputWindowOpen: |
|
154 LOG("Vkb.Layout.HandleCommand ECmdPenInputWindowOpen"); |
|
155 UiStateMgr()->SetCurrentUiState(EPeninputVkbKrUiStateStandby); |
|
156 UpdateArea(vkbWindow,vkbWindow->Rect(),ETrue); |
|
157 if( !iIsOpenVkbKr ) |
|
158 { |
|
159 iKeyBoardType = iPtiEngine->KeyboardType(); |
|
160 iPtiEngine->SetKeyboardType(EPtiKeyboardQwerty3x11); |
|
161 } |
|
162 iIsOpenVkbKr = ETrue; |
|
163 ret=KErrNone; |
|
164 break; |
|
165 case ECmdPenInputWindowClose: |
|
166 LOG("Vkb.Layout.HandleCommand ECmdPenInputWindowClose"); |
|
167 iIsOpenVkbKr = EFalse; |
|
168 iPtiEngine->SetKeyboardType(iKeyBoardType); |
|
169 UiStateMgr()->CurrentUiState()->HandleControlEvent(EPeninputLayoutEventClose,KNullDesC); |
|
170 UiStateMgr()->SetCurrentUiState(EPeninputVkbKrUiStateNone); |
|
171 ret=KErrNone; |
|
172 break; |
|
173 case ECmdPenInputAllowChangeCase: |
|
174 LOG("Vkb.Layout.HandleCommand ECmdPenInputAllowChangeCase"); |
|
175 break; |
|
176 case ECmdPenInputCaseMode: |
|
177 LOG("Vkb.Layout.HandleCommand ECmdPenInputCaseMode"); |
|
178 break; |
|
179 case ECmdPenInputRange: |
|
180 LOG("Vkb.Layout.HandleCommand ECmdPenInputRange"); |
|
181 break; |
|
182 case ECmdPenInputPermittedCase: |
|
183 LOG("Vkb.Layout.HandleCommand ECmdPenInputPermittedCase"); |
|
184 break; |
|
185 case ECmdPenInputPluginInputMode: |
|
186 LOG("Vkb.Layout.HandleCommand ECmdPenInputPluginInputMode"); |
|
187 break; |
|
188 case ECmdPenInputEnableSettingBtn: |
|
189 LOG("Vkb.Layout.HandleCommand ECmdPenInputEnableSettingBtn"); |
|
190 break; |
|
191 case ECmdPenInputEditorCustomNumericKeyMap: |
|
192 LOG("Vkb.Layout.HandleCommand ECmdPenInputEditorCustomNumericKeyMap"); |
|
193 break; |
|
194 case ECmdPenInputSuggestRange: |
|
195 LOG("Vkb.Layout.HandleCommand ECmdPenInputSuggestRange"); |
|
196 break; |
|
197 case ECmdPenInputIsSecretText: |
|
198 LOG("Vkb.Layout.HandleCommand ECmdPenInputIsSecretText"); |
|
199 vkbWindow->SetSwitchlistSecretFlag(*aData); |
|
200 break; |
|
201 case ECmdPenInputIsNumberGrouping: |
|
202 LOG("Vkb.Layout.HandleCommand ECmdPenInputIsNumberGrouping"); |
|
203 break; |
|
204 case ECmdPenInputDimArrowKeys: |
|
205 LOG("Vkb.Layout.HandleCommand ECmdPenInputDimArrowKeys"); |
|
206 vkbWindow->DimArrowKeys( *aData ); |
|
207 break; |
|
208 case ECmdPenInputSendEditorTextAndCurPos: |
|
209 LOG("Vkb.Layout.HandleCommand ECmdPenInputSendEditorTextAndCurPos"); |
|
210 break; |
|
211 case ECmdPenInputJapaneseSetting: |
|
212 LOG("Vkb.Layout.HandleCommand ECmdPenInputJapaneseSetting"); |
|
213 break; |
|
214 case ECmdPenInputJapaneseSetSubRange: |
|
215 LOG("Vkb.Layout.HandleCommand ECmdPenInputJapaneseSetSubRange"); |
|
216 break; |
|
217 case ECmdPenInputJapaneseGetModeOfSubRange: |
|
218 LOG("Vkb.Layout.HandleCommand ECmdPenInputJapaneseGetModeOfSubRange"); |
|
219 break; |
|
220 case ECmdPenInputFingerInputMode: |
|
221 LOG("Vkb.Layout.HandleCommand ECmdPenInputFingerInputMode"); |
|
222 break; |
|
223 case ECmdPenInputFingerOpenSCT: |
|
224 LOG("Vkb.Layout.HandleCommand ECmdPenInputFingerOpenSCT"); |
|
225 break; |
|
226 case ECmdPenInputSetPromptText: |
|
227 { |
|
228 if ( iInputMode == EPluginInputModeFSQ ) |
|
229 TRAP_IGNORE(vkbWindow->SetPromptTextL(aData)); |
|
230 } |
|
231 break; |
|
232 case ECmdPenInputCharacterPreview: |
|
233 { |
|
234 vkbWindow->ShowBubble(*aData); |
|
235 } |
|
236 break; |
|
237 case ECmdPenInputInEditWordQueryDlg: |
|
238 { |
|
239 iInEditWordQueryDlg = *aData; |
|
240 } |
|
241 break; |
|
242 |
|
243 default: |
|
244 LOG1("Vkb.Layout.HandleCommand %d",aCmd); |
|
245 break; |
|
246 } |
|
247 return ret; |
|
248 } |
|
249 |
|
250 void CPeninputVkbKrLayout::HandleControlEvent( |
|
251 TInt aEventType, |
|
252 CFepUiBaseCtrl* aCtrl, |
|
253 const TDesC& aEventData) |
|
254 { |
|
255 TInt* data = (TInt*)aEventData.Ptr(); |
|
256 |
|
257 switch (aEventType) |
|
258 { |
|
259 case EEventButtonDown: |
|
260 LOG("Vkb.Layout.HandleControlEvent EEventButtonDown"); |
|
261 break; |
|
262 case EEventButtonUp: |
|
263 LOG("Vkb.Layout.HandleControlEvent EEventButtonUp"); |
|
264 break; |
|
265 case EEventDraggingStart: |
|
266 LOG("Vkb.Layout.HandleControlEvent EEventDraggingStart"); |
|
267 break; |
|
268 case EEventDragging: |
|
269 LOG("Vkb.Layout.HandleControlEvent EEventDragging"); |
|
270 break; |
|
271 case EEventDraggingEnd: |
|
272 LOG("Vkb.Layout.HandleControlEvent EEventDraggingEnd"); |
|
273 break; |
|
274 case EEventVirtualKeyUp: |
|
275 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyUp"); |
|
276 break; |
|
277 case EEventVirtualKeyDown: |
|
278 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyDown"); |
|
279 break; |
|
280 case EEventHwrStrokeStarted: |
|
281 LOG("Vkb.Layout.HandleControlEvent EEventHwrStrokeStarted"); |
|
282 break; |
|
283 case EEventHwrStrokeFinished: |
|
284 LOG("Vkb.Layout.HandleControlEvent EEventHwrStrokeFinished"); |
|
285 break; |
|
286 case EEventHwrCharacterTimerOut: |
|
287 LOG("Vkb.Layout.HandleControlEvent EEventHwrCharacterTimerOut"); |
|
288 break; |
|
289 case EEventCandidateSelected: |
|
290 LOG("Vkb.Layout.HandleControlEvent EEventCandidateSelected"); |
|
291 break; |
|
292 case EEventButtonLongPress: |
|
293 LOG("Vkb.Layout.HandleControlEvent EEventButtonLongPress"); |
|
294 break; |
|
295 case EEventSizeChanged: |
|
296 LOG("Vkb.Layout.HandleControlEvent EEventSizeChanged"); |
|
297 break; |
|
298 case EEventRegionUpdated: |
|
299 LOG("Vkb.Layout.HandleControlEvent EEventRegionUpdated"); |
|
300 break; |
|
301 case EEventSetAppCursorSelection: |
|
302 LOG("Vkb.Layout.HandleControlEvent EEventSetAppCursorSelection"); |
|
303 break; |
|
304 case EEventControlFocusGained: |
|
305 LOG("Vkb.Layout.HandleControlEvent EEventControlFocusGained"); |
|
306 break; |
|
307 case EEventControlFocusLost: |
|
308 LOG("Vkb.Layout.HandleControlEvent EEventControlFocusLost"); |
|
309 break; |
|
310 case EEventButtonDownCanceled: |
|
311 LOG("Vkb.Layout.HandleControlEvent EEventButtonDownCanceled"); |
|
312 break; |
|
313 case EEventHwrStrokeCanceled: |
|
314 LOG("Vkb.Layout.HandleControlEvent EEventHwrStrokeCanceled"); |
|
315 break; |
|
316 case EEventControlDestroyed: |
|
317 LOG("Vkb.Layout.HandleControlEvent EEventControlDestroyed"); |
|
318 break; |
|
319 case EEventChoiceSelected: |
|
320 LOG("Vkb.Layout.HandleControlEvent EEventChoiceSelected"); |
|
321 break; |
|
322 case EEventPointerLeftControl: |
|
323 LOG("Vkb.Layout.HandleControlEvent EEventPointerLeftControl"); |
|
324 break; |
|
325 case EEventPointerEnterControl: |
|
326 LOG("Vkb.Layout.HandleControlEvent EEventPointerEnterControl"); |
|
327 break; |
|
328 case EEventVirtualKeyLatched: |
|
329 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyLatched"); |
|
330 break; |
|
331 case EEventVirtualKeyUnLatched: |
|
332 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyUnLatched"); |
|
333 break; |
|
334 case EEventICFSelectionChanged: |
|
335 LOG("Vkb.Layout.HandleControlEvent EEventICFSelectionChanged"); |
|
336 break; |
|
337 case EEventRawKeyDownEvent: |
|
338 LOG("Vkb.Layout.HandleControlEvent EEventRawKeyDownEvent"); |
|
339 break; |
|
340 case EEventRawKeyUpEvent: |
|
341 LOG("Vkb.Layout.HandleControlEvent EEventRawKeyUpEvent"); |
|
342 break; |
|
343 case EEventPointerDownOnNomatch: |
|
344 LOG("Vkb.Layout.HandleControlEvent EEventPointerDownOnNomatch"); |
|
345 break; |
|
346 case EEventPointerDownOnInline: |
|
347 LOG("Vkb.Layout.HandleControlEvent EEventPointerDownOnInline"); |
|
348 break; |
|
349 case EEventCapturePointer: |
|
350 LOG("Vkb.Layout.HandleControlEvent EEventCapturePointer"); |
|
351 break; |
|
352 case EEventIcfPointerUpEvent: |
|
353 LOG("Vkb.Layout.HandleControlEvent EEventIcfPointerUpEvent"); |
|
354 break; |
|
355 case EEventControlExtBase: |
|
356 LOG("Vkb.Layout.HandleControlEvent EEventControlExtBase"); |
|
357 break; |
|
358 case EEventControlUserBase: |
|
359 LOG("Vkb.Layout.HandleControlEvent EEventControlUserBase"); |
|
360 break; |
|
361 default: |
|
362 LOG1("Vkb.Layout.HandleControlEvent %d",aEventType); |
|
363 break; |
|
364 } |
|
365 if (aEventType==EPeninputLayoutEventOption) |
|
366 { |
|
367 iUiStateMgr->CurrentUiState()->HandleControlEvent( |
|
368 aEventType, |
|
369 aEventData); |
|
370 } |
|
371 CPeninputCommonLayoutExt::HandleControlEvent( |
|
372 aEventType, |
|
373 aCtrl, |
|
374 aEventData); |
|
375 } |
|
376 |
|
377 TInt CPeninputVkbKrLayout::OnAppEditorTextComing( |
|
378 const TFepInputContextFieldData& aData) |
|
379 { |
|
380 LOG1("Vkb.Layout.OnAppEditorTextComing %d",aData.iCmd); |
|
381 return CPeninputCommonLayoutExt::OnAppEditorTextComing(aData); |
|
382 } |
|
383 |
|
384 TBool CPeninputVkbKrLayout::HandleRawKeyEventL( |
|
385 const TRawEvent& aKeyEvent) |
|
386 { |
|
387 LOG1("Vkb.Layout.HandleRawKeyEventL %d",aKeyEvent.ScanCode()); |
|
388 return CPeninputCommonLayoutExt::HandleRawKeyEventL(aKeyEvent); |
|
389 } |
|
390 |
|
391 |
|
392 TBool CPeninputVkbKrLayout::OnPointerEventOutsideLayout( |
|
393 const TRawEvent& /*aEvent*/) |
|
394 { |
|
395 LOG("Vkb.Layout.OnPointerEventOutsideLayout"); |
|
396 UiStateMgr()->CurrentUiState()->HandleControlEvent(EPeninputLayoutEventOpen,KNullDesC); |
|
397 return EFalse; |
|
398 } |
|
399 |
|
400 TInt CPeninputVkbKrLayout::OnResourceChange(TInt aType) |
|
401 { |
|
402 LOG("Vkb.Layout.OnResourceChange"); |
|
403 /* |
|
404 if (aType==KEikDynamicLayoutVariantSwitch) |
|
405 { |
|
406 UiStateMgr()->CurrentUiState()->HandleControlEvent(EPeninputLayoutEventMovePosition,KNullDesC); |
|
407 } |
|
408 */ |
|
409 return CPeninputCommonLayoutExt::OnResourceChange(aType); |
|
410 } |
|
411 |
|
412 // --------------------------------------------------------------------------- |
|
413 // from CPeninputCommonLayout |
|
414 // --------------------------------------------------------------------------- |
|
415 // |
|
416 |
|
417 void CPeninputVkbKrLayout::CreateLayoutWindowL() |
|
418 { |
|
419 iLayoutWindow = CPeninputVkbKrWindow::NewL( this, this, UiStateMgr() ); |
|
420 } |
|
421 |
|
422 void CPeninputVkbKrLayout::CreateDataMgrL( const TAny* /*aInitData*/ ) |
|
423 { |
|
424 iDataMgr = CPeninputVkbKrDataMgr::NewL(this,*iPtiEngine); |
|
425 } |
|
426 |
|
427 TInt CPeninputVkbKrLayout::LayoutType() |
|
428 { |
|
429 return iInputMode; |
|
430 } |
|
431 |
|
432 TInt CPeninputVkbKrLayout::SizeChanged( const TAny* aData ) |
|
433 { |
|
434 LOG("Vkb.Layout.SizeChanged"); |
|
435 (( CPeninputVkbKrWindow*)iLayoutWindow)->UpdateLafData(); |
|
436 return CPeninputCommonLayoutExt::SizeChanged( aData ); |
|
437 } |
|
438 |
|
439 void CPeninputVkbKrLayout::HandleAppInfoChange( |
|
440 const TDesC& aInfo, |
|
441 TPeninputAppInfo aType) |
|
442 { |
|
443 LOG("Vkb.Layout.HandleAppInfoChange"); |
|
444 if ( LayoutWindow() ) |
|
445 { |
|
446 CFepLayoutMultiLineIcf* icf = static_cast<CFepLayoutMultiLineIcf*> |
|
447 (LayoutWindow()->Control(EPeninputWindowCtrlIdMultiLineICF)) ; |
|
448 |
|
449 if ( icf && ( aType == EAppIndicatorMsg ) && (iInputMode == EPluginInputModeFSQ) ) |
|
450 { |
|
451 if ( aInfo.Length() > 0 && !iInEditWordQueryDlg) |
|
452 { |
|
453 icf->ShowBubble(aInfo,icf->MsgBubbleCtrl()->Rect()); |
|
454 } |
|
455 else |
|
456 { |
|
457 icf->HideBubble(); |
|
458 } |
|
459 } |
|
460 /* Teleca change begin, 19.05.2009 ssal */ |
|
461 else if ( icf && ( aType == EAppByteWarningMsg ) && (iInputMode == EPluginInputModeFSQ) ) |
|
462 { |
|
463 if (!iInfoTimer->IsActive()) |
|
464 { |
|
465 iInfoTimer->Start(KPeriodicTimerIntervalSec, |
|
466 KPeriodicTimerIntervalSec, |
|
467 TCallBack(CPeninputVkbKrLayout::HideByteWarningBubble, this)); |
|
468 } |
|
469 icf->ShowByteWarningBubble(aInfo); |
|
470 } |
|
471 /* Teleca change end, 19.05.2009 ssal */ |
|
472 /* Teleca change begin, 09.09.2009 ssal */ |
|
473 |
|
474 else if ( icf && ( aType == EAppMessageTypeChangeMsg ) && (iInputMode == EPluginInputModeFSQ) ) |
|
475 { |
|
476 if (!iInfoTimer->IsActive()) |
|
477 { |
|
478 if ( aInfo.Length() > 0 && !iInEditWordQueryDlg) |
|
479 { |
|
480 icf->ShowBubble(aInfo,icf->MsgBubbleCtrl()->Rect()); |
|
481 } |
|
482 |
|
483 iInfoTimer->Start(KPeriodicTimerIntervalSec, |
|
484 KPeriodicTimerIntervalSec, |
|
485 TCallBack(CPeninputVkbKrLayout::HideByteWarningBubble, this)); |
|
486 } |
|
487 icf->ShowByteWarningBubble(aInfo); |
|
488 } |
|
489 /* Teleca change end, 09.09.2009 ssal */ |
|
490 } |
|
491 } |
|
492 /* Teleca change begin, 21.05.2009 ssal */ |
|
493 TInt CPeninputVkbKrLayout::HideByteWarningBubble(TAny* aPointer) |
|
494 { |
|
495 CPeninputVkbKrLayout* layout = static_cast<CPeninputVkbKrLayout*>(aPointer); |
|
496 layout->HideByteWarningBubble(); |
|
497 return KErrNone; |
|
498 } |
|
499 |
|
500 void CPeninputVkbKrLayout::HideByteWarningBubble() |
|
501 { |
|
502 if (!iInfoTimer) |
|
503 { |
|
504 return; |
|
505 } |
|
506 |
|
507 CFepLayoutMultiLineIcf* icf = static_cast<CFepLayoutMultiLineIcf*> |
|
508 (LayoutWindow()->Control(EPeninputWindowCtrlIdMultiLineICF)); |
|
509 |
|
510 if (iInfoTimer->IsActive()) |
|
511 { |
|
512 iInfoTimer->Cancel(); |
|
513 icf->HideInfoBubble(); |
|
514 } |
|
515 } |
|
516 /* Teleca change end, 18.05.2009 ssal */ |