parseBookmarkKey restituisce QVariantMap (i puntatori int* non sono marshallabili da QML — il segno non si ripristinava mai)
This commit is contained in:
@@ -259,10 +259,15 @@ Page {
|
||||
var key = appSettings.bookmarkKey(page.bookId, page.bookFormat)
|
||||
var ch = 0
|
||||
var fr = 0.0
|
||||
if (key.length > 0 && book.parseBookmarkKey(key, ch, fr)) {
|
||||
page.currentChapter = Math.max(0, Math.min(ch, book.chapterCount - 1))
|
||||
page.chapterFraction = fr
|
||||
if (key.length > 0) {
|
||||
var r = book.parseBookmarkKey(key)
|
||||
if (r && r.hasOwnProperty("chapter")) {
|
||||
ch = Math.max(0, Math.min(r.chapter, book.chapterCount - 1))
|
||||
fr = r.fraction
|
||||
}
|
||||
}
|
||||
page.currentChapter = ch
|
||||
page.chapterFraction = fr
|
||||
loadChapter()
|
||||
}
|
||||
|
||||
|
||||
+7
-8
@@ -443,20 +443,19 @@ QString EpubBook::makeBookmarkKey(int chapterIndex, double fraction) const
|
||||
return QStringLiteral("cw:v1:%1:%2").arg(chapterIndex).arg(fraction, 0, 'f', 4);
|
||||
}
|
||||
|
||||
bool EpubBook::parseBookmarkKey(const QString &key, int *chapterIndex, double *fraction) const
|
||||
QVariantMap EpubBook::parseBookmarkKey(const QString &key) const
|
||||
{
|
||||
QVariantMap result;
|
||||
const QStringList parts = key.split(QLatin1Char(':'));
|
||||
if (parts.size() != 4 || parts.at(0) != QLatin1String("cw")
|
||||
|| parts.at(1) != QLatin1String("v1"))
|
||||
return false;
|
||||
return result;
|
||||
bool okChapter = false, okFrac = false;
|
||||
const int ch = parts.at(2).toInt(&okChapter);
|
||||
const double fr = parts.at(3).toDouble(&okFrac);
|
||||
if (!okChapter || !okFrac)
|
||||
return false;
|
||||
if (chapterIndex)
|
||||
*chapterIndex = ch;
|
||||
if (fraction)
|
||||
*fraction = fr;
|
||||
return true;
|
||||
return result;
|
||||
result.insert(QStringLiteral("chapter"), ch);
|
||||
result.insert(QStringLiteral("fraction"), fr);
|
||||
return result;
|
||||
}
|
||||
|
||||
+2
-1
@@ -43,7 +43,8 @@ public:
|
||||
|
||||
// chiave segno locale, es. "cw:v1:3:0.42" (capitolo 3, 42% del capitolo)
|
||||
Q_INVOKABLE QString makeBookmarkKey(int chapterIndex, double fraction) const;
|
||||
Q_INVOKABLE bool parseBookmarkKey(const QString &key, int *chapterIndex, double *fraction) const;
|
||||
// restituisce {chapter, fraction} oppure mappa vuota se la chiave non è valida
|
||||
Q_INVOKABLE QVariantMap parseBookmarkKey(const QString &key) const;
|
||||
|
||||
signals:
|
||||
void changed();
|
||||
|
||||
Reference in New Issue
Block a user