|
1 /* |
|
2 * Copyright (c) 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: Symbian-specific part of the language selection dialog in SifUi |
|
15 * |
|
16 */ |
|
17 |
|
18 #include "sifuidialogselectlanguage.h" // SifUiDialogSelectLanguage |
|
19 #include <languages.hrh> // S60 language definitions |
|
20 #include <hb/hbcore/hblocaleutil.h> // HbLocaleUtil |
|
21 #include <s32mem.h> // RMemReadStream |
|
22 |
|
23 // |
|
24 // String array to convert Symbian TLanguage enums to ISO 639-1 language codes. |
|
25 // |
|
26 struct SLangString |
|
27 { |
|
28 TInt iId; |
|
29 const TText8* iCode; |
|
30 }; |
|
31 |
|
32 const TInt KLangCodeLength = 2; |
|
33 const SLangString KLangStrings[] = |
|
34 { |
|
35 { ELangEnglish, _S8( "en" ) }, |
|
36 { ELangFrench, _S8( "fr" ) }, |
|
37 { ELangGerman, _S8( "de" ) }, |
|
38 { ELangSpanish, _S8( "es" ) }, |
|
39 { ELangItalian, _S8( "it" ) }, |
|
40 { ELangSwedish, _S8( "sv" ) }, |
|
41 { ELangDanish, _S8( "da" ) }, |
|
42 { ELangNorwegian, _S8( "no" ) }, |
|
43 { ELangFinnish, _S8( "fi" ) }, |
|
44 { ELangAmerican, _S8( "en" ) }, |
|
45 { ELangSwissFrench, _S8( "fr" ) }, |
|
46 { ELangSwissGerman, _S8( "de" ) }, |
|
47 { ELangPortuguese, _S8( "pt" ) }, |
|
48 { ELangTurkish, _S8( "tr" ) }, |
|
49 { ELangIcelandic, _S8( "is" ) }, |
|
50 { ELangRussian, _S8( "ru" ) }, |
|
51 { ELangHungarian, _S8( "hu" ) }, |
|
52 { ELangDutch, _S8( "nl" ) }, |
|
53 { ELangBelgianFlemish, _S8( "nl" ) }, |
|
54 { ELangAustralian, _S8( "en" ) }, |
|
55 { ELangBelgianFrench, _S8( "fr" ) }, |
|
56 { ELangAustrian, _S8( "de" ) }, |
|
57 { ELangNewZealand, _S8( "en" ) }, |
|
58 { ELangInternationalFrench, _S8( "fr" ) }, |
|
59 { ELangCzech, _S8( "cs" ) }, |
|
60 { ELangSlovak, _S8( "sk" ) }, |
|
61 { ELangPolish, _S8( "pl" ) }, |
|
62 { ELangSlovenian, _S8( "sl" ) }, |
|
63 { ELangTaiwanChinese, _S8( "zh" ) }, |
|
64 { ELangHongKongChinese, _S8( "zh" ) }, |
|
65 { ELangPrcChinese, _S8( "zh" ) }, |
|
66 { ELangJapanese, _S8( "ja" ) }, |
|
67 { ELangThai, _S8( "th" ) }, |
|
68 { ELangAfrikaans, _S8( "af" ) }, |
|
69 { ELangAlbanian, _S8( "sq" ) }, |
|
70 { ELangAmharic, _S8( "am" ) }, |
|
71 { ELangArabic, _S8( "ar" ) }, |
|
72 { ELangArmenian, _S8( "hy" ) }, |
|
73 { ELangTagalog, _S8( "tl" ) }, |
|
74 { ELangBelarussian, _S8( "be" ) }, |
|
75 { ELangBengali, _S8( "bn" ) }, |
|
76 { ELangBulgarian, _S8( "bg" ) }, |
|
77 { ELangBurmese, _S8( "my" ) }, |
|
78 { ELangCatalan, _S8( "ca" ) }, |
|
79 { ELangCroatian, _S8( "hr" ) }, |
|
80 { ELangCanadianEnglish, _S8( "en" ) }, |
|
81 { ELangInternationalEnglish, _S8( "en" ) }, |
|
82 { ELangSouthAfricanEnglish, _S8( "en" ) }, |
|
83 { ELangEstonian, _S8( "et" ) }, |
|
84 { ELangFarsi, _S8( "fa" ) }, |
|
85 { ELangCanadianFrench, _S8( "fr" ) }, |
|
86 { ELangScotsGaelic, _S8( "gd" ) }, |
|
87 { ELangGeorgian, _S8( "ka" ) }, |
|
88 { ELangGreek, _S8( "el" ) }, |
|
89 { ELangCyprusGreek, _S8( "el" ) }, |
|
90 { ELangGujarati, _S8( "gu" ) }, |
|
91 { ELangHebrew, _S8( "he" ) }, |
|
92 { ELangHindi, _S8( "hi" ) }, |
|
93 { ELangIndonesian, _S8( "id" ) }, |
|
94 { ELangIrish, _S8( "ga" ) }, |
|
95 { ELangSwissItalian, _S8( "it" ) }, |
|
96 { ELangKannada, _S8( "kn" ) }, |
|
97 { ELangKazakh, _S8( "kk" ) }, |
|
98 { ELangKhmer, _S8( "km" ) }, |
|
99 { ELangKorean, _S8( "ko" ) }, |
|
100 { ELangLao, _S8( "lo" ) }, |
|
101 { ELangLatvian, _S8( "lv" ) }, |
|
102 { ELangLithuanian, _S8( "lt" ) }, |
|
103 { ELangMacedonian, _S8( "mk" ) }, |
|
104 { ELangMalay, _S8( "ms" ) }, |
|
105 { ELangMalayalam, _S8( "ml" ) }, |
|
106 { ELangMarathi, _S8( "mr" ) }, |
|
107 { ELangMoldavian, _S8( "mo" ) }, |
|
108 { ELangMongolian, _S8( "mn" ) }, |
|
109 { ELangNorwegianNynorsk, _S8( "nn" ) }, |
|
110 { ELangBrazilianPortuguese, _S8( "pt" ) }, |
|
111 { ELangPunjabi, _S8( "pa" ) }, |
|
112 { ELangRomanian, _S8( "ro" ) }, |
|
113 { ELangSerbian, _S8( "sr" ) }, |
|
114 { ELangSinhalese, _S8( "si" ) }, |
|
115 { ELangSomali, _S8( "so" ) }, |
|
116 { ELangInternationalSpanish, _S8( "es" ) }, |
|
117 { ELangLatinAmericanSpanish, _S8( "es" ) }, |
|
118 { ELangSwahili, _S8( "sw" ) }, |
|
119 { ELangFinlandSwedish, _S8( "sv" ) }, |
|
120 { ELangReserved1, _S8( "en" ) }, |
|
121 { ELangTamil, _S8( "ta" ) }, |
|
122 { ELangTelugu, _S8( "te" ) }, |
|
123 { ELangTibetan, _S8( "bo" ) }, |
|
124 { ELangTigrinya, _S8( "ti" ) }, |
|
125 { ELangCyprusTurkish, _S8( "tr" ) }, |
|
126 { ELangTurkmen, _S8( "tk" ) }, |
|
127 { ELangUkrainian, _S8( "uk" ) }, |
|
128 { ELangUrdu, _S8( "ur" ) }, |
|
129 { ELangReserved2, _S8( "en" ) }, |
|
130 { ELangVietnamese, _S8( "vi" ) }, |
|
131 { ELangWelsh, _S8( "cy" ) }, |
|
132 { ELangZulu, _S8( "zu" ) }, |
|
133 { KLangTaiwanEnglish, _S8( "en" ) }, |
|
134 { KLangHongKongEnglish, _S8( "en" ) }, |
|
135 { KLangPrcEnglish, _S8( "en" ) }, |
|
136 { KLangJapaneseEnglish, _S8( "en" ) }, |
|
137 { KLangThaiEnglish, _S8( "en" ) } |
|
138 }; |
|
139 |
|
140 #define KNUMLANGSTRINGS ( sizeof( KLangStrings ) / sizeof( SLangString ) ) |
|
141 |
|
142 |
|
143 // ======== LOCAL FUNCTIONS ======== |
|
144 |
|
145 // ---------------------------------------------------------------------------- |
|
146 // LanguageCode() |
|
147 // ---------------------------------------------------------------------------- |
|
148 // |
|
149 QString LanguageCode( const TLanguage aLanguage ) |
|
150 { |
|
151 for( TInt index = 0; index < KNUMLANGSTRINGS; ++index ) |
|
152 { |
|
153 SLangString lang = KLangStrings[ index ]; |
|
154 if( lang.iId == aLanguage ) |
|
155 { |
|
156 return QString::fromAscii( reinterpret_cast<const char*>( lang.iCode ), |
|
157 KLangCodeLength ); |
|
158 } |
|
159 } |
|
160 return QString(""); |
|
161 } |
|
162 |
|
163 // ---------------------------------------------------------------------------- |
|
164 // LanguageName() |
|
165 // ---------------------------------------------------------------------------- |
|
166 // |
|
167 QString LanguageName( const TLanguage aLanguage ) |
|
168 { |
|
169 QString langCode = LanguageCode( aLanguage ); |
|
170 if( langCode.isEmpty() ) { |
|
171 return hbTrId("txt_installer_list_unknown_language"); |
|
172 } |
|
173 QString langName = HbLocaleUtil::localisedLanguageName( langCode ); |
|
174 if( langName.isEmpty() ) { |
|
175 return hbTrId("txt_installer_list_unknown_language"); |
|
176 } |
|
177 return langName; |
|
178 } |
|
179 |
|
180 // ---------------------------------------------------------------------------- |
|
181 // LanguageNamesL() |
|
182 // ---------------------------------------------------------------------------- |
|
183 // |
|
184 QStringList LanguageNamesL( const TDesC8& aBuf ) |
|
185 { |
|
186 RMemReadStream readStream( aBuf.Ptr(), aBuf.Size() ); |
|
187 CleanupClosePushL( readStream ); |
|
188 RArray<TLanguage> langArray; |
|
189 TPckg< RArray<TLanguage> > langArrayPckg( langArray ); |
|
190 readStream.ReadL( langArrayPckg ); |
|
191 CleanupStack::PopAndDestroy( &readStream ); |
|
192 |
|
193 QStringList langNames; |
|
194 for( TInt index = 0; index < langArray.Count(); index++ ) { |
|
195 QT_TRYCATCH_LEAVING( langNames.append( LanguageName( langArray[index] ) ) ); |
|
196 } |
|
197 return langNames; |
|
198 } |
|
199 |
|
200 |
|
201 // ======== MEMBER FUNCTIONS ======== |
|
202 |
|
203 // ---------------------------------------------------------------------------- |
|
204 // SifUiDialogSelectLanguage::languageNames() |
|
205 // ---------------------------------------------------------------------------- |
|
206 // |
|
207 QStringList SifUiDialogSelectLanguage::languageNames(const QVariant& languages) |
|
208 { |
|
209 QByteArray byteArray = languages.toByteArray(); |
|
210 QStringList names; |
|
211 |
|
212 const TPtrC8 ptr(reinterpret_cast<const TText8*>(byteArray.constData()), byteArray.length()); |
|
213 QT_TRAP_THROWING( names = LanguageNamesL( ptr ) ); |
|
214 |
|
215 return names; |
|
216 } |
|
217 |