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"