libkdenetwork Library API Documentation

kmime_util.h

00001 /* -*- c++ -*- 00002 kmime_util.h 00003 00004 KMime, the KDE internet mail/usenet news message library. 00005 Copyright (c) 2001 the KMime authors. 00006 See file AUTHORS for details 00007 00008 This program is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; either version 2 of the License, or 00011 (at your option) any later version. 00012 You should have received a copy of the GNU General Public License 00013 along with this program; if not, write to the Free Software Foundation, 00014 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US 00015 */ 00016 #ifndef __KMIME_UTIL_H__ 00017 #define __KMIME_UTIL_H__ 00018 00019 #include "qdatetime.h" 00020 #include "qstring.h" 00021 #include "qcstring.h" 00022 #include "qvaluelist.h" 00023 #include "time.h" 00024 00025 typedef QValueList<QCString> QCStringList; 00026 00027 namespace KMime { 00028 00031 extern const char* cachedCharset(const QCString &name); 00032 00035 extern const char* cachedLanguage(const QCString &name); 00036 00038 extern bool isUsAscii(const QString &s); 00039 00040 inline bool isOfSet(const uchar map[16], unsigned char ch) { 00041 Q_ASSERT( ch < 128 ); 00042 return ( map[ ch/8 ] & 0x80 >> ch%8 ); 00043 } 00044 00045 extern const uchar specialsMap[16]; 00046 extern const uchar tSpecialsMap[16]; 00047 extern const uchar aTextMap[16]; 00048 extern const uchar tTextMap[16]; 00049 extern const uchar eTextMap[16]; 00050 00051 inline bool isSpecial(char ch) { 00052 return isOfSet( specialsMap, ch ); 00053 } 00054 inline bool isTSpecial(char ch) { 00055 return isOfSet( tSpecialsMap, ch ); 00056 } 00057 inline bool isAText(char ch) { 00058 return isOfSet( aTextMap, ch ); 00059 } 00060 inline bool isTText(char ch) { 00061 return isOfSet( tTextMap, ch ); 00062 } 00063 inline bool isEText(char ch) { 00064 return isOfSet( eTextMap, ch ); 00065 } 00066 00076 extern QString decodeRFC2047String(const QCString &src, const char **usedCS, 00077 const QCString &defaultCS, bool forceCS); 00078 00089 extern QCString encodeRFC2047String(const QString &src, const char *charset, 00090 bool addressHeader=false, bool allow8bitHeaders=false); 00091 00098 extern QCString uniqueString(); 00099 00106 extern QCString multiPartBoundary(); 00107 00115 extern QCString extractHeader(const QCString &src, const char *name); 00125 extern QCString CRLFtoLF(const QCString &s); 00135 extern QCString CRLFtoLF(const char *s); 00147 extern QCString LFtoCRLF(const QCString &s); 00148 00154 extern void removeQuots(QCString &str); 00160 extern void removeQuots(QString &str); 00167 extern void addQuotes(QCString &str, bool forceQuotes); 00168 00169 00186 class DateFormatter { 00187 public: 00188 enum FormatType { 00189 CTime, //< ctime "Sun Mar 31 02:08:35 2002" 00190 Localized, //< localized "2002-03-31 02:08" 00191 Fancy, //< fancy "Today 02:08:35" 00192 Iso, //< iso "2002-03-31 02:08:35" 00193 Custom //< custom "whatever you like" 00194 }; 00195 00200 DateFormatter(FormatType fType = DateFormatter::Fancy); 00201 00202 ~DateFormatter(); 00203 00207 FormatType getFormat() const; 00211 void setFormat(FormatType t); 00212 00221 QString dateString(time_t otime, const QString& lang = QString::null, 00222 bool shortFormat = true, bool includeSecs=false) const; 00226 QString dateString(const QDateTime& dtime, const QString& lang = QString::null, 00227 bool shortFormat = true, bool includeSecs=false) const; 00228 00229 00239 void setCustomFormat(const QString& format); 00240 QString getCustomFormat() const; 00241 00246 QCString rfc2822(time_t otime) const; 00250 void reset(); 00251 00252 //statics 00261 static QString formatDate( DateFormatter::FormatType t, time_t time, 00262 const QString& data = QString::null, 00263 bool shortFormat = true, bool includeSecs=false); 00264 00273 static QString formatCurrentDate( DateFormatter::FormatType t, 00274 const QString& data = QString::null, 00275 bool shortFormat = true, bool includeSecs=false); 00276 00278 static QCString rfc2822FormatDate( time_t time ); 00279 static bool isDaylight(); 00280 protected: 00286 QString fancy(time_t otime) const ; 00295 QString localized(time_t otime, bool shortFormat = true, bool includeSecs = false, 00296 const QString& localeLanguage=QString::null ) const; 00301 QString cTime(time_t otime) const; 00306 QString isoDate(time_t otime) const; 00307 00314 QString custom(time_t t) const; 00319 QCString zone(time_t otime) const; 00320 00321 time_t qdateToTimeT(const QDateTime& dt) const; 00322 private: 00323 FormatType mFormat; 00324 mutable time_t mCurrentTime; 00325 mutable QDateTime mDate; 00326 QString mCustomFormat; 00327 static int mDaylight; 00328 }; 00329 00330 } // namespace KMime 00331 00332 #endif /* __KMIME_UTIL_H__ */
KDE Logo
This file is part of the documentation for libkdenetwork Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Oct 21 19:46:16 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003