diff -r e4ebb16b39ea -r 603d3f8b6302 src/versit/qversitdocumentwriter_p.cpp --- a/src/versit/qversitdocumentwriter_p.cpp Fri Sep 17 08:34:34 2010 +0300 +++ b/src/versit/qversitdocumentwriter_p.cpp Mon Oct 04 01:37:06 2010 +0300 @@ -60,11 +60,8 @@ * \a version is the version of the Versit format, as printed on the VERSION line of output. * eg. "2.1" */ -QVersitDocumentWriter::QVersitDocumentWriter( - const QByteArray& documentType, - const QByteArray& version) - : mDocumentType(documentType), - mVersion(version), +QVersitDocumentWriter::QVersitDocumentWriter() + : mDevice(0), mCodec(0), mEncoder(0), mUtf8Encoder(QTextCodec::codecForName("UTF-8")->makeEncoder()), @@ -106,21 +103,47 @@ } /*! -* Encodes the \a document and writes it to the device -*/ -void QVersitDocumentWriter::encodeVersitDocument(const QVersitDocument& document) + * Encodes the \a document and writes it to the device. A "VERSION:" line is added iff \a + * encodeVersion is true. + */ +void QVersitDocumentWriter::encodeVersitDocument(const QVersitDocument& document, bool encodeVersion) { mSuccessful = true; - QList properties = document.properties(); - writeString(QLatin1String("BEGIN:" + mDocumentType)); + writeString(QLatin1String("BEGIN:") + document.componentType()); writeCrlf(); - writeString(QLatin1String("VERSION:" + mVersion)); - writeCrlf(); - foreach (const QVersitProperty& property, properties) { + if (encodeVersion) { + switch (document.type()) { + case QVersitDocument::VCard21Type: + writeString(QLatin1String("VERSION:2.1")); + writeCrlf(); + break; + case QVersitDocument::VCard30Type: + writeString(QLatin1String("VERSION:3.0")); + writeCrlf(); + break; + case QVersitDocument::VCard40Type: + writeString(QLatin1String("VERSION:4.0")); + writeCrlf(); + break; + case QVersitDocument::ICalendar20Type: + writeString(QLatin1String("VERSION:2.0")); + writeCrlf(); + break; + default: + ; // don't print version + } + } + + foreach (const QVersitProperty& property, document.properties()) { encodeVersitProperty(property); } - writeString(QLatin1String("END:" + mDocumentType)); + + foreach (const QVersitDocument& document, document.subDocuments()) { + encodeVersitDocument(document, false); + } + + writeString(QLatin1String("END:") + document.componentType()); writeCrlf(); }