|
1 /* |
|
2 * Copyright (c) 2005-2010 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: Implementation for arabic peninput finger hwr |
|
15 * |
|
16 */ |
|
17 |
|
18 //SYSTEM INCLUDE |
|
19 #include <centralrepository.h> |
|
20 #include <settingsinternalcrkeys.h> |
|
21 #include <CommonEngineDomainCRKeys.h> |
|
22 |
|
23 //FEP INCLUDE |
|
24 #include <aknfeppeninputenums.h> |
|
25 #include <AknFepGlobalEnums.h> |
|
26 #include <AknFepInternalCRKeys.h> |
|
27 #include <peninputcommonlayoutglobalenum.h> |
|
28 |
|
29 //USER INCLUDE |
|
30 #include "peninputfingerhwrarlayout.h" |
|
31 #include "peninputfingerhwrardatastore.h" |
|
32 #include "peninputfingerhwrarengine.h" |
|
33 #include "peninputpluginutils.h" |
|
34 #include "peninputfingerhwrarstoreconstants.h" |
|
35 #include <peninputfingerhwrarwnd.rsg> |
|
36 |
|
37 //CONSTANT DEFINATION HEADER |
|
38 |
|
39 |
|
40 // ---------------------------------------------------------------------------- |
|
41 // Symbian constructor |
|
42 // ---------------------------------------------------------------------------- |
|
43 // |
|
44 CPeninputFingerHwrArDataStore* CPeninputFingerHwrArDataStore::NewL( |
|
45 CPtiEngine* aPtiEngine, CPeninputFingerHwrArLayout* aLayout ) |
|
46 { |
|
47 CPeninputFingerHwrArDataStore* self = new ( ELeave ) |
|
48 CPeninputFingerHwrArDataStore(aLayout); |
|
49 |
|
50 CleanupStack::PushL( self ); |
|
51 self->ConstructL( aPtiEngine ); |
|
52 CleanupStack::Pop( self );//self |
|
53 |
|
54 return self; |
|
55 } |
|
56 |
|
57 // ---------------------------------------------------------------------------- |
|
58 // destructor |
|
59 // ---------------------------------------------------------------------------- |
|
60 // |
|
61 CPeninputFingerHwrArDataStore::~CPeninputFingerHwrArDataStore() |
|
62 { |
|
63 iCandidates.ResetAndDestroy(); |
|
64 iCandidates.Close(); |
|
65 |
|
66 |
|
67 iRangeStartPos.Close(); |
|
68 iPermittedRanges.Close(); |
|
69 iKeyMappingIdList.Close(); |
|
70 |
|
71 iKeyMappingStringList.ResetAndDestroy(); |
|
72 iKeyMappingStringList.Close(); |
|
73 |
|
74 delete iRepositoryFep; |
|
75 delete iCommonEngineRepository; |
|
76 delete iHwrEngine; |
|
77 delete iUserDefinedResource; |
|
78 |
|
79 if ( iDefaultNumberMapping ) |
|
80 { |
|
81 delete iDefaultNumberMapping; |
|
82 } |
|
83 iDefaultNumberMapping = NULL; |
|
84 |
|
85 } |
|
86 |
|
87 |
|
88 // ---------------------------------------------------------------------------- |
|
89 // Is valid candidate |
|
90 // ---------------------------------------------------------------------------- |
|
91 // |
|
92 TBool CPeninputFingerHwrArDataStore::IsValidCandidate( TInt aCandidateIndex ) const |
|
93 { |
|
94 return ( *iCandidates[aCandidateIndex] ).Length() > 0; |
|
95 } |
|
96 |
|
97 |
|
98 // ---------------------------------------------------------------------------- |
|
99 // Is English letter |
|
100 // ---------------------------------------------------------------------------- |
|
101 // |
|
102 TBool CPeninputFingerHwrArDataStore::IsEnglishLetter( const TDesC& aLetter) |
|
103 { |
|
104 TUint unicode = *((TUint16*) aLetter.Ptr()); |
|
105 |
|
106 const TUint ACode = 0x0041; // Letter "A" |
|
107 const TUint ZCode = 0x005A; // Letter "Z" |
|
108 const TUint aCode = 0x0061; // Letter "a" |
|
109 const TUint zCode = 0x007A; // Letter "z" |
|
110 |
|
111 if( ((ACode <= unicode) && (unicode <= ZCode))|| |
|
112 ((aCode <= unicode) && (unicode <= zCode)) ) |
|
113 { |
|
114 return ETrue; |
|
115 } |
|
116 else |
|
117 { |
|
118 return EFalse; |
|
119 } |
|
120 } |
|
121 |
|
122 // ---------------------------------------------------------------------------- |
|
123 // Do recoginize by engine for Chinese |
|
124 // ---------------------------------------------------------------------------- |
|
125 // |
|
126 void CPeninputFingerHwrArDataStore::DoRecognizeL( const RArray<TPoint>& aTraceData ) |
|
127 { |
|
128 iHwrEngine->DoRecognizeL( aTraceData, iCandidates ); |
|
129 ReorderCandidates(); |
|
130 } |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 // ---------------------------------------------------------------------------- |
|
136 // Set fixed Chinese symbols |
|
137 // ---------------------------------------------------------------------------- |
|
138 // |
|
139 void CPeninputFingerHwrArDataStore::SetArabicSymbolL() |
|
140 { |
|
141 iCandidates.ResetAndDestroy(); |
|
142 } |
|
143 |
|
144 // ---------------------------------------------------------------------------- |
|
145 // Set permitted ranges |
|
146 // ---------------------------------------------------------------------------- |
|
147 // |
|
148 void CPeninputFingerHwrArDataStore::SetPermittedRanges( TInt aPermittedRanges ) |
|
149 { |
|
150 if(aPermittedRanges == 0) |
|
151 return; |
|
152 |
|
153 iPermittedRanges.Reset(); |
|
154 |
|
155 //order can not be changed |
|
156 if ( aPermittedRanges & ERangeNative ) |
|
157 { |
|
158 iPermittedRanges.Append( ERangeNative ); |
|
159 } |
|
160 if ( aPermittedRanges & ERangeNativeNumber ) |
|
161 { |
|
162 iPermittedRanges.Append( ERangeNativeNumber ); |
|
163 } |
|
164 if ( aPermittedRanges & ERangeEnglish ) |
|
165 { |
|
166 iPermittedRanges.Append( ERangeEnglish ); |
|
167 } |
|
168 if ( aPermittedRanges & ERangeNumber ) |
|
169 { |
|
170 iPermittedRanges.Append( ERangeNumber ); |
|
171 } |
|
172 if ( aPermittedRanges & ERangeSymbol ) |
|
173 { |
|
174 iPermittedRanges.Append( ERangeSymbol ); |
|
175 } |
|
176 |
|
177 iIntRange = aPermittedRanges; |
|
178 |
|
179 // set primary and auxiliary ranges for hwr engine |
|
180 iHwrEngine->SetRanges( iPermittedRanges ); |
|
181 } |
|
182 |
|
183 |
|
184 // ---------------------------------------------------------------------------- |
|
185 // Set permitted cases |
|
186 // ---------------------------------------------------------------------------- |
|
187 // |
|
188 void CPeninputFingerHwrArDataStore::SetPermittedCases( TInt aPermittedCases ) |
|
189 { |
|
190 iPermittedCases = aPermittedCases; |
|
191 } |
|
192 // ---------------------------------------------------------------------------- |
|
193 // get Primary range |
|
194 // ---------------------------------------------------------------------------- |
|
195 // |
|
196 TInt CPeninputFingerHwrArDataStore::PrimaryRange() |
|
197 { |
|
198 if( iPermittedRanges.Count() > 0 ) |
|
199 { |
|
200 return iPermittedRanges[0]; |
|
201 } |
|
202 return -1; |
|
203 } |
|
204 |
|
205 // ---------------------------------------------------------------------------- |
|
206 // Set case |
|
207 // ---------------------------------------------------------------------------- |
|
208 // |
|
209 void CPeninputFingerHwrArDataStore::SetCase( TInt aCase ) |
|
210 { |
|
211 iCase = aCase; |
|
212 iHwrEngine->SetCase( iCase ); |
|
213 } |
|
214 |
|
215 // ---------------------------------------------------------------------------- |
|
216 // Set language |
|
217 // ---------------------------------------------------------------------------- |
|
218 // |
|
219 void CPeninputFingerHwrArDataStore::SetLanguageL( TInt aLanguage ) |
|
220 { |
|
221 if( iLanguage == aLanguage ) |
|
222 { |
|
223 return; |
|
224 } |
|
225 |
|
226 if ( !IsArabicLanguage( aLanguage ) && ( aLanguage != ELangEnglish ) ) |
|
227 { |
|
228 return; |
|
229 } |
|
230 |
|
231 if ( aLanguage == ELangEnglish ) |
|
232 { |
|
233 TLanguage displayLang = User::Language(); |
|
234 |
|
235 // set real language to a Arabic |
|
236 if ( !IsArabicLanguage( iLanguage ) ) |
|
237 { |
|
238 // original language is not Chinese |
|
239 if ( IsArabicLanguage( displayLang ) ) |
|
240 { |
|
241 iLanguage = displayLang; |
|
242 } |
|
243 else |
|
244 { |
|
245 iLanguage = ELangArabic; |
|
246 } |
|
247 |
|
248 SetEngineLanguageL( iLanguage ); |
|
249 } |
|
250 |
|
251 } |
|
252 else |
|
253 { |
|
254 // aLanguage is arabic |
|
255 if ( iLanguage != aLanguage ) |
|
256 { |
|
257 iLanguage = aLanguage; |
|
258 |
|
259 SetEngineLanguageL( iLanguage ); |
|
260 } |
|
261 } |
|
262 } |
|
263 |
|
264 |
|
265 // ---------------------------------------------------------------------------- |
|
266 // Get first stroke flag |
|
267 // ---------------------------------------------------------------------------- |
|
268 // |
|
269 TBool CPeninputFingerHwrArDataStore::FirstStroke() |
|
270 { |
|
271 return iIsFirstStroke; |
|
272 } |
|
273 |
|
274 // ---------------------------------------------------------------------------- |
|
275 // Set first stroke flag |
|
276 // ---------------------------------------------------------------------------- |
|
277 // |
|
278 void CPeninputFingerHwrArDataStore::SetFirstStroke(const TBool aIsFirstStroke) |
|
279 { |
|
280 iIsFirstStroke = aIsFirstStroke; |
|
281 } |
|
282 |
|
283 // ---------------------------------------------------------------------------- |
|
284 // Get the candidate |
|
285 // ---------------------------------------------------------------------------- |
|
286 // |
|
287 const RPointerArray<HBufC>& CPeninputFingerHwrArDataStore::Candidate() const |
|
288 { |
|
289 return iCandidates; |
|
290 } |
|
291 |
|
292 |
|
293 |
|
294 // ---------------------------------------------------------------------------- |
|
295 // Set number mode for hwr engine |
|
296 // ---------------------------------------------------------------------------- |
|
297 // |
|
298 void CPeninputFingerHwrArDataStore::SetNumberMode( |
|
299 const TAknEditorNumericKeymap aNumberMode ) |
|
300 { |
|
301 iCurrentNumberMode = aNumberMode; |
|
302 iHwrEngine->SetNumberMode( aNumberMode ); |
|
303 iHwrEngine->SetRanges( iPermittedRanges ); |
|
304 } |
|
305 |
|
306 // ---------------------------------------------------------------------------- |
|
307 // Set number mode for hwr engine |
|
308 // ---------------------------------------------------------------------------- |
|
309 // |
|
310 void CPeninputFingerHwrArDataStore::SetCustomNumberModeL( const TDesC& aCustomMode ) |
|
311 { |
|
312 iHwrEngine->SetCustomKeymapL( aCustomMode ); |
|
313 |
|
314 delete iUserDefinedResource; |
|
315 iUserDefinedResource = NULL; |
|
316 iUserDefinedResource = HBufC::NewL( aCustomMode.Length() ); |
|
317 iUserDefinedResource->Des().Append( aCustomMode ); |
|
318 } |
|
319 |
|
320 // ---------------------------------------------------------------------------- |
|
321 // save range to repository if english or chinese |
|
322 // ---------------------------------------------------------------------------- |
|
323 // |
|
324 void CPeninputFingerHwrArDataStore::SaveRange( TInt aRange ) |
|
325 { |
|
326 if ( iRepositoryFep && ( aRange == ERangeNative || aRange == ERangeEnglish ) ) |
|
327 { |
|
328 iRepositoryFep->Set( KAknFepLastUsedRange, aRange ); |
|
329 } |
|
330 } |
|
331 |
|
332 |
|
333 // ------------------------------------------------------------------ |
|
334 // sync stroke end mark of writingbox with hwr engine. |
|
335 // ------------------------------------------------------------------- |
|
336 // |
|
337 void CPeninputFingerHwrArDataStore::SetStrokeEndMark() |
|
338 { |
|
339 iLayout->SyncHwrStrokeEndMark( iHwrEngine->StrokeEndMark() ); |
|
340 } |
|
341 |
|
342 // ---------------------------------------------------------------------------- |
|
343 // get stroke end mark from hwr engine |
|
344 // ---------------------------------------------------------------------------- |
|
345 // |
|
346 TPoint CPeninputFingerHwrArDataStore::StrokeEndMark() |
|
347 { |
|
348 return iHwrEngine->StrokeEndMark(); |
|
349 } |
|
350 |
|
351 // ---------------------------------------------------------------------------- |
|
352 // stroke end mark from control |
|
353 // ---------------------------------------------------------------------------- |
|
354 // |
|
355 TPoint CPeninputFingerHwrArDataStore::StrokeEndMarkFromControl() |
|
356 { |
|
357 return TPoint( KDefaultStrokeEndMarkX, KDefaultStrokeEndMarkY ); |
|
358 } |
|
359 |
|
360 // -------------------------------------------------------------------- |
|
361 // Get number keymapping string |
|
362 // -------------------------------------------------------------------- |
|
363 // |
|
364 HBufC* CPeninputFingerHwrArDataStore::KeyMappingStringL() const |
|
365 { |
|
366 TLocale locale; |
|
367 TBuf<KMaxNumericString> rs = KNumberString(); // copy "0123456789" |
|
368 const TInt index = iKeyMappingIdList.Find( iCurrentNumberMode ); |
|
369 |
|
370 if ( !( iPermittedRanges.Count() == 1 && iPermittedRanges[0] == ERangeNumber ) ) |
|
371 { |
|
372 rs.Append( *iDefaultNumberMapping ); //normal editor |
|
373 } |
|
374 else if ( iCurrentNumberMode == EKeymapFromResource ) |
|
375 { |
|
376 rs.Append( *iUserDefinedResource ); |
|
377 } |
|
378 else if ( index != KErrNotFound ) |
|
379 { |
|
380 HBufC* buf = iKeyMappingStringList[index]; |
|
381 |
|
382 rs.Append( *buf ); |
|
383 |
|
384 if ( ( iCurrentNumberMode == EAknEditorCalculatorNumberModeKeymap ) || |
|
385 ( iCurrentNumberMode == EAknEditorConverterNumberModeKeymap ) ) |
|
386 { |
|
387 rs.Append( locale.DecimalSeparator() ); |
|
388 } |
|
389 } |
|
390 |
|
391 return rs.AllocL(); |
|
392 } |
|
393 |
|
394 // ----------------------------------------------------------------------------- |
|
395 // CPeninputFingerHwrArDataStore::StartCharacter |
|
396 // ----------------------------------------------------------------------------- |
|
397 // |
|
398 TBool CPeninputFingerHwrArDataStore::StartCharacter() |
|
399 { |
|
400 return iStartCharacter; |
|
401 } |
|
402 |
|
403 // ----------------------------------------------------------------------------- |
|
404 // CPeninputFingerHwrArDataStore::SetStartCharacter |
|
405 // ----------------------------------------------------------------------------- |
|
406 // |
|
407 void CPeninputFingerHwrArDataStore::SetStartCharacter(const TBool aStartCharacter) |
|
408 { |
|
409 iStartCharacter = aStartCharacter; |
|
410 } |
|
411 |
|
412 // ----------------------------------------------------------------------------- |
|
413 // CPeninputFingerHwrArDataStore::SetInputAreaSize |
|
414 // ----------------------------------------------------------------------------- |
|
415 // |
|
416 TInt CPeninputFingerHwrArDataStore::SetInputAreaSize(TSize& aSize) |
|
417 { |
|
418 return iHwrEngine->SetInputAreaSize(aSize); |
|
419 } |
|
420 |
|
421 // ----------------------------------------------------------------------------- |
|
422 // CPeninputFingerHwrArDataStore::SetScreenSize |
|
423 // ----------------------------------------------------------------------------- |
|
424 // |
|
425 TInt CPeninputFingerHwrArDataStore::SetScreenSize(TSize& aSize) |
|
426 { |
|
427 return iHwrEngine->SetScreenSize(aSize); |
|
428 } |
|
429 |
|
430 |
|
431 // ----------------------------------------------------------------------------- |
|
432 // CPeninputFingerHwrArDataStore::SetHighlight |
|
433 // ----------------------------------------------------------------------------- |
|
434 // |
|
435 void CPeninputFingerHwrArDataStore::SetHighlight(const TBool aIsHighlight) |
|
436 { |
|
437 iIsHighlightCell = aIsHighlight; |
|
438 } |
|
439 |
|
440 // ----------------------------------------------------------------------------- |
|
441 // CPeninputFingerHwrArDataStore::Highlight |
|
442 // ----------------------------------------------------------------------------- |
|
443 // |
|
444 TBool CPeninputFingerHwrArDataStore::Highlight() |
|
445 { |
|
446 return iIsHighlightCell; |
|
447 } |
|
448 |
|
449 // ---------------------------------------------------------------------------- |
|
450 // C++ constructor |
|
451 // ---------------------------------------------------------------------------- |
|
452 // |
|
453 CPeninputFingerHwrArDataStore::CPeninputFingerHwrArDataStore(CPeninputFingerHwrArLayout* aLayout) |
|
454 :iLanguage(ELangNone), |
|
455 iCurrentNumberMode(EAknEditorStandardNumberModeKeymap), |
|
456 iLayout( aLayout ), |
|
457 iIsHighlightCell(ETrue), |
|
458 iIsNativeNumMode(EFalse) |
|
459 { |
|
460 } |
|
461 |
|
462 // ---------------------------------------------------------------------------- |
|
463 // Second phase constructor |
|
464 // ---------------------------------------------------------------------------- |
|
465 // |
|
466 void CPeninputFingerHwrArDataStore::ConstructL( CPtiEngine* aPtiEngine ) |
|
467 { |
|
468 //create the repository for fep settings |
|
469 iRepositoryFep = CRepository::NewL( KCRUidAknFep ); |
|
470 |
|
471 //create the trigger string |
|
472 // iTriggerStr = new ( ELeave ) CAknFepHwrArTriggerStr(); |
|
473 |
|
474 //create the hwr engine |
|
475 iHwrEngine = CPeninputFingerHwrArEngine::NewL( aPtiEngine, this ); |
|
476 |
|
477 //initialize the key mapping list |
|
478 InitKeyMappingListL(); |
|
479 |
|
480 // read number mode flag. |
|
481 //create the repository for common engine. |
|
482 iCommonEngineRepository = CRepository::NewL(KCRUidCommonEngineKeys); |
|
483 TInt displayLang = 0; |
|
484 iCommonEngineRepository->Get(KGSDisplayTxtLang,displayLang); |
|
485 if( displayLang == ELangTest ) |
|
486 { |
|
487 displayLang = User::Language(); |
|
488 } |
|
489 if(displayLang == ELangArabic) |
|
490 { |
|
491 iIsNativeNumMode = ETrue; |
|
492 } |
|
493 else |
|
494 { |
|
495 iIsNativeNumMode = EFalse; |
|
496 } |
|
497 iRepositoryFep->Set(KAknFepDefaultArabicNumberMode,iIsNativeNumMode); |
|
498 |
|
499 } |
|
500 |
|
501 // ---------------------------------------------------------------------------- |
|
502 // Initialize the key mapping list |
|
503 // ---------------------------------------------------------------------------- |
|
504 // |
|
505 void CPeninputFingerHwrArDataStore::InitKeyMappingListL() |
|
506 { |
|
507 CCoeEnv* env = CCoeEnv::Static(); |
|
508 |
|
509 //read default key mapping string from resource |
|
510 if ( iDefaultNumberMapping ) |
|
511 { |
|
512 delete iDefaultNumberMapping; |
|
513 iDefaultNumberMapping = NULL; |
|
514 } |
|
515 iDefaultNumberMapping = env->AllocReadResourceL( R_AKN_FEP_HWR_KEY_MAPPING_DEFAULT ); |
|
516 |
|
517 //read the key maping string from resource |
|
518 TResourceReader reader; |
|
519 env->CreateResourceReaderLC( reader, R_AKN_FEP_HWR_KEY_MAPPING_STRING_LIST ); |
|
520 |
|
521 const TInt count = reader.ReadInt16(); |
|
522 |
|
523 for ( TInt i = 0; i < count; i++ ) |
|
524 { |
|
525 iKeyMappingIdList.Append( reader.ReadInt16() ); |
|
526 TPtrC ptr = reader.ReadTPtrC(); |
|
527 iKeyMappingStringList.Append( ptr.Alloc() ); |
|
528 } |
|
529 iCurrentNumberMode = EAknEditorStandardNumberModeKeymap; |
|
530 |
|
531 CleanupStack::PopAndDestroy(); //reader |
|
532 } |
|
533 |
|
534 // ---------------------------------------------------------------------------- |
|
535 // Judge if a language is Arabic |
|
536 // ---------------------------------------------------------------------------- |
|
537 // |
|
538 TBool CPeninputFingerHwrArDataStore::IsArabicLanguage( TInt aLanguage ) |
|
539 { |
|
540 if( aLanguage == ELangArabic) |
|
541 { |
|
542 return ETrue; |
|
543 } |
|
544 |
|
545 return EFalse; |
|
546 } |
|
547 |
|
548 // ---------------------------------------------------------------------------- |
|
549 // Set real engine language |
|
550 // ---------------------------------------------------------------------------- |
|
551 // |
|
552 void CPeninputFingerHwrArDataStore::SetEngineLanguageL( TInt aLanguage ) |
|
553 { |
|
554 SetLanguageShowText( aLanguage ); |
|
555 iHwrEngine->SetLanguageL( aLanguage ); |
|
556 iHwrEngine->SetPrimaryCandidateNum( KCandidateCount ); |
|
557 } |
|
558 |
|
559 // ---------------------------------------------------------------------------- |
|
560 // Set language show text |
|
561 // ---------------------------------------------------------------------------- |
|
562 // |
|
563 void CPeninputFingerHwrArDataStore::SetLanguageShowText( TInt aLanguage ) |
|
564 { |
|
565 AknPenInputUtils::GetISOLanguageCode( TLanguage( aLanguage ), |
|
566 iLanguageShowText ); |
|
567 } |
|
568 |
|
569 // ---------------------------------------------------------------------------- |
|
570 // CPeninputFingerHwrArDataStore::GetTopGuideLinePos |
|
571 // ---------------------------------------------------------------------------- |
|
572 // |
|
573 void CPeninputFingerHwrArDataStore::GetTopGuideLinePos(TInt& aPos) |
|
574 { |
|
575 iHwrEngine->GetTopGuideLinePos(aPos); |
|
576 } |
|
577 |
|
578 // ---------------------------------------------------------------------------- |
|
579 // CPeninputFingerHwrArDataStore::GetBottomGuideLinePos |
|
580 // ---------------------------------------------------------------------------- |
|
581 // |
|
582 void CPeninputFingerHwrArDataStore::GetBottomGuideLinePos(TInt& aPos) |
|
583 { |
|
584 iHwrEngine->GetBottomGuideLinePos(aPos); |
|
585 } |
|
586 |
|
587 // ---------------------------------------------------------------------------- |
|
588 // CPeninputFingerHwrArDataStore::SetFirstCandidateType |
|
589 // ---------------------------------------------------------------------------- |
|
590 // |
|
591 void CPeninputFingerHwrArDataStore::SetFirstCandidateType(TFirstCandidateType aFirstCandType) |
|
592 { |
|
593 iFirstCandidateType = aFirstCandType; |
|
594 } |
|
595 |
|
596 // ---------------------------------------------------------------------------- |
|
597 // CPeninputFingerHwrArDataStore::ReorderCandidates |
|
598 // ---------------------------------------------------------------------------- |
|
599 // |
|
600 void CPeninputFingerHwrArDataStore::ReorderCandidates() |
|
601 { |
|
602 TInt candCount = iCandidates.Count(); |
|
603 TInt insertPos = 0; |
|
604 if(iFirstCandidateType == ECandLatinCharFirst) |
|
605 { |
|
606 for(TInt i = 0; i < candCount; i++) |
|
607 { |
|
608 TUint16 unicode = (*iCandidates[i])[0]; |
|
609 if(IsLatinChar(unicode)) |
|
610 { |
|
611 if(insertPos < i) |
|
612 { |
|
613 iCandidates.Insert(iCandidates[i],insertPos); |
|
614 iCandidates.Remove(i+1); |
|
615 } |
|
616 insertPos++; |
|
617 } |
|
618 } |
|
619 } |
|
620 else if(iFirstCandidateType == ECandLatinNumFirst) |
|
621 { |
|
622 for(TInt i = 0; i < candCount; i++) |
|
623 { |
|
624 TUint16 unicode = (*iCandidates[i])[0]; |
|
625 if(IsLatinNumber(unicode)) |
|
626 { |
|
627 if(insertPos < i) |
|
628 { |
|
629 iCandidates.Insert(iCandidates[i],insertPos); |
|
630 iCandidates.Remove(i+1); |
|
631 } |
|
632 insertPos++; |
|
633 } |
|
634 } |
|
635 } |
|
636 else if(iFirstCandidateType == ECandArabicIndicNumFirst) |
|
637 { |
|
638 for(TInt i = 0; i < candCount; i++) |
|
639 { |
|
640 TUint16 unicode = (*iCandidates[i])[0]; |
|
641 if(IsArabicNumber(unicode)) |
|
642 { |
|
643 if(insertPos < i) |
|
644 { |
|
645 iCandidates.Insert(iCandidates[i],insertPos); |
|
646 iCandidates.Remove(i+1); |
|
647 } |
|
648 insertPos++; |
|
649 } |
|
650 } |
|
651 } |
|
652 } |
|
653 |
|
654 // ---------------------------------------------------------------------------- |
|
655 // CPeninputFingerHwrArDataStore::IsLatinNumber |
|
656 // ---------------------------------------------------------------------------- |
|
657 // |
|
658 TBool CPeninputFingerHwrArDataStore::IsLatinNumber(TUint16 aChar) |
|
659 { |
|
660 if(aChar >= 0x30 && aChar <= 0x39) |
|
661 { |
|
662 return ETrue; |
|
663 } |
|
664 |
|
665 return EFalse; |
|
666 } |
|
667 |
|
668 // ---------------------------------------------------------------------------- |
|
669 // CPeninputFingerHwrArDataStore::IsLatinChar |
|
670 // ---------------------------------------------------------------------------- |
|
671 // |
|
672 TBool CPeninputFingerHwrArDataStore::IsLatinChar(TUint16 aChar) |
|
673 { |
|
674 if(aChar >= 0x41 && aChar <= 0x5A |
|
675 || aChar >= 0x61 && aChar <= 0x7A) |
|
676 { |
|
677 return ETrue; |
|
678 } |
|
679 |
|
680 return EFalse; |
|
681 } |
|
682 |
|
683 // ---------------------------------------------------------------------------- |
|
684 // CPeninputFingerHwrArDataStore::IsArabicNumber |
|
685 // ---------------------------------------------------------------------------- |
|
686 // |
|
687 TBool CPeninputFingerHwrArDataStore::IsArabicNumber(TUint16 aChar) |
|
688 { |
|
689 if(aChar >= 0x0660 && aChar <= 0x0669) |
|
690 { |
|
691 return ETrue; |
|
692 } |
|
693 |
|
694 return EFalse; |
|
695 } |
|
696 |
|
697 // ---------------------------------------------------------------------------- |
|
698 // CPeninputFingerHwrArDataStore::IsNumberOnlyMode |
|
699 // ---------------------------------------------------------------------------- |
|
700 // |
|
701 TBool CPeninputFingerHwrArDataStore::IsNumberOnlyMode() |
|
702 { |
|
703 if(PrimaryRange() == ERangeNumber || PrimaryRange() == ERangeNativeNumber) |
|
704 { |
|
705 return ETrue; |
|
706 } |
|
707 return EFalse; |
|
708 } |
|
709 |
|
710 // ---------------------------------------------------------------------------- |
|
711 // CPeninputFingerHwrArDataStore::IsNativeNumMode |
|
712 // ---------------------------------------------------------------------------- |
|
713 // |
|
714 TBool CPeninputFingerHwrArDataStore::IsNativeNumMode() |
|
715 { |
|
716 return iIsNativeNumMode; |
|
717 } |
|
718 // End Of File |