Wait longer, before restoring previous reading position, after
[dorian] / model / book.cpp
index d209816..7516665 100644 (file)
@@ -53,6 +53,7 @@ bool Book::open()
     if (!parse()) {
         return false;
     }
+    dateOpened = QDateTime::currentDateTime().toUTC();
     save();
     emit opened(path());
     return true;
@@ -190,8 +191,8 @@ bool Book::parse()
         cover = makeCover(coverPath);
     }
 
-    // If there is an "ncx" item in content, parse it: That's the real table of
-    // contents
+    // If there is an "ncx" item in content, parse it: That's the real table
+    // of contents
     QString ncxFileName;
     if (content.contains("ncx")) {
         ncxFileName = content["ncx"].href;
@@ -303,6 +304,8 @@ void Book::load()
         QString note = data[QString("bookmark%1note").arg(i)].toString();
         mBookmarks.append(Bookmark(part, pos, note));
     }
+    dateAdded = data["dateadded"].toDateTime();
+    dateOpened = data["dateopened"].toDateTime();
 }
 
 void Book::save()
@@ -328,16 +331,23 @@ void Book::save()
         data[QString("bookmark%1pos").arg(i)] = mBookmarks[i].pos;
         data[QString("bookmark%1note").arg(i)] = mBookmarks[i].note;
     }
+    data["dateadded"] = dateAdded;
+    data["dateopened"] = dateOpened;
     BookDb::instance()->save(path(), data);
 }
 
-void Book::setLastBookmark(int part, qreal position)
+void Book::setLastBookmark(int part, qreal position, bool fast)
 {
     TRACE;
-    load();
+    qDebug() << "Part" << part << "position" << position << "fast?" << fast;
+    if (!fast) {
+        load();
+    }
     mLastBookmark.part = part;
     mLastBookmark.pos = position;
-    save();
+    if (!fast) {
+        save();
+    }
 }
 
 Book::Bookmark Book::lastBookmark()
@@ -354,6 +364,16 @@ void Book::addBookmark(int part, qreal position, const QString &note)
     save();
 }
 
+void Book::setBookmarkNote(int index, const QString &note)
+{
+    load();
+    if (index >= 0 && index < mBookmarks.length()) {
+        mBookmarks[index].note = note;
+    }
+    save();
+
+}
+
 void Book::deleteBookmark(int index)
 {
     load();