File indexing completed on 2024-05-12 04:42:42
0001 /* 0002 SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "attribution.h" 0008 #include "datatypes_p.h" 0009 #include "json_p.h" 0010 0011 #include <QString> 0012 #include <QUrl> 0013 0014 using namespace KPublicTransport; 0015 0016 namespace KPublicTransport { 0017 0018 class AttributionPrivate : public QSharedData { 0019 public: 0020 QString name; 0021 QUrl url; 0022 QString license; 0023 QUrl licenseUrl; 0024 }; 0025 } 0026 0027 KPUBLICTRANSPORT_MAKE_GADGET(Attribution) 0028 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QString, name, setName) 0029 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QUrl, url, setUrl) 0030 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QString, license, setLicense) 0031 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QUrl, licenseUrl, setLicenseUrl) 0032 0033 bool Attribution::isEmpty() const 0034 { 0035 return d->name.isEmpty() && d->license.isEmpty(); 0036 } 0037 0038 bool Attribution::hasLicense() const 0039 { 0040 return !d->license.isEmpty() || !d->licenseUrl.isEmpty(); 0041 } 0042 0043 std::vector<Attribution> Attribution::fromJson(const QJsonArray &a) 0044 { 0045 return Json::fromJson<Attribution>(a); 0046 } 0047 0048 Attribution Attribution::fromJson(const QJsonObject &obj) 0049 { 0050 // read compatibility with github.com/public-transport/transport-apis 0051 if (obj.value(QLatin1String("isProprietary")).toBool() == true) { 0052 return {}; 0053 } 0054 0055 auto attr = Json::fromJson<Attribution>(obj); 0056 if (attr.url().isEmpty()) { 0057 attr.setUrl(QUrl(obj.value(QLatin1String("homepage")).toString())); 0058 } 0059 0060 return attr; 0061 } 0062 0063 QJsonArray Attribution::toJson(const std::vector<Attribution> &attrs) 0064 { 0065 return Json::toJson(attrs); 0066 } 0067 0068 QJsonObject Attribution::toJson(const Attribution &attr) 0069 { 0070 return Json::toJson(attr); 0071 } 0072 0073 #include "moc_attribution.cpp"