-rw-r--r-- | noncore/net/mail/libmailwrapper/sendmailprogress.cpp | 4 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/sendmailprogressui.ui | 4 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/smtpwrapper.cpp | 15 | ||||
-rw-r--r-- | noncore/net/mail/sendmailprogress.cpp | 4 | ||||
-rw-r--r-- | noncore/net/mail/sendmailprogressui.ui | 4 | ||||
-rw-r--r-- | noncore/net/mail/smtpwrapper.cpp | 15 |
6 files changed, 32 insertions, 14 deletions
diff --git a/noncore/net/mail/libmailwrapper/sendmailprogress.cpp b/noncore/net/mail/libmailwrapper/sendmailprogress.cpp index 13ddd37..ef22750 100644 --- a/noncore/net/mail/libmailwrapper/sendmailprogress.cpp +++ b/noncore/net/mail/libmailwrapper/sendmailprogress.cpp @@ -1,48 +1,48 @@ #include "sendmailprogress.h" #include <qprogressbar.h> #include <qlabel.h> #include <qstring.h> progressMailSend::progressMailSend(QWidget*parent, const char * name) - :progressMailSendUI(parent,name,false),m_current_mail(0),m_current_single(0),m_max_mail(0),m_max_single(0) + :progressMailSendUI(parent,name,true),m_current_mail(0),m_current_single(0),m_max_mail(0),m_max_single(0) { } progressMailSend::~progressMailSend() { } void progressMailSend::setMaxMails(unsigned int aMaxMails) { m_max_mail = aMaxMails; allMailProgressBar->setTotalSteps(aMaxMails); setMails(); } void progressMailSend::setCurrentMails(unsigned int aCurrent) { m_current_mail = aCurrent; allMailProgressBar->setProgress(aCurrent); setMails(); } void progressMailSend::setSingleMail(unsigned int aCurrent,unsigned int aMax) { m_current_single = aCurrent; m_max_single = aMax; setSingle(); } void progressMailSend::setSingle() { QString text = QString(tr("%1 of %2 bytes send")).arg(m_current_single).arg(m_max_single); singleMailLabel->setText(text); singleMailProgressBar->setTotalSteps(m_max_single); singleMailProgressBar->setProgress(m_current_single); } void progressMailSend::setMails() { - QString text = QString(tr("Sending mail %1 of %2")).arg(m_current_single+1).arg(m_max_single); + QString text = QString(tr("Sending mail %1 of %2")).arg(m_current_mail+1).arg(m_max_mail); allMailLabel->setText(text); } diff --git a/noncore/net/mail/libmailwrapper/sendmailprogressui.ui b/noncore/net/mail/libmailwrapper/sendmailprogressui.ui index b90b088..287ab5e 100644 --- a/noncore/net/mail/libmailwrapper/sendmailprogressui.ui +++ b/noncore/net/mail/libmailwrapper/sendmailprogressui.ui @@ -1,39 +1,39 @@ <!DOCTYPE UI><UI> <class>progressMailSendUI</class> <widget> <class>QDialog</class> <property stdset="1"> <name>name</name> <cstring>progressMailSendUI</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>316</width> - <height>266</height> + <width>221</width> + <height>127</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>Sending mail</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <vbox> <property stdset="1"> <name>margin</name> <number>4</number> </property> <property stdset="1"> <name>spacing</name> <number>2</number> </property> <widget> <class>QLabel</class> <property stdset="1"> diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp index 53c0af5..770e2b8 100644 --- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp @@ -504,49 +504,49 @@ void SMTPwrapper::writeToFile(const QString&file, mailmime *mail ) void SMTPwrapper::readFromFile(const QString&file, char **data, size_t *size ) { QFile msg_cache(file); QString msg = ""; msg_cache.open(IO_ReadOnly); char*message = new char[4096]; memset(message,0,4096); while (msg_cache.readBlock(message,4095)>0) { msg+=message; memset(message,0,4096); } delete message; *data = (char*)malloc(msg.length()+1*sizeof(char)); memset(*data,0,msg.length()+1); memcpy(*data,msg.ascii(),msg.length()); *size=msg.length(); } void SMTPwrapper::progress( size_t current, size_t maximum ) { if (SMTPwrapper::sendProgress) { SMTPwrapper::sendProgress->setSingleMail(current, maximum ); - qDebug("%u of %u",current,maximum); + qApp->processEvents(); } } void SMTPwrapper::storeMail(char*mail, size_t length, const QString&box) { if (!mail) return; QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/"); MBOXwrapper*wrap = new MBOXwrapper(localfolders); wrap->storeMessage(mail,length,box); delete wrap; } void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp ) { clist *rcpts = 0; char *from, *data; size_t size; if ( smtp == NULL ) { return; } from = data = 0; QString file = getTmpFile(); @@ -631,51 +631,51 @@ free_mem_session: mailsmtp_free( session ); free_mem: if (rcpts) smtp_address_list_free( rcpts ); if (data) free( data ); if (server) free( server ); if (from) free( from ); if ( smtp->getLogin() ) { free( user ); free( pass ); } return result; } void SMTPwrapper::sendMail(const Mail&mail,bool later ) { mailmime * mimeMail; SMTPaccount *smtp = getAccount(mail.getName()); mimeMail = createMimeMail(mail ); if ( mimeMail == NULL ) { qDebug( "sendMail: error creating mime mail" ); } else { sendProgress = new progressMailSend(); - sendProgress->showMaximized(); +// sendProgress->showMaximized(); sendProgress->show(); - qApp->processEvents(10); + sendProgress->setMaxMails(1); smtpSend( mimeMail,later,smtp); mailmime_free( mimeMail ); qDebug("Clean up done"); sendProgress->hide(); delete sendProgress; sendProgress = 0; } } int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which) { char*data = 0; size_t length = 0; size_t curTok = 0; mailimf_fields *fields = 0; mailimf_field*ffrom = 0; clist *rcpts = 0; char*from = 0; wrap->fetchRawBody(*which,&data,&length); if (!data) return 0; int err = mailimf_fields_parse( data, length, &curTok, &fields ); if (err != MAILIMF_NO_ERROR) { free(data); @@ -692,37 +692,46 @@ int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which) return smtpSend(from,rcpts,data,strlen(data),smtp ); } return 0; } /* this is a special fun */ void SMTPwrapper::flushOutbox(SMTPaccount*smtp) { if (!smtp) return; QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/"); MBOXwrapper*wrap = new MBOXwrapper(localfolders); if (!wrap) { qDebug("memory error"); return; } QList<RecMail> mailsToSend; QList<RecMail> mailsToRemove; QString mbox("Outgoing"); wrap->listMessages(mbox,mailsToSend); if (mailsToSend.count()==0) { delete wrap; return; } mailsToSend.setAutoDelete(false); + sendProgress = new progressMailSend(); +// sendProgress->showMaximized(); + sendProgress->show(); + sendProgress->setMaxMails(mailsToSend.count()); + while (mailsToSend.count()>0) { if (sendQueuedMail(wrap,smtp,mailsToSend.at(0))==0) { QMessageBox::critical(0,tr("Error sending mail"), tr("Error sending queued mail - breaking")); break; } mailsToRemove.append(mailsToSend.at(0)); mailsToSend.removeFirst(); + sendProgress->setCurrentMails(mailsToRemove.count()); } + sendProgress->hide(); + delete sendProgress; + sendProgress = 0; wrap->deleteMails(mbox,mailsToRemove); mailsToSend.setAutoDelete(true); delete wrap; } diff --git a/noncore/net/mail/sendmailprogress.cpp b/noncore/net/mail/sendmailprogress.cpp index 13ddd37..ef22750 100644 --- a/noncore/net/mail/sendmailprogress.cpp +++ b/noncore/net/mail/sendmailprogress.cpp @@ -1,48 +1,48 @@ #include "sendmailprogress.h" #include <qprogressbar.h> #include <qlabel.h> #include <qstring.h> progressMailSend::progressMailSend(QWidget*parent, const char * name) - :progressMailSendUI(parent,name,false),m_current_mail(0),m_current_single(0),m_max_mail(0),m_max_single(0) + :progressMailSendUI(parent,name,true),m_current_mail(0),m_current_single(0),m_max_mail(0),m_max_single(0) { } progressMailSend::~progressMailSend() { } void progressMailSend::setMaxMails(unsigned int aMaxMails) { m_max_mail = aMaxMails; allMailProgressBar->setTotalSteps(aMaxMails); setMails(); } void progressMailSend::setCurrentMails(unsigned int aCurrent) { m_current_mail = aCurrent; allMailProgressBar->setProgress(aCurrent); setMails(); } void progressMailSend::setSingleMail(unsigned int aCurrent,unsigned int aMax) { m_current_single = aCurrent; m_max_single = aMax; setSingle(); } void progressMailSend::setSingle() { QString text = QString(tr("%1 of %2 bytes send")).arg(m_current_single).arg(m_max_single); singleMailLabel->setText(text); singleMailProgressBar->setTotalSteps(m_max_single); singleMailProgressBar->setProgress(m_current_single); } void progressMailSend::setMails() { - QString text = QString(tr("Sending mail %1 of %2")).arg(m_current_single+1).arg(m_max_single); + QString text = QString(tr("Sending mail %1 of %2")).arg(m_current_mail+1).arg(m_max_mail); allMailLabel->setText(text); } diff --git a/noncore/net/mail/sendmailprogressui.ui b/noncore/net/mail/sendmailprogressui.ui index b90b088..287ab5e 100644 --- a/noncore/net/mail/sendmailprogressui.ui +++ b/noncore/net/mail/sendmailprogressui.ui @@ -1,39 +1,39 @@ <!DOCTYPE UI><UI> <class>progressMailSendUI</class> <widget> <class>QDialog</class> <property stdset="1"> <name>name</name> <cstring>progressMailSendUI</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>316</width> - <height>266</height> + <width>221</width> + <height>127</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>Sending mail</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <vbox> <property stdset="1"> <name>margin</name> <number>4</number> </property> <property stdset="1"> <name>spacing</name> <number>2</number> </property> <widget> <class>QLabel</class> <property stdset="1"> diff --git a/noncore/net/mail/smtpwrapper.cpp b/noncore/net/mail/smtpwrapper.cpp index 53c0af5..770e2b8 100644 --- a/noncore/net/mail/smtpwrapper.cpp +++ b/noncore/net/mail/smtpwrapper.cpp @@ -504,49 +504,49 @@ void SMTPwrapper::writeToFile(const QString&file, mailmime *mail ) void SMTPwrapper::readFromFile(const QString&file, char **data, size_t *size ) { QFile msg_cache(file); QString msg = ""; msg_cache.open(IO_ReadOnly); char*message = new char[4096]; memset(message,0,4096); while (msg_cache.readBlock(message,4095)>0) { msg+=message; memset(message,0,4096); } delete message; *data = (char*)malloc(msg.length()+1*sizeof(char)); memset(*data,0,msg.length()+1); memcpy(*data,msg.ascii(),msg.length()); *size=msg.length(); } void SMTPwrapper::progress( size_t current, size_t maximum ) { if (SMTPwrapper::sendProgress) { SMTPwrapper::sendProgress->setSingleMail(current, maximum ); - qDebug("%u of %u",current,maximum); + qApp->processEvents(); } } void SMTPwrapper::storeMail(char*mail, size_t length, const QString&box) { if (!mail) return; QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/"); MBOXwrapper*wrap = new MBOXwrapper(localfolders); wrap->storeMessage(mail,length,box); delete wrap; } void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp ) { clist *rcpts = 0; char *from, *data; size_t size; if ( smtp == NULL ) { return; } from = data = 0; QString file = getTmpFile(); @@ -631,51 +631,51 @@ free_mem_session: mailsmtp_free( session ); free_mem: if (rcpts) smtp_address_list_free( rcpts ); if (data) free( data ); if (server) free( server ); if (from) free( from ); if ( smtp->getLogin() ) { free( user ); free( pass ); } return result; } void SMTPwrapper::sendMail(const Mail&mail,bool later ) { mailmime * mimeMail; SMTPaccount *smtp = getAccount(mail.getName()); mimeMail = createMimeMail(mail ); if ( mimeMail == NULL ) { qDebug( "sendMail: error creating mime mail" ); } else { sendProgress = new progressMailSend(); - sendProgress->showMaximized(); +// sendProgress->showMaximized(); sendProgress->show(); - qApp->processEvents(10); + sendProgress->setMaxMails(1); smtpSend( mimeMail,later,smtp); mailmime_free( mimeMail ); qDebug("Clean up done"); sendProgress->hide(); delete sendProgress; sendProgress = 0; } } int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which) { char*data = 0; size_t length = 0; size_t curTok = 0; mailimf_fields *fields = 0; mailimf_field*ffrom = 0; clist *rcpts = 0; char*from = 0; wrap->fetchRawBody(*which,&data,&length); if (!data) return 0; int err = mailimf_fields_parse( data, length, &curTok, &fields ); if (err != MAILIMF_NO_ERROR) { free(data); @@ -692,37 +692,46 @@ int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which) return smtpSend(from,rcpts,data,strlen(data),smtp ); } return 0; } /* this is a special fun */ void SMTPwrapper::flushOutbox(SMTPaccount*smtp) { if (!smtp) return; QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/"); MBOXwrapper*wrap = new MBOXwrapper(localfolders); if (!wrap) { qDebug("memory error"); return; } QList<RecMail> mailsToSend; QList<RecMail> mailsToRemove; QString mbox("Outgoing"); wrap->listMessages(mbox,mailsToSend); if (mailsToSend.count()==0) { delete wrap; return; } mailsToSend.setAutoDelete(false); + sendProgress = new progressMailSend(); +// sendProgress->showMaximized(); + sendProgress->show(); + sendProgress->setMaxMails(mailsToSend.count()); + while (mailsToSend.count()>0) { if (sendQueuedMail(wrap,smtp,mailsToSend.at(0))==0) { QMessageBox::critical(0,tr("Error sending mail"), tr("Error sending queued mail - breaking")); break; } mailsToRemove.append(mailsToSend.at(0)); mailsToSend.removeFirst(); + sendProgress->setCurrentMails(mailsToRemove.count()); } + sendProgress->hide(); + delete sendProgress; + sendProgress = 0; wrap->deleteMails(mbox,mailsToRemove); mailsToSend.setAutoDelete(true); delete wrap; } |