File indexing completed on 2024-04-21 03:52:45
0001 /* 0002 This file is part of the kcalcore library. 0003 0004 SPDX-FileCopyrightText: 2020 Daniel Vrátil <dvratil@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "conference.h" 0010 0011 #include <QDataStream> 0012 0013 using namespace KCalendarCore; 0014 0015 /** 0016 Private class that helps to provide binary compatibility between releases. 0017 @internal 0018 */ 0019 //@cond PRIVATE 0020 class Q_DECL_HIDDEN KCalendarCore::Conference::Private : public QSharedData 0021 { 0022 public: 0023 QString label; 0024 QString language; 0025 QStringList features; 0026 QUrl uri; 0027 CustomProperties customProperties; 0028 }; 0029 //@endcond 0030 0031 Conference::Conference() 0032 : d(new Conference::Private) 0033 { 0034 } 0035 0036 Conference::Conference(const QUrl &uri, const QString &label, const QStringList &features, const QString &language) 0037 : d(new Conference::Private) 0038 { 0039 setUri(uri); 0040 setLabel(label); 0041 setFeatures(features); 0042 setLanguage(language); 0043 } 0044 0045 Conference::Conference(const Conference &) = default; 0046 0047 Conference::~Conference() = default; 0048 0049 bool Conference::isNull() const 0050 { 0051 // isNull rather than isEmpty, as user code is actually creating empty but non-null conferences... 0052 return !d->uri.isValid() && d->label.isNull(); 0053 } 0054 0055 bool KCalendarCore::Conference::operator==(const Conference &other) const 0056 { 0057 return std::tie(d->label, d->language, d->features, d->uri) == std::tie(other.d->label, other.d->language, other.d->features, other.d->uri); 0058 } 0059 0060 bool KCalendarCore::Conference::operator!=(const Conference &other) const 0061 { 0062 return !operator==(other); 0063 } 0064 0065 Conference &KCalendarCore::Conference::operator=(const Conference &) = default; 0066 0067 QUrl Conference::uri() const 0068 { 0069 return d->uri; 0070 } 0071 0072 void Conference::setUri(const QUrl &uri) 0073 { 0074 d->uri = uri; 0075 } 0076 0077 QString Conference::label() const 0078 { 0079 return d->label; 0080 } 0081 0082 void Conference::setLabel(const QString &label) 0083 { 0084 d->label = label; 0085 } 0086 0087 QStringList Conference::features() const 0088 { 0089 return d->features; 0090 } 0091 0092 void Conference::addFeature(const QString &feature) 0093 { 0094 d->features.push_back(feature); 0095 } 0096 0097 void Conference::removeFeature(const QString &feature) 0098 { 0099 d->features.removeAll(feature); 0100 } 0101 0102 void Conference::setFeatures(const QStringList &features) 0103 { 0104 d->features = features; 0105 } 0106 0107 QString Conference::language() const 0108 { 0109 return d->language; 0110 } 0111 0112 void Conference::setLanguage(const QString &language) 0113 { 0114 d->language = language; 0115 } 0116 0117 void Conference::setCustomProperty(const QByteArray &xname, const QString &xvalue) 0118 { 0119 d->customProperties.setNonKDECustomProperty(xname, xvalue); 0120 } 0121 0122 CustomProperties &Conference::customProperties() 0123 { 0124 return d->customProperties; 0125 } 0126 0127 const CustomProperties &Conference::customProperties() const 0128 { 0129 return d->customProperties; 0130 } 0131 0132 QDataStream &KCalendarCore::operator<<(QDataStream &stream, const KCalendarCore::Conference &conference) 0133 { 0134 return stream << conference.d->uri << conference.d->label << conference.d->features << conference.d->language << conference.d->customProperties; 0135 } 0136 0137 QDataStream &KCalendarCore::operator>>(QDataStream &stream, KCalendarCore::Conference &conference) 0138 { 0139 Conference conf; 0140 stream >> conf.d->uri >> conf.d->label >> conf.d->features >> conf.d->language >> conf.d->customProperties; 0141 conference = conf; 0142 0143 return stream; 0144 } 0145 0146 #include "moc_conference.cpp"