/* This file is part of libkdepim. Copyright (c) 2003 Don Sanders Copyright (c) 2005 George Staikos /** * KDEPIM classes for drag and drop of mails * * // Code example for drag and drop enabled widget * * void SomeWidget::contentsDropEvent(QDropEvent *e) * { * if (e->provides(MailListDrag::format())) { * MailList mailList; * MailListDrag::decode( e, mailList ); * ... **/ namespace KPIM { class KDE_EXPORT MailSummary { public: MailSummary( Q_UINT32 serialNumber, QString messageId, QString subject, QString from, QString to, time_t date ); MailSummary() {} ~MailSummary() {} /*** Set fields for this mail summary ***/ void set( Q_UINT32, QString, QString, QString, QString, time_t ); /*** KMail unique identification number ***/ Q_UINT32 serialNumber() const; /*** MD5 checksum of message identification string ***/ QString messageId(); /*** Subject of the message including prefixes ***/ QString subject(); /*** Simplified from address ***/ QString from(); /** Simplified to address ***/ QString to(); /*** Date the message was sent ***/ time_t date(); private: Q_UINT32 mSerialNumber; QString mMessageId, mSubject, mFrom, mTo; time_t mDate; }; // List of mail summaries typedef QValueList MailList; // Object for the drag object to call-back for message fulltext class KDE_EXPORT MailTextSource { public: MailTextSource() {} virtual ~MailTextSource() {} virtual QCString text(Q_UINT32 serialNumber) const = 0; }; // Drag and drop object for mails class KDE_EXPORT MailListDrag : public QStoredDrag { public: // Takes ownership of "src" and deletes it when done MailListDrag( MailList, QWidget * parent = 0, MailTextSource *src = 0 ); ~MailListDrag(); const char *format(int i) const; bool provides(const char *mimeType) const; QByteArray encodedData(const char *) const; /* Reset the list of mail summaries */ void setMailList( MailList ); /* The format for this drag - "x-kmail-drag/message-list" */ static const char* format(); /* Returns TRUE if the information in e can be decoded into a QString; otherwsie returns FALSE */ static bool canDecode( QMimeSource* e ); /* Attempts to decode the dropped information; Returns TRUE if successful; otherwise return false */ static bool decode( QDropEvent* e, MailList& s ); /* Attempts to decode the serialNumbers of the dropped information; Returns TRUE if successful; otherwise return false */ static bool decode( QDropEvent* e, QByteArray& a ); /* Attempts to decode the encoded MailList; Returns TRUE if successful; otherwise return false */ static bool decode( QByteArray& a, MailList& s ); private: MailTextSource *_src; }; } #endif /*maillistdrag_h*/