You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/libkdepim/maillistdrag.h

136 lines
3.8 KiB

/*
This file is part of libkdepim.
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 <kdepimmacros.h>
/**
* KDEPIM 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 * tqparent = 0, MailTextSource *src = 0 );
~MailListDrag();
const char *format(int i) const;
bool provides(const char *mimeType) const;
TQByteArray tqencodedData(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*/