|
1 /* |
|
2 * Copyright (c) 2009 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: |
|
15 * |
|
16 */ |
|
17 |
|
18 #include <QFile> |
|
19 #include <QMap> |
|
20 #include <QLocale> |
|
21 |
|
22 #include <hbstringutil.h> |
|
23 |
|
24 #include "HelpUtils.h" |
|
25 |
|
26 |
|
27 ///////////////////////////////////////////////////////////////////////////////////////////////////////// |
|
28 |
|
29 #ifdef Q_OS_SYMBIAN |
|
30 |
|
31 #include <qsysteminfo.h> |
|
32 #include <xqappmgr.h> |
|
33 |
|
34 #include <e32const.h> |
|
35 #include <eikenv.h> |
|
36 #include <zipfile.h> |
|
37 |
|
38 void LoadFileFromZipL(const TDesC& aZipName, const TDesC& aFileName, QString& desBuffer) |
|
39 { |
|
40 |
|
41 // open the zip file |
|
42 RFs& fs = CEikonEnv::Static()->FsSession(); |
|
43 CZipFile* zipFile = CZipFile::NewL(fs, aZipName); |
|
44 CleanupStack::PushL(zipFile); |
|
45 TInt err = zipFile->OpenL(); |
|
46 |
|
47 if(err == KErrNone) |
|
48 { |
|
49 CZipFileMember* member = zipFile->MemberL(aFileName); |
|
50 if(member) // member exist |
|
51 { |
|
52 CleanupStack::PushL(member); |
|
53 |
|
54 RZipFileMemberReaderStream* stream; |
|
55 zipFile->GetInputStreamL(member, stream); |
|
56 CleanupStack::PushL(stream); |
|
57 |
|
58 HBufC8* buffer = HBufC8::NewLC(member->UncompressedSize()); |
|
59 TPtr8 ptr(buffer->Des()); |
|
60 User::LeaveIfError(stream->Read(ptr, member->UncompressedSize())); |
|
61 |
|
62 QByteArray byteArray((const char*)buffer->Ptr(), buffer->Length()); |
|
63 desBuffer.append(byteArray); |
|
64 |
|
65 CleanupStack::PopAndDestroy(buffer); |
|
66 CleanupStack::PopAndDestroy(stream); |
|
67 CleanupStack::PopAndDestroy(member); |
|
68 } |
|
69 } |
|
70 |
|
71 zipFile->Close(); |
|
72 CleanupStack::PopAndDestroy(zipFile); |
|
73 |
|
74 } |
|
75 |
|
76 void FixPathSlash(TDes& aPath) |
|
77 { |
|
78 for(TInt i=0; i<aPath.Length(); i++) |
|
79 { |
|
80 if(aPath[i] == '/') aPath[i] = '\\'; |
|
81 } |
|
82 } |
|
83 |
|
84 void HelpUtils::loadHtmlFromZipFile(const QString& path, const QString& htmlFile, QString& htmlContent) |
|
85 { |
|
86 TFileName zipNameDes(TPtrC(path.utf16(), path.length())); |
|
87 TFileName subFileDes(TPtrC(htmlFile.utf16(), htmlFile.length())); |
|
88 FixPathSlash(zipNameDes); |
|
89 FixPathSlash(subFileDes); |
|
90 |
|
91 htmlContent.clear(); // clear all data |
|
92 |
|
93 QT_TRAP_THROWING(LoadFileFromZipL(zipNameDes, subFileDes, htmlContent)); |
|
94 } |
|
95 #else |
|
96 void HelpUtils::loadHtmlFromZipFile(const QString& path, const QString& htmlFile, QString& htmlContent) |
|
97 { |
|
98 Q_UNUSED(path); |
|
99 Q_UNUSED(htmlFile); |
|
100 Q_UNUSED(htmlContent); |
|
101 return; |
|
102 } |
|
103 #endif |
|
104 |
|
105 QString HelpUtils::rootPath() |
|
106 { |
|
107 return QString("z:/"); |
|
108 } |
|
109 |
|
110 QString HelpUtils::UILocaleFromQtToSymbian() |
|
111 { |
|
112 #ifdef Q_OS_SYMBIAN |
|
113 |
|
114 static QMap<QString, int> iso_to_symbian_map; |
|
115 iso_to_symbian_map.insert("en_GB" ,ELangEnglish); |
|
116 iso_to_symbian_map.insert("fr_FR" ,ELangFrench); |
|
117 iso_to_symbian_map.insert("de_DE" ,ELangGerman); |
|
118 iso_to_symbian_map.insert("es_ES" ,ELangSpanish); |
|
119 iso_to_symbian_map.insert("it_IT" ,ELangItalian); |
|
120 iso_to_symbian_map.insert("sv_SE" ,ELangSwedish); |
|
121 iso_to_symbian_map.insert("da_DK" ,ELangDanish); |
|
122 iso_to_symbian_map.insert("no_NO" ,ELangNorwegian); |
|
123 iso_to_symbian_map.insert("fi_FI" ,ELangFinnish); |
|
124 iso_to_symbian_map.insert("en_US" ,ELangAmerican); |
|
125 iso_to_symbian_map.insert("fr_CH" ,ELangSwissFrench); |
|
126 iso_to_symbian_map.insert("de_CH" ,ELangSwissGerman); |
|
127 iso_to_symbian_map.insert("pt_PT" ,ELangPortuguese); |
|
128 iso_to_symbian_map.insert("tr_TR" ,ELangTurkish); |
|
129 iso_to_symbian_map.insert("is_IS" ,ELangIcelandic); |
|
130 iso_to_symbian_map.insert("ru_RU" ,ELangRussian); |
|
131 iso_to_symbian_map.insert("hu_HU" ,ELangHungarian); |
|
132 iso_to_symbian_map.insert("nl_NL" ,ELangDutch); |
|
133 iso_to_symbian_map.insert("nl_BE" ,ELangBelgianFlemish); |
|
134 iso_to_symbian_map.insert("en_AU" ,ELangAustralian); |
|
135 iso_to_symbian_map.insert("fr_BE" ,ELangBelgianFrench); |
|
136 iso_to_symbian_map.insert("de_AT" ,ELangAustrian); |
|
137 iso_to_symbian_map.insert("en_NZ" ,ELangNewZealand); |
|
138 iso_to_symbian_map.insert("fr" ,ELangInternationalFrench); |
|
139 iso_to_symbian_map.insert("cs_CZ" ,ELangCzech); |
|
140 iso_to_symbian_map.insert("sk_SK" ,ELangSlovak); |
|
141 iso_to_symbian_map.insert("pl_PL" ,ELangPolish); |
|
142 iso_to_symbian_map.insert("sl_SI" ,ELangSlovenian); |
|
143 iso_to_symbian_map.insert("zh_TW" ,ELangTaiwanChinese); |
|
144 iso_to_symbian_map.insert("zh_HK" ,ELangHongKongChinese); |
|
145 iso_to_symbian_map.insert("zh_CN" ,ELangPrcChinese); |
|
146 iso_to_symbian_map.insert("ja_JP" ,ELangJapanese); |
|
147 iso_to_symbian_map.insert("th_TH" ,ELangThai); |
|
148 iso_to_symbian_map.insert("af" ,ELangAfrikaans); |
|
149 iso_to_symbian_map.insert("sq_AL" ,ELangAlbanian); |
|
150 iso_to_symbian_map.insert("am_ET" ,ELangAmharic); |
|
151 iso_to_symbian_map.insert("ar_AE" ,ELangArabic); |
|
152 iso_to_symbian_map.insert("hy_AM" ,ELangArmenian); |
|
153 iso_to_symbian_map.insert("tl_PH" ,ELangTagalog); |
|
154 iso_to_symbian_map.insert("be_BY" ,ELangBelarussian); |
|
155 iso_to_symbian_map.insert("bn" ,ELangBengali); |
|
156 iso_to_symbian_map.insert("bg_BG" ,ELangBulgarian); |
|
157 iso_to_symbian_map.insert("my_MM" ,ELangBurmese); |
|
158 iso_to_symbian_map.insert("ca_ES" ,ELangCatalan); |
|
159 iso_to_symbian_map.insert("hr_HR" ,ELangCroatian); |
|
160 iso_to_symbian_map.insert("en_CA" ,ELangCanadianEnglish); |
|
161 iso_to_symbian_map.insert( "en" ,ELangInternationalEnglish); |
|
162 iso_to_symbian_map.insert("en_ZA" ,ELangSouthAfricanEnglish); |
|
163 iso_to_symbian_map.insert("et_EE" ,ELangEstonian); |
|
164 iso_to_symbian_map.insert("fa_IR" ,ELangFarsi); |
|
165 iso_to_symbian_map.insert("fr_CA" ,ELangCanadianFrench); |
|
166 iso_to_symbian_map.insert("gd_GB" ,ELangScotsGaelic); |
|
167 iso_to_symbian_map.insert("ka_GE" ,ELangGeorgian); |
|
168 iso_to_symbian_map.insert("el_GR" ,ELangGreek); |
|
169 iso_to_symbian_map.insert("el_GR" ,ELangCyprusGreek); |
|
170 iso_to_symbian_map.insert("gu_IN" ,ELangGujarati); |
|
171 iso_to_symbian_map.insert("he_IL" ,ELangHebrew); |
|
172 iso_to_symbian_map.insert("hi_IN" ,ELangHindi); |
|
173 iso_to_symbian_map.insert("id_ID" ,ELangIndonesian); |
|
174 iso_to_symbian_map.insert("ga_IE" ,ELangIrish); |
|
175 iso_to_symbian_map.insert("it_CH" ,ELangSwissItalian); |
|
176 iso_to_symbian_map.insert("kn_IN" ,ELangKannada); |
|
177 iso_to_symbian_map.insert("kk_KZ" ,ELangKazakh); |
|
178 iso_to_symbian_map.insert("km_KH" ,ELangKhmer); |
|
179 iso_to_symbian_map.insert("ko_KR" ,ELangKorean); |
|
180 iso_to_symbian_map.insert("lo_LA" ,ELangLao); |
|
181 iso_to_symbian_map.insert("lv_LV" ,ELangLatvian); |
|
182 iso_to_symbian_map.insert("lt_LT" ,ELangLithuanian); |
|
183 iso_to_symbian_map.insert("mk_MK" ,ELangMacedonian); |
|
184 iso_to_symbian_map.insert("ms_MY" ,ELangMalay); |
|
185 iso_to_symbian_map.insert("ml_IN" ,ELangMalayalam); |
|
186 iso_to_symbian_map.insert("mr_IN" ,ELangMarathi); |
|
187 iso_to_symbian_map.insert("mo_MD" ,ELangMoldavian); |
|
188 iso_to_symbian_map.insert("mn_MN" ,ELangMongolian); |
|
189 iso_to_symbian_map.insert("nn_NO" ,ELangNorwegianNynorsk); |
|
190 iso_to_symbian_map.insert("pt_BR" ,ELangBrazilianPortuguese); |
|
191 iso_to_symbian_map.insert("pa" ,ELangPunjabi); |
|
192 iso_to_symbian_map.insert("ro_RO" ,ELangRomanian); |
|
193 iso_to_symbian_map.insert("sr_YU" ,ELangSerbian); |
|
194 iso_to_symbian_map.insert("si_LK" ,ELangSinhalese); |
|
195 iso_to_symbian_map.insert("so_SO" ,ELangSomali); |
|
196 iso_to_symbian_map.insert( "es" ,ELangInternationalSpanish); |
|
197 iso_to_symbian_map.insert( "es" ,ELangLatinAmericanSpanish); |
|
198 iso_to_symbian_map.insert("sw" ,ELangSwahili); |
|
199 iso_to_symbian_map.insert("sv_FI" ,ELangFinlandSwedish); |
|
200 iso_to_symbian_map.insert("ta_IN" ,ELangTamil); |
|
201 iso_to_symbian_map.insert("te_IN" ,ELangTelugu); |
|
202 iso_to_symbian_map.insert("bo_CN" ,ELangTibetan); |
|
203 iso_to_symbian_map.insert("ti_ER" ,ELangTigrinya); |
|
204 iso_to_symbian_map.insert("tr_GR" ,ELangCyprusTurkish); |
|
205 iso_to_symbian_map.insert("tk_TM" ,ELangTurkmen); |
|
206 iso_to_symbian_map.insert("uk_UA" ,ELangUkrainian); |
|
207 iso_to_symbian_map.insert("ur_PK" ,ELangUrdu); |
|
208 iso_to_symbian_map.insert("vi_VN" ,ELangVietnamese); |
|
209 iso_to_symbian_map.insert("cy_GB" ,ELangWelsh); |
|
210 iso_to_symbian_map.insert("zu_ZA" ,ELangZulu); |
|
211 iso_to_symbian_map.insert("st_LS" ,ELangSouthSotho); |
|
212 iso_to_symbian_map.insert("eu_ES" ,ELangBasque); |
|
213 iso_to_symbian_map.insert("gl_ES" ,ELangGalician); |
|
214 iso_to_symbian_map.insert("en" ,ELangEnglish_Apac); |
|
215 iso_to_symbian_map.insert("en_TW" ,ELangEnglish_Taiwan); |
|
216 iso_to_symbian_map.insert("en_HK" ,ELangEnglish_HongKong); |
|
217 iso_to_symbian_map.insert("en_CN" ,ELangEnglish_Prc); |
|
218 iso_to_symbian_map.insert("en_JP" ,ELangEnglish_Japan); |
|
219 iso_to_symbian_map.insert("en_TH" ,ELangEnglish_Thailand); |
|
220 iso_to_symbian_map.insert("ms" ,ELangMalay_Apac); |
|
221 |
|
222 QString langName = QLocale::system().name(); |
|
223 return QString("%1").arg(iso_to_symbian_map.value(langName),2,10,QChar('0')); |
|
224 #else |
|
225 return QString("%1").arg(1,2,10,QChar('0')); |
|
226 #endif |
|
227 } |
|
228 |
|
229 int HelpUtils::launchApplication(const QString& appUid) |
|
230 { |
|
231 #ifdef Q_OS_SYMBIAN |
|
232 |
|
233 QString uriStr("appto://"); |
|
234 uriStr.append(appUid); |
|
235 QUrl uri(uriStr); |
|
236 |
|
237 XQApplicationManager appmgr; |
|
238 XQAiwRequest* req5 = appmgr.create(uri, false); |
|
239 |
|
240 QList<QVariant> args; |
|
241 args << uri.encodedQuery(); |
|
242 req5->setArguments(args); |
|
243 |
|
244 if (!req5->send()) |
|
245 { |
|
246 return req5->lastError(); |
|
247 } |
|
248 #else |
|
249 Q_UNUSED(appUid); |
|
250 #endif |
|
251 return 0; |
|
252 } |
|
253 |
|
254 bool HelpUtils::suppportFeatureID(int featureID) |
|
255 { |
|
256 #ifdef Q_OS_SYMBIAN |
|
257 if(featureID == -1) |
|
258 { |
|
259 return true; |
|
260 } |
|
261 QtMobility::QSystemInfo sysInfo; |
|
262 return sysInfo.hasFeatureSupported((QtMobility::QSystemInfo::Feature)featureID); |
|
263 #else |
|
264 Q_UNUSED(featureID); |
|
265 return true; |
|
266 #endif |
|
267 } |
|
268 |
|
269 Qt::Orientation HelpUtils::defaultOrientation() |
|
270 { |
|
271 return Qt::Vertical; |
|
272 } |
|
273 |
|
274 Qt::SortOrder HelpUtils::sortOrder() |
|
275 { |
|
276 return Qt::AscendingOrder; |
|
277 } |
|
278 |
|
279 int HelpUtils::findStr(const QString& strFrom, const QString& strToFind) |
|
280 { |
|
281 return HbStringUtil::findC(strFrom, strToFind); |
|
282 } |
|
283 |
|
284 int HelpUtils::compareStr(const QString& str1, const QString& str2) |
|
285 { |
|
286 return HbStringUtil::compareC(str1, str2); |
|
287 } |
|
288 |
|
289 // end of file |