kmail Library API Documentation

kmmsgbase.h

00001 /* Virtual base class for messages and message infos 00002 * Author: Stefan Taferner <taferner@kde.org> 00003 * This code is under GPL. 00004 */ 00005 #ifndef kmmsgbase_h 00006 #define kmmsgbase_h 00007 00008 // for large file support flags 00009 #include <config.h> 00010 #include <sys/types.h> 00011 #include <qstring.h> 00012 #include <time.h> 00013 00014 class QCString; 00015 class QStringList; 00016 class QTextCodec; 00017 class KMFolder; 00018 class KMFolderIndex; 00019 00021 enum MsgStatus 00022 { 00023 KMMsgStatusUnknown = 0x00000000, 00024 KMMsgStatusNew = 0x00000001, 00025 KMMsgStatusUnread = 0x00000002, 00026 KMMsgStatusRead = 0x00000004, 00027 KMMsgStatusOld = 0x00000008, 00028 KMMsgStatusDeleted = 0x00000010, 00029 KMMsgStatusReplied = 0x00000020, 00030 KMMsgStatusForwarded = 0x00000040, 00031 KMMsgStatusQueued = 0x00000080, 00032 KMMsgStatusSent = 0x00000100, 00033 KMMsgStatusFlag = 0x00000200, // important 00034 KMMsgStatusWatched = 0x00000400, 00035 KMMsgStatusIgnored = 0x00000800, 00036 KMMsgStatusTodo = 0x00001000, 00037 KMMsgStatusSpam = 0x00002000, 00038 KMMsgStatusHam = 0x00004000 00039 }; 00040 00041 typedef uint KMMsgStatus; 00042 00046 typedef enum 00047 { 00048 KMLegacyMsgStatusUnknown=' ', 00049 KMLegacyMsgStatusNew='N', 00050 KMLegacyMsgStatusUnread='U', 00051 KMLegacyMsgStatusRead='R', 00052 KMLegacyMsgStatusOld='O', 00053 KMLegacyMsgStatusDeleted='D', 00054 KMLegacyMsgStatusReplied='A', 00055 KMLegacyMsgStatusForwarded='F', 00056 KMLegacyMsgStatusQueued='Q', 00057 KMLegacyMsgStatusSent='S', 00058 KMLegacyMsgStatusFlag='G' 00059 } KMLegacyMsgStatus; 00060 00061 00062 00064 typedef enum 00065 { 00066 KMMsgEncryptionStateUnknown=' ', 00067 KMMsgNotEncrypted='N', 00068 KMMsgPartiallyEncrypted='P', 00069 KMMsgFullyEncrypted='F', 00070 KMMsgEncryptionProblematic='X' 00071 } KMMsgEncryptionState; 00072 00074 typedef enum 00075 { 00076 KMMsgSignatureStateUnknown=' ', 00077 KMMsgNotSigned='N', 00078 KMMsgPartiallySigned='P', 00079 KMMsgFullySigned='F', 00080 KMMsgSignatureProblematic='X' 00081 } KMMsgSignatureState; 00082 00084 typedef enum 00085 { 00086 KMMsgMDNStateUnknown = ' ', 00087 KMMsgMDNNone = 'N', 00088 KMMsgMDNIgnore = 'I', 00089 KMMsgMDNDisplayed = 'R', 00090 KMMsgMDNDeleted = 'D', 00091 KMMsgMDNDispatched = 'F', 00092 KMMsgMDNProcessed = 'P', 00093 KMMsgMDNDenied = 'X', 00094 KMMsgMDNFailed = 'E' 00095 } KMMsgMDNSentState; 00096 00098 typedef enum 00099 { 00100 KMMsgDnDActionMOVE=0, 00101 KMMsgDnDActionCOPY=1, 00102 KMMsgDnDActionASK=2 00103 } KMMsgDnDAction; 00104 00105 00106 00107 class KMMsgBase 00108 { 00109 public: 00110 KMMsgBase(KMFolderIndex* p=0); 00111 virtual ~KMMsgBase(); 00112 00114 KMFolderIndex* parent(void) const { return mParent; } 00115 00117 void setParent(KMFolderIndex* p) { mParent=p; } 00118 00120 static QCString statusToStr(const KMMsgStatus status); 00121 00123 QString statusToSortRank(); 00124 00126 virtual bool isMessage(void) const; 00127 00129 virtual bool isUnread(void) const; 00130 00132 virtual bool isNew(void) const; 00133 00135 virtual bool isOfUnknownStatus(void) const; 00136 00138 virtual bool isOld(void) const; 00139 00141 virtual bool isRead(void) const; 00142 00144 virtual bool isDeleted(void) const; 00145 00147 virtual bool isReplied(void) const; 00148 00150 virtual bool isForwarded(void) const; 00151 00153 virtual bool isQueued(void) const; 00154 00156 virtual bool isSent(void) const; 00157 00159 virtual bool isFlag(void) const; 00160 00162 virtual bool isWatched(void) const; 00163 00165 virtual bool isIgnored(void) const; 00166 00168 virtual bool isSpam(void) const; 00169 00171 virtual bool isHam(void) const; 00172 00173 00175 virtual KMMsgStatus status(void) const = 0; 00176 00179 virtual void setStatus(const KMMsgStatus status, int idx = -1); 00180 virtual void toggleStatus(const KMMsgStatus status, int idx = -1); 00181 virtual void setStatus(const char* statusField, const char* xstatusField=0); 00182 00184 virtual KMMsgEncryptionState encryptionState() const = 0; 00185 00187 virtual KMMsgSignatureState signatureState() const = 0; 00188 00190 virtual KMMsgMDNSentState mdnSentState() const = 0; 00191 00193 virtual void setMDNSentState( KMMsgMDNSentState status, int idx=-1 ); 00194 00198 virtual void setEncryptionState(const KMMsgEncryptionState, int idx = -1); 00199 00203 virtual void setSignatureState(const KMMsgSignatureState, int idx = -1); 00204 00208 virtual void setEncryptionStateChar( QChar status, int idx = -1 ); 00209 00213 virtual void setSignatureStateChar( QChar status, int idx = -1 ); 00214 00216 virtual QString subject(void) const = 0; 00217 virtual QString fromStrip(void) const = 0; 00218 virtual QString toStrip(void) const = 0; 00219 virtual QString replyToIdMD5(void) const = 0; 00220 virtual QString msgIdMD5(void) const = 0; 00221 virtual QString replyToAuxIdMD5() const = 0; 00222 virtual QString strippedSubjectMD5() const = 0; 00223 virtual bool subjectIsPrefixed() const = 0; 00224 virtual time_t date(void) const = 0; 00225 virtual QString dateStr(void) const; 00226 virtual QString xmark(void) const = 0; 00227 00229 virtual void setDate(const QCString &aStrDate); 00230 virtual void setDate(time_t aUnixTime) = 0; 00231 00233 virtual bool dirty(void) const { return mDirty; } 00234 00236 void setDirty(bool b) { mDirty = b; } 00237 00239 virtual void setSubject(const QString&) = 0; 00240 virtual void setXMark(const QString&) = 0; 00241 00243 virtual void initStrippedSubjectMD5() = 0; 00244 00246 const uchar *asIndexString(int &len) const; 00247 00249 virtual off_t folderOffset(void) const = 0; 00250 virtual void setFolderOffset(off_t offs) = 0; 00251 00253 virtual QString fileName(void) const = 0; 00254 virtual void setFileName(const QString& filename) = 0; 00255 00257 virtual size_t msgSize(void) const = 0; 00258 virtual void setMsgSize(size_t sz) = 0; 00259 00261 virtual void setIndexOffset(off_t off) { mIndexOffset = off; } 00262 virtual off_t indexOffset() const { return mIndexOffset; } 00263 00265 virtual void setIndexLength(short len) { mIndexLength = len; } 00266 virtual short indexLength() const { return mIndexLength; } 00267 00272 static QString skipKeyword(const QString& str, QChar sepChar=':', 00273 bool* keywordFound=0); 00274 00277 static const QTextCodec* codecForName(const QCString& _str); 00278 00282 static QCString toUsAscii(const QString& _str, bool *ok=0); 00283 00285 static QStringList supportedEncodings(bool usAscii); 00286 00288 void assign(const KMMsgBase* other); 00289 00291 KMMsgBase& operator=(const KMMsgBase& other); 00292 00294 KMMsgBase( const KMMsgBase& other ); 00295 00297 static QCString encodeRFC2047Quoted(const QCString& aStr, bool base64); 00298 00301 static QString decodeRFC2047String(const QCString& aStr); 00302 00305 static QCString encodeRFC2047String(const QString& aStr, 00306 const QCString& charset); 00307 00310 static QCString encodeRFC2231String(const QString& aStr, 00311 const QCString& charset); 00312 00314 static QString decodeRFC2231String(const QCString& aStr); 00315 00319 static QString base64EncodedMD5( const QString & aStr, bool utf8=false ); 00320 static QString base64EncodedMD5( const QCString & aStr ); 00321 static QString base64EncodedMD5( const char * aStr, int len=-1 ); 00322 00328 static QCString autoDetectCharset(const QCString &encoding, const QStringList &encodingList, const QString &text); 00329 00331 virtual unsigned long getMsgSerNum() const; 00332 00334 virtual bool enableUndo() { return mEnableUndo; } 00335 virtual void setEnableUndo( bool enable ) { mEnableUndo = enable; } 00336 00339 bool isComplete(); 00341 void setComplete(bool value); 00342 00344 bool readyToShow(); 00346 void setReadyToShow(bool); 00347 00349 bool transferInProgress(); 00351 void setTransferInProgress(bool value, bool force = false); 00352 00353 protected: 00354 KMFolderIndex* mParent; 00355 bool mDirty; 00356 off_t mIndexOffset; 00357 short mIndexLength; 00358 bool mEnableUndo; 00359 mutable KMMsgStatus mStatus; 00360 // This is kept to provide an upgrade path from the the old single status 00361 // to the new multiple status scheme. 00362 mutable KMLegacyMsgStatus mLegacyStatus; 00363 00364 public: 00365 enum MsgPartType 00366 { 00367 MsgNoPart = 0, 00368 //unicode strings 00369 MsgFromPart = 1, 00370 MsgSubjectPart = 2, 00371 MsgToPart = 3, 00372 MsgReplyToIdMD5Part = 4, 00373 MsgIdMD5Part = 5, 00374 MsgXMarkPart = 6, 00375 //unsigned long 00376 MsgOffsetPart = 7, 00377 MsgLegacyStatusPart = 8, 00378 MsgSizePart = 9, 00379 MsgDatePart = 10, 00380 MsgFilePart = 11, 00381 MsgCryptoStatePart = 12, 00382 MsgMDNSentPart = 13, 00383 //another two unicode strings 00384 MsgReplyToAuxIdMD5Part = 14, 00385 MsgStrippedSubjectMD5Part = 15, 00386 // and another unsigned long 00387 MsgStatusPart = 16 00388 }; 00390 off_t getLongPart(MsgPartType) const; 00392 QString getStringPart(MsgPartType) const; 00394 bool syncIndexString() const; 00395 }; 00396 00397 #endif /*kmmsgbase_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jul 28 23:58:03 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003