From 4af4923faa8c24a7f507075d26fa6256f04f502a Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Tue, 20 Feb 2024 16:52:37 +0400 Subject: [PATCH] Got rid of faviconUrl in ContentManager::BookInfo Merged "faviconUrl" entry of `ContentManager::BookInfo` into "favicon". Now the latter represents either the illustration data (and then it is of QByteArray type) or the url (in which case it is a QString). --- src/contentmanager.cpp | 11 ++++++++--- src/contentmanagermodel.cpp | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index 2e92e2b..42cfbb4 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -140,7 +140,7 @@ void ContentManager::updateModel() { const auto bookIds = getBookIds(); BookInfoList bookList; - QStringList keys = {"title", "tags", "date", "id", "size", "description", "faviconUrl", "favicon"}; + QStringList keys = {"title", "tags", "date", "id", "size", "description", "favicon"}; QIcon bookIcon; for (auto bookId : bookIds) { auto mp = getBookInfos(bookId, keys); @@ -316,6 +316,12 @@ QByteArray getFaviconData(const kiwix::Book& b) return qdata; } +QVariant getFaviconDataOrUrl(const kiwix::Book& b) +{ + const QByteArray data = getFaviconData(b); + return !data.isNull() ? QVariant(data) : QVariant(getFaviconUrl(b)); +} + QVariant getBookAttribute(const kiwix::Book& b, const QString& a) { if ( a == "id" ) return QString::fromStdString(b.getId()); @@ -326,8 +332,7 @@ QVariant getBookAttribute(const kiwix::Book& b, const QString& a) if ( a == "url" ) return QString::fromStdString(b.getUrl()); if ( a == "name" ) return QString::fromStdString(b.getName()); if ( a == "downloadId" ) return QString::fromStdString(b.getDownloadId()); - if ( a == "favicon") return getFaviconData(b); - if ( a == "faviconUrl") return getFaviconUrl(b); + if ( a == "favicon") return getFaviconDataOrUrl(b); if ( a == "size" ) return QString::number(b.getSize()); if ( a == "tags" ) return getBookTags(b); diff --git a/src/contentmanagermodel.cpp b/src/contentmanagermodel.cpp index 5ce44c3..495d70f 100644 --- a/src/contentmanagermodel.cpp +++ b/src/contentmanagermodel.cpp @@ -113,14 +113,14 @@ void ContentManagerModel::setBooksData(const BookInfoList& data) QByteArray ContentManagerModel::getThumbnail(const BookInfo& bookItem) const { - QByteArray bookIcon = bookItem["favicon"].toByteArray(); - if ( bookIcon.isNull() ) { - const auto faviconUrl = bookItem["faviconUrl"].toString(); - if (m_iconMap.contains(faviconUrl)) { - bookIcon = m_iconMap[faviconUrl]; - } - } - return bookIcon; + const QVariant faviconEntry = bookItem["favicon"]; + if ( faviconEntry.type() == QVariant::ByteArray ) + return faviconEntry.toByteArray(); + + const auto faviconUrl = faviconEntry.toString(); + return m_iconMap.contains(faviconUrl) + ? m_iconMap[faviconUrl] + : QByteArray(); } std::shared_ptr ContentManagerModel::createNode(BookInfo bookItem) const @@ -167,8 +167,8 @@ void ContentManagerModel::refreshIcons() td.clearQueue(); for (auto i = 0; i < rowCount() && i < m_data.size(); i++) { const auto& bookItem = m_data[i]; - if ( bookItem["favicon"].toByteArray().isNull() ) { - const auto faviconUrl = bookItem["faviconUrl"].toString(); + if ( bookItem["favicon"].type() == QVariant::String ) { + const auto faviconUrl = bookItem["favicon"].toString(); if (faviconUrl != "" && !m_iconMap.contains(faviconUrl)) { td.addDownload(faviconUrl, bookItem["id"].toString()); }