File indexing completed on 2024-05-12 05:22:26
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Daniel Vrátil <dvratil@kde.org> 0003 * SPDX-FileCopyrightText: 2022 Claudio Cambra <claudio.cambra@kde.org> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.1-only 0006 * SPDX-License-Identifier: LGPL-3.0-only 0007 * SPDX-License-Identifier: LicenseRef-KDE-Accepted-LGPL 0008 */ 0009 0010 #include "contactgroupmetadata.h" 0011 #include "peopleservice.h" 0012 0013 #include <QJsonArray> 0014 #include <QJsonObject> 0015 #include <QJsonValue> 0016 #include <QSharedData> 0017 #include <QDateTime> 0018 0019 #include <algorithm> 0020 0021 namespace KGAPI2::People 0022 { 0023 class ContactGroupMetadata::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 updateTime == other.updateTime && deleted == other.deleted; 0036 } 0037 0038 bool operator!=(const Private &other) const 0039 { 0040 return !(*this == other); 0041 } 0042 0043 QDateTime updateTime{}; 0044 bool deleted{}; 0045 }; 0046 0047 ContactGroupMetadata::ContactGroupMetadata() 0048 : d(new Private) 0049 { 0050 } 0051 0052 ContactGroupMetadata::ContactGroupMetadata(const ContactGroupMetadata &) = default; 0053 ContactGroupMetadata::ContactGroupMetadata(ContactGroupMetadata &&) noexcept = default; 0054 ContactGroupMetadata &ContactGroupMetadata::operator=(const ContactGroupMetadata &) = default; 0055 ContactGroupMetadata &ContactGroupMetadata::operator=(ContactGroupMetadata &&) noexcept = default; 0056 ContactGroupMetadata::~ContactGroupMetadata() = default; 0057 0058 bool ContactGroupMetadata::operator==(const ContactGroupMetadata &other) const 0059 { 0060 return *d == *other.d; 0061 } 0062 0063 bool ContactGroupMetadata::operator!=(const ContactGroupMetadata &other) const 0064 { 0065 return !(*this == other); 0066 } 0067 0068 QDateTime ContactGroupMetadata::updateTime() const 0069 { 0070 return d->updateTime; 0071 } 0072 bool ContactGroupMetadata::deleted() const 0073 { 0074 return d->deleted; 0075 } 0076 0077 ContactGroupMetadata ContactGroupMetadata::fromJSON(const QJsonObject &obj) 0078 { 0079 ContactGroupMetadata contactGroupMetadata; 0080 0081 if (!obj.isEmpty()) { 0082 contactGroupMetadata.d->updateTime = obj.value(QStringLiteral("updateTime")).toVariant().toDateTime(); 0083 contactGroupMetadata.d->deleted = obj.value(QStringLiteral("deleted")).toBool(); 0084 } 0085 0086 return contactGroupMetadata; 0087 } 0088 0089 QJsonValue ContactGroupMetadata::toJSON() const 0090 { 0091 QJsonObject obj; 0092 0093 PeopleUtils::addValueToJsonObjectIfValid(obj, "updateTime", d->updateTime.toString(Qt::ISODate)); 0094 PeopleUtils::addValueToJsonObjectIfValid(obj, "deleted", d->deleted); 0095 return obj; 0096 } 0097 0098 } // namespace KGAPI2::People