qtmobility/src/versit/qversitreader_p.h
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 8 71781823f776
equal deleted inserted replaced
1:2b40d63a9c3d 4:90517678cc4f
    64 #include <QThread>
    64 #include <QThread>
    65 #include <QByteArray>
    65 #include <QByteArray>
    66 #include <QIODevice>
    66 #include <QIODevice>
    67 #include <QList>
    67 #include <QList>
    68 #include <QPointer>
    68 #include <QPointer>
       
    69 #include <QScopedPointer>
    69 #include <QByteArray>
    70 #include <QByteArray>
    70 #include <QMutex>
    71 #include <QMutex>
    71 #include <QWaitCondition>
    72 #include <QWaitCondition>
       
    73 #include <QPair>
       
    74 #include <QHash>
       
    75 
       
    76 QT_BEGIN_NAMESPACE
       
    77 class QBuffer;
       
    78 QT_END_NAMESPACE
    72 
    79 
    73 QTM_BEGIN_NAMESPACE
    80 QTM_BEGIN_NAMESPACE
    74 
    81 
    75 // The maximum number of bytes allowed to stay in memory after being read.  The smaller this is,
    82 // The maximum number of bytes allowed to stay in memory after being read.  The smaller this is,
    76 // the more time spent moving bytes around.  The larger it is, the more memory is wasted.
    83 // the more time spent moving bytes around.  The larger it is, the more memory is wasted.
   124     Q_OBJECT
   131     Q_OBJECT
   125 
   132 
   126 public: // Constructors and destructor
   133 public: // Constructors and destructor
   127     QVersitReaderPrivate();
   134     QVersitReaderPrivate();
   128     ~QVersitReaderPrivate();
   135     ~QVersitReaderPrivate();
       
   136     void init(QVersitReader* reader);
   129 
   137 
   130 signals:
   138 signals:
   131     void stateChanged(QVersitReader::State state);
   139     void stateChanged(QVersitReader::State state);
   132     void resultsAvailable(QList<QVersitDocument>& results);
   140     void resultsAvailable();
   133 
   141 
   134 protected: // From QThread
   142 protected: // From QThread
   135      void run();
   143      void run();
   136 
   144 
   137 public: // New functions
   145 public: // New functions
   165 
   173 
   166     bool setVersionFromProperty(
   174     bool setVersionFromProperty(
   167         QVersitDocument& document,
   175         QVersitDocument& document,
   168         const QVersitProperty& property) const;
   176         const QVersitProperty& property) const;
   169 
   177 
   170     void unencode(
   178     bool unencode(
   171         QVariant& value,
   179         QVariant& value,
   172         VersitCursor& cursor,
   180         VersitCursor& cursor,
   173         QVersitProperty& property,
   181         QVersitProperty& property,
   174         QTextCodec* codec,
   182         QTextCodec* codec,
   175         LineReader& lineReader) const;
   183         LineReader& lineReader) const;
   179         QVersitProperty& property,
   187         QVersitProperty& property,
   180         QTextCodec* defaultCodec,
   188         QTextCodec* defaultCodec,
   181         QTextCodec** codec) const;
   189         QTextCodec** codec) const;
   182 
   190 
   183     void decodeQuotedPrintable(QString& text) const;
   191     void decodeQuotedPrintable(QString& text) const;
       
   192 
   184 
   193 
   185     /* These functions operate on a cursor describing a single line */
   194     /* These functions operate on a cursor describing a single line */
   186     QPair<QStringList,QString> extractPropertyGroupsAndName(VersitCursor& line, QTextCodec* codec)
   195     QPair<QStringList,QString> extractPropertyGroupsAndName(VersitCursor& line, QTextCodec* codec)
   187             const;
   196             const;
   188     QByteArray extractPropertyValue(VersitCursor& line) const;
   197     QByteArray extractPropertyValue(VersitCursor& line) const;
   197                                    QTextCodec *codec) const;
   206                                    QTextCodec *codec) const;
   198     QByteArray extractPart(const QByteArray& text, int startPosition, int length=-1) const;
   207     QByteArray extractPart(const QByteArray& text, int startPosition, int length=-1) const;
   199     QString paramName(const QByteArray& parameter, QTextCodec* codec) const;
   208     QString paramName(const QByteArray& parameter, QTextCodec* codec) const;
   200     QString paramValue(const QByteArray& parameter, QTextCodec* codec) const;
   209     QString paramValue(const QByteArray& parameter, QTextCodec* codec) const;
   201     static bool containsAt(const QByteArray& text, const QByteArray& ba, int index);
   210     static bool containsAt(const QByteArray& text, const QByteArray& ba, int index);
       
   211     bool splitStructuredValue(QVersitDocument::VersitType type,
       
   212                               QVersitProperty& property,
       
   213                               bool hasEscapedBackslashes) const;
       
   214     static QStringList splitValue(const QString& string,
       
   215                                   const QChar& sep,
       
   216                                   QString::SplitBehavior behaviour,
       
   217                                   bool hasEscapedBackslashes);
       
   218     static void removeBackSlashEscaping(QString& text);
   202 
   219 
   203 public: // Data
   220 public: // Data
       
   221     /* key is the document type and property name, value is the type of property it is.
       
   222        If there is no entry, assume it is a PlainType */
       
   223     QHash<QPair<QVersitDocument::VersitType,QString>, QVersitProperty::ValueType> mValueTypeMap;
   204     QPointer<QIODevice> mIoDevice;
   224     QPointer<QIODevice> mIoDevice;
       
   225     QScopedPointer<QBuffer> mInputBytes; // Holds the data set by setData()
   205     QList<QVersitDocument> mVersitDocuments;
   226     QList<QVersitDocument> mVersitDocuments;
   206     int mDocumentNestingLevel; // Depth in parsing nested Versit documents
   227     int mDocumentNestingLevel; // Depth in parsing nested Versit documents
   207     QTextCodec* mDefaultCodec;
   228     QTextCodec* mDefaultCodec;
   208     QVersitReader::State mState;
   229     QVersitReader::State mState;
   209     QVersitReader::Error mError;
   230     QVersitReader::Error mError;