--- 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<QVersitProperty> 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();
}