summaryrefslogtreecommitdiff
authoralwin <alwin>2004-03-10 22:44:44 (UTC)
committer alwin <alwin>2004-03-10 22:44:44 (UTC)
commit9454ac48a53f3b49e03288311b71436ccacd2d04 (patch) (side-by-side diff)
treee05d40f575c87431d84c5ac374ff8ce656e6a419
parenta72855867dedd2b4c16f703fa104b5c6175ce484 (diff)
downloadopie-9454ac48a53f3b49e03288311b71436ccacd2d04.zip
opie-9454ac48a53f3b49e03288311b71436ccacd2d04.tar.gz
opie-9454ac48a53f3b49e03288311b71436ccacd2d04.tar.bz2
some bugfixes
When edit a mail to send and cancel is pressed the mail can stored in a draft folder and later edit again. This moment we will not store attachments into drafts.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/accountitem.cpp17
-rw-r--r--noncore/net/mail/accountitem.h2
-rw-r--r--noncore/net/mail/accountview.cpp7
-rw-r--r--noncore/net/mail/accountview.h1
-rw-r--r--noncore/net/mail/composemail.cpp90
-rw-r--r--noncore/net/mail/composemail.h5
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp23
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h2
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.cpp8
-rw-r--r--noncore/net/mail/libmailwrapper/libmailwrapper.pro6
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.cpp1
-rw-r--r--noncore/net/mail/libmailwrapper/storemail.cpp90
-rw-r--r--noncore/net/mail/libmailwrapper/storemail.h29
-rw-r--r--noncore/net/mail/mailistviewitem.cpp7
-rw-r--r--noncore/net/mail/mailistviewitem.h2
-rw-r--r--noncore/net/mail/nntpgroupsdlg.cpp2
-rw-r--r--noncore/net/mail/opiemail.cpp21
-rw-r--r--noncore/net/mail/opiemail.h1
18 files changed, 292 insertions, 22 deletions
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp
index 0d636a4..396dcb7 100644
--- a/noncore/net/mail/accountitem.cpp
+++ b/noncore/net/mail/accountitem.cpp
@@ -913,9 +913,9 @@ void MHfolderItem::initName()
else if (bName.lower() == "inbox")
{
setPixmap( 0, PIXMAP_INBOXFOLDER);
- }
- else
- {
+ } else if (bName.lower() == "drafts") {
+ setPixmap(0, Resource::loadPixmap("inline/edit"));
+ } else {
setPixmap( 0, PIXMAP_MBOXFOLDER );
}
setText( 0, bName );
@@ -1023,6 +1023,12 @@ void MHfolderItem::contextMenuSelected(int which)
}
}
+bool MHfolderItem::isDraftfolder()
+{
+ if (folder && folder->getName()==AbstractMail::defaultLocalfolder()+"/"+AbstractMail::draftFolder()) return true;
+ return false;
+}
+
/**
* Generic stuff
*/
@@ -1127,3 +1133,8 @@ AccountViewItem*AccountViewItem::findSubItem(const QString&path,AccountViewItem*
}
return pitem;
}
+
+bool AccountViewItem::isDraftfolder()
+{
+ return false;
+}
diff --git a/noncore/net/mail/accountitem.h b/noncore/net/mail/accountitem.h
index f3c0f5d..eb3baa3 100644
--- a/noncore/net/mail/accountitem.h
+++ b/noncore/net/mail/accountitem.h
@@ -30,6 +30,7 @@ public:
virtual void contextMenuSelected(int){}
virtual AccountView*accountView();
virtual bool matchName(const QString&name)const;
+ virtual bool isDraftfolder();
protected:
AccountViewItem*findSubItem(const QString&path,AccountViewItem*start=0);
@@ -193,6 +194,7 @@ public:
virtual QPopupMenu * getContextMenu();
virtual void contextMenuSelected(int);
virtual Folder*getFolder();
+ virtual bool isDraftfolder();
protected:
void downloadMails();
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp
index 4375044..7938d4f 100644
--- a/noncore/net/mail/accountview.cpp
+++ b/noncore/net/mail/accountview.cpp
@@ -168,3 +168,10 @@ void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper)
fromWrapper->mvcpAllMails(fromFolder,targetFolder,targetMail,sels.moveMails());
refreshCurrent();
}
+
+bool AccountView::currentisDraft()
+{
+ AccountViewItem *view = static_cast<AccountViewItem *>(currentItem());
+ if (!view) return false;
+ return view->isDraftfolder();
+}
diff --git a/noncore/net/mail/accountview.h b/noncore/net/mail/accountview.h
index 9f92090..5000202 100644
--- a/noncore/net/mail/accountview.h
+++ b/noncore/net/mail/accountview.h
@@ -23,6 +23,7 @@ public:
virtual void populate( QList<Account> list );
virtual RecBody fetchBody(const RecMail&aMail);
virtual void downloadMails(Folder*fromFolder,AbstractMail*fromWrapper);
+ virtual bool currentisDraft();
public slots:
virtual void refreshAll();
diff --git a/noncore/net/mail/composemail.cpp b/noncore/net/mail/composemail.cpp
index b5cd75b..b9c9cbc 100644
--- a/noncore/net/mail/composemail.cpp
+++ b/noncore/net/mail/composemail.cpp
@@ -9,6 +9,9 @@
#include "composemail.h"
#include <libmailwrapper/smtpwrapper.h>
+#include <libmailwrapper/storemail.h>
+#include <libmailwrapper/abstractmail.h>
+#include <libmailwrapper/mailtypes.h>
ComposeMail::ComposeMail( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags )
: ComposeMailUI( parent, name, modal, flags )
@@ -124,7 +127,7 @@ void ComposeMail::pickAddressReply()
pickAddress( replyLine );
}
-void ComposeMail::fillValues( int current )
+void ComposeMail::fillValues( int )
{
#if 0
SMTPaccount *smtp = smtpAccounts.at( current );
@@ -185,26 +188,27 @@ void ComposeMail::accept()
qDebug( "Sending Mail with " +
smtpAccounts.at( smtpAccountBox->currentItem() )->getAccountName() );
#endif
- Mail *mail = new Mail();
+ Mail mail;
SMTPaccount *smtp = smtpAccounts.at( smtpAccountBox->currentItem() );
- mail->setMail(fromBox->currentText());
+ mail.setMail(fromBox->currentText());
if ( !toLine->text().isEmpty() ) {
- mail->setTo( toLine->text() );
+ mail.setTo( toLine->text() );
} else {
- qDebug( "No Reciever spezified -> returning" );
+ QMessageBox::warning(0,tr("Sending mail"),
+ tr("No Receiver spezified" ) );
return;
}
- mail->setName(senderNameEdit->text());
- mail->setCC( ccLine->text() );
- mail->setBCC( bccLine->text() );
- mail->setReply( replyLine->text() );
- mail->setSubject( subjectLine->text() );
+ mail.setName(senderNameEdit->text());
+ mail.setCC( ccLine->text() );
+ mail.setBCC( bccLine->text() );
+ mail.setReply( replyLine->text() );
+ mail.setSubject( subjectLine->text() );
if (!m_replyid.isEmpty()) {
QStringList ids;
ids.append(m_replyid);
- mail->setInreply(ids);
+ mail.setInreply(ids);
}
QString txt = message->text();
if ( !sigMultiLine->text().isEmpty() ) {
@@ -212,19 +216,77 @@ void ComposeMail::accept()
txt.append( sigMultiLine->text() );
}
qDebug(txt);
- mail->setMessage( txt );
+ mail.setMessage( txt );
AttachViewItem *it = (AttachViewItem *) attList->firstChild();
while ( it != NULL ) {
- mail->addAttachment( it->getAttachment() );
+ mail.addAttachment( it->getAttachment() );
it = (AttachViewItem *) it->nextSibling();
}
SMTPwrapper wrapper( smtp );
- wrapper.sendMail( *mail,checkBoxLater->isChecked() );
+ wrapper.sendMail( mail,checkBoxLater->isChecked() );
QDialog::accept();
}
+void ComposeMail::reject()
+{
+ int yesno = QMessageBox::warning(0,tr("Store message"),
+ tr("Store message into drafts?"),
+ tr("Yes"),
+ tr("No"),QString::null,0,1);
+
+ if (yesno == 0) {
+ Mail mail;
+ mail.setMail(fromBox->currentText());
+ mail.setTo( toLine->text() );
+ mail.setName(senderNameEdit->text());
+ mail.setCC( ccLine->text() );
+ mail.setBCC( bccLine->text() );
+ mail.setReply( replyLine->text() );
+ mail.setSubject( subjectLine->text() );
+ if (!m_replyid.isEmpty()) {
+ QStringList ids;
+ ids.append(m_replyid);
+ mail.setInreply(ids);
+ }
+ QString txt = message->text();
+ if ( !sigMultiLine->text().isEmpty() ) {
+ txt.append( "\n--\n" );
+ txt.append( sigMultiLine->text() );
+ }
+ qDebug(txt);
+ mail.setMessage( txt );
+
+ /* only use the default drafts folder name! */
+ Storemail wrapper(AbstractMail::draftFolder());
+ wrapper.storeMail(mail);
+
+ AttachViewItem *it = (AttachViewItem *) attList->firstChild();
+ /* attachments we will ignore! */
+ if ( it != NULL ) {
+ QMessageBox::warning(0,tr("Store message"),
+ tr("<center>Attachments will not be stored in \"Draft\" folder</center>"));
+ }
+ }
+ QDialog::reject();
+}
+
+ComposeMail::~ComposeMail()
+{
+}
+
+void ComposeMail::reEditMail(const RecMail&current)
+{
+ RecMail data = current;
+ message->setText(data.Wrapper()->fetchBody(current).Bodytext());
+ subjectLine->setText( data.getSubject());
+ toLine->setText(data.To().join(","));
+ ccLine->setText(data.CC().join(","));
+ bccLine->setText(data.Bcc().join(","));
+ replyLine->setText(data.Replyto());
+}
+
AttachViewItem::AttachViewItem( QListView *parent, Attachment *att )
: QListViewItem( parent )
{
diff --git a/noncore/net/mail/composemail.h b/noncore/net/mail/composemail.h
index 886fb1d..1b9fc79 100644
--- a/noncore/net/mail/composemail.h
+++ b/noncore/net/mail/composemail.h
@@ -25,6 +25,7 @@ protected:
};
+class RecMail;
class ComposeMail : public ComposeMailUI
{
@@ -32,6 +33,9 @@ class ComposeMail : public ComposeMailUI
public:
ComposeMail( Settings *s, QWidget *parent = 0, const char *name = 0, bool modal = false, WFlags flags = 0 );
+ virtual ~ComposeMail();
+
+ void reEditMail(const RecMail&current);
public slots:
void slotAdjustColumns();
@@ -43,6 +47,7 @@ public slots:
protected slots:
void accept();
+ void reject();
private slots:
void fillValues( int current );
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp
index 9960f88..d71d35c 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.cpp
+++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp
@@ -31,6 +31,24 @@ AbstractMail* AbstractMail::getWrapper(const QString&a,const QString&name)
return new MHwrapper(a,name);
}
+AbstractMail* AbstractMail::getWrapper(Account*a)
+{
+ if (!a) return 0;
+ switch (a->getType()) {
+ case MAILLIB::A_IMAP:
+ return new IMAPwrapper((IMAPaccount*)a);
+ break;
+ case MAILLIB::A_POP3:
+ return new POP3wrapper((POP3account*)a);
+ break;
+ case MAILLIB::A_NNTP:
+ return new NNTPwrapper((NNTPaccount*)a);
+ break;
+ default:
+ return 0;
+ }
+}
+
encodedString* AbstractMail::decode_String(const encodedString*text,const QString&enc)
{
qDebug("Decode string start");
@@ -105,6 +123,11 @@ QString AbstractMail::defaultLocalfolder()
return f;
}
+QString AbstractMail::draftFolder()
+{
+ return QString("Drafts");
+}
+
/* temporary - will be removed when implemented in all classes */
void AbstractMail::deleteMails(const QString &,QList<RecMail> &)
{
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index 442ebfe..d377452 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -54,8 +54,10 @@ public:
static AbstractMail* getWrapper(NNTPaccount *a);
/* mbox only! */
static AbstractMail* getWrapper(const QString&a,const QString&name="Local Folders");
+ static AbstractMail* getWrapper(Account*a);
static QString defaultLocalfolder();
+ static QString draftFolder();
virtual MAILLIB::ATYPE getType()const=0;
virtual const QString&getName()const=0;
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
index 137a6ef..ffa049f 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
@@ -450,11 +450,19 @@ void Genericwrapper::parseList(QList<RecMail> &target,mailsession*session,const
qDebug("Msgid == %s",mail->Msgid().latin1());
}
+ if (single_fields.fld_reply_to) {
+ QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list);
+ if (t.count()>0) {
+ mail->setReplyto(t[0]);
+ }
+ }
+#if 0
refs = single_fields.fld_references;
if (refs && refs->mid_list && clist_count(refs->mid_list)) {
char * text = (char*)refs->mid_list->first->data;
mail->setReplyto(QString(text));
}
+#endif
if (single_fields.fld_in_reply_to && single_fields.fld_in_reply_to->mid_list &&
clist_count(single_fields.fld_in_reply_to->mid_list)) {
mail->setInreply(parseInreplies(single_fields.fld_in_reply_to));
diff --git a/noncore/net/mail/libmailwrapper/libmailwrapper.pro b/noncore/net/mail/libmailwrapper/libmailwrapper.pro
index cb1e573..d28079e 100644
--- a/noncore/net/mail/libmailwrapper/libmailwrapper.pro
+++ b/noncore/net/mail/libmailwrapper/libmailwrapper.pro
@@ -15,7 +15,8 @@ HEADERS = mailwrapper.h \
statusmail.h \
mhwrapper.h \
nntpwrapper.h \
- generatemail.h
+ generatemail.h \
+ storemail.h
SOURCES = imapwrapper.cpp \
mailwrapper.cpp \
@@ -31,7 +32,8 @@ SOURCES = imapwrapper.cpp \
statusmail.cpp \
mhwrapper.cpp \
nntpwrapper.cpp \
- generatemail.cpp
+ generatemail.cpp \
+ storemail.cpp
INTERFACES = logindialogui.ui \
sendmailprogressui.ui
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.cpp b/noncore/net/mail/libmailwrapper/mailtypes.cpp
index e4646d9..49b3caa 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.cpp
+++ b/noncore/net/mail/libmailwrapper/mailtypes.cpp
@@ -36,6 +36,7 @@ void RecMail::copy_old(const RecMail&old)
wrapper = old.wrapper;
in_reply_to = old.in_reply_to;
references = old.references;
+ replyto = old.replyto;
}
void RecMail::init()
diff --git a/noncore/net/mail/libmailwrapper/storemail.cpp b/noncore/net/mail/libmailwrapper/storemail.cpp
new file mode 100644
index 0000000..53101f8
--- a/dev/null
+++ b/noncore/net/mail/libmailwrapper/storemail.cpp
@@ -0,0 +1,90 @@
+#include "storemail.h"
+#include "mailwrapper.h"
+#include "settings.h"
+#include "abstractmail.h"
+
+#include <libetpan/libetpan.h>
+
+#include <qstring.h>
+
+#include <stdlib.h>
+
+Storemail::Storemail(Account*aAccount,const QString&aFolder)
+ : Generatemail()
+{
+ wrapper = 0;
+ m_Account = aAccount;
+ m_tfolder = aFolder;
+ wrapper = AbstractMail::getWrapper(m_Account);
+ if (wrapper) {
+ wrapper->createMbox(m_tfolder);
+ }
+}
+
+Storemail::Storemail(const QString&dir,const QString&aFolder)
+ : Generatemail()
+{
+ wrapper = 0;
+ m_Account = 0;
+ m_tfolder = aFolder;
+ wrapper = AbstractMail::getWrapper(dir);
+ if (wrapper) {
+ wrapper->createMbox(m_tfolder);
+ }
+}
+
+Storemail::Storemail(const QString&aFolder)
+ : Generatemail()
+{
+ wrapper = 0;
+ m_Account = 0;
+ m_tfolder = aFolder;
+ wrapper = AbstractMail::getWrapper(AbstractMail::defaultLocalfolder());
+ if (wrapper) {
+ wrapper->createMbox(m_tfolder);
+ }
+}
+
+Storemail::~Storemail()
+{
+}
+
+int Storemail::storeMail(const Mail&mail)
+{
+ if (!wrapper) return 0;
+ int ret = 1;
+
+ mailmime * mimeMail = 0;
+ mimeMail = createMimeMail(mail );
+ if ( mimeMail == NULL ) {
+ qDebug( "storeMail: error creating mime mail" );
+ return 0;
+ }
+ char *data;
+ size_t size;
+ data = 0;
+
+ mailmessage * msg = 0;
+ msg = mime_message_init(mimeMail);
+ mime_message_set_tmpdir(msg,getenv( "HOME" ));
+ int r = mailmessage_fetch(msg,&data,&size);
+ mime_message_detach_mime(msg);
+ mailmessage_free(msg);
+ msg = 0;
+ if (r != MAIL_NO_ERROR || !data) {
+ qDebug("Error fetching mime...");
+ ret = 0;
+ }
+
+ if (ret) {
+ wrapper->storeMessage(data,size,m_tfolder);
+ }
+
+ if (data) {
+ free(data);
+ }
+ if (mimeMail) {
+ mailmime_free( mimeMail );
+ }
+ return ret;
+}
diff --git a/noncore/net/mail/libmailwrapper/storemail.h b/noncore/net/mail/libmailwrapper/storemail.h
new file mode 100644
index 0000000..872c981
--- a/dev/null
+++ b/noncore/net/mail/libmailwrapper/storemail.h
@@ -0,0 +1,29 @@
+#ifndef __STORE_MAIL_H
+#define __STORE_MAIL_H
+
+#include <qpe/applnk.h>
+
+#include "generatemail.h"
+
+class Account;
+class Mail;
+class AbstractMail;
+
+class Storemail : public Generatemail
+{
+ Q_OBJECT
+public:
+ Storemail(Account*aAccount,const QString&aFolder);
+ Storemail(const QString&dir,const QString&aFolder);
+ Storemail(const QString&aFolder);
+ virtual ~Storemail();
+
+ int storeMail(const Mail&mail);
+
+protected:
+ Account* m_Account;
+ QString m_tfolder;
+ AbstractMail*wrapper;
+};
+
+#endif
diff --git a/noncore/net/mail/mailistviewitem.cpp b/noncore/net/mail/mailistviewitem.cpp
index f224dc3..75633ef 100644
--- a/noncore/net/mail/mailistviewitem.cpp
+++ b/noncore/net/mail/mailistviewitem.cpp
@@ -1,4 +1,5 @@
#include "mailistviewitem.h"
+#include <libmailwrapper/abstractmail.h>
#include <qtextstream.h>
#include <qpe/resource.h>
@@ -63,3 +64,9 @@ const RecMail& MailListViewItem::data()const
{
return mail_data;
}
+
+MAILLIB::ATYPE MailListViewItem::wrapperType()
+{
+ if (!mail_data.Wrapper()) return MAILLIB::A_UNDEFINED;
+ return mail_data.Wrapper()->getType();
+}
diff --git a/noncore/net/mail/mailistviewitem.h b/noncore/net/mail/mailistviewitem.h
index 3b352a2..f736de0 100644
--- a/noncore/net/mail/mailistviewitem.h
+++ b/noncore/net/mail/mailistviewitem.h
@@ -3,6 +3,7 @@
#include <qlistview.h>
#include <libmailwrapper/mailtypes.h>
+#include <libmailwrapper/maildefines.h>
class MailListViewItem:public QListViewItem
{
@@ -13,6 +14,7 @@ public:
void storeData(const RecMail&data);
const RecMail&data()const;
void showEntry();
+ MAILLIB::ATYPE wrapperType();
protected:
RecMail mail_data;
diff --git a/noncore/net/mail/nntpgroupsdlg.cpp b/noncore/net/mail/nntpgroupsdlg.cpp
index 752ce3c..c94d9fa 100644
--- a/noncore/net/mail/nntpgroupsdlg.cpp
+++ b/noncore/net/mail/nntpgroupsdlg.cpp
@@ -6,7 +6,7 @@
#include <qlayout.h>
NNTPGroupsDlg::NNTPGroupsDlg(NNTPaccount *account,QWidget * parent, const char * name)
- : QDialog(parent,name,true)
+ : QDialog(parent,name,true,WStyle_ContextHelp)
{
setCaption(tr("Subscribed newsgroups"));
m_Account = account;
diff --git a/noncore/net/mail/opiemail.cpp b/noncore/net/mail/opiemail.cpp
index 61e7dc4..d95b3c9 100644
--- a/noncore/net/mail/opiemail.cpp
+++ b/noncore/net/mail/opiemail.cpp
@@ -177,7 +177,7 @@ void OpieMail::slotDeleteMail()
void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int )
{
if (!mailView->currentItem()) return;
- RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data();
+ MAILLIB::ATYPE mailtype = ((MailListViewItem*)mailView->currentItem() )->wrapperType();
/* just the RIGHT button - or hold on pda */
if (button!=2) {return;}
qDebug("Event right/hold");
@@ -185,10 +185,13 @@ void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int )
QPopupMenu *m = new QPopupMenu(0);
if (m)
{
- if (mail.Wrapper()->getType()==MAILLIB::A_NNTP) {
+ if (mailtype==MAILLIB::A_NNTP) {
m->insertItem(tr("Read this posting"),this,SLOT(displayMail()));
// m->insertItem(tr("Copy this posting"),this,SLOT(slotMoveCopyMail()));
} else {
+ if (folderView->currentisDraft()) {
+ m->insertItem(tr("Edit this mail"),this,SLOT(reEditMail()));
+ }
m->insertItem(tr("Read this mail"),this,SLOT(displayMail()));
m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail()));
m->insertItem(tr("Copy/Move this mail"),this,SLOT(slotMoveCopyMail()));
@@ -231,8 +234,12 @@ void OpieMail::mailLeftClicked(int button, QListViewItem *item,const QPoint&,int
/* just LEFT button - or tap with stylus on pda */
if (button!=1) return;
if (!item) return;
+ if (folderView->currentisDraft()) {
+ reEditMail();
+ } else {
displayMail();
}
+}
void OpieMail::slotMoveCopyMail()
{
@@ -259,3 +266,13 @@ void OpieMail::slotMoveCopyMail()
mail.Wrapper()->mvcpMail(mail,targetFolder,targetMail,sels.moveMails());
folderView->refreshCurrent();
}
+
+void OpieMail::reEditMail()
+{
+ if (!mailView->currentItem()) return;
+
+ ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp );
+ compose.reEditMail(((MailListViewItem*)mailView->currentItem() )->data());
+ compose.slotAdjustColumns();
+ QPEApplication::execDialog( &compose );
+}
diff --git a/noncore/net/mail/opiemail.h b/noncore/net/mail/opiemail.h
index 5821856..88c7ea1 100644
--- a/noncore/net/mail/opiemail.h
+++ b/noncore/net/mail/opiemail.h
@@ -30,6 +30,7 @@ protected slots:
virtual void refreshMailView(QList<RecMail>*);
virtual void mailLeftClicked( int, QListViewItem *,const QPoint&,int );
virtual void slotMoveCopyMail();
+ virtual void reEditMail();
private:
Settings *settings;