#ifndef PAPERREPLAY_H #define PAPERREPLAY_H #include #include #include #include #include #define PAPER_REPLAY "Paper Replay" class PaperReplay : public QObject { Q_OBJECT struct SessionData : public QSharedData { QString name; QDateTime start, end; QVector pages; QString file; }; public: explicit PaperReplay(QObject *parent = 0); class Session { public: Session(); ~Session(); QString name() const; QDateTime startTime() const; QDateTime endTime() const; QVector pages() const; QString fileName() const; private: QSharedDataPointer d; friend class PaperReplay; }; bool open(const QString &path, const QString &penSerial, quint64 notebookGuid); void close(); QList sessions() const; QList sessions(quint64 pageAddress) const; private: static bool parseSessionInfo(SessionData *session, const QString &path); static bool parseSessionInfo(SessionData *session, QIODevice *dev); static bool parseSessionInfoV3(SessionData *session, QIODevice *dev); static bool parseSessionPages(SessionData *session, const QString &path); static bool parseSessionPages(SessionData *session, QIODevice *dev); static bool parseSessionPagesV1(SessionData *session, QIODevice *dev); private: QDir _dir; QHash _sessions; QMultiMap _byPage; }; #endif // PAPERREPLAY_H