+ TRACE;
+ load();
+ fragment.clear();
+ QString id = chapters[index];
+ QString href = content[id].href;
+ int hashPos = href.indexOf("#");
+ if (hashPos != -1) {
+ fragment = href.mid(hashPos);
+ href = href.left(hashPos);
+ }
+
+ qDebug() << "Chapter" << index;
+ qDebug() << " id" << id;
+ qDebug() << " href" << href;
+ qDebug() << " fragment" << fragment;
+
+ for (int i = 0; i < parts.size(); i++) {
+ QString partId = parts[i];
+ if (content[partId].href == href) {
+ qDebug() << "Part index for" << href << "is" << i;
+ return i;
+ }
+ }
+
+ qWarning() << "Book::partFromChapter: Could not find part index for"
+ << href;
+ return -1;
+}
+
+qreal Book::getProgress(int part, qreal position)
+{
+ load();
+ Q_ASSERT(part < parts.size());
+ QString key;
+ qreal partSize = 0;
+ for (int i = 0; i < part; i++) {
+ key = parts[i];
+ partSize += content[key].size;
+ }
+ key = parts[part];
+ partSize += content[key].size * position;
+ return partSize / (qreal)size;
+}
+
+bool Book::extractMetaData()
+{
+ QStringList excludedExtensions;
+ excludedExtensions << ".html" << ".xhtml" << ".xht" << ".htm" << ".gif"
+ << ".css" << "*.ttf" << "mimetype";
+ return extract(excludedExtensions);
+}
+
+void Book::upgrade()
+{
+ TRACE;
+
+ // Load book from old database (QSettings)
+ QSettings settings;
+ QString key = "book/" + path() + "/";
+ title = settings.value(key + "title").toString();
+ qDebug() << title;
+ creators = settings.value(key + "creators").toStringList();
+ date = settings.value(key + "date").toString();
+ publisher = settings.value(key + "publisher").toString();
+ datePublished = settings.value(key + "datepublished").toString();
+ subject = settings.value(key + "subject").toString();
+ source = settings.value(key + "source").toString();
+ rights = settings.value(key + "rights").toString();
+ mLastBookmark.part = settings.value(key + "lastpart").toInt();
+ mLastBookmark.pos = settings.value(key + "lastpos").toReal();
+ cover = settings.value(key + "cover").value<QImage>();
+ if (cover.isNull()) {
+ cover = makeCover(":/icons/book.png");