-rw-r--r-- | kmicromail/viewmail.cpp | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/kmicromail/viewmail.cpp b/kmicromail/viewmail.cpp index f1e0225..2093678 100644 --- a/kmicromail/viewmail.cpp +++ b/kmicromail/viewmail.cpp | |||
@@ -77,49 +77,50 @@ AttachItem* ViewMail::searchParent(const QValueList<int>&path) | |||
77 | { | 77 | { |
78 | AttachItem*ati = (AttachItem*)it.current(); | 78 | AttachItem*ati = (AttachItem*)it.current(); |
79 | if (ati->isParentof(path)) return ati; | 79 | if (ati->isParentof(path)) return ati; |
80 | } | 80 | } |
81 | return 0; | 81 | return 0; |
82 | } | 82 | } |
83 | 83 | ||
84 | AttachItem* ViewMail::lastChild(AttachItem*parent) | 84 | AttachItem* ViewMail::lastChild(AttachItem*parent) |
85 | { | 85 | { |
86 | if (!parent) return 0; | 86 | if (!parent) return 0; |
87 | AttachItem* item = (AttachItem*)parent->firstChild(); | 87 | AttachItem* item = (AttachItem*)parent->firstChild(); |
88 | if (!item) return item; | 88 | if (!item) return item; |
89 | AttachItem*temp=0; | 89 | AttachItem*temp=0; |
90 | while( (temp=(AttachItem*)item->nextSibling())) | 90 | while( (temp=(AttachItem*)item->nextSibling())) |
91 | { | 91 | { |
92 | item = temp; | 92 | item = temp; |
93 | } | 93 | } |
94 | return item; | 94 | return item; |
95 | } | 95 | } |
96 | 96 | ||
97 | void ViewMail::setBody(const RecBodyP&body ) | 97 | void ViewMail::setBody(const RecBodyP&body ) |
98 | { | 98 | { |
99 | 99 | ||
100 | m_body = body; | 100 | m_body = body; |
101 | m_mail[2] = body->Bodytext(); | 101 | m_mail[2] = QString::fromUtf8( body->Bodytext().latin1() ); |
102 | // qDebug("********text %s ",m_mail[2].latin1() ); | ||
102 | attachbutton->setEnabled(body->Parts().count()>0); | 103 | attachbutton->setEnabled(body->Parts().count()>0); |
103 | attachments->setEnabled(body->Parts().count()>0); | 104 | attachments->setEnabled(body->Parts().count()>0); |
104 | if (body->Parts().count()==0) | 105 | if (body->Parts().count()==0) |
105 | { | 106 | { |
106 | return; | 107 | return; |
107 | } | 108 | } |
108 | AttachItem * curItem=0; | 109 | AttachItem * curItem=0; |
109 | AttachItem * parentItem = 0; | 110 | AttachItem * parentItem = 0; |
110 | QString type=body->Description()->Type()+"/"+body->Description()->Subtype(); | 111 | QString type=body->Description()->Type()+"/"+body->Description()->Subtype(); |
111 | QString desc,fsize; | 112 | QString desc,fsize; |
112 | double s = body->Description()->Size(); | 113 | double s = body->Description()->Size(); |
113 | int w; | 114 | int w; |
114 | w=0; | 115 | w=0; |
115 | 116 | ||
116 | while (s>1024) | 117 | while (s>1024) |
117 | { | 118 | { |
118 | s/=1024; | 119 | s/=1024; |
119 | ++w; | 120 | ++w; |
120 | if (w>=2) break; | 121 | if (w>=2) break; |
121 | } | 122 | } |
122 | 123 | ||
123 | QString q=""; | 124 | QString q=""; |
124 | switch(w) | 125 | switch(w) |
125 | { | 126 | { |
@@ -279,108 +280,101 @@ void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int | |||
279 | break; | 280 | break; |
280 | case 1: | 281 | case 1: |
281 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) | 282 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) |
282 | { | 283 | { |
283 | setText(); | 284 | setText(); |
284 | } | 285 | } |
285 | else | 286 | else |
286 | { | 287 | { |
287 | if ( m_recMail->Wrapper() != 0l ) | 288 | if ( m_recMail->Wrapper() != 0l ) |
288 | { // make sure that there is a wrapper , even after delete or simular actions | 289 | { // make sure that there is a wrapper , even after delete or simular actions |
289 | browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); | 290 | browser->setText( m_recMail->Wrapper()->fetchTextPart( m_recMail, m_body->Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); |
290 | } | 291 | } |
291 | } | 292 | } |
292 | break; | 293 | break; |
293 | } | 294 | } |
294 | delete menu; | 295 | delete menu; |
295 | } | 296 | } |
296 | 297 | ||
297 | 298 | ||
298 | void ViewMail::setMail(const RecMailP&mail ) | 299 | void ViewMail::setMail(const RecMailP&mail ) |
299 | { | 300 | { |
300 | 301 | ||
301 | m_recMail = mail; | 302 | m_recMail = mail; |
302 | 303 | ||
303 | m_mail[0] = mail->getFrom(); | 304 | m_mail[0] = QString::fromUtf8( mail->getFrom().latin1() ); |
304 | m_mail[1] = mail->getSubject(); | 305 | m_mail[1] = QString::fromUtf8( mail->getSubject().latin1() ); |
305 | m_mail[3] = mail->getDate(); | 306 | m_mail[3] = QString::fromUtf8( mail->getDate().latin1() ); |
306 | m_mail[4] = mail->Msgid(); | 307 | m_mail[4] = QString::fromUtf8( mail->Msgid().latin1() ); |
307 | 308 | ||
308 | m_mail2[0] = mail->To(); | 309 | m_mail2[0] = mail->To(); |
309 | m_mail2[1] = mail->CC(); | 310 | m_mail2[1] = mail->CC(); |
310 | m_mail2[2] = mail->Bcc(); | 311 | m_mail2[2] = mail->Bcc(); |
311 | 312 | ||
312 | setText(); | 313 | setText(); |
313 | } | 314 | } |
314 | 315 | ||
315 | 316 | ||
316 | 317 | ||
317 | ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) | 318 | ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) |
318 | : ViewMailBase(parent, name, fl), _inLoop(false) | 319 | : ViewMailBase(parent, name, fl), _inLoop(false) |
319 | { | 320 | { |
320 | m_gotBody = false; | 321 | m_gotBody = false; |
321 | deleted = false; | 322 | deleted = false; |
322 | 323 | ||
323 | connect( reply, SIGNAL(activated()), SLOT(slotReply())); | 324 | connect( reply, SIGNAL(activated()), SLOT(slotReply())); |
324 | connect( forward, SIGNAL(activated()), SLOT(slotForward())); | 325 | connect( forward, SIGNAL(activated()), SLOT(slotForward())); |
325 | connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); | 326 | connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail() ) ); |
326 | connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); | 327 | connect( showHtml, SIGNAL( toggled(bool) ), SLOT( slotShowHtml(bool) ) ); |
327 | connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); | 328 | connect( closeMail, SIGNAL( activated() ), SLOT( close() ) ); |
328 | 329 | ||
329 | attachments->setEnabled(m_gotBody); | 330 | attachments->setEnabled(m_gotBody); |
330 | connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); | 331 | connect( attachments, SIGNAL( clicked(QListViewItem*,const QPoint&, int) ), SLOT( slotItemClicked(QListViewItem*,const QPoint&, int) ) ); |
331 | 332 | ||
332 | readConfig(); | 333 | readConfig(); |
333 | attachments->setSorting(-1); | 334 | attachments->setSorting(-1); |
334 | } | 335 | } |
335 | 336 | ||
336 | void ViewMail::readConfig() | 337 | void ViewMail::readConfig() |
337 | { | 338 | { |
338 | 339 | ||
339 | setFont ( KOPrefs::instance()->mReadFont ); | 340 | setFont ( KOPrefs::instance()->mReadFont ); |
340 | m_showHtml = KOPrefs::instance()->mViewAsHtml; | 341 | m_showHtml = KOPrefs::instance()->mViewAsHtml; |
341 | showHtml->setOn( m_showHtml ); | 342 | showHtml->setOn( m_showHtml ); |
342 | } | 343 | } |
343 | 344 | ||
344 | void ViewMail::setText() | 345 | void ViewMail::setText() |
345 | { | 346 | { |
346 | 347 | ||
347 | QString toString; | 348 | QString toString; |
348 | QString ccString; | 349 | QString ccString; |
349 | QString bccString; | 350 | QString bccString; |
350 | 351 | ||
351 | for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) | 352 | |
352 | { | 353 | toString = QString::fromUtf8(m_mail2[0].join(",").latin1()); |
353 | toString += (*it); | 354 | ccString = QString::fromUtf8(m_mail2[1].join(",").latin1()); |
354 | } | 355 | bccString = QString::fromUtf8(m_mail2[2].join(",").latin1()); |
355 | for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) | 356 | |
356 | { | ||
357 | ccString += (*it); | ||
358 | } | ||
359 | for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) | ||
360 | { | ||
361 | bccString += (*it); | ||
362 | } | ||
363 | 357 | ||
364 | setCaption( i18n("E-Mail by %1").arg( m_mail[0] ) ); | 358 | setCaption( i18n("E-Mail by %1").arg( m_mail[0] ) ); |
365 | 359 | ||
366 | m_mailHtml = "<html><body>" | 360 | m_mailHtml = "<html><body>" |
367 | "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" | 361 | "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" |
368 | "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" | 362 | "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" |
369 | "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" | 363 | "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" |
370 | "<b>" + i18n( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" | 364 | "<b>" + i18n( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" |
371 | "<b>" + i18n( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + | 365 | "<b>" + i18n( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + |
372 | i18n( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" | 366 | i18n( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" |
373 | "<b>" + i18n( "Date" ) + ": </b> " + m_mail[3] + | 367 | "<b>" + i18n( "Date" ) + ": </b> " + m_mail[3] + |
374 | "</td></tr></table><font>"; | 368 | "</td></tr></table><font>"; |
375 | 369 | ||
376 | if ( !m_showHtml ) | 370 | if ( !m_showHtml ) |
377 | { | 371 | { |
378 | browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); | 372 | browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); |
379 | } | 373 | } |
380 | else | 374 | else |
381 | { | 375 | { |
382 | browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); | 376 | browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); |
383 | } | 377 | } |
384 | // remove later in favor of a real handling | 378 | // remove later in favor of a real handling |
385 | m_gotBody = true; | 379 | m_gotBody = true; |
386 | } | 380 | } |
@@ -435,62 +429,63 @@ void ViewMail::slotReply() | |||
435 | return; | 429 | return; |
436 | } | 430 | } |
437 | 431 | ||
438 | QString rtext; | 432 | QString rtext; |
439 | rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose | 433 | rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose |
440 | .arg( m_mail[0] ) | 434 | .arg( m_mail[0] ) |
441 | .arg( m_mail[3] ); | 435 | .arg( m_mail[3] ); |
442 | 436 | ||
443 | QString text = m_mail[2]; | 437 | QString text = m_mail[2]; |
444 | QStringList lines = QStringList::split(QRegExp("\\n"), text); | 438 | QStringList lines = QStringList::split(QRegExp("\\n"), text); |
445 | QStringList::Iterator it; | 439 | QStringList::Iterator it; |
446 | for (it = lines.begin(); it != lines.end(); it++) | 440 | for (it = lines.begin(); it != lines.end(); it++) |
447 | { | 441 | { |
448 | rtext += "> " + *it + "\n"; | 442 | rtext += "> " + *it + "\n"; |
449 | } | 443 | } |
450 | rtext += "\n"; | 444 | rtext += "\n"; |
451 | 445 | ||
452 | QString prefix; | 446 | QString prefix; |
453 | if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; | 447 | if ( m_mail[1].find(QRegExp("^Re: .*$")) != -1) prefix = ""; |
454 | else prefix = "Re: "; // no i18n on purpose | 448 | else prefix = "Re: "; // no i18n on purpose |
455 | 449 | ||
456 | Settings *settings = new Settings(); | 450 | Settings *settings = new Settings(); |
457 | ComposeMail composer( settings ,this, 0, true); | 451 | ComposeMail composer( settings ,this, 0, true); |
458 | if (m_recMail->Replyto().isEmpty()) { | 452 | if (m_recMail->Replyto().isEmpty()) { |
459 | composer.setTo( m_recMail->getFrom()); | 453 | composer.setTo( QString::fromUtf8( m_recMail->getFrom().latin1())); |
460 | } else { | 454 | } else { |
461 | composer.setTo( m_recMail->Replyto()); | 455 | composer.setTo( QString::fromUtf8( m_recMail->Replyto().latin1())); |
462 | } | 456 | } |
463 | composer.setSubject( prefix + m_mail[1] ); | 457 | composer.setSubject( prefix + m_mail[1] ); |
464 | composer.setMessage( rtext ); | 458 | composer.setMessage( rtext ); |
465 | composer.setInReplyTo(m_recMail->Msgid()); | 459 | composer.setInReplyTo(m_recMail->Msgid()); |
466 | 460 | ||
467 | if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) | 461 | if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) |
468 | { | 462 | { |
469 | m_recMail->Wrapper()->answeredMail(m_recMail); | 463 | m_recMail->Wrapper()->answeredMail(m_recMail); |
470 | } | 464 | } |
465 | delete settings; | ||
471 | } | 466 | } |
472 | 467 | ||
473 | void ViewMail::slotForward() | 468 | void ViewMail::slotForward() |
474 | { | 469 | { |
475 | if (!m_gotBody) | 470 | if (!m_gotBody) |
476 | { | 471 | { |
477 | QMessageBox::information(this, i18n("Error"), i18n("<p>The mail body is not yet downloaded, so you cannot forward yet."), i18n("Ok")); | 472 | QMessageBox::information(this, i18n("Error"), i18n("<p>The mail body is not yet downloaded, so you cannot forward yet."), i18n("Ok")); |
478 | return; | 473 | return; |
479 | } | 474 | } |
480 | 475 | ||
481 | QString ftext; | 476 | QString ftext; |
482 | ftext += QString("\n----- Forwarded message from %1 -----\n\n") | 477 | ftext += QString("\n----- Forwarded message from %1 -----\n\n") |
483 | .arg( m_mail[0] ); | 478 | .arg( m_mail[0] ); |
484 | if (!m_mail[3].isNull()) | 479 | if (!m_mail[3].isNull()) |
485 | ftext += QString("Date: %1\n") | 480 | ftext += QString("Date: %1\n") |
486 | .arg( m_mail[3] ); | 481 | .arg( m_mail[3] ); |
487 | if (!m_mail[0].isNull()) | 482 | if (!m_mail[0].isNull()) |
488 | ftext += QString("From: %1\n") | 483 | ftext += QString("From: %1\n") |
489 | .arg( m_mail[0] ); | 484 | .arg( m_mail[0] ); |
490 | if (!m_mail[1].isNull()) | 485 | if (!m_mail[1].isNull()) |
491 | ftext += QString("Subject: %1\n") | 486 | ftext += QString("Subject: %1\n") |
492 | .arg( m_mail[1] ); | 487 | .arg( m_mail[1] ); |
493 | 488 | ||
494 | ftext += QString("\n%1\n") | 489 | ftext += QString("\n%1\n") |
495 | .arg( m_mail[2]); | 490 | .arg( m_mail[2]); |
496 | 491 | ||