modified SetInputPanelLanguage() API
authorChulheon <ch.jeong47@samsung.com>
Fri, 24 May 2013 11:36:21 +0000 (20:36 +0900)
committerChulheon <ch.jeong47@samsung.com>
Fri, 24 May 2013 11:36:21 +0000 (20:36 +0900)
Change-Id: Ib75d6d8f12cecb5426445ab95f80d74a909f7734

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

index 2edeb57..3df0313 100644 (file)
  */
 
 #include <fribidi.h>
+#include <FBaseSysLog.h>
+#include <FBaseUtil.h>
 #include <FLclLocaleManager.h>
 #include <FSysSettingInfo.h>
 #include "FUi_BidiUtils.h"
 
 using namespace Tizen::Base;
+using namespace Tizen::Base::Utility;
 using namespace Tizen::Locales;
 
 namespace Tizen { namespace Ui
@@ -114,4 +117,595 @@ _BidiUtils::GetDisplayLanguage(void)
        return languageCode;
 }
 
+Locale*
+_BidiUtils::GetLocaleLanguageN(void)
+{
+       result r = E_SUCCESS;
+       String localeLanguage;
+       String key(L"http://tizen.org/setting/locale.language");
+
+       r = Tizen::System::SettingInfo::GetValue(key, localeLanguage);
+       SysTryReturn(NID_UI, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       String delim(L"_");
+       StringTokenizer strTok(localeLanguage, delim);
+       int count = strTok.GetTokenCount();     // count == 2
+       SysTryReturn(NID_UI, count == 2, null, E_SYSTEM, "The locale is invalid.");
+
+       String language;
+       String country;
+       LanguageCode languageCode = LANGUAGE_INVALID;
+       CountryCode countryCode = COUNTRY_INVALID;
+       strTok.GetNextToken(language);
+       strTok.GetNextToken(country);
+
+       languageCode = Locale::StringToLanguageCode(language);
+       countryCode = Locale::StringToCountryCode(country);
+
+       Locale* pLocaleLanguage = new (std::nothrow) Locale(languageCode, countryCode);
+       SysTryReturn(NID_UI, pLocaleLanguage, null, E_OUT_OF_MEMORY, "Memory allocation failed.");
+
+    return pLocaleLanguage;
+}
+
+ByteBuffer*
+_BidiUtils::ConvertLanguageCountryCode2Utf8N(LanguageCode languageCode)
+{
+static const char* defaultLauguageCountryCodeArray[LANGUAGE_MAX] =
+{
+       "", //"aar", /**< "Afar" */
+       "", //"abk", /**< "Abkhazian" */
+       "", //"ace", /**< "Achinese" */
+       "", //"ach", /**< "Acoli" */
+       "", //"ada", /**< "Adangme" */
+       "", //"ady", /**< "Adyghe; Adygei" */
+       "", //"afa", /**< "Afro-Asiatic languages" */
+       "", //"afh", /**< "Afrihili" */
+       "", //"afr", /**< "Afrikaans" */
+       "", //"ain", /**< "Ainu" */
+       "", //"aka", /**< "Akan" */
+       "", //"akk", /**< "Akkadian" */
+       "AL", //"sqi", /**< "Albanian" */
+       "", //"ale", /**< "Aleut" */
+       "", //"alg", /**< "Algonquian languages" */
+       "", //"alt", /**< "Southern Altai" */
+       "", //"amh", /**< "Amharic" */
+       "", //"ang", /**< "English, Old (ca.450-1100)" */
+       "", //"anp", /**< "Angika" */
+       "", //"apa", /**< "Apache languages" */
+       "AE", //"ara", /**< "Arabic" */
+       "", //"arc", /**< "Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)" */
+       "", //"arg", /**< "Aragonese" */
+       "", //"hye", /**< "Armenian" */
+       "", //"arn", /**< "Mapudungun; Mapuche" */
+       "", //"arp", /**< "Arapaho" */
+       "", //"art", /**< "Artificial languages" */
+       "", //"arw", /**< "Arawak" */
+       "IN", //"asm", /**< "Assamese" */
+       "", //"ast", /**< "Asturian; Bable; Leonese; Asturleonese" */
+       "", //"ath", /**< "Athapascan languages" */
+       "", //"aus", /**< "Australian languages" */
+       "", //"ava", /**< "Avaric" */
+       "", //"ave", /**< "Avestan" */
+       "", //"awa", /**< "Awadhi" */
+       "", //"aym", /**< "Aymara" */
+       "AZ", //"aze", /**< "Azerbaijani" */
+       "AZ", //"aze", /**< Azerbaijani (Arabic) */
+       "AZ", //"aze", /**< Azerbaijani (Cyrillic) */
+       "AZ", //"aze", /**< Azerbaijani (Latin) */
+       "", //"bad", /**< "Banda languages" */
+       "", //"bai", /**< "Bamileke languages" */
+       "", //"bak", /**< "Bashkir" */
+       "", //"bal", /**< "Baluchi" */
+       "", //"bam", /**< "Bambara" */
+       "", //"ban", /**< "Balinese" */
+       "ES", //"eus", /**< "Basque" */
+       "", //"bas", /**< "Basa" */
+       "", //"bat", /**< "Baltic languages" */
+       "", //"bej", /**< "Beja; Bedawiyet" */
+       "", //"bel", /**< "Belarusian" */
+       "", //"bem", /**< "Bemba" */
+       "IN", //"ben", /**< "Bengali" */
+       "", //"ber", /**< "Berber languages" */
+       "", //"bho", /**< "Bhojpuri" */
+       "", //"bih", /**< "Bihari" */
+       "", //"bik", /**< "Bikol" */
+       "", //"bin", /**< "Bini; Edo" */
+       "", //"bis", /**< "Bislama" */
+       "", //"bla", /**< "Siksika" */
+       "", //"bnt", /**< "Bantu (Other)" */
+       "", //"bos", /**< "Bosnian" */
+       "", //"bra", /**< "Braj" */
+       "", //"bre", /**< "Breton" */
+       "", //"btk", /**< "Batak languages" */
+       "", //"bua", /**< "Buriat" */
+       "", //"bug", /**< "Buginese" */
+       "BG", //"bul", /**< "Bulgarian" */
+       "", //"mya", /**< "Burmese" */
+       "", //"byn", /**< "Blin; Bilin" */
+       "", //"cad", /**< "Caddo" */
+       "", //"cai", /**< "Central American Indian languages" */
+       "", //"car", /**< "Galibi Carib" */
+       "ES", //"cat", /**< "Catalan; Valencian" */
+       "", //"cau", /**< "Caucasian languages" */
+       "", //"ceb", /**< "Cebuano" */
+       "", //"cel", /**< "Celtic languages" */
+       "", //"cha", /**< "Chamorro" */
+       "", //"chb", /**< "Chibcha" */
+       "", //"che", /**< "Chechen" */
+       "", //"chg", /**< "Chagatai" */
+       "CN,SG,HK,TW,CN", //"zho", /**< "Chinese" */
+       "SG", //"zho-hans", /**< "Chinese (Simplified)" */
+       "HK,TW,HK", //"zho-hant", /**< "Chinese (Traditional)" */
+       "", //"chk", /**< "Chuukese" */
+       "", //"chm", /**< "Mari" */
+       "", //"chn", /**< "Chinook jargon" */
+       "", //"cho", /**< "Choctaw" */
+       "", //"chp", /**< "Chipewyan; Dene Suline" */
+       "", //"chr", /**< "Cherokee" */
+       "", //"chu", /**< "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic" */
+       "", //"chv", /**< "Chuvash" */
+       "", //"chy", /**< "Cheyenne" */
+       "", //"cmc", /**< "Chamic languages" */
+       "", //"cop", /**< "Coptic" */
+       "", //"cor", /**< "Cornish" */
+       "", //"cos", /**< "Corsican" */
+       "", //"cpe", /**< "Creoles and pidgins, English based" */
+       "", //"cpf", /**< "Creoles and pidgins, French-based " */
+       "", //"cpp", /**< "Creoles and pidgins, Portuguese-based " */
+       "", //"cre", /**< "Cree" */
+       "TR", //"crh", /**< "Crimean Tatar; Crimean Turkish" */
+       "", //"crp", /**< "Creoles and pidgins " */
+       "", //"csb", /**< "Kashubian" */
+       "", //"cus", /**< "Cushitic languages" */
+       "CZ", //"ces", /**< "Czech" */
+       "", //"dak", /**< "Dakota" */
+       "DK", //"dan", /**< "Danish" */
+       "", //"dar", /**< "Dargwa" */
+       "", //"day", /**< "Land Dayak languages" */
+       "", //"del", /**< "Delaware" */
+       "", //"den", /**< "Slave (Athapascan)" */
+       "", //"dgr", /**< "Dogrib" */
+       "", //"din", /**< "Dinka" */
+       "", //"div", /**< "Divehi; Dhivehi; Maldivian" */
+       "", //"doi", /**< "Dogri" */
+       "", //"dra", /**< "Dravidian languages" */
+       "", //"dsb", /**< "Lower Sorbian" */
+       "", //"dua", /**< "Duala" */
+       "", //"dum", /**< "Dutch, Middle (ca.1050-1350)" */
+       "NL", //"nld", /**< "Dutch; Flemish" */
+       "", //"dyu", /**< "Dyula" */
+       "", //"dzo", /**< "Dzongkha" */
+       "", //"efi", /**< "Efik" */
+       "", //"egy", /**< "Egyptian (Ancient)" */
+       "", //"eka", /**< "Ekajuk" */
+       "", //"elx", /**< "Elamite" */
+       "GB,US,AU,GB", //"eng", /**< "English" */
+       "", //"enm", /**< "English, Middle (1100-1500)" */
+       "", //"epo", /**< "Esperanto" */
+       "EE", //"est", /**< "Estonian" */
+       "", //"ewe", /**< "Ewe" */
+       "", //"ewo", /**< "Ewondo" */
+       "", //"fan", /**< "Fang" */
+       "", //"fao", /**< "Faroese" */
+       "", //"fat", /**< "Fanti" */
+       "", //"fij", /**< "Fijian" */
+       "", //"fil", /**< "Filipino; Pilipino" */
+       "FI", //"fin", /**< "Finnish" */
+       "", //"fiu", /**< "Finno-Ugrian languages" */
+       "", //"fon", /**< "Fon" */
+       "FR,CA,FR", //"fra", /**< "French" */
+       "FR", //"frm", /**< "French, Middle (ca.1400-1600)" */
+       "FR", //"fro", /**< "French, Old (842-ca.1400)" */
+       "", //"frr", /**< "Northern Frisian" */
+       "", //"frs", /**< "Eastern Frisian" */
+       "", //"fry", /**< "Western Frisian" */
+       "", //"ful", /**< "Fulah" */
+       "", //"fur", /**< "Friulian" */
+       "", //"gaa", /**< "Ga" */
+       "", //"gay", /**< "Gayo" */
+       "", //"gba", /**< "Gbaya" */
+       "DE", //"gem", /**< "Germanic languages" */
+       "GE", //"kat", /**< "Georgian" */
+       "DE", //"deu", /**< "German" */
+       "", //"gez", /**< "Geez" */
+       "", //"gil", /**< "Gilbertese" */
+       "", //"gla", /**< "Gaelic; Scottish Gaelic" */
+       "IE", //"gle", /**< "Irish" */
+       "ES", //"glg", /**< "Galician" */
+       "", //"glv", /**< "Manx" */
+       "DE", //"gmh", /**< "German, Middle High (ca.1050-1500)" */
+       "DE", //"goh", /**< "German, Old High (ca.750-1050)" */
+       "", //"gon", /**< "Gondi" */
+       "", //"gor", /**< "Gorontalo" */
+       "", //"got", /**< "Gothic" */
+       "", //"grb", /**< "Grebo" */
+       "GR", //"grc", /**< "Greek, Ancient (to 1453)" */
+       "GR", //"ell", /**< "Greek, Modern (1453-)" */
+       "", //"grn", /**< "Guarani" */
+       "CH", //"gsw", /**< "Swiss German; Alemannic; Alsatian" */
+       "IN", //"guj", /**< "Gujarati" */
+       "", //"gwi", /**< "Gwich'in" */
+       "", //"hai", /**< "Haida" */
+       "", //"hat", /**< "Haitian; Haitian Creole" */
+       "", //"hau", /**< "Hausa" */
+       "", //"hau-latn", /**< "Hausa (Latin)" */
+       "US", //"haw", /**< "Hawaiian" */
+       "IL", //"heb", /**< "Hebrew" */
+       "", //"her", /**< "Herero" */
+       "", //"hil", /**< "Hiligaynon" */
+       "", //"him", /**< "Himachali" */
+       "IN", //"hin", /**< "Hindi" */
+       "", //"hit", /**< "Hittite" */
+       "", //"hmn", /**< "Hmong" */
+       "", //"hmo", /**< "Hiri Motu" */
+       "HR", //"hrv", /**< "Croatian" */
+       "", //"hsb", /**< "Upper Sorbian" */
+       "HU", //"hun", /**< "Hungarian" */
+       "", //"hup", /**< "Hupa" */
+       "", //"iba", /**< "Iban" */
+       "", //"ibo", /**< "Igbo" */
+       "IS", //"isl", /**< "Icelandic" */
+       "", //"ido", /**< "Ido" */
+       "", //"iii", /**< "Sichuan Yi; Nuosu" */
+       "", //"ijo", /**< "Ijo languages" */
+       "", //"iku", /**< "Inuktitut" */
+       "", //"ile", /**< "Interlingue; Occidental" */
+       "", //"ilo", /**< "Iloko" */
+       "", //"ina", /**< "Interlingua (International Auxiliary Language Association)" */
+       "", //"inc", /**< "Indic languages" */
+       "ID", //"ind", /**< "Indonesian" */
+       "", //"ine", /**< "Indo-European languages" */
+       "", //"inh", /**< "Ingush" */
+       "", //"ipk", /**< "Inupiaq" */
+       "", //"ira", /**< "Iranian languages" */
+       "", //"iro", /**< "Iroquoian languages" */
+       "IT", //"ita", /**< "Italian" */
+       "", //"jav", /**< "Javanese" */
+       "", //"jbo", /**< "Lojban" */
+       "JP", //"jpn", /**< "Japanese" */
+       "", //"jpr", /**< "Judeo-Persian" */
+       "", //"jrb", /**< "Judeo-Arabic" */
+       "", //"kaa", /**< "Kara-Kalpak" */
+       "", //"kab", /**< "Kabyle" */
+       "", //"kac", /**< "Kachin; Jingpho" */
+       "", //"kal", /**< "Kalaallisut; Greenlandic" */
+       "", //"kam", /**< "Kamba" */
+       "IN", //"kan", /**< "Kannada" */
+       "", //"kar", /**< "Karen languages" */
+       "", //"kas", /**< "Kashmiri" */
+       "", //"kau", /**< "Kanuri" */
+       "", //"kaw", /**< "Kawi" */
+       "KZ", //"kaz", /**< "Kazakh" */
+       "KZ", //"kaz-cyrl", /**< "Kazakh (Cyrillic)" */
+       "", //"kbd", /**< "Kabardian" */
+       "", //"kha", /**< "Khasi" */
+       "", //"khi", /**< "Khoisan languages" */
+       "", //"khm", /**< "Central Khmer" */
+       "", //"kho", /**< "Khotanese; Sakan" */
+       "", //"kik", /**< "Kikuyu; Gikuyu" */
+       "", //"kin", /**< "Kinyarwanda" */
+       "", //"kir", /**< "Kirghiz; Kyrgyz" */
+       "", //"kmb", /**< "Kimbundu" */
+       "", //"kok", /**< "Konkani" */
+       "", //"kom", /**< "Komi" */
+       "", //"kon", /**< "Kongo" */
+       "KR", //"kor", /**< "Korean" */
+       "", //"kos", /**< "Kosraean" */
+       "", //"kpe", /**< "Kpelle" */
+       "", //"krc", /**< "Karachay-Balkar" */
+       "", //"krl", /**< "Karelian" */
+       "", //"kro", /**< "Kru languages" */
+       "", //"kru", /**< "Kurukh" */
+       "", //"kua", /**< "Kuanyama; Kwanyama" */
+       "", //"kum", /**< "Kumyk" */
+       "", //"kur", /**< "Kurdish" */
+       "", //"kut", /**< "Kutenai" */
+       "", //"lad", /**< "Ladino" */
+       "", //"lah", /**< "Lahnda" */
+       "", //"lam", /**< "Lamba" */
+       "", //"lao", /**< "Lao" */
+       "", //"lat", /**< "Latin" */
+       "LV", //"lav", /**< "Latvian" */
+       "", //"lez", /**< "Lezghian" */
+       "", //"lim", /**< "Limburgan; Limburger; Limburgish" */
+       "", //"lin", /**< "Lingala" */
+       "LT", //"lit", /**< "Lithuanian" */
+       "", //"lol", /**< "Mongo" */
+       "", //"loz", /**< "Lozi" */
+       "", //"ltz", /**< "Luxembourgish; Letzeburgesch" */
+       "", //"lua", /**< "Luba-Lulua" */
+       "", //"lub", /**< "Luba-Katanga" */
+       "", //"lug", /**< "Ganda" */
+       "", //"lui", /**< "Luiseno" */
+       "", //"lun", /**< "Lunda" */
+       "", //"luo", /**< "Luo (Kenya and Tanzania)" */
+       "", //"lus", /**< "Lushai" */
+       "MK", //"mkd", /**< "Macedonian" */
+       "", //"mad", /**< "Madurese" */
+       "", //"mag", /**< "Magahi" */
+       "", //"mah", /**< "Marshallese" */
+       "", //"mai", /**< "Maithili" */
+       "", //"mak", /**< "Makasar" */
+       "IN", //"mal", /**< "Malayalam" */
+       "", //"man", /**< "Mandingo" */
+       "", //"mri", /**< "Maori" */
+       "", //"map", /**< "Austronesian languages" */
+       "IN", //"mar", /**< "Marathi" */
+       "", //"mas", /**< "Masai" */
+       "MY", //"msa", /**< "Malay" */
+       "", //"mdf", /**< "Moksha" */
+       "", //"mdr", /**< "Mandar" */
+       "", //"men", /**< "Mende" */
+       "IE", //"mga", /**< "Irish, Middle (900-1200)" */
+       "", //"mic", /**< "Mi'kmaq; Micmac" */
+       "", //"min", /**< "Minangkabau" */
+       "", //"mis", /**< "Uncoded languages" */
+       "", //"mkh", /**< "Mon-Khmer languages" */
+       "", //"mlg", /**< "Malagasy" */
+       "", //"mlt", /**< "Maltese" */
+       "", //"mnc", /**< "Manchu" */
+       "", //"mni", /**< "Manipuri" */
+       "", //"mno", /**< "Manobo languages" */
+       "", //"moh", /**< "Mohawk" */
+       "", //"mon", /**< "Mongolian" */
+       "", //"mos", /**< "Mossi" */
+       "", //"mul", /**< "Multiple languages" */
+       "", //"mun", /**< "Munda languages" */
+       "", //"mus", /**< "Creek" */
+       "", //"mwl", /**< "Mirandese" */
+       "", //"mwr", /**< "Marwari" */
+       "", //"myn", /**< "Mayan languages" */
+       "", //"myv", /**< "Erzya" */
+       "", //"nah", /**< "Nahuatl languages" */
+       "US", //"nai", /**< "North American Indian languages" */
+       "", //"nap", /**< "Neapolitan" */
+       "", //"nau", /**< "Nauru" */
+       "", //"nav", /**< "Navajo; Navaho" */
+       "", //"nbl", /**< "Ndebele, South; South Ndebele" */
+       "", //"nde", /**< "Ndebele, North; North Ndebele" */
+       "", //"ndo", /**< "Ndonga" */
+       "DE", //"nds", /**< "Low German; Low Saxon; German, Low; Saxon, Low" */
+       "IN", //"nep", /**< "Nepali" */
+       "", //"new", /**< "Nepal Bhasa; Newari" */
+       "", //"nia", /**< "Nias" */
+       "", //"nic", /**< "Niger-Kordofanian languages" */
+       "", //"niu", /**< "Niuean" */
+       "", //"nno", /**< "Norwegian Nynorsk; Nynorsk, Norwegian" */
+       "", //"nob", /**< "Bokmal, Norwegian; Norwegian Bokmal" */
+       "", //"nog", /**< "Nogai" */
+       "", //"non", /**< "Norse, Old" */
+       "NO", //"nor", /**< "Norwegian" */
+       "", //"nqo", /**< "N'Ko" */
+       "", //"nso", /**< "Pedi; Sepedi; Northern Sotho" */
+       "", //"nub", /**< "Nubian languages" */
+       "", //"nwc", /**< "Classical Newari; Old Newari; Classical Nepal Bhasa" */
+       "", //"nya", /**< "Chichewa; Chewa; Nyanja" */
+       "", //"nym", /**< "Nyamwezi" */
+       "", //"nyn", /**< "Nyankole" */
+       "", //"nyo", /**< "Nyoro" */
+       "", //"nzi", /**< "Nzima" */
+       "", //"oci", /**< "Occitan (post 1500); Provencal" */
+       "", //"oji", /**< "Ojibwa" */
+       "IN", //"ori", /**< "Oriya" */
+       "", //"orm", /**< "Oromo" */
+       "", //"osa", /**< "Osage" */
+       "", //"oss", /**< "Ossetian; Ossetic" */
+       "TR", //"ota", /**< "Turkish, Ottoman (1500-1928)" */
+       "", //"oto", /**< "Otomian languages" */
+       "", //"paa", /**< "Papuan languages" */
+       "", //"pag", /**< "Pangasinan" */
+       "", //"pal", /**< "Pahlavi" */
+       "", //"pam", /**< "Pampanga; Kapampangan" */
+       "IN", //"pan", /**< "Panjabi; Punjabi" */
+       "IN", //"pan-arab", /**< "Panjabi; Punjabi (Arabic)" */
+       "IN", //"pan-guru", /**< "Panjabi; Punjabi (Gurmukhi)" */
+       "", //"pap", /**< "Papiamento" */
+       "", //"pau", /**< "Palauan" */
+       "IR", //"peo", /**< "Persian, Old (ca.600-400 B.C.)" */
+       "IR", //"fas", /**< "Persian" */
+       "PH", //"phi", /**< "Philippine languages" */
+       "", //"phn", /**< "Phoenician" */
+       "", //"pli", /**< "Pali" */
+       "PL", //"pol", /**< "Polish" */
+       "", //"pon", /**< "Pohnpeian" */
+       "PT,BR,PT", //"por", /**< "Portuguese" */
+       "", //"pra", /**< "Prakrit languages" */
+       "", //"pro", /**< "Provencal, Old (to 1500)" */
+       "", //"pus", /**< "Pushto; Pashto" */
+       "", //"qaa-qtz", /**< "Reserved for local use" */
+       "", //"que", /**< "Quechua" */
+       "", //"raj", /**< "Rajasthani" */
+       "", //"rap", /**< "Rapanui" */
+       "", //"rar", /**< "Rarotongan; Cook Islands Maori" */
+       "", //"roa", /**< "Romance languages" */
+       "", //"roh", /**< "Romansh" */
+       "", //"rom", /**< "Romany" */
+       "RO", //"ron", /**< "Romanian; Moldavian; Moldovan" */
+       "", //"run", /**< "Rundi" */
+       "", //"rup", /**< "Aromanian; Arumanian; Macedo-Romanian" */
+       "RU", //"rus", /**< "Russian" */
+       "", //"sad", /**< "Sandawe" */
+       "", //"sag", /**< "Sango" */
+       "", //"sah", /**< "Yakut" */
+       "", //"sai", /**< "South American Indian (Other)" */
+       "", //"sal", /**< "Salishan languages" */
+       "", //"sam", /**< "Samaritan Aramaic" */
+       "", //"san", /**< "Sanskrit" */
+       "", //"sas", /**< "Sasak" */
+       "", //"sat", /**< "Santali" */
+       "", //"scn", /**< "Sicilian" */
+       "", //"sco", /**< "Scots" */
+       "", //"sel", /**< "Selkup" */
+       "", //"sem", /**< "Semitic languages" */
+       "IE", //"sga", /**< "Irish, Old (to 900)" */
+       "", //"sgn", /**< "Sign Languages" */
+       "", //"shn", /**< "Shan" */
+       "", //"sid", /**< "Sidamo" */
+       "LK", //"sin", /**< "Sinhala; Sinhalese" */
+       "", //"sio", /**< "Siouan languages" */
+       "", //"sit", /**< "Sino-Tibetan languages" */
+       "", //"sla", /**< "Slavic languages" */
+       "SK", //"slk", /**< "Slovak" */
+       "SI", //"slv", /**< "Slovenian" */
+       "", //"sma", /**< "Southern Sami" */
+       "", //"sme", /**< "Northern Sami" */
+       "", //"smi", /**< "Sami languages" */
+       "", //"smj", /**< "Lule Sami" */
+       "", //"smn", /**< "Inari Sami" */
+       "", //"smo", /**< "Samoan" */
+       "", //"sms", /**< "Skolt Sami" */
+       "", //"sna", /**< "Shona" */
+       "", //"snd", /**< "Sindhi" */
+       "", //"snk", /**< "Soninke" */
+       "", //"sog", /**< "Sogdian" */
+       "", //"som", /**< "Somali" */
+       "", //"son", /**< "Songhai languages" */
+       "", //"sot", /**< "Sotho, Southern" */
+       "ES,US,ES", //"spa", /**< "Spanish; Castilian" */
+       "", //"srd", /**< "Sardinian" */
+       "", //"srn", /**< "Sranan Tongo" */
+       "RS", //"srp", /**< "Serbian" */
+       "RS", //"srp-cyrl", /**< "Serbian (Cyrillic)" */
+       "RS", //"srp-latn", /**< "Serbian (Latin)" */
+       "", //"srr", /**< "Serer" */
+       "", //"ssa", /**< "Nilo-Saharan languages" */
+       "", //"ssw", /**< "Swati" */
+       "", //"suk", /**< "Sukuma" */
+       "", //"sun", /**< "Sundanese" */
+       "", //"sus", /**< "Susu" */
+       "", //"sux", /**< "Sumerian" */
+       "", //"swa", /**< "Swahili" */
+       "SE", //"swe", /**< "Swedish" */
+       "", //"syc", /**< "Classical Syriac" */
+       "", //"syr", /**< "Syriac" */
+       "", //"tah", /**< "Tahitian" */
+       "", //"tai", /**< "Tai languages" */
+       "IN", //"tam", /**< "Tamil" */
+       "", //"tat", /**< "Tatar" */
+       "IN", //"tel", /**< "Telugu" */
+       "", //"tem", /**< "Timne" */
+       "", //"ter", /**< "Tereno" */
+       "", //"tet", /**< "Tetum" */
+       "", //"tgk", /**< "Tajik" */
+       "IN", //"tgl", /**< "Tagalog" */
+       "TH", //"tha", /**< "Thai" */
+       "", //"bod", /**< "Tibetan" */
+       "", //"tig", /**< "Tigre" */
+       "", //"tir", /**< "Tigrinya" */
+       "", //"tiv", /**< "Tiv" */
+       "", //"tkl", /**< "Tokelau" */
+       "", //"tlh", /**< "Klingon; tlhIngan-Hol" */
+       "", //"tli", /**< "Tlingit" */
+       "", //"tmh", /**< "Tamashek" */
+       "", //"tog", /**< "Tonga (Nyasa)" */
+       "", //"ton", /**< "Tonga (Tonga Islands)" */
+       "", //"tpi", /**< "Tok Pisin" */
+       "", //"tsi", /**< "Tsimshian" */
+       "", //"tsn", /**< "Tswana" */
+       "", //"tso", /**< "Tsonga" */
+       "", //"tuk", /**< "Turkmen" */
+       "", //"tuk-cyrl", /**< "Turkmen (Cyrillic)" */
+       "", //"tuk-latn", /**< "Turkmen (Latin)" */
+       "", //"tum", /**< "Tumbuka" */
+       "", //"tup", /**< "Tupi languages" */
+       "TR", //"tur", /**< "Turkish" */
+       "", //"tut", /**< "Altaic languages" */
+       "", //"tvl", /**< "Tuvalu" */
+       "", //"twi", /**< "Twi" */
+       "", //"tyv", /**< "Tuvinian" */
+       "", //"udm", /**< "Udmurt" */
+       "", //"uga", /**< "Ugaritic" */
+       "", //"uig", /**< "Uighur; Uyghur" */
+       "UA", //"ukr", /**< "Ukrainian" */
+       "", //"umb", /**< "Umbundu" */
+       "", //"und", /**< "Undetermined" */
+       "PK", //"urd", /**< "Urdu" */
+       "UZ", //"uzb", /**< "Uzbek" */
+       "UZ", //"uzb-arabic", /**< Uzbek (Arabic)  */
+       "UZ", //"uzb-cyrl", /**< "Uzbek (Cyrillic)" */
+       "UZ", //"uzb-latn", /**< "Uzbek (Latin)" */
+       "", //"vai", /**< "Vai" */
+       "", //"ven", /**< "Venda" */
+       "VN", //"vie", /**< "Vietnamese" */
+       "", //"vls", /**< "Vlaams; Flemish" */
+       "", //"vol", /**< "Volapuk" */
+       "", //"vot", /**< "Votic" */
+       "", //"wak", /**< "Wakashan languages" */
+       "", //"wal", /**< "Walamo" */
+       "", //"war", /**< "Waray" */
+       "", //"was", /**< "Washo" */
+       "GB", //"cym", /**< "Welsh" */
+       "", //"wen", /**< "Sorbian languages" */
+       "", //"wln", /**< "Walloon" */
+       "", //"wol", /**< "Wolof" */
+       "", //"xal", /**< "Kalmyk; Oirat" */
+       "", //"xho", /**< "Xhosa" */
+       "", //"yao", /**< "Yao" */
+       "", //"yap", /**< "Yapese" */
+       "", //"yid", /**< "Yiddish" */
+       "", //"yor", /**< "Yoruba" */
+       "", //"ypk", /**< "Yupik languages" */
+       "", //"zap", /**< "Zapotec" */
+       "", //"zbl", /**< "Blissymbols; Blissymbolics; Bliss" */
+       "", //"zen", /**< "Zenaga" */
+       "", //"zha", /**< "Zhuang; Chuang" */
+       "", //"znd", /**< "Zande languages" */
+       "", //"zul", /**< "Zulu" */
+       "", //"zun", /**< "Zuni" */
+       "", //"zxx", /**< "No linguistic content; Not applicable" */
+       "", //"zza", /**< "Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki" */
+};
+
+       String languageCodeString(L"LANG:");
+       String countryCodeString;
+       ByteBuffer* pCountry = null;
+
+       languageCodeString.Append(Locale::LanguageCodeToTwoLetterLanguageCodeString(languageCode));
+       const char* pCountryCode = (languageCode < LANGUAGE_MAX) ? defaultLauguageCountryCodeArray[languageCode] : "";
+
+       int len = strlen(pCountryCode);
+       if (len == 0)
+       {
+               return null;
+       }
+       if (len == 2)
+       {
+               languageCodeString.Append(L"_");
+               StringUtil::Utf8ToString(defaultLauguageCountryCodeArray[languageCode], countryCodeString);
+               languageCodeString.Append(countryCodeString);
+       }
+       else
+       {
+               Locale* pLocaleLanguage = GetLocaleLanguageN();
+
+               if (!pLocaleLanguage)
+               {
+                       return null;
+               }
+
+               const String displayCountry = pLocaleLanguage->GetCountryCodeString();
+               String delim(L",");
+               String countries;
+               StringUtil::Utf8ToString(defaultLauguageCountryCodeArray[languageCode], countries);
+               StringTokenizer strTok(countries, delim);
+
+               while (strTok.HasMoreTokens())
+               {
+                       strTok.GetNextToken(countryCodeString);
+                       if (countryCodeString == displayCountry)
+                       {
+                           break;
+                       }
+               }
+               delete pLocaleLanguage;
+               languageCodeString.Append(L"_");
+               languageCodeString.Append(countryCodeString);
+       }
+
+       pCountry = StringUtil::StringToUtf8N(languageCodeString);
+
+       return pCountry;
+}
+
 }} // Tizen::Ui
index 7742929..bb2c49f 100644 (file)
@@ -25,6 +25,7 @@
 #include <FBaseSysLog.h>
 #include <FUiInputConnection.h>
 #include <new>
+#include "FUi_BidiUtils.h"
 #include "FUi_Control.h"
 #include "FUi_ControlImpl.h"
 #include "FUi_ControlManager.h"
@@ -49,6 +50,7 @@ namespace {
 
 const int LANGUAGE_CODE_START = 0;
 const int LANGUAGE_CODE_MAX = 2;
+const int LANGUAGE_IM_DATA_LENGTH = 10;
 
 void
 OnInputPanelShowStateEvent(void* pData, Ecore_IMF_Context* pContext, int value)
@@ -1050,26 +1052,18 @@ _InputConnectionImpl::SetInputPanelLanguage(LanguageCode languageCode)
 
        SysAssertf(__pContext != null, "Not yet constructed. Construct() should be called before use.");
 
-       char* pLanguage = null;
-       int length = 0;
-       String code = Locale::LanguageCodeToTwoLetterLanguageCodeString(languageCode);
-       r = code.Insert("LANG:", 0);
-       SysTryReturnResult(NID_UI, r == E_SUCCESS, E_OUT_OF_MEMORY, "A system error occurred.");
-
-       length = wcstombs(0, static_cast<const wchar_t*>(code.GetPointer()), 0);
-       SysTryReturnResult(NID_UI, length != -1, E_OUT_OF_MEMORY, "A system error occurred.");
-
-       pLanguage = (char*)malloc(length+1);
-       SysTryReturn(NID_UI, pLanguage, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
-
-       length = wcstombs(pLanguage, static_cast<const wchar_t*>(code.GetPointer()), length);
-       pLanguage[length] = null;
-
-       ecore_imf_context_input_panel_imdata_set(__pContext, pLanguage, length);
+       ByteBuffer* pBuffer = _BidiUtils::ConvertLanguageCountryCode2Utf8N(languageCode);
+       if (!pBuffer)
+       {
+               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);
 
-       free(pLanguage);
+       delete pBuffer;
 
-       return E_SUCCESS;
+       return r;
 }
 
 LanguageCode
index 700b664..8287dd1 100644 (file)
@@ -26,6 +26,7 @@
 #define _FUI_INTERNAL_BIDI_UTILS_H_
 
 #include <FBaseString.h>
+#include <FBaseByteBuffer.h>
 #include <FLclLocale.h>
 
 namespace Tizen { namespace Ui
@@ -37,6 +38,8 @@ public:
        static bool IsRTL(const Tizen::Base::String& text);
        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);
 
 private:
        _BidiUtils(void);