|         |      1 /* | 
|         |      2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). | 
|         |      3  * All rights reserved. | 
|         |      4  * This component and the accompanying materials are made available | 
|         |      5  * under the terms of "Eclipse Public License v1.0" | 
|         |      6  * which accompanies this distribution, and is available | 
|         |      7  * at the URL "http://www.eclipse.org/legal/epl-v10.html". | 
|         |      8  * | 
|         |      9  * Initial Contributors: | 
|         |     10  * Nokia Corporation - initial contribution. | 
|         |     11  * | 
|         |     12  * Contributors: | 
|         |     13  * | 
|         |     14  * Description: | 
|         |     15  * | 
|         |     16  */ | 
|         |     17  | 
|         |     18 // System include files | 
|         |     19  | 
|         |     20 // User include files | 
|         |     21 #include "convergedmessageimpl.h" | 
|         |     22  | 
|         |     23 // ====================== LOCAL FUNCTIONS ======================== | 
|         |     24  | 
|         |     25  | 
|         |     26 // ====================== MEMBER FUNCTIONS ======================= | 
|         |     27  | 
|         |     28 //---------------------------------------------------------------- | 
|         |     29 // ConvergedMessageImpl::ConvergedMessageImpl | 
|         |     30 // @see header | 
|         |     31 //---------------------------------------------------------------- | 
|         |     32  | 
|         |     33  | 
|         |     34 ConvergedMessageImpl::ConvergedMessageImpl( | 
|         |     35         ConvergedMessage::MessageType messageType) : | 
|         |     36     mSubject(QString()), mBodyText(QString()), mTimeStamp(0), mProperty(0x0), | 
|         |     37         mMessageSubType(ConvergedMessage::None), | 
|         |     38             mPriority(ConvergedMessage::Normal), mLocation( | 
|         |     39                     ConvergedMessage::Delete), mDirection( | 
|         |     40                     ConvergedMessage::Incoming), mSendingState( | 
|         |     41                     ConvergedMessage::Unknown) | 
|         |     42     { | 
|         |     43     mMessageType = messageType; | 
|         |     44     mId = new ConvergedMessageId(); | 
|         |     45     mFromAddress = new ConvergedMessageAddress(); | 
|         |     46     } | 
|         |     47  | 
|         |     48 //---------------------------------------------------------------- | 
|         |     49 // ConvergedMessageImpl::ConvergedMessageImpl | 
|         |     50 // @see header | 
|         |     51 //---------------------------------------------------------------- | 
|         |     52 ConvergedMessageImpl::ConvergedMessageImpl(const ConvergedMessageId &id) : | 
|         |     53     mSubject(QString()), mBodyText(QString()), mTimeStamp(0), mProperty(0x0), | 
|         |     54             mMessageType(ConvergedMessage::None),  | 
|         |     55             mMessageSubType(ConvergedMessage::None), | 
|         |     56             mPriority(ConvergedMessage::Normal), mLocation( | 
|         |     57                     ConvergedMessage::Delete), mDirection( | 
|         |     58                     ConvergedMessage::Incoming), mSendingState( | 
|         |     59                     ConvergedMessage::Unknown) | 
|         |     60     { | 
|         |     61     mId = new ConvergedMessageId(id); | 
|         |     62     mFromAddress = new ConvergedMessageAddress(); | 
|         |     63  | 
|         |     64     } | 
|         |     65  | 
|         |     66 //---------------------------------------------------------------- | 
|         |     67 // ConvergedMessageImpl::ConvergedMessageImpl | 
|         |     68 // @see header | 
|         |     69 //---------------------------------------------------------------- | 
|         |     70 ConvergedMessageImpl::ConvergedMessageImpl(const ConvergedMessage& msg) | 
|         |     71     { | 
|         |     72     mId = new ConvergedMessageId(*msg.id()); | 
|         |     73     mSubject = QString(msg.subject()); | 
|         |     74     mBodyText = QString(msg.bodyText()); | 
|         |     75  | 
|         |     76     int toCount = msg.toAddressList().count(); | 
|         |     77     for (int i = 0; i < toCount; i++) | 
|         |     78         { | 
|         |     79         ConvergedMessageAddress* address = new ConvergedMessageAddress( | 
|         |     80                 msg.toAddressList().at(i)->address(), msg.toAddressList().at( | 
|         |     81                         i)->alias()); | 
|         |     82         mToAddresses.append(address); | 
|         |     83         } | 
|         |     84  | 
|         |     85     int ccCount = msg.ccAddressList().count(); | 
|         |     86     for (int i = 0; i < ccCount; i++) | 
|         |     87         { | 
|         |     88         ConvergedMessageAddress* address = new ConvergedMessageAddress( | 
|         |     89                 msg.ccAddressList().at(i)->address(), msg.ccAddressList().at( | 
|         |     90                         i)->alias()); | 
|         |     91         mCcAddresses.append(address); | 
|         |     92         } | 
|         |     93  | 
|         |     94     int bccCount = msg.bccAddressList().count(); | 
|         |     95     for (int i = 0; i < bccCount; i++) | 
|         |     96         { | 
|         |     97         ConvergedMessageAddress* address = new ConvergedMessageAddress( | 
|         |     98                 msg.bccAddressList().at(i)->address(), | 
|         |     99                 msg.bccAddressList().at(i)->alias()); | 
|         |    100         mBccAddresses.append(address); | 
|         |    101         } | 
|         |    102  | 
|         |    103     mFromAddress = new ConvergedMessageAddress(msg.fromAddress()->address(), | 
|         |    104             msg.fromAddress()->alias()); | 
|         |    105  | 
|         |    106     int attachmentsCount = msg.attachments().count(); | 
|         |    107     for (int i = 0; i < attachmentsCount; i++) | 
|         |    108         { | 
|         |    109         ConvergedMessageAttachment *attachment = | 
|         |    110                 new ConvergedMessageAttachment( | 
|         |    111                         msg.attachments().at(i)->filePath(), | 
|         |    112                         msg.attachments().at(i)->attachmentType()); | 
|         |    113         mAttachments.append(attachment); | 
|         |    114         } | 
|         |    115  | 
|         |    116     mTimeStamp = msg.timeStamp(); | 
|         |    117     mProperty = msg.properties(); | 
|         |    118     mMessageType = msg.messageType(); | 
|         |    119     mMessageSubType = msg.messageSubType(); | 
|         |    120     mPriority = msg.priority(); | 
|         |    121     mLocation = msg.location(); | 
|         |    122     mDirection = msg.direction(); | 
|         |    123     mSendingState = msg.sendingState(); | 
|         |    124     } | 
|         |    125  | 
|         |    126 //---------------------------------------------------------------- | 
|         |    127 // ConvergedMessageImpl::~ConvergedMessageImpl | 
|         |    128 // @see header | 
|         |    129 //---------------------------------------------------------------- | 
|         |    130 ConvergedMessageImpl::~ConvergedMessageImpl() | 
|         |    131     { | 
|         |    132     delete mId; | 
|         |    133     delete mFromAddress; | 
|         |    134     //delete arrays | 
|         |    135     while (!mToAddresses.isEmpty()) | 
|         |    136         { | 
|         |    137         delete mToAddresses.takeAt(0); | 
|         |    138         } | 
|         |    139  | 
|         |    140     //clean cc | 
|         |    141     while (!mCcAddresses.isEmpty()) | 
|         |    142         { | 
|         |    143         delete mCcAddresses.takeAt(0); | 
|         |    144         } | 
|         |    145  | 
|         |    146     //clean Bcc | 
|         |    147     while (!mBccAddresses.isEmpty()) | 
|         |    148         { | 
|         |    149         delete mBccAddresses.takeAt(0); | 
|         |    150         } | 
|         |    151  | 
|         |    152     //clean attachment list | 
|         |    153     while (!mAttachments.isEmpty()) | 
|         |    154         { | 
|         |    155         delete mAttachments.takeFirst(); | 
|         |    156         } | 
|         |    157     } | 
|         |    158  | 
|         |    159 //---------------------------------------------------------------- | 
|         |    160 // ConvergedMessageImpl::id | 
|         |    161 // @see header | 
|         |    162 //---------------------------------------------------------------- | 
|         |    163 ConvergedMessageId* ConvergedMessageImpl::id() const | 
|         |    164     { | 
|         |    165     return mId; | 
|         |    166     } | 
|         |    167  | 
|         |    168 //---------------------------------------------------------------- | 
|         |    169 // ConvergedMessageImpl::setMessageId | 
|         |    170 // @see header | 
|         |    171 //---------------------------------------------------------------- | 
|         |    172 void ConvergedMessageImpl::setMessageId(ConvergedMessageId &id) | 
|         |    173     { | 
|         |    174 	mId->setId(id.getId()); | 
|         |    175     } | 
|         |    176  | 
|         |    177 //---------------------------------------------------------------- | 
|         |    178 // ConvergedMessageImpl::messageType | 
|         |    179 // @see header | 
|         |    180 //---------------------------------------------------------------- | 
|         |    181 ConvergedMessage::MessageType ConvergedMessageImpl::messageType() const | 
|         |    182     { | 
|         |    183     return ConvergedMessage::MessageType(mMessageType); | 
|         |    184     } | 
|         |    185  | 
|         |    186 //---------------------------------------------------------------- | 
|         |    187 // ConvergedMessageImpl::setMessageType | 
|         |    188 // @see header | 
|         |    189 //---------------------------------------------------------------- | 
|         |    190 void ConvergedMessageImpl::setMessageType(ConvergedMessage::MessageType type) | 
|         |    191     { | 
|         |    192     mMessageType = type; | 
|         |    193     } | 
|         |    194  | 
|         |    195 //---------------------------------------------------------------- | 
|         |    196 // ConvergedMessageImpl::messageType | 
|         |    197 // @see header | 
|         |    198 //---------------------------------------------------------------- | 
|         |    199 ConvergedMessage::MessageSubType ConvergedMessageImpl::messageSubType() const | 
|         |    200     { | 
|         |    201     return ConvergedMessage::MessageSubType(mMessageSubType); | 
|         |    202     } | 
|         |    203  | 
|         |    204 //---------------------------------------------------------------- | 
|         |    205 // ConvergedMessageImpl::setMessageSubType | 
|         |    206 // @see header | 
|         |    207 //---------------------------------------------------------------- | 
|         |    208 void ConvergedMessageImpl::setMessageSubType(ConvergedMessage::MessageSubType type) | 
|         |    209     { | 
|         |    210     mMessageSubType = type; | 
|         |    211     } | 
|         |    212  | 
|         |    213 //---------------------------------------------------------------- | 
|         |    214 // ConvergedMessageImpl::priority | 
|         |    215 // @see header | 
|         |    216 //---------------------------------------------------------------- | 
|         |    217 ConvergedMessage::Priority ConvergedMessageImpl::priority() const | 
|         |    218     { | 
|         |    219     return ConvergedMessage::Priority(mPriority); | 
|         |    220     } | 
|         |    221  | 
|         |    222 //---------------------------------------------------------------- | 
|         |    223 // ConvergedMessageImpl::setPriority | 
|         |    224 // @see header | 
|         |    225 //---------------------------------------------------------------- | 
|         |    226 void ConvergedMessageImpl::setPriority(ConvergedMessage::Priority newPriority) | 
|         |    227     { | 
|         |    228     mPriority = newPriority; | 
|         |    229     } | 
|         |    230  | 
|         |    231 //---------------------------------------------------------------- | 
|         |    232 // ConvergedMessageImpl::direction | 
|         |    233 // @see header | 
|         |    234 //---------------------------------------------------------------- | 
|         |    235 ConvergedMessage::Direction ConvergedMessageImpl::direction() const | 
|         |    236     { | 
|         |    237     return ConvergedMessage::Direction(mDirection); | 
|         |    238     } | 
|         |    239  | 
|         |    240 //---------------------------------------------------------------- | 
|         |    241 // ConvergedMessageImpl::setDirection | 
|         |    242 // @see header | 
|         |    243 //---------------------------------------------------------------- | 
|         |    244 void ConvergedMessageImpl::setDirection(ConvergedMessage::Direction direction) | 
|         |    245     { | 
|         |    246     mDirection = direction; | 
|         |    247     } | 
|         |    248  | 
|         |    249 //---------------------------------------------------------------- | 
|         |    250 // ConvergedMessageImpl::sendingState | 
|         |    251 // @see header | 
|         |    252 //---------------------------------------------------------------- | 
|         |    253 ConvergedMessage::SendingState ConvergedMessageImpl::sendingState() const | 
|         |    254     { | 
|         |    255     return ConvergedMessage::SendingState(mSendingState); | 
|         |    256     } | 
|         |    257  | 
|         |    258 //---------------------------------------------------------------- | 
|         |    259 // ConvergedMessageImpl::setSendingState | 
|         |    260 // @see header | 
|         |    261 //---------------------------------------------------------------- | 
|         |    262 void ConvergedMessageImpl::setSendingState( | 
|         |    263         ConvergedMessage::SendingState state) | 
|         |    264     { | 
|         |    265     mSendingState = state; | 
|         |    266     } | 
|         |    267  | 
|         |    268 //---------------------------------------------------------------- | 
|         |    269 // ConvergedMessageImpl::isUnread | 
|         |    270 // @see header | 
|         |    271 //---------------------------------------------------------------- | 
|         |    272 bool ConvergedMessageImpl::isUnread() const | 
|         |    273     { | 
|         |    274     return mProperty & ConvergedMessage::Unread; | 
|         |    275     } | 
|         |    276  | 
|         |    277 //---------------------------------------------------------------- | 
|         |    278 // ConvergedMessageImpl::hasAttachment | 
|         |    279 // @see header | 
|         |    280 //---------------------------------------------------------------- | 
|         |    281 bool ConvergedMessageImpl::hasAttachment() const | 
|         |    282     { | 
|         |    283     return mProperty & ConvergedMessage::Attachment; | 
|         |    284     } | 
|         |    285  | 
|         |    286 //---------------------------------------------------------------- | 
|         |    287 // ConvergedMessageImpl::location | 
|         |    288 // @see header | 
|         |    289 //---------------------------------------------------------------- | 
|         |    290 ConvergedMessage::MessageLocation ConvergedMessageImpl::location() const | 
|         |    291     { | 
|         |    292     return ConvergedMessage::MessageLocation(mLocation); | 
|         |    293     } | 
|         |    294  | 
|         |    295 //---------------------------------------------------------------- | 
|         |    296 // ConvergedMessageImpl::setLocation | 
|         |    297 // @see header | 
|         |    298 //---------------------------------------------------------------- | 
|         |    299 void ConvergedMessageImpl::setLocation( | 
|         |    300         ConvergedMessage::MessageLocation location) | 
|         |    301     { | 
|         |    302     mLocation = location; | 
|         |    303     } | 
|         |    304  | 
|         |    305 //---------------------------------------------------------------- | 
|         |    306 // ConvergedMessageImpl::setProperty | 
|         |    307 // @see header | 
|         |    308 //---------------------------------------------------------------- | 
|         |    309 void ConvergedMessageImpl::setProperty( | 
|         |    310         ConvergedMessage::MessageProperty property) | 
|         |    311     { | 
|         |    312     // set the attribute to member attribute var  | 
|         |    313     mProperty |= property; | 
|         |    314     } | 
|         |    315  | 
|         |    316 //---------------------------------------------------------------- | 
|         |    317 // ConvergedMessageImpl::properties | 
|         |    318 // @see header | 
|         |    319 //---------------------------------------------------------------- | 
|         |    320 quint16 ConvergedMessageImpl::properties() const | 
|         |    321     { | 
|         |    322     return mProperty; | 
|         |    323     } | 
|         |    324  | 
|         |    325 //---------------------------------------------------------------- | 
|         |    326 // ConvergedMessageImpl::subject | 
|         |    327 // @see header | 
|         |    328 //---------------------------------------------------------------- | 
|         |    329 const QString& ConvergedMessageImpl::subject() const | 
|         |    330     { | 
|         |    331     return mSubject; | 
|         |    332     } | 
|         |    333  | 
|         |    334 //---------------------------------------------------------------- | 
|         |    335 // ConvergedMessageImpl::setSubject | 
|         |    336 // @see header | 
|         |    337 //---------------------------------------------------------------- | 
|         |    338 void ConvergedMessageImpl::setSubject(const QString &subject) | 
|         |    339     { | 
|         |    340     mSubject = subject; | 
|         |    341     } | 
|         |    342  | 
|         |    343 //---------------------------------------------------------------- | 
|         |    344 // ConvergedMessageImpl::timeStamp | 
|         |    345 // @see header | 
|         |    346 //---------------------------------------------------------------- | 
|         |    347 qint64 ConvergedMessageImpl::timeStamp() const | 
|         |    348     { | 
|         |    349     return mTimeStamp; | 
|         |    350     } | 
|         |    351  | 
|         |    352 //---------------------------------------------------------------- | 
|         |    353 // ConvergedMessageImpl::setTimeStamp | 
|         |    354 // @see header | 
|         |    355 //---------------------------------------------------------------- | 
|         |    356 void ConvergedMessageImpl::setTimeStamp(qint64 timeStamp) | 
|         |    357     { | 
|         |    358     mTimeStamp = timeStamp; | 
|         |    359     } | 
|         |    360  | 
|         |    361 //---------------------------------------------------------------- | 
|         |    362 // ConvergedMessageImpl::setBodyText | 
|         |    363 // @see header | 
|         |    364 //---------------------------------------------------------------- | 
|         |    365 void ConvergedMessageImpl::setBodyText(const QString &bodyText) | 
|         |    366     { | 
|         |    367     mBodyText = bodyText; | 
|         |    368     } | 
|         |    369  | 
|         |    370 //---------------------------------------------------------------- | 
|         |    371 // ConvergedMessageImpl::bodyText | 
|         |    372 // @see header | 
|         |    373 //---------------------------------------------------------------- | 
|         |    374 const QString& ConvergedMessageImpl::bodyText() const | 
|         |    375     { | 
|         |    376     return mBodyText; | 
|         |    377     } | 
|         |    378  | 
|         |    379 //---------------------------------------------------------------- | 
|         |    380 // ConvergedMessageImpl::addToRecipient | 
|         |    381 // @see header | 
|         |    382 //---------------------------------------------------------------- | 
|         |    383 void ConvergedMessageImpl::addToRecipient(ConvergedMessageAddress &recipient) | 
|         |    384     { | 
|         |    385     ConvergedMessageAddress* address = new ConvergedMessageAddress(); | 
|         |    386     address->setAddress(recipient.address()); | 
|         |    387     address->setAlias(recipient.alias()); | 
|         |    388  | 
|         |    389     mToAddresses.append(address); | 
|         |    390     } | 
|         |    391 //---------------------------------------------------------------- | 
|         |    392 // ConvergedMessageImpl::addToRecipients | 
|         |    393 // @see header | 
|         |    394 //---------------------------------------------------------------- | 
|         |    395 void ConvergedMessageImpl::addToRecipients( | 
|         |    396         ConvergedMessageAddressList &recipients) | 
|         |    397     { | 
|         |    398     //recipient address is a To address | 
|         |    399     mToAddresses.append(recipients); | 
|         |    400     } | 
|         |    401 //---------------------------------------------------------------- | 
|         |    402 // ConvergedMessageImpl::addCcRecipient | 
|         |    403 // @see header | 
|         |    404 //---------------------------------------------------------------- | 
|         |    405 void ConvergedMessageImpl::addCcRecipient(ConvergedMessageAddress &recipient) | 
|         |    406     { | 
|         |    407     ConvergedMessageAddress* address = new ConvergedMessageAddress(); | 
|         |    408     address->setAddress(recipient.address()); | 
|         |    409     address->setAlias(recipient.alias()); | 
|         |    410  | 
|         |    411     mCcAddresses.append(address); | 
|         |    412     } | 
|         |    413  | 
|         |    414 //---------------------------------------------------------------- | 
|         |    415 // ConvergedMessageImpl::addCcRecipients | 
|         |    416 // @see header | 
|         |    417 //---------------------------------------------------------------- | 
|         |    418 void ConvergedMessageImpl::addCcRecipients( | 
|         |    419         ConvergedMessageAddressList &recipients) | 
|         |    420     { | 
|         |    421     //recipient address is a Cc address | 
|         |    422     mCcAddresses.append(recipients); | 
|         |    423     } | 
|         |    424 //---------------------------------------------------------------- | 
|         |    425 // ConvergedMessageImpl::addBccRecipient | 
|         |    426 // @see header | 
|         |    427 //---------------------------------------------------------------- | 
|         |    428 void ConvergedMessageImpl::addBccRecipient(ConvergedMessageAddress &recipient) | 
|         |    429     { | 
|         |    430     ConvergedMessageAddress* address = new ConvergedMessageAddress(); | 
|         |    431     address->setAddress(recipient.address()); | 
|         |    432     address->setAlias(recipient.alias()); | 
|         |    433     mBccAddresses.append(address); | 
|         |    434     } | 
|         |    435 //---------------------------------------------------------------- | 
|         |    436 // ConvergedMessageImpl::addBccRecipients | 
|         |    437 // @see header | 
|         |    438 //---------------------------------------------------------------- | 
|         |    439 void ConvergedMessageImpl::addBccRecipients( | 
|         |    440         ConvergedMessageAddressList &recipients) | 
|         |    441     { | 
|         |    442     //recipient address is a Bcc address | 
|         |    443     mBccAddresses.append(recipients); | 
|         |    444     } | 
|         |    445 //---------------------------------------------------------------- | 
|         |    446 // ConvergedMessageImpl::addFromRecipient | 
|         |    447 // @see header | 
|         |    448 //---------------------------------------------------------------- | 
|         |    449 void ConvergedMessageImpl::addFromRecipient( | 
|         |    450         ConvergedMessageAddress &recipient) | 
|         |    451     { | 
|         |    452     mFromAddress->setAddress(recipient.address()); | 
|         |    453     mFromAddress->setAlias(recipient.alias()); | 
|         |    454     } | 
|         |    455  | 
|         |    456 //---------------------------------------------------------------- | 
|         |    457 // ConvergedMessageImpl::toAddressArray | 
|         |    458 // @see header | 
|         |    459 //---------------------------------------------------------------- | 
|         |    460 const ConvergedMessageAddressList ConvergedMessageImpl::toAddressList() const | 
|         |    461     { | 
|         |    462     return mToAddresses; | 
|         |    463     } | 
|         |    464  | 
|         |    465 //---------------------------------------------------------------- | 
|         |    466 // ConvergedMessageImpl::ccAddressArray | 
|         |    467 // @see header | 
|         |    468 //---------------------------------------------------------------- | 
|         |    469 const ConvergedMessageAddressList ConvergedMessageImpl::ccAddressList() const | 
|         |    470     { | 
|         |    471     return mCcAddresses; | 
|         |    472     } | 
|         |    473  | 
|         |    474 //---------------------------------------------------------------- | 
|         |    475 // ConvergedMessageImpl::bccAddressArray | 
|         |    476 // @see header | 
|         |    477 //---------------------------------------------------------------- | 
|         |    478 const ConvergedMessageAddressList ConvergedMessageImpl::bccAddressList() const | 
|         |    479     { | 
|         |    480     return mBccAddresses; | 
|         |    481     } | 
|         |    482  | 
|         |    483 //---------------------------------------------------------------- | 
|         |    484 // ConvergedMessageImpl::fromAddress | 
|         |    485 // @see header | 
|         |    486 //---------------------------------------------------------------- | 
|         |    487 ConvergedMessageAddress* | 
|         |    488 ConvergedMessageImpl::fromAddress() const | 
|         |    489     { | 
|         |    490     return mFromAddress; | 
|         |    491     } | 
|         |    492  | 
|         |    493 //---------------------------------------------------------------- | 
|         |    494 // ConvergedMessageImpl::attachments | 
|         |    495 // @see header | 
|         |    496 //---------------------------------------------------------------- | 
|         |    497 ConvergedMessageAttachmentList ConvergedMessageImpl::attachments() const | 
|         |    498     { | 
|         |    499     return mAttachments; | 
|         |    500     } | 
|         |    501  | 
|         |    502 //---------------------------------------------------------------- | 
|         |    503 // ConvergedMessageImpl::addAttachments | 
|         |    504 // @see header | 
|         |    505 //---------------------------------------------------------------- | 
|         |    506 void ConvergedMessageImpl::addAttachments( | 
|         |    507         ConvergedMessageAttachmentList attachmentList) | 
|         |    508     { | 
|         |    509     mAttachments.append(attachmentList); | 
|         |    510  | 
|         |    511     } | 
|         |    512  | 
|         |    513 //---------------------------------------------------------------- | 
|         |    514 // ConvergedMessageImpl::serialize | 
|         |    515 // @see header | 
|         |    516 //---------------------------------------------------------------- | 
|         |    517 void ConvergedMessageImpl::serialize(QDataStream &stream) const | 
|         |    518     { | 
|         |    519     // put into the stream | 
|         |    520     mId->serialize(stream); | 
|         |    521     stream << mSubject; | 
|         |    522     stream << mBodyText; | 
|         |    523     // to address | 
|         |    524     stream << mToAddresses.count(); | 
|         |    525     for (int a = 0; a < mToAddresses.count(); ++a) | 
|         |    526         { | 
|         |    527         mToAddresses.at(a)->serialize(stream); | 
|         |    528         } | 
|         |    529  | 
|         |    530     // cc address | 
|         |    531     stream << mCcAddresses.count(); | 
|         |    532     for (int a = 0; a < mCcAddresses.count(); ++a) | 
|         |    533         { | 
|         |    534         mCcAddresses.at(a)->serialize(stream); | 
|         |    535         } | 
|         |    536  | 
|         |    537     // bcc address | 
|         |    538     stream << mBccAddresses.count(); | 
|         |    539     for (int a = 0; a < mBccAddresses.count(); ++a) | 
|         |    540         { | 
|         |    541         mBccAddresses.at(a)->serialize(stream); | 
|         |    542         } | 
|         |    543     // from address | 
|         |    544     mFromAddress->serialize(stream); | 
|         |    545  | 
|         |    546     // attachment list | 
|         |    547     stream << mAttachments.count(); | 
|         |    548     for (int a = 0; a < mAttachments.count(); a++) | 
|         |    549         { | 
|         |    550         mAttachments.at(a)->serialize(stream); | 
|         |    551         } | 
|         |    552  | 
|         |    553     //timestamp convert to string and write | 
|         |    554     QString timeStamp = QString::number(mTimeStamp); | 
|         |    555     stream << timeStamp; | 
|         |    556     stream << mProperty; | 
|         |    557     stream << mMessageType; | 
|         |    558     stream << mMessageSubType; | 
|         |    559     stream << mPriority; | 
|         |    560     stream << mLocation; | 
|         |    561     stream << mDirection; | 
|         |    562     stream << mSendingState; | 
|         |    563     } | 
|         |    564  | 
|         |    565 //---------------------------------------------------------------- | 
|         |    566 // ConvergedMessageImpl::deserialize | 
|         |    567 // @see header | 
|         |    568 //---------------------------------------------------------------- | 
|         |    569 void ConvergedMessageImpl::deserialize(QDataStream &stream) | 
|         |    570     { | 
|         |    571     // get from the stream | 
|         |    572     // put into the stream | 
|         |    573     mId->deserialize(stream); | 
|         |    574  | 
|         |    575     stream >> mSubject; | 
|         |    576     stream >> mBodyText; | 
|         |    577  | 
|         |    578     // to address | 
|         |    579     int toAddressesCount = 0; | 
|         |    580     stream >> toAddressesCount; | 
|         |    581     for (int a = 0; a < toAddressesCount; ++a) | 
|         |    582         { | 
|         |    583         ConvergedMessageAddress* address = new ConvergedMessageAddress(); | 
|         |    584         address->deserialize(stream); | 
|         |    585         mToAddresses.append(address); | 
|         |    586         } | 
|         |    587  | 
|         |    588     // cc address | 
|         |    589     int ccAddressesCount = 0; | 
|         |    590     stream >> ccAddressesCount; | 
|         |    591     for (int a = 0; a < ccAddressesCount; ++a) | 
|         |    592         { | 
|         |    593         ConvergedMessageAddress* address = new ConvergedMessageAddress(); | 
|         |    594         address->deserialize(stream); | 
|         |    595         mCcAddresses.append(address); | 
|         |    596         } | 
|         |    597  | 
|         |    598     // bcc address | 
|         |    599     int bccAddressesCount = 0; | 
|         |    600     stream >> bccAddressesCount; | 
|         |    601     for (int a = 0; a < bccAddressesCount; ++a) | 
|         |    602         { | 
|         |    603         ConvergedMessageAddress* address = new ConvergedMessageAddress(); | 
|         |    604         address->deserialize(stream); | 
|         |    605         mBccAddresses.append(address); | 
|         |    606         } | 
|         |    607  | 
|         |    608     // from address	 | 
|         |    609  | 
|         |    610     mFromAddress->deserialize(stream); | 
|         |    611     // attachment list | 
|         |    612     int attachmentsCount = 0; | 
|         |    613     stream >> attachmentsCount; | 
|         |    614     for (int a = 0; a < attachmentsCount; a++) | 
|         |    615         { | 
|         |    616         //create on heap and append to the list | 
|         |    617         ConvergedMessageAttachment *attachment = | 
|         |    618                 new ConvergedMessageAttachment(); | 
|         |    619         attachment->deserialize(stream); | 
|         |    620         mAttachments.append(attachment); | 
|         |    621         } | 
|         |    622  | 
|         |    623     //timestamp | 
|         |    624     QString timeStamp; | 
|         |    625     stream >> timeStamp; | 
|         |    626     mTimeStamp = timeStamp.toUInt(); | 
|         |    627  | 
|         |    628     //others | 
|         |    629     stream >> mProperty; | 
|         |    630     stream >> mMessageType; | 
|         |    631     stream >> mMessageSubType; | 
|         |    632     stream >> mPriority; | 
|         |    633     stream >> mLocation; | 
|         |    634     stream >> mDirection; | 
|         |    635     stream >> mSendingState; | 
|         |    636     } | 
|         |    637  | 
|         |    638 // eof | 
|         |    639  |