00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#include "maillistdrag.h"
00023
#include "qdatastream.h"
00024
#include "qbuffer.h"
00025
00026
using namespace KPIM;
00027
00028 MailSummary::MailSummary( Q_UINT32 serialNumber,
QString messageId,
00029
QString subject,
QString from,
QString to,
00030 time_t date )
00031 : mSerialNumber( serialNumber ), mMessageId( messageId ),
00032 mSubject( subject ), mFrom( from ), mTo( to ), mDate( date )
00033 {}
00034
00035 Q_UINT32 MailSummary::serialNumber()
00036 {
00037
return mSerialNumber;
00038 }
00039
00040
QString MailSummary::messageId()
00041 {
00042
return mMessageId;
00043 }
00044
00045
QString MailSummary::subject()
00046 {
00047
return mSubject;
00048 }
00049
00050
QString MailSummary::from()
00051 {
00052
return mFrom;
00053 }
00054
00055
QString MailSummary::to()
00056 {
00057
return mTo;
00058 }
00059
00060 time_t MailSummary::date()
00061 {
00062
return mDate;
00063 }
00064
00065
void MailSummary::set( Q_UINT32 serialNumber,
QString messageId,
00066
QString subject,
QString from,
QString to, time_t date )
00067 {
00068 mSerialNumber = serialNumber;
00069 mMessageId = messageId;
00070 mSubject = subject;
00071 mFrom = from;
00072 mTo = to;
00073 mDate = date;
00074 }
00075
00076 MailListDrag::MailListDrag(
MailList mailList,
QWidget * parent )
00077 :
QStoredDrag( MailListDrag::format(), parent )
00078 {
00079 setMailList( mailList );
00080 }
00081
00082
const char* MailListDrag::format()
00083 {
00084
return "x-kmail-drag/message-list";
00085 }
00086
00087
bool MailListDrag::canDecode(
QMimeSource *e )
00088 {
00089
return e->provides( MailListDrag::format() );
00090 }
00091
00092
00093
QDataStream& operator<< (
QDataStream &s, MailSummary &d )
00094 {
00095 s << d.serialNumber();
00096 s << d.messageId();
00097 s << d.subject();
00098 s << d.from();
00099 s << d.to();
00100 s << d.date();
00101
return s;
00102 }
00103
00104
QDataStream& operator>> (
QDataStream &s, MailSummary &d )
00105 {
00106 Q_UINT32 serialNumber;
00107
QString messageId, subject, from, to;
00108 time_t date;
00109 s >> serialNumber;
00110 s >> messageId;
00111 s >> subject;
00112 s >> from;
00113 s >> to;
00114 s >> date;
00115 d.set( serialNumber, messageId, subject, from, to, date );
00116
return s;
00117 }
00118
00119
QDataStream& operator<< (
QDataStream &s,
MailList &mailList )
00120 {
00121 MailList::iterator it;
00122
for (it = mailList.begin(); it != mailList.end(); ++it) {
00123 MailSummary mailDrag = *it;
00124 s << mailDrag;
00125 }
00126
return s;
00127 }
00128
00129
QDataStream& operator>> (
QDataStream &s,
MailList &mailList )
00130 {
00131 mailList.clear();
00132 MailSummary mailDrag;
00133
while (!s.atEnd()) {
00134 s >> mailDrag;
00135 mailList.append( mailDrag );
00136 }
00137
return s;
00138 }
00139
00140
bool MailListDrag::decode(
QDropEvent* e,
MailList& mailList )
00141 {
00142
QByteArray payload = e->encodedData( MailListDrag::format() );
00143
QDataStream buffer( payload, IO_ReadOnly );
00144
if ( payload.size() ) {
00145 e->accept();
00146 buffer >> mailList;
00147
return TRUE;
00148 }
00149
return FALSE;
00150 }
00151
00152
bool MailListDrag::decode(
QByteArray& payload,
MailList& mailList )
00153 {
00154
QDataStream stream( payload, IO_ReadOnly );
00155
if ( payload.size() ) {
00156 stream >> mailList;
00157
return TRUE;
00158 }
00159
return FALSE;
00160 }
00161
00162
bool MailListDrag::decode(
QDropEvent* e,
QByteArray &a )
00163 {
00164
MailList mailList;
00165
if (decode( e, mailList )) {
00166 MailList::iterator it;
00167
QBuffer buffer( a );
00168 buffer.open( IO_WriteOnly );
00169
QDataStream stream( &buffer );
00170
for (it = mailList.begin(); it != mailList.end(); ++it) {
00171 MailSummary mailDrag = *it;
00172 stream << mailDrag.serialNumber();
00173 }
00174 buffer.close();
00175
return TRUE;
00176 }
00177
return FALSE;
00178 }
00179
00180
void MailListDrag::setMailList(
MailList mailList )
00181 {
00182
QByteArray array;
00183
QBuffer buffer( array );
00184 buffer.open( IO_WriteOnly);
00185
QDataStream stream( array, IO_WriteOnly );
00186 stream << mailList;
00187 buffer.close();
00188 setEncodedData( array );
00189 }