logsui/logscntfinder/src/logspredictivetranslator.cpp
changeset 2 7119b73b84d6
parent 0 4a5361db8937
child 4 e52d42f9500c
equal deleted inserted replaced
0:4a5361db8937 2:7119b73b84d6
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 #include <QObject>
    17 #include <QObject>
    18 #include <QLocale>
    18 #include <QLocale>
    19 #include <hbinputkeymapfactory.h>
    19 #include <QHash>
    20 #include <hbinputkeymap.h>
       
    21 #include <hbinputsettingproxy.h>
    20 #include <hbinputsettingproxy.h>
       
    21 #include <QStringList>
    22 
    22 
    23 #include "logspredictivetranslator.h"
    23 #include "logspredictivetranslator.h"
       
    24 #include "logspredictivelatin12keytranslator.h"
       
    25 #include "logspredictivethai12keytranslator.h"
    24 #include "logslogger.h"
    26 #include "logslogger.h"
    25 
    27 
    26 LogsPredictiveTranslator* LogsPredictiveTranslator::mInstance = 0;
    28 LogsPredictiveTranslator* LogsPredictiveTranslator::mInstance = 0;
    27 
    29 
    28 
    30 
    31 // -----------------------------------------------------------------------------
    33 // -----------------------------------------------------------------------------
    32 //
    34 //
    33 LogsPredictiveTranslator* LogsPredictiveTranslator::instance()
    35 LogsPredictiveTranslator* LogsPredictiveTranslator::instance()
    34 {
    36 {
    35     if ( !mInstance ) {
    37     if ( !mInstance ) {
    36         mInstance = new LogsPredictiveTranslator();
    38         HbInputLanguage lang = 
       
    39                 HbInputSettingProxy::instance()->globalInputLanguage();
       
    40         switch( lang.language() ) {
       
    41             case QLocale::Thai:
       
    42                 mInstance = new LogsPredictiveThai12KeyTranslator();
       
    43                 break;
       
    44             default:
       
    45                 mInstance = new LogsPredictiveLatin12KeyTranslator();
       
    46                 break;
       
    47             }
    37     }
    48     }
    38     return mInstance;
    49     return mInstance;
    39 }
    50 }
    40 
    51 
    41 // -----------------------------------------------------------------------------
    52 // -----------------------------------------------------------------------------
    55 //
    66 //
    56 LogsPredictiveTranslator::LogsPredictiveTranslator()
    67 LogsPredictiveTranslator::LogsPredictiveTranslator()
    57 {
    68 {
    58     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\
    69     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\
    59 LogsPredictiveTranslator()" )
    70 LogsPredictiveTranslator()" )
    60     HbInputLanguage lang = 
       
    61             HbInputSettingProxy::instance()->globalInputLanguage();
       
    62     mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), 
       
    63                                                    lang.variant() );
       
    64     
       
    65     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
    71     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
    66 LogsPredictiveTranslator()" )
    72 LogsPredictiveTranslator()" )
    67 }
    73 }
    68 
    74 
    69 
    75 
    74 LogsPredictiveTranslator::~LogsPredictiveTranslator()
    80 LogsPredictiveTranslator::~LogsPredictiveTranslator()
    75 {
    81 {
    76     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\
    82     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\
    77 ~LogsPredictiveTranslator()" )
    83 ~LogsPredictiveTranslator()" )
    78     mInstance = 0;
    84     mInstance = 0;
       
    85     mKeyMap = 0;
    79     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
    86     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
    80 ~LogsPredictiveTranslator()" )
    87 ~LogsPredictiveTranslator()" )
    81     
    88     
    82 }
    89 }
    83 
       
    84 // -----------------------------------------------------------------------------
       
    85 // LogsPredictiveTranslator::translate()
       
    86 // -----------------------------------------------------------------------------
       
    87 //
       
    88 const QChar LogsPredictiveTranslator::translate( const QChar character ) const
       
    89 {
       
    90     const HbMappedKey* mappedKey = mKeyMap->keyForCharacter( HbKeyboardVirtual12Key, 
       
    91                                      character );
       
    92     if (!mappedKey) {
       
    93         QString decomposed = character.decomposition();
       
    94         if (decomposed.isEmpty()) {
       
    95             return character;
       
    96         }
       
    97         return translate (decomposed.at(0));
       
    98     }
       
    99     return mappedKey->keycode;
       
   100 }
       
   101 
       
   102 
    90 
   103 // -----------------------------------------------------------------------------
    91 // -----------------------------------------------------------------------------
   104 // LogsPredictiveTranslator::translate()
    92 // LogsPredictiveTranslator::translate()
   105 // -----------------------------------------------------------------------------
    93 // -----------------------------------------------------------------------------
   106 //
    94 //
   112     
   100     
   113     count = count == -1 ? name.length() : count;
   101     count = count == -1 ? name.length() : count;
   114     QString result;
   102     QString result;
   115     const QChar* content = name.data();
   103     const QChar* content = name.data();
   116     int index = 0;
   104     int index = 0;
   117     while( index < name.length() && index < count ) {
   105     while( index < count ) {
   118         result.insert( index++, translate( *content++ ) );
   106         QChar ch = translateChar( *content++ );
       
   107         if ( !ch.isNull() ) {
       
   108             result.append( ch );
       
   109         }
       
   110         index++;
   119     }
   111     }
   120     
       
   121     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translate()" )
   112     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translate()" )
   122     return result;
   113     return result;
   123 }
   114 }
   124 
   115 
   125 // -----------------------------------------------------------------------------
   116 // -----------------------------------------------------------------------------
   139     } else {
   130     } else {
   140         if ( !optimize ) {
   131         if ( !optimize ) {
   141             QString translatedText = translate( text, pattern.length() );
   132             QString translatedText = translate( text, pattern.length() );
   142             matchCount = translatedText == pattern ? matchCount : 0; 
   133             matchCount = translatedText == pattern ? matchCount : 0; 
   143         } else {
   134         } else {
   144             matchCount = translate( *text.data() ) == *pattern.data() ? 
   135             matchCount = translateChar( *text.data() ) == *pattern.data() ? 
   145                          matchCount : 0;
   136                          matchCount : 0;
   146         }
   137         }
   147     }
   138     }
   148         
   139         
   149     LOGS_QDEBUG_2( "logs [FINDER] matchCount=", matchCount )
   140     LOGS_QDEBUG_2( "logs [FINDER] matchCount=", matchCount )