diff -r 000000000000 -r 0049171ecffb src/NPRHtmlCreator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/NPRHtmlCreator.cpp Fri Jul 24 08:46:02 2009 +0100 @@ -0,0 +1,106 @@ +/* + ============================================================================ + Name : NPRHtmlCreator.cpp + Author : Symsource + + Copyright (c) 2009 Symbian Foundation Ltd + This component and the accompanying materials are made available + under the terms of the License "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: + - Symbian Foundation Ltd - initial contribution. + + Contributors: + - Symsource + + Description : HTML composer + ============================================================================ + */ + +#include "NPRHtmlCreator.h" +#include "NPRStory.h" + +//Constants +_LIT(KPath, "c:\\data\\npr\\story.html"); +_LIT8(KHtml, "

%S

%S"); + +TInt CNPRHtmlCreator::iCurrentImage=6; + +CNPRHtmlCreator* CNPRHtmlCreator::NewLC() + { + CNPRHtmlCreator* self = new (ELeave) CNPRHtmlCreator(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CNPRHtmlCreator* CNPRHtmlCreator::NewL() + { + CNPRHtmlCreator* self = CNPRHtmlCreator::NewLC(); + CleanupStack::Pop(); // self; + return self; + } + +CNPRHtmlCreator::~CNPRHtmlCreator() + { + iFs.Close(); + } + + +void CNPRHtmlCreator::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +void CNPRHtmlCreator::CreateHtmlFileL(CNPRStory* aStory) + { + TInt err = iFs.MkDirAll(KPath); + if ((KErrNone != err) && (KErrAlreadyExists != err)) + { + User::Leave(err); + } + + //Open the file, replacing if necessary + RFile file; + User::LeaveIfError(file.Replace(iFs,KPath,EFileWrite)); + CleanupClosePushL(file); + + HBufC8* title=HBufC8::NewLC(aStory->Title().Length()); + title->Des().Copy(aStory->Title()); + + TInt textLength=aStory->Text().Length(); + HBufC8* text; + if (textLength!=0) + { + text=HBufC8::NewLC(textLength); + text->Des().Copy(aStory->Text()); + } + else + { + //There was no story, so just display the teaser + textLength=aStory->Teaser().Length(); + text=HBufC8::NewLC(textLength); + text->Des().Copy(aStory->Teaser()); + } + + HBufC8 *buf = HBufC8::NewLC(KHtml().Length() + + title->Length() + + textLength +1 + ); + + --iCurrentImage; + if (iCurrentImage<=0) + { + iCurrentImage=6; + } + + TPtr8 ptr = buf->Des(); + ptr.Format(KHtml,title, iCurrentImage,text); + + //Write into the file + User::LeaveIfError(file.Write(ptr)); + CleanupStack::PopAndDestroy(3); //buf,teaser,title + CleanupStack::PopAndDestroy(&file); + }