summaryrefslogtreecommitdiff
authorgroucho <groucho>2003-04-29 08:04:34 (UTC)
committer groucho <groucho>2003-04-29 08:04:34 (UTC)
commitf09f685be0540e98cc33bc4f664a812aed756926 (patch) (side-by-side diff)
tree10a2193eafd1dc0ae25cd458f3bfa9f0f23522e1
parente096c9d1f2be1ec74ede583fc4221871a56ef508 (diff)
downloadopie-f09f685be0540e98cc33bc4f664a812aed756926.zip
opie-f09f685be0540e98cc33bc4f664a812aed756926.tar.gz
opie-f09f685be0540e98cc33bc4f664a812aed756926.tar.bz2
- added ReplyAll for CC: addressing
- added a download button in mail view - smaller layout fixes - now it's getting to be real useful
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mailit/emailclient.cpp130
-rw-r--r--noncore/net/mailit/emailclient.h11
-rw-r--r--noncore/net/mailit/emailhandler.cpp4
-rw-r--r--noncore/net/mailit/emailhandler.h1
-rw-r--r--noncore/net/mailit/mailitwindow.cpp3
-rw-r--r--noncore/net/mailit/popclient.cpp4
-rw-r--r--noncore/net/mailit/readmail.cpp62
-rw-r--r--noncore/net/mailit/readmail.h8
-rw-r--r--noncore/net/mailit/writemail.cpp31
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp130
-rw-r--r--noncore/unsupported/mailit/emailclient.h11
-rw-r--r--noncore/unsupported/mailit/emailhandler.cpp4
-rw-r--r--noncore/unsupported/mailit/emailhandler.h1
-rw-r--r--noncore/unsupported/mailit/mailitwindow.cpp3
-rw-r--r--noncore/unsupported/mailit/popclient.cpp4
-rw-r--r--noncore/unsupported/mailit/readmail.cpp62
-rw-r--r--noncore/unsupported/mailit/readmail.h8
-rw-r--r--noncore/unsupported/mailit/writemail.cpp31
18 files changed, 386 insertions, 122 deletions
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index dff1888..2cedc51 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -14,23 +14,25 @@
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qapplication.h>
#include <qmessagebox.h>
+#include <qvbox.h>
#include <qfile.h>
#include <qcheckbox.h>
#include <qmenubar.h>
#include <qaction.h>
#include <qwhatsthis.h>
#include <qpe/resource.h>
#include "emailclient.h"
+#include "writemail.h"
QCollection::Item AccountList::newItem(QCollection::Item d)
{
return dupl( (MailAccount *) d);
}
MailAccount* AccountList::dupl(MailAccount *in)
{
@@ -48,30 +50,31 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
receiving = FALSE;
previewingMail = FALSE;
mailIdCount = 1;
accountIdCount = 1;
allAccounts = FALSE;
init();
+
+
connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) );
connect(emailHandler, SIGNAL(smtpError(int)), this,
SLOT(smtpError(int)) );
connect(emailHandler, SIGNAL(popError(int)), this,
SLOT(popError(int)) );
connect(inboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
connect(outboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
connect(inboxView, SIGNAL(pressed(QListViewItem *)), this, SLOT(inboxItemPressed()) );
connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemReleased()) );
-
connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
SLOT(mailArrived(const Email &, bool)) );
connect(emailHandler, SIGNAL(mailTransfered(int)), this,
SLOT(allMailArrived(int)) );
mailconf = new Config("mailit");
//In case Synchronize is not defined in settings.txt
@@ -79,16 +82,21 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
updateAccounts();
lineShift = "\n";
readMail();
lineShift = "\r\n";
mailboxView->setCurrentTab(0); //ensure that inbox has focus
+
+ /*channel = new QCopChannel( "QPE/Application/mailit", this );
+ connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
+ this, SLOT(receive(const QCString&, const QByteArray&)) );*/
+
}
EmailClient::~EmailClient()
{
//needs to be moved from destructor to closewindow event
saveMail(getPath(FALSE) + "inbox.txt", inboxView);
//does not currently work. Defining outbox in the same
@@ -99,38 +107,17 @@ EmailClient::~EmailClient()
mailconf->write();
delete mailconf;
}
void EmailClient::init()
{
- statusBar = new QStatusBar(this);
- statusBar->setSizeGripEnabled(FALSE);
-
- status1Label = new QLabel( tr("Idle"), statusBar);
- status2Label = new QLabel("", statusBar);
- connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
- status2Label, SLOT(setText(const QString &)) );
- connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
- status2Label, SLOT(setText(const QString &)) );
-
- progressBar = new QProgressBar(statusBar);
-
- connect(emailHandler, SIGNAL(mailboxSize(int)),
- this, SLOT(setTotalSize(int)) );
- connect(emailHandler, SIGNAL(currentMailSize(int)),
- this, SLOT(setMailSize(int)) );
- connect(emailHandler, SIGNAL(downloadedSize(int)),
- this, SLOT(setDownloadedSize(int)) );
-
- statusBar->addWidget(status1Label);
- statusBar->addWidget(progressBar);
- statusBar->addWidget(status2Label);
+ initStatusBar(this);
setToolBarsMovable(FALSE);
bar = new QToolBar(this);
QWhatsThis::add(bar,tr("Main operation toolbar"));
bar->setHorizontalStretchable( TRUE );
mb = new QMenuBar( bar );
@@ -189,40 +176,72 @@ void EmailClient::init()
// grid_2->setMargin( 11 );
inboxView = new QListView( widget, "inboxView" );
inboxView->addColumn( tr( "From" ) );
inboxView->addColumn( tr( "Subject" ) );
inboxView->addColumn( tr( "Date" ) );
inboxView->setMinimumSize( QSize( 0, 0 ) );
inboxView->setAllColumnsShowFocus(TRUE);
- QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n It keeps the fetched mail which can be viewed by double clicking the entry.\n"
- " A blue attachment icon shows whether this mail has attachments."));
+ QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n"
+ "It keeps the fetched mail which can be \n"
+ "viewed by double clicking the entry.\n"
+ "blue attachment icon shows whether this \n"
+ "mailhas attachments.\n"));
grid_2->addWidget( inboxView, 2, 0 );
mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
QWidget* widget_2 = new QWidget( mailboxView, "widget_2" );
grid_3 = new QGridLayout( widget_2 );
// grid_3->setSpacing(6);
// grid_3->setMargin( 11 );
outboxView = new QListView( widget_2, "outboxView" );
outboxView->addColumn( tr( "To" ) );
outboxView->addColumn( tr( "Subject" ) );
outboxView->setAllColumnsShowFocus(TRUE);
- QWhatsThis::add(outboxView,QWidget::tr("This is the oubox view.\n It keeps the queued mails to send which can be reviewed by double clicking the entry."));
+ QWhatsThis::add(outboxView,QWidget::tr("This is the outbox view.\n"
+ "It keeps the queued mails to send which can be \n"
+ "reviewed by double clicking the entry."));
grid_3->addWidget( outboxView, 0, 0 );
mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
setCentralWidget(mailboxView);
}
+void EmailClient::initStatusBar(QWidget* parent)
+{
+ statusBar = new QStatusBar(parent);
+ statusBar->setSizeGripEnabled(FALSE);
+
+ status1Label = new QLabel( tr("Idle"), statusBar);
+ status2Label = new QLabel("", statusBar);
+ connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
+ status2Label, SLOT(setText(const QString &)) );
+ connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
+ status2Label, SLOT(setText(const QString &)) );
+
+ progressBar = new QProgressBar(statusBar);
+
+ connect(emailHandler, SIGNAL(mailboxSize(int)),
+ this, SLOT(setTotalSize(int)) );
+ connect(emailHandler, SIGNAL(currentMailSize(int)),
+ this, SLOT(setMailSize(int)) );
+ connect(emailHandler, SIGNAL(downloadedSize(int)),
+ this, SLOT(setDownloadedSize(int)) );
+
+ statusBar->addWidget(status1Label);
+ statusBar->addWidget(progressBar);
+ statusBar->addWidget(status2Label);
+
+}
+
void EmailClient::compose()
{
emit composeRequested();
}
void EmailClient::cancel()
{
emailHandler->cancel();
@@ -314,26 +333,26 @@ void EmailClient::getNewMail() {
getMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
selectAccountMenu->setEnabled(FALSE);
status1Label->setText(currentAccount->accountName + " headers");
progressBar->reset();
//get any previous mails not downloaded and add to queue
- mailDownloadList.clear();
+ /*mailDownloadList.clear();
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while (item != NULL) {
mailPtr = item->getMail();
if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
}
item = (EmailListItem *) item->nextSibling();
- }
+ }*/
emailHandler->getMailHeaders();
}
void EmailClient::getAllNewMail()
{
allAccounts = TRUE;
@@ -346,23 +365,25 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
Enclosure *ePtr;
Email newMail;
int thisMailId;
emailHandler->parse(mail.rawMail, lineShift, &newMail);
mailconf->setGroup(newMail.id);
if (fromDisk)
{
+
newMail.downloaded = mailconf->readBoolEntry("downloaded");
newMail.size = mailconf->readNumEntry("size");
newMail.serverId = mailconf->readNumEntry("serverid");
newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
}
else
{ //mail arrived from server
+
newMail.serverId = mail.serverId;
newMail.size = mail.size;
newMail.downloaded = mail.downloaded;
newMail.fromAccountId = emailHandler->getAccount()->id;
mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
}
@@ -913,56 +934,99 @@ void EmailClient::inboxItemPressed()
// timerID=startTimer(500);
}
void EmailClient::inboxItemReleased()
{
// killTimer(timerID);
}
-void EmailClient::timerEvent(QTimerEvent *e)
+/*void EmailClient::timerEvent(QTimerEvent *e)
{
/*killTimer(timerID);
QPopupMenu *action = new QPopupMenu(this);
int reply=0;
action->insertItem(tr( "Reply To" ),this,SLOT(reply()));
action->insertItem( tr( "Reply All" ),this,SLOT(replyAll()));
action->insertItem( tr( "Forward" ), this,SLOT(forward()));
action->insertItem( tr( "Remove Mail" ), this,SLOT(remove()));
action->exec(QCursor::pos());
if (action) delete action;
- */
-}
+
+}*/
Email* EmailClient::getCurrentMail()
{
EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
if (eli!=NULL)
return eli->getMail();
else
return NULL;
}
void EmailClient::download(Email* mail)
{
MailAccount* acc=0;
tempMailDownloadList.clear();
tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
- if (accountList.count()>0)
- qDebug("Accounts present");
acc=accountList.at(mail->fromAccountId-1);
if (acc)
{
emailHandler->setAccount(*acc);
emailHandler->getMailByList(&tempMailDownloadList);
}
else
QMessageBox::warning(qApp->activeWindow(),
tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n");
}
+
+void EmailClient::receive(const QCString& msg, const QByteArray& data)
+{
+ /*if (msg=="getMail()")
+ {
+ /*QDialog qd(qApp->activeWindow(),"Getting mail",true);
+ QVBoxLayout *vbProg = new QVBoxLayout( &qd );
+
+ initStatusBar(&qd);
+
+ if (statusBar==0)
+ {
+ qDebug("No Bar ...");
+ //statusBar=new ProgressBar(&qd);
+ }
+ statusBar->show();
+ vbProg->addWidget(statusBar);
+ qd.showMaximized();
+ qd.show();
+ emit getAllNewMail();
+ //qd.exec();
+ }
+ else if (msg=="compose()")
+ {
+ QDialog qd(qApp->activeWindow(),"Getting mail",true);
+
+ WriteMail wm(&qd,"write new mail");
+ QVBoxLayout vbProg( &qd );
+
+ wm.showMaximized();
+ vbProg.addWidget(&wm);
+
+ qd.showMaximized();
+
+ emit composeRequested();
+ qd.exec();
+
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }
+
+ else if (msg=="dialog()")
+ {
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }*/
+}
diff --git a/noncore/net/mailit/emailclient.h b/noncore/net/mailit/emailclient.h
index 549683b..994fec5 100644
--- a/noncore/net/mailit/emailclient.h
+++ b/noncore/net/mailit/emailclient.h
@@ -36,16 +36,17 @@
#include <qimage.h>
#include <qpixmap.h>
#include <qstringlist.h>
#include <qprogressbar.h>
#include <qstatusbar.h>
#include <qdir.h>
#include <stdlib.h>
#include <opie/otabwidget.h>
+#include <qpe/qcopenvelope_qws.h>
#include <qtimer.h>
#include "emailhandler.h"
#include "emaillistitem.h"
#include "textparser.h"
#include "editaccount.h"
#include "maillist.h"
#include "addresslist.h"
@@ -65,20 +66,19 @@ private:
class EmailClient : public QMainWindow
{
Q_OBJECT
public:
EmailClient( QWidget* parent, const char* name, WFlags fl = 0 );
~EmailClient();
AddressList* getAdrListRef();
- void download(Email*);
protected:
- void timerEvent(QTimerEvent*);
+ //void timerEvent(QTimerEvent*);
signals:
void composeRequested();
void viewEmail(QListView *, Email *);
void mailUpdated(Email *);
void newCaption(const QString &);
void replyRequested(Email&, bool&);
void forwardRequested(Email&);
@@ -111,23 +111,28 @@ public slots:
void editAccount(int);
void updateAccounts();
void deleteAccount(int);
void deleteMail(EmailListItem *mailItem, bool &inbox);
void setTotalSize(int);
void setMailSize(int);
void setDownloadedSize(int);
void moveMailFront(Email *mailPtr);
+ void download(Email*);
/* void reply();
void replyAll();
void forward();
void remove();*/
+private slots:
+ void receive(const QCString&, const QByteArray&);
+
private:
void init();
+ void initStatusBar(QWidget*);
void readMail();
QString getPath(bool enclosurePath);
void readSettings();
void saveSettings();
Email* getCurrentMail();
int timerID;
Config *mailconf;
int newAccountId, idCount, mailIdCount;
@@ -141,16 +146,18 @@ private:
QList<Email> quedMessages;
MailList mailDownloadList;
MailList tempMailDownloadList;
bool sending, receiving, previewingMail, allAccounts;
QString lineShift;
MailAccount account, *currentAccount;
+ QCopChannel* channel;
+
QToolBar *bar;
QProgressBar *progressBar;
QStatusBar *statusBar;
QLabel *status1Label, *status2Label;
QToolButton *getMailButton;
QAction *sendMailButton;
QAction *composeButton;
QAction *cancelButton;
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index fbbada7..c7b27a0 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -34,16 +34,18 @@ QCollection::Item EnclosureList::newItem(QCollection::Item d)
Enclosure* EnclosureList::dupl(Enclosure *in)
{
ac = new Enclosure(*in);
return ac;
}
EmailHandler::EmailHandler()
{
+ qDebug("EMailHandler::EmailHandler");
+
smtpClient = new SmtpClient();
popClient = new PopClient();
connect(smtpClient, SIGNAL(errorOccurred(int)), this,
SIGNAL(smtpError(int)) );
connect(smtpClient, SIGNAL(mailSent()), this, SIGNAL(mailSent()) );
connect(smtpClient, SIGNAL(updateStatus(const QString &)), this,
SIGNAL(updateSmtpStatus(const QString &)) );
@@ -110,16 +112,17 @@ void EmailHandler::getMail()
void EmailHandler::getMailHeaders()
{
popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
headers = TRUE;
popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
+ qDebug("Initiating connection");
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::getMailByList(MailList *mailList)
{
if (mailList->count() == 0) { //should not occur though
emit mailTransfered(0);
return;
@@ -621,8 +624,9 @@ void EmailHandler::encode64base(char *src, QString *dest, int len)
}
}
void EmailHandler::cancel()
{
popClient->errorHandling(ErrCancel);
smtpClient->errorHandling(ErrCancel);
}
+
diff --git a/noncore/net/mailit/emailhandler.h b/noncore/net/mailit/emailhandler.h
index b645868..5b59f65 100644
--- a/noncore/net/mailit/emailhandler.h
+++ b/noncore/net/mailit/emailhandler.h
@@ -23,16 +23,17 @@
#include <qobject.h>
#include <qstring.h>
#include <qdatetime.h>
#include <qlist.h>
#include <qstringlist.h>
#include <qfile.h>
#include <qstringlist.h>
#include <qcollection.h>
+#include <qpe/qcopenvelope_qws.h>
#include "smtpclient.h"
#include "popclient.h"
#include "textparser.h"
#include "maillist.h"
struct Enclosure
{
diff --git a/noncore/net/mailit/mailitwindow.cpp b/noncore/net/mailit/mailitwindow.cpp
index ffee67e..a111241 100644
--- a/noncore/net/mailit/mailitwindow.cpp
+++ b/noncore/net/mailit/mailitwindow.cpp
@@ -56,16 +56,19 @@ MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
connect(readMail, SIGNAL(removeItem(EmailListItem *, bool &)), emailClient,
SLOT(deleteMail(EmailListItem *, bool &)) );
connect(readMail, SIGNAL(viewingMail(Email *)), emailClient,
SLOT(moveMailFront(Email *)) );
connect(emailClient, SIGNAL(newCaption(const QString &)),
this, SLOT(updateCaption(const QString &)) );
+
+ connect(readMail, SIGNAL(download(Email *)), emailClient, SLOT(download(Email*)) );
+
viewingMail = FALSE;
}
MailItWindow::~MailItWindow()
{
}
void MailItWindow::closeEvent(QCloseEvent *e)
diff --git a/noncore/net/mailit/popclient.cpp b/noncore/net/mailit/popclient.cpp
index 6105d09..fedc4e2 100644
--- a/noncore/net/mailit/popclient.cpp
+++ b/noncore/net/mailit/popclient.cpp
@@ -24,16 +24,17 @@
extern "C" {
#include "md5.h"
}
#include <qcstring.h>
PopClient::PopClient()
{
+
socket = new QSocket(this, "popClient");
connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int)));
connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished()));
connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData()));
stream = new QTextStream(socket);
receiving = FALSE;
@@ -113,16 +114,17 @@ void PopClient::incomingData()
QString response, temp, temp2, timeStamp;
QString md5Source;
int start, end;
// char *md5Digest;
char md5Digest[16];
// if ( !socket->canReadLine() )
// return;
+
response = socket->readLine();
switch(status) {
//logging in
case Init: {
#ifdef APOP_TEST
start = response.find('<',0);
end = response.find('>', start);
@@ -152,16 +154,17 @@ void PopClient::incomingData()
}
break;
}
case Pass: {
*stream << "PASS " << popPassword << "\r\n";
status = Stat;
+
break;
}
//ask for number of messages
case Stat: {
if (response[0] == '+') {
*stream << "STAT" << "\r\n";
status = Mcnt;
} else errorHandling(ErrLoginFailed);
@@ -268,17 +271,16 @@ void PopClient::incomingData()
response = socket->readLine();
message += response;
}
emit downloadedSize(message.length());
int x = message.find("\r\n.\r\n",-5);
if (x == -1) {
break;
} else { //message reach entire size
-
if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
{
emit newMessage(message, messageCount-1, mailSize, TRUE);
} else { //incomplete mail downloaded
emit newMessage(message, messageCount-1, mailSize, FALSE);
}
if ((messageCount > newMessages)||(selected)) //last message ?
diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp
index 4eae7f6..1682675 100644
--- a/noncore/net/mailit/readmail.cpp
+++ b/noncore/net/mailit/readmail.cpp
@@ -14,18 +14,20 @@
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "readmail.h"
#include <qimage.h>
+#include <qwhatsthis.h>
#include <qmime.h>
#include <qaction.h>
+#include <qpopupmenu.h>
#include <qpe/resource.h>
ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl )
: QMainWindow(parent, name, fl)
{
plainTxt = FALSE;
init();
@@ -37,39 +39,35 @@ ReadMail::~ReadMail()
delete emailView->mimeSourceFactory();
delete viewAtt;
}
void ReadMail::init()
{
setToolBarsMovable(FALSE);
+ QPopupMenu* mailaction=new QPopupMenu(this);
+
bar = new QToolBar(this);
bar->setHorizontalStretchable( TRUE );
menu = new QMenuBar( bar );
viewMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&View" ), viewMenu);
mailMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&Mail" ), mailMenu);
bar = new QToolBar(this);
- //reply dependant on viewing inbox
- replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
- QString::null, 0, this, 0 );
- connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
- replyButton->setWhatsThis(tr("Click here to reply to the selected mail"));
+ downloadButton = new QAction( tr( "Download" ), Resource::loadPixmap( "mailit/download" ),QString::null, 0, this, 0 );
+ connect(downloadButton, SIGNAL(activated()), this, SLOT(download()) );
+ downloadButton->setWhatsThis(tr("Click here to download the selected mail"));
- forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
- QString::null, 0, this, 0 );
- connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
- forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
previousButton->addTo(bar);
previousButton->addTo(viewMenu);
previousButton->setWhatsThis(tr("Read the previous mail in the list"));
nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
@@ -89,16 +87,33 @@ void ReadMail::init()
connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) );
plainTextButton->addTo(bar);
plainTextButton->addTo(viewMenu);
plainTextButton->setWhatsThis(tr("The mail view has 2 modes:\n"
"<LI><B>RichText</B> shows the mail as HTML with reach features (no standard line breaks)</LI>"
"<LI><B>Plain</B> shows the mail as standard plain text</LI>"
"Click here to switch between those view modes" ));
+ //reply dependant on viewing inbox
+ replyButton = new QToolButton(Resource::loadPixmap("mailit/reply"),tr("reply"),tr("reply to mail"), this,SLOT(reply()),bar);
+ QWhatsThis::add(replyButton,tr("Click here to reply to the selected mail\nPress and hold for more options."));
+ replyButton->setPopup(mailaction);
+
+ replyAllButton = new QAction( tr( "Reply all" ), Resource::loadPixmap( "mailit/reply" ),QString::null, 0, this, 0 );
+ connect(replyAllButton, SIGNAL(activated()), this, SLOT(replyAll()));
+ replyAllButton->setWhatsThis(tr("Click here to reply to the selected mail to CC: addresses also"));
+ replyAllButton->addTo(mailaction);
+
+ forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
+ QString::null, 0, this, 0 );
+ connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()));
+ forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
+ forwardButton->addTo(mailaction);
+
+
deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
deleteButton->addTo(bar);
deleteButton->addTo(mailMenu);
deleteButton->setWhatsThis(tr("Click here to remove the selected mail"));
viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close()));
@@ -114,29 +129,36 @@ void ReadMail::updateView()
{
Enclosure *ePtr;
QString mailStringSize;
QString text, temp;
mail->read = TRUE; //mark as read
inbox = mail->received;
- replyButton->removeFrom(mailMenu);
- replyButton->removeFrom(bar);
+ replyButton->setEnabled(false);
+ /*replyButton->removeFrom(bar);
forwardButton->removeFrom(mailMenu);
- forwardButton->removeFrom(bar);
+ forwardButton->removeFrom(bar);*/
+ downloadButton->removeFrom(bar);
+
+ //downloadButton->setEnabled(!mail->downloaded);
+
if (inbox == TRUE) {
- replyButton->addTo(bar);
- replyButton->addTo(mailMenu);
+ replyButton->setEnabled(true);
+ /*replyButton->addTo(mailMenu);
forwardButton->addTo(bar);
- forwardButton->addTo(mailMenu);
+ forwardButton->addTo(mailMenu);*/
if (!mail->downloaded) {
+
+ downloadButton->addTo(bar);
+
//report currently viewed mail so that it will be
//placed first in the queue of new mails to download
emit viewingMail(mail);
double mailSize = (double) mail->size;
if (mailSize < 1024) {
mailStringSize.setNum(mailSize);
mailStringSize += " Bytes";
@@ -352,16 +374,26 @@ void ReadMail::shiftText()
void ReadMail::viewAttachments()
{
viewAtt->update(mail, inbox);
viewAtt->showMaximized();
}
void ReadMail::reply()
{
+ emit replyRequested(*mail, (bool&)FALSE);
+}
+
+void ReadMail::replyAll()
+{
emit replyRequested(*mail, (bool&)TRUE);
}
void ReadMail::forward()
{
emit forwardRequested(*mail);
}
+void ReadMail::download()
+{
+ emit download(mail);
+}
+
diff --git a/noncore/net/mailit/readmail.h b/noncore/net/mailit/readmail.h
index df32c34..6700595 100644
--- a/noncore/net/mailit/readmail.h
+++ b/noncore/net/mailit/readmail.h
@@ -23,16 +23,17 @@
#include <qaction.h>
#include <qmainwindow.h>
#include <qmenubar.h>
#include <qpopupmenu.h>
#include <qlabel.h>
#include <qlistview.h>
#include <qlayout.h>
#include <qtextview.h>
+#include <qtoolbutton.h>
#include "emailhandler.h"
#include "emaillistitem.h"
#include "viewatt.h"
class ReadMail : public QMainWindow
{
Q_OBJECT
@@ -45,26 +46,29 @@ public:
void mailUpdated(Email *mailIn);
signals:
void cancelView();
void replyRequested(Email &, bool &);
void forwardRequested(Email&);
void removeItem(EmailListItem *, bool &);
void viewingMail(Email *);
+ void download (Email*);
public slots:
void close();
void next();
void previous();
void deleteItem();
void shiftText();
void viewAttachments();
void reply();
+ void replyAll();
void forward();
+ void download();
private:
void init();
void updateButtons();
private:
QListView *view;
EmailListItem *item;
@@ -77,13 +81,15 @@ private:
QPopupMenu *viewMenu, *mailMenu;
QAction *deleteButton;
QMimeSourceFactory *mime;
QAction *plainTextButton;
QAction *nextButton;
QTextView *emailView;
QAction *attachmentButton;
QAction *previousButton;
- QAction *replyButton;
+ QToolButton *replyButton;
QAction *forwardButton;
+ QAction *replyAllButton;
+ QAction *downloadButton;
};
#endif // READMAIL_H
diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp
index dcf0c6e..c75494e 100644
--- a/noncore/net/mailit/writemail.cpp
+++ b/noncore/net/mailit/writemail.cpp
@@ -17,18 +17,17 @@
** not clear to you.
**
**********************************************************************/
#include <qmessagebox.h>
#include <qwhatsthis.h>
#include "writemail.h"
#include <qpe/resource.h>
-WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
- : QMainWindow( parent, name, fl )
+WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ):QMainWindow( parent, name, fl )
{
showingAddressList = FALSE;
init();
addAtt = new AddAtt(0, "Add Attachments");
}
WriteMail::~WriteMail()
@@ -263,29 +262,35 @@ void WriteMail::reply(Email replyMail, bool replyAll)
for (QStringList::Iterator it = mail.carbonCopies.begin();it != mail.carbonCopies.end(); ++it)
{
ccRecipients.append(*it);
ccRecipients.append(";");
}
ccRecipients.truncate(ccRecipients.length()-1); //no ; at the end
ccInput->setText(ccRecipients);
}
-
- addRecipients(replyAll);
+ else ccInput->clear();
subjectInput->setText(tr("Re: ") + mail.subject);
+ QString citation=mail.fromMail;
+ citation.append(tr(" wrote on "));
+ citation.append(mail.date);
+ citation.append(":\n");
+
+
+ //mail.body.insert(0,tr("On"));
pos = 0;
mail.body.insert(pos, ">");
while (pos != -1) {
pos = mail.body.find('\n', pos);
if (pos != -1)
mail.body.insert(++pos, ">>");
}
-
+ mail.body.insert(0,citation);
emailInput->setText(mail.body);
}
void WriteMail::forward(Email forwMail)
{
int pos=0;
QString fwdBody=tr("======forwarded message from ");
@@ -303,33 +308,40 @@ void WriteMail::forward(Email forwMail)
emailInput->setText(fwdBody);
}
bool WriteMail::getRecipients(bool ccField)
{
QString str, temp;
int pos = 0;
+ if (ccField)
+ {
+ mail.carbonCopies.clear();
+ temp = ccInput->text();
+ }
+ else
+ {
mail.recipients.clear();
-
- ccField ? temp = ccInput->text() : temp=toInput->text() ;
+ temp=toInput->text() ;
+ }
while ( (pos = temp.find(';')) != -1) {
str = temp.left(pos).stripWhiteSpace();
temp = temp.right(temp.length() - (pos + 1));
if ( str.find('@') == -1)
return false;
ccField ? mail.carbonCopies.append(str) : mail.recipients.append(str);
- addressList->addContact(str, "");
+ //addressList->addContact(str, "");
}
temp = temp.stripWhiteSpace();
if ( temp.find('@') == -1)
return false;
ccField ? mail.carbonCopies.append(temp) : mail.recipients.append(temp);
- addressList->addContact(temp, "");
+ //addressList->addContact(temp, "");
return TRUE;
}
void WriteMail::addRecipients()
{
toInput->isVisible() ? addRecipients(false) : addRecipients(true);
}
@@ -378,12 +390,13 @@ void WriteMail::changeRecipients(int selection)
void WriteMail::setRecipient(const QString &recipient)
{
toInput->setText(recipient);
}
void WriteMail::newMail()
{
toInput->clear();
+ ccInput->clear();
subjectInput->clear();
emailInput->clear();
setAddressList(addressList);
}
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index dff1888..2cedc51 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -14,23 +14,25 @@
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include <qapplication.h>
#include <qmessagebox.h>
+#include <qvbox.h>
#include <qfile.h>
#include <qcheckbox.h>
#include <qmenubar.h>
#include <qaction.h>
#include <qwhatsthis.h>
#include <qpe/resource.h>
#include "emailclient.h"
+#include "writemail.h"
QCollection::Item AccountList::newItem(QCollection::Item d)
{
return dupl( (MailAccount *) d);
}
MailAccount* AccountList::dupl(MailAccount *in)
{
@@ -48,30 +50,31 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
receiving = FALSE;
previewingMail = FALSE;
mailIdCount = 1;
accountIdCount = 1;
allAccounts = FALSE;
init();
+
+
connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) );
connect(emailHandler, SIGNAL(smtpError(int)), this,
SLOT(smtpError(int)) );
connect(emailHandler, SIGNAL(popError(int)), this,
SLOT(popError(int)) );
connect(inboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
connect(outboxView, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
connect(inboxView, SIGNAL(pressed(QListViewItem *)), this, SLOT(inboxItemPressed()) );
connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemReleased()) );
-
connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
SLOT(mailArrived(const Email &, bool)) );
connect(emailHandler, SIGNAL(mailTransfered(int)), this,
SLOT(allMailArrived(int)) );
mailconf = new Config("mailit");
//In case Synchronize is not defined in settings.txt
@@ -79,16 +82,21 @@ EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
updateAccounts();
lineShift = "\n";
readMail();
lineShift = "\r\n";
mailboxView->setCurrentTab(0); //ensure that inbox has focus
+
+ /*channel = new QCopChannel( "QPE/Application/mailit", this );
+ connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
+ this, SLOT(receive(const QCString&, const QByteArray&)) );*/
+
}
EmailClient::~EmailClient()
{
//needs to be moved from destructor to closewindow event
saveMail(getPath(FALSE) + "inbox.txt", inboxView);
//does not currently work. Defining outbox in the same
@@ -99,38 +107,17 @@ EmailClient::~EmailClient()
mailconf->write();
delete mailconf;
}
void EmailClient::init()
{
- statusBar = new QStatusBar(this);
- statusBar->setSizeGripEnabled(FALSE);
-
- status1Label = new QLabel( tr("Idle"), statusBar);
- status2Label = new QLabel("", statusBar);
- connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
- status2Label, SLOT(setText(const QString &)) );
- connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
- status2Label, SLOT(setText(const QString &)) );
-
- progressBar = new QProgressBar(statusBar);
-
- connect(emailHandler, SIGNAL(mailboxSize(int)),
- this, SLOT(setTotalSize(int)) );
- connect(emailHandler, SIGNAL(currentMailSize(int)),
- this, SLOT(setMailSize(int)) );
- connect(emailHandler, SIGNAL(downloadedSize(int)),
- this, SLOT(setDownloadedSize(int)) );
-
- statusBar->addWidget(status1Label);
- statusBar->addWidget(progressBar);
- statusBar->addWidget(status2Label);
+ initStatusBar(this);
setToolBarsMovable(FALSE);
bar = new QToolBar(this);
QWhatsThis::add(bar,tr("Main operation toolbar"));
bar->setHorizontalStretchable( TRUE );
mb = new QMenuBar( bar );
@@ -189,40 +176,72 @@ void EmailClient::init()
// grid_2->setMargin( 11 );
inboxView = new QListView( widget, "inboxView" );
inboxView->addColumn( tr( "From" ) );
inboxView->addColumn( tr( "Subject" ) );
inboxView->addColumn( tr( "Date" ) );
inboxView->setMinimumSize( QSize( 0, 0 ) );
inboxView->setAllColumnsShowFocus(TRUE);
- QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n It keeps the fetched mail which can be viewed by double clicking the entry.\n"
- " A blue attachment icon shows whether this mail has attachments."));
+ QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n"
+ "It keeps the fetched mail which can be \n"
+ "viewed by double clicking the entry.\n"
+ "blue attachment icon shows whether this \n"
+ "mailhas attachments.\n"));
grid_2->addWidget( inboxView, 2, 0 );
mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
QWidget* widget_2 = new QWidget( mailboxView, "widget_2" );
grid_3 = new QGridLayout( widget_2 );
// grid_3->setSpacing(6);
// grid_3->setMargin( 11 );
outboxView = new QListView( widget_2, "outboxView" );
outboxView->addColumn( tr( "To" ) );
outboxView->addColumn( tr( "Subject" ) );
outboxView->setAllColumnsShowFocus(TRUE);
- QWhatsThis::add(outboxView,QWidget::tr("This is the oubox view.\n It keeps the queued mails to send which can be reviewed by double clicking the entry."));
+ QWhatsThis::add(outboxView,QWidget::tr("This is the outbox view.\n"
+ "It keeps the queued mails to send which can be \n"
+ "reviewed by double clicking the entry."));
grid_3->addWidget( outboxView, 0, 0 );
mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
setCentralWidget(mailboxView);
}
+void EmailClient::initStatusBar(QWidget* parent)
+{
+ statusBar = new QStatusBar(parent);
+ statusBar->setSizeGripEnabled(FALSE);
+
+ status1Label = new QLabel( tr("Idle"), statusBar);
+ status2Label = new QLabel("", statusBar);
+ connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
+ status2Label, SLOT(setText(const QString &)) );
+ connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
+ status2Label, SLOT(setText(const QString &)) );
+
+ progressBar = new QProgressBar(statusBar);
+
+ connect(emailHandler, SIGNAL(mailboxSize(int)),
+ this, SLOT(setTotalSize(int)) );
+ connect(emailHandler, SIGNAL(currentMailSize(int)),
+ this, SLOT(setMailSize(int)) );
+ connect(emailHandler, SIGNAL(downloadedSize(int)),
+ this, SLOT(setDownloadedSize(int)) );
+
+ statusBar->addWidget(status1Label);
+ statusBar->addWidget(progressBar);
+ statusBar->addWidget(status2Label);
+
+}
+
void EmailClient::compose()
{
emit composeRequested();
}
void EmailClient::cancel()
{
emailHandler->cancel();
@@ -314,26 +333,26 @@ void EmailClient::getNewMail() {
getMailButton->setEnabled(FALSE);
cancelButton->setEnabled(TRUE);
selectAccountMenu->setEnabled(FALSE);
status1Label->setText(currentAccount->accountName + " headers");
progressBar->reset();
//get any previous mails not downloaded and add to queue
- mailDownloadList.clear();
+ /*mailDownloadList.clear();
Email *mailPtr;
item = (EmailListItem *) inboxView->firstChild();
while (item != NULL) {
mailPtr = item->getMail();
if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
}
item = (EmailListItem *) item->nextSibling();
- }
+ }*/
emailHandler->getMailHeaders();
}
void EmailClient::getAllNewMail()
{
allAccounts = TRUE;
@@ -346,23 +365,25 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
Enclosure *ePtr;
Email newMail;
int thisMailId;
emailHandler->parse(mail.rawMail, lineShift, &newMail);
mailconf->setGroup(newMail.id);
if (fromDisk)
{
+
newMail.downloaded = mailconf->readBoolEntry("downloaded");
newMail.size = mailconf->readNumEntry("size");
newMail.serverId = mailconf->readNumEntry("serverid");
newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
}
else
{ //mail arrived from server
+
newMail.serverId = mail.serverId;
newMail.size = mail.size;
newMail.downloaded = mail.downloaded;
newMail.fromAccountId = emailHandler->getAccount()->id;
mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
}
@@ -913,56 +934,99 @@ void EmailClient::inboxItemPressed()
// timerID=startTimer(500);
}
void EmailClient::inboxItemReleased()
{
// killTimer(timerID);
}
-void EmailClient::timerEvent(QTimerEvent *e)
+/*void EmailClient::timerEvent(QTimerEvent *e)
{
/*killTimer(timerID);
QPopupMenu *action = new QPopupMenu(this);
int reply=0;
action->insertItem(tr( "Reply To" ),this,SLOT(reply()));
action->insertItem( tr( "Reply All" ),this,SLOT(replyAll()));
action->insertItem( tr( "Forward" ), this,SLOT(forward()));
action->insertItem( tr( "Remove Mail" ), this,SLOT(remove()));
action->exec(QCursor::pos());
if (action) delete action;
- */
-}
+
+}*/
Email* EmailClient::getCurrentMail()
{
EmailListItem *eli=(EmailListItem* ) (inboxView->selectedItem());
if (eli!=NULL)
return eli->getMail();
else
return NULL;
}
void EmailClient::download(Email* mail)
{
MailAccount* acc=0;
tempMailDownloadList.clear();
tempMailDownloadList.sizeInsert(mail->serverId, mail->size);
- if (accountList.count()>0)
- qDebug("Accounts present");
acc=accountList.at(mail->fromAccountId-1);
if (acc)
{
emailHandler->setAccount(*acc);
emailHandler->getMailByList(&tempMailDownloadList);
}
else
QMessageBox::warning(qApp->activeWindow(),
tr("No account associated"), tr("There is no active account \nassociated to this mail\n it can not be downloaded"), "Abort\n");
}
+
+void EmailClient::receive(const QCString& msg, const QByteArray& data)
+{
+ /*if (msg=="getMail()")
+ {
+ /*QDialog qd(qApp->activeWindow(),"Getting mail",true);
+ QVBoxLayout *vbProg = new QVBoxLayout( &qd );
+
+ initStatusBar(&qd);
+
+ if (statusBar==0)
+ {
+ qDebug("No Bar ...");
+ //statusBar=new ProgressBar(&qd);
+ }
+ statusBar->show();
+ vbProg->addWidget(statusBar);
+ qd.showMaximized();
+ qd.show();
+ emit getAllNewMail();
+ //qd.exec();
+ }
+ else if (msg=="compose()")
+ {
+ QDialog qd(qApp->activeWindow(),"Getting mail",true);
+
+ WriteMail wm(&qd,"write new mail");
+ QVBoxLayout vbProg( &qd );
+
+ wm.showMaximized();
+ vbProg.addWidget(&wm);
+
+ qd.showMaximized();
+
+ emit composeRequested();
+ qd.exec();
+
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }
+
+ else if (msg=="dialog()")
+ {
+ QMessageBox::warning(qApp->activeWindow(),tr("Info"), tr("Info"), "OK\n");
+ }*/
+}
diff --git a/noncore/unsupported/mailit/emailclient.h b/noncore/unsupported/mailit/emailclient.h
index 549683b..994fec5 100644
--- a/noncore/unsupported/mailit/emailclient.h
+++ b/noncore/unsupported/mailit/emailclient.h
@@ -36,16 +36,17 @@
#include <qimage.h>
#include <qpixmap.h>
#include <qstringlist.h>
#include <qprogressbar.h>
#include <qstatusbar.h>
#include <qdir.h>
#include <stdlib.h>
#include <opie/otabwidget.h>
+#include <qpe/qcopenvelope_qws.h>
#include <qtimer.h>
#include "emailhandler.h"
#include "emaillistitem.h"
#include "textparser.h"
#include "editaccount.h"
#include "maillist.h"
#include "addresslist.h"
@@ -65,20 +66,19 @@ private:
class EmailClient : public QMainWindow
{
Q_OBJECT
public:
EmailClient( QWidget* parent, const char* name, WFlags fl = 0 );
~EmailClient();
AddressList* getAdrListRef();
- void download(Email*);
protected:
- void timerEvent(QTimerEvent*);
+ //void timerEvent(QTimerEvent*);
signals:
void composeRequested();
void viewEmail(QListView *, Email *);
void mailUpdated(Email *);
void newCaption(const QString &);
void replyRequested(Email&, bool&);
void forwardRequested(Email&);
@@ -111,23 +111,28 @@ public slots:
void editAccount(int);
void updateAccounts();
void deleteAccount(int);
void deleteMail(EmailListItem *mailItem, bool &inbox);
void setTotalSize(int);
void setMailSize(int);
void setDownloadedSize(int);
void moveMailFront(Email *mailPtr);
+ void download(Email*);
/* void reply();
void replyAll();
void forward();
void remove();*/
+private slots:
+ void receive(const QCString&, const QByteArray&);
+
private:
void init();
+ void initStatusBar(QWidget*);
void readMail();
QString getPath(bool enclosurePath);
void readSettings();
void saveSettings();
Email* getCurrentMail();
int timerID;
Config *mailconf;
int newAccountId, idCount, mailIdCount;
@@ -141,16 +146,18 @@ private:
QList<Email> quedMessages;
MailList mailDownloadList;
MailList tempMailDownloadList;
bool sending, receiving, previewingMail, allAccounts;
QString lineShift;
MailAccount account, *currentAccount;
+ QCopChannel* channel;
+
QToolBar *bar;
QProgressBar *progressBar;
QStatusBar *statusBar;
QLabel *status1Label, *status2Label;
QToolButton *getMailButton;
QAction *sendMailButton;
QAction *composeButton;
QAction *cancelButton;
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index fbbada7..c7b27a0 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -34,16 +34,18 @@ QCollection::Item EnclosureList::newItem(QCollection::Item d)
Enclosure* EnclosureList::dupl(Enclosure *in)
{
ac = new Enclosure(*in);
return ac;
}
EmailHandler::EmailHandler()
{
+ qDebug("EMailHandler::EmailHandler");
+
smtpClient = new SmtpClient();
popClient = new PopClient();
connect(smtpClient, SIGNAL(errorOccurred(int)), this,
SIGNAL(smtpError(int)) );
connect(smtpClient, SIGNAL(mailSent()), this, SIGNAL(mailSent()) );
connect(smtpClient, SIGNAL(updateStatus(const QString &)), this,
SIGNAL(updateSmtpStatus(const QString &)) );
@@ -110,16 +112,17 @@ void EmailHandler::getMail()
void EmailHandler::getMailHeaders()
{
popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd);
mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
headers = TRUE;
popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all
+ qDebug("Initiating connection");
popClient->newConnection(mailAccount.popServer, 110);
}
void EmailHandler::getMailByList(MailList *mailList)
{
if (mailList->count() == 0) { //should not occur though
emit mailTransfered(0);
return;
@@ -621,8 +624,9 @@ void EmailHandler::encode64base(char *src, QString *dest, int len)
}
}
void EmailHandler::cancel()
{
popClient->errorHandling(ErrCancel);
smtpClient->errorHandling(ErrCancel);
}
+
diff --git a/noncore/unsupported/mailit/emailhandler.h b/noncore/unsupported/mailit/emailhandler.h
index b645868..5b59f65 100644
--- a/noncore/unsupported/mailit/emailhandler.h
+++ b/noncore/unsupported/mailit/emailhandler.h
@@ -23,16 +23,17 @@
#include <qobject.h>
#include <qstring.h>
#include <qdatetime.h>
#include <qlist.h>
#include <qstringlist.h>
#include <qfile.h>
#include <qstringlist.h>
#include <qcollection.h>
+#include <qpe/qcopenvelope_qws.h>
#include "smtpclient.h"
#include "popclient.h"
#include "textparser.h"
#include "maillist.h"
struct Enclosure
{
diff --git a/noncore/unsupported/mailit/mailitwindow.cpp b/noncore/unsupported/mailit/mailitwindow.cpp
index ffee67e..a111241 100644
--- a/noncore/unsupported/mailit/mailitwindow.cpp
+++ b/noncore/unsupported/mailit/mailitwindow.cpp
@@ -56,16 +56,19 @@ MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
connect(readMail, SIGNAL(removeItem(EmailListItem *, bool &)), emailClient,
SLOT(deleteMail(EmailListItem *, bool &)) );
connect(readMail, SIGNAL(viewingMail(Email *)), emailClient,
SLOT(moveMailFront(Email *)) );
connect(emailClient, SIGNAL(newCaption(const QString &)),
this, SLOT(updateCaption(const QString &)) );
+
+ connect(readMail, SIGNAL(download(Email *)), emailClient, SLOT(download(Email*)) );
+
viewingMail = FALSE;
}
MailItWindow::~MailItWindow()
{
}
void MailItWindow::closeEvent(QCloseEvent *e)
diff --git a/noncore/unsupported/mailit/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp
index 6105d09..fedc4e2 100644
--- a/noncore/unsupported/mailit/popclient.cpp
+++ b/noncore/unsupported/mailit/popclient.cpp
@@ -24,16 +24,17 @@
extern "C" {
#include "md5.h"
}
#include <qcstring.h>
PopClient::PopClient()
{
+
socket = new QSocket(this, "popClient");
connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int)));
connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished()));
connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData()));
stream = new QTextStream(socket);
receiving = FALSE;
@@ -113,16 +114,17 @@ void PopClient::incomingData()
QString response, temp, temp2, timeStamp;
QString md5Source;
int start, end;
// char *md5Digest;
char md5Digest[16];
// if ( !socket->canReadLine() )
// return;
+
response = socket->readLine();
switch(status) {
//logging in
case Init: {
#ifdef APOP_TEST
start = response.find('<',0);
end = response.find('>', start);
@@ -152,16 +154,17 @@ void PopClient::incomingData()
}
break;
}
case Pass: {
*stream << "PASS " << popPassword << "\r\n";
status = Stat;
+
break;
}
//ask for number of messages
case Stat: {
if (response[0] == '+') {
*stream << "STAT" << "\r\n";
status = Mcnt;
} else errorHandling(ErrLoginFailed);
@@ -268,17 +271,16 @@ void PopClient::incomingData()
response = socket->readLine();
message += response;
}
emit downloadedSize(message.length());
int x = message.find("\r\n.\r\n",-5);
if (x == -1) {
break;
} else { //message reach entire size
-
if ( (selected)||(mailSize <= headerLimit)) //mail size limit is not used if late download is active
{
emit newMessage(message, messageCount-1, mailSize, TRUE);
} else { //incomplete mail downloaded
emit newMessage(message, messageCount-1, mailSize, FALSE);
}
if ((messageCount > newMessages)||(selected)) //last message ?
diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp
index 4eae7f6..1682675 100644
--- a/noncore/unsupported/mailit/readmail.cpp
+++ b/noncore/unsupported/mailit/readmail.cpp
@@ -14,18 +14,20 @@
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#include "readmail.h"
#include <qimage.h>
+#include <qwhatsthis.h>
#include <qmime.h>
#include <qaction.h>
+#include <qpopupmenu.h>
#include <qpe/resource.h>
ReadMail::ReadMail( QWidget* parent, const char* name, WFlags fl )
: QMainWindow(parent, name, fl)
{
plainTxt = FALSE;
init();
@@ -37,39 +39,35 @@ ReadMail::~ReadMail()
delete emailView->mimeSourceFactory();
delete viewAtt;
}
void ReadMail::init()
{
setToolBarsMovable(FALSE);
+ QPopupMenu* mailaction=new QPopupMenu(this);
+
bar = new QToolBar(this);
bar->setHorizontalStretchable( TRUE );
menu = new QMenuBar( bar );
viewMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&View" ), viewMenu);
mailMenu = new QPopupMenu(menu);
menu->insertItem( tr( "&Mail" ), mailMenu);
bar = new QToolBar(this);
- //reply dependant on viewing inbox
- replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
- QString::null, 0, this, 0 );
- connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
- replyButton->setWhatsThis(tr("Click here to reply to the selected mail"));
+ downloadButton = new QAction( tr( "Download" ), Resource::loadPixmap( "mailit/download" ),QString::null, 0, this, 0 );
+ connect(downloadButton, SIGNAL(activated()), this, SLOT(download()) );
+ downloadButton->setWhatsThis(tr("Click here to download the selected mail"));
- forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
- QString::null, 0, this, 0 );
- connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
- forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
previousButton->addTo(bar);
previousButton->addTo(viewMenu);
previousButton->setWhatsThis(tr("Read the previous mail in the list"));
nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
@@ -89,16 +87,33 @@ void ReadMail::init()
connect( plainTextButton, SIGNAL( activated() ), this, SLOT( shiftText() ) );
plainTextButton->addTo(bar);
plainTextButton->addTo(viewMenu);
plainTextButton->setWhatsThis(tr("The mail view has 2 modes:\n"
"<LI><B>RichText</B> shows the mail as HTML with reach features (no standard line breaks)</LI>"
"<LI><B>Plain</B> shows the mail as standard plain text</LI>"
"Click here to switch between those view modes" ));
+ //reply dependant on viewing inbox
+ replyButton = new QToolButton(Resource::loadPixmap("mailit/reply"),tr("reply"),tr("reply to mail"), this,SLOT(reply()),bar);
+ QWhatsThis::add(replyButton,tr("Click here to reply to the selected mail\nPress and hold for more options."));
+ replyButton->setPopup(mailaction);
+
+ replyAllButton = new QAction( tr( "Reply all" ), Resource::loadPixmap( "mailit/reply" ),QString::null, 0, this, 0 );
+ connect(replyAllButton, SIGNAL(activated()), this, SLOT(replyAll()));
+ replyAllButton->setWhatsThis(tr("Click here to reply to the selected mail to CC: addresses also"));
+ replyAllButton->addTo(mailaction);
+
+ forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
+ QString::null, 0, this, 0 );
+ connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()));
+ forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
+ forwardButton->addTo(mailaction);
+
+
deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 );
connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) );
deleteButton->addTo(bar);
deleteButton->addTo(mailMenu);
deleteButton->setWhatsThis(tr("Click here to remove the selected mail"));
viewMenu->insertItem(Resource::loadPixmap("close"), "Close", this, SLOT(close()));
@@ -114,29 +129,36 @@ void ReadMail::updateView()
{
Enclosure *ePtr;
QString mailStringSize;
QString text, temp;
mail->read = TRUE; //mark as read
inbox = mail->received;
- replyButton->removeFrom(mailMenu);
- replyButton->removeFrom(bar);
+ replyButton->setEnabled(false);
+ /*replyButton->removeFrom(bar);
forwardButton->removeFrom(mailMenu);
- forwardButton->removeFrom(bar);
+ forwardButton->removeFrom(bar);*/
+ downloadButton->removeFrom(bar);
+
+ //downloadButton->setEnabled(!mail->downloaded);
+
if (inbox == TRUE) {
- replyButton->addTo(bar);
- replyButton->addTo(mailMenu);
+ replyButton->setEnabled(true);
+ /*replyButton->addTo(mailMenu);
forwardButton->addTo(bar);
- forwardButton->addTo(mailMenu);
+ forwardButton->addTo(mailMenu);*/
if (!mail->downloaded) {
+
+ downloadButton->addTo(bar);
+
//report currently viewed mail so that it will be
//placed first in the queue of new mails to download
emit viewingMail(mail);
double mailSize = (double) mail->size;
if (mailSize < 1024) {
mailStringSize.setNum(mailSize);
mailStringSize += " Bytes";
@@ -352,16 +374,26 @@ void ReadMail::shiftText()
void ReadMail::viewAttachments()
{
viewAtt->update(mail, inbox);
viewAtt->showMaximized();
}
void ReadMail::reply()
{
+ emit replyRequested(*mail, (bool&)FALSE);
+}
+
+void ReadMail::replyAll()
+{
emit replyRequested(*mail, (bool&)TRUE);
}
void ReadMail::forward()
{
emit forwardRequested(*mail);
}
+void ReadMail::download()
+{
+ emit download(mail);
+}
+
diff --git a/noncore/unsupported/mailit/readmail.h b/noncore/unsupported/mailit/readmail.h
index df32c34..6700595 100644
--- a/noncore/unsupported/mailit/readmail.h
+++ b/noncore/unsupported/mailit/readmail.h
@@ -23,16 +23,17 @@
#include <qaction.h>
#include <qmainwindow.h>
#include <qmenubar.h>
#include <qpopupmenu.h>
#include <qlabel.h>
#include <qlistview.h>
#include <qlayout.h>
#include <qtextview.h>
+#include <qtoolbutton.h>
#include "emailhandler.h"
#include "emaillistitem.h"
#include "viewatt.h"
class ReadMail : public QMainWindow
{
Q_OBJECT
@@ -45,26 +46,29 @@ public:
void mailUpdated(Email *mailIn);
signals:
void cancelView();
void replyRequested(Email &, bool &);
void forwardRequested(Email&);
void removeItem(EmailListItem *, bool &);
void viewingMail(Email *);
+ void download (Email*);
public slots:
void close();
void next();
void previous();
void deleteItem();
void shiftText();
void viewAttachments();
void reply();
+ void replyAll();
void forward();
+ void download();
private:
void init();
void updateButtons();
private:
QListView *view;
EmailListItem *item;
@@ -77,13 +81,15 @@ private:
QPopupMenu *viewMenu, *mailMenu;
QAction *deleteButton;
QMimeSourceFactory *mime;
QAction *plainTextButton;
QAction *nextButton;
QTextView *emailView;
QAction *attachmentButton;
QAction *previousButton;
- QAction *replyButton;
+ QToolButton *replyButton;
QAction *forwardButton;
+ QAction *replyAllButton;
+ QAction *downloadButton;
};
#endif // READMAIL_H
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index dcf0c6e..c75494e 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -17,18 +17,17 @@
** not clear to you.
**
**********************************************************************/
#include <qmessagebox.h>
#include <qwhatsthis.h>
#include "writemail.h"
#include <qpe/resource.h>
-WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl )
- : QMainWindow( parent, name, fl )
+WriteMail::WriteMail( QWidget* parent, const char* name, WFlags fl ):QMainWindow( parent, name, fl )
{
showingAddressList = FALSE;
init();
addAtt = new AddAtt(0, "Add Attachments");
}
WriteMail::~WriteMail()
@@ -263,29 +262,35 @@ void WriteMail::reply(Email replyMail, bool replyAll)
for (QStringList::Iterator it = mail.carbonCopies.begin();it != mail.carbonCopies.end(); ++it)
{
ccRecipients.append(*it);
ccRecipients.append(";");
}
ccRecipients.truncate(ccRecipients.length()-1); //no ; at the end
ccInput->setText(ccRecipients);
}
-
- addRecipients(replyAll);
+ else ccInput->clear();
subjectInput->setText(tr("Re: ") + mail.subject);
+ QString citation=mail.fromMail;
+ citation.append(tr(" wrote on "));
+ citation.append(mail.date);
+ citation.append(":\n");
+
+
+ //mail.body.insert(0,tr("On"));
pos = 0;
mail.body.insert(pos, ">");
while (pos != -1) {
pos = mail.body.find('\n', pos);
if (pos != -1)
mail.body.insert(++pos, ">>");
}
-
+ mail.body.insert(0,citation);
emailInput->setText(mail.body);
}
void WriteMail::forward(Email forwMail)
{
int pos=0;
QString fwdBody=tr("======forwarded message from ");
@@ -303,33 +308,40 @@ void WriteMail::forward(Email forwMail)
emailInput->setText(fwdBody);
}
bool WriteMail::getRecipients(bool ccField)
{
QString str, temp;
int pos = 0;
+ if (ccField)
+ {
+ mail.carbonCopies.clear();
+ temp = ccInput->text();
+ }
+ else
+ {
mail.recipients.clear();
-
- ccField ? temp = ccInput->text() : temp=toInput->text() ;
+ temp=toInput->text() ;
+ }
while ( (pos = temp.find(';')) != -1) {
str = temp.left(pos).stripWhiteSpace();
temp = temp.right(temp.length() - (pos + 1));
if ( str.find('@') == -1)
return false;
ccField ? mail.carbonCopies.append(str) : mail.recipients.append(str);
- addressList->addContact(str, "");
+ //addressList->addContact(str, "");
}
temp = temp.stripWhiteSpace();
if ( temp.find('@') == -1)
return false;
ccField ? mail.carbonCopies.append(temp) : mail.recipients.append(temp);
- addressList->addContact(temp, "");
+ //addressList->addContact(temp, "");
return TRUE;
}
void WriteMail::addRecipients()
{
toInput->isVisible() ? addRecipients(false) : addRecipients(true);
}
@@ -378,12 +390,13 @@ void WriteMail::changeRecipients(int selection)
void WriteMail::setRecipient(const QString &recipient)
{
toInput->setText(recipient);
}
void WriteMail::newMail()
{
toInput->clear();
+ ccInput->clear();
subjectInput->clear();
emailInput->clear();
setAddressList(addressList);
}