diff --git a/src/libs/registry/docset.cpp b/src/libs/registry/docset.cpp index 932fe27..0c0dbb7 100644 --- a/src/libs/registry/docset.cpp +++ b/src/libs/registry/docset.cpp @@ -235,7 +235,7 @@ QString Docset::version() const return m_version; } -QString Docset::revision() const +int Docset::revision() const { return m_revision; } @@ -401,7 +401,7 @@ void Docset::loadMetadata() m_name = jsonObject[QStringLiteral("name")].toString(); m_title = jsonObject[QStringLiteral("title")].toString(); m_version = jsonObject[QStringLiteral("version")].toString(); - m_revision = jsonObject[QStringLiteral("revision")].toString(); + m_revision = jsonObject[QStringLiteral("revision")].toString().toInt(); if (jsonObject.contains(QStringLiteral("feed_url"))) { m_feedUrl = jsonObject[QStringLiteral("feed_url")].toString(); diff --git a/src/libs/registry/docset.h b/src/libs/registry/docset.h index 0a5037d..7ff699d 100644 --- a/src/libs/registry/docset.h +++ b/src/libs/registry/docset.h @@ -55,7 +55,7 @@ public: QStringList keywords() const; QString version() const; - QString revision() const; + int revision() const; QString feedUrl() const; QString path() const; @@ -107,7 +107,7 @@ private: QString m_title; QStringList m_keywords; QString m_version; - QString m_revision; + int m_revision; QString m_feedUrl; Docset::Type m_type = Type::Invalid; QString m_path; diff --git a/src/libs/registry/docsetmetadata.cpp b/src/libs/registry/docsetmetadata.cpp index a27742c..f08d891 100644 --- a/src/libs/registry/docsetmetadata.cpp +++ b/src/libs/registry/docsetmetadata.cpp @@ -59,7 +59,9 @@ DocsetMetadata::DocsetMetadata(const QJsonObject &jsonObject) m_versions << vv.toString(); } - m_revision = jsonObject[QStringLiteral("revision")].toString(); + // Unfortunately, API returns revision as a string, so it needs to be converted to integer + // for comparison to work properly. + m_revision = jsonObject[QStringLiteral("revision")].toString().toInt(); m_feedUrl = QUrl(jsonObject[QStringLiteral("feed_url")].toString()); @@ -87,7 +89,7 @@ void DocsetMetadata::save(const QString &path, const QString &version) if (!version.isEmpty()) jsonObject[QStringLiteral("version")] = version; - if (version == latestVersion() && !m_revision.isEmpty()) + if (version == latestVersion() && m_revision == 0) jsonObject[QStringLiteral("revision")] = m_revision; if (!m_feedUrl.isEmpty()) @@ -155,7 +157,7 @@ QString DocsetMetadata::latestVersion() const return m_versions.isEmpty() ? QString() : m_versions.first(); } -QString DocsetMetadata::revision() const +int DocsetMetadata::revision() const { return m_revision; } diff --git a/src/libs/registry/docsetmetadata.h b/src/libs/registry/docsetmetadata.h index 024ae5c..b9af9dc 100644 --- a/src/libs/registry/docsetmetadata.h +++ b/src/libs/registry/docsetmetadata.h @@ -45,7 +45,7 @@ public: QStringList aliases() const; QStringList versions() const; QString latestVersion() const; - QString revision() const; + int revision() const; QIcon icon() const; QUrl feedUrl() const; @@ -59,7 +59,7 @@ private: QString m_title; QStringList m_aliases; QStringList m_versions; - QString m_revision; + int m_revision; QByteArray m_rawIcon; QByteArray m_rawIcon2x; diff --git a/src/libs/registry/listmodel.cpp b/src/libs/registry/listmodel.cpp index d24a8d1..71fc732 100644 --- a/src/libs/registry/listmodel.cpp +++ b/src/libs/registry/listmodel.cpp @@ -92,7 +92,7 @@ QVariant ListModel::data(const QModelIndex &index, int role) const switch (indexLevel(index)) { case Level::DocsetLevel: { const auto docset = itemInRow(index.row())->docset; - return tr("Version: %1r%2").arg(docset->version(), docset->revision()); + return tr("Version: %1r%2").arg(docset->version()).arg(docset->revision()); } default: return QVariant();