Changeset View
Changeset View
Standalone View
Standalone View
src/attendee.cpp
Show All 38 Lines | |||||
39 | 39 | | |||
40 | using namespace KCalCore; | 40 | using namespace KCalCore; | ||
41 | 41 | | |||
42 | /** | 42 | /** | ||
43 | Private class that helps to provide binary compatibility between releases. | 43 | Private class that helps to provide binary compatibility between releases. | ||
44 | @internal | 44 | @internal | ||
45 | */ | 45 | */ | ||
46 | //@cond PRIVATE | 46 | //@cond PRIVATE | ||
47 | class Q_DECL_HIDDEN KCalCore::Attendee::Private | 47 | class Q_DECL_HIDDEN KCalCore::Attendee::Private : public QSharedData | ||
48 | { | 48 | { | ||
49 | public: | 49 | public: | ||
50 | void setCuType(CuType cuType); | 50 | void setCuType(CuType cuType); | ||
51 | void setCuType(const QString &cuType); | 51 | void setCuType(const QString &cuType); | ||
52 | CuType cuType() const; | 52 | CuType cuType() const; | ||
53 | QString cuTypeStr() const; | 53 | QString cuTypeStr() const; | ||
54 | 54 | | |||
55 | bool mRSVP = false; | 55 | bool mRSVP = false; | ||
56 | Role mRole; | 56 | Role mRole; | ||
57 | PartStat mStatus; | 57 | PartStat mStatus; | ||
58 | QString mUid; | 58 | mutable QString mUid; | ||
59 | QString mDelegate; | 59 | QString mDelegate; | ||
60 | QString mDelegator; | 60 | QString mDelegator; | ||
61 | CustomProperties mCustomProperties; | 61 | CustomProperties mCustomProperties; | ||
62 | QString mName; | 62 | QString mName; | ||
63 | QString mEmail; | 63 | QString mEmail; | ||
64 | private: | 64 | private: | ||
65 | QString sCuType; | 65 | QString sCuType; | ||
66 | CuType mCuType; | 66 | CuType mCuType; | ||
▲ Show 20 Lines • Show All 46 Lines • ▼ Show 20 Line(s) | 112 | if (sCuType.isEmpty()) { | |||
113 | return QStringLiteral("UNKNOWN"); | 113 | return QStringLiteral("UNKNOWN"); | ||
114 | } else { | 114 | } else { | ||
115 | return sCuType; | 115 | return sCuType; | ||
116 | } | 116 | } | ||
117 | } | 117 | } | ||
118 | return QStringLiteral("UNKNOWN"); | 118 | return QStringLiteral("UNKNOWN"); | ||
119 | } | 119 | } | ||
120 | 120 | | |||
121 | Attendee::Attendee() | ||||
122 | : d(new Attendee::Private) | ||||
123 | { | ||||
124 | } | ||||
125 | | ||||
121 | Attendee::Attendee(const QString &name, const QString &email, bool rsvp, | 126 | Attendee::Attendee(const QString &name, const QString &email, bool rsvp, | ||
122 | Attendee::PartStat status, Attendee::Role role, const QString &uid) | 127 | Attendee::PartStat status, Attendee::Role role, const QString &uid) | ||
123 | : d(new Attendee::Private) | 128 | : d(new Attendee::Private) | ||
124 | { | 129 | { | ||
125 | setName(name); | 130 | setName(name); | ||
126 | setEmail(email); | 131 | setEmail(email); | ||
127 | d->mRSVP = rsvp; | 132 | d->mRSVP = rsvp; | ||
128 | d->mStatus = status; | 133 | d->mStatus = status; | ||
129 | d->mRole = role; | 134 | d->mRole = role; | ||
130 | d->mUid = uid; | 135 | d->mUid = uid; | ||
131 | d->setCuType(Attendee::Individual); | 136 | d->setCuType(Attendee::Individual); | ||
132 | } | 137 | } | ||
133 | 138 | | |||
134 | Attendee::Attendee(const Attendee &attendee) | 139 | Attendee::Attendee(const Attendee &attendee) | ||
135 | : d(new Attendee::Private(*attendee.d)) | 140 | : d(attendee.d) | ||
136 | { | 141 | { | ||
137 | } | 142 | } | ||
138 | 143 | | |||
139 | Attendee::~Attendee() | 144 | Attendee::~Attendee() = default; | ||
145 | | ||||
146 | bool Attendee::isNull() const | ||||
140 | { | 147 | { | ||
141 | delete d; | 148 | // isNull rather than isEmpty, as user code is actually creating empty but non-null attendees... | ||
149 | return d->mName.isNull() && d->mEmail.isNull(); | ||||
142 | } | 150 | } | ||
143 | 151 | | |||
144 | bool KCalCore::Attendee::operator==(const Attendee &attendee) const | 152 | bool KCalCore::Attendee::operator==(const Attendee &attendee) const | ||
145 | { | 153 | { | ||
146 | return | 154 | return | ||
147 | d->mUid == attendee.d->mUid && | 155 | d->mUid == attendee.d->mUid && | ||
148 | d->mRSVP == attendee.d->mRSVP && | 156 | d->mRSVP == attendee.d->mRSVP && | ||
149 | d->mRole == attendee.d->mRole && | 157 | d->mRole == attendee.d->mRole && | ||
Show All 12 Lines | |||||
162 | 170 | | |||
163 | Attendee &KCalCore::Attendee::operator=(const Attendee &attendee) | 171 | Attendee &KCalCore::Attendee::operator=(const Attendee &attendee) | ||
164 | { | 172 | { | ||
165 | // check for self assignment | 173 | // check for self assignment | ||
166 | if (&attendee == this) { | 174 | if (&attendee == this) { | ||
167 | return *this; | 175 | return *this; | ||
168 | } | 176 | } | ||
169 | 177 | | |||
170 | *d = *attendee.d; | 178 | d = attendee.d; | ||
171 | return *this; | 179 | return *this; | ||
172 | } | 180 | } | ||
173 | 181 | | |||
174 | QString Attendee::name() const | 182 | QString Attendee::name() const | ||
175 | { | 183 | { | ||
176 | return d->mName; | 184 | return d->mName; | ||
177 | } | 185 | } | ||
178 | 186 | | |||
▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Line(s) | 271 | { | |||
265 | * string) as Uid. Only thing that matters is that the Uid is unique | 273 | * string) as Uid. Only thing that matters is that the Uid is unique | ||
266 | * insofar IncidenceBase is concerned, and this does that (albeit | 274 | * insofar IncidenceBase is concerned, and this does that (albeit | ||
267 | * not very nicely). If these are ever saved to disk, should use | 275 | * not very nicely). If these are ever saved to disk, should use | ||
268 | * (considerably more expensive) CalFormat::createUniqueId(). As Uid | 276 | * (considerably more expensive) CalFormat::createUniqueId(). As Uid | ||
269 | * is not part of Attendee in iCal std, it's fairly safe bet that | 277 | * is not part of Attendee in iCal std, it's fairly safe bet that | ||
270 | * these will never hit disc though so faster generation speed is | 278 | * these will never hit disc though so faster generation speed is | ||
271 | * more important than actually being forever unique.*/ | 279 | * more important than actually being forever unique.*/ | ||
272 | if (d->mUid.isEmpty()) { | 280 | if (d->mUid.isEmpty()) { | ||
273 | d->mUid = QString::number((qlonglong)this); | 281 | d->mUid = QString::number((qlonglong)d.constData()); | ||
274 | } | 282 | } | ||
275 | 283 | | |||
276 | return d->mUid; | 284 | return d->mUid; | ||
277 | } | 285 | } | ||
278 | 286 | | |||
279 | void Attendee::setDelegate(const QString &delegate) | 287 | void Attendee::setDelegate(const QString &delegate) | ||
280 | { | 288 | { | ||
281 | d->mDelegate = delegate; | 289 | d->mDelegate = delegate; | ||
Show All 24 Lines | 313 | { | |||
306 | return d->mCustomProperties; | 314 | return d->mCustomProperties; | ||
307 | } | 315 | } | ||
308 | 316 | | |||
309 | const CustomProperties &Attendee::customProperties() const | 317 | const CustomProperties &Attendee::customProperties() const | ||
310 | { | 318 | { | ||
311 | return d->mCustomProperties; | 319 | return d->mCustomProperties; | ||
312 | } | 320 | } | ||
313 | 321 | | |||
314 | QDataStream &KCalCore::operator<<(QDataStream &stream, const KCalCore::Attendee::Ptr &attendee) | 322 | QDataStream &KCalCore::operator<<(QDataStream &stream, const KCalCore::Attendee &attendee) | ||
315 | { | 323 | { | ||
316 | KCalCore::Person p(attendee->name(), attendee->email()); | 324 | KCalCore::Person p(attendee.name(), attendee.email()); | ||
317 | stream << p; | 325 | stream << p; | ||
318 | return stream << attendee->d->mRSVP | 326 | return stream << attendee.d->mRSVP | ||
319 | << int(attendee->d->mRole) | 327 | << int(attendee.d->mRole) | ||
320 | << int(attendee->d->mStatus) | 328 | << int(attendee.d->mStatus) | ||
321 | << attendee->d->mUid | 329 | << attendee.d->mUid | ||
322 | << attendee->d->mDelegate | 330 | << attendee.d->mDelegate | ||
323 | << attendee->d->mDelegator | 331 | << attendee.d->mDelegator | ||
324 | << attendee->d->cuTypeStr() | 332 | << attendee.d->cuTypeStr() | ||
325 | << attendee->d->mCustomProperties; | 333 | << attendee.d->mCustomProperties; | ||
326 | } | 334 | } | ||
327 | 335 | | |||
328 | QDataStream &KCalCore::operator>>(QDataStream &stream, KCalCore::Attendee::Ptr &attendee) | 336 | QDataStream &KCalCore::operator>>(QDataStream &stream, KCalCore::Attendee &attendee) | ||
329 | { | 337 | { | ||
330 | bool RSVP; | 338 | bool RSVP; | ||
331 | Attendee::Role role; | 339 | Attendee::Role role; | ||
332 | Attendee::PartStat status; | 340 | Attendee::PartStat status; | ||
333 | QString uid; | 341 | QString uid; | ||
334 | QString delegate; | 342 | QString delegate; | ||
335 | QString delegator; | 343 | QString delegator; | ||
336 | QString cuType; | 344 | QString cuType; | ||
Show All 10 Lines | 351 | stream >> RSVP | |||
347 | >> delegate | 355 | >> delegate | ||
348 | >> delegator | 356 | >> delegator | ||
349 | >> cuType | 357 | >> cuType | ||
350 | >> customProperties; | 358 | >> customProperties; | ||
351 | 359 | | |||
352 | role = Attendee::Role(role_int); | 360 | role = Attendee::Role(role_int); | ||
353 | status = Attendee::PartStat(status_int); | 361 | status = Attendee::PartStat(status_int); | ||
354 | 362 | | |||
355 | Attendee::Ptr att_temp(new KCalCore::Attendee(person.name(), person.email(), | 363 | attendee = Attendee(person.name(), person.email(), RSVP, status, role, uid); | ||
356 | RSVP, status, role, uid)); | 364 | attendee.setDelegate(delegate); | ||
357 | att_temp->setDelegate(delegate); | 365 | attendee.setDelegator(delegator); | ||
358 | att_temp->setDelegator(delegator); | 366 | attendee.setCuType(cuType); | ||
359 | att_temp->setCuType(cuType); | 367 | attendee.d->mCustomProperties = customProperties; | ||
360 | att_temp->d->mCustomProperties = customProperties; | | |||
361 | attendee.swap(att_temp); | | |||
362 | return stream; | 368 | return stream; | ||
363 | } | 369 | } |