libtdepim

maillistdrag.h
1/*
2 This file is part of libtdepim.
3
4 Copyright (c) 2003 Don Sanders <sanders@kde.org>
5 Copyright (c) 2005 George Staikos <staikos@kde.org.
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details.
16
17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA.
21*/
22#ifndef maillistdrag_h
23#define maillistdrag_h
24
25#include "tqdragobject.h"
26#include "tqvaluelist.h"
27#include "tqglobal.h"
28#include "time.h"
29
30#include <tdemacros.h>
31
45namespace KPIM {
46
47class TDE_EXPORT MailSummary
48{
49public:
50 MailSummary( TQ_UINT32 serialNumber, TQString messageId, TQString subject,
51 TQString from, TQString to, time_t date );
52 MailSummary() {}
53 ~MailSummary() {}
54
55 /*** Set fields for this mail summary ***/
56 void set( TQ_UINT32, TQString, TQString, TQString, TQString, time_t );
57
58 /*** KMail unique identification number ***/
59 TQ_UINT32 serialNumber() const;
60
61 /*** MD5 checksum of message identification string ***/
62 TQString messageId();
63
64 /*** Subject of the message including prefixes ***/
65 TQString subject();
66
67 /*** Simplified from address ***/
68 TQString from();
69
71 TQString to();
72
73 /*** Date the message was sent ***/
74 time_t date();
75
76private:
77 TQ_UINT32 mSerialNumber;
78 TQString mMessageId, mSubject, mFrom, mTo;
79 time_t mDate;
80};
81
82// List of mail summaries
83typedef TQValueList<MailSummary> MailList;
84
85// Object for the drag object to call-back for message fulltext
86class TDE_EXPORT MailTextSource {
87public:
88 MailTextSource() {}
89 virtual ~MailTextSource() {}
90
91 virtual TQCString text(TQ_UINT32 serialNumber) const = 0;
92};
93
94// Drag and drop object for mails
95class TDE_EXPORT MailListDrag : public TQStoredDrag
96{
97public:
98 // Takes ownership of "src" and deletes it when done
99 MailListDrag( MailList, TQWidget * parent = 0, MailTextSource *src = 0 );
100 ~MailListDrag();
101
102 const char *format(int i) const;
103
104 bool provides(const char *mimeType) const;
105
106 TQByteArray encodedData(const char *) const;
107
108 /* Reset the list of mail summaries */
109 void setMailList( MailList );
110
111 /* The format for this drag - "x-kmail-drag/message-list" */
112 static const char* format();
113
114 /* Returns TRUE if the information in e can be decoded into a TQString;
115 otherwsie returns FALSE */
116 static bool canDecode( TQMimeSource* e );
117
118 /* Attempts to decode the dropped information;
119 Returns TRUE if successful; otherwise return false */
120 static bool decode( TQDropEvent* e, MailList& s );
121
122 /* Attempts to decode the serialNumbers of the dropped information;
123 Returns TRUE if successful; otherwise return false */
124 static bool decode( TQDropEvent* e, TQByteArray& a );
125
126 /* Attempts to decode the encoded MailList;
127 Returns TRUE if successful; otherwise return false */
128 static bool decode( TQByteArray& a, MailList& s );
129
130private:
131 MailTextSource *_src;
132};
133
134}
135#endif /*maillistdrag_h*/
TDEPIM classes for drag and drop of mails.