src/versit/qversitdocumentwriter_p.cpp
changeset 5 603d3f8b6302
parent 0 876b1a06bc25
--- 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();
 }