File indexing completed on 2024-05-12 05:22:30
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Daniel Vrátil <dvratil@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only 0005 * SPDX-License-Identifier: LGPL-3.0-only 0006 * SPDX-License-Identifier: LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #include "residence.h" 0010 0011 #include "fieldmetadata.h" 0012 #include "peopleservice.h" 0013 0014 #include <QJsonArray> 0015 #include <QJsonObject> 0016 #include <QJsonValue> 0017 #include <QSharedData> 0018 0019 #include <algorithm> 0020 0021 namespace KGAPI2::People 0022 { 0023 class Residence::Private : public QSharedData 0024 { 0025 public: 0026 explicit Private() = default; 0027 Private(const Private &) = default; 0028 Private(Private &&) noexcept = delete; 0029 Private &operator=(const Private &) = delete; 0030 Private &operator=(Private &&) noexcept = delete; 0031 ~Private() = default; 0032 0033 bool operator==(const Private &other) const 0034 { 0035 return value == other.value && metadata == other.metadata && current == other.current; 0036 } 0037 0038 bool operator!=(const Private &other) const 0039 { 0040 return !(*this == other); 0041 } 0042 0043 QString value{}; 0044 FieldMetadata metadata{}; 0045 bool current{}; 0046 }; 0047 0048 Residence::Residence() 0049 : d(new Private) 0050 { 0051 } 0052 0053 Residence::Residence(const Residence &) = default; 0054 Residence::Residence(Residence &&) noexcept = default; 0055 Residence &Residence::operator=(const Residence &) = default; 0056 Residence &Residence::operator=(Residence &&) noexcept = default; 0057 Residence::~Residence() = default; 0058 0059 bool Residence::operator==(const Residence &other) const 0060 { 0061 return *d == *other.d; 0062 } 0063 0064 bool Residence::operator!=(const Residence &other) const 0065 { 0066 return !(*this == other); 0067 } 0068 0069 QString Residence::value() const 0070 { 0071 return d->value; 0072 } 0073 0074 void Residence::setValue(const QString &value) 0075 { 0076 d->value = value; 0077 } 0078 FieldMetadata Residence::metadata() const 0079 { 0080 return d->metadata; 0081 } 0082 0083 void Residence::setMetadata(const FieldMetadata &value) 0084 { 0085 d->metadata = value; 0086 } 0087 bool Residence::current() const 0088 { 0089 return d->current; 0090 } 0091 0092 void Residence::setCurrent(bool value) 0093 { 0094 d->current = value; 0095 } 0096 0097 Residence Residence::fromJSON(const QJsonObject &obj) 0098 { 0099 Q_UNUSED(obj); 0100 return Residence(); 0101 } 0102 0103 QJsonValue Residence::toJSON() const 0104 { 0105 QJsonObject obj; 0106 0107 PeopleUtils::addValueToJsonObjectIfValid(obj, "value", d->value); 0108 // Skip, field metadata is only useful for receiving -> PeopleUtils::addValueToJsonObjectIfValid(obj, "metadata", d->metadata.toJSON()); 0109 PeopleUtils::addValueToJsonObjectIfValid(obj, "current", d->current); 0110 return obj; 0111 } 0112 0113 } // namespace KGAPI2::People