parseBookmarkKey restituisce QVariantMap (i puntatori int* non sono marshallabili da QML — il segno non si ripristinava mai)

This commit is contained in:
2026-08-12 17:26:15 +02:00
parent cbe4153881
commit d230d543dd
3 changed files with 17 additions and 12 deletions
+7 -8
View File
@@ -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
View File
@@ -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();