qtmobility/src/versit/qversitreader_p.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 8 71781823f776
--- a/qtmobility/src/versit/qversitreader_p.h	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/versit/qversitreader_p.h	Mon May 03 13:18:40 2010 +0300
@@ -66,9 +66,16 @@
 #include <QIODevice>
 #include <QList>
 #include <QPointer>
+#include <QScopedPointer>
 #include <QByteArray>
 #include <QMutex>
 #include <QWaitCondition>
+#include <QPair>
+#include <QHash>
+
+QT_BEGIN_NAMESPACE
+class QBuffer;
+QT_END_NAMESPACE
 
 QTM_BEGIN_NAMESPACE
 
@@ -126,10 +133,11 @@
 public: // Constructors and destructor
     QVersitReaderPrivate();
     ~QVersitReaderPrivate();
+    void init(QVersitReader* reader);
 
 signals:
     void stateChanged(QVersitReader::State state);
-    void resultsAvailable(QList<QVersitDocument>& results);
+    void resultsAvailable();
 
 protected: // From QThread
      void run();
@@ -167,7 +175,7 @@
         QVersitDocument& document,
         const QVersitProperty& property) const;
 
-    void unencode(
+    bool unencode(
         QVariant& value,
         VersitCursor& cursor,
         QVersitProperty& property,
@@ -182,6 +190,7 @@
 
     void decodeQuotedPrintable(QString& text) const;
 
+
     /* These functions operate on a cursor describing a single line */
     QPair<QStringList,QString> extractPropertyGroupsAndName(VersitCursor& line, QTextCodec* codec)
             const;
@@ -199,9 +208,21 @@
     QString paramName(const QByteArray& parameter, QTextCodec* codec) const;
     QString paramValue(const QByteArray& parameter, QTextCodec* codec) const;
     static bool containsAt(const QByteArray& text, const QByteArray& ba, int index);
+    bool splitStructuredValue(QVersitDocument::VersitType type,
+                              QVersitProperty& property,
+                              bool hasEscapedBackslashes) const;
+    static QStringList splitValue(const QString& string,
+                                  const QChar& sep,
+                                  QString::SplitBehavior behaviour,
+                                  bool hasEscapedBackslashes);
+    static void removeBackSlashEscaping(QString& text);
 
 public: // Data
+    /* key is the document type and property name, value is the type of property it is.
+       If there is no entry, assume it is a PlainType */
+    QHash<QPair<QVersitDocument::VersitType,QString>, QVersitProperty::ValueType> mValueTypeMap;
     QPointer<QIODevice> mIoDevice;
+    QScopedPointer<QBuffer> mInputBytes; // Holds the data set by setData()
     QList<QVersitDocument> mVersitDocuments;
     int mDocumentNestingLevel; // Depth in parsing nested Versit documents
     QTextCodec* mDefaultCodec;