00001 #ifndef MAILTABLE_H
00002 #define MAILTABLE_H
00003
00004 #include <qdatetime.h>
00005
00006 #include "listviewplus.h"
00007 #include "imapresponse.h"
00008 #include "folderwidget.h"
00009 #include "imaphandler.h"
00010
00011 class MailPart
00012 {
00013 public:
00014 void setMimeType(QString mimeType) { _mimeType = mimeType; }
00015 void setFileName(QString fileName) { _fileName = fileName; }
00016 void setDescription(QString description) { _description = description; }
00017 void setData(QString data) { _data = data; }
00018
00019 QString mimeType() { return _mimeType; }
00020 QString fileName() { return _fileName; }
00021 QString description() { return _description; }
00022 QString data() { return _data; }
00023
00024 private:
00025 QString _mimeType, _fileName, _description, _data;
00026
00027 };
00028
00029 class Mail
00030 {
00031 public:
00032 enum ReadState { New, Unread, Old };
00033
00034 void setFrom(QString from) { _from = from; }
00035 void setTo(QString to) { _to = to; }
00036 void setSubject(QString subject) { _subject = subject; }
00037 void setDate(QDate date) { _date = date; }
00038 void setBody(QString body) { _body = body; }
00039 void setReadState(ReadState readState) { _readState = readState; }
00040 void setMailParts(QValueList<MailPart> parts) { _parts = parts; }
00041 void addMailParts(MailPart part) { _parts.append(part); }
00042
00043 QString from() { return _from; }
00044 QString to() { return _to; }
00045 QString subject() { return _subject; }
00046 QDate date() { return _date; }
00047 QString body() { return _body; }
00048 ReadState readState() { return _readState; }
00049 QValueList<MailPart> mailParts() { return _parts; }
00050
00051 private:
00052 QString _from, _to, _subject, _body;
00053 QDate _date;
00054 QValueList<MailPart> _parts;
00055 ReadState _readState;
00056
00057 };
00058
00059 class MailTableItem : public QListViewItem
00060 {
00061 public:
00062 MailTableItem(QListView *parent, IMAPResponseFETCH fetch);
00063
00064 IMAPResponseFETCH fetch() { return _fetch; }
00065
00066 protected:
00067 void paintCell(QPainter *painter, const QColorGroup &cg, int col, int width, int align);
00068
00069 private:
00070 IMAPResponseFETCH _fetch;
00071 bool _draft, _new, _unseen;
00072
00073 };
00074
00075 class MailTable : public ListViewPlus
00076 {
00077 Q_OBJECT
00078
00079 public:
00080 MailTable(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
00081
00082 void addMail(Mail &mail);
00083 void setHeaders(QValueList<IMAPResponseFETCH> response);
00084
00085 public slots:
00086 void stop() { _stopped = true; }
00087 void setFolder(Folder folder);
00088
00089 signals:
00090 void totalSteps(int steps);
00091 void progress(int progress);
00092 void resetProgress();
00093 void mailClicked(IMAPResponseFETCH mail, IMAPHandler *handler);
00094 void status(const QString &text);
00095 void stopEnabled(bool stop);
00096
00097 protected:
00098 static const int MENU_COPY = 0;
00099 static const int MENU_MARK_READ = 0;
00100 static const int MENU_MARK_UNREAD = 1;
00101 static const int MENU_MARK_MARKED = 2;
00102 static const int MENU_MARK_UNMARKED = 3;
00103 static const int MENU_MARK = 1;
00104 static const int MENU_DELETE = 2;
00105
00106 protected slots:
00107 void itemClicked(QListViewItem *);
00108
00109 void slotIMAPSelect(IMAPResponse &response);
00110 void slotIMAPFetch(IMAPResponse &response);
00111
00112 private:
00113 QWidget *_parent;
00114 IMAPHandler *_handler;
00115 int _downloadSteps, _lastStep, _currentProgress;
00116 bool _stopped;
00117
00118 };
00119
00120 #endif
00121