libkmime
kmime_util.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __KMIME_UTIL_H__
00017 #define __KMIME_UTIL_H__
00018
00019 #include "tqdatetime.h"
00020 #include "tqstring.h"
00021 #include "tqcstring.h"
00022 #include "tqvaluelist.h"
00023 #include "time.h"
00024 #include <tdepimmacros.h>
00025
00026 typedef TQValueList<TQCString> QCStringList;
00027
00028 namespace KMime {
00029
00032 extern const char* cachedCharset(const TQCString &name) KDE_EXPORT;
00033
00036 extern const char* cachedLanguage(const TQCString &name) KDE_EXPORT;
00037
00039 extern bool isUsAscii(const TQString &s) KDE_EXPORT;
00040
00041 inline bool isOfSet(const uchar map[16], unsigned char ch) {
00042 Q_ASSERT( ch < 128 );
00043 return ( map[ ch/8 ] & 0x80 >> ch%8 );
00044 }
00045
00046 extern const uchar specialsMap[16];
00047 extern const uchar tSpecialsMap[16];
00048 extern const uchar aTextMap[16];
00049 extern const uchar tTextMap[16];
00050 extern const uchar eTextMap[16];
00051
00052 inline bool isSpecial(char ch) {
00053 return isOfSet( specialsMap, ch );
00054 }
00055 inline bool isTSpecial(char ch) {
00056 return isOfSet( tSpecialsMap, ch );
00057 }
00058 inline bool isAText(char ch) {
00059 return isOfSet( aTextMap, ch );
00060 }
00061 inline bool isTText(char ch) {
00062 return isOfSet( tTextMap, ch );
00063 }
00064 inline bool isEText(char ch) {
00065 return isOfSet( eTextMap, ch );
00066 }
00067
00077 extern TQString decodeRFC2047String(const TQCString &src, const char **usedCS,
00078 const TQCString &defaultCS, bool forceCS) KDE_EXPORT;
00079
00085 extern TQString decodeRFC2047String(const TQCString &src) KDE_EXPORT;
00086
00097 extern TQCString encodeRFC2047String(const TQString &src, const char *charset,
00098 bool addressHeader=false, bool allow8bitHeaders=false) KDE_EXPORT;
00099
00106 extern TQCString uniqueString() KDE_EXPORT;
00107
00114 extern TQCString multiPartBoundary() KDE_EXPORT;
00115
00123 extern TQCString extractHeader(const TQCString &src, const char *name) KDE_EXPORT;
00133 extern TQCString CRLFtoLF(const TQCString &s) KDE_EXPORT;
00143 extern TQCString CRLFtoLF(const char *s) KDE_EXPORT;
00155 extern TQCString LFtoCRLF(const TQCString &s) KDE_EXPORT;
00156
00162 KDE_EXPORT extern void removeQuots(TQCString &str);
00168 KDE_EXPORT extern void removeQuots(TQString &str);
00175 KDE_EXPORT extern void addQuotes(TQCString &str, bool forceQuotes);
00176
00177
00194 class KDE_EXPORT DateFormatter {
00195 public:
00196 enum FormatType {
00197 CTime,
00198 Localized,
00199 Fancy,
00200 Iso,
00201 Custom
00202 };
00203
00208 DateFormatter(FormatType fType = DateFormatter::Fancy);
00209
00210 ~DateFormatter();
00211
00215 FormatType getFormat() const;
00219 void setFormat(FormatType t);
00220
00229 TQString dateString(time_t otime, const TQString& lang = TQString(),
00230 bool shortFormat = true, bool includeSecs=false) const;
00234 TQString dateString(const TQDateTime& dtime, const TQString& lang = TQString(),
00235 bool shortFormat = true, bool includeSecs=false) const;
00236
00237
00247 void setCustomFormat(const TQString& format);
00248 TQString getCustomFormat() const;
00249
00254 TQCString rfc2822(time_t otime) const;
00258 void reset();
00259
00260
00269 static TQString formatDate( DateFormatter::FormatType t, time_t time,
00270 const TQString& data = TQString(),
00271 bool shortFormat = true, bool includeSecs=false);
00272
00281 static TQString formatCurrentDate( DateFormatter::FormatType t,
00282 const TQString& data = TQString(),
00283 bool shortFormat = true, bool includeSecs=false);
00284
00286 static TQCString rfc2822FormatDate( time_t time );
00287 static bool isDaylight();
00288 protected:
00294 TQString fancy(time_t otime) const ;
00303 TQString localized(time_t otime, bool shortFormat = true, bool includeSecs = false,
00304 const TQString& localeLanguage=TQString() ) const;
00309 TQString cTime(time_t otime) const;
00314 TQString isoDate(time_t otime) const;
00315
00322 TQString custom(time_t t) const;
00327 TQCString zone(time_t otime) const;
00328
00329 time_t qdateToTimeT(const TQDateTime& dt) const;
00330 private:
00331 FormatType mFormat;
00332 mutable time_t mCurrentTime;
00333 mutable TQDateTime mDate;
00334 TQString mCustomFormat;
00335 static int mDaylight;
00336 };
00337
00338 }
00339
00340 #endif
|