-rw-r--r-- | noncore/net/mail/viewmail.cpp | 46 | ||||
-rw-r--r-- | noncore/net/mail/viewmail.h | 9 | ||||
-rw-r--r-- | noncore/net/mail/viewmailbase.cpp | 26 | ||||
-rw-r--r-- | noncore/net/mail/viewmailbase.h | 2 |
4 files changed, 64 insertions, 19 deletions
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp index d2f1584..a64a168 100644 --- a/noncore/net/mail/viewmail.cpp +++ b/noncore/net/mail/viewmail.cpp @@ -249,20 +249,33 @@ void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int break ; case 2: { - QString tmpfile = "/tmp/opiemail-image"; + QString tmpfile = QString("/tmp/opiemail-image-%1").arg(_icounter++); encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); - if (content) { + if (content && content->Length()) { QFile output(tmpfile); output.open(IO_WriteOnly); output.writeBlock(content->Content(),content->Length()); output.close(); delete content; - MailImageDlg iview(""); - iview.setName(tmpfile); - QPEApplication::execDialog(&iview); + if (!m_PicsInline) { + MailImageDlg iview(""); + iview.setName(tmpfile); + QPEApplication::execDialog(&iview); + } else { + if (!m_lastdlg) { + m_lastdlg=new Opie::MM::OImageScrollView("",browser->parentWidget(),false); + m_lastdlg->setAutoScale(true); + } + //m_lastdlg->setImage(""); + m_lastdlg->setImage(tmpfile); + browser->hide(); + m_lastdlg->show(); + } output.remove(); + } else { + QMessageBox::critical(this, tr("Reading attachment"), tr("Could not read content of attachment")); } } break; case 1: @@ -312,21 +325,40 @@ ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) 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) ) ); + connect( showPicsInline, SIGNAL( toggled(bool) ), SLOT( slotImageInline(bool) ) ); attachments->setEnabled(m_gotBody); connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); + m_lastdlg = 0; + _icounter = 0; readConfig(); attachments->setSorting(-1); } +void ViewMail::slotImageInline(bool how) +{ + Config cfg( "mail" ); + cfg.writeEntry( "showPicsInline", how); + m_PicsInline = how; + if (m_lastdlg&&!how) { + browser->show(); + m_lastdlg->hide(); + m_lastdlg->reparent(0,QPoint(0,0),false); + delete m_lastdlg; + m_lastdlg = 0; + } +} + void ViewMail::readConfig() { Config cfg( "mail" ); cfg.setGroup( "Settings" ); m_showHtml = cfg.readBoolEntry( "showHtml", false ); + m_PicsInline = cfg.readBoolEntry( "showPicsInline", true ); + showPicsInline->setOn(m_PicsInline); showHtml->setOn( m_showHtml ); } void ViewMail::setText() @@ -335,8 +367,12 @@ void ViewMail::setText() QString ccString; QString bccString; QString mailHtml; + if (m_lastdlg) { + m_lastdlg->hide(); + } + browser->show(); for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) { toString += (*it); } diff --git a/noncore/net/mail/viewmail.h b/noncore/net/mail/viewmail.h index 297836b..f5033f0 100644 --- a/noncore/net/mail/viewmail.h +++ b/noncore/net/mail/viewmail.h @@ -10,8 +10,10 @@ #include <qmap.h> #include <qstringlist.h> #include <qvaluelist.h> +class MailImageDlg; + namespace Opie { namespace MM { class OImageScrollView; } } class AttachItem : public QListViewItem { @@ -47,15 +49,18 @@ protected: QString deHtml(const QString &string); AttachItem* searchParent(const QValueList<int>&path); AttachItem* lastChild(AttachItem*parent); + Opie::MM::OImageScrollView*m_lastdlg; + protected slots: void slotReply(); void slotForward(); void setText(); void slotItemClicked( QListViewItem * item , const QPoint & point, int c ); void slotDeleteMail( ); void slotShowHtml( bool ); + void slotImageInline(bool); private: void readConfig(); @@ -63,9 +68,11 @@ private: QString m_mailHtml; bool m_gotBody; RecBodyP m_body; RecMailP m_recMail; - bool m_showHtml; + bool m_showHtml:1; + bool m_PicsInline:1; + unsigned int _icounter; // 0 from 1 subject 2 bodytext 3 date QMap <int,QString> m_mail; // 0 to 1 cc 2 bcc diff --git a/noncore/net/mail/viewmailbase.cpp b/noncore/net/mail/viewmailbase.cpp index 49a0e6a..65ad0d6 100644 --- a/noncore/net/mail/viewmailbase.cpp +++ b/noncore/net/mail/viewmailbase.cpp @@ -4,8 +4,9 @@ #include <qlabel.h> #include <qvbox.h> #include <qtoolbar.h> +#include <qlayout.h> #include <qmenubar.h> #include <qpe/resource.h> #include "viewmailbase.h" @@ -20,12 +21,10 @@ ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) toolbar = new QToolBar(this); menubar = new QMenuBar( toolbar ); mailmenu = new QPopupMenu( menubar ); menubar->insertItem( tr( "Mail" ), mailmenu ); - toolbar->setHorizontalStretchable(true); addToolBar(toolbar); - QLabel *spacer = new QLabel(toolbar); spacer->setBackgroundMode(QWidget::PaletteButton); toolbar->setStretchableWidget(spacer); @@ -42,17 +41,24 @@ ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) 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 ); + showHtml = new QAction( tr( "Show Html" ), QIconSet( Resource::loadPixmap( "mail/html" ) ), 0, 0, this, 0, true ); + showHtml->addTo( toolbar ); + showHtml->addTo( mailmenu ); + + showPicsInline= new QAction(tr("Show image preview inline"), QIconSet(Resource::loadPixmap("pixmap")), 0, 0, this); + showPicsInline->setToggleAction(true); + showPicsInline->addTo(toolbar); + showPicsInline->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); + QVBox * view = new QVBox(this); + view->setSpacing(1); + view->setMargin(0); setCentralWidget(view); attachments = new QListView(view); attachments->setMinimumHeight(90); @@ -62,16 +68,12 @@ ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) attachments->addColumn(tr("Description"), 100); attachments->addColumn(tr("Filename"), 80); attachments->addColumn(tr("Size"), 80); attachments->setSorting(-1); - attachments->hide(); - //header = new QTextBrowser(view); browser = new QTextBrowser(view); - -// openDiag = new OpenDiag(view); -// openDiag->hide(); - + adjustSize(); + attachments->hide(); } void ViewMailBase::slotChangeAttachview(bool state) { diff --git a/noncore/net/mail/viewmailbase.h b/noncore/net/mail/viewmailbase.h index 583b1f6..59179a4 100644 --- a/noncore/net/mail/viewmailbase.h +++ b/noncore/net/mail/viewmailbase.h @@ -18,9 +18,9 @@ class ViewMailBase : public QMainWindow public: ViewMailBase(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); protected: - QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml; + QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml,*showPicsInline; QListView *attachments; QToolBar *toolbar; QTextBrowser *browser;//,*header; OpenDiag *openDiag; |