File indexing completed on 2025-01-19 03:39:50
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 void CalendarUrl::setParams(const ParameterMap ¶ms) 0111 { 0112 d->mParamMap = params; 0113 } 0114 0115 ParameterMap CalendarUrl::params() const 0116 { 0117 return d->mParamMap; 0118 } 0119 0120 bool CalendarUrl::isValid() const 0121 { 0122 return (d->type != Unknown) && (d->url.isValid()); 0123 } 0124 0125 void CalendarUrl::setType(CalendarUrl::CalendarType type) 0126 { 0127 d->type = type; 0128 } 0129 0130 CalendarUrl::CalendarType CalendarUrl::type() const 0131 { 0132 return d->type; 0133 } 0134 0135 void CalendarUrl::setUrl(const QUrl &url) 0136 { 0137 d->url = url; 0138 } 0139 0140 QUrl CalendarUrl::url() const 0141 { 0142 return d->url; 0143 } 0144 0145 QDataStream &KContacts::operator<<(QDataStream &s, const CalendarUrl &calUrl) 0146 { 0147 return s << calUrl.d->mParamMap << static_cast<uint>(calUrl.d->type) << calUrl.d->url; 0148 } 0149 0150 QDataStream &KContacts::operator>>(QDataStream &s, CalendarUrl &calUrl) 0151 { 0152 uint type; 0153 s >> calUrl.d->mParamMap >> type >> calUrl.d->url; 0154 calUrl.d->type = static_cast<CalendarUrl::CalendarType>(type); 0155 return s; 0156 }