/* This file is part of libtdepim. Copyright (c) 2003 Don Sanders <sanders@kde.org> Copyright (c) 2005 George Staikos <staikos@kde.org. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef maillistdrag_h #define maillistdrag_h #include "tqdragobject.h" #include "tqvaluelist.h" #include "tqglobal.h" #include "time.h" #include <tdepimmacros.h> /** * TDEPIM classes for drag and drop of mails * * // Code example for drag and drop enabled widget * * void SomeWidget::contentsDropEvent(TQDropEvent *e) * { * if (e->provides(MailListDrag::format())) { * MailList mailList; * MailListDrag::decode( e, mailList ); * ... **/ namespace KPIM { class KDE_EXPORT MailSummary { public: MailSummary( TQ_UINT32 serialNumber, TQString messageId, TQString subject, TQString from, TQString to, time_t date ); MailSummary() {} ~MailSummary() {} /*** Set fields for this mail summary ***/ void set( TQ_UINT32, TQString, TQString, TQString, TQString, time_t ); /*** KMail unique identification number ***/ TQ_UINT32 serialNumber() const; /*** MD5 checksum of message identification string ***/ TQString messageId(); /*** Subject of the message including prefixes ***/ TQString subject(); /*** Simplified from address ***/ TQString from(); /** Simplified to address ***/ TQString to(); /*** Date the message was sent ***/ time_t date(); private: TQ_UINT32 mSerialNumber; TQString mMessageId, mSubject, mFrom, mTo; time_t mDate; }; // List of mail summaries typedef TQValueList<MailSummary> MailList; // Object for the drag object to call-back for message fulltext class KDE_EXPORT MailTextSource { public: MailTextSource() {} virtual ~MailTextSource() {} virtual TQCString text(TQ_UINT32 serialNumber) const = 0; }; // Drag and drop object for mails class KDE_EXPORT MailListDrag : public TQStoredDrag { public: // Takes ownership of "src" and deletes it when done MailListDrag( MailList, TQWidget * parent = 0, MailTextSource *src = 0 ); ~MailListDrag(); const char *format(int i) const; bool provides(const char *mimeType) const; TQByteArray 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 TQString; otherwsie returns FALSE */ static bool canDecode( TQMimeSource* e ); /* Attempts to decode the dropped information; Returns TRUE if successful; otherwise return false */ static bool decode( TQDropEvent* e, MailList& s ); /* Attempts to decode the serialNumbers of the dropped information; Returns TRUE if successful; otherwise return false */ static bool decode( TQDropEvent* e, TQByteArray& a ); /* Attempts to decode the encoded MailList; Returns TRUE if successful; otherwise return false */ static bool decode( TQByteArray& a, MailList& s ); private: MailTextSource *_src; }; } #endif /*maillistdrag_h*/