summaryrefslogtreecommitdiffabout
path: root/kmicromail
authorzautrix <zautrix>2004-07-04 17:18:13 (UTC)
committer zautrix <zautrix>2004-07-04 17:18:13 (UTC)
commit25671b4735f2604e13f4d6801b96f016ac8b9834 (patch) (unidiff)
tree8fb194ccfbec635f1ada9db16b76e81f72387216 /kmicromail
parent48bea7694899530fdfdbc0a2fefab6d3e64be1e1 (diff)
downloadkdepimpi-25671b4735f2604e13f4d6801b96f016ac8b9834.zip
kdepimpi-25671b4735f2604e13f4d6801b96f016ac8b9834.tar.gz
kdepimpi-25671b4735f2604e13f4d6801b96f016ac8b9834.tar.bz2
Usebility enhancement:Removed trash from toolbar, added exit button
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/mainwindow.cpp24
-rw-r--r--kmicromail/viewmail.cpp3
-rw-r--r--kmicromail/viewmailbase.cpp13
-rw-r--r--kmicromail/viewmailbase.h2
4 files changed, 25 insertions, 17 deletions
diff --git a/kmicromail/mainwindow.cpp b/kmicromail/mainwindow.cpp
index ddc7b3e..a500dec 100644
--- a/kmicromail/mainwindow.cpp
+++ b/kmicromail/mainwindow.cpp
@@ -1,232 +1,238 @@
1#include <qlabel.h> 1#include <qlabel.h>
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 <kdialog.h> 6#include <kdialog.h>
7#include <kiconloader.h> 7#include <kiconloader.h>
8 8
9#ifndef DESKTOP_VERSION 9#ifndef DESKTOP_VERSION
10#include <qpe/qpeapplication.h> 10#include <qpe/qpeapplication.h>
11#endif 11#endif
12#include "defines.h" 12#include "defines.h"
13#include "mainwindow.h" 13#include "mainwindow.h"
14#include <KDGanttMinimizeSplitter.h> 14#include <KDGanttMinimizeSplitter.h>
15 15
16 16
17#include <kabc/stdaddressbook.h> 17#include <kabc/stdaddressbook.h>
18 18
19MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) 19MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
20 : QMainWindow( parent, name, flags ) 20 : QMainWindow( parent, name, flags )
21{ 21{
22 setCaption( tr( "KMicroMail" ) ); 22 setCaption( tr( "KMicroMail" ) );
23 setToolBarsMovable( false ); 23 setToolBarsMovable( false );
24 KABC::StdAddressBook::self(); 24 KABC::StdAddressBook::self();
25 toolBar = new QToolBar( this ); 25 toolBar = new QToolBar( this );
26 menuBar = new QMenuBar( toolBar ); 26 menuBar = new QMenuBar( toolBar );
27 mailMenu = new QPopupMenu( menuBar ); 27 mailMenu = new QPopupMenu( menuBar );
28 menuBar->insertItem( tr( "Mail" ), mailMenu ); 28 menuBar->insertItem( tr( "Mail" ), mailMenu );
29 settingsMenu = new QPopupMenu( menuBar ); 29 settingsMenu = new QPopupMenu( menuBar );
30 menuBar->insertItem( tr( "Settings" ), settingsMenu ); 30 menuBar->insertItem( tr( "Settings" ), settingsMenu );
31 31
32 addToolBar( toolBar ); 32 addToolBar( toolBar );
33 toolBar->setHorizontalStretchable( true ); 33 toolBar->setHorizontalStretchable( true );
34 34
35 QLabel *spacer = new QLabel( toolBar ); 35
36 spacer->setBackgroundMode( QWidget::PaletteButton );
37 toolBar->setStretchableWidget( spacer );
38 36
39 composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"), 37 composeMail = new QAction( tr( "Compose new mail" ), SmallIcon("composemail"),
40 0, 0, this ); 38 0, 0, this );
41 composeMail->addTo( toolBar ); 39 composeMail->addTo( toolBar );
42 composeMail->addTo( mailMenu ); 40 composeMail->addTo( mailMenu );
43 41
44 sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") , 42 sendQueued = new QAction( tr( "Send queued mails" ), SmallIcon("sendqueued") ,
45 0, 0, this ); 43 0, 0, this );
46 sendQueued->addTo( toolBar ); 44 sendQueued->addTo( toolBar );
47 sendQueued->addTo( mailMenu ); 45 sendQueued->addTo( mailMenu );
48 46
49 /* 47 /*
50 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC, 48 syncFolders = new QAction( tr( "Sync mailfolders" ), ICON_SYNC,
51 0, 0, this ); 49 0, 0, this );
52 syncFolders->addTo( toolBar ); 50 syncFolders->addTo( toolBar );
53 syncFolders->addTo( mailMenu ); 51 syncFolders->addTo( mailMenu );
54 */ 52 */
55 53
56 showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") , 54 showFolders = new QAction( tr( "Show/Hide folders" ), SmallIcon("showfolders") ,
57 0, 0, this, 0, true ); 55 0, 0, this, 0, true );
58 showFolders->addTo( toolBar ); 56 showFolders->addTo( toolBar );
59 showFolders->addTo( mailMenu ); 57 showFolders->addTo( mailMenu );
60 showFolders->setOn( true ); 58 showFolders->setOn( true );
61 connect(showFolders, SIGNAL( toggled(bool) ), 59 connect(showFolders, SIGNAL( toggled(bool) ),
62 SLOT( slotShowFolders(bool) ) ); 60 SLOT( slotShowFolders(bool) ) );
63 61
64 /* 62 /*
65 searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ), 63 searchMails = new QAction( tr( "Search mails" ), SmallIcon("find") ),
66 0, 0, this ); 64 0, 0, this );
67 searchMails->addTo( toolBar ); 65 searchMails->addTo( toolBar );
68 searchMails->addTo( mailMenu ); 66 searchMails->addTo( mailMenu );
69 */ 67 */
70 68
71 deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this); 69 deleteMails = new QAction(tr("Delete Mail"), SmallIcon("trash"), 0, 0, this);
72 deleteMails->addTo( toolBar ); 70 deleteMails->addTo( toolBar );
73 deleteMails->addTo( mailMenu ); 71 deleteMails->addTo( mailMenu );
74 connect( deleteMails, SIGNAL( activated() ), 72 connect( deleteMails, SIGNAL( activated() ),
75 SLOT( slotDeleteMail() ) ); 73 SLOT( slotDeleteMail() ) );
76 74
77 editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") , 75 editSettings = new QAction( tr( "Edit settings" ), SmallIcon("SettingsIcon") ,
78 0, 0, this ); 76 0, 0, this );
79 editSettings->addTo( settingsMenu ); 77 editSettings->addTo( settingsMenu );
80 connect( editSettings, SIGNAL( activated() ), 78 connect( editSettings, SIGNAL( activated() ),
81 SLOT( slotEditSettings() ) ); 79 SLOT( slotEditSettings() ) );
82 editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") , 80 editAccounts = new QAction( tr( "Configure accounts" ), SmallIcon("editaccounts") ,
83 0, 0, this ); 81 0, 0, this );
84 editAccounts->addTo( settingsMenu ); 82 editAccounts->addTo( settingsMenu );
85 83
86 //setCentralWidget( view ); 84 //setCentralWidget( view );
87 85
88 QVBox* wrapperBox = new QVBox( this ); 86 QVBox* wrapperBox = new QVBox( this );
89 setCentralWidget( wrapperBox ); 87 setCentralWidget( wrapperBox );
90 88
91 // QWidget *view = new QWidget( wrapperBox ); 89 // QWidget *view = new QWidget( wrapperBox );
92 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox); 90 KDGanttMinimizeSplitter* split = new KDGanttMinimizeSplitter( Qt::Horizontal, wrapperBox);
93 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left); 91 split->setMinimizeDirection( KDGanttMinimizeSplitter::Left);
94 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight ); 92 //layout = new QBoxLayout ( split, QBoxLayout::LeftToRight );
95 93
96 folderView = new AccountView( split ); 94 folderView = new AccountView( split );
97 folderView->header()->hide(); 95 folderView->header()->hide();
98 folderView->setRootIsDecorated( false ); 96 folderView->setRootIsDecorated( false );
99 folderView->addColumn( tr( "Mailbox" ) ); 97 folderView->addColumn( tr( "Mailbox" ) );
100 98
101 //layout->addWidget( folderView ); 99 //layout->addWidget( folderView );
102 100
103 mailView = new QListView( split ); 101 mailView = new QListView( split );
104 mailView->addColumn( tr( " " ) ); 102 mailView->addColumn( tr( " " ) );
105 mailView->addColumn( tr( "Subject" ),QListView::Manual ); 103 mailView->addColumn( tr( "Subject" ),QListView::Manual );
106 mailView->addColumn( tr( "Sender" ),QListView::Manual ); 104 mailView->addColumn( tr( "Sender" ),QListView::Manual );
107 mailView->addColumn( tr( "Size" ),QListView::Manual); 105 mailView->addColumn( tr( "Size" ),QListView::Manual);
108 mailView->addColumn( tr( "Date" ),QListView::Manual); 106 mailView->addColumn( tr( "Date" ),QListView::Manual);
109 mailView->setAllColumnsShowFocus(true); 107 mailView->setAllColumnsShowFocus(true);
110 //mailView->setSorting(-1); 108 //mailView->setSorting(-1);
111 mailView->setRootIsDecorated( false ); 109 mailView->setRootIsDecorated( false );
112 statusWidget = new StatusWidget( wrapperBox ); 110 statusWidget = new StatusWidget( wrapperBox );
113 statusWidget->hide(); 111 statusWidget->hide();
114 112
115 //layout->addWidget( mailView ); 113 //layout->addWidget( mailView );
116 //layout->setStretchFactor( folderView, 1 ); 114 //layout->setStretchFactor( folderView, 1 );
117 //layout->setStretchFactor( mailView, 2 ); 115 //layout->setStretchFactor( mailView, 2 );
118 116
119 slotAdjustLayout(); 117 slotAdjustLayout();
120#ifndef DESKTOP_VERSION 118#ifndef DESKTOP_VERSION
121 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold); 119 QPEApplication::setStylusOperation( mailView->viewport(),QPEApplication::RightOnHold);
122 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold); 120 QPEApplication::setStylusOperation( folderView->viewport(),QPEApplication::RightOnHold);
123#endif 121#endif
124 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this, 122 connect( mailView, SIGNAL( doubleClicked (QListViewItem* )),this,
125 SLOT( mailLeftClicked(QListViewItem*) ) ); 123 SLOT( mailLeftClicked(QListViewItem*) ) );
126 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this, 124 connect( mailView, SIGNAL( returnPressed (QListViewItem* )),this,
127 SLOT( mailLeftClicked(QListViewItem*) ) ); 125 SLOT( mailLeftClicked(QListViewItem*) ) );
128 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this, 126 connect( mailView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int) ),this,
129 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) ); 127 SLOT( mailHold(int,QListViewItem*,const QPoint&,int) ) );
130 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)), 128 connect(folderView, SIGNAL(refreshMailview(const QValueList<RecMailP>&)),
131 this,SLOT(refreshMailView(const QValueList<RecMailP>&))); 129 this,SLOT(refreshMailView(const QValueList<RecMailP>&)));
132 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) ); 130 connect( composeMail, SIGNAL( activated() ), SLOT( slotComposeMail() ) );
133 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) ); 131 connect( sendQueued, SIGNAL( activated() ), SLOT( slotSendQueued() ) );
134// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) ); 132// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) );
135 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) ); 133 connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) );
136 mailView->setMultiSelection ( true ); 134 //mailView->setMultiSelection ( true );
137 //mailView->setSelectionMode( QListView::Extended ); 135 mailView->setSelectionMode( QListView::Extended );
138 QValueList<int> list; 136 QValueList<int> list;
139 int fw = 100; 137 int fw = 100;
140 if ( QApplication::desktop()->width() > 320 ) 138 if ( QApplication::desktop()->width() > 320 )
141 fw = 50; 139 fw = 50;
142 list.append( fw ); 140 list.append( fw );
143 list.append( 100 ); 141 list.append( 100 );
144 split->setSizes( list ); 142 split->setSizes( list );
145 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) ); 143 QTimer::singleShot( 1000, this, SLOT( slotAdjustColumns() ) );
146 mailView->setShowSortIndicator ( true ); 144 mailView->setShowSortIndicator ( true );
145 QLabel *spacer = new QLabel( toolBar );
146 spacer->setBackgroundMode( QWidget::PaletteButton );
147 toolBar->setStretchableWidget( spacer );
148
149 QAction* closeMail = new QAction(tr("Close"),SmallIcon("exit"), 0, 0, this);
150 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) );
151 closeMail->addTo(toolBar);
152 closeMail->addTo(mailMenu);
147} 153}
148 154
149MainWindow::~MainWindow() 155MainWindow::~MainWindow()
150{ 156{
151} 157}
152 158
153void MainWindow::appMessage(const QCString &, const QByteArray &) 159void MainWindow::appMessage(const QCString &, const QByteArray &)
154{ 160{
155 qDebug("appMessage implemented by subclass"); 161 qDebug("appMessage implemented by subclass");
156} 162}
157 163
158void MainWindow::slotAdjustLayout() { 164void MainWindow::slotAdjustLayout() {
159 165
160 /* 166 /*
161 QWidget *d = QApplication::desktop(); 167 QWidget *d = QApplication::desktop();
162 168
163 if ( d->width() < d->height() ) { 169 if ( d->width() < d->height() ) {
164 layout->setDirection( QBoxLayout::TopToBottom ); 170 layout->setDirection( QBoxLayout::TopToBottom );
165 } else { 171 } else {
166 layout->setDirection( QBoxLayout::LeftToRight ); 172 layout->setDirection( QBoxLayout::LeftToRight );
167 } 173 }
168 */ 174 */
169} 175}
170 176
171void MainWindow::slotAdjustColumns() 177void MainWindow::slotAdjustColumns()
172{ 178{
173 bool hidden = folderView->isHidden(); 179 bool hidden = folderView->isHidden();
174 if ( hidden ) folderView->show(); 180 if ( hidden ) folderView->show();
175 folderView->setColumnWidth( 0, folderView->visibleWidth() ); 181 folderView->setColumnWidth( 0, folderView->visibleWidth() );
176 if ( hidden ) folderView->hide(); 182 if ( hidden ) folderView->hide();
177 183
178 mailView->setColumnWidth( 0, 10 ); 184 mailView->setColumnWidth( 0, 10 );
179 mailView->setColumnWidth( 1, 80 ); 185 mailView->setColumnWidth( 1, 100 );
180 mailView->setColumnWidth( 2, 80 ); 186 mailView->setColumnWidth( 2, 100 );
181 mailView->setColumnWidth( 3, 50 ); 187 mailView->setColumnWidth( 3, 50 );
182 mailView->setColumnWidth( 4, 50 ); 188 mailView->setColumnWidth( 4, 120 );
183} 189}
184 190
185void MainWindow::slotEditSettings() 191void MainWindow::slotEditSettings()
186{ 192{
187} 193}
188 194
189void MainWindow::slotShowFolders( bool ) 195void MainWindow::slotShowFolders( bool )
190{ 196{
191 qDebug("not implemented: "); 197 qDebug("not implemented: ");
192} 198}
193 199
194void MainWindow::refreshMailView(const QValueList<RecMailP>&) 200void MainWindow::refreshMailView(const QValueList<RecMailP>&)
195{ 201{
196 qDebug("not implemented: "); 202 qDebug("not implemented: ");
197} 203}
198 204
199void MainWindow::mailLeftClicked(QListViewItem * ) 205void MainWindow::mailLeftClicked(QListViewItem * )
200{ 206{
201 qDebug("not implemented: "); 207 qDebug("not implemented: ");
202} 208}
203 209
204void MainWindow::displayMail() 210void MainWindow::displayMail()
205{ 211{
206 qDebug("not implemented: "); 212 qDebug("not implemented: ");
207} 213}
208 214
209void MainWindow::slotDeleteMail() 215void MainWindow::slotDeleteMail()
210{ 216{
211 qDebug("not implemented: "); 217 qDebug("not implemented: ");
212} 218}
213 219
214void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int ) 220void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int )
215{ 221{
216 qDebug("not implemented: "); 222 qDebug("not implemented: ");
217} 223}
218 224
219void MainWindow::slotSendQueued() 225void MainWindow::slotSendQueued()
220{ 226{
221 qDebug("not implemented: "); 227 qDebug("not implemented: ");
222} 228}
223 229
224void MainWindow::slotEditAccounts() 230void MainWindow::slotEditAccounts()
225{ 231{
226 qDebug("not implemented: "); 232 qDebug("not implemented: ");
227} 233}
228 234
229void MainWindow::slotComposeMail() 235void MainWindow::slotComposeMail()
230{ 236{
231 qDebug("not implemented: "); 237 qDebug("not implemented: ");
232} 238}
diff --git a/kmicromail/viewmail.cpp b/kmicromail/viewmail.cpp
index b434318..703711d 100644
--- a/kmicromail/viewmail.cpp
+++ b/kmicromail/viewmail.cpp
@@ -1,525 +1,526 @@
1#include "composemail.h" 1#include "composemail.h"
2#include "viewmail.h" 2#include "viewmail.h"
3 3
4#include <libmailwrapper/settings.h> 4#include <libmailwrapper/settings.h>
5#include <libmailwrapper/abstractmail.h> 5#include <libmailwrapper/abstractmail.h>
6#include <libmailwrapper/mailtypes.h> 6#include <libmailwrapper/mailtypes.h>
7#include <kapplication.h> 7#include <kapplication.h>
8 8
9/* OPIE */ 9/* OPIE */
10//#include <opie2/odebug.h> 10//#include <opie2/odebug.h>
11//#include <opie2/ofiledialog.h> 11//#include <opie2/ofiledialog.h>
12//#include <opie2/oimagescrollview.h> 12//#include <opie2/oimagescrollview.h>
13 13
14#include <kfiledialog.h> 14#include <kfiledialog.h>
15#include <kdialog.h> 15#include <kdialog.h>
16 16
17#include <qpe/config.h> 17#include <qpe/config.h>
18#include <qpe/qpeapplication.h> 18#include <qpe/qpeapplication.h>
19 19
20/* QT */ 20/* QT */
21#include <qtextbrowser.h> 21#include <qtextbrowser.h>
22#include <qmessagebox.h> 22#include <qmessagebox.h>
23#include <qtextstream.h> 23#include <qtextstream.h>
24#include <qaction.h> 24#include <qaction.h>
25#include <qpopupmenu.h> 25#include <qpopupmenu.h>
26#include <qfile.h> 26#include <qfile.h>
27#include <qlayout.h> 27#include <qlayout.h>
28 28
29//using namespace Opie::Ui; 29//using namespace Opie::Ui;
30//using namespace Opie::Core; 30//using namespace Opie::Core;
31 31
32AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 32AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
33 const QString&fsize,int num,const QValueList<int>&path) 33 const QString&fsize,int num,const QValueList<int>&path)
34 : QListViewItem(parent,after),_partNum(num) 34 : QListViewItem(parent,after),_partNum(num)
35{ 35{
36 _path=path; 36 _path=path;
37 setText(0, mime); 37 setText(0, mime);
38 setText(1, desc); 38 setText(1, desc);
39 setText(2, file); 39 setText(2, file);
40 setText(3, fsize); 40 setText(3, fsize);
41} 41}
42 42
43AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, 43AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file,
44 const QString&fsize,int num,const QValueList<int>&path) 44 const QString&fsize,int num,const QValueList<int>&path)
45 : QListViewItem(parent,after),_partNum(num) 45 : QListViewItem(parent,after),_partNum(num)
46{ 46{
47 _path=path; 47 _path=path;
48 setText(0, mime); 48 setText(0, mime);
49 setText(1, desc); 49 setText(1, desc);
50 setText(2, file); 50 setText(2, file);
51 setText(3, fsize); 51 setText(3, fsize);
52} 52}
53 53
54bool AttachItem::isParentof(const QValueList<int>&path) 54bool AttachItem::isParentof(const QValueList<int>&path)
55{ 55{
56 /* if not set, then no parent */ 56 /* if not set, then no parent */
57 if (path.count()==0||_path.count()==0) return false; 57 if (path.count()==0||_path.count()==0) return false;
58 /* the parent must have one digit less then a child */ 58 /* the parent must have one digit less then a child */
59 if (path.count()!=_path.count()+1) return false; 59 if (path.count()!=_path.count()+1) return false;
60 for (unsigned int i=0; i < _path.count();++i) 60 for (unsigned int i=0; i < _path.count();++i)
61 { 61 {
62 if (_path[i]!=path[i]) return false; 62 if (_path[i]!=path[i]) return false;
63 } 63 }
64 return true; 64 return true;
65} 65}
66 66
67AttachItem* ViewMail::searchParent(const QValueList<int>&path) 67AttachItem* ViewMail::searchParent(const QValueList<int>&path)
68{ 68{
69 QListViewItemIterator it( attachments ); 69 QListViewItemIterator it( attachments );
70 for ( ; it.current(); ++it ) 70 for ( ; it.current(); ++it )
71 { 71 {
72 AttachItem*ati = (AttachItem*)it.current(); 72 AttachItem*ati = (AttachItem*)it.current();
73 if (ati->isParentof(path)) return ati; 73 if (ati->isParentof(path)) return ati;
74 } 74 }
75 return 0; 75 return 0;
76} 76}
77 77
78AttachItem* ViewMail::lastChild(AttachItem*parent) 78AttachItem* ViewMail::lastChild(AttachItem*parent)
79{ 79{
80 if (!parent) return 0; 80 if (!parent) return 0;
81 AttachItem* item = (AttachItem*)parent->firstChild(); 81 AttachItem* item = (AttachItem*)parent->firstChild();
82 if (!item) return item; 82 if (!item) return item;
83 AttachItem*temp=0; 83 AttachItem*temp=0;
84 while( (temp=(AttachItem*)item->nextSibling())) 84 while( (temp=(AttachItem*)item->nextSibling()))
85 { 85 {
86 item = temp; 86 item = temp;
87 } 87 }
88 return item; 88 return item;
89} 89}
90 90
91void ViewMail::setBody(const RecBodyP&body ) 91void ViewMail::setBody(const RecBodyP&body )
92{ 92{
93 93
94 m_body = body; 94 m_body = body;
95 m_mail[2] = body->Bodytext(); 95 m_mail[2] = body->Bodytext();
96 attachbutton->setEnabled(body->Parts().count()>0); 96 attachbutton->setEnabled(body->Parts().count()>0);
97 attachments->setEnabled(body->Parts().count()>0); 97 attachments->setEnabled(body->Parts().count()>0);
98 if (body->Parts().count()==0) 98 if (body->Parts().count()==0)
99 { 99 {
100 return; 100 return;
101 } 101 }
102 AttachItem * curItem=0; 102 AttachItem * curItem=0;
103 AttachItem * parentItem = 0; 103 AttachItem * parentItem = 0;
104 QString type=body->Description()->Type()+"/"+body->Description()->Subtype(); 104 QString type=body->Description()->Type()+"/"+body->Description()->Subtype();
105 QString desc,fsize; 105 QString desc,fsize;
106 double s = body->Description()->Size(); 106 double s = body->Description()->Size();
107 int w; 107 int w;
108 w=0; 108 w=0;
109 109
110 while (s>1024) 110 while (s>1024)
111 { 111 {
112 s/=1024; 112 s/=1024;
113 ++w; 113 ++w;
114 if (w>=2) break; 114 if (w>=2) break;
115 } 115 }
116 116
117 QString q=""; 117 QString q="";
118 switch(w) 118 switch(w)
119 { 119 {
120 case 1: 120 case 1:
121 q="k"; 121 q="k";
122 break; 122 break;
123 case 2: 123 case 2:
124 q="M"; 124 q="M";
125 break; 125 break;
126 default: 126 default:
127 break; 127 break;
128 } 128 }
129 129
130 { 130 {
131 /* I did not found a method to make a CONTENT reset on a QTextStream 131 /* I did not found a method to make a CONTENT reset on a QTextStream
132 so I use this construct that the stream will re-constructed in each 132 so I use this construct that the stream will re-constructed in each
133 loop. To let it work, the textstream is packed into a own area of 133 loop. To let it work, the textstream is packed into a own area of
134 code is it will be destructed after finishing its small job. 134 code is it will be destructed after finishing its small job.
135 */ 135 */
136 QTextOStream o(&fsize); 136 QTextOStream o(&fsize);
137 if (w>0) o.precision(2); else o.precision(0); 137 if (w>0) o.precision(2); else o.precision(0);
138 o.setf(QTextStream::fixed); 138 o.setf(QTextStream::fixed);
139 o << s << " " << q << "Byte"; 139 o << s << " " << q << "Byte";
140 } 140 }
141 141
142 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist()); 142 curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body->Description()->Positionlist());
143 QString filename = ""; 143 QString filename = "";
144 144
145 for (unsigned int i = 0; i < body->Parts().count();++i) 145 for (unsigned int i = 0; i < body->Parts().count();++i)
146 { 146 {
147 filename = ""; 147 filename = "";
148 type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype(); 148 type = body->Parts()[i]->Type()+"/"+body->Parts()[i]->Subtype();
149 part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin(); 149 part_plist_t::ConstIterator it = body->Parts()[i]->Parameters().begin();
150 for (;it!=body->Parts()[i]->Parameters().end();++it) 150 for (;it!=body->Parts()[i]->Parameters().end();++it)
151 { 151 {
152 if (it.key().lower()=="name") 152 if (it.key().lower()=="name")
153 { 153 {
154 filename=it.data(); 154 filename=it.data();
155 } 155 }
156 } 156 }
157 s = body->Parts()[i]->Size(); 157 s = body->Parts()[i]->Size();
158 w = 0; 158 w = 0;
159 while (s>1024) 159 while (s>1024)
160 { 160 {
161 s/=1024; 161 s/=1024;
162 ++w; 162 ++w;
163 if (w>=2) break; 163 if (w>=2) break;
164 } 164 }
165 switch(w) 165 switch(w)
166 { 166 {
167 case 1: 167 case 1:
168 q="k"; 168 q="k";
169 break; 169 break;
170 case 2: 170 case 2:
171 q="M"; 171 q="M";
172 break; 172 break;
173 default: 173 default:
174 q=""; 174 q="";
175 break; 175 break;
176 } 176 }
177 QTextOStream o(&fsize); 177 QTextOStream o(&fsize);
178 if (w>0) o.precision(2); else o.precision(0); 178 if (w>0) o.precision(2); else o.precision(0);
179 o.setf(QTextStream::fixed); 179 o.setf(QTextStream::fixed);
180 o << s << " " << q << "Byte"; 180 o << s << " " << q << "Byte";
181 desc = body->Parts()[i]->Description(); 181 desc = body->Parts()[i]->Description();
182 parentItem = searchParent(body->Parts()[i]->Positionlist()); 182 parentItem = searchParent(body->Parts()[i]->Positionlist());
183 if (parentItem) 183 if (parentItem)
184 { 184 {
185 AttachItem*temp = lastChild(parentItem); 185 AttachItem*temp = lastChild(parentItem);
186 if (temp) curItem = temp; 186 if (temp) curItem = temp;
187 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); 187 curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist());
188 attachments->setRootIsDecorated(true); 188 attachments->setRootIsDecorated(true);
189 curItem = parentItem; 189 curItem = parentItem;
190 } 190 }
191 else 191 else
192 { 192 {
193 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist()); 193 curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body->Parts()[i]->Positionlist());
194 } 194 }
195 } 195 }
196} 196}
197 197
198 198
199void ViewMail::slotShowHtml( bool state ) 199void ViewMail::slotShowHtml( bool state )
200{ 200{
201 m_showHtml = state; 201 m_showHtml = state;
202 setText(); 202 setText();
203} 203}
204 204
205void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) 205void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int )
206{ 206{
207 if (!item ) 207 if (!item )
208 return; 208 return;
209 209
210 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) 210 if ( ( ( AttachItem* )item )->Partnumber() == -1 )
211 { 211 {
212 setText(); 212 setText();
213 return; 213 return;
214 } 214 }
215 QPopupMenu *menu = new QPopupMenu(); 215 QPopupMenu *menu = new QPopupMenu();
216 int ret=0; 216 int ret=0;
217 217
218 if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" ) 218 if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" )
219 { 219 {
220 menu->insertItem( tr( "Show Text" ), 1 ); 220 menu->insertItem( tr( "Show Text" ), 1 );
221 } 221 }
222 if (item->text(0).left(6)=="image/") { 222 if (item->text(0).left(6)=="image/") {
223 menu->insertItem(tr("Display image preview"),2); 223 menu->insertItem(tr("Display image preview"),2);
224 } 224 }
225 menu->insertItem( tr( "Save Attachment" ), 0 ); 225 menu->insertItem( tr( "Save Attachment" ), 0 );
226 menu->insertSeparator(1); 226 menu->insertSeparator(1);
227 227
228 ret = menu->exec( point, 0 ); 228 ret = menu->exec( point, 0 );
229 229
230 switch(ret) 230 switch(ret)
231 { 231 {
232 case 0: 232 case 0:
233 { 233 {
234 //MimeTypes types; 234 //MimeTypes types;
235 //types.insert( "all", "*" ); 235 //types.insert( "all", "*" );
236 QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this ); 236 QString str = KFileDialog::getSaveFileName( "/", item->text( 2 ), this );
237 237
238 if( !str.isEmpty() ) 238 if( !str.isEmpty() )
239 { 239 {
240 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); 240 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] );
241 if (content) 241 if (content)
242 { 242 {
243 QFile output(str); 243 QFile output(str);
244 output.open(IO_WriteOnly); 244 output.open(IO_WriteOnly);
245 output.writeBlock(content->Content(),content->Length()); 245 output.writeBlock(content->Content(),content->Length());
246 output.close(); 246 output.close();
247 delete content; 247 delete content;
248 } 248 }
249 } 249 }
250 } 250 }
251 break ; 251 break ;
252 252
253 case 2: 253 case 2:
254 { 254 {
255 QString tmpfile = "/tmp/opiemail-image"; 255 QString tmpfile = "/tmp/opiemail-image";
256 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); 256 encodedString*content = m_recMail->Wrapper()->fetchDecodedPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] );
257 if (content) { 257 if (content) {
258 QFile output(tmpfile); 258 QFile output(tmpfile);
259 output.open(IO_WriteOnly); 259 output.open(IO_WriteOnly);
260 output.writeBlock(content->Content(),content->Length()); 260 output.writeBlock(content->Content(),content->Length());
261 output.close(); 261 output.close();
262 delete content; 262 delete content;
263 MailImageDlg iview(""); 263 MailImageDlg iview("");
264 iview.setName(tmpfile); 264 iview.setName(tmpfile);
265 KApplication::execDialog(&iview); 265 KApplication::execDialog(&iview);
266 output.remove(); 266 output.remove();
267 } 267 }
268 } 268 }
269 break; 269 break;
270 case 1: 270 case 1:
271 if ( ( ( AttachItem* )item )->Partnumber() == -1 ) 271 if ( ( ( AttachItem* )item )->Partnumber() == -1 )
272 { 272 {
273 setText(); 273 setText();
274 } 274 }
275 else 275 else
276 { 276 {
277 if ( m_recMail->Wrapper() != 0l ) 277 if ( m_recMail->Wrapper() != 0l )
278 { // make sure that there is a wrapper , even after delete or simular actions 278 { // make sure that there is a wrapper , even after delete or simular actions
279 browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); 279 browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) );
280 } 280 }
281 } 281 }
282 break; 282 break;
283 } 283 }
284 delete menu; 284 delete menu;
285} 285}
286 286
287 287
288void ViewMail::setMail(const RecMailP&mail ) 288void ViewMail::setMail(const RecMailP&mail )
289{ 289{
290 290
291 m_recMail = mail; 291 m_recMail = mail;
292 292
293 m_mail[0] = mail->getFrom(); 293 m_mail[0] = mail->getFrom();
294 m_mail[1] = mail->getSubject(); 294 m_mail[1] = mail->getSubject();
295 m_mail[3] = mail->getDate(); 295 m_mail[3] = mail->getDate();
296 m_mail[4] = mail->Msgid(); 296 m_mail[4] = mail->Msgid();
297 297
298 m_mail2[0] = mail->To(); 298 m_mail2[0] = mail->To();
299 m_mail2[1] = mail->CC(); 299 m_mail2[1] = mail->CC();
300 m_mail2[2] = mail->Bcc(); 300 m_mail2[2] = mail->Bcc();
301 301
302 setText(); 302 setText();
303} 303}
304 304
305 305
306 306
307ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) 307ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl)
308 : ViewMailBase(parent, name, fl), _inLoop(false) 308 : ViewMailBase(parent, name, fl), _inLoop(false)
309{ 309{
310 m_gotBody = false; 310 m_gotBody = false;
311 deleted = false; 311 deleted = false;
312 312
313 connect( reply, SIGNAL(activated()), SLOT(slotReply())); 313 connect( reply, SIGNAL(activated()), SLOT(slotReply()));
314 connect( forward, SIGNAL(activated()), SLOT(slotForward())); 314 connect( forward, SIGNAL(activated()), SLOT(slotForward()));
315 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); 315 connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) );
316 connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); 316 connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) );
317 connect( closeMail, SIGNAL( activated() ), SLOT( close() ) );
317 318
318 attachments->setEnabled(m_gotBody); 319 attachments->setEnabled(m_gotBody);
319 connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); 320 connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) );
320 321
321 readConfig(); 322 readConfig();
322 attachments->setSorting(-1); 323 attachments->setSorting(-1);
323} 324}
324 325
325void ViewMail::readConfig() 326void ViewMail::readConfig()
326{ 327{
327 Config cfg( "mail" ); 328 Config cfg( "mail" );
328 cfg.setGroup( "Settings" ); 329 cfg.setGroup( "Settings" );
329 m_showHtml = cfg.readBoolEntry( "showHtml", false ); 330 m_showHtml = cfg.readBoolEntry( "showHtml", false );
330 showHtml->setOn( m_showHtml ); 331 showHtml->setOn( m_showHtml );
331} 332}
332 333
333void ViewMail::setText() 334void ViewMail::setText()
334{ 335{
335 336
336 QString toString; 337 QString toString;
337 QString ccString; 338 QString ccString;
338 QString bccString; 339 QString bccString;
339 340
340 for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) 341 for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it )
341 { 342 {
342 toString += (*it); 343 toString += (*it);
343 } 344 }
344 for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) 345 for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it )
345 { 346 {
346 ccString += (*it); 347 ccString += (*it);
347 } 348 }
348 for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) 349 for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it )
349 { 350 {
350 bccString += (*it); 351 bccString += (*it);
351 } 352 }
352 353
353 setCaption( tr("E-Mail by %1").arg( m_mail[0] ) ); 354 setCaption( tr("E-Mail by %1").arg( m_mail[0] ) );
354 355
355 m_mailHtml = "<html><body>" 356 m_mailHtml = "<html><body>"
356 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" 357 "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>"
357 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" 358 "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>"
358 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" 359 "</td></tr><tr bgcolor=\"#EEEEE6\"><td>"
359 "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" 360 "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>"
360 "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + 361 "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" +
361 tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" 362 tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>"
362 "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + 363 "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] +
363 "</td></tr></table><font face=fixed>"; 364 "</td></tr></table><font face=fixed>";
364 365
365 if ( !m_showHtml ) 366 if ( !m_showHtml )
366 { 367 {
367 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); 368 browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" );
368 } 369 }
369 else 370 else
370 { 371 {
371 browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); 372 browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" );
372 } 373 }
373 // remove later in favor of a real handling 374 // remove later in favor of a real handling
374 m_gotBody = true; 375 m_gotBody = true;
375} 376}
376 377
377 378
378ViewMail::~ViewMail() 379ViewMail::~ViewMail()
379{ 380{
380 m_recMail->Wrapper()->cleanMimeCache(); 381 m_recMail->Wrapper()->cleanMimeCache();
381 hide(); 382 hide();
382} 383}
383 384
384void ViewMail::hide() 385void ViewMail::hide()
385{ 386{
386 QWidget::hide(); 387 QWidget::hide();
387 388
388 if (_inLoop) 389 if (_inLoop)
389 { 390 {
390 _inLoop = false; 391 _inLoop = false;
391 qApp->exit_loop(); 392 qApp->exit_loop();
392 393
393 } 394 }
394 395
395} 396}
396 397
397void ViewMail::exec() 398void ViewMail::exec()
398{ 399{
399 show(); 400 show();
400 401
401 if (!_inLoop) 402 if (!_inLoop)
402 { 403 {
403 _inLoop = true; 404 _inLoop = true;
404 qApp->enter_loop(); 405 qApp->enter_loop();
405 } 406 }
406 407
407} 408}
408 409
409QString ViewMail::deHtml(const QString &string) 410QString ViewMail::deHtml(const QString &string)
410{ 411{
411 QString string_ = string; 412 QString string_ = string;
412 string_.replace(QRegExp("&"), "&amp;"); 413 string_.replace(QRegExp("&"), "&amp;");
413 string_.replace(QRegExp("<"), "&lt;"); 414 string_.replace(QRegExp("<"), "&lt;");
414 string_.replace(QRegExp(">"), "&gt;"); 415 string_.replace(QRegExp(">"), "&gt;");
415 string_.replace(QRegExp("\\n"), "<br>"); 416 string_.replace(QRegExp("\\n"), "<br>");
416 return string_; 417 return string_;
417} 418}
418 419
419void ViewMail::slotReply() 420void ViewMail::slotReply()
420{ 421{
421 if (!m_gotBody) 422 if (!m_gotBody)
422 { 423 {
423 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); 424 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok"));
424 return; 425 return;
425 } 426 }
426 427
427 QString rtext; 428 QString rtext;
428 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose 429 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose
429 .arg( m_mail[0] ) 430 .arg( m_mail[0] )
430 .arg( m_mail[3] ); 431 .arg( m_mail[3] );
431 432
432 QString text = m_mail[2]; 433 QString text = m_mail[2];
433 QStringList lines = QStringList::split(QRegExp("\\n"), text); 434 QStringList lines = QStringList::split(QRegExp("\\n"), text);
434 QStringList::Iterator it; 435 QStringList::Iterator it;
435 for (it = lines.begin(); it != lines.end(); it++) 436 for (it = lines.begin(); it != lines.end(); it++)
436 { 437 {
437 rtext += "> " + *it + "\n"; 438 rtext += "> " + *it + "\n";
438 } 439 }
439 rtext += "\n"; 440 rtext += "\n";
440 441
441 QString prefix; 442 QString prefix;
442 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; 443 if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = "";
443 else prefix = "Re: "; // no i18n on purpose 444 else prefix = "Re: "; // no i18n on purpose
444 445
445 Settings *settings = new Settings(); 446 Settings *settings = new Settings();
446 ComposeMail composer( settings ,this, 0, true); 447 ComposeMail composer( settings ,this, 0, true);
447 if (m_recMail->Replyto().isEmpty()) { 448 if (m_recMail->Replyto().isEmpty()) {
448 composer.setTo( m_recMail->getFrom()); 449 composer.setTo( m_recMail->getFrom());
449 } else { 450 } else {
450 composer.setTo( m_recMail->Replyto()); 451 composer.setTo( m_recMail->Replyto());
451 } 452 }
452 composer.setSubject( prefix + m_mail[1] ); 453 composer.setSubject( prefix + m_mail[1] );
453 composer.setMessage( rtext ); 454 composer.setMessage( rtext );
454 composer.setInReplyTo(m_recMail->Msgid()); 455 composer.setInReplyTo(m_recMail->Msgid());
455 456
456 if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) 457 if ( QDialog::Accepted == KApplication::execDialog( &composer ) )
457 { 458 {
458 m_recMail->Wrapper()->answeredMail(m_recMail); 459 m_recMail->Wrapper()->answeredMail(m_recMail);
459 } 460 }
460} 461}
461 462
462void ViewMail::slotForward() 463void ViewMail::slotForward()
463{ 464{
464 if (!m_gotBody) 465 if (!m_gotBody)
465 { 466 {
466 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok")); 467 QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok"));
467 return; 468 return;
468 } 469 }
469 470
470 QString ftext; 471 QString ftext;
471 ftext += QString("\n----- Forwarded message from %1 -----\n\n") 472 ftext += QString("\n----- Forwarded message from %1 -----\n\n")
472 .arg( m_mail[0] ); 473 .arg( m_mail[0] );
473 if (!m_mail[3].isNull()) 474 if (!m_mail[3].isNull())
474 ftext += QString("Date: %1\n") 475 ftext += QString("Date: %1\n")
475 .arg( m_mail[3] ); 476 .arg( m_mail[3] );
476 if (!m_mail[0].isNull()) 477 if (!m_mail[0].isNull())
477 ftext += QString("From: %1\n") 478 ftext += QString("From: %1\n")
478 .arg( m_mail[0] ); 479 .arg( m_mail[0] );
479 if (!m_mail[1].isNull()) 480 if (!m_mail[1].isNull())
480 ftext += QString("Subject: %1\n") 481 ftext += QString("Subject: %1\n")
481 .arg( m_mail[1] ); 482 .arg( m_mail[1] );
482 483
483 ftext += QString("\n%1\n") 484 ftext += QString("\n%1\n")
484 .arg( m_mail[2]); 485 .arg( m_mail[2]);
485 486
486 ftext += QString("----- End forwarded message -----\n"); 487 ftext += QString("----- End forwarded message -----\n");
487 488
488 Settings *settings = new Settings(); 489 Settings *settings = new Settings();
489 ComposeMail composer( settings ,this, 0, true); 490 ComposeMail composer( settings ,this, 0, true);
490 composer.setSubject( "Fwd: " + m_mail[1] ); 491 composer.setSubject( "Fwd: " + m_mail[1] );
491 composer.setMessage( ftext ); 492 composer.setMessage( ftext );
492 if ( QDialog::Accepted == KApplication::execDialog( &composer )) 493 if ( QDialog::Accepted == KApplication::execDialog( &composer ))
493 { 494 {
494 } 495 }
495} 496}
496 497
497void ViewMail::slotDeleteMail( ) 498void ViewMail::slotDeleteMail( )
498{ 499{
499 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 500 if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
500 { 501 {
501 m_recMail->Wrapper()->deleteMail( m_recMail ); 502 m_recMail->Wrapper()->deleteMail( m_recMail );
502 hide(); 503 hide();
503 deleted = true; 504 deleted = true;
504 } 505 }
505} 506}
506 507
507MailImageDlg::MailImageDlg(const QString&fname,QWidget *parent, const char *name, bool modal, WFlags f) 508MailImageDlg::MailImageDlg(const QString&fname,QWidget *parent, const char *name, bool modal, WFlags f)
508 : KDialog(parent,name,modal) 509 : KDialog(parent,name,modal)
509{ 510{
510 QVBoxLayout*dlglayout = new QVBoxLayout(this); 511 QVBoxLayout*dlglayout = new QVBoxLayout(this);
511 dlglayout->setSpacing(2); 512 dlglayout->setSpacing(2);
512 dlglayout->setMargin(1); 513 dlglayout->setMargin(1);
513 //m_imageview = new Opie::MM::OImageScrollView(this); 514 //m_imageview = new Opie::MM::OImageScrollView(this);
514 //dlglayout->addWidget(m_imageview); 515 //dlglayout->addWidget(m_imageview);
515} 516}
516 517
517MailImageDlg::~MailImageDlg() 518MailImageDlg::~MailImageDlg()
518{ 519{
519} 520}
520 521
521void MailImageDlg::setName(const QString&fname) 522void MailImageDlg::setName(const QString&fname)
522{ 523{
523 qDebug("viewmail.cpp: MailImageDlg::setName Pending"); 524 qDebug("viewmail.cpp: MailImageDlg::setName Pending");
524 // m_imageview->setImage(fname); 525 // m_imageview->setImage(fname);
525} 526}
diff --git a/kmicromail/viewmailbase.cpp b/kmicromail/viewmailbase.cpp
index 2590481..584a0ac 100644
--- a/kmicromail/viewmailbase.cpp
+++ b/kmicromail/viewmailbase.cpp
@@ -1,90 +1,91 @@
1#include <qtextbrowser.h> 1#include <qtextbrowser.h>
2#include <qlistview.h> 2#include <qlistview.h>
3#include <qaction.h> 3#include <qaction.h>
4#include <qlabel.h> 4#include <qlabel.h>
5#include <qvbox.h> 5#include <qvbox.h>
6 6
7#include <qtoolbar.h> 7#include <qtoolbar.h>
8#include <qmenubar.h> 8#include <qmenubar.h>
9#include <kiconloader.h> 9#include <kiconloader.h>
10//#include <qpe/resource.h> 10//#include <qpe/resource.h>
11 11
12#include "viewmailbase.h" 12#include "viewmailbase.h"
13//#include "opendiag.h" 13//#include "opendiag.h"
14 14
15ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl) 15ViewMailBase::ViewMailBase(QWidget *parent, const char *name, WFlags fl)
16 : QMainWindow(parent, name, fl) 16 : QMainWindow(parent, name, fl)
17{ 17{
18 18
19 setToolBarsMovable(false); 19 setToolBarsMovable(false);
20 20
21 toolbar = new QToolBar(this); 21 toolbar = new QToolBar(this);
22 menubar = new QMenuBar( toolbar ); 22 menubar = new QMenuBar( toolbar );
23 mailmenu = new QPopupMenu( menubar ); 23 mailmenu = new QPopupMenu( menubar );
24 menubar->insertItem( tr( "Mail" ), mailmenu ); 24 menubar->insertItem( tr( "Mail" ), mailmenu );
25 25
26 toolbar->setHorizontalStretchable(true); 26 toolbar->setHorizontalStretchable(true);
27 addToolBar(toolbar); 27 addToolBar(toolbar);
28 28
29 QLabel *spacer = new QLabel(toolbar);
30 spacer->setBackgroundMode(QWidget::PaletteButton);
31 toolbar->setStretchableWidget(spacer);
32
33 reply = new QAction(tr("Reply"),SmallIcon("reply"), 0, 0, this); 29 reply = new QAction(tr("Reply"),SmallIcon("reply"), 0, 0, this);
34 reply->addTo(toolbar); 30 reply->addTo(toolbar);
35 reply->addTo(mailmenu); 31 reply->addTo(mailmenu);
36 32
37 forward = new QAction(tr("Forward"),SmallIcon("forward"), 0, 0, this); 33 forward = new QAction(tr("Forward"),SmallIcon("forward"), 0, 0, this);
38 forward->addTo(toolbar); 34 forward->addTo(toolbar);
39 forward->addTo(mailmenu); 35 forward->addTo(mailmenu);
40 36
41 attachbutton = new QAction(tr("Attachments"),SmallIcon("attach"), 0, 0, this, 0, true); 37 attachbutton = new QAction(tr("Attachments"),SmallIcon("attach"), 0, 0, this, 0, true);
42 attachbutton->addTo(toolbar); 38 attachbutton->addTo(toolbar);
43 attachbutton->addTo(mailmenu); 39 attachbutton->addTo(mailmenu);
44 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool))); 40 connect(attachbutton, SIGNAL(toggled(bool)), SLOT(slotChangeAttachview(bool)));
45 41
46 42
47 showHtml = new QAction( tr( "Show Html" ), SmallIcon( "html" ), 0, 0, this, 0, true ); 43 showHtml = new QAction( tr( "Show Html" ), SmallIcon( "html" ), 0, 0, this, 0, true );
48 showHtml->addTo( toolbar ); 44 showHtml->addTo( toolbar );
49 showHtml->addTo( mailmenu ); 45 showHtml->addTo( mailmenu );
50 46
51 deleteMail = new QAction(tr("Delete Mail"),SmallIcon("trash"), 0, 0, this); 47 deleteMail = new QAction(tr("Delete Mail"),SmallIcon("trash"), 0, 0, this);
52 deleteMail->addTo(toolbar); 48 deleteMail->addTo(toolbar);
53 deleteMail->addTo(mailmenu); 49 deleteMail->addTo(mailmenu);
54 50 closeMail = new QAction(tr("Close"),SmallIcon("exit"), 0, 0, this);
51 QLabel *spacer = new QLabel(toolbar);
52 spacer->setBackgroundMode(QWidget::PaletteButton);
53 toolbar->setStretchableWidget(spacer);
54 closeMail->addTo(toolbar);
55 closeMail->addTo(mailmenu);
55 QVBox *view = new QVBox(this); 56 QVBox *view = new QVBox(this);
56 setCentralWidget(view); 57 setCentralWidget(view);
57 58
58 attachments = new QListView(view); 59 attachments = new QListView(view);
59 attachments->setMinimumHeight(90); 60 attachments->setMinimumHeight(90);
60 attachments->setMaximumHeight(90); 61 attachments->setMaximumHeight(90);
61 attachments->setAllColumnsShowFocus(true); 62 attachments->setAllColumnsShowFocus(true);
62 attachments->addColumn("Mime Type", 60); 63 attachments->addColumn("Mime Type", 60);
63 attachments->addColumn(tr("Description"), 100); 64 attachments->addColumn(tr("Description"), 100);
64 attachments->addColumn(tr("Filename"), 80); 65 attachments->addColumn(tr("Filename"), 80);
65 attachments->addColumn(tr("Size"), 80); 66 attachments->addColumn(tr("Size"), 80);
66 attachments->setSorting(-1); 67 attachments->setSorting(-1);
67 attachments->hide(); 68 attachments->hide();
68 69
69 browser = new QTextBrowser(view); 70 browser = new QTextBrowser(view);
70 71
71 //openDiag = new OpenDiag(view); 72 //openDiag = new OpenDiag(view);
72 //openDiag->hide(); 73 //openDiag->hide();
73 74
74} 75}
75 76
76void ViewMailBase::slotChangeAttachview(bool state) 77void ViewMailBase::slotChangeAttachview(bool state)
77{ 78{
78 if (state) attachments->show(); 79 if (state) attachments->show();
79 else attachments->hide(); 80 else attachments->hide();
80} 81}
81 82
82void ViewMailBase::keyPressEvent ( QKeyEvent * e ) 83void ViewMailBase::keyPressEvent ( QKeyEvent * e )
83{ 84{
84 if( e->key()==Qt::Key_Escape ) { 85 if( e->key()==Qt::Key_Escape ) {
85 close(); 86 close();
86 e->accept(); 87 e->accept();
87 return; 88 return;
88 } 89 }
89 QWidget::keyPressEvent(e); 90 QWidget::keyPressEvent(e);
90} 91}
diff --git a/kmicromail/viewmailbase.h b/kmicromail/viewmailbase.h
index fdaad2a..c29d143 100644
--- a/kmicromail/viewmailbase.h
+++ b/kmicromail/viewmailbase.h
@@ -1,38 +1,38 @@
1#ifndef VIEWMAILBASE_H 1#ifndef VIEWMAILBASE_H
2#define VIEWMAILBASE_H 2#define VIEWMAILBASE_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5 5
6class QAction; 6class QAction;
7class OpenDiag; 7class OpenDiag;
8class QListView; 8class QListView;
9class QToolBar; 9class 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, *showHtml; 22 QAction *reply, *forward, *attachbutton, *deleteMail, *showHtml, *closeMail;
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 virtual void keyPressEvent ( QKeyEvent * e ); 32 virtual void keyPressEvent ( QKeyEvent * e );
33 33
34 34
35}; 35};
36 36
37#endif 37#endif
38 38