summaryrefslogtreecommitdiff
authoralwin <alwin>2004-10-28 02:12:12 (UTC)
committer alwin <alwin>2004-10-28 02:12:12 (UTC)
commit6205e982ec6d9ab1893919cd9c943c95b4baae33 (patch) (side-by-side diff)
tree7f5eeab32ad333e441956ce3bccf313609a54b83
parentbeaee4a305e89b27f0482047daf06919fdd9d732 (diff)
downloadopie-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.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/viewmail.cpp30
-rw-r--r--noncore/net/mail/viewmail.h1
-rw-r--r--noncore/net/mail/viewmailbase.cpp81
-rw-r--r--noncore/net/mail/viewmailbase.h20
4 files changed, 65 insertions, 67 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>"
+ "<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("&"), "&amp;");
string_.replace(QRegExp("<"), "&lt;");
string_.replace(QRegExp(">"), "&gt;");
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++)
diff --git a/noncore/net/mail/viewmail.h b/noncore/net/mail/viewmail.h
index 297836b..560453a 100644
--- a/noncore/net/mail/viewmail.h
+++ b/noncore/net/mail/viewmail.h
@@ -31,48 +31,49 @@ private:
class ViewMail : public ViewMailBase
{
Q_OBJECT
public:
ViewMail( QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
~ViewMail();
void hide();
void exec();
void setMail(const RecMailP&mail );
void setBody(const RecBodyP&body);
bool deleted;
protected:
QString deHtml(const QString &string);
AttachItem* searchParent(const QValueList<int>&path);
AttachItem* lastChild(AttachItem*parent);
protected slots:
void slotReply();
void slotForward();
void setText();
+ void setHeader();
void slotItemClicked( QListViewItem * item , const QPoint & point, int c );
void slotDeleteMail( );
void slotShowHtml( bool );
private:
void readConfig();
bool _inLoop;
QString m_mailHtml;
bool m_gotBody;
RecBodyP m_body;
RecMailP m_recMail;
bool m_showHtml;
// 0 from 1 subject 2 bodytext 3 date
QMap <int,QString> m_mail;
// 0 to 1 cc 2 bcc
QMap <int,QStringList> m_mail2;
};
class MailImageDlg:public Opie::Ui::ODialog
{
Q_OBJECT
public:
diff --git a/noncore/net/mail/viewmailbase.cpp b/noncore/net/mail/viewmailbase.cpp
index cbb98cc..49a0e6a 100644
--- a/noncore/net/mail/viewmailbase.cpp
+++ b/noncore/net/mail/viewmailbase.cpp
@@ -1,89 +1,90 @@
#include <qtextbrowser.h>
#include <qlistview.h>
#include <qaction.h>
#include <qlabel.h>
#include <qvbox.h>
#include <qtoolbar.h>
#include <qmenubar.h>
#include <qpe/resource.h>
#include "viewmailbase.h"
//#include "opendiag.h"
ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl)
- : QMainWindow(parent, name, fl)
+ : QMainWindow(parent, name, fl)
{
- setCaption(tr("E-Mail by %1"));
- setToolBarsMovable(false);
+ setCaption(tr("E-Mail view"));
+ setToolBarsMovable(false);
- toolbar = new QToolBar(this);
- menubar = new QMenuBar( toolbar );
- mailmenu = new QPopupMenu( menubar );
- menubar->insertItem( tr( "Mail" ), mailmenu );
+ toolbar = new QToolBar(this);
+ menubar = new QMenuBar( toolbar );
+ mailmenu = new QPopupMenu( menubar );
+ menubar->insertItem( tr( "Mail" ), mailmenu );
- toolbar->setHorizontalStretchable(true);
- addToolBar(toolbar);
+ toolbar->setHorizontalStretchable(true);
+ addToolBar(toolbar);
- QLabel *spacer = new QLabel(toolbar);
- spacer->setBackgroundMode(QWidget::PaletteButton);
- toolbar->setStretchableWidget(spacer);
+ QLabel *spacer = new QLabel(toolbar);
+ spacer->setBackgroundMode(QWidget::PaletteButton);
+ toolbar->setStretchableWidget(spacer);
- reply = new QAction(tr("Reply"), QIconSet(Resource::loadPixmap("mail/reply")), 0, 0, this);
- reply->addTo(toolbar);
- reply->addTo(mailmenu);
+ reply = new QAction(tr("Reply"), QIconSet(Resource::loadPixmap("mail/reply")), 0, 0, this);
+ reply->addTo(toolbar);
+ reply->addTo(mailmenu);
- forward = new QAction(tr("Forward"), QIconSet(Resource::loadPixmap("mail/forward")), 0, 0, this);
- forward->addTo(toolbar);
- forward->addTo(mailmenu);
+ forward = new QAction(tr("Forward"), QIconSet(Resource::loadPixmap("mail/forward")), 0, 0, this);
+ forward->addTo(toolbar);
+ forward->addTo(mailmenu);
- attachbutton = new QAction(tr("Attachments"), QIconSet(Resource::loadPixmap("mail/attach")), 0, 0, this, 0, true);
- attachbutton->addTo(toolbar);
- attachbutton->addTo(mailmenu);
- connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool)));
+ attachbutton = new QAction(tr("Attachments"), QIconSet(Resource::loadPixmap("mail/attach")), 0, 0, this, 0, true);
+ attachbutton->addTo(toolbar);
+ attachbutton->addTo(mailmenu);
+ connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool)));
showHtml = new QAction( tr( "Show Html" ), QIconSet( Resource::loadPixmap( "mail/html" ) ), 0, 0, this, 0, true );
showHtml->addTo( toolbar );
showHtml->addTo( mailmenu );
- deleteMail = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("trash")), 0, 0, this);
- deleteMail->addTo(toolbar);
- deleteMail->addTo(mailmenu);
+ deleteMail = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("trash")), 0, 0, this);
+ deleteMail->addTo(toolbar);
+ deleteMail->addTo(mailmenu);
- QVBox *view = new QVBox(this);
- setCentralWidget(view);
+ QVBox *view = new QVBox(this);
+ setCentralWidget(view);
- attachments = new QListView(view);
- attachments->setMinimumHeight(90);
- attachments->setMaximumHeight(90);
- attachments->setAllColumnsShowFocus(true);
- attachments->addColumn("Mime Type", 60);
- attachments->addColumn(tr("Description"), 100);
- attachments->addColumn(tr("Filename"), 80);
+ attachments = new QListView(view);
+ attachments->setMinimumHeight(90);
+ attachments->setMaximumHeight(90);
+ attachments->setAllColumnsShowFocus(true);
+ attachments->addColumn("Mime Type", 60);
+ attachments->addColumn(tr("Description"), 100);
+ attachments->addColumn(tr("Filename"), 80);
attachments->addColumn(tr("Size"), 80);
attachments->setSorting(-1);
- attachments->hide();
+ attachments->hide();
- browser = new QTextBrowser(view);
+ //header = new QTextBrowser(view);
+ browser = new QTextBrowser(view);
-// openDiag = new OpenDiag(view);
-// openDiag->hide();
+// openDiag = new OpenDiag(view);
+// openDiag->hide();
}
void ViewMailBase::slotChangeAttachview(bool state)
{
- if (state) attachments->show();
- else attachments->hide();
+ if (state) attachments->show();
+ else attachments->hide();
}
void ViewMailBase::keyPressEvent ( QKeyEvent * e )
{
if( e->key()==Qt::Key_Escape ) {
close();
e->accept();
return;
}
QWidget::keyPressEvent(e);
}
diff --git a/noncore/net/mail/viewmailbase.h b/noncore/net/mail/viewmailbase.h
index fdaad2a..583b1f6 100644
--- a/noncore/net/mail/viewmailbase.h
+++ b/noncore/net/mail/viewmailbase.h
@@ -1,38 +1,38 @@
#ifndef VIEWMAILBASE_H
#define VIEWMAILBASE_H
#include <qmainwindow.h>
class QAction;
class OpenDiag;
class QListView;
class QToolBar;
class QTextBrowser;
class QMenuBar;
class QPopupMenu;
class ViewMailBase : public QMainWindow
{
- Q_OBJECT
+ Q_OBJECT
public:
- ViewMailBase(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+ ViewMailBase(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
protected:
- QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml;
- QListView *attachments;
- QToolBar *toolbar;
- QTextBrowser *browser;
- OpenDiag *openDiag;
- QMenuBar *menubar;
- QPopupMenu *mailmenu;
+ QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml;
+ QListView *attachments;
+ QToolBar *toolbar;
+ QTextBrowser *browser;//,*header;
+ OpenDiag *openDiag;
+ QMenuBar *menubar;
+ QPopupMenu *mailmenu;
protected slots:
- void slotChangeAttachview(bool state);
+ void slotChangeAttachview(bool state);
virtual void keyPressEvent ( QKeyEvent * e );
};
#endif