fixed bug(about SetInputPanelLanguage)
authorChulheon <ch.jeong47@samsung.com>
Mon, 3 Jun 2013 12:37:05 +0000 (21:37 +0900)
committerChulheon <ch.jeong47@samsung.com>
Mon, 3 Jun 2013 12:37:05 +0000 (21:37 +0900)
Change-Id: Id656dba17f0997f36c3ae1e1b45ab902ffafdd6d

src/ui/FUi_BidiUtils.cpp
src/ui/FUi_InputConnectionImpl.cpp
src/ui/inc/FUi_BidiUtils.h

index 3df0313..a48a33f 100644 (file)
@@ -148,8 +148,8 @@ _BidiUtils::GetLocaleLanguageN(void)
     return pLocaleLanguage;
 }
 
-ByteBuffer*
-_BidiUtils::ConvertLanguageCountryCode2Utf8N(LanguageCode languageCode)
+String
+_BidiUtils::ConvertLanguageCountryCodeString(LanguageCode languageCode)
 {
 static const char* defaultLauguageCountryCodeArray[LANGUAGE_MAX] =
 {
@@ -659,7 +659,6 @@ static const char* defaultLauguageCountryCodeArray[LANGUAGE_MAX] =
 
        String languageCodeString(L"LANG:");
        String countryCodeString;
-       ByteBuffer* pCountry = null;
 
        languageCodeString.Append(Locale::LanguageCodeToTwoLetterLanguageCodeString(languageCode));
        const char* pCountryCode = (languageCode < LANGUAGE_MAX) ? defaultLauguageCountryCodeArray[languageCode] : "";
@@ -667,7 +666,7 @@ static const char* defaultLauguageCountryCodeArray[LANGUAGE_MAX] =
        int len = strlen(pCountryCode);
        if (len == 0)
        {
-               return null;
+               return String(L"");
        }
        if (len == 2)
        {
@@ -681,7 +680,7 @@ static const char* defaultLauguageCountryCodeArray[LANGUAGE_MAX] =
 
                if (!pLocaleLanguage)
                {
-                       return null;
+                       return String(L"");
                }
 
                const String displayCountry = pLocaleLanguage->GetCountryCodeString();
@@ -703,9 +702,7 @@ static const char* defaultLauguageCountryCodeArray[LANGUAGE_MAX] =
                languageCodeString.Append(countryCodeString);
        }
 
-       pCountry = StringUtil::StringToUtf8N(languageCodeString);
-
-       return pCountry;
+       return languageCodeString;
 }
 
 }} // Tizen::Ui
index bb2c49f..227faec 100644 (file)
@@ -1052,17 +1052,28 @@ _InputConnectionImpl::SetInputPanelLanguage(LanguageCode languageCode)
 
        SysAssertf(__pContext != null, "Not yet constructed. Construct() should be called before use.");
 
-       ByteBuffer* pBuffer = _BidiUtils::ConvertLanguageCountryCode2Utf8N(languageCode);
-       if (!pBuffer)
+       String language(L"");
+       language = _BidiUtils::ConvertLanguageCountryCodeString(languageCode);
+       if (language == String(L""))
        {
                const char* pLanguage = "LANG:en_US";
                ecore_imf_context_input_panel_imdata_set(__pContext, pLanguage, LANGUAGE_IM_DATA_LENGTH);
                return r;
        }
-       ecore_imf_context_input_panel_imdata_set(__pContext, pBuffer, LANGUAGE_IM_DATA_LENGTH);
+       else
+       {
+               char* pLanguage = null;
+               int len = wcstombs(0, static_cast<const wchar_t*>(language.GetPointer()), 0);
+               pLanguage = (char*)malloc(len+1);
+               SysTryReturn(NID_UI, pLanguage, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] pLanguage is null.");
+
+               len = wcstombs(pLanguage, static_cast<const wchar_t*>(language.GetPointer()), len);
+               pLanguage[len] = null;
 
-       delete pBuffer;
+               ecore_imf_context_input_panel_imdata_set(__pContext, pLanguage, LANGUAGE_IM_DATA_LENGTH);
 
+               free(pLanguage);
+       }
        return r;
 }
 
index 8287dd1..a306b7d 100644 (file)
@@ -39,7 +39,7 @@ public:
        static bool IsBidiLanguage(Tizen::Locales::LanguageCode languageCode);
        static Tizen::Locales::LanguageCode GetDisplayLanguage(void);
        static Tizen::Locales::Locale* GetLocaleLanguageN(void);
-       static Tizen::Base::ByteBuffer* ConvertLanguageCountryCode2Utf8N(Tizen::Locales::LanguageCode languageCode);
+       static Tizen::Base::String ConvertLanguageCountryCodeString(Tizen::Locales::LanguageCode languageCode);
 
 private:
        _BidiUtils(void);