From 46cb4b079be113996214660020d6ef0c3d1f1e80 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 14 Jun 2015 03:32:35 +0200 Subject: paperless replay also working --- paperreplay.cc | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'paperreplay.cc') diff --git a/paperreplay.cc b/paperreplay.cc index e0e654e..5baeac7 100644 --- a/paperreplay.cc +++ b/paperreplay.cc @@ -17,6 +17,17 @@ bool readUtfString(QDataStream &stream, QString &s) s = QString::fromUtf8(buffer); return true; } + +QString findPenSerial(const QString &path) +{ + QDir dir(path + "/userdata"); + QStringList entries = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); + if (entries.isEmpty()) { + return QString(); + } else { + return entries.first(); + } +} } PaperReplay::PaperReplay(QObject *parent) : @@ -47,6 +58,11 @@ quint64 PaperReplay::Session::id() const return d ? d->id : 0; } +QString PaperReplay::Session::name() const +{ + return d->name; +} + QString PaperReplay::Session::fileName() const { return d->file; @@ -62,6 +78,11 @@ qint64 PaperReplay::Session::endTime() const return d->end; } +bool PaperReplay::Session::startTimeLess(const Session &a, const Session &b) +{ + return a.d->start < b.d->start; +} + PaperReplay::SessionList::SessionList() { } @@ -90,8 +111,14 @@ QList PaperReplay::SessionList::sessionsDuringTime(qint64 return sessions; } -bool PaperReplay::open(const QString &path, const QString &penSerial, quint64 notebookGuid) +bool PaperReplay::open(const QString &path, quint64 notebookGuid) { + QString penSerial = findPenSerial(path); + if (penSerial.isEmpty()) { + qDebug() << "Cannot open paper replay:" << path << "does not contain any pen data"; + return false; + } + _dir.setPath(path + QString("/userdata/%1/Paper Replay/99/%2/sessions") .arg(penSerial) .arg(qulonglong(notebookGuid), notebookGuid == 0 ? 1 : 16, 16, QLatin1Char('0'))); @@ -123,6 +150,8 @@ bool PaperReplay::open(const QString &path, const QString &penSerial, quint64 no session.d->file = sessionDir.filePath(session.d->file); } + _sessions.insert(sessionId, session); + foreach (quint64 page, session.d->pages) { _byPageTime[page].insert(session.d->start, session); } @@ -133,9 +162,15 @@ bool PaperReplay::open(const QString &path, const QString &penSerial, quint64 no void PaperReplay::close() { _byPageTime.clear(); + _sessions.clear(); _dir.setPath(QString()); } +QList PaperReplay::sessions() const +{ + return _sessions.values(); +} + PaperReplay::SessionList PaperReplay::sessions(quint64 pageAddress) const { return SessionList(_byPageTime[pageAddress]); -- cgit v1.2.3