userguide/src/HelpUtils.cpp
branchRCL_3
changeset 17 12f60d9a73b3
equal deleted inserted replaced
16:0d1adf67ec1b 17:12f60d9a73b3
       
     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