diff -r 4a5361db8937 -r 7119b73b84d6 logsui/logscntfinder/src/logspredictivetranslator.cpp --- a/logsui/logscntfinder/src/logspredictivetranslator.cpp Tue May 04 12:39:37 2010 +0300 +++ b/logsui/logscntfinder/src/logspredictivetranslator.cpp Fri May 14 15:52:41 2010 +0300 @@ -16,11 +16,13 @@ */ #include #include -#include -#include +#include #include +#include #include "logspredictivetranslator.h" +#include "logspredictivelatin12keytranslator.h" +#include "logspredictivethai12keytranslator.h" #include "logslogger.h" LogsPredictiveTranslator* LogsPredictiveTranslator::mInstance = 0; @@ -33,7 +35,16 @@ LogsPredictiveTranslator* LogsPredictiveTranslator::instance() { if ( !mInstance ) { - mInstance = new LogsPredictiveTranslator(); + HbInputLanguage lang = + HbInputSettingProxy::instance()->globalInputLanguage(); + switch( lang.language() ) { + case QLocale::Thai: + mInstance = new LogsPredictiveThai12KeyTranslator(); + break; + default: + mInstance = new LogsPredictiveLatin12KeyTranslator(); + break; + } } return mInstance; } @@ -57,11 +68,6 @@ { LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\ LogsPredictiveTranslator()" ) - HbInputLanguage lang = - HbInputSettingProxy::instance()->globalInputLanguage(); - mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), - lang.variant() ); - LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ LogsPredictiveTranslator()" ) } @@ -76,6 +82,7 @@ LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\ ~LogsPredictiveTranslator()" ) mInstance = 0; + mKeyMap = 0; LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ ~LogsPredictiveTranslator()" ) @@ -85,25 +92,6 @@ // LogsPredictiveTranslator::translate() // ----------------------------------------------------------------------------- // -const QChar LogsPredictiveTranslator::translate( const QChar character ) const -{ - const HbMappedKey* mappedKey = mKeyMap->keyForCharacter( HbKeyboardVirtual12Key, - character ); - if (!mappedKey) { - QString decomposed = character.decomposition(); - if (decomposed.isEmpty()) { - return character; - } - return translate (decomposed.at(0)); - } - return mappedKey->keycode; -} - - -// ----------------------------------------------------------------------------- -// LogsPredictiveTranslator::translate() -// ----------------------------------------------------------------------------- -// const QString LogsPredictiveTranslator::translate( const QString& name, int count ) const { @@ -114,10 +102,13 @@ QString result; const QChar* content = name.data(); int index = 0; - while( index < name.length() && index < count ) { - result.insert( index++, translate( *content++ ) ); + while( index < count ) { + QChar ch = translateChar( *content++ ); + if ( !ch.isNull() ) { + result.append( ch ); + } + index++; } - LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translate()" ) return result; } @@ -141,7 +132,7 @@ QString translatedText = translate( text, pattern.length() ); matchCount = translatedText == pattern ? matchCount : 0; } else { - matchCount = translate( *text.data() ) == *pattern.data() ? + matchCount = translateChar( *text.data() ) == *pattern.data() ? matchCount : 0; } }