From 4b9ae942606322ad49bd97922737400fff5ea142 Mon Sep 17 00:00:00 2001 From: ubbo Date: Thu, 29 Jul 2010 12:33:40 +0000 Subject: decode quoted printable git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@363 34ebc366-c3a9-4b3c-9f84-69acf7962910 --- gpgwin.cpp | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'gpgwin.cpp') diff --git a/gpgwin.cpp b/gpgwin.cpp index 22dbe89..33c31fa 100644 --- a/gpgwin.cpp +++ b/gpgwin.cpp @@ -520,10 +520,35 @@ void GpgWin::decrypt() preventNoDataErr(&text); mCtx->decrypt(text, tmp); if (!tmp->isEmpty()) { - // is it mime? - if (settings.value("mime/parseMime").toBool()) { - parseMime(tmp); + + /** + * 1) is it mime (content-type:) + * 2) parse header + * 2) choose action depending on content-type + */ + + if(Mime::isMime(tmp)) { + Header header = Mime::getHeader(tmp); + + // is it multipart, is multipart-parsing enabled + if(header.getValue("Content-Type") == "multipart/mixed" + && settings.value("mime/parseMime").toBool()) { + + parseMime(tmp); + + } else if(header.getValue("Content-Type") == "text/plain" + && settings.value("mime/parseQP").toBool()){ + + if (header.getValue("Content-Transfer-Encoding") == "quoted-printable") { + QByteArray *decode = new QByteArray(); + Mime::quotedPrintableDecode(*tmp, *decode); + //TODO: remove header + tmp = decode; + + } + } } + edit->setPlainText(QString::fromUtf8(*tmp)); } } @@ -546,11 +571,11 @@ void GpgWin::parseMime(QByteArray *message) Mime *mime = new Mime(message); foreach(MimePart tmp, mime->parts()) { - if (tmp.getValue("Content-Type") == "text/plain" - && tmp.getValue("Content-Transfer-Encoding") != "base64") { + if (tmp.header.getValue("Content-Type") == "text/plain" + && tmp.header.getValue("Content-Transfer-Encoding") != "base64") { QByteArray body; - if (tmp.getValue("Content-Transfer-Encoding") == "quoted-printable") { + if (tmp.header.getValue("Content-Transfer-Encoding") == "quoted-printable") { Mime::quotedPrintableDecode(tmp.body, body); } else { -- cgit v1.2.3