#ifndef REPLAYDATA_H #define REPLAYDATA_H #include #include #include #include #include class ReplayData : public QObject { Q_OBJECT public: explicit ReplayData(QObject *parent = 0); bool open(const QString &path); void close(); struct Session { QDateTime start, end; QString name; QVector pages; QString file; }; QList sessions(quint64 penId, quint64 notebookId); QList sessions(quint64 penId, quint64 notebookId, quint64 pageAddress); private: struct NotebookData { QHash sessions; QMultiMap byPage; }; private: bool findSessions(); static bool parseSessionInfo(Session &session, const QString &path); static bool parseSessionInfo(Session &session, QIODevice *dev); static bool parseSessionInfoV3(Session &session, QIODevice *dev); static bool parseSessionPages(Session &session, const QString &path); static bool parseSessionPages(Session &session, QIODevice *dev); static bool parseSessionPagesV1(Session &session, QIODevice *dev); private: QDir _dir; QHash > _notebooks; // TODO Cache on demand // /userdata/XXX-XXX-XXX-XX/Paper Replay/99/0bf11a726d11f3f3/sessions/PRS-21977890a4 }; #endif // REPLAYDATA_H