diff -r da856f45b798 -r ff5174af067c zeroconf/zeroconfsharing/cfileparser.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zeroconf/zeroconfsharing/cfileparser.cpp Wed Jul 21 14:28:48 2010 +0530 @@ -0,0 +1,203 @@ +/* +* Copyright (c) 2001-2008 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: +* +*/ + +#include "cfileparser.h" + +#include +#include + + +CFileParser::CFileParser() + { + + } + +CFileParser::~CFileParser() + { + iFileServ.Close(); + + } + +CFileParser* CFileParser::NewLC() + { + CFileParser* self = new (ELeave) CFileParser(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CFileParser* CFileParser::NewL() + { + CFileParser* self = CFileParser::NewLC(); + CleanupStack::Pop(); // self; + return self; + } + +void CFileParser::ConstructL() + { + iFileServ.Connect(); + iStart = false; + SetMediaType(CFileParser::ENone); //no specific folder + + } + +void CFileParser::SetMediaType(TMediaType aType) + { + iCurMediaType = aType; + } + +CFileParser::TMediaType CFileParser::GetMediaType() + { + return iCurMediaType; + } + +/* + * aFileName - is the file to be parsed + * this contain the text in the form + * [photos] + * -- + * -- + * [/photos] + * [music] + * -- + * --[/music] + * [videos] + * --- + * -- + * [/videos] + * ParseFile function takes such a file & parses the sections + * and writes the photo filename to aPhotoFile, + * music file names to aMusicFile & + * video file names to aVideoFile + * + */ + + +void CFileParser::ParseFile( const TDesC& aFileName,const TDesC& aPhotoFile,const TDesC& aMusicFile,const TDesC& aVideoFile ) + { + TFileText lineReader; + TFileName name; + RBuf8 fileName; + RFile photoFile, musicFile, videoFile; + + //declare the start & end tags + _LIT(KPhotoStart,"[photos]"); + _LIT(KMusicStart,"[music]"); + _LIT(KVideoStart,"[videos]"); + _LIT(KPhotoEnd,"[/photos]"); + _LIT(KMusicEnd,"[/music]"); + _LIT(KVideoEnd,"[/videos]"); + + _LIT(KStartTag,"[%s]"); + _LIT(KEndTag,"[/%s]"); + + TBuf buf; + name.Copy(aFileName); + RFileReadStream readStream; + readStream.PushL(); + + User::LeaveIfError(readStream.Open(iFileServ, name, EFileRead)); + CLineReader* myReader = CLineReader::NewL(readStream); + TInt aPos = 0; + TInt aErr = 0; + + photoFile.Replace(iFileServ,aPhotoFile,EFileWrite); + musicFile.Replace(iFileServ,aMusicFile,EFileWrite); + videoFile.Replace(iFileServ,aVideoFile,EFileWrite); + + while(aErr!=KErrEof) + { + myReader->ReadLineL(aPos, aErr); + // Do your parsing here .. + fileName.CreateL(KMaxFileName); + buf.Copy(myReader->iBufPtr); + //compare buf with the start & end tags + //if it is the start or end tag, dont write to the file + if( buf.Compare(KPhotoStart)== 0){ //photo tag start + SetMediaType(CFileParser::EPhotos); + iStart = true; + } + else if( buf.Compare(KPhotoEnd)== 0){ //photo tag end + SetMediaType(CFileParser::ENone); + } + else if( buf.Compare(KMusicStart)== 0 ){ //music tag start + SetMediaType(CFileParser::EMusic); + iStart = true; + } + else if( buf.Compare(KMusicEnd)== 0){ + SetMediaType(CFileParser::ENone); //music tag end + } + else if( buf.Compare(KVideoStart)== 0 ){ + SetMediaType(CFileParser::EVideos); + iStart = true;//video tag start + } + else if( buf.Compare(KVideoEnd)== 0 ){ + SetMediaType(CFileParser::ENone); //video tag end + } + else + { + fileName.Copy(buf); + switch( GetMediaType() ) + { + case EPhotos: + { + if(!iStart){ + photoFile.Write(_L8("\n")); + } + else { + iStart = false; + } + photoFile.Write(fileName); + } + break; + case EMusic: + { + if(!iStart){ + musicFile.Write(_L8("\n")); + } + else { + iStart = false; + } + musicFile.Write(fileName); + } + break; + case EVideos: + { + if(!iStart){ + videoFile.Write(_L8("\n")); + } + else { + iStart = false; + } + videoFile.Write(fileName); + } + break; + default: + break; + } + } + + } + //close all file handles + photoFile.Close(); + musicFile.Close(); + videoFile.Close(); + //close the filename rbuf + fileName.Close(); + CleanupStack::PopAndDestroy(); + delete myReader; + }