diff -r 12f60d9a73b3 -r cbffe13eac63 csxhelp/HelpEngine/src/CSXHXMLParseHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/csxhelp/HelpEngine/src/CSXHXMLParseHandler.cpp Wed Sep 01 12:30:56 2010 +0100 @@ -0,0 +1,808 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: CCSXHXMLParseHandler class definition +* +*/ + +#include "CSXHXMLParseHandler.h" +#include "CSXHHtmlTOC2.h" +#include "CSXHKywdTopics.h" +#include "CSXHHelpDataBase.h" +#include "CSXHHtmlTOC1.h" +#include "csxhconstants.h" +#include "CSXHHTMLContentParser.h" + +#include +#include +#include +#include + + +CCSXHXMLParseHandler::CCSXHXMLParseHandler(CCoeEnv* aCoeEnv) + { + iCoeEnv = aCoeEnv; + } + +CCSXHXMLParseHandler::~CCSXHXMLParseHandler() + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + } +TInt CCSXHXMLParseHandler::StartDocument() + { + return KErrNone; + } + +TInt CCSXHXMLParseHandler::EndDocument() + { + return KErrNone; + } + +void CCSXHXMLParseHandler::SetDataBasePtr(CCSXHHelpDataBase* aDataBase) + { + iDataBase = aDataBase; + } + +TDesC& CCSXHXMLParseHandler::GetApplicationName() + { + return iApplicationName; + } + +TPtr CCSXHXMLParseHandler::GetFeatureIds() + { + return iFeatureIds->Des(); + } + +TBool CCSXHXMLParseHandler::SetAppNameFlag(const TDesC8& alocalName,const TDesC& aAppTag) + { + //R_TYPE_APPLICATION_TAG_NAME + TBool Result = EFalse; + TBuf AppName; + CnvUtfConverter::ConvertToUnicodeFromUtf8(AppName,alocalName); + if(AppName.Compare(aAppTag) == 0) + { + iApplicationName.Copy(KEmptyString); + Result = ETrue; + } + else + { + Result = EFalse; + } + return Result; + } + +//-------------- CCSXHXMLParseHandler_Kywd ------------------- + +void CCSXHXMLParseHandler_Kywd::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser) + { + iParser = aParser; + } + +CCSXHXMLParseHandler_Kywd* CCSXHXMLParseHandler_Kywd::NewL(CCoeEnv* aCoeEnv) + { + CCSXHXMLParseHandler_Kywd* self = new (ELeave)CCSXHXMLParseHandler_Kywd(aCoeEnv); + return self; + } + +CCSXHXMLParseHandler_Kywd::CCSXHXMLParseHandler_Kywd(CCoeEnv* aCoeEnv) +:CCSXHXMLParseHandler(aCoeEnv) + { + iCurrentHtmlToc1 = NULL; + iIsTargetName = EFalse; + } + +TInt CCSXHXMLParseHandler_Kywd::StartElement (const TDesC8& /*iURI*/ , const TDesC8& +alocalName, const TDesC8& /*iqualname*/, const RAttributeArray& aAttributes) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + + TRAP_IGNORE(iFeatureIds = HBufC::NewL(2)); + TPtr FIdValue = iFeatureIds->Des(); + FIdValue.Copy(_L("-1")); + + if(iIsTOC2View) + { + CreateTOC2ObjectsforKeywordSearch(alocalName,aAttributes); + } + else + { + iIsAppName = SetAppNameFlag(alocalName,KSearchViewTOC1Tag); + + TInt nElements = aAttributes.Count(); + TBuf TagName; + RAttribute AttributeInfo; + RTagInfo TagInformation; + CnvUtfConverter::ConvertToUnicodeFromUtf8(TagName,alocalName); + + for(TInt i=0; i LocalName; + //Read from resource file + CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC()); + if(LocalName.Compare(_L("FeatureID")) == 0 && TagName.Compare(_L("text")) == 0) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + TRAP_IGNORE(iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length())); + TPtr FIdValue = iFeatureIds->Des(); + CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC()); + } + } + } + return KErrNone; + } + +TInt CCSXHXMLParseHandler_Kywd::EndElement ( const TDesC8& ,const TDesC8& ,const TDesC8& ) + { + TRAP_IGNORE(CreateAndInsertKywdL());//Result can be ignored + iIsTargetName = EFalse; + iIsAppName = EFalse; + return KErrNone; + } + +TInt CCSXHXMLParseHandler_Kywd::Characters (const TDesC8& aBuff, const TInt /*aStart*/, const TInt /*aLength*/) + { + TBuf TitleName; + if(iIsAppName) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(TitleName,aBuff); + iApplicationName.Append(TitleName); + } + else if(iIsTargetName) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(TitleName,aBuff); + iKeywordSearchTOC2TitleName.Append(TitleName); + } + return KErrNone; + } + +void CCSXHXMLParseHandler_Kywd::CreateTOC2ObjectsforKeywordSearch(const TDesC8& + alocalName, const RAttributeArray& aAttributes) + { + iIsAppName = SetAppNameFlag(alocalName,KSearchViewTOC1Tag); + + TInt nElements = aAttributes.Count(); + TBufTagValue; + RAttribute AttributeInfo; + RTagInfo TagInformation; + + TBuf AppName; + CnvUtfConverter::ConvertToUnicodeFromUtf8(AppName,alocalName); + if(AppName.Compare(KSearchViewTOC2Tag) == 0) + { + iKeywordSearchTOC2TitleName.Copy(KEmptyString); + iIsTargetName = ETrue; + } + else + { + iIsTargetName = EFalse; + } + + if(!iIsTOC2View) + return; + + for(TInt i=0; i LocalName; + //Read from resource file + CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC()); + if(LocalName.Compare(KHtmlPageTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(iHTMLPageName, + AttributeInfo.Value().DesC()); + } + else if(LocalName.Compare(_L("FeatureID")) == 0) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + TRAP_IGNORE(iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length())); + TPtr FIdValue = iFeatureIds->Des(); + CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC()); + + } + } + + } + +void CCSXHXMLParseHandler_Kywd::CreateAndInsertKywdL() + { + if(iParser->CheckFeatureIDL(iFeatureIds->Des())) + { + if(iIsAppName && !iIsTOC2View) + { + iDataBase->InsertKeywordL(iApplicationName,iCurrentHtmlToc1); + } + else if(iIsTargetName && iApplicationName.Compare(iTOC1Name)==0) + { + CCSXHHtmlTOC2* PXHTMLObject = + CCSXHHtmlTOC2::NewL(iCurrentHtmlToc1,iKeywordSearchTOC2TitleName,iHTMLPageName,ETrue); + PXHTMLObject->SetKywdParent(STATIC_CAST(CCSXHKywdTopics*,iDataBase->GetKywdTopics()) + ->GetSelectedTopic()); + STATIC_CAST(CCSXHHtmlTOC2*,PXHTMLObject)->SetHtmlFilePath(iFilePath); + iDataBase->InsertKeywordTopicL(/*iTOC1Name,*/PXHTMLObject); + } + } + } + +void CCSXHXMLParseHandler_Kywd::SetTOC1Title(const TDesC& aName) + { + iTOC1Name = aName; + } + +void CCSXHXMLParseHandler_Kywd::SetCurrentHtmlToc1(CCSXHHtmlTOC1* aCurrentHtmlToc1) + { + iCurrentHtmlToc1 = aCurrentHtmlToc1; + } + +void CCSXHXMLParseHandler_Kywd::SetIsTOC2(TBool aFlag) + { + iIsTOC2View = aFlag; + } + +void CCSXHXMLParseHandler_Kywd::SetPath(const TDesC& aFilePath) + { + iFilePath.Copy(KEmptyString); + iFilePath.Append(aFilePath); + } + +//-------------- CCSXHXMLParseHandler_MetaFile ------------------- + +CCSXHXMLParseHandler_MetaFile* CCSXHXMLParseHandler_MetaFile::NewL(CCoeEnv* aCoeEnv) + { + CCSXHXMLParseHandler_MetaFile* self = new (ELeave)CCSXHXMLParseHandler_MetaFile(aCoeEnv); + return self; + } + +CCSXHXMLParseHandler_MetaFile::CCSXHXMLParseHandler_MetaFile(CCoeEnv* aCoeEnv) +:CCSXHXMLParseHandler(aCoeEnv) + { + + } +TInt CCSXHXMLParseHandler_MetaFile::StartElement (const TDesC8& , const TDesC8& +alocalName, const TDesC8& , const RAttributeArray& aAttributes) + { + iIsAppName = SetAppNameFlag(alocalName,KAppNameTag); + + TInt nElements = aAttributes.Count(); + TBuf LocalTagName; + RAttribute AttributeInfo; + RTagInfo TagInformation; + + CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalTagName,alocalName); + for(TInt i=0; iDes(); + CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC()); + } + + if(LocalTagName.Compare(KAppNameTag) == 0 && nElements == 0) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + TRAP_IGNORE(iFeatureIds = HBufC::NewL(2)); + TPtr FIdValue = iFeatureIds->Des(); + FIdValue.Copy(_L("-1")); + } + + if ( LocalTagName.Compare(KPriorityTag) == 0 && nElements == 0 ) + { + iIsPriority = ETrue; + iPriority.Copy(KEmptyString); + } + else + { + iIsPriority = EFalse; + } + + return KErrNone; + } + +TInt CCSXHXMLParseHandler_MetaFile::EndElement ( const TDesC8& ,const TDesC8& ,const TDesC8& ) + { + iIsAppName = EFalse; + iIsPriority = EFalse; + return KErrNone; + } + +TInt CCSXHXMLParseHandler_MetaFile::Characters (const TDesC8& aBuff, const TInt /*aStart*/, const TInt /*aLength*/) + { + if (iIsAppName) + { + TBuf TitleName; + CnvUtfConverter::ConvertToUnicodeFromUtf8(TitleName,aBuff); + iApplicationName.Append(TitleName); + } + + if (iIsPriority) + { + TBuf<8> Priority; + CnvUtfConverter::ConvertToUnicodeFromUtf8(Priority,aBuff); + iPriority.Append(Priority); + } + + return KErrNone; + } + +TInt32 CCSXHXMLParseHandler_MetaFile::Priority() + { + //The default priority is set to 0 + TInt priority = 0; + + if (iPriority.Length() != 0) + { + TLex lex( iPriority ); + lex.Val( priority ); + iPriority.Copy(KEmptyString); + } + + return priority; + } + + +//-------------- CCSXHXMLParseHandler_MasterMetaFile ------------------- +CCSXHXMLParseHandler_MasterMetaFile* CCSXHXMLParseHandler_MasterMetaFile::NewL(CCoeEnv* aCoeEnv) + { + CCSXHXMLParseHandler_MasterMetaFile* self = new (ELeave)CCSXHXMLParseHandler_MasterMetaFile(aCoeEnv); + return self; + } + +CCSXHXMLParseHandler_MasterMetaFile::CCSXHXMLParseHandler_MasterMetaFile(CCoeEnv* aCoeEnv) +:CCSXHXMLParseHandler(aCoeEnv) + { + + } + +TInt CCSXHXMLParseHandler_MasterMetaFile::StartElement (const TDesC8& , const TDesC8& +, const TDesC8& , const RAttributeArray& aAttributes) + { + TRAP_IGNORE(CreateTOC1ObjectsL(aAttributes)); + return KErrNone; + } + + + +void CCSXHXMLParseHandler_MasterMetaFile::CreateTOC1ObjectsL(const + RAttributeArray& aAttributes) + { + TInt nElements = aAttributes.Count(); + TBuf appUid; + TBuf appName; + TBuf<8> priorityBuf; + TInt32 appPriority; + RAttribute AttributeInfo; + RTagInfo TagInformation; + TLinearOrder anOrder(Orderer); + + for(TInt i=0; i LocalName; + //Read from resource file + CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC()); + + if ( LocalName.Compare( KDriveInfo ) == 0 ) + { + TChar driveLetter(AttributeInfo.Value().DesC()[0]); + RFs::CharToDrive( driveLetter, iDrive ); + } + + if(LocalName.Compare(KMasterCollection_idTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(appUid,AttributeInfo.Value().DesC()); + } + + if (LocalName.Compare(KPriorityTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(priorityBuf,AttributeInfo.Value().DesC()); + TLex lex( priorityBuf ); + lex.Val( appPriority ); + } + + if(LocalName.Compare(KTOC2NameTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(appName,AttributeInfo.Value().DesC()); + if(2 == nElements) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + iFeatureIds = HBufC::NewL(2); + TPtr FIdValue = iFeatureIds->Des(); + FIdValue.Copy(_L("-1")); + } + + + iParser->InsertHTMLToc1L( appUid, appName, iDrive, iDataBase, iFeatureIds->Des(), appPriority ); + } + + if(LocalName.Compare(_L("FeatureID")) == 0) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length()); + TPtr FIdValue = iFeatureIds->Des(); + CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC()); + } + } + } + +void CCSXHXMLParseHandler_MasterMetaFile::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser) + { + iParser = aParser; + } + + +//-------------- CCSXHXMLParseHandler_IndexFile ------------------- + +CCSXHXMLParseHandler_IndexFile* CCSXHXMLParseHandler_IndexFile::NewL(CCoeEnv* aCoeEnv) + { + CCSXHXMLParseHandler_IndexFile* self = new (ELeave)CCSXHXMLParseHandler_IndexFile(aCoeEnv); + return self; + } + +CCSXHXMLParseHandler_IndexFile::CCSXHXMLParseHandler_IndexFile(CCoeEnv* aCoeEnv) +:CCSXHXMLParseHandler(aCoeEnv) + { + + } + +TInt CCSXHXMLParseHandler_IndexFile::StartElement (const TDesC8& , const TDesC8& +, const TDesC8& , const RAttributeArray& aAttributes) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + TRAP_IGNORE(iFeatureIds = HBufC::NewL(2)); + TPtr FIdValue = iFeatureIds->Des(); + FIdValue.Copy(_L("-1")); + + TRAP_IGNORE(CreateTOC2ObjectsL(aAttributes)); + return KErrNone; + } + +void CCSXHXMLParseHandler_IndexFile::SetArray(RPointerArray* aHTMLlist) + { + iTOC2Array = aHTMLlist; + } + +void CCSXHXMLParseHandler_IndexFile::SetGenericTOC1Object(CCSXHGenericTOC1& aParent) + { + iParent = &aParent; + } + +void CCSXHXMLParseHandler_IndexFile::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser) + { + iParser = aParser; + } + + +void CCSXHXMLParseHandler_IndexFile::CreateTOC2ObjectsL(const + RAttributeArray& aAttributes) + { + TInt nElements = aAttributes.Count(); + TBufTagValue; + RAttribute AttributeInfo; + RTagInfo TagInformation; + TLinearOrder anOrder(Orderer); + + for(TInt i=0; i LocalName; + //Read from resource file + CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC()); + + if(LocalName.Compare(KTOC2NameTag) == 0) + { + if(iParser->CheckFeatureIDL(iFeatureIds->Des()) || 2 == nElements) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(TagValue,AttributeInfo.Value().DesC()); + + CCSXHGenericTOC2* PXHTMLObject = CCSXHHtmlTOC2::NewL(iParent, + TagValue,iHTMLPageName); + + STATIC_CAST(CCSXHHtmlTOC2*,PXHTMLObject)->SetHtmlFilePath(iFilePath); + + if (KErrNone != iTOC2Array->InsertInOrder(PXHTMLObject,anOrder)) + delete PXHTMLObject; + } + } + else if(LocalName.Compare(KHtmlPageTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(iHTMLPageName, + AttributeInfo.Value().DesC()); + } + else if(LocalName.Compare(KCompressedTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(iCompressString, + AttributeInfo.Value().DesC()); + } + else if(LocalName.Compare(_L("FeatureID")) == 0) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length()); + TPtr FIdValue = iFeatureIds->Des(); + CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC()); + } + } + } + +void CCSXHXMLParseHandler_IndexFile::SetPath(const TDesC& aFilePath) + { + iFilePath.Copy(KEmptyString); + iFilePath.Append(aFilePath); + } + +//-------------- CCSXHXMLParseHandler_MasterKeywordFile ------------------- + +CCSXHXMLParseHandler_MasterKywd* CCSXHXMLParseHandler_MasterKywd::NewL(CCoeEnv* aCoeEnv) + { + CCSXHXMLParseHandler_MasterKywd* self = new (ELeave)CCSXHXMLParseHandler_MasterKywd(aCoeEnv); + return self; + } + +CCSXHXMLParseHandler_MasterKywd::CCSXHXMLParseHandler_MasterKywd(CCoeEnv* aCoeEnv) +:CCSXHXMLParseHandler(aCoeEnv) + { + + } + +TInt CCSXHXMLParseHandler_MasterKywd::StartElement (const TDesC8& , const TDesC8& +, const TDesC8& , const RAttributeArray& aAttributes) + { + TRAP_IGNORE(CreateTOC1ObjectsL(aAttributes)); + return KErrNone; + } + +void CCSXHXMLParseHandler_MasterKywd::SetHtmlContentParserPtr(CCSXHHTMLContentParser* aParser) + { + iParser = aParser; + } + +void CCSXHXMLParseHandler_MasterKywd::SetCurrentHtmlToc1(CCSXHHtmlTOC1* aCurrentHtmlToc1) + { + iCurrentHtmlToc1 = aCurrentHtmlToc1; + } + +void CCSXHXMLParseHandler_MasterKywd::CreateTOC1ObjectsL(const + RAttributeArray& aAttributes) + { + TInt nElements = aAttributes.Count(); + TBuf appUid; + TBuf KeywordName; + RAttribute AttributeInfo; + RTagInfo TagInformation; + + TLinearOrder anOrder(Orderer); + + for(TInt i=0; i LocalName; + //Read from resource file + CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalName,TagInformation.LocalName().DesC()); + + if(LocalName.Compare(KMasterSearchTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(KeywordName,AttributeInfo.Value().DesC()); + } + + if(LocalName.Compare(KMasterCollectionTag) == 0) + { + CnvUtfConverter::ConvertToUnicodeFromUtf8(appUid,AttributeInfo.Value().DesC()); + if(2 == nElements) + { + if(iParser->GetHTMLToc1(appUid,this)) + iDataBase->InsertKeywordL(KeywordName,iCurrentHtmlToc1); + } + } + + if(LocalName.Compare(_L("FeatureID")) == 0) + { + if(iFeatureIds) + { + delete iFeatureIds; + iFeatureIds = NULL; + } + + iFeatureIds = HBufC::NewL(AttributeInfo.Value().DesC().Length()); + TPtr FIdValue = iFeatureIds->Des(); + CnvUtfConverter::ConvertToUnicodeFromUtf8(FIdValue,AttributeInfo.Value().DesC()); + + if(iParser->CheckFeatureIDL(iFeatureIds->Des())) + { + if(iParser->GetHTMLToc1(appUid,this)) + iDataBase->InsertKeywordL(KeywordName,iCurrentHtmlToc1); + } + } + } + } + +//-------------- CCSXHXMLParseHandler_RedirectFile ------------------- + +CCSXHXMLParseHandler_RedirectFile* CCSXHXMLParseHandler_RedirectFile::NewL( CCoeEnv *aCoeEnv, + const TUid &aSourceUid, const TCoeContextName &aSourceContextName ) + { + CCSXHXMLParseHandler_RedirectFile* self = + new (ELeave)CCSXHXMLParseHandler_RedirectFile( aCoeEnv, aSourceUid, aSourceContextName ); + return self; + } + +CCSXHXMLParseHandler_RedirectFile::CCSXHXMLParseHandler_RedirectFile( CCoeEnv *aCoeEnv, + const TUid &aSourceUid, const TCoeContextName &aSourceContextName ) +:CCSXHXMLParseHandler( aCoeEnv ), iSourceContextName( aSourceContextName ), iTargetUid( aSourceUid ) + { + } +TInt CCSXHXMLParseHandler_RedirectFile::StartElement (const TDesC8& , + const TDesC8 &alocalName, const TDesC8& , const RAttributeArray &aAttributes) + { + if ( !iIsTargetPathFound ) + { + TBuf LocalTagName; + + CnvUtfConverter::ConvertToUnicodeFromUtf8(LocalTagName,alocalName); + + if ( LocalTagName.Compare(KFromTag) == 0 ) + { + iIsFromTag = ETrue; + iIsToTag = EFalse; + } + else if (LocalTagName.Compare(KToTag) == 0 ) + { + iIsToTag = ETrue; + iIsFromTag = EFalse; + } + else + { + iIsFromTag = EFalse; + iIsToTag = EFalse; + } + iFromContent.Copy(KEmptyString); + } + + return KErrNone; + } + +TInt CCSXHXMLParseHandler_RedirectFile::EndElement ( const TDesC8& ,const TDesC8& ,const TDesC8& ) + { + if ( iIsFromTag && iFromContent.Compare( iSourceContextName ) == 0 ) + { + iIsSourceContextNameFound = ETrue; + } + else + { + iIsSourceContextNameFound = EFalse; + } + + iIsFromTag = EFalse; + iIsToTag = EFalse; + + return KErrNone; + } + +TInt CCSXHXMLParseHandler_RedirectFile::Characters (const TDesC8& aBuff, const TInt /*aStart*/, const TInt /*aLength*/) + { + if ( iIsFromTag ) + { + TCoeContextName file; + CnvUtfConverter::ConvertToUnicodeFromUtf8(file,aBuff); + iFromContent.Append(file); + } + + else if ( iIsSourceContextNameFound && iIsToTag ) + { + TBuf targetPath; + CnvUtfConverter::ConvertToUnicodeFromUtf8(targetPath,aBuff); + iTargetPath.Append(targetPath); + + iIsTargetPathFound = ETrue; + } + + return KErrNone; + } + +TUid CCSXHXMLParseHandler_RedirectFile::TargetUid() + { + TInt loc = iTargetPath.Find( KHexPrefix ); + if ( loc != KErrNotFound ) + { + TLex lex( iTargetPath.Mid( loc+KHexPrefixLength, KHexUidLength ) ); + TUint appId = 0; + lex.Val( appId, EHex ); + + if ( appId ) + { + iTargetUid = TUid::Uid( (TInt)appId ); + } + } + + return iTargetUid; + } + +TBuf& CCSXHXMLParseHandler_RedirectFile::TargetContextName() + { + TInt loc = iTargetPath.Find( KHexPrefix ); + if ( loc != KErrNotFound ) + { + iTargetContextName = iTargetPath.Mid( loc + KOffsetFromUidToContext ); + } + else + { + iTargetContextName = iTargetPath; + } + + return iTargetContextName; + } + +TBool CCSXHXMLParseHandler_RedirectFile::IsTargetPathFound() + { + return iIsTargetPathFound; + } +