author | alwin <alwin> | 2004-02-22 23:56:05 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-02-22 23:56:05 (UTC) |
commit | eba25a5ebeca30b7124e7fae80685dbd1c9a985d (patch) (side-by-side diff) | |
tree | d62dd266e9b57f3eae34612f5d0fc4cf0b625c20 | |
parent | 666a49773d06ac94c19996d763854725c2f7a578 (diff) | |
download | opie-eba25a5ebeca30b7124e7fae80685dbd1c9a985d.zip opie-eba25a5ebeca30b7124e7fae80685dbd1c9a985d.tar.gz opie-eba25a5ebeca30b7124e7fae80685dbd1c9a985d.tar.bz2 |
moved mailit into unsupported area 'cause replaced by opiemail3
37 files changed, 1 insertions, 6014 deletions
diff --git a/noncore/net/mailit/.cvsignore b/noncore/net/mailit/.cvsignore deleted file mode 100644 index 6fc3d98..0000000 --- a/noncore/net/mailit/.cvsignore +++ b/dev/null @@ -1,2 +0,0 @@ -Makefile -qpeobj diff --git a/noncore/net/mailit/README b/noncore/net/mailit/README deleted file mode 100644 index 01781b4..0000000 --- a/noncore/net/mailit/README +++ b/dev/null @@ -1,83 +0,0 @@ -Issues regarding Mailit ------------------------ - -Mailit is still in development and is lacking some -features to make it completely usable. Listed below are the -most important issues. - -Due to the development status, numerous messages are passed too -the console during usage of the program. -No messages are deleted from the POP server after retrival. - -Synchronization: ---------------------- -Works by comparing the last known size of the mailbox on the server -to the current size. -Possible problem: If a popserver shuffles the order of the mails -when it receives a new mail, mailit won't know since it only uses -the messagecount as a reference. If this occurs, turn sync off in -the account settings. -Haven't encountered this problem on the currently tested servers, -but if it turns out that several servers do this, it will be resolved. - -Mail parsing ------------- -Parsing of MIME-encoded email works for all currently tested cases. -BASE64 decoding works. -Attatchments are saved in the enclosure subdirectory of qtmail -(in the Documents directory). You can install the files to the documents -folder (creates a doclnk) -Adding enclosures is limited to the preselected directories, and they -are not really correct at the moment (trivial issue awaiting decision -of fileplacements in QPE) -attatched pictures will be displayed (jpg dependant on qte compilation) - - -SMTP ----- -The SMTP-client now supports attatchments, but it's not completly done. -Encoding works, but it doesn't examine the file to check what type of -file you are attatching. In other words, if it doesn't know that you -are attatching a picture, the mime setting for content type could be -wrong. Mail clients with inline viewing of pictures (like hotmail) could -have a problem with displaying the mail correctly. -(Should be fixed soon) - -You can now have multiple recipients. - - -POP ---- -The popclient connects to the all accounts in turn, downloads all headers -and emails smaller than 2000 bytes. After its done, it reconnects -and downloads the mails that were too big (> 2000) -The to-be-downloaded mails are sorted according to size. If you view -a mail, it is shifted to the front of the queue. Deleting a mail(header) -while the download is in progress will remove it from the queue of -mails to download (except if the mail is currently in transfer) -You may exit mailit during a transfer of mails/headers. Next time -you reconnect to the same server it will continue downloading from -where it left off. - -You can now choose between getting mail from only one account or all. -The get all option is just added and not fully testet yet. Get from -a single account should work fine. The current way of downloading -does not work well without sync turned on if you keep old mails in -the inbox. - -Experienced some problems with servers reporting mail size less and -bigger than actual size. Don't know whats causing this yet, but I -have added a workaround. It now scans the mail for endofmail -definition ("\r\n.\r\n"), disregarding size. - - -Saving/Retrieving mail ----------------------- -The inbox is saved and retrieved. Any mail not sent from the outbox -is not saved (will of course be added) - -Miscelaneous issues -------------------- -Numerous cosmetic changes, including icons (which are temporary) - -Very little error checking is done on usertyped variables. diff --git a/noncore/net/mailit/addatt.cpp b/noncore/net/mailit/addatt.cpp deleted file mode 100644 index 19ac58f..0000000 --- a/noncore/net/mailit/addatt.cpp +++ b/dev/null @@ -1,224 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qlayout.h> -#include <qhbox.h> -#include <qdir.h> -#include <qstringlist.h> -#include <qpe/resource.h> -#include "addatt.h" - -FileItem::FileItem(QListView *parent, DocLnk* dl) - : QListViewItem(parent) -{ - /*file = fileInfo; - type = fileType;*/ - - doclnk=dl; - - setText(0, doclnk->name()); - -/* if (fileType == "Picture") { - setPixmap(0, Resource::loadPixmap("pixmap")); - } else if (fileType == "Document") { - setPixmap(0, Resource::loadPixmap("txt")); - } else if (fileType == "Sound") { - setPixmap(0, Resource::loadPixmap("play")); - } else if (fileType == "Movie") { - setPixmap(0, Resource::loadPixmap("MPEGPlayer")); - } else if (fileType == "File") { - setPixmap(0, Resource::loadPixmap("exec")); - }*/ -} - -FileItem::~FileItem() -{ - if (doclnk!=NULL) delete doclnk; - doclnk=NULL; -} - -AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f) - : QDialog(parent, name, f) -{ - setCaption(tr("Adding attachments") ); - - QGridLayout *top = new QGridLayout(this, 1,1 ); - - QHBox *buttons=new QHBox(this); - /*fileCategoryButton = new QPushButton(this);*/ - attachButton = new QPushButton(tr("attach..."), buttons); - removeButton = new QPushButton(tr("Remove"), buttons); - - /*fileCategories = new QPopupMenu(fileCategoryButton); - fileCategoryButton->setPopup(fileCategories); - fileCategories->insertItem("Document"); - fileCategories->insertItem("Picture"); - fileCategories->insertItem("Sound"); - fileCategories->insertItem("Movie"); - fileCategories->insertItem("File"); - - fileCategoryButton->setText("Document"); - top->addWidget(fileCategoryButton, 0, 0);*/ - - - top->addWidget(buttons,1,0); - //buttons->addWidget(attachButton,0,0); - //buttons->addWidget(removeButton,0,1); - - //connect(fileCategories, SIGNAL(activated(int)), this, - // SLOT(fileCategorySelected(int)) );*/ - connect(attachButton, SIGNAL(clicked()), this, - SLOT(addattachment()) ); - connect(removeButton, SIGNAL(clicked()), this, - SLOT(removeattachment()) ); - - /*listView = new QListView(this, "AttView"); - listView->addColumn("Documents");* - connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this, - SLOT(addattachment()) );*/ - - - attView = new QListView(this, "Selected"); - attView->addColumn(tr("Attached")); - attView->addColumn(tr("File type")); - connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this, - SLOT(removeattachment()) ); - - //top->addWidget(ofs, 0,0); - top->addWidget(attView, 0,0); - - clear(); - - -} - -void AddAtt::clear() -{ - attView->clear(); - //getFiles(); - modified = FALSE; -} - -/*void AddAtt::fileCategorySelected(int id) -{ - fileCategoryButton->setText(fileCategories->text(id)); - getFiles(); -}*/ - -void AddAtt::addattachment() -{ // ### FIXME wrong use -zecke - OFileDialog ofs("Attachments",this,0,0,"/root/Documents"); - - ofs.showMaximized(); - - if (ofs.exec()==QDialog::Accepted) - { - DocLnk* dl=new DocLnk(ofs.selectedDocument()); - FileItem* fi=new FileItem(attView,dl); - fi->setPixmap(0,dl->pixmap()); - fi->setText(1,dl->type()); - attView->insertItem(fi); - modified = TRUE; - } -} - -void AddAtt::removeattachment() -{ - if (attView->selectedItem() != NULL) - { - attView->takeItem(attView->selectedItem()); - } - modified = TRUE; -} - -void AddAtt::reject() -{ - if (modified) { - attView->clear(); - modified = FALSE; - } -} - -void AddAtt::accept() -{ - modified = FALSE; - hide(); -} - -void AddAtt::getFiles() -{ - QString path, selected; - - /*listView->clear(); - - selected = fileCategoryButton->text(); - if (selected == "Picture") { - path = "../pics/"; - } else if (selected == "Document") { - path = "" ; //sub-dirs not decided - } else if (selected == "Sound") { - path = "../sounds/"; //sub-dirs not decided - } else if (selected == "Movie") { - path = ""; //sub-dirs not decided - } else if (selected == "File") { - path = ""; //sub-dirs not decided - } - - dir = new QDir(path); - dir->setFilter(QDir::Files); - const QFileInfoList *dirInfoList = dir->entryInfoList(); - - QFileInfoListIterator it(*dirInfoList); // create list iterator - - while ( (fi=it.current()) ) { // for each file... - item = new FileItem(lis+ütView, *fi, selected); - ++it; // goto next list element - }*/ -} - -QStringList AddAtt::returnattachedFiles() -{ - QFileInfo info; - QStringList list; - - item = (FileItem *) attView->firstChild(); - - - while (item != NULL) { - DocLnk* dl=item->getDocLnk(); - list+=dl->file(); - /*info = item->getFileInfo(); - list += info.filePath();*/ - item = (FileItem *) item->nextSibling(); - } - return list; -} - -QStringList AddAtt::returnFileTypes() -{ - QStringList list; - - item = (FileItem *) attView->firstChild(); - - while (item != NULL) { - list += item->getDocLnk()->type(); - item = (FileItem *) item->nextSibling(); - } - return list; -} diff --git a/noncore/net/mailit/addatt.h b/noncore/net/mailit/addatt.h deleted file mode 100644 index a365947..0000000 --- a/noncore/net/mailit/addatt.h +++ b/dev/null @@ -1,76 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef ADDATT_H -#define ADDATT_H - -#include <qdialog.h> -#include <qlistview.h> -#include <qpushbutton.h> -#include <qpopupmenu.h> -#include <qstring.h> -#include <qfileinfo.h> -#include <qstringlist.h> -#include <opie/ofiledialog.h> -#include <qpe/applnk.h> - -class FileItem : public QListViewItem -{ -public: - //FileItem(QListView *parent, QFileInfo fileInfo, QString fileType); - FileItem(QListView*, DocLnk*); - ~FileItem(); - DocLnk* getDocLnk() {return doclnk;} - - -private: - DocLnk* doclnk; -}; - -class AddAtt : public QDialog -{ - Q_OBJECT - -public: - AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); - QStringList returnattachedFiles(); - QStringList returnFileTypes(); - void getFiles(); - void clear(); - - -public slots: - //void fileCategorySelected(int); - void addattachment(); - void removeattachment(); - void reject(); - void accept(); - -private: - FileItem* item; - QListView *attView; - QPushButton *attachButton, *removeButton; - QPopupMenu *fileCategories; - bool modified; - //QFileInfo *fi; - - OFileDialog* ofs; -}; - -#endif diff --git a/noncore/net/mailit/addresslist.cpp b/noncore/net/mailit/addresslist.cpp deleted file mode 100644 index f2b027c..0000000 --- a/noncore/net/mailit/addresslist.cpp +++ b/dev/null @@ -1,161 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qfile.h> -#include <qtextstream.h> -#include <opie/ocontactaccess.h> -#include <opie/ocontact.h> - -#include "addresslist.h" - -AddressList::AddressList() -{ - addresses.setAutoDelete(TRUE); - read(); - dirty = FALSE; -} - -AddressList::~AddressList() -{ - addresses.clear(); -} - -void AddressList::addContact(const QString &email, const QString &name) -{ - //skip if not a valid email address, - if (email.find( '@') == -1) - return; - - if ( ! containsEmail(email) ) { - AContact *in = new AContact; - in->email = email; - in->name = name; - addresses.append(in); - dirty = TRUE; - } -} - -bool AddressList::containsEmail(const QString &email) -{ - return ( getEmailRef(email) != -1 ); -} - -bool AddressList::containsName(const QString &name) -{ - return ( getNameRef(name) != -1 ); -} - -QString AddressList::getNameByEmail(const QString &email) -{ - int pos = getEmailRef(email); - if (pos != -1) { - AContact *ptr = addresses.at(pos); - return ptr->name; - } - - return QString::null; -} - -QString AddressList::getEmailByName(const QString &name) -{ - int pos = getNameRef(name); - if (pos != -1) { - AContact *ptr = addresses.at(pos); - return ptr->email; - } - - return QString::null; -} - -int AddressList::getEmailRef(const QString &email) -{ - int pos = 0; - AContact *ptr; - - for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { - if (ptr->email == email) - return pos; - pos++; - } - return -1; -} - -int AddressList::getNameRef(const QString &name) -{ - int pos = 0; - AContact *ptr; - - for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { - if (ptr->name == name) - return pos; - pos++; - } - return -1; -} - -QList<AContact>* AddressList::getContactList() -{ - return &addresses; -} - -void AddressList::read() -{ - OContactAccess::List::Iterator it; - - QString lineEmail, lineName, email, name; - OContactAccess m_contactdb("mailit"); - OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); - //OContact* oc;(*it).defaultEmail() - - for ( it = m_list.begin(); it != m_list.end(); ++it ) - { - //oc=(OContact*) it; - if ((*it).defaultEmail().length()!=0) - addContact((*it).defaultEmail(),(*it).fileAs()); - } - - /*if (! f.open(IO_ReadOnly) ) - return; - - QTextStream stream(&f); - - while (! stream.atEnd() ) { - lineEmail = stream.readLine(); - if (! stream.atEnd() ) - lineName = stream.readLine(); - else return; - - email = getRightString(lineEmail); - name = getRightString(lineName); - addContact(email, name); - } - f.close();*/ -} - -QString AddressList::getRightString(const QString &in) -{ - QString out = ""; - - int pos = in.find('='); - if (pos != -1) { - out = in.mid(pos+1).stripWhiteSpace(); - } - return out; -} - diff --git a/noncore/net/mailit/addresslist.h b/noncore/net/mailit/addresslist.h deleted file mode 100644 index 763b6d4..0000000 --- a/noncore/net/mailit/addresslist.h +++ b/dev/null @@ -1,58 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef ADDRESSLIST_H -#define ADDRESSLIST_H - -#include <qobject.h> -#include <qlist.h> - -struct AContact -{ - QString email; - QString name; -}; - -class AddressList : public QObject -{ - Q_OBJECT - -public: - AddressList(); - ~AddressList(); - void addContact(const QString &email, const QString &name); - bool containsEmail(const QString &email); - bool containsName(const QString &name); - QString getNameByEmail(const QString &email); - QString getEmailByName(const QString &name); - QList<AContact>* getContactList(); - -private: - int getEmailRef(const QString &email); - int getNameRef(const QString &name); - QString getRightString(const QString &in); - void read(); - -private: - QList<AContact> addresses; - QString filename; - bool dirty; -}; - -#endif diff --git a/noncore/net/mailit/config.in b/noncore/net/mailit/config.in deleted file mode 100644 index 142b840..0000000 --- a/noncore/net/mailit/config.in +++ b/dev/null @@ -1,4 +0,0 @@ - config MAILIT - boolean "opie-mailit (a simple POP3 email client)" - default "n" - depends ( LIBQPE || LIBQPE-X11 ) diff --git a/noncore/net/mailit/editaccount.cpp b/noncore/net/mailit/editaccount.cpp deleted file mode 100644 index c0afbb2..0000000 --- a/noncore/net/mailit/editaccount.cpp +++ b/dev/null @@ -1,133 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qhbox.h> -#include "editaccount.h" - -EditAccount::EditAccount( QWidget* parent, const char* name, WFlags fl ) - : QDialog(parent, name, fl) -{ - setCaption( tr("Edit Account") ); - init(); - popPasswInput->setEchoMode(QLineEdit::Password); -} - -void EditAccount::setAccount(MailAccount *in, bool newOne) -{ - account = in; - if (newOne) { - accountNameInput->setText(""); - nameInput->setText(""); - emailInput->setText(""); - popUserInput->setText(""); - popPasswInput->setText(""); - popServerInput->setText(""); - smtpServerInput->setText(""); - syncCheckBox->setChecked(TRUE); - syncLimitInput->setValue(2); - - setCaption( tr("Create new Account") ); - } else { - accountNameInput->setText(account->accountName); - nameInput->setText(account->name); - emailInput->setText(account->emailAddress); - popUserInput->setText(account->popUserName); - popPasswInput->setText(account->popPasswd); - popServerInput->setText(account->popServer); - smtpServerInput->setText(account->smtpServer); - syncCheckBox->setChecked(account->synchronize); - syncLimitInput->setValue(account->syncLimit/1000); - } -} - -void EditAccount::init() -{ - grid = new QGridLayout(this); - grid->setSpacing( 6 ); - grid->setMargin( 11 ); - - accountNameInputLabel = new QLabel(tr("Account name"), this); - grid->addWidget( accountNameInputLabel, 0, 0 ); - accountNameInput = new QLineEdit( this, "account nameInput" ); - grid->addWidget( accountNameInput, 0, 1 ); - - nameInputLabel = new QLabel(tr("Your name"), this); - grid->addWidget( nameInputLabel, 1, 0 ); - nameInput = new QLineEdit( this, "nameInput" ); - grid->addWidget( nameInput, 1, 1 ); - - emailInputLabel = new QLabel(tr("Email"), this); - grid->addWidget(emailInputLabel, 2, 0 ); - emailInput = new QLineEdit( this, "emailInput" ); - grid->addWidget( emailInput, 2, 1 ); - - popUserInputLabel = new QLabel(tr("POP username"), this); - grid->addWidget( popUserInputLabel, 3, 0 ); - popUserInput = new QLineEdit( this, "popUserInput" ); - grid->addWidget( popUserInput, 3, 1 ); - - popPasswInputLabel = new QLabel( tr("POP password"), this); - grid->addWidget( popPasswInputLabel, 4, 0 ); - popPasswInput = new QLineEdit( this, "popPasswInput" ); - grid->addWidget( popPasswInput, 4, 1 ); - - popServerInputLabel = new QLabel(tr("POP server"), this); - grid->addWidget( popServerInputLabel, 5, 0 ); - popServerInput = new QLineEdit( this, "popServerInput" ); - grid->addWidget( popServerInput, 5, 1 ); - - smtpServerInputLabel = new QLabel(tr("SMTP server"), this ); - grid->addWidget( smtpServerInputLabel, 6, 0 ); - smtpServerInput = new QLineEdit( this, "smtpServerInput" ); - grid->addWidget( smtpServerInput, 6, 1 ); - - QHBox* syncBox=new QHBox(this); - grid->addWidget( syncBox, 7, 1 ); - - syncCheckBox = new QCheckBox( tr( "Synchronize" ), this); - syncCheckBox->setChecked( TRUE ); - grid->addWidget( syncCheckBox,7,0); - - syncLimitInputLabel = new QLabel(tr("Mail Size (k)"), syncBox); - //syncBox->addWidget( syncLimitInputLabel); - syncLimitInput = new QSpinBox( syncBox, "syncSize" ); - //syncBox->addWidget(syncLimitInput); - -} - - -void EditAccount::accept() -{ - account->accountName = accountNameInput->text(); - account->name = nameInput->text(); - account->emailAddress = emailInput->text(); - account->popUserName = popUserInput->text(); - account->popPasswd = popPasswInput->text(); - account->popServer = popServerInput->text(); - account->smtpServer = smtpServerInput->text(); - account->synchronize = syncCheckBox->isChecked(); - account->syncLimit = syncLimitInput->value()*1000; //Display in kB - - QDialog::accept(); -} - -void EditAccount::reject() -{ -} diff --git a/noncore/net/mailit/editaccount.h b/noncore/net/mailit/editaccount.h deleted file mode 100644 index 1e15047..0000000 --- a/noncore/net/mailit/editaccount.h +++ b/dev/null @@ -1,69 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef EDITACCOUNT_H -#define EDITACCOUNT_H - -#include <qdialog.h> -#include <qlabel.h> -#include <qlineedit.h> -#include <qcheckbox.h> -#include <qlayout.h> -#include <qspinbox.h> -#include "emailhandler.h" - -class EditAccount : public QDialog -{ - Q_OBJECT - -public: - EditAccount( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - void setAccount(MailAccount *in, bool newOne = TRUE); - void init(); - -public slots: - void accept(); - void reject(); - -private: - MailAccount thisAccount, *account; - - QLabel *accountNameInputLabel; - QLabel *nameInputLabel; - QLabel *emailInputLabel; - QLabel *popUserInputLabel; - QLabel *popPasswInputLabel; - QLabel *popServerInputLabel; - QLabel *smtpServerInputLabel; - QLabel *syncLimitInputLabel; - - QLineEdit *accountNameInput; - QLineEdit *nameInput; - QLineEdit *emailInput; - QLineEdit *popUserInput; - QLineEdit *popPasswInput; - QLineEdit *popServerInput; - QLineEdit *smtpServerInput; - QSpinBox *syncLimitInput; - QCheckBox *syncCheckBox; - - QGridLayout *grid; -}; - -#endif diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp deleted file mode 100644 index 8359acf..0000000 --- a/noncore/net/mailit/emailclient.cpp +++ b/dev/null @@ -1,1042 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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) -{ - ac = new MailAccount(*in); - return ac; -} - -EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) - : QMainWindow( parent, name, fl ) -{ - emailHandler = new EmailHandler(); - addressList = new AddressList(); - - sending = FALSE; - receiving = FALSE; - previewingMail = FALSE; - mailIdCount = 1; - accountIdCount = 1; - allAccounts = FALSE; - - init(); - - - - connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) ); - - connect(emailHandler, SIGNAL(smtpError(int,const QString &)), this, - SLOT(smtpError(int,const QString &)) ); - connect(emailHandler, SIGNAL(popError(int,const QString &)), this, - SLOT(popError(int,const QString &)) ); - - 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 - - readSettings(); - - 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 - //format as inbox is not a good solution as they have - //different properties - saveMail(getPath(FALSE) + "outbox.txt", outboxView); - saveSettings(); - - mailconf->write(); - delete mailconf; - -} - -void EmailClient::init() -{ - initStatusBar(this); - - setToolBarsMovable(FALSE); - - bar = new QToolBar(this); - QWhatsThis::add(bar,tr("Main operation toolbar")); - bar->setHorizontalStretchable( TRUE ); - - mb = new QMenuBar( bar ); - - QPopupMenu *mail = new QPopupMenu(mb); - mb->insertItem( tr( "&Mail" ), mail); - - QPopupMenu *configure = new QPopupMenu(mb); - mb->insertItem( tr( "Accounts" ), configure); - - selectAccountMenu = new QPopupMenu(mb); - editAccountMenu = new QPopupMenu(mb); - deleteAccountMenu = new QPopupMenu(mb); - - mail->insertItem(tr("Get Mail in"), selectAccountMenu); - configure->insertItem(tr("Edit account"), editAccountMenu); - configure->insertItem(tr("Delete account"), deleteAccountMenu); - - bar = new QToolBar(this); - - getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar); - QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account.")); - - getMailButton->setPopup(selectAccountMenu); - - sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendqueue"), QString::null, 0, this, 0); - connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); - sendMailButton->addTo(bar); - sendMailButton->addTo(mail); - sendMailButton->setWhatsThis("Send mail queued in the outbox"); - - composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); - connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); - composeButton->addTo(bar); - composeButton->addTo(mail); - composeButton->setWhatsThis("Compose a new mail"); - - cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("close"), QString::null, 0, this, 0); - connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); - cancelButton->addTo(mail); - cancelButton->addTo(bar); - cancelButton->setEnabled(FALSE); - cancelButton->setWhatsThis("Stop the currently active mail transfer"); - - - deleteButton = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, 0, this, 0 ); - connect( deleteButton, SIGNAL( activated() ), this, SLOT( deleteItem() ) ); - deleteButton->addTo(bar); - deleteButton->setWhatsThis("Remove the currently selected eMail(s)"); - - mailboxView = new OTabWidget( this, "mailboxView" ); - - QWidget* widget = new QWidget( mailboxView, "widget" ); - grid_2 = new QGridLayout( widget ); -// grid_2->setSpacing(6); -// 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 \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 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(); -} - -AddressList* EmailClient::getAdrListRef() -{ - return addressList; -} - -//this needs to be rewritten to syncronize with outboxView -void EmailClient::enqueMail(const Email &mail) -{ - if (accountList.count() == 0) { - QMessageBox::warning(qApp->activeWindow(), - tr("No account selected"), tr("You must create an account"), "OK\n"); - return; - } - - if (accountList.count() > 0) { - currentAccount = accountList.first(); - qWarning("using account " + currentAccount->name); - } - - Email addMail = mail; - addMail.from = currentAccount->name; - addMail.fromMail = currentAccount->emailAddress; - addMail.rawMail.prepend("From: \"" + addMail.from + "\" <" + addMail.fromMail + ">\n"); - item = new EmailListItem(outboxView, addMail, false); - - mailboxView->setCurrentTab(1); - -} - -void EmailClient::sendQuedMail() -{ - int count = 0; - - if (accountList.count() == 0) { - QMessageBox::warning(qApp->activeWindow(), tr("No account selected"), tr("You must create an account"), "OK\n"); - return; - } - //traverse listview, find messages to send - if (! sending) { - item = (EmailListItem *) outboxView->firstChild(); - if (item != NULL) { - while (item != NULL) { - quedMessages.append(item->getMail()); - item = (EmailListItem *) item->nextSibling(); - count++; - } - setMailAccount(); - emailHandler->sendMail(&quedMessages); - sending = TRUE; - sendMailButton->setEnabled(FALSE); - cancelButton->setEnabled(TRUE); - } else { - qWarning("sendQuedMail(): no messages to send"); - } - } -} - -void EmailClient::setMailAccount() -{ - emailHandler->setAccount(*currentAccount); -} - -void EmailClient::mailSent() -{ - sending = FALSE; - sendMailButton->setEnabled(TRUE); - - quedMessages.clear(); - outboxView->clear(); //should be moved to an sentBox -} - -void EmailClient::getNewMail() { - - if (accountList.count() == 0) { - QMessageBox::warning(qApp->activeWindow(),tr("No account selected"), - tr("You must create an account"), "OK\n"); - return; - } - - setMailAccount(); - - receiving = TRUE; - previewingMail = TRUE; - 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(); - 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; - currentAccount = accountList.first(); - getNewMail(); -} - -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); - } - - //add if read or not - newMail.read = mailconf->readBoolEntry("mailread"); - - //check if new mail - if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) { - thisMailId = mailIdCount; - mailIdCount++; - - //set server count, so that if the user aborts, the new - //header is not reloaded - if ((currentAccount)&&(currentAccount->synchronize)) - currentAccount->lastServerMailCount++; - - mailconf->writeEntry("internalmailid", thisMailId); - mailconf->writeEntry("downloaded", newMail.downloaded); - mailconf->writeEntry("size", (int) newMail.size); - mailconf->writeEntry("serverid", newMail.serverId); - - //addressList->addContact(newMail.fromMail, newMail.from); - } - - mailconf->writeEntry("downloaded", newMail.downloaded); - - QString stringMailId; - stringMailId.setNum(thisMailId); - //see if any attatchments needs to be stored - - for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { - QString stringId; - stringId.setNum(ePtr->id); - - int id = mailconf->readNumEntry("enclosureid_" + stringId); - if (id != ePtr->id) { //new entry - mailconf->writeEntry("enclosureid_" + stringId, ePtr->id); - mailconf->writeEntry("name_" + stringId, ePtr->originalName); - mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType); - mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute); - mailconf->writeEntry("saved_" + stringId, ePtr->saved); - mailconf->writeEntry("installed_" + stringId, FALSE); - - ePtr->name = stringMailId + "_" + stringId; - ePtr->path = getPath(TRUE); - if (emailHandler->getEnclosure(ePtr)) { //file saved - ePtr->saved = TRUE; - mailconf->writeEntry("saved_" + stringId, ePtr->saved); - mailconf->writeEntry("filename_" + stringId, ePtr->name); - mailconf->writeEntry("path_" + stringId, ePtr->path); - } else { - ePtr->saved = FALSE; - mailconf->writeEntry("saved_" + stringId, ePtr->saved); - } - } else { - ePtr->saved = mailconf->readBoolEntry("saved_" + stringId); - ePtr->installed = mailconf->readBoolEntry("installed_" + stringId); - if (ePtr->saved) { - ePtr->name = mailconf->readEntry("filename_" + stringId); - ePtr->path = mailconf->readEntry("path_" + stringId); - } - } - } - - bool found=false; - - if (!fromDisk) - { - - Email *mailPtr; - item = (EmailListItem *) inboxView->firstChild(); - while ((item != NULL)&&(!found)) - { - mailPtr = item->getMail(); - if (mailPtr->id == newMail.id) { - item->setMail(newMail); - emit mailUpdated(item->getMail()); - found = true; - } - item = (EmailListItem *) item->nextSibling(); - } - } - if ((!found)||(fromDisk)) { - item = new EmailListItem(inboxView, newMail, TRUE); - } -// if (item->getMail()->files.count()>0) -// { -// item->setPixmap(0, Resource::loadPixmap("mailit/attach")); -// } - /*if (!newMail.downloaded) - mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/ - - mailboxView->setCurrentTab(0); - -} - -void EmailClient::allMailArrived(int /*count*/) -{ - // not previewing means all mailtransfer has been done - /*if (!previewingMail) {*/ - if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { - emit newCaption("Mailit - " + currentAccount->accountName); - getNewMail(); - return; - } else { - allAccounts = FALSE; - receiving = FALSE; - getMailButton->setEnabled(TRUE); - cancelButton->setEnabled(FALSE); - selectAccountMenu->setEnabled(TRUE); - status1Label->setText("Idle"); - - progressBar->reset(); - return; - } - //} - - // all headers downloaded from server, start downloading remaining mails - previewingMail = FALSE; - status1Label->setText(currentAccount->accountName); - progressBar->reset(); - - - mailboxView->setCurrentTab(0); -} - - -void EmailClient::moveMailFront(Email *mailPtr) -{ - if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) { - mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size); - } -} - -void EmailClient::smtpError(int code, const QString & Msg) -{ - QString temp; - - if (code == ErrUnknownResponse) { - temp = tr("<qt>Unknown response from server</qt>"); - if( ! Msg.isEmpty() ) - temp += Msg; - } else if (code == QSocket::ErrHostNotFound) { - temp = tr("<qt>host not found</qt>"); - } else if (code == QSocket::ErrConnectionRefused) { - temp = tr("<qt>connection refused</qt>"); - } else if (code == QSocket::ErrSocketRead) { - temp = tr("<qt>socket packet error</qt>"); - } - - if (code != ErrCancel) { - QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n"); - } else { - status2Label->setText("Aborted by user"); - } - - sending = FALSE; - sendMailButton->setEnabled(TRUE); - cancelButton->setEnabled(FALSE); - quedMessages.clear(); -} - -void EmailClient::popError(int code, const QString & Msg) -{ - QString temp; - - if (code == ErrUnknownResponse) { - temp = tr("<qt>Unknown response from server</qt>"); - if( ! Msg.isEmpty() ) - temp += Msg; - } else if (code == ErrLoginFailed) { - temp = tr("<qt>Login failed\nCheck user name and password</qt>"); - } else if (code == QSocket::ErrHostNotFound) { - temp = tr("<qt>host not found</qt>"); - } else if (code == QSocket::ErrConnectionRefused) { - temp = tr("<qt>connection refused</qt>"); - } else if (code == QSocket::ErrSocketRead) { - temp = tr("<qt>socket packet error</qt>"); - } - - if (code != ErrCancel) { - QMessageBox::warning(qApp->activeWindow(), tr("Receiving error"), temp, tr("OK\n")); - - } else { - status2Label->setText("Aborted by user"); - } - - receiving = FALSE; - getMailButton->setEnabled(TRUE); - cancelButton->setEnabled(FALSE); - selectAccountMenu->setEnabled(TRUE); -} - -void EmailClient::inboxItemSelected() -{ - //killTimer(timerID); - - item = (EmailListItem*) inboxView->selectedItem(); - if (item != NULL) { - emit viewEmail(inboxView, item->getMail()); - } -} - -void EmailClient::outboxItemSelected() -{ - //killTimer(timerID); - - item = (EmailListItem*) outboxView->selectedItem(); - if (item != NULL) { - emit viewEmail(outboxView, item->getMail()); - } - -} - -void EmailClient::readMail() -{ - Email mail; - int start, stop; - QString s, del; - - QFile f(getPath(FALSE) + "inbox.txt"); - - if ( f.open(IO_ReadOnly) ) { // file opened successfully - QTextStream t( &f ); // use a text stream - s = t.read(); - f.close(); - - start = 0; - del = "\n.\n"; - while ((uint) start < s.length()) { - stop = s.find(del, start); - if (stop == -1) - stop = s.length() - del.length(); - - mail.rawMail = s.mid(start, stop + del.length() - start ); - start = stop + del.length(); - mailArrived(mail, TRUE); - } - } - - QFile fo(getPath(FALSE) + "outbox.txt"); - if ( fo.open(IO_ReadOnly) ) { // file opened successfully - QTextStream t( &fo ); // use a text stream - s = t.read(); - fo.close(); - - start = 0; - del = "\n.\n"; - while ((uint) start < s.length()) { - stop = s.find(del, start); - if (stop == -1) - stop = s.length() - del.length(); - - mail.rawMail = s.mid(start, stop + del.length() - start ); - start = stop + del.length(); - emailHandler->parse(mail.rawMail, lineShift, &mail); - mail.sent = false; - mail.received = false; - enqueMail(mail); - - } - } -} - -void EmailClient::saveMail(const QString &fileName, QListView *view) -{ - QFile f(fileName); - Email *mail; - - if (! f.open(IO_WriteOnly) ) { - qWarning("could not open file"); - return; - } - item = (EmailListItem *) view->firstChild(); - QTextStream t(&f); - while (item != NULL) { - mail = item->getMail(); - t << mail->rawMail; - - mailconf->setGroup(mail->id); - mailconf->writeEntry("mailread", mail->read); - - item = (EmailListItem *) item->nextSibling(); - } - f.close(); -} - -//paths for mailit, is settings, inbox, enclosures -QString EmailClient::getPath(bool enclosurePath) -{ - QString basePath = "qtmail"; - QString enclosures = "enclosures"; - - QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); - if ( !dir.exists() ) - dir.mkdir( dir.path() ); - - if (enclosurePath) { - dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); - - if ( !dir.exists() ) - dir.mkdir( dir.path() ); - - return (dir.path() + "/"); - - } - return (dir.path() + "/"); -} - -void EmailClient::readSettings() -{ - int y,acc_count; - - mailconf->setGroup("mailitglobal"); - acc_count=mailconf->readNumEntry("Accounts",0); - - for (int accountPos = 0;accountPos<acc_count ; accountPos++) - { - mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ... - account.accountName = mailconf->readEntry("AccName",""); - account.name = mailconf->readEntry("UserName",""); - account.emailAddress = mailconf->readEntry("Email",""); - account.popUserName = mailconf->readEntry("POPUser",""); - account.popPasswd = mailconf->readEntryCrypt("POPPassword",""); - account.popServer = mailconf->readEntry("POPServer",""); - account.smtpServer = mailconf->readEntry("SMTPServer",""); - account.id = mailconf->readNumEntry("AccountId",0); - account.syncLimit = mailconf->readNumEntry("HeaderLimit",0); - account.lastServerMailCount = 0; - account.synchronize = FALSE; - - account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes"); - if (account.synchronize) - { - mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); - } - - accountList.append(&account); - } - - mailconf->setGroup("mailitglobal"); - - if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) - { - mailIdCount = y; - } - if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) - { - accountIdCount = y; - } -} - -void EmailClient::saveSettings() -{ - int acc_count=0; - MailAccount *accountPtr; - - - if (!mailconf) - { - qWarning("could not save settings"); - return; - } - - for (accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) - { - mailconf->setGroup("Account_"+QString::number(++acc_count)); - mailconf->writeEntry("AccName",accountPtr->accountName ); - mailconf->writeEntry("UserName",accountPtr->name); - mailconf->writeEntry("Email",accountPtr->emailAddress); - mailconf->writeEntry("POPUser",accountPtr->popUserName); - mailconf->writeEntryCrypt("POPPassword",accountPtr->popPasswd); - mailconf->writeEntry("POPServer",accountPtr->popServer); - mailconf->writeEntry("SMTPServer",accountPtr->smtpServer); - mailconf->writeEntry("AccountId",accountPtr->id); - if (accountPtr->synchronize) - { - mailconf->writeEntry("Synchronize","Yes"); - mailconf->writeEntry("HeaderLimit",accountPtr->syncLimit); - mailconf->writeEntry("LastServerMailCount",accountPtr->lastServerMailCount); - } - else - { - mailconf->writeEntry("Synchronize", "No"); - } - } - - mailconf->setGroup("mailitglobal"); - mailconf->writeEntry("Accounts",acc_count); - mailconf->writeEntry("mailidcount", mailIdCount); - mailconf->writeEntry("accountidcount", accountIdCount); -} - -void EmailClient::selectAccount(int id) -{ - if (accountList.count() > 0) { - currentAccount = accountList.at(id); - emit newCaption("Mailit - " + currentAccount->accountName); - getNewMail(); - } else { - emit newCaption( tr("Mailit ! No account defined") ); - } -} - -void EmailClient::editAccount(int id) -{ - MailAccount *newAccount; - - editAccountView = new EditAccount(this, "account", TRUE); - if (id == newAccountId) { //new account - newAccount = new MailAccount; - editAccountView->setAccount(newAccount); - } else { - newAccount = accountList.at(id); - editAccountView->setAccount(newAccount, FALSE); - } - - editAccountView->showMaximized(); - editAccountView->exec(); - - if (editAccountView->result() == QDialog::Accepted) { - if (id == newAccountId) { - newAccount->id = accountIdCount; - accountIdCount++; - accountList.append(newAccount); - updateAccounts(); - } else { - updateAccounts(); - } - } - - delete editAccountView; -} - -void EmailClient::deleteAccount(int id) -{ - MailAccount *newAccount; - QString message; - - newAccount = accountList.at(id); - message = tr("Delete account:\n") + newAccount->accountName; - switch( QMessageBox::warning( this, "Mailit", message, - "Yes", "No", 0, 0, 1 ) ) { - - case 0: accountList.remove(id); - updateAccounts(); - break; - case 1: - break; - } -} - -void EmailClient::updateAccounts() -{ - MailAccount *accountPtr; - - //rebuild menus, clear all first - editAccountMenu->clear(); - selectAccountMenu->clear(); - deleteAccountMenu->clear(); - - newAccountId = editAccountMenu->insertItem( tr("New"), this, - SLOT(editAccount(int)) ); - editAccountMenu->insertSeparator(); - - idCount = 0; - for (accountPtr = accountList.first(); accountPtr != 0; - accountPtr = accountList.next()) { - - editAccountMenu->insertItem(accountPtr->accountName, - this, SLOT(editAccount(int)), 0, idCount); - selectAccountMenu->insertItem(accountPtr->accountName, - this, SLOT(selectAccount(int)), 0, idCount); - deleteAccountMenu->insertItem(accountPtr->accountName, - this, SLOT(deleteAccount(int)), 0, idCount); - idCount++; - } -} - -void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox) -{ - Email *mPtr; - Enclosure *ePtr; - - if (inbox) - { - mPtr = mailItem->getMail(); - - //if mail is in queue for download, remove it from - //queue if possible - if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) { - if ( !mPtr->downloaded ) - mailDownloadList.remove(mPtr->serverId, mPtr->size); - } - - mailconf->setGroup(mPtr->id); - mailconf->clearGroup(); - - //delete any temporary attatchemnts storing - for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) { - if (ePtr->saved) { - QFile::remove( (ePtr->path + ePtr->name) ); - } - } - inboxView->takeItem(mailItem); - } - else - { - outboxView->takeItem(mailItem); - } -} - -void EmailClient::setMailSize(int size) -{ - progressBar->reset(); - progressBar->setTotalSteps(size); -} - -void EmailClient::setTotalSize(int /*size*/) -{ - -} - -void EmailClient::setDownloadedSize(int size) -{ - int total = progressBar->totalSteps(); - - if (size < total) { - progressBar->setProgress(size); - } else { - progressBar->setProgress(total); - } -} - -void EmailClient::deleteItem() -{ - bool inbox=mailboxView->currentTab()==0; - QListView* box; - - EmailListItem* eli; - // int pos; - - inbox ? box=inboxView : box=outboxView; - - eli=(EmailListItem*)box->selectedItem(); - - if (eli) - { - box->setSelected(eli->itemBelow(),true); //select the previous item - - deleteMail(eli,(bool&)inbox); //remove mail entry - } -} - -void EmailClient::inboxItemPressed() -{ -// timerID=startTimer(500); -} - -void EmailClient::inboxItemReleased() -{ - // killTimer(timerID); -} - -/*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); - - 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 deleted file mode 100644 index 80c6d31..0000000 --- a/noncore/net/mailit/emailclient.h +++ b/dev/null @@ -1,181 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef EMAILCLIENT_H -#define EMAILCLIENT_H - -#include <qlist.h> -#include <qcstring.h> -#include <qmainwindow.h> - -#include <qtoolbar.h> -#include <qcheckbox.h> -#include <qlabel.h> -#include <qlineedit.h> -#include <qlistview.h> -#include <qaction.h> -#include <qlayout.h> -#include <qtooltip.h> -#include <qtoolbutton.h> -#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" - -#include <qpe/config.h> - -class AccountList : public QList<MailAccount> -{ -public: - Item newItem(Item d); -private: - MailAccount* dupl(MailAccount *in); - MailAccount *ac; -}; - -//class EmailClient : public EmailClientBase -class EmailClient : public QMainWindow -{ - Q_OBJECT - -public: - EmailClient( QWidget* parent, const char* name, WFlags fl = 0 ); - ~EmailClient(); - AddressList* getAdrListRef(); - -protected: - //void timerEvent(QTimerEvent*); - -signals: - void composeRequested(); - void viewEmail(QListView *, Email *); - void mailUpdated(Email *); - void newCaption(const QString &); - void replyRequested(Email&, bool&); - void forwardRequested(Email&); - void removeItem(EmailListItem*, bool&); - /*void reply(Email&); - void replyAll(Email&); - void remove(Email&); - void forward(Email&);*/ - -public slots: - void compose(); - void cancel(); - void enqueMail(const Email &mail); - void setMailAccount(); - void sendQuedMail(); - void mailSent(); - void deleteItem(); - void getNewMail(); - void getAllNewMail(); - void smtpError(int code, const QString & Msg ); - void popError(int code, const QString & Msg); - void inboxItemSelected(); - void outboxItemSelected(); - void inboxItemPressed(); - void inboxItemReleased(); - void mailArrived(const Email &mail, bool fromDisk); - void allMailArrived(int); - void saveMail(const QString &fileName, QListView *view); - void selectAccount(int); - 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; - int accountIdCount; - AccountList accountList; - AddressList *addressList; - - EditAccount *editAccountView; - EmailListItem *item; - EmailHandler *emailHandler; - 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; - QAction *deleteButton; - //QToolButton *setAccountButton; - - QMenuBar *mb; - QPopupMenu *selectAccountMenu; - QPopupMenu *editAccountMenu; - QPopupMenu *deleteAccountMenu; - QPopupMenu *setAccountMenu; - - OTabWidget* mailboxView; - QListView* inboxView; - QListView* outboxView; - - QGridLayout* grid_2; - QGridLayout* grid_3; -}; - -#endif // EMAILCLIENT_H diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp deleted file mode 100644 index 06e978d..0000000 --- a/noncore/net/mailit/emailhandler.cpp +++ b/dev/null @@ -1,630 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qfileinfo.h> -#include <stdlib.h> -#include <qapplication.h> -#include <qmessagebox.h> -#include <qcstring.h> -#include "emailhandler.h" -#include <qpe/applnk.h> -#include <qpe/filemanager.h> - -QCollection::Item EnclosureList::newItem(QCollection::Item d) -{ - return dupl( (Enclosure *) 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, const QString &)), this, - SIGNAL(smtpError(int, const QString &)) ); - connect(smtpClient, SIGNAL(mailSent()), this, SIGNAL(mailSent()) ); - connect(smtpClient, SIGNAL(updateStatus(const QString &)), this, - SIGNAL(updateSmtpStatus(const QString &)) ); - - connect(popClient, SIGNAL(errorOccurred(int, const QString &)), this, - SIGNAL(popError(int, const QString &)) ); - connect(popClient, SIGNAL(newMessage(const QString &, int, uint, bool)), - this, SLOT(messageArrived(const QString &, int, uint, bool)) ); - connect(popClient, SIGNAL(updateStatus(const QString &)), this, - SIGNAL(updatePopStatus(const QString &)) ); - connect(popClient, SIGNAL(mailTransfered(int)), this, - SIGNAL(mailTransfered(int)) ); - - - //relaying size information - connect(popClient, SIGNAL(currentMailSize(int)), - this, SIGNAL(currentMailSize(int)) ); - connect(popClient, SIGNAL(downloadedSize(int)), - this, SIGNAL(downloadedSize(int)) ); -} - -void EmailHandler::sendMail(QList<Email> *mailList) -{ - Email *currentMail; - QString temp; - QString userName = QString::null; - // not supported by ALL SMTP servers in the MAIL From field - // userName = "\""+mailAccount.name+"\""; - userName += "<" + mailAccount.emailAddress + ">"; - - for (currentMail = mailList->first(); currentMail != 0; - currentMail = mailList->next()) { - - if (encodeMime(currentMail) == 0) { - smtpClient->addMail(userName, currentMail->subject, - currentMail->recipients, currentMail->rawMail); - } else { //error - temp = tr("Could not locate all files in \nmail with subject: ") + - currentMail->subject; - temp += tr("\nMail has NOT been sent"); - QMessageBox::warning(qApp->activeWindow(), tr("Attachment error"), temp, tr("OK\n")); - - } - } - smtpClient->newConnection(mailAccount.smtpServer, 25); -} - -void EmailHandler::setAccount(MailAccount account) -{ - mailAccount = account; -} - -void EmailHandler::getMail() -{ - popClient->setAccount(mailAccount.popUserName, mailAccount.popPasswd); - if (mailAccount.synchronize) { - popClient->setSynchronize(mailAccount.lastServerMailCount); - } else { - popClient->removeSynchronize(); - } - - headers = FALSE; - //popClient->headersOnly(headers, 0); - popClient->newConnection(mailAccount.popServer, 110); -} - -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; - } - - headers = FALSE; - popClient->headersOnly(FALSE, 0); - - popClient->setAccount(mailAccount.popUserName,mailAccount.popPasswd); - popClient->setSelectedMails(mailList); - popClient->newConnection(mailAccount.popServer, 110); - } - -void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete) -{ - Email mail; - - mail.rawMail = message; - mail.serverId = id; - mail.size = size; - mail.downloaded = complete; - - emit mailArrived(mail, FALSE); -} - -bool EmailHandler::parse(const QString &in, const QString &lineShift, Email *mail) -{ - QString temp, boundary; - int pos; - QString delimiter, header, body, mimeHeader, mimeBody; - QString content, contentType, contentAttribute, id, encoding; - QString fileName, storedName; - int enclosureId = 0; - - mail->rawMail = in; - mail->received = TRUE; - mail->files.setAutoDelete(TRUE); - - temp = lineShift + "." + lineShift; - - if (in.right(temp.length()) != temp) { - mail->rawMail += temp; - } - - - delimiter = lineShift + lineShift; // "\n\n" or "\r\n\r\n" - pos = in.find(delimiter, 0, FALSE); - header = in.left(pos); - body = in.right(in.length() - pos - delimiter.length()); - if ((body.at(body.length()-2) == '.') && (body.at(body.length()-3) == '\n')) - body.truncate(body.length()-2); - - // TextParser p(header, lineShift); - TextParser * lp = new TextParser(header, lineShift); -#define p (*lp) - - if ((pos = p.find("FROM",':', 0, TRUE)) != -1) { - pos++; - if (p.separatorAt(pos) == ' ') { - mail->from = p.getString(&pos, '<', false); - mail->from = mail->from.stripWhiteSpace(); - if ( (mail->from.length() > 2) && (mail->from[0] == '"') ) { - mail->from = mail->from.left(mail->from.length() - 1); - mail->from = mail->from.right(mail->from.length() - 1); - } - pos++; - mail->fromMail = p.getString(&pos, '>', false); - } else { - if (p.separatorAt(pos) == '<') //No name.. nasty - pos++; - //pos++; - mail->fromMail = p.getString(&pos, 'z', TRUE); - if (mail->fromMail.at(mail->fromMail.length()-1) == '>') - mail->fromMail.truncate(mail->fromMail.length() - 1); - mail->from=mail->fromMail; - } - } - - pos=0; - - //Search for To: after the FROM: attribute to prevent hitting the Delivered-To: - while((pos = p.find("TO",':', pos+1, TRUE))!=-1) - { - QString rec; - - if (p.separatorAt(pos-1)!='-') //The - separator means that this is a Delivered-To: or Reply-To: - { - pos++; - mail->recipients.append(p.getString(&pos, '\r', TRUE)); - } - } - // - //if (pos==-1) mail->recipients.append (tr("undisclosed recipients") ); - - if ((pos = p.find("CC",':', 0, TRUE)) != -1) - { - pos++; - mail->carbonCopies.append (p.getString(&pos, 'z', TRUE) ); - } - - if ((pos = p.find("SUBJECT",':', 0, TRUE)) != -1) { - pos++; - mail->subject = p.getString(&pos, 'z', TRUE); - } - - if ((pos = p.find("DATE",':', 0, TRUE)) != -1) { - pos++; - mail->date = p.getString(&pos, 'z', TRUE); - } - - - - if ((pos = p.find("MESSAGE",'-', 0, TRUE)) != -1) { - pos++; - if ( (p.wordAt(pos).upper() == "ID") && - (p.separatorAt(pos) == ':') ) { - - id = p.getString(&pos, 'z', TRUE); - mail->id = id; - } - } - - pos = 0; - while ( ((pos = p.find("MIME",'-', pos, TRUE)) != -1) ) { - pos++; - if ( (p.wordAt(pos).upper() == "VERSION") && - (p.separatorAt(pos) == ':') ) { - pos++; - if (p.getString(&pos, 'z', true) == "1.0") { - mail->mimeType = 1; - } - } - } - - if (mail->mimeType == 1) { - boundary = ""; - if ((pos = p.find("BOUNDARY", '=', 0, TRUE)) != -1) { - pos++; - boundary = p.getString(&pos, 'z', true); - if (boundary[0] == '"') { - boundary = boundary.left(boundary.length() - 1); //strip " - boundary = boundary.right(boundary.length() - 1); //strip " - } - boundary = "--" + boundary; //create boundary field - } - - if (boundary == "") { //fooled by Mime-Version - mail->body = body; - mail->bodyPlain = body; - delete lp; - return mail; - } - - while (body.length() > 0) { - pos = body.find(boundary, 0, FALSE); - pos = body.find(delimiter, pos, FALSE); - mimeHeader = body.left(pos); - mimeBody = body.right(body.length() - pos - delimiter.length()); - TextParser bp(mimeHeader, lineShift); - - contentType = ""; - contentAttribute = ""; - fileName = ""; - if ((pos = bp.find("CONTENT",'-', 0, TRUE)) != -1) { - pos++; - if ( (bp.wordAt(pos).upper() == "TYPE") && - (bp.separatorAt(pos) == ':') ) { - contentType = bp.nextWord().upper(); - if (bp.nextSeparator() == '/') - contentAttribute = bp.nextWord().upper(); - content = contentType + "/" + contentAttribute; - } - if ((pos = bp.find("ENCODING",':', 0, TRUE)) != -1) { - pos++; - encoding = bp.getString(&pos, 'z', TRUE); - } - - if ( (pos = bp.find("FILENAME",'=', 0, TRUE)) != -1) { - pos++; - fileName = bp.getString(&pos, 'z', TRUE); - fileName = fileName.right(fileName.length() - 1); - fileName = fileName.left(fileName.length() - 1); - } - - } - pos = mimeBody.find(boundary, 0, FALSE); - if (pos == -1) //should not occur, malformed mail - pos = mimeBody.length(); - body = mimeBody.right(mimeBody.length() - pos); - mimeBody = mimeBody.left(pos); - - if (fileName != "") { //attatchments of some type, audio, image etc. - - Enclosure e; - e.id = enclosureId; - e.originalName = fileName; - e.contentType = contentType; - e.contentAttribute = contentAttribute; - e.encoding = encoding; - e.body = mimeBody; - e.saved = FALSE; - mail->addEnclosure(&e); - enclosureId++; - - } else if (contentType == "TEXT") { - if (contentAttribute == "PLAIN") { - mail->body = mimeBody; - mail->bodyPlain = mimeBody; - } - if (contentAttribute == "HTML") { - mail->body = mimeBody; - } - } - } - } else { - mail->bodyPlain = body; - mail->body = body; - } - delete lp; - return TRUE; -} - -bool EmailHandler::getEnclosure(Enclosure *ePtr) -{ - QFile f(ePtr->path + ePtr->name); - char src[4]; - char *destPtr; - QByteArray buffer; - uint bufCount, pos, decodedCount, size, x; - - if (! f.open(IO_WriteOnly) ) { - qWarning("could not save: " + ePtr->path + ePtr->name); - return FALSE; - } - - if (ePtr->encoding.upper() == "BASE64") { - size = (ePtr->body.length() * 3 / 4); //approximate size (always above) - buffer.resize(size); - bufCount = 0; - pos = 0; - destPtr = buffer.data(); - - while (pos < ePtr->body.length()) { - decodedCount = 4; - x = 0; - while ( (x < 4) && (pos < ePtr->body.length()) ) { - src[x] = ePtr->body[pos].latin1(); - pos++; - if (src[x] == '\r' || src[x] == '\n' || src[x] == ' ') - x--; - x++; - } - if (x > 1) { - decodedCount = parse64base(src, destPtr); - destPtr += decodedCount; - bufCount += decodedCount; - } - } - - buffer.resize(bufCount); //set correct length of file - f.writeBlock(buffer); - } else { - QTextStream t(&f); - t << ePtr->body; - } - return TRUE; -} - -int EmailHandler::parse64base(char *src, char *bufOut) { - - char c, z; - char li[4]; - int processed; - - //conversion table withouth table... - for (int x = 0; x < 4; x++) { - c = src[x]; - - if ( (int) c >= 'A' && (int) c <= 'Z') - li[x] = (int) c - (int) 'A'; - if ( (int) c >= 'a' && (int) c <= 'z') - li[x] = (int) c - (int) 'a' + 26; - if ( (int) c >= '0' && (int) c <= '9') - li[x] = (int) c - (int) '0' + 52; - if (c == '+') - li[x] = 62; - if (c == '/') - li[x] = 63; - } - - processed = 1; - bufOut[0] = (char) li[0] & (32+16+8+4+2+1); //mask out top 2 bits - bufOut[0] <<= 2; - z = li[1] >> 4; - bufOut[0] = bufOut[0] | z; //first byte retrived - - if (src[2] != '=') { - bufOut[1] = (char) li[1] & (8+4+2+1); //mask out top 4 bits - bufOut[1] <<= 4; - z = li[2] >> 2; - bufOut[1] = bufOut[1] | z; //second byte retrived - processed++; - - if (src[3] != '=') { - bufOut[2] = (char) li[2] & (2+1); //mask out top 6 bits - bufOut[2] <<= 6; - z = li[3]; - bufOut[2] = bufOut[2] | z; //third byte retrieved - processed++; - } - } - return processed; -} - -int EmailHandler::encodeMime(Email *mail) -{ - - QString fileName, fileType, contentType, newBody, boundary; - Enclosure *ePtr; - QString userName; - - if ( ! mailAccount.name.isEmpty() ) { - userName = "\"" + mailAccount.name + "\" <" + mailAccount.emailAddress + ">"; - } else { - userName = "<" + mailAccount.emailAddress + ">"; - } - - //add standard headers - newBody = "From: " + userName + "\r\nTo: "; - for (QStringList::Iterator it = mail->recipients.begin(); it != mail->recipients.end(); ++it ) { - newBody += *it + " "; - } - - newBody += "\r\nCC: "; - - for (QStringList::Iterator it = mail->carbonCopies.begin(); it != mail->carbonCopies.end(); ++it ) { - newBody += *it + " "; - } - - newBody += "\r\nSubject: " + mail->subject + "\r\n"; - - if (mail->files.count() == 0) { //just a simple mail - newBody += "\r\n" + mail->body; - mail->rawMail = newBody; - return 0; - } - - //Build mime encoded mail - boundary = "-----4345=next_bound=0495----"; - - newBody += "Mime-Version: 1.0\r\n"; - newBody += "Content-Type: multipart/mixed; boundary=\"" + - boundary + "\"\r\n\r\n"; - - newBody += "This is a multipart message in Mime 1.0 format\r\n\r\n"; - newBody += "--" + boundary + "\r\nContent-Type: text/plain\r\n\r\n"; - newBody += mail->body; - - for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { - fileName = ePtr->originalName; - fileType = ePtr->contentType; - QFileInfo fi(fileName); - - // This specification of contentType is temporary - contentType = ""; - if (fileType == "Picture") { - contentType = "image/x-image"; - } else if (fileType == "Document") { - contentType = "text/plain"; - } else if (fileType == "Sound") { - contentType = "audio/x-wav"; - } else if (fileType == "Movie") { - contentType = "video/mpeg"; - } else { - contentType = "application/octet-stream"; - } - - newBody += "\r\n\r\n--" + boundary + "\r\n"; - newBody += "Content-Type: " + contentType + "; name=\"" + - fi.fileName() + "\"\r\n"; - newBody += "Content-Transfer-Encoding: base64\r\n"; - newBody += "Content-Disposition: inline; filename=\"" + - fi.fileName() + "\"\r\n\r\n"; - - if (encodeFile(fileName, &newBody) == -1) //file not found? - return -1; - } - - newBody += "\r\n\r\n--" + boundary + "--"; - mail->rawMail = newBody; - - return 0; -} - -int EmailHandler::encodeFile(const QString &fileName, QString *toBody) -{ - char *fileData; - char *dataPtr; - QString temp; - uint dataSize, count; - QFile f(fileName); - - if (! f.open(IO_ReadOnly) ) { - qWarning("could not open file: " + fileName); - return -1; - } - QTextStream s(&f); - dataSize = f.size(); - fileData = (char *) malloc(dataSize + 3); - s.readRawBytes(fileData, dataSize); - - temp = ""; - dataPtr = fileData; - count = 0; - while (dataSize > 0) { - if (dataSize < 3) { - encode64base(dataPtr, &temp, dataSize); - dataSize = 0; - } else { - encode64base(dataPtr, &temp, 3); - dataSize -= 3; - dataPtr += 3; - count += 4; - } - if (count > 72) { - count = 0; - temp += "\r\n"; - } - } - toBody->append(temp); - - delete(fileData); - f.close(); - return 0; -} - -void EmailHandler::encode64base(char *src, QString *dest, int len) -{ - QString temp; - uchar c; - uchar bufOut[4]; - - bufOut[0] = src[0]; - bufOut[0] >>= 2; //Done byte 0 - - bufOut[1] = src[0]; - bufOut[1] = bufOut[1] & (1 + 2); //mask out top 6 bits - bufOut[1] <<= 4; //copy up 4 places - if (len > 1) { - c = src[1]; - } else { - c = 0; - } - - c = c & (16 + 32 + 64 + 128); - c >>= 4; - bufOut[1] = bufOut[1] | c; //Done byte 1 - - bufOut[2] = src[1]; - bufOut[2] = bufOut[2] & (1 + 2 + 4 + 8); - bufOut[2] <<= 2; - if (len > 2) { - c = src[2]; - } else { - c = 0; - } - c >>= 6; - bufOut[2] = bufOut[2] | c; - - bufOut[3] = src[2]; - bufOut[3] = bufOut[3] & (1 + 2 + 4 + 8 + 16 + 32); - - if (len == 1) { - bufOut[2] = 64; - bufOut[3] = 64; - } - if (len == 2) { - bufOut[3] = 64; - } - for (int x = 0; x < 4; x++) { - if (bufOut[x] <= 25) - bufOut[x] += (uint) 'A'; - else if (bufOut[x] >= 26 && bufOut[x] <= 51) - bufOut[x] += (uint) 'a' - 26; - else if (bufOut[x] >= 52 && bufOut[x] <= 61) - bufOut[x] += (uint) '0' - 52; - else if (bufOut[x] == 62) - bufOut[x] = '+'; - else if (bufOut[x] == 63) - bufOut[x] = '/'; - else if (bufOut[x] == 64) - bufOut[x] = '='; - - dest->append(bufOut[x]); - } -} - -void EmailHandler::cancel() -{ - popClient->errorHandling(ErrCancel); - smtpClient->errorHandling(ErrCancel); -} - diff --git a/noncore/net/mailit/emailhandler.h b/noncore/net/mailit/emailhandler.h deleted file mode 100644 index 74a8e4c..0000000 --- a/noncore/net/mailit/emailhandler.h +++ b/dev/null @@ -1,150 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef EmailHandler_H -#define EmailHandler_H - -#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 -{ - int id; - QString originalName; - QString name; - QString path; - QString contentType; - QString contentAttribute; - QString encoding; - QString body; //might use to much mem. check!! - bool saved, installed; -}; - -class EnclosureList : public QList<Enclosure> -{ -public: - Item newItem(Item d); -private: - Enclosure* dupl(Enclosure *in); - Enclosure *ac; -}; - -struct Email -{ - QString id; - QString from; - QString fromMail; - QStringList recipients; - QStringList carbonCopies; - QString date; - QString subject; - QString body; - QString bodyPlain; - bool sent, received, read, downloaded; - QString rawMail; - int mimeType; //1 = Mime 1.0 - int serverId; - int internalId; - int fromAccountId; - QString contentType; //0 = text - QString contentAttribute; //0 = plain, 1 = html - EnclosureList files; - uint size; - - void addEnclosure(Enclosure *e) - { - files.append(e); - } -}; - -struct MailAccount -{ - QString accountName; - QString name; - QString emailAddress; - QString popUserName; - QString popPasswd; - QString popServer; - QString smtpServer; - bool synchronize; - int syncLimit; - int lastServerMailCount; - int id; -}; - - const int ErrUnknownResponse = 1001; - const int ErrLoginFailed = 1002; - const int ErrCancel = 1003; - - -class EmailHandler : public QObject -{ - Q_OBJECT - -public: - EmailHandler(); - void setAccount(MailAccount account); - MailAccount* getAccount(){return &mailAccount;} - void sendMail(QList<Email> *mailList); - void getMail(); - void getMailHeaders(); - void getMailByList(MailList *mailList); - bool parse(const QString &in, const QString &lineShift, Email *mail); - bool getEnclosure(Enclosure *ePtr); - int parse64base(char *src, char *dest); - int encodeMime(Email *mail); - int encodeFile(const QString &fileName, QString *toBody); - void encode64base(char *src, QString *dest, int len); - void cancel(); - -signals: - void mailSent(); - void smtpError(int, const QString & Msg ); - void popError(int, const QString & Msg ); - void mailArrived(const Email &, bool); - void updatePopStatus(const QString &); - void updateSmtpStatus(const QString &); - void mailTransfered(int); - void mailboxSize(int); - void currentMailSize(int); - void downloadedSize(int); - -public slots: - void messageArrived(const QString &, int id, uint size, bool complete); - -private: - MailAccount mailAccount; - SmtpClient *smtpClient; - PopClient *popClient; - bool headers; -}; - -#endif diff --git a/noncore/net/mailit/emaillistitem.cpp b/noncore/net/mailit/emaillistitem.cpp deleted file mode 100644 index a25f93a..0000000 --- a/noncore/net/mailit/emaillistitem.cpp +++ b/dev/null @@ -1,158 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qstring.h> -#include <qpe/resource.h> -#include "emaillistitem.h" - -EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox) - : QListViewItem(parent) -{ - QString temp; - - mail = mailIn; - - if (inbox) { - setText(0, mail.from); - } else { - QStringList::Iterator it = mail.recipients.begin(); - temp = *it; - if (mail.recipients.count() > 1) - temp += "..."; - setText(0, temp); - } - setText(1, mail.subject); - // setText(2,mail.date); - setText(2,dateFromULCString(mail.date)); - - if (mailIn.files.count()>0) - { - setPixmap(0, Resource::loadPixmap("mailit/attach")); - } - - selected = FALSE; -} - -Email* EmailListItem::getMail() -{ - return &mail; -} - -void EmailListItem::setMail(Email newMail) -{ - mail = newMail; - repaint(); -} - -void EmailListItem::setItemSelected(bool enable) -{ - selected = enable; - setSelected(enable); - repaint(); -} - -bool EmailListItem::isItemSelected() -{ - return selected; -} - -void EmailListItem::paintCell( QPainter *p, const QColorGroup &cg, - int column, int width, int alignment ) -{ - - QColorGroup _cg( cg ); - QColor c = _cg.text(); - - if ( (! mail.read) && (mail.received) ) - _cg.setColor( QColorGroup::Text, Qt::blue); - if (!mail.downloaded) - _cg.setColor( QColorGroup::Text, Qt::red); - -/* if (selected) { - _cg.setColor(QColorGroup::Base, Qt::blue); - _cg.setColor(QColorGroup::Text, Qt::yellow); - if (isSelected()) { - _cg.setColor(QColorGroup::HighlightedText, Qt::yellow); - } else { - _cg.setColor(QColorGroup::Highlight, Qt::blue); - } - } -*/ - QListViewItem::paintCell( p, _cg, column, width, alignment ); - - _cg.setColor( QColorGroup::Text, c ); -} - -/* - * Converts an E-Mail date (ULC) RFC 2822 conform to a QDateTime. - * Returning a QString with formatting of "YYYY-MM-DD HH:MM:SS" - * (zodiac: This method was tested with more than 300 inbox mails, - * it didn't slow down the loading of mail-it.) - */ -QString EmailListItem::dateFromULCString( QString ulcDate ) -{ - QString sTemp, sTime; - int iPos, iDay, iMon=1, iYear; - - iPos=ulcDate.find(','); - if (iPos) { // it has a day-of-week - ulcDate=ulcDate.remove(0,++iPos); //.stripWhiteSpace(); - } - - QStringList dateEntries = QStringList::split(" ",ulcDate,FALSE); - QStringList::Iterator iter = dateEntries.begin(); - - // Get day as DD - iDay = (*iter++).toInt(); - - // Get month as string Mmm - sTemp = (*iter++); - if (sTemp =="Jan") {iMon=1;} else - if (sTemp =="Feb") {iMon=2;} else - if (sTemp =="Mar") {iMon=3;} else - if (sTemp =="Apr") {iMon=4;} else - if (sTemp =="May") {iMon=5;} else - if (sTemp =="Jun") {iMon=6;} else - if (sTemp =="Jul") {iMon=7;} else - if (sTemp =="Aug") {iMon=8;} else - if (sTemp =="Sep") {iMon=9;} else - if (sTemp =="Oct") {iMon=10;} else - if (sTemp =="Nov") {iMon=11;} else - if (sTemp =="Dec") {iMon=12;} - - // Get year as YYYY or YY - iYear = (*iter++).toInt(); - - QDate date = QDate(iYear, iMon, iDay); - - // Convert timestring into a QTime - QStringList timeEntries = QStringList::split(":",(*iter++),FALSE); - QStringList::Iterator iterTime = timeEntries.begin(); - iYear=(*iterTime++).toInt(); // var reuse.. *cough* - iMon=(*iterTime++).toInt(); - iDay=(*iterTime++).toInt(); - QTime time = QTime(iYear,iMon,iDay); - - return QString::number(date.year())+"-" - +QString::number(date.month()).rightJustify(2,'0')+"-" - +QString::number(date.day()).rightJustify(2,'0')+" " - +time.toString(); -} - - diff --git a/noncore/net/mailit/emaillistitem.h b/noncore/net/mailit/emaillistitem.h deleted file mode 100644 index 129a774..0000000 --- a/noncore/net/mailit/emaillistitem.h +++ b/dev/null @@ -1,45 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef EMAILLISTITEM_H -#define EMAILLISTITEM_H - -#include <qlistview.h> -#include "emailhandler.h" - -class EmailListItem: public QListViewItem -{ -public: - EmailListItem(QListView *parent, Email mailIn, bool inbox); - Email* getMail(); - void setMail(Email newMail); - void setItemSelected(bool enable); - bool isItemSelected(); - bool itemSelected(); - -protected: - void paintCell( QPainter *p, const QColorGroup &cg, - int column, int width, int alignment ); -private: - Email mail; - bool selected; - QString dateFromULCString( QString ulc ); -}; - -#endif diff --git a/noncore/net/mailit/mailit.pro b/noncore/net/mailit/mailit.pro deleted file mode 100644 index bdb89be..0000000 --- a/noncore/net/mailit/mailit.pro +++ b/dev/null @@ -1,40 +0,0 @@ -TARGET = mailit -CONFIG = qt warn_on release quick-app -HEADERS = emailclient.h \ - emailhandler.h \ - emaillistitem.h \ - mailitwindow.h \ - md5.h \ - popclient.h \ - readmail.h \ - smtpclient.h \ - writemail.h \ - textparser.h \ - viewatt.h \ - addatt.h \ - editaccount.h \ - maillist.h \ - addresslist.h -SOURCES = emailclient.cpp \ - emailhandler.cpp \ - emaillistitem.cpp \ - mailitwindow.cpp \ - main.cpp \ - md5.c \ - popclient.cpp \ - readmail.cpp \ - smtpclient.cpp \ - writemail.cpp \ - textparser.cpp \ - viewatt.cpp \ - addatt.cpp \ - editaccount.cpp \ - maillist.cpp \ - addresslist.cpp - -INCLUDEPATH += $(OPIEDIR)/include -DEPENDPATH += $(OPIEDIR)/include -LIBS += -lqpe -lopie -# -lssl - -include ( $(OPIEDIR)/include.pro ) diff --git a/noncore/net/mailit/mailitwindow.cpp b/noncore/net/mailit/mailitwindow.cpp deleted file mode 100644 index 6e298c7..0000000 --- a/noncore/net/mailit/mailitwindow.cpp +++ b/dev/null @@ -1,168 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qwhatsthis.h> -#include <qmessagebox.h> -#include "mailitwindow.h" - -MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags /*fl*/) - : QMainWindow(parent, name, WStyle_ContextHelp) -{ - currentCaption = tr("Mailit"); - setCaption(tr(currentCaption)); - views = new QWidgetStack(this); - setCentralWidget(views); - QWhatsThis::add(views,tr("Central view area")); - emailClient = new EmailClient(views, "client"); - writeMail = new WriteMail(views, "writing"); - readMail = new ReadMail(views, "reading"); - - views->raiseWidget(emailClient); - - connect(emailClient, SIGNAL(composeRequested()), - this, SLOT(compose()) ); - connect(emailClient, SIGNAL(viewEmail(QListView *, Email *)), this, - SLOT(viewMail(QListView *, Email *)) ); - connect(emailClient, SIGNAL(mailUpdated(Email *)), this, - SLOT(updateMailView(Email *)) ); - - connect(writeMail, SIGNAL(cancelMail()), this, SLOT(showEmailClient()) ); - connect(writeMail, SIGNAL(sendMailRequested(const Email &)), this, - SLOT(showEmailClient()) ); - connect(writeMail, SIGNAL(sendMailRequested(const Email &)), emailClient, - SLOT(enqueMail(const Email &)) ); - - connect(readMail, SIGNAL(cancelView()), this, SLOT(showEmailClient()) ); - connect(readMail, SIGNAL(replyRequested(Email &, bool&)), this, - SLOT(composeReply(Email &, bool&)) ); - connect(readMail, SIGNAL(forwardRequested(Email &)), this, - SLOT(composeForward(Email &)) ); - - 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) -{ - if (views->visibleWidget() == emailClient) { - e->accept(); - } else { - showEmailClient(); - } -} - -void MailItWindow::compose() -{ - viewingMail = FALSE; - emailClient->hide(); - readMail->hide(); - views->raiseWidget(writeMail); - writeMail->setAddressList(emailClient->getAdrListRef()); - writeMail->newMail(); - setCaption( tr( "Write mail" ) ); -} - -void MailItWindow::composeReply(Email &mail, bool& replyAll) -{ - compose(); - writeMail->reply(mail,replyAll) ; -} - -void MailItWindow::composeForward(Email &mail) -{ - compose(); - writeMail->forward(mail) ; -} - - -void MailItWindow::showEmailClient() -{ - viewingMail = FALSE; - writeMail->hide(); - readMail->hide(); - views->raiseWidget(emailClient); - setCaption( tr(currentCaption) ); -} - -void MailItWindow::viewMail(QListView *view, Email *mail) -{ - viewingMail = TRUE; - emailClient->hide(); - - int result=0; - - if ((mail->received)&&(!mail->downloaded)) - { - QMessageBox mb( tr("Mail not downloaded"), - tr("The mail you have clicked \n" - "has not been downloaded yet.\n " - "Would you like to do it now ?"), - QMessageBox::Information, - QMessageBox::Yes | QMessageBox::Default, - QMessageBox::No | QMessageBox::Escape,0 ); - - result=mb.exec(); - - if (result==QMessageBox::Yes) - { - emailClient->download(mail); - } - } - - readMail->update(view, mail); - views->raiseWidget(readMail); - setCaption( tr( "Read Mail" ) ); -} - -void MailItWindow::updateMailView(Email *mail) -{ - if (viewingMail) { - readMail->mailUpdated(mail); - } -} - -void MailItWindow::updateCaption(const QString &newCaption) -{ - currentCaption = newCaption; - setCaption(tr(currentCaption)); -} - -void MailItWindow::setDocument(const QString &_address) -{ - // strip leading 'mailto:' - QString address = _address; - if (address.startsWith("mailto:")) - address = address.mid(6); - - compose(); - writeMail->setRecipient(address); -} diff --git a/noncore/net/mailit/mailitwindow.h b/noncore/net/mailit/mailitwindow.h deleted file mode 100644 index 11e56b9..0000000 --- a/noncore/net/mailit/mailitwindow.h +++ b/dev/null @@ -1,65 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef MailItWindow_H -#define MailItWindow_H - -#include <qmainwindow.h> -#include <qwidgetstack.h> -#include <qevent.h> -//#include <qlayout.h> -#include "emailclient.h" -#include "writemail.h" -#include "readmail.h" -#include "addresslist.h" - -class MailItWindow: public QMainWindow -{ - Q_OBJECT -public: - static QString appName() { return QString::fromLatin1("mailit"); } - MailItWindow(QWidget *parent = 0, const char *name = 0, WFlags fl = 0); - ~MailItWindow(); - -signals: -public slots: - void compose(); - void composeReply(Email &, bool&); - void composeForward(Email &); - void showEmailClient(); - void viewMail(QListView *, Email *mail); - void updateMailView(Email *mail); - void closeEvent(QCloseEvent *e); - void updateCaption(const QString &); - void setDocument(const QString &); - /*void reply(Email&); - void replyAll(Email&); - void forward(Email&); - void remove(Email&);*/ - -private: - EmailClient *emailClient; - WriteMail *writeMail; - ReadMail *readMail; - QWidgetStack *views; - QString currentCaption; - bool viewingMail; -}; - -#endif diff --git a/noncore/net/mailit/maillist.cpp b/noncore/net/mailit/maillist.cpp deleted file mode 100644 index 8c34295..0000000 --- a/noncore/net/mailit/maillist.cpp +++ b/dev/null @@ -1,131 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 "maillist.h" - -void MailList::clear() -{ - sortedList.setAutoDelete(TRUE); - sortedList.clear(); - currentPos = 0; -} - -int MailList::count() -{ - return sortedList.count(); -} - -int* MailList::first() -{ - dList *mPtr; - - if (sortedList.count() == 0) - return NULL; - - mPtr = sortedList.at(0); - currentPos = 1; - return &(mPtr->serverId); -} - -int* MailList::next() -{ - dList *mPtr; - - if ( (currentPos) >= sortedList.count()) - return NULL; - - mPtr = sortedList.at(currentPos); - currentPos++; - return &(mPtr->serverId); -} - -void MailList::sizeInsert(int serverId, uint size) -{ - dList *tempPtr; - int x; - - dList *newEntry = new dList; - newEntry->serverId = serverId; - newEntry->size = size; - - for (tempPtr = sortedList.first(); tempPtr != NULL; tempPtr = sortedList.next() ) { - if (newEntry->size < tempPtr->size) { - x = sortedList.at(); - sortedList.insert(x, newEntry); - return; - } - } - sortedList.append(newEntry); -} - -void MailList::moveFront(int serverId, uint/* size*/) -{ - dList *currentPtr; - uint tempPos; - QString temp; - - tempPos = currentPos; - if ( tempPos >= sortedList.count() ) - return; - currentPtr = sortedList.at(tempPos); - while ( ((tempPos+1) < sortedList.count()) && ( currentPtr->serverId != serverId) ) { - tempPos++; - currentPtr = sortedList.at(tempPos); - } - - if ( (currentPtr != NULL) && (currentPtr->serverId == serverId) ) { - temp.setNum(currentPtr->serverId); - qWarning("moved to front, message: " + temp); - - dList *itemPtr = sortedList.take(tempPos); - sortedList.insert(currentPos, itemPtr); - } - -} - -//only works if mail is not already in download -bool MailList::remove(int serverId, uint /*size*/) -{ - dList *currentPtr; - uint tempPos; - QString temp; - - tempPos = currentPos; - if ( tempPos >=sortedList.count() ) - return FALSE; - currentPtr = sortedList.at(tempPos); - while ( ((tempPos + 1) < sortedList.count()) && ( currentPtr->serverId != serverId) ) { - tempPos++; - currentPtr = sortedList.at(tempPos); - } - - if ( (currentPtr != NULL) && (currentPtr->serverId == serverId) ) { - temp.setNum(currentPtr->serverId); - qWarning("deleted message: " + temp); - sortedList.remove(tempPos); - - return TRUE; - } - return FALSE; -} - -void MailList::insert(int /*pos*/, int /*serverId*/, uint/* size*/) -{ -// sortedList.insert(pos, mPtr); -} diff --git a/noncore/net/mailit/maillist.h b/noncore/net/mailit/maillist.h deleted file mode 100644 index ec996df..0000000 --- a/noncore/net/mailit/maillist.h +++ b/dev/null @@ -1,50 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef MAILLIST_H -#define MAILLIST_H - -#include <qobject.h> -#include <qlist.h> - -struct dList{ - int serverId; - uint size; -}; - -class MailList : public QObject -{ - Q_OBJECT - -public: - void clear(); - int count(); - int* first(); - int* next(); - void sizeInsert(int serverId, uint size); - void moveFront(int serverId, uint size); - bool remove(int serverId, uint size); - void insert(int pos, int serverId, uint size); - -private: - QList<dList> sortedList; - uint currentPos; -}; - -#endif diff --git a/noncore/net/mailit/main.cpp b/noncore/net/mailit/main.cpp deleted file mode 100644 index 71f8877..0000000 --- a/noncore/net/mailit/main.cpp +++ b/dev/null @@ -1,25 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qpe/qpeapplication.h> -#include "mailitwindow.h" - -#include <opie/oapplicationfactory.h> - -OPIE_EXPORT_APP( OApplicationFactory<MailItWindow> )
\ No newline at end of file diff --git a/noncore/net/mailit/md5.c b/noncore/net/mailit/md5.c deleted file mode 100644 index 611f151..0000000 --- a/noncore/net/mailit/md5.c +++ b/dev/null @@ -1,251 +0,0 @@ -/* - * This code implements the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5Context structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - * - * Changed so as no longer to depend on Colin Plumb's `usual.h' header - * definitions; now uses stuff from dpkg's config.h. - * - Ian Jackson <ijackson@nyx.cs.du.edu>. - * Still in the public domain. - * - * md5_buffer added by Steven Fuller - * Still in the public domain. - */ - -#include <string.h> /* for memcpy() */ - -#include "md5.h" - -#ifdef WORDS_BIGENDIAN -void -byteSwap(UWORD32 *buf, unsigned words) -{ - md5byte *p = (md5byte *)buf; - - do { - *buf++ = (UWORD32)((unsigned)p[3] << 8 | p[2]) << 16 | - ((unsigned)p[1] << 8 | p[0]); - p += 4; - } while (--words); -} -#else -#define byteSwap(buf,words) -#endif - -/* md5_buffer frontend added for AvP */ -void md5_buffer(char const *buffer, unsigned int len, char *digest) -{ - struct MD5Context md5c; - - MD5Init(&md5c); - MD5Update(&md5c, (md5byte const *)buffer, len); - MD5Final((md5byte *)digest, &md5c); -} - -/* - * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious - * initialization constants. - */ -void -MD5Init(struct MD5Context *ctx) -{ - ctx->buf[0] = 0x67452301; - ctx->buf[1] = 0xefcdab89; - ctx->buf[2] = 0x98badcfe; - ctx->buf[3] = 0x10325476; - - ctx->bytes[0] = 0; - ctx->bytes[1] = 0; -} - -/* - * Update context to reflect the concatenation of another buffer full - * of bytes. - */ -void -MD5Update(struct MD5Context *ctx, md5byte const *buf, unsigned len) -{ - UWORD32 t; - - /* Update byte count */ - - t = ctx->bytes[0]; - if ((ctx->bytes[0] = t + len) < t) - ctx->bytes[1]++; /* Carry from low to high */ - - t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ - if (t > len) { - memcpy((md5byte *)ctx->in + 64 - t, buf, len); - return; - } - /* First chunk is an odd size */ - memcpy((md5byte *)ctx->in + 64 - t, buf, t); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - buf += t; - len -= t; - - /* Process data in 64-byte chunks */ - while (len >= 64) { - memcpy(ctx->in, buf, 64); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - buf += 64; - len -= 64; - } - - /* Handle any remaining bytes of data. */ - memcpy(ctx->in, buf, len); -} - -/* - * Final wrapup - pad to 64-byte boundary with the bit pattern - * 1 0* (64-bit count of bits processed, MSB-first) - */ -void -MD5Final(md5byte digest[16], struct MD5Context *ctx) -{ - int count = ctx->bytes[0] & 0x3f; /* Number of bytes in ctx->in */ - md5byte *p = (md5byte *)ctx->in + count; - - /* Set the first char of padding to 0x80. There is always room. */ - *p++ = 0x80; - - /* Bytes of padding needed to make 56 bytes (-8..55) */ - count = 56 - 1 - count; - - if (count < 0) { /* Padding forces an extra block */ - memset(p, 0, count + 8); - byteSwap(ctx->in, 16); - MD5Transform(ctx->buf, ctx->in); - p = (md5byte *)ctx->in; - count = 56; - } - memset(p, 0, count); - byteSwap(ctx->in, 14); - - /* Append length in bits and transform */ - ctx->in[14] = ctx->bytes[0] << 3; - ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29; - MD5Transform(ctx->buf, ctx->in); - - byteSwap(ctx->buf, 4); - memcpy(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ -} - -#ifndef ASM_MD5 - -/* The four core functions - F1 is optimized somewhat */ - -/* #define F1(x, y, z) (x & y | ~x & z) */ -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define F2(x, y, z) F1(z, x, y) -#define F3(x, y, z) (x ^ y ^ z) -#define F4(x, y, z) (y ^ (x | ~z)) - -/* This is the central step in the MD5 algorithm. */ -#define MD5STEP(f,w,x,y,z,in,s) \ - (w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x) - -/* - * The core of the MD5 algorithm, this alters an existing MD5 hash to - * reflect the addition of 16 longwords of new data. MD5Update blocks - * the data and converts bytes into longwords for this routine. - */ -void -MD5Transform(UWORD32 buf[4], UWORD32 const in[16]) -{ - register UWORD32 a, b, c, d; - - a = buf[0]; - b = buf[1]; - c = buf[2]; - d = buf[3]; - - MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); - MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); - MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); - MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); - MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); - MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); - MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); - MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); - MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); - MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); - MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); - MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); - MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); - MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); - MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); - MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); - - MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); - MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); - MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); - MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); - MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); - MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); - MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); - MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); - MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); - MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); - MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); - MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); - MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); - MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); - MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); - MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - - MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); - MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); - MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); - MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); - MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); - MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); - MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); - MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); - MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); - MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); - MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); - MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); - MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); - MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); - MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); - MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - - MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); - MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); - MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); - MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); - MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); - MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); - MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); - MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); - MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); - MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); - MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); - MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); - MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); - MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); - MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); - MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} - -#endif diff --git a/noncore/net/mailit/md5.h b/noncore/net/mailit/md5.h deleted file mode 100644 index 7e22494..0000000 --- a/noncore/net/mailit/md5.h +++ b/dev/null @@ -1,55 +0,0 @@ -/* - * This is the header file for the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5Context structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - * - * Changed so as no longer to depend on Colin Plumb's `usual.h' - * header definitions; now uses stuff from dpkg's config.h - * - Ian Jackson <ijackson@nyx.cs.du.edu>. - * Still in the public domain. - * - * md5_buffer added by Steven Fuller - * Still in the public domain. - */ - -#ifndef MD5_H -#define MD5_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned int UWORD32; - -#define md5byte unsigned char - -struct MD5Context { - UWORD32 buf[4]; - UWORD32 bytes[2]; - UWORD32 in[16]; -}; - -void MD5Init(struct MD5Context *context); -void MD5Update(struct MD5Context *context, md5byte const *buf, unsigned len); -void MD5Final(unsigned char digest[16], struct MD5Context *context); -void MD5Transform(UWORD32 buf[4], UWORD32 const in[16]); - -/* md5_buffer frontend added for AvP */ -void md5_buffer(char const *buffer, unsigned int len, char *digest); - -#ifdef __cplusplus -}; -#endif - -#endif /* !MD5_H */ diff --git a/noncore/net/mailit/opie-mailit.control b/noncore/net/mailit/opie-mailit.control deleted file mode 100644 index 3789016..0000000 --- a/noncore/net/mailit/opie-mailit.control +++ b/dev/null @@ -1,9 +0,0 @@ -Package: opie-mailit -Files: plugins/application/libmailit.so* bin/mailit apps/1Pim/mailit.desktop pics/mailit -Priority: optional -Section: opie/pim -Maintainer: L.J. Potter <llornkcor@handhelds.org> -Architecture: arm -Version: $QPE_VERSION$EXTRAVERSION -Description: EMail - A simple POP3 email client for the Opie environment. diff --git a/noncore/net/mailit/popclient.cpp b/noncore/net/mailit/popclient.cpp deleted file mode 100644 index 1df6b2b..0000000 --- a/noncore/net/mailit/popclient.cpp +++ b/dev/null @@ -1,332 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 "popclient.h" -#include "emailhandler.h" -//#define APOP_TEST - -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; - synchronize = FALSE; - lastSync = 0; - headerLimit = 0; - mailList = 0; - preview = FALSE; -} - -PopClient::~PopClient() -{ - delete socket; - delete stream; -} - -void PopClient::newConnection(const QString &target, int port) -{ - if (receiving) { - qWarning("socket in use, connection refused"); - return; - } - - status = Init; - - socket->connectToHost(target, port); - receiving = TRUE; - //selected = FALSE; - - emit updateStatus(tr("DNS lookup")); -} - -void PopClient::setAccount(const QString &popUser, const QString &popPasswd) -{ - popUserName = popUser; - popPassword = popPasswd; -} - -void PopClient::setSynchronize(int lastCount) -{ - synchronize = TRUE; - lastSync = lastCount; -} - -void PopClient::removeSynchronize() -{ - synchronize = FALSE; - lastSync = 0; -} - -void PopClient::headersOnly(bool headers, int limit) -{ - preview = headers; - headerLimit = limit; -} - -void PopClient::setSelectedMails(MailList *list) -{ - selected = TRUE; - mailList = list; -} - -void PopClient::connectionEstablished() -{ - emit updateStatus(tr("Connection established")); -} - -void PopClient::errorHandling(int status) -{ - errorHandlingWithMsg( status, QString::null ); -} -void PopClient::errorHandlingWithMsg(int status, const QString & Msg ) -{ - emit updateStatus(tr("Error Occured")); - emit errorOccurred(status, Msg); - socket->close(); - receiving = FALSE; -} - -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); - if( start >= 0 && end > start ) - { - timeStamp = response.mid( start , end - start + 1); - md5Source = timeStamp + popPassword; - - md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]); - - for(int j =0;j < MD5_DIGEST_LENGTH ;j++) - { - printf("%x", md5Digest[j]); - } - printf("\n"); -// qDebug(md5Digest); - *stream << "APOP " << popUserName << " " << md5Digest << "\r\n"; - // qDebug("%s", stream); - status = Stat; - } - else -#endif - { - timeStamp = ""; - *stream << "USER " << popUserName << "\r\n"; - status = Pass; - } - - 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 errorHandlingWithMsg(ErrLoginFailed, response); - break; - } - //get count of messages, eg "+OK 4 900.." -> int 4 - case Mcnt: { - if (response[0] == '+') { - temp = response.replace(0, 4, ""); - int x = temp.find(" ", 0); - temp.truncate((uint) x); - newMessages = temp.toInt(); - messageCount = 1; - status = List; - - if (synchronize) { - //messages deleted from server, reload all - if (newMessages < lastSync) - lastSync = 0; - messageCount = 1; - } - - if (selected && mailList ) { - int *ptr = mailList->first(); - if (ptr != 0) { - newMessages++; //to ensure no early jumpout - messageCount = *ptr; - } else newMessages = 0; - } - - } else errorHandlingWithMsg(ErrUnknownResponse, response); - } - //Read message number x, count upwards to messageCount - case List: { - if (messageCount <= newMessages) { - *stream << "LIST " << messageCount << "\r\n"; - status = Size; - temp2.setNum(newMessages - lastSync); - temp.setNum(messageCount - lastSync); - if (!selected) { - emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); - } else { - //completing a previously closed transfer - /* if ( (messageCount - lastSync) <= 0) { - temp.setNum(messageCount); - emit updateStatus(tr("Previous message ") + temp); - } else {*/ - emit updateStatus(tr("Completing message ") + temp); - //} - } - break; - } else { - emit updateStatus(tr("No new Messages")); - status = Quit; - } - } - //get size of message, eg "500 characters in message.." -> int 500 - case Size: { - if (status != Quit) { //because of idiotic switch - if (response[0] == '+') { - temp = response.replace(0, 4, ""); - int x = temp.find(" ", 0); - temp = temp.right(temp.length() - ((uint) x + 1) ); - mailSize = temp.toInt(); - emit currentMailSize(mailSize); - - status = Retr; - } else { - //qWarning(response); - errorHandlingWithMsg(ErrUnknownResponse, response); - } - } - } - //Read message number x, count upwards to messageCount - case Retr: { - if (status != Quit) { - if ((selected)||(mailSize <= headerLimit)) - { - *stream << "RETR " << messageCount << "\r\n"; - } else { //only header - *stream << "TOP " << messageCount << " 0\r\n"; - } - messageCount++; - status = Ignore; - break; - } } - case Ignore: { - if (status != Quit) { //because of idiotic switch - if (response[0] == '+') { - message = ""; - status = Read; - if (!socket->canReadLine()) //sync. problems - break; - response = socket->readLine(); - } else errorHandlingWithMsg(ErrUnknownResponse, response); - } - } - //add all incoming lines to body. When size is reached, send - //message, and go back to read new message - case Read: { - if (status != Quit) { //because of idiotic switch - message += response; - while ( socket->canReadLine() ) { - 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 ? - { - status = Quit; - if (selected) { //grab next from queue - newMessages--; - status = Quit; - } - } - else - { - *stream << "LIST " << messageCount << "\r\n"; - status = Size; - temp2.setNum(newMessages - lastSync); - temp.setNum(messageCount - lastSync); - emit updateStatus(tr("Retrieving ") + temp + "/" + temp2); - - break; - } - } - } - if (status != Quit) - break; - } - case Quit: { - *stream << "Quit\r\n"; - status = Done; - int newM = newMessages - lastSync; - if (newM > 0) { - temp.setNum(newM); - emit updateStatus(temp + tr(" new messages")); - } else { - emit updateStatus(tr("No new messages")); - } - - socket->close(); - receiving = FALSE; - emit mailTransfered(newM); - break; - } - } - -} diff --git a/noncore/net/mailit/popclient.h b/noncore/net/mailit/popclient.h deleted file mode 100644 index 6774ceb..0000000 --- a/noncore/net/mailit/popclient.h +++ b/dev/null @@ -1,77 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef PopClient_H -#define PopClient_H - -#include <stdio.h> -#include <qsocket.h> -#include <qstring.h> -#include <qobject.h> -#include <qtextstream.h> -#include <qlist.h> -#include "maillist.h" - -class PopClient: public QObject -{ - Q_OBJECT - -public: - PopClient(); - ~PopClient(); - void newConnection(const QString &target, int port); - void setAccount(const QString &popUser, const QString &popPasswd); - void setSynchronize(int lastCount); - void removeSynchronize(); - void headersOnly(bool headers, int limit); - void setSelectedMails(MailList *list); - -signals: - void newMessage(const QString &, int, uint, bool); - void errorOccurred(int status, const QString & Msg ); - void updateStatus(const QString &); - void mailTransfered(int); - void mailboxSize(int); - void currentMailSize(int); - void downloadedSize(int); - -public slots: - void errorHandling(int); - void errorHandlingWithMsg(int, const QString & ); - -protected slots: - void connectionEstablished(); - void incomingData(); - -private: - QSocket *socket; - QTextStream *stream; - enum transferStatus - { - Init, Pass, Stat, Mcnt, Read, List, Size, Retr, Acks, - Quit, Done, Ignore - }; - int status, lastSync; - int messageCount, newMessages, mailSize, headerLimit; - bool receiving, synchronize, preview, selected; - QString popUserName, popPassword, message; - MailList *mailList; -}; - -#endif diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp deleted file mode 100644 index 1682675..0000000 --- a/noncore/net/mailit/readmail.cpp +++ b/dev/null @@ -1,399 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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(); - viewAtt = new ViewAtt(0, "View Attatchments"); -} - -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); - - 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")); - - - 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 ); - connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) ); - nextButton->addTo(bar); - nextButton->addTo(viewMenu); - previousButton->setWhatsThis(tr("Read the next mail in the list")); - - attachmentButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 ); - connect( attachmentButton, SIGNAL( activated() ), this, - SLOT( viewAttachments() ) ); - attachmentButton->addTo(bar); - attachmentButton->addTo(viewMenu); - attachmentButton->setWhatsThis(tr("Click here to add attachments to your mail")); - - plainTextButton = new QAction( tr( "Text Format" ), Resource::loadPixmap( "DocsIcon" ), QString::null, 0, this, 0, TRUE); - 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())); - - emailView = new QTextView( this, "emailView" ); - - setCentralWidget(emailView); - - mime = new QMimeSourceFactory(); - emailView->setMimeSourceFactory(mime); -} - -void ReadMail::updateView() -{ - Enclosure *ePtr; - QString mailStringSize; - QString text, temp; - - mail->read = TRUE; //mark as read - inbox = mail->received; - - replyButton->setEnabled(false); - /*replyButton->removeFrom(bar); - forwardButton->removeFrom(mailMenu); - forwardButton->removeFrom(bar);*/ - downloadButton->removeFrom(bar); - - //downloadButton->setEnabled(!mail->downloaded); - - - if (inbox == TRUE) { - replyButton->setEnabled(true); - /*replyButton->addTo(mailMenu); - forwardButton->addTo(bar); - 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"; - } else if (mailSize < 1024*1024) { - mailStringSize.setNum( (mailSize / 1024), 'g', 2 ); - mailStringSize += " Kb"; - } else { - mailStringSize.setNum( (mailSize / (1024*1024)), 'g', 3); - mailStringSize += " Mb"; - } - } - } - - QMimeSourceFactory *mime = emailView->mimeSourceFactory(); - - if (! plainTxt) { //use RichText, inline pics etc. - emailView->setTextFormat(QTextView::RichText); - text = "<b><big><center><font color=\"blue\">" + mail->subject - +"</font></center></big></b><br>"; - text += "<b>From: </b>" + mail->from + " <i>" + - mail->fromMail + "</i><br>"; - - text +="<b>To: </b>"; - for (QStringList::Iterator it = mail->recipients.begin(); - it != mail->recipients.end(); ++it ) { - text += *it + " "; - } - - text +="<br><b>CC: </b>"; - for (QStringList::Iterator it = mail->carbonCopies.begin(); - it != mail->carbonCopies.end(); ++it ) { - text += *it + " "; - } - - text += "<br>" + mail->date; - - if (mail->files.count() > 0) { - text += "<br><b>Attatchments: </b>"; - - for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { - text += ePtr->originalName + " "; - } - text += "<hr><br>" + mail->body; - - if (inbox) { - for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { - - text += "<br><hr><b>Attatchment: </b>" + - ePtr->originalName + "<hr>"; - - if (ePtr->contentType == "TEXT") { - QFile f(ePtr->path + ePtr->name); - - if (f.open(IO_ReadOnly) ) { - QTextStream t(&f); - temp = t.read(); - text += temp + "<br>"; - f.close(); - } else { - text += "<b>Could not locate file</b><br>"; - } - - } - if (ePtr->contentType == "IMAGE") { -// temp.setNum(emailView->width()); //get display width -// text += "<img width=" + temp +" src =""" + -// ePtr->originalName + """> </img>"; - text += "<img src =""" + - ePtr->originalName + """> </img>"; - mime->setPixmap(ePtr->originalName, QPixmap( (ePtr->path + ePtr->name) )); - } - } - } - } else { - if (mail->downloaded || !inbox) { - text += "<hr><br>" + mail->body; - } else { - text += "<hr><br><b> Awaiting download </b><br>"; - text += "Size of mail: " + mailStringSize; - } - } - emailView->setText(text); - } else { // show plain txt mail - emailView->setTextFormat(QTextView::PlainText); - text = "Subject: " + mail->subject + "\n"; - text += "From: " + mail->from + " " + mail->fromMail + "\n"; - text += "To: "; - for (QStringList::Iterator it = mail->recipients.begin(); - it != mail->recipients.end(); ++it ) { - text += *it + " "; - } - - text += "\nCC: "; - for (QStringList::Iterator it = mail->carbonCopies.begin(); - it != mail->carbonCopies.end(); ++it ) { - text += *it + " "; - } - - - text += "\nDate: " + mail->date + "\n"; - if (mail->files.count() > 0) { - text += "Attatchments: "; - for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { - text += ePtr->originalName + " "; - } - text += "\n\n"; - } else text += "\n"; - - if (!inbox) { - text += mail->body; - } else if (mail->downloaded) { - text += mail->bodyPlain; - } else { - text += "\nAwaiting download\n"; - text += "Size of mail: " + mailStringSize; - } - - emailView->setText(text); - } - - if (mail->files.count() == 0) - attachmentButton->setEnabled(FALSE); - else attachmentButton->setEnabled(TRUE); - - setCaption("Examining mail: " + mail->subject); -} - -//update view with current EmailListItem (item) -void ReadMail::update(QListView *thisView, Email *mailIn) -{ - view = thisView; - item = (EmailListItem *) view->selectedItem(); - mail = mailIn; - updateView(); - updateButtons(); -} - -void ReadMail::mailUpdated(Email *mailIn) -{ - if (mailIn == mail) { - updateView(); - } else { - updateButtons(); - } -} - -void ReadMail::close() -{ - emit cancelView(); -} - -//gets next item in listview, exits if there is no next -void ReadMail::next() -{ - item = (EmailListItem *) item->nextSibling(); - if (item != NULL) { - mail = item->getMail(); - updateView(); - } - updateButtons(); -} - -//gets previous item in listview, exits if there is no previous -void ReadMail::previous() -{ - item = (EmailListItem *) item->itemAbove(); - if (item != NULL) { - mail = item->getMail(); - updateView(); - } - updateButtons(); -} - -//deletes item, tries bringing up next or previous, exits if unsucessful -void ReadMail::deleteItem() -{ - EmailListItem *temp = item; - temp = (EmailListItem *) item->nextSibling(); //trybelow - if (temp == NULL) - temp = (EmailListItem *) item->itemAbove(); //try above - - emit removeItem(item, inbox); - - item = temp; - if (item != NULL) { //more items in list - mail = item->getMail(); - updateView(); - updateButtons(); - } else close(); //no more items to see -} - -void ReadMail::updateButtons() -{ - EmailListItem *temp; - - temp = item; - if ((EmailListItem *) temp->nextSibling() == NULL) - nextButton->setEnabled(FALSE); - else nextButton->setEnabled(TRUE); - - temp = item; - if ((EmailListItem *) temp->itemAbove() == NULL) - previousButton->setEnabled(FALSE); - else previousButton->setEnabled(TRUE); -} - -void ReadMail::shiftText() -{ - plainTxt = ! plainTxt; - updateView(); -} - -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 deleted file mode 100644 index 6700595..0000000 --- a/noncore/net/mailit/readmail.h +++ b/dev/null @@ -1,95 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef READMAIL_H -#define READMAIL_H - -#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 - -public: - ReadMail( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); - ~ReadMail(); - void update(QListView *thisView, Email *mailIn); - void updateView(); - 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; - bool plainTxt, inbox; - Email *mail; - ViewAtt *viewAtt; - - QToolBar *bar; - QMenuBar *menu; - QPopupMenu *viewMenu, *mailMenu; - QAction *deleteButton; - QMimeSourceFactory *mime; - QAction *plainTextButton; - QAction *nextButton; - QTextView *emailView; - QAction *attachmentButton; - QAction *previousButton; - QToolButton *replyButton; - QAction *forwardButton; - QAction *replyAllButton; - QAction *downloadButton; -}; - -#endif // READMAIL_H diff --git a/noncore/net/mailit/smtpclient.cpp b/noncore/net/mailit/smtpclient.cpp deleted file mode 100644 index 51ca50b..0000000 --- a/noncore/net/mailit/smtpclient.cpp +++ b/dev/null @@ -1,170 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 "smtpclient.h" -#include "emailhandler.h" - -SmtpClient::SmtpClient() -{ - socket = new QSocket(this, "smtpClient"); - stream = new QTextStream(socket); - mailList.setAutoDelete(TRUE); - - connect(socket, SIGNAL(error(int)), this, SLOT(errorHandling(int))); - connect(socket, SIGNAL(connected()), this, SLOT(connectionEstablished())); - connect(socket, SIGNAL(readyRead()), this, SLOT(incomingData())); - - sending = FALSE; -} - -SmtpClient::~SmtpClient() -{ - delete socket; - delete stream; -} - -void SmtpClient::newConnection(const QString &target, int port) -{ - if (sending) { - qWarning("socket in use, connection refused"); - return; - } - - status = Init; - sending = TRUE; - socket->connectToHost(target, port); - - emit updateStatus(tr("DNS lookup")); -} - -void SmtpClient::addMail(const QString &from, const QString &subject, const QStringList &to, const QString &body) -{ - RawEmail *mail = new RawEmail; - - mail->from = from; - mail->subject = subject; - mail->to = to; - mail->body = body; - - mailList.append(mail); -} - -void SmtpClient::connectionEstablished() -{ - emit updateStatus(tr("Connection established")); - -} - -void SmtpClient::errorHandling(int status) -{ - errorHandlingWithMsg( status, QString::null ); -} - -void SmtpClient::errorHandlingWithMsg(int status, const QString & EMsg ) -{ - emit errorOccurred(status, EMsg ); - socket->close(); - mailList.clear(); - sending = FALSE; -} - -void SmtpClient::incomingData() -{ - QString response; - - if (!socket->canReadLine()) - return; - - response = socket->readLine(); - switch(status) { - case Init: { - if (response[0] == '2') { - status = From; - mailPtr = mailList.first(); - *stream << "HELO there\r\n"; - } else errorHandlingWithMsg(ErrUnknownResponse,response); - break; - } - case From: { - if (response[0] == '2') { - qDebug(mailPtr->from); - *stream << "MAIL FROM: " << mailPtr->from << "\r\n"; - status = Recv; - } else errorHandlingWithMsg(ErrUnknownResponse, response ); - break; - } - case Recv: { - if (response[0] == '2') { - it = mailPtr->to.begin(); - if (it == NULL) { - errorHandlingWithMsg(ErrUnknownResponse,response); - } - *stream << "RCPT TO: " << *it << "\r\n"; - status = MRcv; - } else errorHandlingWithMsg(ErrUnknownResponse,response); - break; - } - case MRcv: { - if (response[0] == '2') { - it++; - if ( it != mailPtr->to.end() ) { - *stream << "RCPT TO: " << *it << "\r\n"; - break; - } else { - status = Data; - } - } else errorHandlingWithMsg(ErrUnknownResponse,response); - } - case Data: { - if (response[0] == '2') { - *stream << "DATA\r\n"; - status = Body; - emit updateStatus(tr("Sending: ") + mailPtr->subject); - - } else errorHandlingWithMsg(ErrUnknownResponse,response); - break; - } - case Body: { - if (response[0] == '3') { - *stream << mailPtr->body << "\r\n.\r\n"; - mailPtr = mailList.next(); - if (mailPtr != NULL) { - status = From; - } else { - status = Quit; - } - } else errorHandlingWithMsg(ErrUnknownResponse,response); - break; - } - case Quit: { - if (response[0] == '2') { - *stream << "QUIT\r\n"; - status = Done; - QString temp; - temp.setNum(mailList.count()); - emit updateStatus(tr("Sent ") + temp + tr(" messages")); - emit mailSent(); - mailList.clear(); - sending = FALSE; - socket->close(); - } else errorHandlingWithMsg(ErrUnknownResponse,response); - break; - } - } -} diff --git a/noncore/net/mailit/smtpclient.h b/noncore/net/mailit/smtpclient.h deleted file mode 100644 index 554ba3f..0000000 --- a/noncore/net/mailit/smtpclient.h +++ b/dev/null @@ -1,76 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef SmtpClient_H -#define SmtpClient_H - -//#include <stdio.h> -#include <qsocket.h> -#include <qstring.h> -#include <qobject.h> -#include <qtextstream.h> -#include <qstringlist.h> -#include <qlist.h> - -struct RawEmail -{ - QString from; - QString subject; - QStringList to; - QString body; -}; - -class SmtpClient: public QObject -{ - Q_OBJECT - -public: - SmtpClient(); - ~SmtpClient(); - void newConnection(const QString &target, int port); - void addMail(const QString &from, const QString &subject, const QStringList &to, const QString &body); - -signals: - void errorOccurred(int, const QString & LR ); - void updateStatus(const QString &); - void mailSent(); - -public slots: - void errorHandling(int); - void errorHandlingWithMsg(int, const QString & LastResponse ); - -protected slots: - void connectionEstablished(); - void incomingData(); - -private: - QSocket *socket; - QTextStream *stream; - enum transferStatus - { - Init, From, Recv, MRcv, Data, Body, Quit, Done - }; - int status; - QList<RawEmail> mailList; - RawEmail *mailPtr; - bool sending; - QStringList::Iterator it; -}; - -#endif diff --git a/noncore/net/mailit/textparser.cpp b/noncore/net/mailit/textparser.cpp deleted file mode 100644 index e5c9f7c..0000000 --- a/noncore/net/mailit/textparser.cpp +++ b/dev/null @@ -1,304 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 "textparser.h" - -TextParser::TextParser(const QString &in, const QString &lineBreak) -{ - data = in; - lineSep = lineBreak; - - init(); - createSeparators(); - split(); -} - -TextParser::TextParser(const QString &in, const QString &lineBreak, const QString &sep) -{ - data = in; - lineSep = lineBreak; - - init(); - separators = sep; - split(); -} - -void TextParser::init() -{ - lineCount = 0; - linePos = 0; - totalElmCount = 0; - separatorPos = -1; //not initialized - wordPos = -1; //not initialized - sepAtLine = 0; - sepAtPosElm = -1; //such that nextSep equals 0 - wordAtLine = 0; - wordAtPosElm = -1; //such that nextWord equals 0 - atLine = 0; - atPosElm = 0; -} - -void TextParser::createSeparators() -{ - separators = " @#,.:;<>*/(){}|'?-+=_"; -} - -/* Returns pos of given search criteria, -1 if not found */ -int TextParser::find(const QString &target, QChar sep, int pos, bool upperCase) -{ - - t_splitElm parsstr; - QString pString, pTarget; - pTarget = target; - int atLine = 0, atPosElm = 0; - - getLineReference(pos,&atLine,&atPosElm); - - for (int x = pos; x < totalElmCount; x++) - { - parsstr=splitDone[atLine].elm[atPosElm++]; - - if (upperCase) - { - pString=parsstr.str.upper(); - pTarget=pTarget.upper(); - } - else - { - pString=parsstr.str; - } - if ((pString == pTarget) && (parsstr.separator == sep)) - { - return x; - } - if (atPosElm >= splitDone[atLine].elmCount) - { //new Line - atLine++; - atPosElm = 0; - } - } - return -1; -} - -int TextParser::elmCount() -{ - return totalElmCount; -} - -QChar TextParser::separatorAt(int pos) -{ - if (getLineReference(pos, &sepAtLine, &sepAtPosElm) == -1) - return QChar::null; - - separatorPos = pos; - return splitDone[sepAtLine].elm[sepAtPosElm].separator; -} - -QChar TextParser::nextSeparator() -{ - sepAtPosElm++; - if (splitDone[sepAtLine].elmCount <= sepAtPosElm) { - sepAtLine++; - sepAtPosElm = 0; - } - - separatorPos++; - return splitDone[sepAtLine].elm[sepAtPosElm].separator; -} - -bool TextParser::hasNextSeparator() -{ - return ((separatorPos+1) < totalElmCount); -} - -QString TextParser::wordAt(int pos) -{ - if (getLineReference(pos, &wordAtLine, &wordAtPosElm) == -1) - return NULL; - - wordPos = pos; - return splitDone[wordAtLine].elm[wordAtPosElm].str; -} - -QString TextParser::nextWord() -{ - wordAtPosElm++; - if (splitDone[wordAtLine].elmCount <= wordAtPosElm) { - wordAtLine++; - wordAtPosElm = 0; - } - - wordPos++; - return splitDone[wordAtLine].elm[wordAtPosElm].str; -} - -bool TextParser::hasNextWord() -{ - return ((wordPos + 1) < totalElmCount); -} - -QString TextParser::getString(int *pos, QChar stop, bool lineEnd = false) -{ - QString returnStr = wordAt(*pos); - QChar chr = separatorAt(*pos); - QString s; - - if (returnStr == "") - return ""; - if (chr == stop) - return returnStr; - - if (!lineEnd) { - while ((chr != stop) && hasNextWord()) { - returnStr.append(chr); - returnStr += nextWord(); - chr = nextSeparator(); - } - } else { //copy from pos to end of line - getLineReference(*pos, &atLine, &atPosElm); - returnStr = ""; - while (atPosElm < splitDone[atLine].elmCount) { - if (splitDone[atLine].elm[atPosElm].str != "") { - returnStr += splitDone[atLine].elm[atPosElm].str; - } - chr = splitDone[atLine].elm[atPosElm].separator; - if (!chr.isNull() && (int) chr != 0) { - returnStr.append(splitDone[atLine].elm[atPosElm].separator); - } - atPosElm++; - } - } - - *pos = wordPos; - return returnStr; -} - -QString TextParser::getNextLine() -{ - atLine++; - atPosElm = 0; - if (atLine < lineCount) - return splitDone[atLine].str; - return ""; -} - -bool TextParser::hasNextLine() -{ - if (atLine+1 < lineCount) - return TRUE;; - return FALSE; -} - -int TextParser::endLinePos(int pos) -{ - if ( (getLineReference(pos, &atLine, &atPosElm)) == -1) - return -1; - - return (pos + (splitDone[atLine].elmCount - atPosElm) + 1); -} - -int TextParser::getLineReference(int pos, int *line, int *inLinePos) -{ - int currentPos = 0; - - for (int x = 0; x < lineCount; x++) { - if ( currentPos + splitDone[x].elmCount > pos) { - *line = x; - *inLinePos = pos - currentPos; - return 0; //pos found okay - } - currentPos += splitDone[x].elmCount; - } - return -1; //no reference found -} - -void TextParser::split() -{ - t_splitLine newLine; - - while ((uint) linePos < data.length()) { - newLine = nextLine(); - splitDone[lineCount] = splitLine(newLine); - totalElmCount += splitDone[lineCount].elmCount; - lineCount++; - } -} - -t_splitLine TextParser::splitLine(t_splitLine line) -{ - uint pos = 0; - uint elmCount = 0; - t_splitLine tempLine = line; - - tempLine.str = line.str.simplifyWhiteSpace(); - tempLine.elm[0].str = ""; - while ( pos < line.str.length() ) { - if ( isSeparator(tempLine.str[pos]) ) { - tempLine.elm[elmCount].separator = tempLine.str[pos]; - elmCount++; - pos++; - while (tempLine.str[pos] == ' ') - pos++; - if (pos > line.str.length()) - elmCount--; - tempLine.elm[elmCount].str = ""; - } else { - if (!tempLine.str[pos].isNull()) - tempLine.elm[elmCount].str += tempLine.str[pos]; - pos++; - } - } - - tempLine.elmCount = elmCount + 1; - return tempLine; -} - -bool TextParser::isSeparator(QChar chr) -{ - for (uint x = 0; x < separators.length(); x++) { - if (chr == separators[x]) - return true; - } - return false; -} - -t_splitLine TextParser::nextLine() -{ - int newLinePos; - t_splitLine lineType; - - newLinePos = data.find(lineSep, linePos); - - lineType.lineType = NewLine; - lineType.str = ""; - - if (newLinePos == -1) { - newLinePos = data.length(); - lineType.lineType = LastLine; - } - - for (int x = linePos; x < newLinePos; x++) - lineType.str += data[x]; - - linePos = newLinePos; - if ((uint) linePos < data.length()) //if not EOF, add length of lineSep - linePos += lineSep.length(); - - return lineType; -} diff --git a/noncore/net/mailit/textparser.h b/noncore/net/mailit/textparser.h deleted file mode 100644 index 03bb6d5..0000000 --- a/noncore/net/mailit/textparser.h +++ b/dev/null @@ -1,85 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qobject.h> -#include <qstring.h> - -#ifndef TEXTPARSER_H -#define TEXTPARSER_H - -enum t_strType { Word, Number}; -enum t_lineType {NewLine, LastLine}; - -const uint MAX_ELEMENTS = 200; //Should be dynamic -const uint MAX_LINES = 500; //Should be dynamic - -struct t_splitElm -{ - QChar separator; - int strType; - QString str; -}; - -struct t_splitLine -{ - t_lineType lineType; - QString str; //a bit redundant... - t_splitElm elm[MAX_ELEMENTS]; - int elmCount; -}; - -class TextParser: public QObject -{ - Q_OBJECT - -public: - TextParser(const QString &in, const QString &lineBreak); - TextParser(const QString &in, const QString &lineBreak, const QString &sep); - int find(const QString &target, QChar sep, int pos, bool upperCase); - int elmCount(); - QChar separatorAt(int pos); - QChar nextSeparator(); - bool hasNextSeparator(); - QString wordAt(int pos); - QString nextWord(); - bool hasNextWord(); - QString getString(int *pos, QChar stop, bool lineEnd); - QString getNextLine(); - bool hasNextLine(); - int endLinePos(int pos); - -private: - void init(); - void createSeparators(); - t_splitLine nextLine(); - void split(); - t_splitLine splitLine(t_splitLine line); - bool isSeparator(QChar chr); - t_splitLine splitDone[MAX_LINES]; - int getLineReference(int pos, int *line, int *inLinePos); - - int lineCount, linePos, totalElmCount; - int separatorPos, wordPos; - QString data, separators, lineSep; - int sepAtLine, sepAtPosElm; - int wordAtLine, wordAtPosElm; - int atLine, atPosElm; -}; - -#endif diff --git a/noncore/net/mailit/viewatt.cpp b/noncore/net/mailit/viewatt.cpp deleted file mode 100644 index 3515ba5..0000000 --- a/noncore/net/mailit/viewatt.cpp +++ b/dev/null @@ -1,121 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <qpe/resource.h> -#include "viewatt.h" -#include <qwhatsthis.h> -#include <qpe/applnk.h> -#include <qpe/mimetype.h> - -ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f) - : QMainWindow(parent, name, f) -{ - setCaption(tr("Exploring attatchments")); - - setToolBarsMovable( FALSE ); - bar = new QToolBar(this); - installButton = new QAction( tr( "Install" ), Resource::loadPixmap( "exec" ), QString::null, CTRL + Key_C, this, 0 ); - connect(installButton, SIGNAL(activated()), this, SLOT(install()) ); - installButton->setWhatsThis(tr("Click here to install the attachment to your Documents")); - - listView = new QListView(this, "AttView"); - listView->addColumn( tr("Attatchment") ); - listView->addColumn( tr("Type") ); - listView->addColumn( tr("Installed") ); - setCentralWidget(listView); - QWhatsThis::add(listView,QWidget::tr("This is an overview about all attachments in the mail")); -} - -void ViewAtt::update(Email *mailIn, bool inbox) -{ - QListViewItem *item; - Enclosure *ePtr; - - - - listView->clear(); - if (inbox) { - bar->clear(); - installButton->addTo( bar ); - bar->show(); - } else { - bar->hide(); - } - - mail = mailIn; - for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { - - QString isInstalled = tr("No"); - if (ePtr->installed) - isInstalled = tr("Yes"); - item = new QListViewItem(listView, ePtr->originalName, ePtr->contentType, isInstalled); - - const QString& mtypeDef=(const QString&) ePtr->contentType+"/"+ePtr->contentAttribute; - - MimeType mt(mtypeDef); - - item->setPixmap(0, mt.pixmap()); - - /* - if (ePtr->contentType == "TEXT") { - actions = new QAction( tr("View"), Resource::loadPixmap("TextEditor"), QString::null, CTRL + Key_C, this, 0); - actions->addTo(bar); - } - if (ePtr->contentType == "AUDIO") { - actions = new QAction( tr("Play"), Resource::loadPixmap("SoundPlayer"), QString::null, CTRL + Key_C, this, 0); - actions->addTo(bar); - item->setPixmap(0, Resource::loadPixmap("play")); - } - if (ePtr->contentType == "IMAGE") { - actions = new QAction( tr("Show"), Resource::loadPixmap("pixmap"), QString::null, CTRL + Key_C, this, 0); - actions->addTo(bar); - item->setPixmap(0, Resource::loadPixmap("pixmap")); - }*/ - } -} - -void ViewAtt::install() -{ - Enclosure *ePtr, *selPtr; - QListViewItem *item; - QString filename; - DocLnk d; - - item = listView->selectedItem(); - if (item != NULL) { - filename = item->text(0); - selPtr = NULL; - for ( ePtr=mail->files.first(); ePtr != 0; ePtr=mail->files.next() ) { - if (ePtr->originalName == filename) - selPtr = ePtr; - } - - if (selPtr == NULL) { - qWarning("Internal error, file is not installed to documents"); - return; - } - - d.setName(selPtr->originalName); - d.setFile(selPtr->path + selPtr->name); - d.setType(selPtr->contentType + "/" + selPtr->contentAttribute); - d.writeLink(); - selPtr->installed = TRUE; - item->setText(2, tr("Yes")); - } -} diff --git a/noncore/net/mailit/viewatt.h b/noncore/net/mailit/viewatt.h deleted file mode 100644 index 9e43407..0000000 --- a/noncore/net/mailit/viewatt.h +++ b/dev/null @@ -1,46 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef VIEWATT_H -#define VIEWATT_H - -#include <qmainwindow.h> -#include <qtoolbar.h> -#include <qaction.h> -#include <qlistview.h> -#include "emailhandler.h" - -class ViewAtt : public QMainWindow -{ - Q_OBJECT - -public: - ViewAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0); - void update(Email *mailIn, bool inbox); - -public slots: - void install(); - -private: - QListView *listView; - QToolBar *bar; - QAction *installButton, *actions; - Email *mail; -}; -#endif diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp deleted file mode 100644 index 26b9660..0000000 --- a/noncore/net/mailit/writemail.cpp +++ b/dev/null @@ -1,402 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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 <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 ) -{ - showingAddressList = FALSE; - init(); - - addAtt = new AddAtt(0, "Add Attachments"); -} - -WriteMail::~WriteMail() -{ - delete addAtt; -} - -void WriteMail::setAddressList(AddressList *list) -{ - AContact *cPtr; - - addressList = list; - - addressView->clear(); - QList<AContact> *cListPtr = addressList->getContactList(); - QListViewItem *item; - for (cPtr = cListPtr->first(); cPtr != 0; cPtr = cListPtr->next() ) { - item = new QListViewItem(addressView, cPtr->name, cPtr->email); - } -} - -void WriteMail::init() -{ - setToolBarsMovable(FALSE); - - bar = new QToolBar(this); - bar->setHorizontalStretchable( TRUE ); - - menu = new QMenuBar( bar ); - - mailMenu = new QPopupMenu(menu); - menu->insertItem( tr( "&Mail" ), mailMenu); - addMenu = new QPopupMenu(menu); - menu->insertItem( tr( "&Add" ), addMenu); - - bar = new QToolBar(this); - attachButton = new QAction(tr("Attachment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0); - attachButton->addTo(bar); - attachButton->addTo(addMenu); - connect( attachButton, SIGNAL( activated() ), this, SLOT( attachFile() ) ); - attachButton->setWhatsThis(tr("Click here to attach files to your mail")); - - confirmButton = new QAction(tr("Enque mail"), Resource::loadPixmap("OKButton"), QString::null, 0, this, 0); - confirmButton->addTo(bar); - confirmButton->addTo(mailMenu); - connect( confirmButton, SIGNAL( activated() ), this, SLOT( accept() ) ); - confirmButton->setWhatsThis(tr("This button puts your mail in the send queue")); - - newButton = new QAction(tr("New mail"), Resource::loadPixmap("new"), QString::null, 0, this, 0); - newButton->addTo(mailMenu); - connect( newButton, SIGNAL( activated() ), this, SLOT( newMail() ) ); - newButton->setWhatsThis(tr("Click here to create a new mail")); - - widget = new QWidget(this, "widget"); - grid = new QGridLayout( widget ); - - recipientsBox = new QComboBox( FALSE, widget, "toLabel" ); - recipientsBox->insertItem( tr( "To:" ) ); - recipientsBox->insertItem( tr( "CC:" ) ); - recipientsBox->setCurrentItem(0); - grid->addWidget( recipientsBox, 0, 0 ); - connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int))); - - subjetLabel = new QLabel( widget, "subjetLabel" ); - subjetLabel->setText( tr( "Subject:" ) ); - - grid->addWidget( subjetLabel, 1, 0 ); - - ToolButton13_2 = new QToolButton( widget, "ToolButton13_2" ); - ToolButton13_2->setText( tr( "..." ) ); - grid->addWidget( ToolButton13_2, 1, 2 ); - - subjectInput = new QLineEdit( widget, "subjectInput" ); - grid->addWidget( subjectInput, 1, 1 ); - QWhatsThis::add(subjectInput,QWidget::tr("The mail subject should be entered here")); - - toInput = new QLineEdit( widget, "toInput" ); - grid->addWidget( toInput, 0, 1 ); - QWhatsThis::add(recipientsBox,QWidget::tr("Recipients can be entered here")); - - ccInput = new QLineEdit( widget, "ccInput" ); - ccInput->hide(); - grid->addWidget( ccInput, 0, 1 ); - QWhatsThis::add(ccInput,QWidget::tr("If you would like to send copies of your mail they can be entered here")); - - addressButton = new QToolButton( widget, "addressButton" ); - addressButton->setPixmap( Resource::loadPixmap("AddressBook") ); - addressButton->setToggleButton(TRUE); - grid->addWidget( addressButton, 0, 2 ); - connect(addressButton, SIGNAL(clicked()), this, SLOT(getAddress()) ); - QWhatsThis::add(addressButton,QWidget::tr("This button opens the address selector with all mail adresses from your Opie addressbook")); - - emailInput = new QMultiLineEdit( widget, "emailInput" ); - grid->addMultiCellWidget( emailInput, 2, 2, 0, 2); - QWhatsThis::add(emailInput,QWidget::tr("Enter your mail text here")); - - addressView = new QListView( widget, "addressView"); - addressView->addColumn(tr("Name")); - addressView->addColumn(tr("EMail") ); - addressView->setAllColumnsShowFocus(TRUE); - addressView->setMultiSelection(TRUE); - addressView->hide(); - grid->addMultiCellWidget( addressView, 3, 3, 0, 2); - QWhatsThis::add(recipientsBox,QWidget::tr("Choose the recipients from this list")); - - okButton = new QToolButton(bar, "ok"); - okButton->setPixmap( Resource::loadPixmap("enter") ); - okButton->hide(); - connect(okButton, SIGNAL(clicked()), this, SLOT(addRecipients()) ); - QWhatsThis::add(okButton,QWidget::tr("Queue your mail by clicking here")); - - setCentralWidget(widget); -} - -void WriteMail::reject() -{ - emit cancelMail(); -} - -void WriteMail::accept() -{ - QStringList attachedFiles, attachmentsType; - int idCount = 0; - - if (toInput->text() == "") - { - QMessageBox::warning(this,tr("No recipient"), tr("Send mail to whom?"), tr("OK\n")); - return; - } - - if (! getRecipients(false) ) - { - QMessageBox::warning(this,tr("Incorrect recipient separator"), - tr("Recipients must be separated by ;\nand be valid emailaddresses"), tr("OK\n")); - return; - } - - if ((ccInput->text()!="") && (! getRecipients(true) )) - { - QMessageBox::warning(this,tr("Incorrect carbon copy separator"), - tr("CC Recipients must be separated by ;\nand be valid emailaddresses"), tr("OK\n")); - return; - } - - mail.subject = subjectInput->text(); - mail.body = emailInput->text(); - mail.sent = false; - mail.received = false; - - mail.rawMail = "To: "; - - for (QStringList::Iterator it = mail.recipients.begin(); - it != mail.recipients.end(); ++it) { - - mail.rawMail += (*it); - mail.rawMail += ",\n"; - } - - mail.rawMail.truncate(mail.rawMail.length()-2); - - mail.rawMail += "\nCC: "; - - for (QStringList::Iterator it = mail.carbonCopies.begin(); - it != mail.carbonCopies.end(); ++it) { - - mail.rawMail += (*it); - mail.rawMail += ",\n"; - } - - mail.rawMail += mail.from; - mail.rawMail += "\nSubject: "; - mail.rawMail += mail.subject; - mail.rawMail += "\n\n"; - - attachedFiles = addAtt->returnattachedFiles(); - attachmentsType = addAtt->returnFileTypes(); - - QStringList::Iterator itType = attachmentsType.begin(); - - Enclosure e; - for ( QStringList::Iterator it = attachedFiles.begin(); it != attachedFiles.end(); ++it ) { - e.id = idCount; - e.originalName = (*it).latin1(); - e.contentType = (*itType).latin1(); - e.contentAttribute = (*itType).latin1(); - e.saved = TRUE; - mail.addEnclosure(&e); - - itType++; - idCount++; - } - mail.rawMail += mail.body; - mail.rawMail += "\n"; - mail.rawMail += ".\n"; - emit sendMailRequested(mail); - addAtt->clear(); -} - -void WriteMail::getAddress() -{ - showingAddressList = !showingAddressList; - - if (showingAddressList) { - emailInput->hide(); - addressView->show(); - okButton->show(); - - } else { - addressView->hide(); - okButton->hide(); - emailInput->show(); - } -} - -void WriteMail::attachFile() -{ - addAtt->showMaximized(); -} - -void WriteMail::reply(Email replyMail, bool replyAll) -{ - int pos; - QString ccRecipients; - - mail = replyMail; - mail.files.clear(); - - toInput->setText(mail.fromMail); - - if (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); - } - 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 "); - fwdBody.append(forwMail.fromMail); - fwdBody.append(tr(" starts======\n\n")); - - mail=forwMail; - toInput->setText(""); - ccInput->setText(""); - subjectInput->setText(tr("FWD: ") + mail.subject); - - fwdBody+=mail.body; - fwdBody+=QString(tr("======end of forwarded message======\n\n")); - - 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(); - 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, ""); - } - temp = temp.stripWhiteSpace(); - if ( temp.find('@') == -1) - return false; - ccField ? mail.carbonCopies.append(temp) : mail.recipients.append(temp); - //addressList->addContact(temp, ""); - - return TRUE; -} - -void WriteMail::addRecipients() -{ - toInput->isVisible() ? addRecipients(false) : addRecipients(true); -} - -void WriteMail::addRecipients(bool ccField) -{ - QString recipients = ""; - - mail.recipients.clear(); - - QListViewItem *item = addressView->firstChild(); - while (item != NULL) { - if ( item->isSelected() ) { - if (recipients == "") { - recipients = item->text(1); - } else { - recipients += "; " + item->text(1); - } - } - item = item->nextSibling(); - } - - ccField ? ccInput->setText(recipients):toInput->setText(recipients); - - addressView->hide(); - okButton->hide(); - emailInput->show(); - addressButton->setOn(FALSE); - showingAddressList = !showingAddressList; -} - -void WriteMail::changeRecipients(int selection) -{ - if (selection==0) - { - toInput->show(); - ccInput->hide(); - } - else if (selection==1) - { - toInput->hide(); - ccInput->show(); - } -} - -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/net/mailit/writemail.h b/noncore/net/mailit/writemail.h deleted file mode 100644 index 921f27e..0000000 --- a/noncore/net/mailit/writemail.h +++ b/dev/null @@ -1,96 +0,0 @@ -/********************************************************************** -** Copyright (C) 2001 Trolltech AS. All rights reserved. -** -** This file is part of Qt Palmtop Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** 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. -** -**********************************************************************/ -#ifndef WRITEMAIL_H -#define WRITEMAIL_H - -#include <qmainwindow.h> -#include <qaction.h> -#include <qlabel.h> -#include <qtoolbar.h> -#include <qtoolbutton.h> -#include <qmenubar.h> -#include <qlayout.h> -#include <qlineedit.h> -#include <qmultilineedit.h> -#include <qlistview.h> -#include <qcombobox.h> - -#include "emailhandler.h" -#include "addresslist.h" -#include "addatt.h" - -class WriteMail : public QMainWindow -{ - Q_OBJECT - -public: - WriteMail( QWidget* parent, const char* name, WFlags fl = 0 ); - ~WriteMail(); - void reply(Email replyMail, bool replyAll); - void setRecipient(const QString &recipient); - void setAddressList(AddressList *list); - void forward(Email forwMail); - -signals: - void sendMailRequested(const Email &mail); - void cancelMail(); - - -public slots: - void getAddress(); - void attachFile(); - void addRecipients(); - void newMail(); - void accept(); - void reject(); - void changeRecipients(int); - -private: - bool getRecipients(bool); - void init(); - void addRecipients(bool); - - Email mail; - AddAtt *addAtt; - AddressList *addressList; - bool showingAddressList; - - QToolBar *bar; - QMenuBar *menu; - QPopupMenu *addMenu, *mailMenu; - QListView *addressView; - - QToolButton *okButton; - QWidget *widget; - QAction *attachButton; - QAction *confirmButton; - QAction *newButton; - QLabel* subjetLabel; - QToolButton* ToolButton13_2; - QComboBox* recipientsBox; - QLineEdit *subjectInput; - QLineEdit *toInput; - QLineEdit *ccInput; - QToolButton* addressButton; - QMultiLineEdit* emailInput; - QGridLayout* grid; -}; - -#endif // WRITEMAIL_H @@ -95,3 +95,3 @@ CONFIG_MAIL3 noncore/net/mail mail.pro CONFIG_MAILAPPLET noncore/net/mail/taskbarapplet taskbarapplet.pro -CONFIG_MAILIT noncore/net/mailit mailit.pro +CONFIG_MAILIT noncore/unsupported/mailit mailit.pro CONFIG_MAIN_TAB_EXAMPLE examples/main-tab example.pro |