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