summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/mail2/attachdiag.cpp4
-rw-r--r--noncore/unsupported/mail2/attachdiag.h2
-rw-r--r--noncore/unsupported/mail2/composer.cpp2
-rw-r--r--noncore/unsupported/mail2/libmail/mailfactory.cpp4
4 files changed, 6 insertions, 6 deletions
diff --git a/noncore/unsupported/mail2/attachdiag.cpp b/noncore/unsupported/mail2/attachdiag.cpp
index 6e6c3d4..bedf3c4 100644
--- a/noncore/unsupported/mail2/attachdiag.cpp
+++ b/noncore/unsupported/mail2/attachdiag.cpp
@@ -1,71 +1,71 @@
#include <qmessagebox.h>
#include <qpushbutton.h>
#include <qlistbox.h>
#include <qlayout.h>
#include <qpe/fileselector.h>
#include <qpe/resource.h>
#include <stdlib.h>
#include "attachdiag.h"
AttachDiag::AttachDiag(QWidget* parent = 0, const char* name = 0, bool modal, WFlags fl = 0)
: QDialog(parent, name, modal, fl)
{
setCaption(tr("Attach File"));
QGridLayout *layout = new QGridLayout(this);
layout->setSpacing(3);
layout->setMargin(4);
FileSelector *fileSelector = new FileSelector("*", this, "FileSelector");
fileSelector->setCloseVisible(false);
fileSelector->setNewVisible(false);
layout->addMultiCellWidget(fileSelector, 0, 0, 0, 1);
QPushButton *attachButton = new QPushButton(this);
attachButton->setText(tr("Ok"));
attachButton->setIconSet(Resource::loadPixmap("enter"));
layout->addWidget(attachButton, 1, 0);
QPushButton *cancelButton = new QPushButton(this);
cancelButton->setText(tr("Cancel"));
cancelButton->setIconSet(Resource::loadPixmap("editdelete"));
layout->addWidget(cancelButton, 1, 1);
connect(fileSelector, SIGNAL(fileSelected(const DocLnk &)), SLOT(fileSelected(const DocLnk &)));
connect(attachButton, SIGNAL(clicked()), SLOT(accept()));
connect(cancelButton, SIGNAL(clicked()), SLOT(close()));
if (fileSelector->selected() != NULL)
currentFile = *fileSelector->selected();
if (fileSelector->fileCount() == 0) {
attachButton->setEnabled(false);
fileSelector->setEnabled(false);
}
}
void AttachDiag::fileSelected(const DocLnk &file)
{
currentFile = file;
}
-DocLnk AttachDiag::getFile()
+DocLnk AttachDiag::getFile(QWidget *parent)
{
- AttachDiag *attach = new AttachDiag(0, 0, true);
+ AttachDiag *attach = new AttachDiag(parent, 0, true);
attach->showMaximized();
attach->show();
if (QDialog::Accepted == attach->exec()) {
return attach->currentFile;
}
return DocLnk();
}
diff --git a/noncore/unsupported/mail2/attachdiag.h b/noncore/unsupported/mail2/attachdiag.h
index c673cfc..bce5b4b 100644
--- a/noncore/unsupported/mail2/attachdiag.h
+++ b/noncore/unsupported/mail2/attachdiag.h
@@ -1,27 +1,27 @@
#ifndef ATTACHDIAG_H
#define ATTACHDIAG_H
#include <qdialog.h>
#include <qpe/applnk.h>
class AttachDiag : public QDialog
{
Q_OBJECT
public:
- static DocLnk getFile();
+ static DocLnk getFile(QWidget *parent);
protected:
AttachDiag(QWidget *parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0);
private slots:
void fileSelected(const DocLnk &);
private:
DocLnk currentFile;
};
#endif
diff --git a/noncore/unsupported/mail2/composer.cpp b/noncore/unsupported/mail2/composer.cpp
index 57f0779..82ed117 100644
--- a/noncore/unsupported/mail2/composer.cpp
+++ b/noncore/unsupported/mail2/composer.cpp
@@ -74,145 +74,145 @@ void Composer::slotPopupHandler(int itemid)
}
if (itemid == POPUP_ATTACH_RENAME) {
QString tmp = Rename::rename(attachView->currentItem()->text(0), this);
if (tmp != QString(0)) attachView->currentItem()->setText(0, tmp);
} else if (itemid == POPUP_ATTACH_DESC) {
QString tmp = Rename::getText(tr("Set Description"), tr("<div align=center>Description"), this);
if (tmp != QString(0)) attachView->currentItem()->setText(1, tmp);
} else if (itemid == POPUP_ATTACH_REMOVE) {
attachView->takeItem(attachView->currentItem());
}
}
void Composer::slotSendMail()
{
if (to->text().find(QRegExp(".*\\@.*\\..*")) == -1) {
QMessageBox::information(this, tr("Error"), tr("<p>You have to specify a recipient.<br>(eg: foo@bar.org)</p>"), tr("Ok"));
return;
}
SendMail smail;
smail.setFrom(from->currentText());
smail.setReplyTo(replyto->text());
smail.setTo(to->text());
smail.setCc(cc->text());
smail.setBcc(bcc->text());
smail.setSubject(subject->text());
smail.setMessage(message->text());
smail.setNeedsMime(attachView->childCount() == 0 ? false : true);
smail.setAccount(accountsLoaded[from->currentItem()]);
if (priority->currentItem() == POPUP_PRIO_LOW) {
smail.setPriority("Low"); // No i18n on purpose
} else if (priority->currentItem() == POPUP_PRIO_NORMAL) {
smail.setPriority("Normal"); // No i18n on purpose
} else if (priority->currentItem() == POPUP_PRIO_HIGH) {
smail.setPriority("High"); // No i18n on purpose
}
QValueList<Attachment> attachments;
QListViewItem *item;
for (item = attachView->firstChild(); item != 0; item = item->itemBelow()) {
attachments.append(((AttachViewItem *)item)->attachment());
}
smail.setAttachments(attachments);
QString header, message;
MailFactory::genMail(header, message, smail, this);
if (header.isNull() || message.isNull()) return; // Aborted.
abort->setEnabled(true);
SmtpHandler *handler = new SmtpHandler(header, message, accountsLoaded[from->currentItem()], to->text());
connect(handler, SIGNAL(finished()), SLOT(slotSendFinished()));
connect(handler, SIGNAL(error(const QString &)), SLOT(slotSendError(const QString &)));
connect(handler, SIGNAL(status(const QString &)), status, SLOT(setText(const QString &)));
}
void Composer::slotSendError(const QString &error)
{
status->setText(tr("<font color=#ff0000>Error occoured during sending.</font>"));
QMessageBox::warning(this, tr("Error"), tr("<p>%1</p").arg(error), tr("Ok"));
}
void Composer::slotSendFinished()
{
QMessageBox::information(this, tr("Success"), tr("<p>The mail was sent successfully.</p>"), tr("Ok"));
status->setText(QString(0));
abort->setEnabled(false);
}
void Composer::slotFillStuff()
{
QValueList<Account> accounts = ConfigFile::getAccounts();
int i = 0;
QValueList<Account>::Iterator it;
for (it = accounts.begin(); it != accounts.end(); it++) {
if (!(*it).email().isEmpty() && !(*it).smtpServer().isEmpty() && !(*it).smtpPort().isEmpty()) {
if (!(*it).realName().isEmpty())
from->insertItem((*it).realName() + " <" + (*it).email() + ">", i);
else
from->insertItem((*it).email());
accountsLoaded.append(*it);
i++;
}
}
}
void Composer::slotFromChanged(int id)
{
Account account = accountsLoaded[id];
if (account.defaultCc()) cc->setText(account.cc());
if (account.defaultBcc()) bcc->setText(account.bcc());
if (account.defaultReplyTo()) replyto->setText(account.replyTo());
if (!account.signature().isEmpty())
message->setText(message->text() + "\n\n-- \n" + account.signature());
}
void Composer::slotOpenAddressPicker()
{
if (!to->isHidden() && cc->isHidden() && bcc->isHidden()) {
if (to->text().isEmpty()) {
to->setText(AddressPicker::getNames());
} else {
to->setText(to->text() + ", " + AddressPicker::getNames());
}
} else if (to->isHidden() && !cc->isHidden() && bcc->isHidden()) {
if (cc->text().isEmpty()) {
cc->setText(AddressPicker::getNames());
} else {
cc->setText(cc->text() + ", " + AddressPicker::getNames());
}
} else if (to->isHidden() && cc->isHidden() && !bcc->isHidden()) {
if (bcc->text().isEmpty()) {
bcc->setText(AddressPicker::getNames());
} else {
bcc->setText(bcc->text() + ", " + AddressPicker::getNames());
}
}
}
void Composer::slotAddAttach()
{
- DocLnk lnk = AttachDiag::getFile();
+ DocLnk lnk = AttachDiag::getFile(this);
if (lnk.name().isEmpty()) return;
Attachment attachment;
attachment.setFileName(lnk.file());
attachment.setNewName(lnk.name());
attachment.setDocLnk(&lnk);
(void) new AttachViewItem(attachView, attachment);
}
void Composer::slotDelAttach()
{
if (attachView->currentItem() == NULL) return;
attachView->takeItem(attachView->currentItem());
}
diff --git a/noncore/unsupported/mail2/libmail/mailfactory.cpp b/noncore/unsupported/mail2/libmail/mailfactory.cpp
index 427e72c..6602919 100644
--- a/noncore/unsupported/mail2/libmail/mailfactory.cpp
+++ b/noncore/unsupported/mail2/libmail/mailfactory.cpp
@@ -1,173 +1,173 @@
#include <qmessagebox.h>
#include <qtextstream.h>
#include <qfile.h>
#include <qpe/mimetype.h>
#include "miscfunctions.h"
#include "mailfactory.h"
#include "defines.h"
MailFactory::MailFactory(SendMail &smail, QWidget *parent)
: QObject(), _smail(smail), _parent(parent)
{
_abort = false;
Account account = _smail.account();
if (!_smail.from().isEmpty())
_header += "From: " + _smail.from() + "\n";
if (!_smail.replyTo().isEmpty())
_header += "Reply-To: " + _smail.replyTo() + "\n";
if (!_smail.to().isEmpty())
_header += "To: " + _smail.to() + "\n";
if (!_smail.cc().isEmpty())
_header += "Cc: " + _smail.cc() + "\n";
if (!_smail.bcc().isEmpty())
_header += "Bcc: " + _smail.bcc() + "\n";
if (!_smail.subject().isEmpty())
_header += "Subject: " + _smail.subject() + "\n";
if (!_smail.priority().isEmpty() || (_smail.priority() != "Normal"))
_header += "Priority: " + _smail.priority() + "\n";
_header += "Date: " + MiscFunctions::rfcDate() + "\n";
if (!_smail.account().org().isEmpty())
_header += "Organization: " + _smail.account().org() + "\n";
if (_smail.needsMime())
_header += "Mime-Version: 1.0\n";
_header += "Message-Id: <" + MiscFunctions::uniqueString() + "." + account.email() + ">\n";
if (!_smail.inReplyTo().isEmpty())
_header += "In-Reply-To: " + _smail.inReplyTo() + "\n";
if (!QString((QString) USERAGENT).isEmpty())
_header += (QString) "User-Agent: " + USERAGENT + "\n";
if (!_smail.needsMime()) {
// if (_smail.encrypt() && !_smail.sign()) {
// openPgpEncrypt(_smail.message(), _header, _body);
// } else if (!_smail.encrypt() && _smail.sign()) {
// openPgpSign(_smail.message(), _header, _body);
// } else if (_smail.encrypt() && _smail.sign()) {
// openPgpSignEncrypt(_smail.message(), _header, _body);
// } else {
_body += _smail.message();
// }
} else {
QString boundary = MiscFunctions::uniqueString();
_header += "Content-Type: multipart/mixed; boundary=\"" + boundary + "\"\n";
_body += "This is a multi-part message in MIME format.\n\n";
_body += "--" + boundary + "\n";
// if (_smail.encrypt() && !_smail.sign()) {
// QString header, body;
// openPgpEncrypt(_smail.message(), header, body);
// _body += header + "\n" + body + "\n";
// } else if (!_smail.encrypt() && _smail.sign()) {
// QString header, body;
// openPgpSign(_smail.message(), header, body);
// _body += header + "\n" + body + "\n";
// } else if (_smail.encrypt() && _smail.sign()) {
// QString header, body;
// openPgpSignEncrypt(_smail.message(), header, body);
// _body += header + "\n" + body + "\n";
// } else {
// TODO: Do proper charset handling!
_body += "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
_body += "Content-Transfer-Encoding: 8bit\n\n";
_body += _smail.message() + "\n";
// }
QValueList<Attachment> attachments = _smail.attachments();
QValueList<Attachment>::Iterator it;
for (it = attachments.begin(); it != attachments.end(); it++) {
QFile f((*it).fileName());
if (f.open(IO_ReadOnly)) {
QTextStream t(&f);
QString file;
while (!t.atEnd()) file += t.readLine() + "\n";
f.close();
QString mimetype = (new MimeType(*(*it).docLnk()))->id();
_body += "\n--" + boundary + "\n";
_body += "Content-Type: " + mimetype + "; name=\"" + (*it).newName() + "\"\n";
// TODO: Decide which content transfer encoding is best. B64 for binary, QP for text.
_body += "Content-Transfer-Encoding: base64\n";
_body += "Content-Disposition: attachment; filename=\"" + (*it).newName() + "\"\n";
if (!(*it).description().isEmpty())
_body += "Content-Description: " + (*it).description() + "\n";
_body += "\n" + MiscFunctions::encodeBase64(file) + "\n";
} else {
int ret = QMessageBox::critical(_parent, tr("Error"), tr("<p>Couldn't attach file '%1'. Continue anyway or abort?</p>").arg((*it).fileName()), tr("Continue"), tr("Abort"));
- if (ret == 1) {
- it = attachments.end();
+ if (ret != 0) {
_abort = true;
+ break;
}
}
}
_body += "\n--" + boundary + "--";
}
if (_abort) {
_body = QString(0);
_header = QString(0);
}
}
// Unfinished GPG code.
/*
void MailFactory::openPgpEncrypt(const QString &text, QString &header, QString &body)
{
QString boundary = MiscFunctions::uniqueString();
header += "Content-Type: multipart/encrypted; boundary=\"" + boundary + "\"; protocol=\"application/pgp-encrypted\"\n";
body += "--" + boundary + "\n";
body += "Content-Type: application/pgp-encrypted\n\n";
body += "Version: 1\n\n";
body += "--" + boundary + "\n";
body += "Content-Type: application/octet-stream\n\n";
body += GpgHandling::encrypt(_smail.gpgReceivers(), text);
body += "\n--" + boundary + "--\n";
}
void MailFactory::openPgpSign(const QString &text, QString &header, QString &body)
{
QString boundary = MiscFunctions::uniqueString();
header += "Content-Type: multipart/signed; boundary=\"" + boundary + "\"; protocol=\"application/pgp-signature\"\n";
body += "--" + boundary + "\n";
QString temp;
temp += "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
temp += "Content-Transfer-Encoding: quoted-printable\n\n";
temp += MiscFunctions::encodeQPrintable(text) + "\n";
body += temp;
temp.replace(QRegExp("\n"), "\r\n");
QString signature = GpgHandling::sign(temp, _parent);
body += "\n--" + boundary + "\n";
body += "Content-Type: application/pgp-signature\n\n";
body += signature + "\n";
body += "\n--" + boundary + "--\n";
}
void MailFactory::openPgpSignEncrypt(const QString &text, QString &header, QString &message)
{
QString header_, message_;
openPgpSign(text, header_, message_);
openPgpEncrypt(header_ + "\n" + message_, header, message);
}
*/
void MailFactory::genMail(QString &header, QString &message, SendMail &smail, QWidget *parent)
{
MailFactory factory(smail, parent);
header = factory._header;
message = factory._body;
}