qtmobility/src/versit/qversitwriter.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 8 71781823f776
--- a/qtmobility/src/versit/qversitwriter.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/versit/qversitwriter.cpp	Mon May 03 13:18:40 2010 +0300
@@ -46,6 +46,7 @@
 
 #include <QStringList>
 #include <QTextCodec>
+#include <QBuffer>
 
 QTM_USE_NAMESPACE
 
@@ -107,8 +108,24 @@
 /*! Constructs a new writer. */
 QVersitWriter::QVersitWriter() : d(new QVersitWriterPrivate)
 {
-    connect(d, SIGNAL(stateChanged(QVersitWriter::State)),
-            this, SIGNAL(stateChanged(QVersitWriter::State)), Qt::DirectConnection);
+    d->init(this);
+}
+
+/*! Constructs a new writer that writes to \a outputDevice. */
+QVersitWriter::QVersitWriter(QIODevice *outputDevice) : d(new QVersitWriterPrivate)
+{
+    d->init(this);
+    d->mIoDevice = outputDevice;
+}
+
+/*! Constructs a new writer that appends to \a outputBytes. */
+QVersitWriter::QVersitWriter(QByteArray *outputBytes) : d(new QVersitWriterPrivate)
+{
+    d->init(this);
+    d->mOutputBytes.reset(new QBuffer);
+    d->mOutputBytes->setBuffer(outputBytes);
+    d->mOutputBytes->open(QIODevice::WriteOnly);
+    d->mIoDevice = d->mOutputBytes.data();
 }
 
 /*!
@@ -127,15 +144,19 @@
  */
 void QVersitWriter::setDevice(QIODevice* device)
 {
+    d->mOutputBytes.reset(0);
     d->mIoDevice = device;
 }
 
 /*!
- * Returns the device used for writing.
+ * Returns the device used for writing, or 0 if no device has been set.
  */
 QIODevice* QVersitWriter::device() const
 {
-    return d->mIoDevice;
+    if (d->mOutputBytes.isNull())
+        return d->mIoDevice;
+    else
+        return 0;
 }
 
 /*!
@@ -158,6 +179,22 @@
 }
 
 /*!
+ * Returns the state of the writer.
+ */
+QVersitWriter::State QVersitWriter::state() const
+{
+    return d->state();
+}
+
+/*!
+ * Returns the error encountered by the last operation.
+ */
+QVersitWriter::Error QVersitWriter::error() const
+{
+    return d->error();
+}
+
+/*!
  * Starts writing \a input to device() asynchronously.
  * Returns false if the output device has not been set or opened or
  * if there is another asynchronous write operation already pending.
@@ -207,20 +244,4 @@
     }
 }
 
-/*!
- * Returns the state of the writer.
- */
-QVersitWriter::State QVersitWriter::state() const
-{
-    return d->state();
-}
-
-/*!
- * Returns the error encountered by the last operation.
- */
-QVersitWriter::Error QVersitWriter::error() const
-{
-    return d->error();
-}
-
 #include "moc_qversitwriter.cpp"