From 00bebcf42b3cd9cfdba11442d34ac2e3ed7da3bd Mon Sep 17 00:00:00 2001 From: ubbo Date: Mon, 10 May 2010 21:28:13 +0000 Subject: add mime-parser and basic attachment-recognise and show functionality git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@322 34ebc366-c3a9-4b3c-9f84-69acf7962910 --- gpgwin.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 8 deletions(-) (limited to 'gpgwin.cpp') diff --git a/gpgwin.cpp b/gpgwin.cpp index ea17627..633e3b8 100644 --- a/gpgwin.cpp +++ b/gpgwin.cpp @@ -44,10 +44,7 @@ GpgWin::GpgWin() mKeyList = new KeyList(mCtx, iconPath); /* List of binary Attachments */ - mAttachments = new Attachments(); - mAttachments->setIconPath(iconPath); - mAttachments->setContext(mCtx); - mAttachments->setKeyList(mKeyList); + mAttachments = new Attachments(iconPath); createActions(); createMenus(); @@ -302,10 +299,16 @@ void GpgWin::createDockWindows() dock->setWidget(mKeyList); viewMenu->addAction(dock->toggleViewAction()); - /*dock = new QDockWidget(tr("Attached files:"), this); - dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea ); - addDockWidget(Qt::BottomDockWidgetArea, dock); - dock->setWidget(mAttachments);*/ + /** Attachments-Dockwindow + */ + aDock = new QDockWidget(tr("Attached files:"), this); + aDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea ); + addDockWidget(Qt::BottomDockWidgetArea, aDock); + aDock->setWidget(mAttachments); + // hide till attachmendt is decrypted + aDock->hide(); + + } void GpgWin::closeEvent(QCloseEvent *event) @@ -499,10 +502,42 @@ void GpgWin::decrypt() preventNoDataErr(&text); mCtx->decrypt(text, tmp); if (!tmp->isEmpty()) { + // is it mime? TODO: parseMime should be optional by setting + parseMime(tmp); edit->setPlainText(QString::fromUtf8(*tmp)); } } +/** + * if this is mime, split text and attachents... + * message contains only text afterwards + */ +void GpgWin::parseMime(QByteArray *message) { + + if( ! Mime::isMultipart(message) ) { + qDebug() << "no multipart"; + return; + } + qDebug() << "multipart"; + + QString pText; + bool showmadock = false; + + Mime *mime = new Mime(message); + foreach(MimePart tmp, mime->parts()) { + if(tmp.getValue("Content-Type")=="text/plain") { + pText.append(QString(tmp.body)); + } + else { + (mAttachments->addMimePart(&tmp)); + showmadock=true; + } + } + + *message = pText.toAscii(); + if(showmadock) aDock->show(); +} + /** * if there is no '\n' before the PGP-Begin-Block, but for example a whitespace, * GPGME doesn't recognise the Message as encrypted. This function adds '\n' -- cgit