void CODF::GetODFTextL(const TDesC& aFileName,CEikEdwin* aEdwin) { iEdwin = aEdwin; RFs aRFSession; aRFSession.Connect(); CZipFile* zipFile = CZipFile::NewL(aRFSession, aFileName); CleanupStack::PushL(zipFile); CZipFileMember* member = zipFile->CaseInsensitiveMemberL(content); CleanupStack::PushL(member); RZipFileMemberReaderStream* stream; zipFile->GetInputStreamL(member, stream); CleanupStack::PushL(stream); HBufC8* aBuffer = HBufC8::NewL(member->UncompressedSize()); TPtr8 aBufferPtr(aBuffer->Des()); User::LeaveIfError(stream->Read(aBufferPtr, member->UncompressedSize())); CleanupStack::PopAndDestroy(3); aRFSession.Close(); CleanupStack::PushL(aBuffer); _LIT8 (KMimeType, "text/xml"); CParser* aParser=CParser::NewL(KMimeType,*this); CleanupStack::PushL(aParser); aParser->ParseBeginL(); aParser->ParseL(aBufferPtr); aParser->ParseEndL(); CleanupStack::PopAndDestroy( aParser); CleanupStack::PopAndDestroy( aBuffer); };
// static QString WidgetUnzipUtilityS60::fileContentsL(const QString& aZipFileName, const QString& aFileName, const Qt::CaseSensitivity& cs) { QString zipFileName = QDir::toNativeSeparators(aZipFileName); QString contents; TPtrC16 zName(reinterpret_cast<const TUint16*>(zipFileName.utf16())); RFs iFs; User::LeaveIfError(iFs.Connect()); CZipFile *zipfile = CZipFile::NewL(iFs, zName); CleanupStack::PushL(zipfile); CZipFileMemberIterator *members = zipfile->GetMembersL(); CZipFileMember* member; while ((member = members->NextL()) != 0) { QString filename = QString::fromUtf16(member->Name()->Ptr(), member->Name()->Length()); // If the member is the desired file, extract it if (!filename.compare(aFileName, cs)) { RZipFileMemberReaderStream *stream; zipfile->GetInputStreamL(member, stream); CleanupStack::PushL(stream); HBufC8 *buffer = HBufC8::NewLC(member->UncompressedSize()); TPtr8 bufferPtr(buffer->Des()); User::LeaveIfError(stream->Read(bufferPtr, member->UncompressedSize())); QByteArray data(reinterpret_cast<const char*>(buffer->Ptr()), buffer->Length()); QString ret(data); CleanupStack::PopAndDestroy(3); // zipfile, stream, buffer return ret; } } CleanupStack::PopAndDestroy(); return contents; }