File indexing completed on 2024-05-12 05:11:10
0001 /* 0002 SPDX-FileCopyrightText: 2009 Constantin Berzan <exit3219@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "addressattribute.h" 0008 0009 #include <QDataStream> 0010 #include <QIODevice> 0011 0012 #include <Akonadi/AttributeFactory> 0013 0014 using namespace Akonadi; 0015 0016 /** 0017 @internal 0018 */ 0019 class Akonadi::AddressAttributePrivate 0020 { 0021 public: 0022 bool mDSN = false; 0023 QString mFrom; 0024 QStringList mTo; 0025 QStringList mCc; 0026 QStringList mBcc; 0027 }; 0028 0029 AddressAttribute::AddressAttribute(const QString &from, const QStringList &to, const QStringList &cc, const QStringList &bcc, bool dsn) 0030 : d(new AddressAttributePrivate) 0031 { 0032 d->mFrom = from; 0033 d->mTo = to; 0034 d->mCc = cc; 0035 d->mBcc = bcc; 0036 d->mDSN = dsn; 0037 } 0038 0039 AddressAttribute::~AddressAttribute() = default; 0040 0041 AddressAttribute *AddressAttribute::clone() const 0042 { 0043 return new AddressAttribute(d->mFrom, d->mTo, d->mCc, d->mBcc, d->mDSN); 0044 } 0045 0046 QByteArray AddressAttribute::type() const 0047 { 0048 static const QByteArray sType("AddressAttribute"); 0049 return sType; 0050 } 0051 0052 QByteArray AddressAttribute::serialized() const 0053 { 0054 QByteArray serializedData; 0055 QDataStream serializer(&serializedData, QIODevice::WriteOnly); 0056 serializer.setVersion(QDataStream::Qt_4_5); 0057 serializer << d->mFrom; 0058 serializer << d->mTo; 0059 serializer << d->mCc; 0060 serializer << d->mBcc; 0061 serializer << d->mDSN; 0062 return serializedData; 0063 } 0064 0065 void AddressAttribute::deserialize(const QByteArray &data) 0066 { 0067 QDataStream deserializer(data); 0068 deserializer.setVersion(QDataStream::Qt_4_5); 0069 deserializer >> d->mFrom; 0070 deserializer >> d->mTo; 0071 deserializer >> d->mCc; 0072 deserializer >> d->mBcc; 0073 if (!deserializer.atEnd()) { 0074 deserializer >> d->mDSN; 0075 } 0076 } 0077 0078 QString AddressAttribute::from() const 0079 { 0080 return d->mFrom; 0081 } 0082 0083 void AddressAttribute::setFrom(const QString &from) 0084 { 0085 d->mFrom = from; 0086 } 0087 0088 QStringList AddressAttribute::to() const 0089 { 0090 return d->mTo; 0091 } 0092 0093 void AddressAttribute::setTo(const QStringList &to) 0094 { 0095 d->mTo = to; 0096 } 0097 0098 QStringList AddressAttribute::cc() const 0099 { 0100 return d->mCc; 0101 } 0102 0103 void AddressAttribute::setCc(const QStringList &cc) 0104 { 0105 d->mCc = cc; 0106 } 0107 0108 QStringList AddressAttribute::bcc() const 0109 { 0110 return d->mBcc; 0111 } 0112 0113 void AddressAttribute::setBcc(const QStringList &bcc) 0114 { 0115 d->mBcc = bcc; 0116 } 0117 0118 bool AddressAttribute::deliveryStatusNotification() const 0119 { 0120 return d->mDSN; 0121 } 0122 0123 bool AddressAttribute::operator==(const AddressAttribute &other) const 0124 { 0125 return d->mDSN == other.deliveryStatusNotification() && d->mBcc == other.bcc() && d->mTo == other.to() && d->mCc == other.cc() && d->mFrom == other.from(); 0126 } 0127 0128 void AddressAttribute::setDeliveryStatusNotification(bool b) 0129 { 0130 d->mDSN = b; 0131 } 0132 0133 // Register the attribute when the library is loaded. 0134 namespace 0135 { 0136 bool address_dummy() 0137 { 0138 using namespace Akonadi; 0139 AttributeFactory::registerAttribute<AddressAttribute>(); 0140 return true; 0141 } 0142 0143 const bool address_registered = address_dummy(); 0144 }