author | alwin <alwin> | 2003-12-24 01:29:43 (UTC) |
---|---|---|
committer | alwin <alwin> | 2003-12-24 01:29:43 (UTC) |
commit | 242f7a04e3e4963a5606ac603d54a4f115de4a04 (patch) (side-by-side diff) | |
tree | dd8578fbc812791dd7e5026a28710a8313cf5cf8 | |
parent | 7c720aabcad9b325dbf9910493e3c9fa1d63805e (diff) | |
download | opie-242f7a04e3e4963a5606ac603d54a4f115de4a04.zip opie-242f7a04e3e4963a5606ac603d54a4f115de4a04.tar.gz opie-242f7a04e3e4963a5606ac603d54a4f115de4a04.tar.bz2 |
tried to implement a progress dialog when sending mails. It doesn't work
(dialog will show but makes no updates, when using qApp->progressEvents(x)
dialog hides)
I don't know why - and I giving up for the moment.
-rw-r--r-- | noncore/net/mail/libmailwrapper/sendmailprogress.cpp | 48 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/sendmailprogress.h | 19 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/sendmailprogressui.ui | 110 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/smtpwrapper.cpp | 16 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/smtpwrapper.h | 4 | ||||
-rw-r--r-- | noncore/net/mail/mail.pro | 9 | ||||
-rw-r--r-- | noncore/net/mail/sendmailprogress.cpp | 48 | ||||
-rw-r--r-- | noncore/net/mail/sendmailprogress.h | 19 | ||||
-rw-r--r-- | noncore/net/mail/sendmailprogressui.ui | 110 | ||||
-rw-r--r-- | noncore/net/mail/smtpwrapper.cpp | 16 | ||||
-rw-r--r-- | noncore/net/mail/smtpwrapper.h | 4 |
11 files changed, 396 insertions, 7 deletions
diff --git a/noncore/net/mail/libmailwrapper/sendmailprogress.cpp b/noncore/net/mail/libmailwrapper/sendmailprogress.cpp new file mode 100644 index 0000000..13ddd37 --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/sendmailprogress.cpp @@ -0,0 +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) +{ +} + +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); + allMailLabel->setText(text); +} diff --git a/noncore/net/mail/libmailwrapper/sendmailprogress.h b/noncore/net/mail/libmailwrapper/sendmailprogress.h new file mode 100644 index 0000000..5b7d33b --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/sendmailprogress.h @@ -0,0 +1,19 @@ +#include "sendmailprogressui.h" + +class progressMailSend:public progressMailSendUI +{ + Q_OBJECT +public: + progressMailSend(QWidget*parent = 0, const char * name = 0); + ~progressMailSend(); + + void setMaxMails(unsigned int aMaxMails); + void setCurrentMails(unsigned int aCurrent); + + void setSingleMail(unsigned int aCurrent,unsigned int aMax); + +protected: + unsigned m_current_mail,m_current_single,m_max_mail,m_max_single; + void setSingle(); + void setMails(); +}; diff --git a/noncore/net/mail/libmailwrapper/sendmailprogressui.ui b/noncore/net/mail/libmailwrapper/sendmailprogressui.ui new file mode 100644 index 0000000..b90b088 --- a/dev/null +++ b/noncore/net/mail/libmailwrapper/sendmailprogressui.ui @@ -0,0 +1,110 @@ +<!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> + </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"> + <name>name</name> + <cstring>singleMailLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Progress of mail</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QProgressBar</class> + <property stdset="1"> + <name>name</name> + <cstring>singleMailProgressBar</cstring> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>allMailLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Sending mail</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QProgressBar</class> + <property stdset="1"> + <name>name</name> + <cstring>allMailProgressBar</cstring> + </property> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Spacer6</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Vertical</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> +</widget> +</UI> diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp index b81a87f..53c0af5 100644 --- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp @@ -14,8 +14,11 @@ #include "mboxwrapper.h" #include "logindialog.h" #include "mailtypes.h" #include "defines.h" +#include "sendmailprogress.h" + +progressMailSend*SMTPwrapper::sendProgress = 0; SMTPwrapper::SMTPwrapper( Settings *s ) : QObject() { @@ -519,9 +522,12 @@ void SMTPwrapper::readFromFile(const QString&file, char **data, size_t *size ) } void SMTPwrapper::progress( size_t current, size_t maximum ) { -// qDebug( "Current: %i of %i", current, maximum ); + if (SMTPwrapper::sendProgress) { + SMTPwrapper::sendProgress->setSingleMail(current, maximum ); + qDebug("%u of %u",current,maximum); + } } void SMTPwrapper::storeMail(char*mail, size_t length, const QString&box) { @@ -644,11 +650,18 @@ void SMTPwrapper::sendMail(const Mail&mail,bool later ) mimeMail = createMimeMail(mail ); if ( mimeMail == NULL ) { qDebug( "sendMail: error creating mime mail" ); } else { + sendProgress = new progressMailSend(); + sendProgress->showMaximized(); + sendProgress->show(); + qApp->processEvents(10); 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) @@ -672,8 +685,9 @@ int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which) rcpts = createRcptList( fields ); ffrom = getField(fields, MAILIMF_FIELD_FROM ); from = getFrom(ffrom); + qDebug("Size: %i vs. %i",length,strlen(data)); if (rcpts && from) { return smtpSend(from,rcpts,data,strlen(data),smtp ); } diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.h b/noncore/net/mail/libmailwrapper/smtpwrapper.h index c0dcc11..baa353b 100644 --- a/noncore/net/mail/libmailwrapper/smtpwrapper.h +++ b/noncore/net/mail/libmailwrapper/smtpwrapper.h @@ -17,8 +17,9 @@ struct mailimf_fields; struct mailimf_field; struct mailimf_mailbox; struct mailmime; struct mailimf_address_list; +class progressMailSend; class SMTPwrapper : public QObject { Q_OBJECT @@ -28,8 +29,9 @@ public: virtual ~SMTPwrapper(){} void sendMail(const Mail& mail,bool later=false ); void flushOutbox(SMTPaccount*smtp); + static progressMailSend*sendProgress; protected: mailimf_mailbox *newMailbox(const QString&name,const QString&mail ); mailimf_fields *createImfFields(const Mail &mail ); mailmime *createMimeMail(const Mail&mail ); @@ -51,9 +53,9 @@ protected: static void addRcpts( clist *list, mailimf_address_list *addr_list ); static char *getFrom( mailmime *mail ); static char *getFrom( mailimf_field *ffrom); static mailimf_field *getField( mailimf_fields *fields, int type ); - static int smtpSend(char*from,clist*rcpts,char*data,size_t size, SMTPaccount *smtp ); + int smtpSend(char*from,clist*rcpts,char*data,size_t size, SMTPaccount *smtp ); void storeMail(mailmime*mail, const QString&box); Settings *settings; diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro index dd3c337..ea5fb58 100644 --- a/noncore/net/mail/mail.pro +++ b/noncore/net/mail/mail.pro @@ -19,9 +19,10 @@ HEADERS = defines.h \ settingsdialog.h \ statuswidget.h \ smtpwrapper.h \ genericwrapper.h \ - mboxwrapper.h + mboxwrapper.h \ + sendmailprogress.h SOURCES = main.cpp \ opiemail.cpp \ mainwindow.cpp \ @@ -41,9 +42,10 @@ SOURCES = main.cpp \ settingsdialog.cpp \ statuswidget.cpp \ smtpwrapper.cpp \ genericwrapper.cpp \ - mboxwrapper.cpp + mboxwrapper.cpp \ + sendmailprogress.cpp INTERFACES = editaccountsui.ui \ selectmailtypeui.ui \ imapconfigui.ui \ @@ -53,9 +55,10 @@ INTERFACES = editaccountsui.ui \ addresspickerui.ui \ logindialogui.ui \ composemailui.ui \ settingsdialogui.ui \ - statuswidgetui.ui + statuswidgetui.ui \ + sendmailprogressui.ui INCLUDEPATH += $(OPIEDIR)/include CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX ) diff --git a/noncore/net/mail/sendmailprogress.cpp b/noncore/net/mail/sendmailprogress.cpp new file mode 100644 index 0000000..13ddd37 --- a/dev/null +++ b/noncore/net/mail/sendmailprogress.cpp @@ -0,0 +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) +{ +} + +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); + allMailLabel->setText(text); +} diff --git a/noncore/net/mail/sendmailprogress.h b/noncore/net/mail/sendmailprogress.h new file mode 100644 index 0000000..5b7d33b --- a/dev/null +++ b/noncore/net/mail/sendmailprogress.h @@ -0,0 +1,19 @@ +#include "sendmailprogressui.h" + +class progressMailSend:public progressMailSendUI +{ + Q_OBJECT +public: + progressMailSend(QWidget*parent = 0, const char * name = 0); + ~progressMailSend(); + + void setMaxMails(unsigned int aMaxMails); + void setCurrentMails(unsigned int aCurrent); + + void setSingleMail(unsigned int aCurrent,unsigned int aMax); + +protected: + unsigned m_current_mail,m_current_single,m_max_mail,m_max_single; + void setSingle(); + void setMails(); +}; diff --git a/noncore/net/mail/sendmailprogressui.ui b/noncore/net/mail/sendmailprogressui.ui new file mode 100644 index 0000000..b90b088 --- a/dev/null +++ b/noncore/net/mail/sendmailprogressui.ui @@ -0,0 +1,110 @@ +<!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> + </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"> + <name>name</name> + <cstring>singleMailLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Progress of mail</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QProgressBar</class> + <property stdset="1"> + <name>name</name> + <cstring>singleMailProgressBar</cstring> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>allMailLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Sending mail</string> + </property> + <property stdset="1"> + <name>alignment</name> + <set>AlignCenter</set> + </property> + <property> + <name>hAlign</name> + </property> + </widget> + <widget> + <class>QProgressBar</class> + <property stdset="1"> + <name>name</name> + <cstring>allMailProgressBar</cstring> + </property> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Spacer6</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Vertical</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> +</widget> +</UI> diff --git a/noncore/net/mail/smtpwrapper.cpp b/noncore/net/mail/smtpwrapper.cpp index b81a87f..53c0af5 100644 --- a/noncore/net/mail/smtpwrapper.cpp +++ b/noncore/net/mail/smtpwrapper.cpp @@ -14,8 +14,11 @@ #include "mboxwrapper.h" #include "logindialog.h" #include "mailtypes.h" #include "defines.h" +#include "sendmailprogress.h" + +progressMailSend*SMTPwrapper::sendProgress = 0; SMTPwrapper::SMTPwrapper( Settings *s ) : QObject() { @@ -519,9 +522,12 @@ void SMTPwrapper::readFromFile(const QString&file, char **data, size_t *size ) } void SMTPwrapper::progress( size_t current, size_t maximum ) { -// qDebug( "Current: %i of %i", current, maximum ); + if (SMTPwrapper::sendProgress) { + SMTPwrapper::sendProgress->setSingleMail(current, maximum ); + qDebug("%u of %u",current,maximum); + } } void SMTPwrapper::storeMail(char*mail, size_t length, const QString&box) { @@ -644,11 +650,18 @@ void SMTPwrapper::sendMail(const Mail&mail,bool later ) mimeMail = createMimeMail(mail ); if ( mimeMail == NULL ) { qDebug( "sendMail: error creating mime mail" ); } else { + sendProgress = new progressMailSend(); + sendProgress->showMaximized(); + sendProgress->show(); + qApp->processEvents(10); 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) @@ -672,8 +685,9 @@ int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which) rcpts = createRcptList( fields ); ffrom = getField(fields, MAILIMF_FIELD_FROM ); from = getFrom(ffrom); + qDebug("Size: %i vs. %i",length,strlen(data)); if (rcpts && from) { return smtpSend(from,rcpts,data,strlen(data),smtp ); } diff --git a/noncore/net/mail/smtpwrapper.h b/noncore/net/mail/smtpwrapper.h index c0dcc11..baa353b 100644 --- a/noncore/net/mail/smtpwrapper.h +++ b/noncore/net/mail/smtpwrapper.h @@ -17,8 +17,9 @@ struct mailimf_fields; struct mailimf_field; struct mailimf_mailbox; struct mailmime; struct mailimf_address_list; +class progressMailSend; class SMTPwrapper : public QObject { Q_OBJECT @@ -28,8 +29,9 @@ public: virtual ~SMTPwrapper(){} void sendMail(const Mail& mail,bool later=false ); void flushOutbox(SMTPaccount*smtp); + static progressMailSend*sendProgress; protected: mailimf_mailbox *newMailbox(const QString&name,const QString&mail ); mailimf_fields *createImfFields(const Mail &mail ); mailmime *createMimeMail(const Mail&mail ); @@ -51,9 +53,9 @@ protected: static void addRcpts( clist *list, mailimf_address_list *addr_list ); static char *getFrom( mailmime *mail ); static char *getFrom( mailimf_field *ffrom); static mailimf_field *getField( mailimf_fields *fields, int type ); - static int smtpSend(char*from,clist*rcpts,char*data,size_t size, SMTPaccount *smtp ); + int smtpSend(char*from,clist*rcpts,char*data,size_t size, SMTPaccount *smtp ); void storeMail(mailmime*mail, const QString&box); Settings *settings; |