summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/mail.pro12
-rw-r--r--noncore/net/mail/mainwindow.cpp24
-rw-r--r--noncore/net/mail/mainwindow.h3
-rw-r--r--noncore/net/mail/opiemail.cpp2
-rw-r--r--noncore/net/mail/viewmail.cpp91
-rw-r--r--noncore/net/mail/viewmail.h5
-rw-r--r--noncore/net/mail/viewmailbase.cpp5
-rw-r--r--noncore/net/mail/viewmailbase.h3
8 files changed, 101 insertions, 44 deletions
diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro
index d058db7..49be889 100644
--- a/noncore/net/mail/mail.pro
+++ b/noncore/net/mail/mail.pro
@@ -6,52 +6,58 @@ HEADERS = defines.h \
6 editaccounts.h \ 6 editaccounts.h \
7 mailwrapper.h \ 7 mailwrapper.h \
8 composemail.h \ 8 composemail.h \
9 accountview.h \ 9 accountview.h \
10 mainwindow.h \ 10 mainwindow.h \
11 viewmail.h \ 11 viewmail.h \
12 viewmailbase.h \ 12 viewmailbase.h \
13 opiemail.h \ 13 opiemail.h \
14 imapwrapper.h \ 14 imapwrapper.h \
15 mailtypes.h \ 15 mailtypes.h \
16 mailistviewitem.h \ 16 mailistviewitem.h \
17 pop3wrapper.h \ 17 pop3wrapper.h \
18 abstractmail.h 18 abstractmail.h \
19 settingsdialog.h \
20 statuswidget.h
19 21
20 SOURCES = main.cpp \ 22 SOURCES = main.cpp \
21 opiemail.cpp \ 23 opiemail.cpp \
22 mainwindow.cpp \ 24 mainwindow.cpp \
23 accountview.cpp \ 25 accountview.cpp \
24 composemail.cpp \ 26 composemail.cpp \
25 mailwrapper.cpp \ 27 mailwrapper.cpp \
26 imapwrapper.cpp \ 28 imapwrapper.cpp \
27 addresspicker.cpp \ 29 addresspicker.cpp \
28 editaccounts.cpp \ 30 editaccounts.cpp \
29 logindialog.cpp \ 31 logindialog.cpp \
30 viewmail.cpp \ 32 viewmail.cpp \
31 viewmailbase.cpp \ 33 viewmailbase.cpp \
32 settings.cpp \ 34 settings.cpp \
33 mailtypes.cpp \ 35 mailtypes.cpp \
34 pop3wrapper.cpp \ 36 pop3wrapper.cpp \
35 abstractmail.cpp 37 abstractmail.cpp \
38 settingsdialog.cpp \
39 statuswidget.cpp
36 40
37 INTERFACES = editaccountsui.ui \ 41 INTERFACES = editaccountsui.ui \
38 selectmailtypeui.ui \ 42 selectmailtypeui.ui \
39 imapconfigui.ui \ 43 imapconfigui.ui \
40 pop3configui.ui \ 44 pop3configui.ui \
41 nntpconfigui.ui \ 45 nntpconfigui.ui \
42 smtpconfigui.ui \ 46 smtpconfigui.ui \
43 addresspickerui.ui \ 47 addresspickerui.ui \
44 logindialogui.ui \ 48 logindialogui.ui \
45 composemailui.ui 49 composemailui.ui \
50 settingsdialogui.ui \
51 statuswidgetui.ui
46 52
47INCLUDEPATH += $(OPIEDIR)/include 53INCLUDEPATH += $(OPIEDIR)/include
48 54
49CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX ) 55CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX )
50contains( CONFTEST, y ){ 56contains( CONFTEST, y ){
51 LIBS += -lqpe -letpan -lssl -lcrypto -lopie -liconv 57 LIBS += -lqpe -letpan -lssl -lcrypto -lopie -liconv
52}else{ 58}else{
53 LIBS += -lqpe -letpan -lssl -lcrypto -lopie 59 LIBS += -lqpe -letpan -lssl -lcrypto -lopie
54} 60}
55 61
56TARGET = opiemail 62TARGET = opiemail
57 63
diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp
index 9a37510..d3b9c34 100644
--- a/noncore/net/mail/mainwindow.cpp
+++ b/noncore/net/mail/mainwindow.cpp
@@ -2,28 +2,30 @@
2#include <qvbox.h> 2#include <qvbox.h>
3#include <qheader.h> 3#include <qheader.h>
4#include <qtimer.h> 4#include <qtimer.h>
5#include <qlayout.h> 5#include <qlayout.h>
6#include <qmessagebox.h> 6#include <qmessagebox.h>
7#include <qtextstream.h> 7#include <qtextstream.h>
8 8
9#include <qpe/qpeapplication.h> 9#include <qpe/qpeapplication.h>
10#include <qpe/resource.h> 10#include <qpe/resource.h>
11 11
12#include "defines.h" 12#include "defines.h"
13#include "mainwindow.h" 13#include "mainwindow.h"
14#include "settingsdialog.h"
14#include "viewmail.h" 15#include "viewmail.h"
15#include "mailtypes.h" 16#include "mailtypes.h"
16#include "mailistviewitem.h" 17#include "mailistviewitem.h"
17 18
19
18MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 20MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
19 : QMainWindow( parent, name, flags ) 21 : QMainWindow( parent, name, flags )
20{ 22{
21 setCaption( tr( "Mail" ) ); 23 setCaption( tr( "Mail" ) );
22 setToolBarsMovable( false ); 24 setToolBarsMovable( false );
23 25
24 toolBar = new QToolBar( this ); 26 toolBar = new QToolBar( this );
25 menuBar = new QMenuBar( toolBar ); 27 menuBar = new QMenuBar( toolBar );
26 mailMenu = new QPopupMenu( menuBar ); 28 mailMenu = new QPopupMenu( menuBar );
27 menuBar->insertItem( tr( "Mail" ), mailMenu ); 29 menuBar->insertItem( tr( "Mail" ), mailMenu );
28 settingsMenu = new QPopupMenu( menuBar ); 30 settingsMenu = new QPopupMenu( menuBar );
29 menuBar->insertItem( tr( "Settings" ), settingsMenu ); 31 menuBar->insertItem( tr( "Settings" ), settingsMenu );
@@ -36,82 +38,92 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
36 toolBar->setStretchableWidget( spacer ); 38 toolBar->setStretchableWidget( spacer );
37 39
38 composeMail = new QAction( tr( "Compose new mail" ), ICON_COMPOSEMAIL, 40 composeMail = new QAction( tr( "Compose new mail" ), ICON_COMPOSEMAIL,
39 0, 0, this ); 41 0, 0, this );
40 composeMail->addTo( toolBar ); 42 composeMail->addTo( toolBar );
41 composeMail->addTo( mailMenu ); 43 composeMail->addTo( mailMenu );
42 44
43 sendQueued = new QAction( tr( "Send queued mails" ), ICON_SENDQUEUED, 45 sendQueued = new QAction( tr( "Send queued mails" ), ICON_SENDQUEUED,
44 0, 0, this ); 46 0, 0, this );
45 sendQueued->addTo( toolBar ); 47 sendQueued->addTo( toolBar );
46 sendQueued->addTo( mailMenu ); 48 sendQueued->addTo( mailMenu );
47 49
50 /*
48 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC, 51 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC,
49 0, 0, this ); 52 0, 0, this );
50 syncFolders->addTo( toolBar ); 53 syncFolders->addTo( toolBar );
51 syncFolders->addTo( mailMenu ); 54 syncFolders->addTo( mailMenu );
55 */
52 56
53 showFolders = new QAction( tr( "Show/Hide folders" ), ICON_SHOWFOLDERS, 57 showFolders = new QAction( tr( "Show/Hide folders" ), ICON_SHOWFOLDERS,
54 0, 0, this, 0, true ); 58 0, 0, this, 0, true );
55 showFolders->addTo( toolBar ); 59 showFolders->addTo( toolBar );
56 showFolders->addTo( mailMenu ); 60 showFolders->addTo( mailMenu );
57 showFolders->setOn( true ); 61 showFolders->setOn( true );
58 connect(showFolders, SIGNAL( toggled( bool ) ), 62 connect(showFolders, SIGNAL( toggled( bool ) ),
59 SLOT( slotShowFolders( bool ) ) ); 63 SLOT( slotShowFolders( bool ) ) );
60 64
61 searchMails = new QAction( tr( "Search mails" ), ICON_SEARCHMAILS, 65 /*
66 searchMails = new QAction( tr( "Search mails" ), ICON_SEARCHMAILS,
62 0, 0, this ); 67 0, 0, this );
63 searchMails->addTo( toolBar ); 68 searchMails->addTo( toolBar );
64 searchMails->addTo( mailMenu ); 69 searchMails->addTo( mailMenu );
70 */
65 71
66 deleteMails = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this); 72 deleteMails = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this);
67 deleteMails->addTo( toolBar ); 73 deleteMails->addTo( toolBar );
68 deleteMails->addTo( mailMenu ); 74 deleteMails->addTo( mailMenu );
69 connect( deleteMails, SIGNAL( activated() ), 75 connect( deleteMails, SIGNAL( activated() ),
70 SLOT( slotDeleteMail() ) ); 76 SLOT( slotDeleteMail() ) );
71 77
72 editSettings = new QAction( tr( "Edit settings" ), ICON_EDITSETTINGS, 78 editSettings = new QAction( tr( "Edit settings" ), ICON_EDITSETTINGS,
73 0, 0, this ); 79 0, 0, this );
74 editSettings->addTo( settingsMenu ); 80 editSettings->addTo( settingsMenu );
81 connect( editSettings, SIGNAL( activated() ),
82 SLOT( slotEditSettings() ) );
75 83
76 editAccounts = new QAction( tr( "Configure accounts" ), ICON_EDITACCOUNTS, 84 editAccounts = new QAction( tr( "Configure accounts" ), ICON_EDITACCOUNTS,
77 0, 0, this ); 85 0, 0, this );
78 editAccounts->addTo( settingsMenu ); 86 editAccounts->addTo( settingsMenu );
79 87
80 QWidget *view = new QWidget( this ); 88 QWidget *view = new QWidget( this );
81 setCentralWidget( view ); 89 setCentralWidget( view );
82 90
83 layout = new QBoxLayout ( view, QBoxLayout::LeftToRight ); 91 layout = new QBoxLayout ( view, QBoxLayout::LeftToRight );
84 92
85 folderView = new AccountView( view ); 93 folderView = new AccountView( view );
86 folderView->header()->hide(); 94 folderView->header()->hide();
87 folderView->setRootIsDecorated( true ); 95 folderView->setRootIsDecorated( true );
88 folderView->addColumn( tr( "Mailbox" ) ); 96 folderView->addColumn( tr( "Mailbox" ) );
89 //folderView->hide(); 97 //folderView->hide();
90 98
91 layout->addWidget( folderView ); 99 layout->addWidget( folderView );
92 100
93 mailView = new QListView( view ); 101 mailView = new QListView( view );
94 mailView->addColumn( tr( "" ) ); 102 mailView->addColumn( tr( "" ) );
95 mailView->addColumn( tr( "Subject" ),QListView::Manual ); 103 mailView->addColumn( tr( "Subject" ),QListView::Manual );
96 mailView->addColumn( tr( "Sender" ),QListView::Manual ); 104 mailView->addColumn( tr( "Sender" ),QListView::Manual );
97 mailView->addColumn( tr( "Size" ),QListView::Manual); 105 mailView->addColumn( tr( "Size" ),QListView::Manual);
98 mailView->addColumn( tr( "Date" )); 106 mailView->addColumn( tr( "Date" ));
99 mailView->setAllColumnsShowFocus(true); 107 mailView->setAllColumnsShowFocus(true);
100 mailView->setSorting(-1); 108 mailView->setSorting(-1);
101 109
110 statusWidget = new StatusWidget( view );
111
102 layout->addWidget( mailView ); 112 layout->addWidget( mailView );
113 layout->addWidget( statusWidget );
103 layout->setStretchFactor( folderView, 1 ); 114 layout->setStretchFactor( folderView, 1 );
104 layout->setStretchFactor( mailView, 2 ); 115 layout->setStretchFactor( mailView, 2 );
105 116
117
106 slotAdjustLayout(); 118 slotAdjustLayout();
107 119
108 connect( mailView, SIGNAL( clicked( QListViewItem * ) ),this, 120 connect( mailView, SIGNAL( clicked( QListViewItem * ) ),this,
109 SLOT( displayMail( QListViewItem * ) ) ); 121 SLOT( displayMail( QListViewItem * ) ) );
110 122
111 connect(folderView, SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*))); 123 connect(folderView, SIGNAL(refreshMailview(QList<RecMail>*)),this,SLOT(refreshMailView(QList<RecMail>*)));
112 124
113 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); 125 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) );
114 126
115} 127}
116 128
117 129
@@ -132,24 +144,30 @@ void MainWindow::slotAdjustColumns()
132 bool hidden = folderView->isHidden(); 144 bool hidden = folderView->isHidden();
133 if ( hidden ) folderView->show(); 145 if ( hidden ) folderView->show();
134 folderView->setColumnWidth( 0, folderView->visibleWidth() ); 146 folderView->setColumnWidth( 0, folderView->visibleWidth() );
135 if ( hidden ) folderView->hide(); 147 if ( hidden ) folderView->hide();
136 148
137 mailView->setColumnWidth( 0, 10 ); 149 mailView->setColumnWidth( 0, 10 );
138 mailView->setColumnWidth( 1, mailView->visibleWidth() - 130 ); 150 mailView->setColumnWidth( 1, mailView->visibleWidth() - 130 );
139 mailView->setColumnWidth( 2, 80 ); 151 mailView->setColumnWidth( 2, 80 );
140 mailView->setColumnWidth( 3, 50 ); 152 mailView->setColumnWidth( 3, 50 );
141 mailView->setColumnWidth( 4, 50 ); 153 mailView->setColumnWidth( 4, 50 );
142} 154}
143 155
156void MainWindow::slotEditSettings() {
157 SettingsDialog settingsDialog( this, 0, true );
158 settingsDialog.showMaximized();
159 settingsDialog.exec();
160}
161
144void MainWindow::slotShowFolders( bool show ) 162void MainWindow::slotShowFolders( bool show )
145{ 163{
146 qDebug( "Show Folders" ); 164 qDebug( "Show Folders" );
147 if ( show && folderView->isHidden() ) { 165 if ( show && folderView->isHidden() ) {
148 qDebug( "-> showing" ); 166 qDebug( "-> showing" );
149 folderView->show(); 167 folderView->show();
150 } else if ( !show && !folderView->isHidden() ) { 168 } else if ( !show && !folderView->isHidden() ) {
151 qDebug( "-> hiding" ); 169 qDebug( "-> hiding" );
152 folderView->hide(); 170 folderView->hide();
153 } 171 }
154} 172}
155 173
@@ -170,25 +188,25 @@ void MainWindow::displayMail(QListViewItem*item)
170 RecMail mail = ((MailListViewItem*)item)->data(); 188 RecMail mail = ((MailListViewItem*)item)->data();
171 RecBody body = folderView->fetchBody(mail); 189 RecBody body = folderView->fetchBody(mail);
172 190
173 ViewMail readMail( this ); 191 ViewMail readMail( this );
174 readMail.setBody( body ); 192 readMail.setBody( body );
175 readMail.setMail( mail ); 193 readMail.setMail( mail );
176 readMail.showMaximized(); 194 readMail.showMaximized();
177 readMail.exec(); 195 readMail.exec();
178 196
179 if ( readMail.deleted ) { 197 if ( readMail.deleted ) {
180 folderView->refreshCurrent(); 198 folderView->refreshCurrent();
181 } else { 199 } else {
182 ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "mail/kmmsgunseen") ); 200 ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "") );
183 } 201 }
184} 202}
185 203
186void MainWindow::slotDeleteMail() 204void MainWindow::slotDeleteMail()
187{ 205{
188 if (!mailView->currentItem()) return; 206 if (!mailView->currentItem()) return;
189 RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data(); 207 RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data();
190 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail.getFrom() + " - " + mail.getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) { 208 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail.getFrom() + " - " + mail.getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) {
191 mail.Wrapper()->deleteMail( mail ); 209 mail.Wrapper()->deleteMail( mail );
192 folderView->refreshCurrent(); 210 folderView->refreshCurrent();
193 } 211 }
194} 212}
diff --git a/noncore/net/mail/mainwindow.h b/noncore/net/mail/mainwindow.h
index 21af190..4e4f4bb 100644
--- a/noncore/net/mail/mainwindow.h
+++ b/noncore/net/mail/mainwindow.h
@@ -1,43 +1,46 @@
1#ifndef MAINWINDOW_H 1#ifndef MAINWINDOW_H
2#define MAINWINDOW_H 2#define MAINWINDOW_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5#include <qlistview.h> 5#include <qlistview.h>
6#include <qaction.h> 6#include <qaction.h>
7 7
8#include <qtoolbar.h> 8#include <qtoolbar.h>
9#include <qmenubar.h> 9#include <qmenubar.h>
10 10
11#include "accountview.h" 11#include "accountview.h"
12#include "statuswidget.h"
12 13
13class RecMail; 14class RecMail;
14 15
15class MainWindow : public QMainWindow 16class MainWindow : public QMainWindow
16{ 17{
17 Q_OBJECT 18 Q_OBJECT
18 19
19public: 20public:
20 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 ); 21 MainWindow( QWidget *parent = 0, const char *name = 0, WFlags flags = 0 );
21 22
22public slots: 23public slots:
23 void slotAdjustColumns(); 24 void slotAdjustColumns();
24 25
25protected slots: 26protected slots:
26 virtual void slotShowFolders( bool show ); 27 virtual void slotShowFolders( bool show );
27 virtual void refreshMailView(QList<RecMail>*); 28 virtual void refreshMailView(QList<RecMail>*);
28 virtual void displayMail(QListViewItem*); 29 virtual void displayMail(QListViewItem*);
29 virtual void slotDeleteMail(); 30 virtual void slotDeleteMail();
30 void slotAdjustLayout(); 31 void slotAdjustLayout();
32 void slotEditSettings();
31 33
32protected: 34protected:
33 QToolBar *toolBar; 35 QToolBar *toolBar;
36 StatusWidget *statusWidget;
34 QMenuBar *menuBar; 37 QMenuBar *menuBar;
35 QPopupMenu *mailMenu, *settingsMenu; 38 QPopupMenu *mailMenu, *settingsMenu;
36 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails, 39 QAction *composeMail, *sendQueued, *showFolders, *searchMails, *deleteMails,
37 *editSettings, *editAccounts, *syncFolders; 40 *editSettings, *editAccounts, *syncFolders;
38 AccountView *folderView; 41 AccountView *folderView;
39 QListView *mailView; 42 QListView *mailView;
40 QBoxLayout *layout; 43 QBoxLayout *layout;
41}; 44};
42 45
43#endif 46#endif
diff --git a/noncore/net/mail/opiemail.cpp b/noncore/net/mail/opiemail.cpp
index 740e4cf..7ab4e0d 100644
--- a/noncore/net/mail/opiemail.cpp
+++ b/noncore/net/mail/opiemail.cpp
@@ -2,25 +2,25 @@
2#include "editaccounts.h" 2#include "editaccounts.h"
3#include "composemail.h" 3#include "composemail.h"
4 4
5OpieMail::OpieMail( QWidget *parent, const char *name, WFlags flags ) 5OpieMail::OpieMail( QWidget *parent, const char *name, WFlags flags )
6 : MainWindow( parent, name, flags ) 6 : MainWindow( parent, name, flags )
7{ 7{
8 settings = new Settings(); 8 settings = new Settings();
9 9
10 folderView->populate( settings->getAccounts() ); 10 folderView->populate( settings->getAccounts() );
11 11
12 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); 12 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) );
13 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); 13 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) );
14 connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); 14// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) );
15 connect( editSettings, SIGNAL( activated() ), SLOT( slotEditSettings() ) ); 15 connect( editSettings, SIGNAL( activated() ), SLOT( slotEditSettings() ) );
16 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); 16 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) );
17} 17}
18 18
19void OpieMail::slotComposeMail() 19void OpieMail::slotComposeMail()
20{ 20{
21 qDebug( "Compose Mail" ); 21 qDebug( "Compose Mail" );
22 ComposeMail compose( settings, this, 0 , true ); 22 ComposeMail compose( settings, this, 0 , true );
23 compose.showMaximized(); 23 compose.showMaximized();
24 compose.slotAdjustColumns(); 24 compose.slotAdjustColumns();
25 compose.exec(); 25 compose.exec();
26} 26}
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp
index d86454c..e11fe1f 100644
--- a/noncore/net/mail/viewmail.cpp
+++ b/noncore/net/mail/viewmail.cpp
@@ -1,20 +1,22 @@
1#include <qtextbrowser.h> 1#include <qtextbrowser.h>
2#include <qmessagebox.h> 2#include <qmessagebox.h>
3#include <qtextstream.h> 3#include <qtextstream.h>
4#include <qaction.h> 4#include <qaction.h>
5#include <qpopupmenu.h> 5#include <qpopupmenu.h>
6#include <qfile.h> 6#include <qfile.h>
7#include <qapplication.h> 7#include <qapplication.h>
8 8
9#include <qpe/config.h>
10
9#include <opie/ofiledialog.h> 11#include <opie/ofiledialog.h>
10 12
11#include "settings.h" 13#include "settings.h"
12#include "composemail.h" 14#include "composemail.h"
13#include "viewmail.h" 15#include "viewmail.h"
14#include "abstractmail.h" 16#include "abstractmail.h"
15#include "accountview.h" 17#include "accountview.h"
16#include "mailtypes.h" 18#include "mailtypes.h"
17 19
18AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 20AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
19 const QString&fsize,int num) 21 const QString&fsize,int num)
20 : QListViewItem(parent,after),_partNum(num) 22 : QListViewItem(parent,after),_partNum(num)
@@ -100,24 +102,30 @@ for (unsigned int i = 0; i < body.Parts().count();++i) {
100 q=""; 102 q="";
101 break; 103 break;
102 } 104 }
103 QTextOStream o(&fsize); 105 QTextOStream o(&fsize);
104 if (w>0) o.precision(2); else o.precision(0); 106 if (w>0) o.precision(2); else o.precision(0);
105 o.setf(QTextStream::fixed); 107 o.setf(QTextStream::fixed);
106 o << s << " " << q << "Byte"; 108 o << s << " " << q << "Byte";
107 desc = body.Parts()[i].Description(); 109 desc = body.Parts()[i].Description();
108 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i); 110 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i);
109} 111}
110} 112}
111 113
114
115void ViewMail::slotShowHtml( bool state ) {
116 m_showHtml = state;
117 setText();
118}
119
112void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) { 120void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) {
113 if (!item ) 121 if (!item )
114 return; 122 return;
115 123
116 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) { 124 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) {
117 setText(); 125 setText();
118 return; 126 return;
119 } 127 }
120 QPopupMenu *menu = new QPopupMenu(); 128 QPopupMenu *menu = new QPopupMenu();
121 int ret=0; 129 int ret=0;
122 130
123 if ( item->text( 0 ).left( 5 ) == "text/" ) { 131 if ( item->text( 0 ).left( 5 ) == "text/" ) {
@@ -155,88 +163,101 @@ void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int
155 if ( m_recMail.Wrapper() != 0l ) { // make sure that there is a wrapper , even after delete or simular actions 163 if ( m_recMail.Wrapper() != 0l ) { // make sure that there is a wrapper , even after delete or simular actions
156 browser->setText( m_recMail.Wrapper()->fetchTextPart( m_recMail, m_body.Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); 164 browser->setText( m_recMail.Wrapper()->fetchTextPart( m_recMail, m_body.Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) );
157 } 165 }
158 } 166 }
159 break; 167 break;
160 } 168 }
161 delete menu; 169 delete menu;
162} 170}
163 171
164 172
165void ViewMail::setMail( RecMail mail ) { 173void ViewMail::setMail( RecMail mail ) {
166 174
167m_recMail = mail; 175 m_recMail = mail;
168 176
169m_mail[0] = mail.getFrom(); 177 m_mail[0] = mail.getFrom();
170m_mail[1] = mail.getSubject(); 178 m_mail[1] = mail.getSubject();
171m_mail[3] = mail.getDate(); 179 m_mail[3] = mail.getDate();
172m_mail[4] = mail.Msgid(); 180 m_mail[4] = mail.Msgid();
173 181
174m_mail2[0] = mail.To(); 182 m_mail2[0] = mail.To();
175m_mail2[1] = mail.CC(); 183 m_mail2[1] = mail.CC();
176m_mail2[2] = mail.Bcc(); 184 m_mail2[2] = mail.Bcc();
177 185
178setText(); 186 setText();
179} 187}
180 188
181 189
182 190
183ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) 191ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl)
184 : ViewMailBase(parent, name, fl), _inLoop(false) 192 : ViewMailBase(parent, name, fl), _inLoop(false)
185{ 193{
186 m_gotBody = false; 194 m_gotBody = false;
187 deleted = false; 195 deleted = false;
188 196
189 connect(reply, SIGNAL(activated()), SLOT(slotReply())); 197 connect( reply, SIGNAL(activated()), SLOT(slotReply()));
190 connect(forward, SIGNAL(activated()), SLOT(slotForward())); 198 connect( forward, SIGNAL(activated()), SLOT(slotForward()));
191 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail( ) ) ); 199 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail( ) ) );
200 connect( showHtml, SIGNAL( toggled( bool ) ), SLOT( slotShowHtml( bool ) ) );
192 201
193 attachments->setEnabled(m_gotBody); 202 attachments->setEnabled(m_gotBody);
194 connect( attachments, SIGNAL( clicked ( QListViewItem *, const QPoint & , int ) ), SLOT( slotItemClicked( QListViewItem *, const QPoint & , int ) ) ); 203 connect( attachments, SIGNAL( clicked ( QListViewItem *, const QPoint & , int ) ), SLOT( slotItemClicked( QListViewItem *, const QPoint & , int ) ) );
195 204
205 readConfig();
196 206
197} 207}
198 208
209void ViewMail::readConfig() {
210 Config cfg( "mail" );
211 cfg.setGroup( "Settings" );
212 m_showHtml = cfg.readBoolEntry( "showHtml", false );
213 showHtml->setOn( m_showHtml );
214}
215
199void ViewMail::setText() 216void ViewMail::setText()
200{ 217{
201 218
202 QString toString; 219 QString toString;
203 QString ccString; 220 QString ccString;
204 QString bccString; 221 QString bccString;
205 222
206 for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) { 223 for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) {
207 toString += (*it); 224 toString += (*it);
208 } 225 }
209 for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) { 226 for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) {
210 ccString += (*it); 227 ccString += (*it);
211 } 228 }
212 for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) { 229 for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) {
213 bccString += (*it); 230 bccString += (*it);
214 } 231 }
215 232
216 setCaption( caption().arg( m_mail[0] ) ); 233 setCaption( caption().arg( m_mail[0] ) );
217 234
218 m_mailHtml = "<html><body>" 235 m_mailHtml = "<html><body>"
219 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" 236 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>"
220 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" 237 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>"
221 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" 238 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>"
222 "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" 239 "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>"
223 "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + 240 "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" +
224 tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" 241 tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>"
225 "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + 242 "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] +
226 "</td></tr></table><font face=fixed>"; 243 "</td></tr></table><font face=fixed>";
227 244
245 if ( !m_showHtml ) {
228 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); 246 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" );
229 // remove later in favor of a real handling 247 } else {
230 m_gotBody = true; 248 browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" );
249 }
250 // remove later in favor of a real handling
251 m_gotBody = true;
231} 252}
232 253
233 254
234ViewMail::~ViewMail() 255ViewMail::~ViewMail()
235{ 256{
236 hide(); 257 hide();
237} 258}
238 259
239void ViewMail::hide() 260void ViewMail::hide()
240{ 261{
241 QWidget::hide(); 262 QWidget::hide();
242 263
diff --git a/noncore/net/mail/viewmail.h b/noncore/net/mail/viewmail.h
index dd7f854..bf7a4dd 100644
--- a/noncore/net/mail/viewmail.h
+++ b/noncore/net/mail/viewmail.h
@@ -33,29 +33,32 @@ public:
33 void setBody( RecBody body ); 33 void setBody( RecBody body );
34 bool deleted; 34 bool deleted;
35 35
36protected: 36protected:
37 QString deHtml(const QString &string); 37 QString deHtml(const QString &string);
38 38
39protected slots: 39protected slots:
40 void slotReply(); 40 void slotReply();
41 void slotForward(); 41 void slotForward();
42 void setText(); 42 void setText();
43 void slotItemClicked( QListViewItem * item , const QPoint & point, int c ); 43 void slotItemClicked( QListViewItem * item , const QPoint & point, int c );
44 void slotDeleteMail( ); 44 void slotDeleteMail( );
45 45 void slotShowHtml( bool );
46 46
47private: 47private:
48 void readConfig();
49
48 bool _inLoop; 50 bool _inLoop;
49 QString m_mailHtml; 51 QString m_mailHtml;
50 bool m_gotBody; 52 bool m_gotBody;
51 RecBody m_body; 53 RecBody m_body;
52 RecMail m_recMail; 54 RecMail m_recMail;
55 bool m_showHtml;
53 56
54 // 0 from 1 subject 2 bodytext 3 date 57 // 0 from 1 subject 2 bodytext 3 date
55 QMap <int,QString> m_mail; 58 QMap <int,QString> m_mail;
56 // 0 to 1 cc 2 bcc 59 // 0 to 1 cc 2 bcc
57 QMap <int,QStringList> m_mail2; 60 QMap <int,QStringList> m_mail2;
58 61
59}; 62};
60 63
61#endif 64#endif
diff --git a/noncore/net/mail/viewmailbase.cpp b/noncore/net/mail/viewmailbase.cpp
index 0c7f671..e69617d 100644
--- a/noncore/net/mail/viewmailbase.cpp
+++ b/noncore/net/mail/viewmailbase.cpp
@@ -34,24 +34,29 @@ ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl)
34 reply->addTo(toolbar); 34 reply->addTo(toolbar);
35 reply->addTo(mailmenu); 35 reply->addTo(mailmenu);
36 36
37 forward = new QAction(tr("Forward"), QIconSet(Resource::loadPixmap("mail/forward")), 0, 0, this); 37 forward = new QAction(tr("Forward"), QIconSet(Resource::loadPixmap("mail/forward")), 0, 0, this);
38 forward->addTo(toolbar); 38 forward->addTo(toolbar);
39 forward->addTo(mailmenu); 39 forward->addTo(mailmenu);
40 40
41 attachbutton = new QAction(tr("Attachments"), QIconSet(Resource::loadPixmap("mail/attach")), 0, 0, this, 0, true); 41 attachbutton = new QAction(tr("Attachments"), QIconSet(Resource::loadPixmap("mail/attach")), 0, 0, this, 0, true);
42 attachbutton->addTo(toolbar); 42 attachbutton->addTo(toolbar);
43 attachbutton->addTo(mailmenu); 43 attachbutton->addTo(mailmenu);
44 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool))); 44 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool)));
45 45
46
47 showHtml = new QAction( tr( "Show Html" ), QIconSet( Resource::loadPixmap( "mail/attach" ) ), 0, 0, this, 0, true );
48 showHtml->addTo( toolbar );
49 showHtml->addTo( mailmenu );
50
46 deleteMail = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this); 51 deleteMail = new QAction(tr("Delete Mail"), QIconSet(Resource::loadPixmap("mail/delete")), 0, 0, this);
47 deleteMail->addTo(toolbar); 52 deleteMail->addTo(toolbar);
48 deleteMail->addTo(mailmenu); 53 deleteMail->addTo(mailmenu);
49 54
50 QVBox *view = new QVBox(this); 55 QVBox *view = new QVBox(this);
51 setCentralWidget(view); 56 setCentralWidget(view);
52 57
53 attachments = new QListView(view); 58 attachments = new QListView(view);
54 attachments->setMinimumHeight(90); 59 attachments->setMinimumHeight(90);
55 attachments->setMaximumHeight(90); 60 attachments->setMaximumHeight(90);
56 attachments->setAllColumnsShowFocus(true); 61 attachments->setAllColumnsShowFocus(true);
57 attachments->addColumn("Mime Type", 60); 62 attachments->addColumn("Mime Type", 60);
diff --git a/noncore/net/mail/viewmailbase.h b/noncore/net/mail/viewmailbase.h
index 898522e..6d2a5b2 100644
--- a/noncore/net/mail/viewmailbase.h
+++ b/noncore/net/mail/viewmailbase.h
@@ -10,27 +10,28 @@ class QToolBar;
10class QTextBrowser; 10class QTextBrowser;
11class QMenuBar; 11class QMenuBar;
12class QPopupMenu; 12class QPopupMenu;
13 13
14class ViewMailBase : public QMainWindow 14class ViewMailBase : public QMainWindow
15{ 15{
16 Q_OBJECT 16 Q_OBJECT
17 17
18public: 18public:
19 ViewMailBase(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); 19 ViewMailBase(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
20 20
21protected: 21protected:
22 QAction *reply, *forward, *attachbutton, *deleteMail; 22 QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml;
23 QListView *attachments; 23 QListView *attachments;
24 QToolBar *toolbar; 24 QToolBar *toolbar;
25 QTextBrowser *browser; 25 QTextBrowser *browser;
26 OpenDiag *openDiag; 26 OpenDiag *openDiag;
27 QMenuBar *menubar; 27 QMenuBar *menubar;
28 QPopupMenu *mailmenu; 28 QPopupMenu *mailmenu;
29 29
30protected slots: 30protected slots:
31 void slotChangeAttachview(bool state); 31 void slotChangeAttachview(bool state);
32 32
33
33}; 34};
34 35
35#endif 36#endif
36 37