csxhelp/HelpEngine/src/CSXHXMLParseHandler.cpp
changeset 0 1f04cf54edd8
child 5 d06b1526f62c
equal deleted inserted replaced
-1:000000000000 0:1f04cf54edd8
       
     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:  CCSXHXMLParseHandler class definition
       
    15 *
       
    16 */
       
    17 
       
    18 #include "CSXHXMLParseHandler.h"
       
    19 #include "CSXHHtmlTOC2.h"
       
    20 #include "CSXHKywdTopics.h"
       
    21 #include "CSXHHelpDataBase.h"
       
    22 #include "CSXHHtmlTOC1.h"
       
    23 #include "csxhconstants.h"
       
    24 #include "CSXHHTMLContentParser.h"
       
    25 
       
    26 #include <aknnotewrappers.h> 
       
    27 #include <utf.h> 
       
    28 #include <eikenv.h> 
       
    29 #include <bautils.h>
       
    30 
       
    31 
       
    32 CCSXHXMLParseHandler::CCSXHXMLParseHandler(CCoeEnv*  aCoeEnv)
       
    33     {   
       
    34     iCoeEnv = aCoeEnv;
       
    35     }
       
    36     
       
    37 CCSXHXMLParseHandler::~CCSXHXMLParseHandler()
       
    38 	{
       
    39 	if(iFeatureIds)
       
    40     	{
       
    41     	delete iFeatureIds;
       
    42     	iFeatureIds = NULL;
       
    43     	}
       
    44 	}
       
    45 TInt CCSXHXMLParseHandler::StartDocument()
       
    46     {
       
    47     return KErrNone;
       
    48     }
       
    49 
       
    50 TInt CCSXHXMLParseHandler::EndDocument()
       
    51     {    
       
    52     return KErrNone;
       
    53     }
       
    54 
       
    55 void CCSXHXMLParseHandler::SetDataBasePtr(CCSXHHelpDataBase* aDataBase)
       
    56     {
       
    57     iDataBase = aDataBase;
       
    58     } 
       
    59     
       
    60 TDesC& CCSXHXMLParseHandler::GetApplicationName()
       
    61     {
       
    62     return iApplicationName;
       
    63     }
       
    64     
       
    65 TPtr CCSXHXMLParseHandler::GetFeatureIds()
       
    66     {    
       
    67     return iFeatureIds->Des();	
       
    68     }
       
    69     
       
    70 TBool CCSXHXMLParseHandler::SetAppNameFlag(const TDesC8&  alocalName,const TDesC& aAppTag)
       
    71     {   
       
    72     //R_TYPE_APPLICATION_TAG_NAME
       
    73     TBool Result = EFalse;
       
    74     TBuf<KMaxFileName> AppName;
       
    75     CnvUtfConverter::ConvertToUnicodeFromUtf8(AppName,alocalName);
       
    76     if(AppName.Compare(aAppTag) == 0)
       
    77         {
       
    78         iApplicationName.Copy(KEmptyString);        
       
    79         Result = ETrue;
       
    80         }
       
    81     else
       
    82         {
       
    83         Result = EFalse;
       
    84         }
       
    85     return Result;      
       
    86     } 
       
    87 
       
    88 //-------------- CCSXHXMLParseHandler_Kywd -------------------
       
    89 
       
    90 void CCSXHXMLParseHandler_Kywd::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser)
       
    91     {
       
    92     iParser = aParser;
       
    93     }
       
    94 
       
    95 CCSXHXMLParseHandler_Kywd* CCSXHXMLParseHandler_Kywd::NewL(CCoeEnv* aCoeEnv)
       
    96     {
       
    97     CCSXHXMLParseHandler_Kywd* self = new (ELeave)CCSXHXMLParseHandler_Kywd(aCoeEnv);   
       
    98     return self;
       
    99     }
       
   100     
       
   101 CCSXHXMLParseHandler_Kywd::CCSXHXMLParseHandler_Kywd(CCoeEnv* aCoeEnv)
       
   102 :CCSXHXMLParseHandler(aCoeEnv)                      
       
   103     {       
       
   104         iCurrentHtmlToc1 = NULL;
       
   105         iIsTargetName = EFalse;     
       
   106     }
       
   107     
       
   108 TInt  CCSXHXMLParseHandler_Kywd::StartElement (const TDesC8&  /*iURI*/ , const TDesC8&  
       
   109 alocalName, const TDesC8&  /*iqualname*/, const RAttributeArray&  aAttributes) 
       
   110     {
       
   111     if(iFeatureIds)
       
   112     	{
       
   113     	delete iFeatureIds;
       
   114     	iFeatureIds = NULL;
       
   115     	}
       
   116     	
       
   117     
       
   118     TRAP_IGNORE(iFeatureIds = HBufC::NewL(2));
       
   119     TPtr FIdValue = iFeatureIds->Des();
       
   120     FIdValue.Copy(_L("-1"));  
       
   121     
       
   122     if(iIsTOC2View)
       
   123         {
       
   124         CreateTOC2ObjectsforKeywordSearch(alocalName,aAttributes);
       
   125         }
       
   126     else
       
   127         {               
       
   128         iIsAppName = SetAppNameFlag(alocalName,KSearchViewTOC1Tag); 
       
   129         
       
   130 	    TInt nElements = aAttributes.Count();
       
   131 	    TBuf<KMaxFileName> TagName; 
       
   132 	    RAttribute AttributeInfo;
       
   133 	    RTagInfo TagInformation;	    
       
   134     	CnvUtfConverter::ConvertToUnicodeFromUtf8(TagName,alocalName);
       
   135     
       
   136 	    for(TInt i=0; i<nElements; i++)
       
   137 	        {
       
   138 	        AttributeInfo = aAttributes.operator[](i);             
       
   139 	        TagInformation = AttributeInfo.Attribute();
       
   140 	        
       
   141 	        TBuf<KMaxUnits> LocalName;
       
   142 	        //Read from resource file
       
   143 	        CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC());	        
       
   144 	        if(LocalName.Compare(_L("FeatureID")) == 0 && TagName.Compare(_L("text")) == 0) 
       
   145 	        	{
       
   146 	        	if(iFeatureIds)
       
   147 			    	{
       
   148 			    	delete iFeatureIds;
       
   149 			    	iFeatureIds = NULL;
       
   150 			    	}
       
   151 	        	
       
   152 	        	TRAP_IGNORE(iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length()));
       
   153 	        	TPtr FIdValue = iFeatureIds->Des(); 
       
   154 	        	CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC());
       
   155 	        	}	        	
       
   156 	        }       
       
   157         }   
       
   158     return KErrNone;
       
   159     }
       
   160 
       
   161 TInt CCSXHXMLParseHandler_Kywd::EndElement  (  const TDesC8&  ,const TDesC8& ,const TDesC8& ) 
       
   162     {
       
   163 	TRAP_IGNORE(CreateAndInsertKywdL());//Result can be ignored        
       
   164     iIsTargetName = EFalse;
       
   165     iIsAppName = EFalse;    
       
   166     return KErrNone;
       
   167     }
       
   168     
       
   169 TInt CCSXHXMLParseHandler_Kywd::Characters (const TDesC8&  aBuff, const TInt /*aStart*/, const TInt /*aLength*/) 
       
   170     {
       
   171     TBuf<KMaxFileName> TitleName;   
       
   172     if(iIsAppName)
       
   173         {           
       
   174         CnvUtfConverter::ConvertToUnicodeFromUtf8(TitleName,aBuff);
       
   175         iApplicationName.Append(TitleName);     
       
   176         }
       
   177     else if(iIsTargetName)
       
   178         {
       
   179         CnvUtfConverter::ConvertToUnicodeFromUtf8(TitleName,aBuff);
       
   180         iKeywordSearchTOC2TitleName.Append(TitleName);              
       
   181         }
       
   182     return KErrNone;
       
   183     }
       
   184 
       
   185 void CCSXHXMLParseHandler_Kywd::CreateTOC2ObjectsforKeywordSearch(const TDesC8& 
       
   186  alocalName, const RAttributeArray&  aAttributes)
       
   187     {
       
   188         iIsAppName = SetAppNameFlag(alocalName,KSearchViewTOC1Tag);
       
   189         
       
   190         TInt nElements = aAttributes.Count();
       
   191         TBuf<KMaxFileName>TagValue; 
       
   192         RAttribute AttributeInfo;
       
   193         RTagInfo TagInformation;
       
   194 		
       
   195 		TBuf<KMaxFileName> AppName;
       
   196         CnvUtfConverter::ConvertToUnicodeFromUtf8(AppName,alocalName);
       
   197         if(AppName.Compare(KSearchViewTOC2Tag) == 0)
       
   198             {
       
   199             iKeywordSearchTOC2TitleName.Copy(KEmptyString);
       
   200             iIsTargetName = ETrue;
       
   201             }
       
   202         else
       
   203             {
       
   204             iIsTargetName = EFalse;
       
   205             }
       
   206 		
       
   207 		if(!iIsTOC2View)            		               
       
   208 			return;
       
   209 		
       
   210         for(TInt i=0; i<nElements; i++)
       
   211             {
       
   212             AttributeInfo = aAttributes.operator[](i);             
       
   213             TagInformation = AttributeInfo.Attribute();
       
   214             
       
   215             TBuf<KMaxUnits> LocalName;
       
   216             //Read from resource file
       
   217             CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC());
       
   218             if(LocalName.Compare(KHtmlPageTag) == 0)    
       
   219                 {               
       
   220                 CnvUtfConverter::ConvertToUnicodeFromUtf8(iHTMLPageName,
       
   221                 	AttributeInfo.Value().DesC());
       
   222                 }
       
   223             else if(LocalName.Compare(_L("FeatureID")) == 0) 
       
   224 	            {
       
   225    	        	if(iFeatureIds)
       
   226 			    	{
       
   227 			    	delete iFeatureIds;
       
   228 			    	iFeatureIds = NULL;
       
   229 			    	}
       
   230 	        	TRAP_IGNORE(iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length()));
       
   231 	        	TPtr FIdValue = iFeatureIds->Des(); 
       
   232 	        	CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC());
       
   233 
       
   234 	            }
       
   235             }
       
   236         
       
   237     }   
       
   238     
       
   239 void CCSXHXMLParseHandler_Kywd::CreateAndInsertKywdL()
       
   240     {    
       
   241     if(iParser->CheckFeatureIDL(iFeatureIds->Des()))
       
   242         {
       
   243         if(iIsAppName && !iIsTOC2View)
       
   244 	        {
       
   245 	        iDataBase->InsertKeywordL(iApplicationName,iCurrentHtmlToc1);	
       
   246 	        }
       
   247         else if(iIsTargetName && iApplicationName.Compare(iTOC1Name)==0)
       
   248 	        {
       
   249 	        CCSXHHtmlTOC2* PXHTMLObject = 
       
   250 	        CCSXHHtmlTOC2::NewL(iCurrentHtmlToc1,iKeywordSearchTOC2TitleName,iHTMLPageName,ETrue);
       
   251 	        PXHTMLObject->SetKywdParent(STATIC_CAST(CCSXHKywdTopics*,iDataBase->GetKywdTopics())
       
   252 	                                            ->GetSelectedTopic());
       
   253 			STATIC_CAST(CCSXHHtmlTOC2*,PXHTMLObject)->SetHtmlFilePath(iFilePath);                                            
       
   254 	        iDataBase->InsertKeywordTopicL(/*iTOC1Name,*/PXHTMLObject);	
       
   255 	        }
       
   256         }
       
   257     }
       
   258     
       
   259 void CCSXHXMLParseHandler_Kywd::SetTOC1Title(const TDesC& aName)
       
   260     {
       
   261     iTOC1Name = aName;  
       
   262     }   
       
   263 
       
   264 void CCSXHXMLParseHandler_Kywd::SetCurrentHtmlToc1(CCSXHHtmlTOC1* aCurrentHtmlToc1)
       
   265     {
       
   266     iCurrentHtmlToc1 = aCurrentHtmlToc1;
       
   267     }
       
   268     
       
   269 void  CCSXHXMLParseHandler_Kywd::SetIsTOC2(TBool aFlag)
       
   270     {
       
   271     iIsTOC2View = aFlag;
       
   272     }       
       
   273     
       
   274 void CCSXHXMLParseHandler_Kywd::SetPath(const TDesC&  aFilePath)
       
   275 	{
       
   276 	iFilePath.Copy(KEmptyString);
       
   277 	iFilePath.Append(aFilePath);
       
   278 	}    
       
   279 
       
   280 //-------------- CCSXHXMLParseHandler_MetaFile -------------------
       
   281 
       
   282 CCSXHXMLParseHandler_MetaFile* CCSXHXMLParseHandler_MetaFile::NewL(CCoeEnv* aCoeEnv)
       
   283     {
       
   284     CCSXHXMLParseHandler_MetaFile* self = new (ELeave)CCSXHXMLParseHandler_MetaFile(aCoeEnv);   
       
   285     return self;
       
   286     }
       
   287     
       
   288 CCSXHXMLParseHandler_MetaFile::CCSXHXMLParseHandler_MetaFile(CCoeEnv* aCoeEnv)
       
   289 :CCSXHXMLParseHandler(aCoeEnv)
       
   290     {
       
   291     
       
   292     }
       
   293 TInt  CCSXHXMLParseHandler_MetaFile::StartElement (const TDesC8&  , const TDesC8&  
       
   294 alocalName, const TDesC8&  , const RAttributeArray& aAttributes) 
       
   295     {
       
   296     iIsAppName = SetAppNameFlag(alocalName,KAppNameTag);
       
   297 
       
   298     TInt nElements = aAttributes.Count();    
       
   299     TBuf<KMaxFileName> LocalTagName; 
       
   300     RAttribute AttributeInfo;
       
   301     RTagInfo TagInformation;
       
   302     
       
   303     CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalTagName,alocalName);
       
   304     for(TInt i=0; i<nElements; i++)
       
   305         {
       
   306         AttributeInfo = aAttributes.operator[](i);             
       
   307         TagInformation = AttributeInfo.Attribute();
       
   308         
       
   309     	if(iFeatureIds)
       
   310 	    	{
       
   311 	    	delete iFeatureIds;
       
   312 	    	iFeatureIds = NULL;
       
   313 	    	}
       
   314     	
       
   315     	TRAP_IGNORE(iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length()));
       
   316     	TPtr FIdValue = iFeatureIds->Des(); 
       
   317     	CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC());    	
       
   318         }
       
   319         
       
   320     if(LocalTagName.Compare(KAppNameTag) == 0 && nElements == 0)        
       
   321 		{
       
   322 		if(iFeatureIds)
       
   323 	    	{
       
   324 	    	delete iFeatureIds;
       
   325 	    	iFeatureIds = NULL;
       
   326 	    	}
       
   327 		
       
   328 		TRAP_IGNORE(iFeatureIds = HBufC::NewL(2));
       
   329 	    TPtr FIdValue = iFeatureIds->Des();
       
   330 	    FIdValue.Copy(_L("-1"));  
       
   331 		}
       
   332         
       
   333     return KErrNone;
       
   334     }
       
   335 
       
   336 TInt CCSXHXMLParseHandler_MetaFile::EndElement  (  const TDesC8&  ,const TDesC8& ,const TDesC8& ) 
       
   337     {
       
   338     iIsAppName = EFalse;
       
   339     return KErrNone;
       
   340     }
       
   341     
       
   342 TInt CCSXHXMLParseHandler_MetaFile::Characters (const TDesC8&  aBuff, const TInt /*aStart*/, const TInt /*aLength*/) 
       
   343     {
       
   344     TBuf<KMaxFileName> TitleName;   
       
   345     if(iIsAppName)
       
   346         {           
       
   347         CnvUtfConverter::ConvertToUnicodeFromUtf8(TitleName,aBuff);
       
   348         iApplicationName.Append(TitleName);     
       
   349         }
       
   350     return KErrNone;
       
   351     }
       
   352     
       
   353 
       
   354 //-------------- CCSXHXMLParseHandler_MasterMetaFile -------------------
       
   355 CCSXHXMLParseHandler_MasterMetaFile* CCSXHXMLParseHandler_MasterMetaFile::NewL(CCoeEnv* aCoeEnv)
       
   356     {
       
   357     CCSXHXMLParseHandler_MasterMetaFile* self = new (ELeave)CCSXHXMLParseHandler_MasterMetaFile(aCoeEnv); 
       
   358     return self;
       
   359     }
       
   360     
       
   361 CCSXHXMLParseHandler_MasterMetaFile::CCSXHXMLParseHandler_MasterMetaFile(CCoeEnv* aCoeEnv)
       
   362 :CCSXHXMLParseHandler(aCoeEnv)
       
   363     {
       
   364         
       
   365     }
       
   366     
       
   367 TInt  CCSXHXMLParseHandler_MasterMetaFile::StartElement (const TDesC8&  , const TDesC8&  
       
   368 , const TDesC8&  , const RAttributeArray&  aAttributes) 
       
   369     {
       
   370     TRAP_IGNORE(CreateTOC1ObjectsL(aAttributes));
       
   371     return KErrNone;
       
   372     }
       
   373     
       
   374 
       
   375         
       
   376 void CCSXHXMLParseHandler_MasterMetaFile::CreateTOC1ObjectsL(const
       
   377  RAttributeArray&  aAttributes)
       
   378     {
       
   379     TInt nElements = aAttributes.Count();
       
   380     TBuf<KMaxFileName> appUid; 
       
   381     TBuf<KMaxFileName> appName; 
       
   382     RAttribute AttributeInfo;
       
   383     RTagInfo TagInformation;
       
   384     TLinearOrder<CCSXHHelpContentBase> anOrder(Orderer<CCSXHHelpContentBase>);      
       
   385 	
       
   386     for(TInt i=0; i<nElements; i++)
       
   387         {
       
   388         AttributeInfo = aAttributes.operator[](i);             
       
   389         TagInformation = AttributeInfo.Attribute();
       
   390         
       
   391         TBuf<KMaxUnits> LocalName;
       
   392         //Read from resource file
       
   393         CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC());
       
   394         
       
   395         if ( LocalName.Compare( KDriveInfo ) == 0 )
       
   396             {
       
   397             TChar driveLetter(AttributeInfo.Value().DesC()[0]);
       
   398             RFs::CharToDrive( driveLetter, iDrive );
       
   399             }
       
   400             
       
   401         if(LocalName.Compare(KMasterCollection_idTag) == 0)
       
   402             {
       
   403             CnvUtfConverter::ConvertToUnicodeFromUtf8(appUid,AttributeInfo.Value().DesC());                    
       
   404             }
       
   405                     
       
   406         if(LocalName.Compare(KTOC2NameTag) == 0)
       
   407             {
       
   408             CnvUtfConverter::ConvertToUnicodeFromUtf8(appName,AttributeInfo.Value().DesC());
       
   409             if(2 == nElements)
       
   410             	{
       
   411             	if(iFeatureIds)
       
   412 			    	{
       
   413 			    	delete iFeatureIds;
       
   414 			    	iFeatureIds = NULL;
       
   415 			    	}
       
   416             	
       
   417             	iFeatureIds = HBufC::NewL(2);
       
   418 			    TPtr FIdValue = iFeatureIds->Des();
       
   419 			    FIdValue.Copy(_L("-1"));  
       
   420             	}
       
   421             	
       
   422             
       
   423             iParser->InsertHTMLToc1L( appUid, appName, iDrive, iDataBase, iFeatureIds->Des() );                            	
       
   424             }
       
   425             
       
   426         if(LocalName.Compare(_L("FeatureID")) == 0) 
       
   427             {
       
   428         	if(iFeatureIds)
       
   429 		    	{
       
   430 		    	delete iFeatureIds;
       
   431 		    	iFeatureIds = NULL;
       
   432 		    	}
       
   433         	
       
   434         	iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length());
       
   435         	TPtr FIdValue = iFeatureIds->Des(); 
       
   436         	CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC());
       
   437             }            
       
   438         }        
       
   439     } 
       
   440     
       
   441 void CCSXHXMLParseHandler_MasterMetaFile::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser)
       
   442     {
       
   443     iParser = aParser;
       
   444     }
       
   445 
       
   446     
       
   447 //-------------- CCSXHXMLParseHandler_IndexFile -------------------
       
   448 
       
   449 CCSXHXMLParseHandler_IndexFile* CCSXHXMLParseHandler_IndexFile::NewL(CCoeEnv* aCoeEnv)
       
   450     {
       
   451     CCSXHXMLParseHandler_IndexFile* self = new (ELeave)CCSXHXMLParseHandler_IndexFile(aCoeEnv); 
       
   452     return self;
       
   453     }
       
   454     
       
   455 CCSXHXMLParseHandler_IndexFile::CCSXHXMLParseHandler_IndexFile(CCoeEnv* aCoeEnv)
       
   456 :CCSXHXMLParseHandler(aCoeEnv)
       
   457     {
       
   458         
       
   459     }
       
   460     
       
   461 TInt  CCSXHXMLParseHandler_IndexFile::StartElement (const TDesC8&  , const TDesC8&  
       
   462 , const TDesC8&  , const RAttributeArray&  aAttributes) 
       
   463     {
       
   464     if(iFeatureIds)
       
   465     	{
       
   466     	delete iFeatureIds;
       
   467     	iFeatureIds = NULL;
       
   468     	}
       
   469             	
       
   470     TRAP_IGNORE(iFeatureIds = HBufC::NewL(2));
       
   471     TPtr FIdValue = iFeatureIds->Des();
       
   472     FIdValue.Copy(_L("-1"));  
       
   473 
       
   474     TRAP_IGNORE(CreateTOC2ObjectsL(aAttributes));
       
   475     return KErrNone;
       
   476     }
       
   477     
       
   478 void CCSXHXMLParseHandler_IndexFile::SetArray(RPointerArray<CCSXHHelpContentBase>* aHTMLlist)
       
   479     {
       
   480     iTOC2Array = aHTMLlist;
       
   481     }
       
   482     
       
   483 void CCSXHXMLParseHandler_IndexFile::SetGenericTOC1Object(CCSXHGenericTOC1& aParent)
       
   484     {
       
   485     iParent = &aParent;
       
   486     }
       
   487     
       
   488 void CCSXHXMLParseHandler_IndexFile::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser)
       
   489     {
       
   490     iParser = aParser;
       
   491     }
       
   492     
       
   493         
       
   494 void CCSXHXMLParseHandler_IndexFile::CreateTOC2ObjectsL(const
       
   495  RAttributeArray&  aAttributes)
       
   496     {
       
   497     TInt nElements = aAttributes.Count();
       
   498     TBuf<KMaxFileName>TagValue; 
       
   499     RAttribute AttributeInfo;
       
   500     RTagInfo TagInformation;
       
   501     TLinearOrder<CCSXHHelpContentBase> anOrder(Orderer<CCSXHHelpContentBase>);      
       
   502 
       
   503     for(TInt i=0; i<nElements; i++)
       
   504         {
       
   505         AttributeInfo = aAttributes.operator[](i);             
       
   506         TagInformation = AttributeInfo.Attribute();
       
   507         
       
   508         TBuf<KMaxUnits> LocalName;
       
   509         //Read from resource file
       
   510         CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC());
       
   511                     
       
   512         if(LocalName.Compare(KTOC2NameTag) == 0)
       
   513             {
       
   514             if(iParser->CheckFeatureIDL(iFeatureIds->Des()) || 2 == nElements)
       
   515 	            {            	
       
   516 	            CnvUtfConverter::ConvertToUnicodeFromUtf8(TagValue,AttributeInfo.Value().DesC());
       
   517 	            
       
   518 	            CCSXHGenericTOC2* PXHTMLObject = CCSXHHtmlTOC2::NewL(iParent,
       
   519 	            								 TagValue,iHTMLPageName);
       
   520 
       
   521 				STATIC_CAST(CCSXHHtmlTOC2*,PXHTMLObject)->SetHtmlFilePath(iFilePath);
       
   522 				
       
   523 	            if (KErrNone != iTOC2Array->InsertInOrder(PXHTMLObject,anOrder))
       
   524 	                delete PXHTMLObject;
       
   525 	            }            
       
   526             }
       
   527         else if(LocalName.Compare(KHtmlPageTag) == 0)   
       
   528             {               
       
   529             CnvUtfConverter::ConvertToUnicodeFromUtf8(iHTMLPageName,
       
   530             AttributeInfo.Value().DesC());
       
   531             }
       
   532         else if(LocalName.Compare(KCompressedTag) == 0)
       
   533             {
       
   534             CnvUtfConverter::ConvertToUnicodeFromUtf8(iCompressString,
       
   535 			AttributeInfo.Value().DesC());
       
   536             }
       
   537         else if(LocalName.Compare(_L("FeatureID")) == 0)
       
   538         	{
       
   539         	if(iFeatureIds)
       
   540 		    	{
       
   541 		    	delete iFeatureIds;
       
   542 		    	iFeatureIds = NULL;
       
   543 		    	}
       
   544         	
       
   545         	iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length());
       
   546         	TPtr FIdValue = iFeatureIds->Des(); 
       
   547         	CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC());
       
   548             }        
       
   549         }        
       
   550     } 
       
   551     
       
   552 void CCSXHXMLParseHandler_IndexFile::SetPath(const TDesC&  aFilePath)
       
   553 	{
       
   554 	iFilePath.Copy(KEmptyString);
       
   555 	iFilePath.Append(aFilePath);
       
   556 	}
       
   557     
       
   558 //-------------- CCSXHXMLParseHandler_MasterKeywordFile -------------------
       
   559 
       
   560 CCSXHXMLParseHandler_MasterKywd* CCSXHXMLParseHandler_MasterKywd::NewL(CCoeEnv* aCoeEnv)
       
   561     {
       
   562     CCSXHXMLParseHandler_MasterKywd* self = new (ELeave)CCSXHXMLParseHandler_MasterKywd(aCoeEnv); 
       
   563     return self;
       
   564     }
       
   565     
       
   566 CCSXHXMLParseHandler_MasterKywd::CCSXHXMLParseHandler_MasterKywd(CCoeEnv* aCoeEnv)
       
   567 :CCSXHXMLParseHandler(aCoeEnv)
       
   568     {
       
   569         
       
   570     }    
       
   571 
       
   572 TInt  CCSXHXMLParseHandler_MasterKywd::StartElement (const TDesC8&  , const TDesC8&  
       
   573 , const TDesC8&  , const RAttributeArray&  aAttributes) 
       
   574     {
       
   575     TRAP_IGNORE(CreateTOC1ObjectsL(aAttributes));
       
   576     return KErrNone;
       
   577     }
       
   578     
       
   579 void CCSXHXMLParseHandler_MasterKywd::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser)
       
   580     {
       
   581     iParser = aParser;
       
   582     }
       
   583 
       
   584 void CCSXHXMLParseHandler_MasterKywd::SetCurrentHtmlToc1(CCSXHHtmlTOC1* aCurrentHtmlToc1)
       
   585     {
       
   586     iCurrentHtmlToc1 = aCurrentHtmlToc1;
       
   587     }
       
   588          
       
   589 void CCSXHXMLParseHandler_MasterKywd::CreateTOC1ObjectsL(const
       
   590  RAttributeArray&  aAttributes)
       
   591     {
       
   592     TInt nElements = aAttributes.Count();
       
   593     TBuf<KMaxFileName> appUid; 
       
   594     TBuf<KMaxFileName> KeywordName; 
       
   595     RAttribute AttributeInfo;
       
   596     RTagInfo TagInformation;
       
   597 	    
       
   598     TLinearOrder<CCSXHHelpContentBase> anOrder(Orderer<CCSXHHelpContentBase>);      
       
   599 
       
   600     for(TInt i=0; i<nElements; i++)
       
   601         {
       
   602         AttributeInfo = aAttributes.operator[](i);             
       
   603         TagInformation = AttributeInfo.Attribute();
       
   604         
       
   605         TBuf<KMaxUnits> LocalName;
       
   606         //Read from resource file
       
   607         CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC());
       
   608                     
       
   609         if(LocalName.Compare(KMasterSearchTag) == 0)
       
   610             {
       
   611             CnvUtfConverter::ConvertToUnicodeFromUtf8(KeywordName,AttributeInfo.Value().DesC());
       
   612             }
       
   613                     
       
   614         if(LocalName.Compare(KMasterCollectionTag) == 0)
       
   615             {
       
   616             CnvUtfConverter::ConvertToUnicodeFromUtf8(appUid,AttributeInfo.Value().DesC());
       
   617             if(2 == nElements)
       
   618             	{
       
   619 				if(iParser->GetHTMLToc1(appUid,this))      
       
   620 	            	iDataBase->InsertKeywordL(KeywordName,iCurrentHtmlToc1);           	            	
       
   621             	}
       
   622             }       
       
   623             
       
   624 		if(LocalName.Compare(_L("FeatureID")) == 0)    
       
   625 			{
       
   626         	if(iFeatureIds)
       
   627 		    	{
       
   628 		    	delete iFeatureIds;
       
   629 		    	iFeatureIds = NULL;
       
   630 		    	}
       
   631         	
       
   632         	iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length());
       
   633         	TPtr FIdValue = iFeatureIds->Des(); 
       
   634         	CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC());
       
   635 
       
   636 			if(iParser->CheckFeatureIDL(iFeatureIds->Des()))
       
   637 				{
       
   638 				if(iParser->GetHTMLToc1(appUid,this))      
       
   639 	            	iDataBase->InsertKeywordL(KeywordName,iCurrentHtmlToc1);           	
       
   640 				}
       
   641 			}
       
   642         }        
       
   643     }
       
   644