summaryrefslogtreecommitdiff
authorharlekin <harlekin>2004-01-03 20:49:34 (UTC)
committer harlekin <harlekin>2004-01-03 20:49:34 (UTC)
commit02b7e56d865847ce8f4a35b7075f7b3bb7b0de76 (patch) (side-by-side diff)
treef8e0272523f9080ef2dee6901545febf854b2122
parenta89470252ffae1670e12ef5d81db08d0e27af265 (diff)
downloadopie-02b7e56d865847ce8f4a35b7075f7b3bb7b0de76.zip
opie-02b7e56d865847ce8f4a35b7075f7b3bb7b0de76.tar.gz
opie-02b7e56d865847ce8f4a35b7075f7b3bb7b0de76.tar.bz2
communicate outgoing mails status to the QPE/Pim channel ( to which the todayplugin listens for example)
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.cpp22
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.h10
-rw-r--r--noncore/net/mail/opiemail.cpp3
-rw-r--r--noncore/net/mail/smtpwrapper.cpp22
-rw-r--r--noncore/net/mail/smtpwrapper.h10
5 files changed, 67 insertions, 0 deletions
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
index 30c0707..7e03af9 100644
--- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
@@ -2,32 +2,45 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <qdir.h>
#include <qt.h>
+#include <qpe/config.h>
+#include <qpe/qcopenvelope_qws.h>
+
#include <libetpan/libetpan.h>
#include "smtpwrapper.h"
#include "mailwrapper.h"
#include "mboxwrapper.h"
#include "logindialog.h"
#include "mailtypes.h"
#include "defines.h"
#include "sendmailprogress.h"
progressMailSend*SMTPwrapper::sendProgress = 0;
SMTPwrapper::SMTPwrapper( Settings *s )
: QObject()
{
settings = s;
+ Config cfg( "mail" );
+ cfg.setGroup( "Status" );
+ m_queuedMail = cfg.readNumEntry( "outgoing", 0 );
+ emit queuedMails( m_queuedMail );
+ connect( this, SIGNAL( queuedMails( int ) ), this, SLOT( emitQCop( int ) ) );
+}
+
+void SMTPwrapper::emitQCop( int queued ) {
+ QCopEnvelope env( "QPE/Pim", "outgoingMails(int)" );
+ env << queued;
}
QString SMTPwrapper::mailsmtpError( int errnum )
{
switch ( errnum ) {
case MAILSMTP_NO_ERROR:
return tr( "No error" );
case MAILSMTP_ERROR_UNEXPECTED_CODE:
@@ -502,16 +515,20 @@ void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp )
return;
}
QString tmp = data;
tmp.replace(QRegExp("\r+",true,false),"");
msg = 0;
if (later) {
storeMail((char*)tmp.data(),tmp.length(),"Outgoing");
if (data) free( data );
+ Config cfg( "mail" );
+ cfg.setGroup( "Status" );
+ cfg.writeEntry( "outgoing", ++m_queuedMail );
+ emit queuedMails( m_queuedMail );
return;
}
from = getFrom( mail );
rcpts = createRcptList( mail->mm_data.mm_message.mm_fields );
smtpSend(from,rcpts,data,size,smtp);
if (data) {free(data);}
if (from) {free(from);}
if (rcpts) smtp_address_list_free( rcpts );
@@ -695,16 +712,21 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp)
tr("Error sending queued mail - breaking"));
returnValue = false;
break;
}
mailsToRemove.append(mailsToSend.at(0));
mailsToSend.removeFirst();
sendProgress->setCurrentMails(mailsToRemove.count());
}
+ Config cfg( "mail" );
+ cfg.setGroup( "Status" );
+ m_queuedMail = 0;
+ cfg.writeEntry( "outgoing", m_queuedMail );
+ emit queuedMails( m_queuedMail );
sendProgress->hide();
delete sendProgress;
sendProgress = 0;
wrap->deleteMails(mbox,mailsToRemove);
mailsToSend.setAutoDelete(true);
delete wrap;
return returnValue;
}
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.h b/noncore/net/mail/libmailwrapper/smtpwrapper.h
index 0535983..05becf2 100644
--- a/noncore/net/mail/libmailwrapper/smtpwrapper.h
+++ b/noncore/net/mail/libmailwrapper/smtpwrapper.h
@@ -26,16 +26,20 @@ class SMTPwrapper : public QObject
public:
SMTPwrapper( Settings *s );
virtual ~SMTPwrapper(){}
void sendMail(const Mail& mail,SMTPaccount*smtp,bool later=false );
bool flushOutbox(SMTPaccount*smtp);
static progressMailSend*sendProgress;
+
+signals:
+ void queuedMails( int );
+
protected:
mailimf_mailbox *newMailbox(const QString&name,const QString&mail );
mailimf_fields *createImfFields(const Mail &mail );
mailmime *createMimeMail(const Mail&mail );
mailimf_address_list *parseAddresses(const QString&addr );
void addFileParts( mailmime *message,const QList<Attachment>&files );
mailmime *buildTxtPart(const QString&str );
@@ -51,11 +55,17 @@ protected:
static char *getFrom( mailimf_field *ffrom);
static mailimf_field *getField( mailimf_fields *fields, int type );
int smtpSend(char*from,clist*rcpts,char*data,size_t size, SMTPaccount *smtp );
void storeMail(mailmime*mail, const QString&box);
Settings *settings;
int sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which);
+
+ int m_queuedMail;
+
+protected slots:
+ void emitQCop( int queued );
+
};
#endif
diff --git a/noncore/net/mail/opiemail.cpp b/noncore/net/mail/opiemail.cpp
index e35f5b6..54453b7 100644
--- a/noncore/net/mail/opiemail.cpp
+++ b/noncore/net/mail/opiemail.cpp
@@ -20,16 +20,19 @@ OpieMail::OpieMail( QWidget *parent, const char *name, WFlags flags )
// connect( searchMails, SIGNAL( activated() ), SLOT( slotSearchMails() ) );
connect( editAccounts, SIGNAL( activated() ), SLOT( slotEditAccounts() ) );
// Added by Stefan Eilers to allow starting by addressbook..
// copied from old mail2
#if !defined(QT_NO_COP)
connect( qApp, SIGNAL( appMessage( const QCString&, const QByteArray& ) ),
this, SLOT( appMessage( const QCString&, const QByteArray& ) ) );
#endif
+
+
+
}
void OpieMail::appMessage(const QCString &msg, const QByteArray &data)
{
// copied from old mail2
if (msg == "writeMail(QString,QString)") {
QDataStream stream(data,IO_ReadOnly);
QString name, email;
diff --git a/noncore/net/mail/smtpwrapper.cpp b/noncore/net/mail/smtpwrapper.cpp
index 30c0707..7e03af9 100644
--- a/noncore/net/mail/smtpwrapper.cpp
+++ b/noncore/net/mail/smtpwrapper.cpp
@@ -2,32 +2,45 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <qdir.h>
#include <qt.h>
+#include <qpe/config.h>
+#include <qpe/qcopenvelope_qws.h>
+
#include <libetpan/libetpan.h>
#include "smtpwrapper.h"
#include "mailwrapper.h"
#include "mboxwrapper.h"
#include "logindialog.h"
#include "mailtypes.h"
#include "defines.h"
#include "sendmailprogress.h"
progressMailSend*SMTPwrapper::sendProgress = 0;
SMTPwrapper::SMTPwrapper( Settings *s )
: QObject()
{
settings = s;
+ Config cfg( "mail" );
+ cfg.setGroup( "Status" );
+ m_queuedMail = cfg.readNumEntry( "outgoing", 0 );
+ emit queuedMails( m_queuedMail );
+ connect( this, SIGNAL( queuedMails( int ) ), this, SLOT( emitQCop( int ) ) );
+}
+
+void SMTPwrapper::emitQCop( int queued ) {
+ QCopEnvelope env( "QPE/Pim", "outgoingMails(int)" );
+ env << queued;
}
QString SMTPwrapper::mailsmtpError( int errnum )
{
switch ( errnum ) {
case MAILSMTP_NO_ERROR:
return tr( "No error" );
case MAILSMTP_ERROR_UNEXPECTED_CODE:
@@ -502,16 +515,20 @@ void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp )
return;
}
QString tmp = data;
tmp.replace(QRegExp("\r+",true,false),"");
msg = 0;
if (later) {
storeMail((char*)tmp.data(),tmp.length(),"Outgoing");
if (data) free( data );
+ Config cfg( "mail" );
+ cfg.setGroup( "Status" );
+ cfg.writeEntry( "outgoing", ++m_queuedMail );
+ emit queuedMails( m_queuedMail );
return;
}
from = getFrom( mail );
rcpts = createRcptList( mail->mm_data.mm_message.mm_fields );
smtpSend(from,rcpts,data,size,smtp);
if (data) {free(data);}
if (from) {free(from);}
if (rcpts) smtp_address_list_free( rcpts );
@@ -695,16 +712,21 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp)
tr("Error sending queued mail - breaking"));
returnValue = false;
break;
}
mailsToRemove.append(mailsToSend.at(0));
mailsToSend.removeFirst();
sendProgress->setCurrentMails(mailsToRemove.count());
}
+ Config cfg( "mail" );
+ cfg.setGroup( "Status" );
+ m_queuedMail = 0;
+ cfg.writeEntry( "outgoing", m_queuedMail );
+ emit queuedMails( m_queuedMail );
sendProgress->hide();
delete sendProgress;
sendProgress = 0;
wrap->deleteMails(mbox,mailsToRemove);
mailsToSend.setAutoDelete(true);
delete wrap;
return returnValue;
}
diff --git a/noncore/net/mail/smtpwrapper.h b/noncore/net/mail/smtpwrapper.h
index 0535983..05becf2 100644
--- a/noncore/net/mail/smtpwrapper.h
+++ b/noncore/net/mail/smtpwrapper.h
@@ -26,16 +26,20 @@ class SMTPwrapper : public QObject
public:
SMTPwrapper( Settings *s );
virtual ~SMTPwrapper(){}
void sendMail(const Mail& mail,SMTPaccount*smtp,bool later=false );
bool flushOutbox(SMTPaccount*smtp);
static progressMailSend*sendProgress;
+
+signals:
+ void queuedMails( int );
+
protected:
mailimf_mailbox *newMailbox(const QString&name,const QString&mail );
mailimf_fields *createImfFields(const Mail &mail );
mailmime *createMimeMail(const Mail&mail );
mailimf_address_list *parseAddresses(const QString&addr );
void addFileParts( mailmime *message,const QList<Attachment>&files );
mailmime *buildTxtPart(const QString&str );
@@ -51,11 +55,17 @@ protected:
static char *getFrom( mailimf_field *ffrom);
static mailimf_field *getField( mailimf_fields *fields, int type );
int smtpSend(char*from,clist*rcpts,char*data,size_t size, SMTPaccount *smtp );
void storeMail(mailmime*mail, const QString&box);
Settings *settings;
int sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which);
+
+ int m_queuedMail;
+
+protected slots:
+ void emitQCop( int queued );
+
};
#endif