csxhelp/HelpEngine/src/CSXHHtmlTOC1.cpp
branchRCL_3
changeset 18 cbffe13eac63
equal deleted inserted replaced
17:12f60d9a73b3 18:cbffe13eac63
       
     1 /*
       
     2 * Copyright (c) 2006 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:  CCSXHHtmlTOC1 class definition
       
    15 *
       
    16 */
       
    17 
       
    18 #include "CSXHHtmlTOC1.h"
       
    19 #include "CSXHHtmlTOC2.h"
       
    20 #include "CSXHViewIDs.h"
       
    21 #include "CSXHHTMLContentParser.h"
       
    22 #include "CSXHHelpDataBase.h"
       
    23 #include "csxhconstants.h"
       
    24 
       
    25 #include <eikenv.h> 
       
    26 #include <utf.h>
       
    27 #include <data_caging_path_literals.hrh>
       
    28 #include <zipfile.h>
       
    29 #include <bautils.h>
       
    30 #include <SenXmlReader.h> 
       
    31 #include <f32file.h>
       
    32 #include <pathinfo.h>
       
    33 
       
    34 const TInt KBufSize = 35;
       
    35 
       
    36 // ---------------------------------------------------------
       
    37 // Items commented in header.
       
    38 // ---------------------------------------------------------
       
    39 CCSXHHtmlTOC1* CCSXHHtmlTOC1::NewL(const TDesC& aName, const TDesC& aFolder,const TInt& aDrive, TUid aViewId, TInt32 aPriority)
       
    40     {
       
    41     CCSXHHtmlTOC1* self = new (ELeave) CCSXHHtmlTOC1(aName, aFolder, aDrive, aViewId, aPriority);
       
    42     return self;
       
    43     }
       
    44 
       
    45 // ---------------------------------------------------------
       
    46 // Items commented in header.
       
    47 // ---------------------------------------------------------
       
    48 CCSXHHtmlTOC1::CCSXHHtmlTOC1(const TDesC& aName, const TDesC& aFolder,const TInt& aDrive, TUid aViewId, TInt32 aPriority):
       
    49                     CCSXHGenericTOC1(aName, aPriority), iAppUid(aFolder), iDrive(aDrive), iViewId(aViewId)
       
    50     {//No implementation required
       
    51     }
       
    52 
       
    53 // ---------------------------------------------------------
       
    54 // Items commented in header.
       
    55 // ---------------------------------------------------------
       
    56 CCSXHHtmlTOC1::~CCSXHHtmlTOC1()
       
    57     {//No implementation required
       
    58     }   
       
    59 
       
    60 // ---------------------------------------------------------
       
    61 // Items commented in header.
       
    62 // ---------------------------------------------------------
       
    63 TUid CCSXHHtmlTOC1::GetViewID() const
       
    64     {
       
    65     return iViewId;
       
    66     }
       
    67     
       
    68 // ---------------------------------------------------------
       
    69 // Items commented in header.
       
    70 // ---------------------------------------------------------
       
    71 void CCSXHHtmlTOC1::GetHelpFileL(TBuf<KMaxFileName>&  aFileName ) const
       
    72     {
       
    73     //return iHelpFile;
       
    74     return CCSXHHTMLContentParser::GetHtmlFileL(
       
    75                 CCSXHHelpDataBase::GetInstance()->GetCoeEnv(),iDrive,iAppUid,aFileName);
       
    76     }
       
    77 
       
    78 // ---------------------------------------------------------
       
    79 // Items commented in header.
       
    80 // ---------------------------------------------------------    
       
    81 const TUid& CCSXHHtmlTOC1::GetAppUid() const
       
    82     {
       
    83     return iAppUid.GetUid();
       
    84     }
       
    85     
       
    86 // ---------------------------------------------------------
       
    87 // Items commented in header.
       
    88 // ---------------------------------------------------------    
       
    89 TBool CCSXHHtmlTOC1::IsROMDrive() 
       
    90     {
       
    91     TInt ROMDrive;
       
    92     RFs::CharToDrive( PathInfo::RomRootPath()[0], ROMDrive );
       
    93     if(ROMDrive == iDrive)
       
    94     	return ETrue;
       
    95     else
       
    96     	return EFalse;
       
    97     }
       
    98     
       
    99 // ---------------------------------------------------------
       
   100 // Items commented in header.
       
   101 // ---------------------------------------------------------
       
   102 CCSXHHelpContentBase* CCSXHHtmlTOC1::GetContextTopic(const TDesC&  contextName)
       
   103     {
       
   104     TBool resetChildList = EFalse;
       
   105     if(iChildList == NULL)
       
   106         {
       
   107         InitChildList();//Generates child list  
       
   108         resetChildList = ETrue;
       
   109         }
       
   110     
       
   111     TInt count =    iChildList->Count();
       
   112     CCSXHHtmlTOC2* toc2 = NULL;
       
   113     for(TInt i=0;i<count;++i )
       
   114         {
       
   115         toc2 = STATIC_CAST(CCSXHHtmlTOC2*, (*iChildList)[i]);
       
   116         TBuf<KBufSize> contextFile = contextName;
       
   117         contextFile.Append(KHtmlFileExtn);
       
   118         if(contextFile.Compare(toc2->GetFileName()) == 0)
       
   119             return toc2;//Child list should not be reset
       
   120         }
       
   121     if(resetChildList)
       
   122         ResetChildList();
       
   123     return NULL;    
       
   124     }
       
   125 
       
   126 // ---------------------------------------------------------
       
   127 // Items commented in header.
       
   128 // --------------------------------------------------------- 
       
   129 CCSXHHelpContentBase* CCSXHHtmlTOC1::GetHtmlTopicForFile(const TDesC&  aFile)
       
   130     {
       
   131     TBool resetChildList = EFalse;
       
   132     if(iChildList ==NULL)
       
   133         {
       
   134         InitChildList();//Generates child list if required.     
       
   135         resetChildList = ETrue;
       
   136         }
       
   137         
       
   138     TInt count = iChildList->Count();
       
   139     CCSXHHtmlTOC2* toc2 = NULL;
       
   140     for(TInt i=0;i<count;++i )
       
   141         {
       
   142         toc2 = STATIC_CAST(CCSXHHtmlTOC2*, (*iChildList)[i]);
       
   143         if(toc2->GetFileName().Compare(aFile) == 0)
       
   144             return toc2;//Child list should not be reset
       
   145         }
       
   146     if(resetChildList)
       
   147         ResetChildList();
       
   148     return NULL;
       
   149     }
       
   150 
       
   151 // ---------------------------------------------------------
       
   152 // Items commented in header.
       
   153 // ---------------------------------------------------------
       
   154 void CCSXHHtmlTOC1::InitChildList()
       
   155     {
       
   156     if(iChildList != NULL)
       
   157         return;
       
   158     ConstructChildList();
       
   159     TRAP_IGNORE(CCSXHHelpDataBase::GetInstance()->GetHtmlParser()->
       
   160                                                         GenerateTOC2ListL(*this,iChildList));
       
   161     }
       
   162 TBool CCSXHHtmlTOC1::IsValid() const
       
   163 	{
       
   164 	return iAppUid.IsValid();
       
   165 	}
       
   166 	
       
   167 	
       
   168 TAppUid::TAppUid(const TDesC& aFolder)
       
   169 	{
       
   170 	TLex lex(aFolder.Mid(KHexPrefixLength));
       
   171 	TUint appId = 0;
       
   172 	lex.Val(appId,EHex);
       
   173 	
       
   174 	if(appId)
       
   175 		{
       
   176 		iUid = TUid::Uid((TInt)appId);
       
   177 		iLength = aFolder.Length();		
       
   178 		}
       
   179 	else
       
   180 		{
       
   181 		iLength = 0;
       
   182 		}
       
   183 	}
       
   184 
       
   185 const TUid& TAppUid::GetUid() const
       
   186 	{
       
   187 	return iUid;
       
   188 	}
       
   189 
       
   190 TBool TAppUid::IsValid() const
       
   191 	{
       
   192 	return iLength ? ETrue : EFalse;
       
   193 	}
       
   194 void TAppUid::AppendUid(TBuf<KMaxFileName>& aStr) const
       
   195 	{
       
   196 	TInt initialLen = aStr.Length();
       
   197 	aStr.Append(KHexPrefix);
       
   198 	aStr.AppendNum(iUid.iUid,EHex);
       
   199 	TInt finalLen = aStr.Length();
       
   200 	
       
   201 	while(iLength > (finalLen - initialLen))
       
   202 		{
       
   203 		aStr.Insert(initialLen+KHexPrefixLength,KZero);
       
   204 		++finalLen;
       
   205 		}
       
   206 	
       
   207 	}
       
   208