diff options
Diffstat (limited to 'libkdepim/qutf7codec.h')
-rw-r--r-- | libkdepim/qutf7codec.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/libkdepim/qutf7codec.h b/libkdepim/qutf7codec.h new file mode 100644 index 000000000..b3380b1f0 --- /dev/null +++ b/libkdepim/qutf7codec.h @@ -0,0 +1,98 @@ +/* + qutf7codec.h + + A QTextCodec for UTF-7 (rfc2152). + Copyright (c) 2001 Marc Mutz <mutz@kde.org> + See file COPYING for details + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2.0, + as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, US + + As a special exception, permission is granted to use this plugin + with any version of Qt by TrollTech AS, Norway. In this case, the + use of this plugin doesn't cause the resulting executable to be + covered by the GNU General Public License. + This exception does not however invalidate any other reasons why the + executable file might be covered by the GNU General Public License. +*/ + +#ifndef QUTF7CODEC_H +#define QUTF7CODEC_H + +#ifndef QT_H +#include "qtextcodec.h" +#endif + +#include <kdepimmacros.h> + +#ifndef QT_NO_TEXTCODEC + +/** @short A QTextCodec for the UTF-7 transformation of Unicode. + + This is a QTextCodec for the UTF-7 transformation of Unicode, + described in RFC2152. + + Use it as you would use any other QTextCodec. Only if you use the + encoder directly (via makeEncoder), you should bear in mind + that if your application needs the encoder to return to ASCII mode + (like it's the case for RFC2047 mail header encoded words), you + have to tell the encoder by requesting the encoding of a @em null + QString. + + @author Marc Mutz <mutz@kde.org> */ + +class KDE_EXPORT QUtf7Codec : public QTextCodec { + bool encOpt, encLwsp; +public: + QUtf7Codec() : QTextCodec() {} + + int mibEnum() const; + const char* name() const; + const char* mimeName() const; + + QTextDecoder* makeDecoder() const; + QTextEncoder* makeEncoder() const; + + bool canEncode( QChar ) const; + bool canEncode( const QString& ) const; + + int heuristicContentMatch( const char* chars, int len ) const; +}; + +/** This is a version of @ref QUtf7Codec, which should only be used in + MIME transfer. It differs from @ref QUtf7Codec only in that the + encoder escapes additional characters (the RFC2152 "optional + direct set"), which might not be allowed in RFC822/RFC2047 header + fields. + + You should only use this codec for @em encoding, since it's output + is pure UTF-7 and can equally well be decoded by @ref QUtf7Codec's + decoder. + + To distinguish between the two variants, this class has MIB enum + -1012 (the nagative of UTF-7) and the somewhat awkward name + "X-QT-UTF-7-STRICT". The MIME preferred charset name is still + "UTF-7", though. + + @short A variant of @ref QUtf7Codec, which protectes certain + characters in MIME transport + @author Marc Mutz <mutz@kde.org> */ +class KDE_EXPORT QStrictUtf7Codec : public QUtf7Codec { +public: + QStrictUtf7Codec() : QUtf7Codec() {} + + const char* name() const; + int mibEnum() const; + + QTextEncoder* makeEncoder() const; +}; + +#endif // QT_NO_TEXTCODEC + +#endif // QUTF7CODEC_H |