summaryrefslogtreecommitdiffabout
path: root/kmicromail/viewmail.cpp
authorzautrix <zautrix>2004-07-04 17:18:13 (UTC)
committer zautrix <zautrix>2004-07-04 17:18:13 (UTC)
commit25671b4735f2604e13f4d6801b96f016ac8b9834 (patch) (unidiff)
tree8fb194ccfbec635f1ada9db16b76e81f72387216 /kmicromail/viewmail.cpp
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/viewmail.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/viewmail.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/kmicromail/viewmail.cpp b/kmicromail/viewmail.cpp
index b434318..703711d 100644
--- a/kmicromail/viewmail.cpp
+++ b/kmicromail/viewmail.cpp
@@ -188,257 +188,258 @@ void ViewMail::setBody(const RecBodyP&body )
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