author | alwin <alwin> | 2004-10-28 02:12:12 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-10-28 02:12:12 (UTC) |
commit | 6205e982ec6d9ab1893919cd9c943c95b4baae33 (patch) (side-by-side diff) | |
tree | 7f5eeab32ad333e441956ce3bccf313609a54b83 /noncore/net/mail/viewmail.cpp | |
parent | beaee4a305e89b27f0482047daf06919fdd9d732 (diff) | |
download | opie-6205e982ec6d9ab1893919cd9c943c95b4baae33.zip opie-6205e982ec6d9ab1893919cd9c943c95b4baae33.tar.gz opie-6205e982ec6d9ab1893919cd9c943c95b4baae33.tar.bz2 |
fixed some problems when displaying mails
but it should reworked cause sometimes there are problems with html
mails.
-rw-r--r-- | noncore/net/mail/viewmail.cpp | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp index d5f9b7f..d2f1584 100644 --- a/noncore/net/mail/viewmail.cpp +++ b/noncore/net/mail/viewmail.cpp @@ -1,46 +1,47 @@ #include "composemail.h" #include "viewmail.h" #include <libmailwrapper/settings.h> #include <libmailwrapper/abstractmail.h> #include <libmailwrapper/mailtypes.h> /* OPIE */ #include <opie2/odebug.h> #include <opie2/ofiledialog.h> #include <opie2/oimagescrollview.h> #include <qpe/config.h> #include <qpe/qpeapplication.h> /* QT */ #include <qtextbrowser.h> #include <qmessagebox.h> #include <qtextstream.h> #include <qaction.h> #include <qpopupmenu.h> #include <qfile.h> #include <qlayout.h> +#include <qstylesheet.h> using namespace Opie::Ui; using namespace Opie::Core; AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, const QString&fsize,int num,const QValueList<int>&path) : QListViewItem(parent,after),_partNum(num) { _path=path; setText(0, mime); setText(1, desc); setText(2, file); setText(3, fsize); } AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, const QString&fsize,int num,const QValueList<int>&path) : QListViewItem(parent,after),_partNum(num) { _path=path; setText(0, mime); setText(1, desc); setText(2, file); setText(3, fsize); @@ -275,158 +276,153 @@ void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int { // make sure that there is a wrapper , even after delete or simular actions browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); } } break; } delete menu; } void ViewMail::setMail(const RecMailP&mail ) { m_recMail = mail; m_mail[0] = mail->getFrom(); m_mail[1] = mail->getSubject(); m_mail[3] = mail->getStringDate(); m_mail[4] = mail->Msgid(); m_mail2[0] = mail->To(); m_mail2[1] = mail->CC(); m_mail2[2] = mail->Bcc(); + setCaption(tr("E-Mail by %1").arg( m_mail[0] ) ); setText(); } ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) : ViewMailBase(parent, name, fl), _inLoop(false) { m_gotBody = false; deleted = false; connect( reply, SIGNAL(activated()), SLOT(slotReply())); connect( forward, SIGNAL(activated()), SLOT(slotForward())); connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); attachments->setEnabled(m_gotBody); connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); readConfig(); attachments->setSorting(-1); } void ViewMail::readConfig() { Config cfg( "mail" ); cfg.setGroup( "Settings" ); m_showHtml = cfg.readBoolEntry( "showHtml", false ); showHtml->setOn( m_showHtml ); } void ViewMail::setText() { - QString toString; QString ccString; QString bccString; + QString mailHtml; for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) { toString += (*it); } for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) { ccString += (*it); } for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) { bccString += (*it); } - - setCaption( caption().arg( m_mail[0] ) ); - - m_mailHtml = "<html><body>" + browser->setTextFormat(Qt::RichText); + mailHtml = "<html><body>" "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + - "</td></tr></table><font face=fixed>"; - - if ( !m_showHtml ) - { - browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); - } - else - { - browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); + "</td></tr></table>"; + if ( !m_showHtml ) { + browser->setText( mailHtml+"<font face=fixed>" + QStyleSheet::convertFromPlainText(m_mail[2]) + "</font></body></html>" ); + } else { + browser->setText(mailHtml+m_mail[2].simplifyWhiteSpace()+"</html>"); } // remove later in favor of a real handling m_gotBody = true; } ViewMail::~ViewMail() { m_recMail->Wrapper()->cleanMimeCache(); hide(); } void ViewMail::hide() { QWidget::hide(); if (_inLoop) { _inLoop = false; qApp->exit_loop(); } } void ViewMail::exec() { show(); if (!_inLoop) { _inLoop = true; qApp->enter_loop(); } } -QString ViewMail::deHtml(const QString &string) +QString ViewMail::deHtml(const QString &aString) { - QString string_ = string; + QString string_ = aString; string_.replace(QRegExp("&"), "&"); string_.replace(QRegExp("<"), "<"); string_.replace(QRegExp(">"), ">"); string_.replace(QRegExp("\\n"), "<br>"); return string_; } void ViewMail::slotReply() { if (!m_gotBody) { QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); return; } QString rtext; rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose .arg( m_mail[0] ) .arg( m_mail[3] ); QString text = m_mail[2]; QStringList lines = QStringList::split(QRegExp("\\n"), text); QStringList::Iterator it; for (it = lines.begin(); it != lines.end(); it++) |