summaryrefslogtreecommitdiff
path: root/noncore/unsupported/mail2/viewmail.cpp
Side-by-side diff
Diffstat (limited to 'noncore/unsupported/mail2/viewmail.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/mail2/viewmail.cpp44
1 files changed, 35 insertions, 9 deletions
diff --git a/noncore/unsupported/mail2/viewmail.cpp b/noncore/unsupported/mail2/viewmail.cpp
index ae1f5f3..3c88d99 100644
--- a/noncore/unsupported/mail2/viewmail.cpp
+++ b/noncore/unsupported/mail2/viewmail.cpp
@@ -1,9 +1,10 @@
#include <qtextbrowser.h>
#include <qmessagebox.h>
#include <qaction.h>
+#include <qapplication.h>
#include "mailfactory.h"
#include "composer.h"
#include "viewmail.h"
AttachItem::AttachItem(QListView *parent, AttachItemStore &attachItemStore)
@@ -20,13 +21,13 @@ AttachItem::AttachItem(QListViewItem *parent, AttachItemStore &attachItemStore)
setText(0, _attachItemStore.mimeType());
setText(1, _attachItemStore.fileName());
setText(2, _attachItemStore.description());
}
ViewMail::ViewMail(IMAPResponseFETCH &mail, IMAPHandler *handler, QWidget *parent, const char *name, WFlags fl)
- : ViewMailBase(parent, name, fl), _mail(mail), _handler(handler)
+ : ViewMailBase(parent, name, fl), _inLoop(false), _mail(mail), _handler(handler)
{
setCaption(caption().arg(mail.envelope().from()[0].name()));
_gotBody = false;
_mailHtml = tr(
"<html><body>"
@@ -58,12 +59,37 @@ ViewMail::ViewMail(IMAPResponseFETCH &mail, IMAPHandler *handler, QWidget *paren
browser->setText(QString(_mailHtml).arg(tr("Getting mail body from server. Please wait...")));
_handler->iUid("FETCH", QString("%1 (BODY[1])").arg(mail.uid()));
connect(_handler, SIGNAL(gotResponse(IMAPResponse &)), SLOT(slotIMAPUid(IMAPResponse &)));
}
+ViewMail::~ViewMail()
+{
+ hide();
+}
+
+void ViewMail::hide()
+{
+ QWidget::hide();
+
+ if (_inLoop) {
+ _inLoop = false;
+ qApp->exit_loop();
+ }
+}
+
+void ViewMail::exec()
+{
+ show();
+
+ if (!_inLoop) {
+ _inLoop = true;
+ qApp->enter_loop();
+ }
+}
+
QString ViewMail::deHtml(const QString &string)
{
QString string_ = string;
string_.replace(QRegExp("&"), "&amp;");
string_.replace(QRegExp("<"), "&lt;");
string_.replace(QRegExp(">"), "&gt;");
@@ -98,16 +124,16 @@ void ViewMail::slotReply()
SendMail sendMail;
sendMail.setTo(_mail.envelope().from()[0].toString());
sendMail.setSubject(prefix + _mail.envelope().subject());
sendMail.setInReplyTo(_mail.envelope().messageId());
sendMail.setMessage(rtext);
- Composer *composer = new Composer(0, 0, Qt::WType_Modal);
- composer->setSendMail(sendMail);
- composer->showMaximized();
- composer->show();
+ Composer composer(this, 0, true);
+ composer.setSendMail(sendMail);
+ composer.showMaximized();
+ composer.exec();
}
void ViewMail::slotForward()
{
if (!_gotBody) {
QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok"));
@@ -142,16 +168,16 @@ void ViewMail::slotForward()
ftext += QString("----- End forwarded message -----\n");
SendMail sendMail;
sendMail.setSubject("Fwd: " + _mail.envelope().subject());
sendMail.setMessage(ftext);
- Composer *composer = new Composer(0, 0, Qt::WType_Modal);
- composer->setSendMail(sendMail);
- composer->showMaximized();
- composer->show();
+ Composer composer(this, 0, true);
+ composer.setSendMail(sendMail);
+ composer.showMaximized();
+ composer.exec();
}
void ViewMail::slotIMAPUid(IMAPResponse &response)
{
disconnect(_handler, SIGNAL(gotResponse(IMAPResponse &)), this, SLOT(slotIMAPUid(IMAPResponse &)));