SVN_SILENT made messages (.desktop file)
[trojita.git] / src / Imap / Encoders.h
blob366da76c53f509d0b2e182a51806b40a8e9f1548
1 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
3 This file is part of the Trojita Qt IMAP e-mail client,
4 http://trojita.flaska.net/
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2 of
9 the License or (at your option) version 3 or any later version
10 accepted by the membership of KDE e.V. (or its successor approved
11 by the membership of KDE e.V.), which shall act as a proxy
12 defined in Section 14 of version 3 of the license.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef IMAP_ENCODERS_H
23 #define IMAP_ENCODERS_H
25 #include <QMap>
26 #include <QString>
28 namespace Imap {
30 typedef enum {
31 DoubleQuoted,
32 SquareBrackets,
33 Parentheses
34 } QuotedStringStyle;
36 typedef enum {
37 RFC2047_STRING_ASCII,
38 RFC2047_STRING_LATIN,
39 RFC2047_STRING_UTF8
40 } Rfc2047StringCharacterSetType;
42 /** @short Production type as per RFC 2047 chapter 5
44 These differ in the set of characters that are allowed to be sent unescaped.
46 enum class Rfc2047ProductionType {
47 /** @short "An 'encoded-word' may replace a 'text' token..." -- case (1) */
48 Text,
49 /** @short "As a replacement for a 'word' entity within a 'phrase'" -- case (3) */
50 Phrase,
53 QString decodeByteArray(const QByteArray &encoded, const QByteArray &charset);
55 QByteArray quotedString(const QByteArray &unquoted, QuotedStringStyle style = DoubleQuoted);
56 QByteArray encodeRFC2047Phrase(const QString &text);
58 QByteArray encodeRFC2047StringWithAsciiPrefix(const QString &text);
59 QString decodeRFC2047String(const QByteArray &raw);
61 QByteArray encodeImapFolderName(const QString &text);
63 QString decodeImapFolderName(const QByteArray &raw);
65 QByteArray quotedPrintableDecode(const QByteArray &raw);
66 QByteArray quotedPrintableEncode(const QByteArray &raw);
68 QString extractRfc2231Param(const QMap<QByteArray, QByteArray> &parameters, const QByteArray &key);
69 QByteArray encodeRfc2231Parameter(const QByteArray &key, const QString &value);
71 QString wrapFormatFlowed(const QString &input);
73 void decodeContentTransferEncoding(const QByteArray &rawData, const QByteArray &encoding, QByteArray *outputData);
76 #endif // IMAP_ENCODERS_H