|
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 ECmdPenInputDimEnterKey: |
|
209 { |
|
210 TBool isDimEnterKey = *((TUint16*)( aData )); |
|
211 vkbWindow->DimEnterKey( isDimEnterKey ); |
|
212 } |
|
213 break; |
|
214 case ECmdPenInputSendEditorTextAndCurPos: |
|
215 LOG("Vkb.Layout.HandleCommand ECmdPenInputSendEditorTextAndCurPos"); |
|
216 break; |
|
217 case ECmdPenInputJapaneseSetting: |
|
218 LOG("Vkb.Layout.HandleCommand ECmdPenInputJapaneseSetting"); |
|
219 break; |
|
220 case ECmdPenInputJapaneseSetSubRange: |
|
221 LOG("Vkb.Layout.HandleCommand ECmdPenInputJapaneseSetSubRange"); |
|
222 break; |
|
223 case ECmdPenInputJapaneseGetModeOfSubRange: |
|
224 LOG("Vkb.Layout.HandleCommand ECmdPenInputJapaneseGetModeOfSubRange"); |
|
225 break; |
|
226 case ECmdPenInputFingerInputMode: |
|
227 LOG("Vkb.Layout.HandleCommand ECmdPenInputFingerInputMode"); |
|
228 break; |
|
229 case ECmdPenInputFingerOpenSCT: |
|
230 LOG("Vkb.Layout.HandleCommand ECmdPenInputFingerOpenSCT"); |
|
231 break; |
|
232 case ECmdPenInputSetPromptText: |
|
233 { |
|
234 if ( iInputMode == EPluginInputModeFSQ ) |
|
235 TRAP_IGNORE(vkbWindow->SetPromptTextL(aData)); |
|
236 } |
|
237 break; |
|
238 case ECmdPenInputCharacterPreview: |
|
239 { |
|
240 vkbWindow->ShowBubble(*aData); |
|
241 } |
|
242 break; |
|
243 case ECmdPenInputInEditWordQueryDlg: |
|
244 { |
|
245 iInEditWordQueryDlg = *aData; |
|
246 } |
|
247 break; |
|
248 |
|
249 default: |
|
250 LOG1("Vkb.Layout.HandleCommand %d",aCmd); |
|
251 break; |
|
252 } |
|
253 return ret; |
|
254 } |
|
255 |
|
256 void CPeninputVkbKrLayout::HandleControlEvent( |
|
257 TInt aEventType, |
|
258 CFepUiBaseCtrl* aCtrl, |
|
259 const TDesC& aEventData) |
|
260 { |
|
261 TInt* data = (TInt*)aEventData.Ptr(); |
|
262 |
|
263 switch (aEventType) |
|
264 { |
|
265 case EEventButtonDown: |
|
266 LOG("Vkb.Layout.HandleControlEvent EEventButtonDown"); |
|
267 break; |
|
268 case EEventButtonUp: |
|
269 LOG("Vkb.Layout.HandleControlEvent EEventButtonUp"); |
|
270 break; |
|
271 case EEventDraggingStart: |
|
272 LOG("Vkb.Layout.HandleControlEvent EEventDraggingStart"); |
|
273 break; |
|
274 case EEventDragging: |
|
275 LOG("Vkb.Layout.HandleControlEvent EEventDragging"); |
|
276 break; |
|
277 case EEventDraggingEnd: |
|
278 LOG("Vkb.Layout.HandleControlEvent EEventDraggingEnd"); |
|
279 break; |
|
280 case EEventVirtualKeyUp: |
|
281 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyUp"); |
|
282 break; |
|
283 case EEventVirtualKeyDown: |
|
284 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyDown"); |
|
285 break; |
|
286 case EEventHwrStrokeStarted: |
|
287 LOG("Vkb.Layout.HandleControlEvent EEventHwrStrokeStarted"); |
|
288 break; |
|
289 case EEventHwrStrokeFinished: |
|
290 LOG("Vkb.Layout.HandleControlEvent EEventHwrStrokeFinished"); |
|
291 break; |
|
292 case EEventHwrCharacterTimerOut: |
|
293 LOG("Vkb.Layout.HandleControlEvent EEventHwrCharacterTimerOut"); |
|
294 break; |
|
295 case EEventCandidateSelected: |
|
296 LOG("Vkb.Layout.HandleControlEvent EEventCandidateSelected"); |
|
297 break; |
|
298 case EEventButtonLongPress: |
|
299 LOG("Vkb.Layout.HandleControlEvent EEventButtonLongPress"); |
|
300 break; |
|
301 case EEventSizeChanged: |
|
302 LOG("Vkb.Layout.HandleControlEvent EEventSizeChanged"); |
|
303 break; |
|
304 case EEventRegionUpdated: |
|
305 LOG("Vkb.Layout.HandleControlEvent EEventRegionUpdated"); |
|
306 break; |
|
307 case EEventSetAppCursorSelection: |
|
308 LOG("Vkb.Layout.HandleControlEvent EEventSetAppCursorSelection"); |
|
309 break; |
|
310 case EEventControlFocusGained: |
|
311 LOG("Vkb.Layout.HandleControlEvent EEventControlFocusGained"); |
|
312 break; |
|
313 case EEventControlFocusLost: |
|
314 LOG("Vkb.Layout.HandleControlEvent EEventControlFocusLost"); |
|
315 break; |
|
316 case EEventButtonDownCanceled: |
|
317 LOG("Vkb.Layout.HandleControlEvent EEventButtonDownCanceled"); |
|
318 break; |
|
319 case EEventHwrStrokeCanceled: |
|
320 LOG("Vkb.Layout.HandleControlEvent EEventHwrStrokeCanceled"); |
|
321 break; |
|
322 case EEventControlDestroyed: |
|
323 LOG("Vkb.Layout.HandleControlEvent EEventControlDestroyed"); |
|
324 break; |
|
325 case EEventChoiceSelected: |
|
326 LOG("Vkb.Layout.HandleControlEvent EEventChoiceSelected"); |
|
327 break; |
|
328 case EEventPointerLeftControl: |
|
329 LOG("Vkb.Layout.HandleControlEvent EEventPointerLeftControl"); |
|
330 break; |
|
331 case EEventPointerEnterControl: |
|
332 LOG("Vkb.Layout.HandleControlEvent EEventPointerEnterControl"); |
|
333 break; |
|
334 case EEventVirtualKeyLatched: |
|
335 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyLatched"); |
|
336 break; |
|
337 case EEventVirtualKeyUnLatched: |
|
338 LOG("Vkb.Layout.HandleControlEvent EEventVirtualKeyUnLatched"); |
|
339 break; |
|
340 case EEventICFSelectionChanged: |
|
341 LOG("Vkb.Layout.HandleControlEvent EEventICFSelectionChanged"); |
|
342 break; |
|
343 case EEventRawKeyDownEvent: |
|
344 LOG("Vkb.Layout.HandleControlEvent EEventRawKeyDownEvent"); |
|
345 break; |
|
346 case EEventRawKeyUpEvent: |
|
347 LOG("Vkb.Layout.HandleControlEvent EEventRawKeyUpEvent"); |
|
348 break; |
|
349 case EEventPointerDownOnNomatch: |
|
350 LOG("Vkb.Layout.HandleControlEvent EEventPointerDownOnNomatch"); |
|
351 break; |
|
352 case EEventPointerDownOnInline: |
|
353 LOG("Vkb.Layout.HandleControlEvent EEventPointerDownOnInline"); |
|
354 break; |
|
355 case EEventCapturePointer: |
|
356 LOG("Vkb.Layout.HandleControlEvent EEventCapturePointer"); |
|
357 break; |
|
358 case EEventIcfPointerUpEvent: |
|
359 LOG("Vkb.Layout.HandleControlEvent EEventIcfPointerUpEvent"); |
|
360 break; |
|
361 case EEventControlExtBase: |
|
362 LOG("Vkb.Layout.HandleControlEvent EEventControlExtBase"); |
|
363 break; |
|
364 case EEventControlUserBase: |
|
365 LOG("Vkb.Layout.HandleControlEvent EEventControlUserBase"); |
|
366 break; |
|
367 default: |
|
368 LOG1("Vkb.Layout.HandleControlEvent %d",aEventType); |
|
369 break; |
|
370 } |
|
371 if (aEventType==EPeninputLayoutEventOption) |
|
372 { |
|
373 iUiStateMgr->CurrentUiState()->HandleControlEvent( |
|
374 aEventType, |
|
375 aEventData); |
|
376 } |
|
377 CPeninputCommonLayoutExt::HandleControlEvent( |
|
378 aEventType, |
|
379 aCtrl, |
|
380 aEventData); |
|
381 } |
|
382 |
|
383 TInt CPeninputVkbKrLayout::OnAppEditorTextComing( |
|
384 const TFepInputContextFieldData& aData) |
|
385 { |
|
386 LOG1("Vkb.Layout.OnAppEditorTextComing %d",aData.iCmd); |
|
387 return CPeninputCommonLayoutExt::OnAppEditorTextComing(aData); |
|
388 } |
|
389 |
|
390 TBool CPeninputVkbKrLayout::HandleRawKeyEventL( |
|
391 const TRawEvent& aKeyEvent) |
|
392 { |
|
393 LOG1("Vkb.Layout.HandleRawKeyEventL %d",aKeyEvent.ScanCode()); |
|
394 return CPeninputCommonLayoutExt::HandleRawKeyEventL(aKeyEvent); |
|
395 } |
|
396 |
|
397 |
|
398 TBool CPeninputVkbKrLayout::OnPointerEventOutsideLayout( |
|
399 const TRawEvent& /*aEvent*/) |
|
400 { |
|
401 LOG("Vkb.Layout.OnPointerEventOutsideLayout"); |
|
402 UiStateMgr()->CurrentUiState()->HandleControlEvent(EPeninputLayoutEventOpen,KNullDesC); |
|
403 return EFalse; |
|
404 } |
|
405 |
|
406 TInt CPeninputVkbKrLayout::OnResourceChange(TInt aType) |
|
407 { |
|
408 LOG("Vkb.Layout.OnResourceChange"); |
|
409 /* |
|
410 if (aType==KEikDynamicLayoutVariantSwitch) |
|
411 { |
|
412 UiStateMgr()->CurrentUiState()->HandleControlEvent(EPeninputLayoutEventMovePosition,KNullDesC); |
|
413 } |
|
414 */ |
|
415 return CPeninputCommonLayoutExt::OnResourceChange(aType); |
|
416 } |
|
417 |
|
418 // --------------------------------------------------------------------------- |
|
419 // from CPeninputCommonLayout |
|
420 // --------------------------------------------------------------------------- |
|
421 // |
|
422 |
|
423 void CPeninputVkbKrLayout::CreateLayoutWindowL() |
|
424 { |
|
425 iLayoutWindow = CPeninputVkbKrWindow::NewL( this, this, UiStateMgr() ); |
|
426 } |
|
427 |
|
428 void CPeninputVkbKrLayout::CreateDataMgrL( const TAny* /*aInitData*/ ) |
|
429 { |
|
430 iDataMgr = CPeninputVkbKrDataMgr::NewL(this,*iPtiEngine); |
|
431 } |
|
432 |
|
433 TInt CPeninputVkbKrLayout::LayoutType() |
|
434 { |
|
435 return iInputMode; |
|
436 } |
|
437 |
|
438 TInt CPeninputVkbKrLayout::SizeChanged( const TAny* aData ) |
|
439 { |
|
440 LOG("Vkb.Layout.SizeChanged"); |
|
441 (( CPeninputVkbKrWindow*)iLayoutWindow)->UpdateLafData(); |
|
442 return CPeninputCommonLayoutExt::SizeChanged( aData ); |
|
443 } |
|
444 |
|
445 void CPeninputVkbKrLayout::HandleAppInfoChange( |
|
446 const TDesC& aInfo, |
|
447 TPeninputAppInfo aType) |
|
448 { |
|
449 LOG("Vkb.Layout.HandleAppInfoChange"); |
|
450 if ( LayoutWindow() ) |
|
451 { |
|
452 CFepLayoutMultiLineIcf* icf = static_cast<CFepLayoutMultiLineIcf*> |
|
453 (LayoutWindow()->Control(EPeninputWindowCtrlIdMultiLineICF)) ; |
|
454 |
|
455 if ( icf && ( aType == EAppIndicatorMsg ) && (iInputMode == EPluginInputModeFSQ) ) |
|
456 { |
|
457 if ( aInfo.Length() > 0 && !iInEditWordQueryDlg) |
|
458 { |
|
459 icf->ShowBubble(aInfo,icf->MsgBubbleCtrl()->Rect()); |
|
460 } |
|
461 else |
|
462 { |
|
463 icf->HideBubble(); |
|
464 } |
|
465 } |
|
466 /* Teleca change begin, 19.05.2009 ssal */ |
|
467 else if ( icf && ( aType == EAppByteWarningMsg ) && (iInputMode == EPluginInputModeFSQ) ) |
|
468 { |
|
469 if (!iInfoTimer->IsActive()) |
|
470 { |
|
471 iInfoTimer->Start(KPeriodicTimerIntervalSec, |
|
472 KPeriodicTimerIntervalSec, |
|
473 TCallBack(CPeninputVkbKrLayout::HideByteWarningBubble, this)); |
|
474 } |
|
475 icf->ShowByteWarningBubble(aInfo); |
|
476 } |
|
477 /* Teleca change end, 19.05.2009 ssal */ |
|
478 /* Teleca change begin, 09.09.2009 ssal */ |
|
479 |
|
480 else if ( icf && ( aType == EAppMessageTypeChangeMsg ) && (iInputMode == EPluginInputModeFSQ) ) |
|
481 { |
|
482 if (!iInfoTimer->IsActive()) |
|
483 { |
|
484 if ( aInfo.Length() > 0 && !iInEditWordQueryDlg) |
|
485 { |
|
486 icf->ShowBubble(aInfo,icf->MsgBubbleCtrl()->Rect()); |
|
487 } |
|
488 |
|
489 iInfoTimer->Start(KPeriodicTimerIntervalSec, |
|
490 KPeriodicTimerIntervalSec, |
|
491 TCallBack(CPeninputVkbKrLayout::HideByteWarningBubble, this)); |
|
492 } |
|
493 icf->ShowByteWarningBubble(aInfo); |
|
494 } |
|
495 /* Teleca change end, 09.09.2009 ssal */ |
|
496 } |
|
497 } |
|
498 /* Teleca change begin, 21.05.2009 ssal */ |
|
499 TInt CPeninputVkbKrLayout::HideByteWarningBubble(TAny* aPointer) |
|
500 { |
|
501 CPeninputVkbKrLayout* layout = static_cast<CPeninputVkbKrLayout*>(aPointer); |
|
502 layout->HideByteWarningBubble(); |
|
503 return KErrNone; |
|
504 } |
|
505 |
|
506 void CPeninputVkbKrLayout::HideByteWarningBubble() |
|
507 { |
|
508 if (!iInfoTimer) |
|
509 { |
|
510 return; |
|
511 } |
|
512 |
|
513 CFepLayoutMultiLineIcf* icf = static_cast<CFepLayoutMultiLineIcf*> |
|
514 (LayoutWindow()->Control(EPeninputWindowCtrlIdMultiLineICF)); |
|
515 |
|
516 if (iInfoTimer->IsActive()) |
|
517 { |
|
518 iInfoTimer->Cancel(); |
|
519 icf->HideInfoBubble(); |
|
520 } |
|
521 } |
|
522 /* Teleca change end, 18.05.2009 ssal */ |