File indexing completed on 2024-05-12 16:25:39
0001 /* 0002 SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "downloadappslanguagesparser.h" 0008 #include "ruqola_debug.h" 0009 0010 #include <QFileInfo> 0011 #include <QJsonArray> 0012 #include <QJsonDocument> 0013 #include <QJsonObject> 0014 0015 DownloadAppsLanguagesParser::DownloadAppsLanguagesParser() = default; 0016 0017 void DownloadAppsLanguagesParser::setFilename(const QString &filename) 0018 { 0019 mFileName = filename; 0020 } 0021 0022 bool DownloadAppsLanguagesParser::parse() 0023 { 0024 if (mFileName.isEmpty()) { 0025 qCWarning(RUQOLA_LOG) << "Filename is empty. Parsing impossible"; 0026 return false; 0027 } 0028 if (!QFileInfo::exists(mFileName)) { 0029 qCWarning(RUQOLA_LOG) << "Filename doesn't exist: " << mFileName; 0030 return false; 0031 } 0032 QFile file(mFileName); 0033 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { 0034 qCWarning(RUQOLA_LOG) << "Impossible to read: " << mFileName; 0035 return false; 0036 } 0037 const QByteArray content = file.readAll(); 0038 file.close(); 0039 const QJsonDocument doc = QJsonDocument::fromJson(content); 0040 const QJsonObject obj = doc.object(); 0041 const QJsonArray array = obj.value(QLatin1String("apps")).toArray(); 0042 for (int i = 0, total = array.size(); i < total; ++i) { 0043 DownloadAppsLanguagesInfo info; 0044 const QJsonObject languageJsonObject = array.at(i).toObject(); 0045 const QString id = languageJsonObject[QLatin1String("id")].toString(); 0046 if (info.parse(languageJsonObject, id)) { 0047 mMap.insert(id, info); 0048 } 0049 } 0050 return true; 0051 } 0052 0053 QMap<QString, DownloadAppsLanguagesInfo> DownloadAppsLanguagesParser::map() const 0054 { 0055 return mMap; 0056 }