summaryrefslogtreecommitdiff
path: root/noncore
authoralwin <alwin>2003-12-24 01:29:43 (UTC)
committer alwin <alwin>2003-12-24 01:29:43 (UTC)
commit242f7a04e3e4963a5606ac603d54a4f115de4a04 (patch) (side-by-side diff)
treedd8578fbc812791dd7e5026a28710a8313cf5cf8 /noncore
parent7c720aabcad9b325dbf9910493e3c9fa1d63805e (diff)
downloadopie-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.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/sendmailprogress.cpp48
-rw-r--r--noncore/net/mail/libmailwrapper/sendmailprogress.h19
-rw-r--r--noncore/net/mail/libmailwrapper/sendmailprogressui.ui110
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.cpp16
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.h4
-rw-r--r--noncore/net/mail/mail.pro9
-rw-r--r--noncore/net/mail/sendmailprogress.cpp48
-rw-r--r--noncore/net/mail/sendmailprogress.h19
-rw-r--r--noncore/net/mail/sendmailprogressui.ui110
-rw-r--r--noncore/net/mail/smtpwrapper.cpp16
-rw-r--r--noncore/net/mail/smtpwrapper.h4
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
@@ -12,12 +12,15 @@
#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;
}
@@ -517,13 +520,16 @@ void SMTPwrapper::readFromFile(const QString&file, char **data, size_t *size )
memcpy(*data,msg.ascii(),msg.length());
*size=msg.length();
}
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)
{
if (!mail) return;
QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/");
@@ -642,15 +648,22 @@ void SMTPwrapper::sendMail(const Mail&mail,bool later )
SMTPaccount *smtp = getAccount(mail.getName());
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)
{
char*data = 0;
@@ -670,12 +683,13 @@ int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which)
return 0;
}
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 );
}
return 0;
}
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
@@ -15,23 +15,25 @@ class RecMail;
class Attachment;
struct mailimf_fields;
struct mailimf_field;
struct mailimf_mailbox;
struct mailmime;
struct mailimf_address_list;
+class progressMailSend;
class SMTPwrapper : public QObject
{
Q_OBJECT
public:
SMTPwrapper( Settings *s );
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 );
mailimf_address_list *parseAddresses(const QString&addr );
@@ -49,13 +51,13 @@ protected:
static QString getTmpFile();
static void progress( size_t current, size_t maximum );
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;
int sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which);
};
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
@@ -17,13 +17,14 @@ HEADERS = defines.h \
pop3wrapper.h \
abstractmail.h \
settingsdialog.h \
statuswidget.h \
smtpwrapper.h \
genericwrapper.h \
- mboxwrapper.h
+ mboxwrapper.h \
+ sendmailprogress.h
SOURCES = main.cpp \
opiemail.cpp \
mainwindow.cpp \
accountview.cpp \
composemail.cpp \
@@ -39,25 +40,27 @@ SOURCES = main.cpp \
pop3wrapper.cpp \
abstractmail.cpp \
settingsdialog.cpp \
statuswidget.cpp \
smtpwrapper.cpp \
genericwrapper.cpp \
- mboxwrapper.cpp
+ mboxwrapper.cpp \
+ sendmailprogress.cpp
INTERFACES = editaccountsui.ui \
selectmailtypeui.ui \
imapconfigui.ui \
pop3configui.ui \
nntpconfigui.ui \
smtpconfigui.ui \
addresspickerui.ui \
logindialogui.ui \
composemailui.ui \
settingsdialogui.ui \
- statuswidgetui.ui
+ statuswidgetui.ui \
+ sendmailprogressui.ui
INCLUDEPATH += $(OPIEDIR)/include
CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX )
contains( CONFTEST, y ){
LIBS += -lqpe -letpan -lssl -lcrypto -lopie -liconv
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
@@ -12,12 +12,15 @@
#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;
}
@@ -517,13 +520,16 @@ void SMTPwrapper::readFromFile(const QString&file, char **data, size_t *size )
memcpy(*data,msg.ascii(),msg.length());
*size=msg.length();
}
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)
{
if (!mail) return;
QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/");
@@ -642,15 +648,22 @@ void SMTPwrapper::sendMail(const Mail&mail,bool later )
SMTPaccount *smtp = getAccount(mail.getName());
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)
{
char*data = 0;
@@ -670,12 +683,13 @@ int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which)
return 0;
}
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 );
}
return 0;
}
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
@@ -15,23 +15,25 @@ class RecMail;
class Attachment;
struct mailimf_fields;
struct mailimf_field;
struct mailimf_mailbox;
struct mailmime;
struct mailimf_address_list;
+class progressMailSend;
class SMTPwrapper : public QObject
{
Q_OBJECT
public:
SMTPwrapper( Settings *s );
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 );
mailimf_address_list *parseAddresses(const QString&addr );
@@ -49,13 +51,13 @@ protected:
static QString getTmpFile();
static void progress( size_t current, size_t maximum );
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;
int sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which);
};