File indexing completed on 2025-02-16 09:56:44
0001 /* 0002 This file is part of the KContacts framework. 0003 SPDX-FileCopyrightText: 2015-2019 Laurent Montel <montel@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "calendarurl.h" 0009 #include "parametermap_p.h" 0010 0011 #include <QDataStream> 0012 #include <QStringList> 0013 #include <QUrl> 0014 0015 using namespace KContacts; 0016 0017 class Q_DECL_HIDDEN CalendarUrl::Private : public QSharedData 0018 { 0019 public: 0020 Private() 0021 { 0022 } 0023 0024 Private(const Private &other) 0025 : QSharedData(other) 0026 { 0027 mParamMap = other.mParamMap; 0028 type = other.type; 0029 url = other.url; 0030 } 0031 0032 static QString typeToString(CalendarUrl::CalendarType type); 0033 0034 ParameterMap mParamMap; 0035 QUrl url; 0036 CalendarUrl::CalendarType type; 0037 }; 0038 0039 QString CalendarUrl::Private::typeToString(CalendarUrl::CalendarType type) 0040 { 0041 QString ret; 0042 switch (type) { 0043 case Unknown: 0044 case EndCalendarType: 0045 ret = QStringLiteral("Unknown"); 0046 break; 0047 case FBUrl: 0048 ret = QStringLiteral("FreeBusy"); 0049 break; 0050 case CALUri: 0051 ret = QStringLiteral("CalUri"); 0052 break; 0053 case CALADRUri: 0054 ret = QStringLiteral("Caladruri"); 0055 break; 0056 } 0057 return ret; 0058 } 0059 0060 CalendarUrl::CalendarUrl() 0061 : d(new Private) 0062 { 0063 d->type = Unknown; 0064 } 0065 0066 CalendarUrl::CalendarUrl(CalendarUrl::CalendarType type) 0067 : d(new Private) 0068 { 0069 d->type = type; 0070 } 0071 0072 CalendarUrl::CalendarUrl(const CalendarUrl &other) 0073 : d(other.d) 0074 { 0075 } 0076 0077 CalendarUrl::~CalendarUrl() 0078 { 0079 } 0080 0081 bool CalendarUrl::operator==(const CalendarUrl &other) const 0082 { 0083 return (d->mParamMap == other.d->mParamMap) && (d->type == other.type()) && (d->url == other.url()); 0084 } 0085 0086 bool CalendarUrl::operator!=(const CalendarUrl &other) const 0087 { 0088 return !(other == *this); 0089 } 0090 0091 CalendarUrl &CalendarUrl::operator=(const CalendarUrl &other) 0092 { 0093 if (this != &other) { 0094 d = other.d; 0095 } 0096 0097 return *this; 0098 } 0099 0100 QString CalendarUrl::toString() const 0101 { 0102 QString str = QLatin1String("CalendarUrl {\n"); 0103 str += QStringLiteral(" url: %1\n").arg(d->url.toString()); 0104 str += QStringLiteral(" type: %1\n").arg(CalendarUrl::Private::typeToString(d->type)); 0105 str += d->mParamMap.toString(); 0106 str += QLatin1String("}\n"); 0107 return str; 0108 } 0109 0110 #if KCONTACTS_BUILD_DEPRECATED_SINCE(5, 88) 0111 void CalendarUrl::setParameters(const QMap<QString, QStringList> ¶ms) 0112 { 0113 d->mParamMap = ParameterMap::fromQMap(params); 0114 } 0115 #endif 0116 0117 #if KCONTACTS_BUILD_DEPRECATED_SINCE(5, 88) 0118 QMap<QString, QStringList> CalendarUrl::parameters() const 0119 { 0120 return d->mParamMap.toQMap(); 0121 } 0122 #endif 0123 0124 void CalendarUrl::setParams(const ParameterMap ¶ms) 0125 { 0126 d->mParamMap = params; 0127 } 0128 0129 ParameterMap CalendarUrl::params() const 0130 { 0131 return d->mParamMap; 0132 } 0133 0134 bool CalendarUrl::isValid() const 0135 { 0136 return (d->type != Unknown) && (d->url.isValid()); 0137 } 0138 0139 void CalendarUrl::setType(CalendarUrl::CalendarType type) 0140 { 0141 d->type = type; 0142 } 0143 0144 CalendarUrl::CalendarType CalendarUrl::type() const 0145 { 0146 return d->type; 0147 } 0148 0149 void CalendarUrl::setUrl(const QUrl &url) 0150 { 0151 d->url = url; 0152 } 0153 0154 QUrl CalendarUrl::url() const 0155 { 0156 return d->url; 0157 } 0158 0159 QDataStream &KContacts::operator<<(QDataStream &s, const CalendarUrl &calUrl) 0160 { 0161 return s << calUrl.d->mParamMap << static_cast<uint>(calUrl.d->type) << calUrl.d->url; 0162 } 0163 0164 QDataStream &KContacts::operator>>(QDataStream &s, CalendarUrl &calUrl) 0165 { 0166 uint type; 0167 s >> calUrl.d->mParamMap >> type >> calUrl.d->url; 0168 calUrl.d->type = static_cast<CalendarUrl::CalendarType>(type); 0169 return s; 0170 }