#ifndef MailSubject_h #define MailSubject_h class TQTextCodec; class KMailDrop; #include "mailid.h" /** * A KornMailSubject instance represents a single mail. It stores * its id, sender, subject, header, size and date and possibly its * mail body */ class KornMailSubject { KornMailId * _id; KMailDrop * _drop; TQString _subject; TQString _sender; TQString _header; int _size; int _date; bool _fullMessage; public: /** * KornMailSubject default constructor */ KornMailSubject(); /** * KornMailSubject constructor * @param id id of the mail. The KornMailId instance should * not be touched or deleted afterwards. It is destroyed by * KornMailSubject's destructor. * @param drop The KMailDrop. */ KornMailSubject(KornMailId * id, KMailDrop * drop); /** * KornMailSubject copy constructor. All data of the source * KornMailSubject instance are cloned. * @param src KornMailSubject to copy from */ KornMailSubject(const KornMailSubject & src); /** * replaces the contents of this by the contents of another * KornMailSubject instance. All data of the source * KornMailSubject instance are cloned. * @param src KornMailSubject to copy from */ KornMailSubject & operator= (const KornMailSubject & src); /** * KornMailSubject destructor */ virtual ~KornMailSubject(); /** * Return the mail id. * @return the mail id. */ const KornMailId * getId() const {return _id;} /** * Set the mails subject. * @param subject the mails subject. */ void setSubject(const TQString & subject) {_subject = subject;} /** * Return the subject. * @return the subject. */ const TQString & getSubject() const {return _subject;} /** * Set the mails sender. * @param sender the mails sender. */ void setSender(const TQString & sender) {_sender = sender;} /** * Return the sender. * @return the sender. */ const TQString & getSender() const {return _sender;} /** * Set the mails header and (if possible) body. * @param header the mails header with or without body (see fullMessage parameter). * @param fullMessage true, if header contains the message body as well, false otherwise. */ void setHeader(const TQString & header, bool fullMessage) {_header = header; _fullMessage = fullMessage;} /** * Return the header or the full message (if isHeaderFullMessage() is true). * @return the header or the full message. */ const TQString & getHeader() const {return _header;} /** * Return true, if the header contains the header and the full message. * Return false if the header just contains the header. * @return see above. */ bool isHeaderFullMessage() const {return _fullMessage;} /** * Set the size of the full mail. * @param the mails full size. */ void setSize(int size) {_size = size;} /** * Return the size of the full mail. * @return the size of the full mail. */ int getSize() const {return _size;} /** * Set the mails date in seconds since 1970-01-01 00:00:00. * @param date the mails date. */ void setDate(int date) {_date = date;} /** * Return the mails date in seconds since 1970-01-01 00:00:00. * @return the mails date. */ int getDate() const {return _date;} /** * Return a string representation of this (for debugging purposes only) * @return a string representation */ TQString toString() const; /** * Sets the KMailDrop field. * @param drop The KMailDrop-object */ void setMailDrop( KMailDrop* drop ) { _drop = drop; } /** * Returns the KMailDrop instance of the Maildrop which owns the subject */ KMailDrop* getMailDrop() const { return _drop; } /** * decodes headers using decodeRFC2047String */ void decodeHeaders(); private: /** * Decode a string based on RFC2047 */ TQString decodeRFC2047String(const TQCString& aStr); /** * Unfolding a string (basically changing tabs to spaces */ TQCString unfold( const TQCString & header ); /** * Returns true if the parameter is a blank (or tab) * * Note from KMail's code, where this function is taken from: * don't rely on isblank(), which is a GNU extension in * . But if someone wants to write a configure test for * isblank(), we can then rename this function to isblank and #ifdef * it's definition... */ inline bool isBlank( char ch ) { return ch == ' ' || ch == '\t' ; } /** * ?? */ const TQTextCodec* codecForName(const TQCString& _str); }; #endif