24 files changed, 156 insertions, 86 deletions
diff --git a/noncore/net/mailit/addatt.cpp b/noncore/net/mailit/addatt.cpp index c8be865..d268f1f 100644 --- a/noncore/net/mailit/addatt.cpp +++ b/noncore/net/mailit/addatt.cpp @@ -1,90 +1,90 @@ /********************************************************************** ** 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 "resource.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("Adding attatchments"); QGridLayout *top = new QGridLayout(this, 1,1 ); QHBox *buttons=new QHBox(this); /*fileCategoryButton = new QPushButton(this);*/ - attatchButton = new QPushButton("Attatch ->", buttons); - removeButton = new QPushButton("Remove", buttons); + attatchButton = new QPushButton(tr("Attatch..."), 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(attatchButton,0,0); //buttons->addWidget(removeButton,0,1); //connect(fileCategories, SIGNAL(activated(int)), this, // SLOT(fileCategorySelected(int)) );*/ connect(attatchButton, SIGNAL(clicked()), this, SLOT(addAttatchment()) ); connect(removeButton, SIGNAL(clicked()), this, SLOT(removeAttatchment()) ); diff --git a/noncore/net/mailit/addresslist.cpp b/noncore/net/mailit/addresslist.cpp index 43e3830..9fe558a 100644 --- a/noncore/net/mailit/addresslist.cpp +++ b/noncore/net/mailit/addresslist.cpp @@ -3,59 +3,57 @@ ** ** 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(QString file) +AddressList::AddressList() { addresses.setAutoDelete(TRUE); - filename = file; read(); dirty = FALSE; } AddressList::~AddressList() { - write(); addresses.clear(); } void AddressList::addContact(QString email, QString name) { //skip if not a valid email address, if (email.find( '@') == -1) return; if ( ! containsEmail(email) ) { Contact *in = new Contact; in->email = email; in->name = name; addresses.append(in); dirty = TRUE; } } bool AddressList::containsEmail(QString email) { return ( getEmailRef(email) != -1 ); } bool AddressList::containsName(QString name) @@ -99,83 +97,65 @@ int AddressList::getEmailRef(QString email) } int AddressList::getNameRef(QString name) { int pos = 0; Contact *ptr; for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { if (ptr->name == name) return pos; pos++; } return -1; } QList<Contact>* AddressList::getContactList() { return &addresses; } void AddressList::read() { OContactAccess::List::Iterator it; - //QFile f(filename); QString lineEmail, lineName, email, name; OContactAccess m_contactdb("mailit"); OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); //OContact* oc; for ( it = m_list.begin(); it != m_list.end(); ++it ) { //oc=(OContact*) it; if ((*it).defaultEmail().length()!=0) addContact((*it).defaultEmail(),(*it).fullName()); } /*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(QString in) { QString out = ""; int pos = in.find('='); if (pos != -1) { out = in.mid(pos+1).stripWhiteSpace(); } return out; } -void AddressList::write() -{ - if ( (addresses.count() == 0) || (!dirty) ) - return; - - QFile f(filename); - if (! f.open(IO_WriteOnly) ) - return; - - QTextStream stream(&f); - Contact *ptr; - for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { - stream << "email = " + ptr->email + "\n"; - stream << "name = " + ptr->name + "\n"; - } - f.close(); -} diff --git a/noncore/net/mailit/addresslist.h b/noncore/net/mailit/addresslist.h index e87d6f1..99cef9a 100644 --- a/noncore/net/mailit/addresslist.h +++ b/noncore/net/mailit/addresslist.h @@ -13,47 +13,46 @@ ** ** 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 Contact { QString email; QString name; }; class AddressList : public QObject { Q_OBJECT public: - AddressList(QString file); + AddressList(); ~AddressList(); void addContact(QString email, QString name); bool containsEmail(QString email); bool containsName(QString name); QString getNameByEmail(QString email); QString getEmailByName(QString name); QList<Contact>* getContactList(); - void write(); private: int getEmailRef(QString email); int getNameRef(QString name); QString getRightString(QString in); void read(); private: QList<Contact> addresses; QString filename; bool dirty; }; #endif diff --git a/noncore/net/mailit/editaccount.cpp b/noncore/net/mailit/editaccount.cpp index c4f95ea..c0afbb2 100644 --- a/noncore/net/mailit/editaccount.cpp +++ b/noncore/net/mailit/editaccount.cpp @@ -1,120 +1,133 @@ /********************************************************************** ** 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("Email", this); + emailInputLabel = new QLabel(tr("Email"), this); grid->addWidget(emailInputLabel, 2, 0 ); emailInput = new QLineEdit( this, "emailInput" ); grid->addWidget( emailInput, 2, 1 ); - popUserInputLabel = new QLabel("POP username", this); + 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( "POP password", this); + 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("POP server", this); + 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("SMTP server", this ); + smtpServerInputLabel = new QLabel(tr("SMTP server"), this ); grid->addWidget( smtpServerInputLabel, 6, 0 ); smtpServerInput = new QLineEdit( this, "smtpServerInput" ); grid->addWidget( smtpServerInput, 6, 1 ); - syncCheckBox = new QCheckBox( tr( "Synchronize with server" ), this); + QHBox* syncBox=new QHBox(this); + grid->addWidget( syncBox, 7, 1 ); + + syncCheckBox = new QCheckBox( tr( "Synchronize" ), this); syncCheckBox->setChecked( TRUE ); - grid->addMultiCellWidget( syncCheckBox, 7, 7, 0, 1 ); + 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 index 7a90e50..1e15047 100644 --- a/noncore/net/mailit/editaccount.h +++ b/noncore/net/mailit/editaccount.h @@ -4,63 +4,66 @@ ** 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 index 2943986..6612541 100644 --- a/noncore/net/mailit/emailclient.cpp +++ b/noncore/net/mailit/emailclient.cpp @@ -2,67 +2,67 @@ ** 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 <qfile.h> #include <qcheckbox.h> #include <qmenubar.h> #include <qaction.h> -#include "resource.h" +#include <qpe/resource.h> #include "emailclient.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( getPath(FALSE) + "mail_adr"); + 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)), this, SLOT(smtpError(int)) ); connect(emailHandler, SIGNAL(popError(int)), this, SLOT(popError(int)) ); connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, SLOT(mailArrived(const Email &, bool)) ); connect(emailHandler, SIGNAL(mailTransfered(int)), this, SLOT(allMailArrived(int)) ); @@ -650,93 +650,101 @@ void EmailClient::readSettings() if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) account.popUserName = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) account.popPasswd = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) account.popServer = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) account.smtpServer = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { s = p->getString(& ++pos, 'z', TRUE); account.id = s.toInt(); } account.lastServerMailCount = 0; account.synchronize = FALSE; if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { account.synchronize = TRUE; if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { s = p->getString(& ++pos, 'z', TRUE); account.lastServerMailCount = s.toInt(); } } } + + if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) { + account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt(); + } + + accountList.append(&account); } delete p; } mailconf->setGroup("mailitglobal"); if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { mailIdCount = y; } if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { accountIdCount = y; } } void EmailClient::saveSettings() { QString temp; QFile f( getPath(FALSE) + "settings.txt"); MailAccount *accountPtr; if (! f.open(IO_WriteOnly) ) { qWarning("could not save settings file"); return; } QTextStream t(&f); t << "#Settings for QPE Mailit program\n"; for (accountPtr = accountList.first(); accountPtr != 0; accountPtr = accountList.next()) { t << "accountStart;\n"; t << "AccountName: " + accountPtr->accountName + "\n"; t << "Name: " + accountPtr->name + "\n"; t << "Email: " + accountPtr->emailAddress + "\n"; t << "POPUser: " + accountPtr->popUserName + "\n"; t << "POPPAssword: " + accountPtr->popPasswd + "\n"; t << "POPServer: " + accountPtr->popServer + "\n"; t << "SMTPServer: " + accountPtr->smtpServer + "\n"; t << "AccountId: " << accountPtr->id << "\n"; if (accountPtr->synchronize) { t << "Synchronize: Yes\n"; t << "LastServerMailCount: "; t << accountPtr->lastServerMailCount << "\n"; } else { t << "Synchronize: No\n"; } + t << "SyncLimit: "; + t << accountPtr->syncLimit << "\n"; t << "accountEnd;\n"; } f.close(); mailconf->setGroup("mailitglobal"); 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("Mailit ! No account defined"); } } void EmailClient::editAccount(int id) { MailAccount *newAccount; diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp index 1be16d4..9c1c814 100644 --- a/noncore/net/mailit/emailhandler.cpp +++ b/noncore/net/mailit/emailhandler.cpp @@ -97,49 +97,49 @@ void EmailHandler::setAccount(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); if (mailAccount.synchronize) { popClient->setSynchronize(mailAccount.lastServerMailCount); } else { popClient->removeSynchronize(); } headers = TRUE; - popClient->headersOnly(headers, 2000); //less than 2000, download all + popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all 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->newConnection(mailAccount.popServer, 110); popClient->setSelectedMails(mailList); } 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; @@ -179,60 +179,69 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) TextParser p(header, lineShift); 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) == '<') || (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; } } + + //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: + if (pos = p.find("TO",':', pos, TRUE) != -1) + { + pos++; + mail->recipients.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("TO",':', 0, TRUE)) != -1) { - pos++; - mail->recipients.append (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 = ""; diff --git a/noncore/net/mailit/emailhandler.h b/noncore/net/mailit/emailhandler.h index 17c4414..e47fd9a 100644 --- a/noncore/net/mailit/emailhandler.h +++ b/noncore/net/mailit/emailhandler.h @@ -73,48 +73,49 @@ struct Email 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); void sendMail(QList<Email> *mailList); void getMail(); void getMailHeaders(); void getMailByList(MailList *mailList); bool parse(QString in, QString lineShift, Email *mail); bool getEnclosure(Enclosure *ePtr); int parse64base(char *src, char *dest); int encodeMime(Email *mail); diff --git a/noncore/net/mailit/emaillistitem.cpp b/noncore/net/mailit/emaillistitem.cpp index d47b0b7..a325766 100644 --- a/noncore/net/mailit/emaillistitem.cpp +++ b/noncore/net/mailit/emaillistitem.cpp @@ -1,64 +1,69 @@ /********************************************************************** ** 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); + 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; diff --git a/noncore/net/mailit/mailit.pro b/noncore/net/mailit/mailit.pro index a404884..b262f9a 100644 --- a/noncore/net/mailit/mailit.pro +++ b/noncore/net/mailit/mailit.pro @@ -19,25 +19,42 @@ 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 MOC_DIR=qpeobj OBJECTS_DIR=qpeobj DESTDIR=$(OPIEDIR)/bin +TRANSLATIONS = ../../../i18n/de/mailit.ts \ + ../../../i18n/da/mailit.ts \ + ../../../i18n/xx/mailit.ts \ + ../../../i18n/en/mailit.ts \ + ../../../i18n/es/mailit.ts \ + ../../../i18n/fr/mailit.ts \ + ../../../i18n/hu/mailit.ts \ + ../../../i18n/ja/mailit.ts \ + ../../../i18n/ko/mailit.ts \ + ../../../i18n/no/mailit.ts \ + ../../../i18n/pl/mailit.ts \ + ../../../i18n/pt/mailit.ts \ + ../../../i18n/pt_BR/mailit.ts \ + ../../../i18n/sl/mailit.ts \ + ../../../i18n/zh_CN/mailit.ts \ + ../../../i18n/zh_TW/mailit.ts + include ( $(OPIEDIR)/include.pro ) diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp index 2011ecf..a5e7147 100644 --- a/noncore/net/mailit/readmail.cpp +++ b/noncore/net/mailit/readmail.cpp @@ -1,48 +1,48 @@ /********************************************************************** ** 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 <qmime.h> #include <qaction.h> -#include "resource.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); bar = new QToolBar(this); bar->setHorizontalStretchable( TRUE ); menu = new QMenuBar( bar ); diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp index a45cfd2..38a2596 100644 --- a/noncore/net/mailit/writemail.cpp +++ b/noncore/net/mailit/writemail.cpp @@ -1,46 +1,46 @@ /********************************************************************** ** 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 "writemail.h" -#include "resource.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 Attatchments"); } WriteMail::~WriteMail() { delete addAtt; } void WriteMail::setAddressList(AddressList *list) { Contact *cPtr; addressList = list; addressView->clear(); QList<Contact> *cListPtr = addressList->getContactList(); QListViewItem *item; diff --git a/noncore/unsupported/mailit/addatt.cpp b/noncore/unsupported/mailit/addatt.cpp index c8be865..d268f1f 100644 --- a/noncore/unsupported/mailit/addatt.cpp +++ b/noncore/unsupported/mailit/addatt.cpp @@ -1,90 +1,90 @@ /********************************************************************** ** 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 "resource.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("Adding attatchments"); QGridLayout *top = new QGridLayout(this, 1,1 ); QHBox *buttons=new QHBox(this); /*fileCategoryButton = new QPushButton(this);*/ - attatchButton = new QPushButton("Attatch ->", buttons); - removeButton = new QPushButton("Remove", buttons); + attatchButton = new QPushButton(tr("Attatch..."), 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(attatchButton,0,0); //buttons->addWidget(removeButton,0,1); //connect(fileCategories, SIGNAL(activated(int)), this, // SLOT(fileCategorySelected(int)) );*/ connect(attatchButton, SIGNAL(clicked()), this, SLOT(addAttatchment()) ); connect(removeButton, SIGNAL(clicked()), this, SLOT(removeAttatchment()) ); diff --git a/noncore/unsupported/mailit/addresslist.cpp b/noncore/unsupported/mailit/addresslist.cpp index 43e3830..9fe558a 100644 --- a/noncore/unsupported/mailit/addresslist.cpp +++ b/noncore/unsupported/mailit/addresslist.cpp @@ -3,59 +3,57 @@ ** ** 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(QString file) +AddressList::AddressList() { addresses.setAutoDelete(TRUE); - filename = file; read(); dirty = FALSE; } AddressList::~AddressList() { - write(); addresses.clear(); } void AddressList::addContact(QString email, QString name) { //skip if not a valid email address, if (email.find( '@') == -1) return; if ( ! containsEmail(email) ) { Contact *in = new Contact; in->email = email; in->name = name; addresses.append(in); dirty = TRUE; } } bool AddressList::containsEmail(QString email) { return ( getEmailRef(email) != -1 ); } bool AddressList::containsName(QString name) @@ -99,83 +97,65 @@ int AddressList::getEmailRef(QString email) } int AddressList::getNameRef(QString name) { int pos = 0; Contact *ptr; for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { if (ptr->name == name) return pos; pos++; } return -1; } QList<Contact>* AddressList::getContactList() { return &addresses; } void AddressList::read() { OContactAccess::List::Iterator it; - //QFile f(filename); QString lineEmail, lineName, email, name; OContactAccess m_contactdb("mailit"); OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); //OContact* oc; for ( it = m_list.begin(); it != m_list.end(); ++it ) { //oc=(OContact*) it; if ((*it).defaultEmail().length()!=0) addContact((*it).defaultEmail(),(*it).fullName()); } /*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(QString in) { QString out = ""; int pos = in.find('='); if (pos != -1) { out = in.mid(pos+1).stripWhiteSpace(); } return out; } -void AddressList::write() -{ - if ( (addresses.count() == 0) || (!dirty) ) - return; - - QFile f(filename); - if (! f.open(IO_WriteOnly) ) - return; - - QTextStream stream(&f); - Contact *ptr; - for (ptr = addresses.first(); ptr != 0; ptr = addresses.next() ) { - stream << "email = " + ptr->email + "\n"; - stream << "name = " + ptr->name + "\n"; - } - f.close(); -} diff --git a/noncore/unsupported/mailit/addresslist.h b/noncore/unsupported/mailit/addresslist.h index e87d6f1..99cef9a 100644 --- a/noncore/unsupported/mailit/addresslist.h +++ b/noncore/unsupported/mailit/addresslist.h @@ -13,47 +13,46 @@ ** ** 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 Contact { QString email; QString name; }; class AddressList : public QObject { Q_OBJECT public: - AddressList(QString file); + AddressList(); ~AddressList(); void addContact(QString email, QString name); bool containsEmail(QString email); bool containsName(QString name); QString getNameByEmail(QString email); QString getEmailByName(QString name); QList<Contact>* getContactList(); - void write(); private: int getEmailRef(QString email); int getNameRef(QString name); QString getRightString(QString in); void read(); private: QList<Contact> addresses; QString filename; bool dirty; }; #endif diff --git a/noncore/unsupported/mailit/editaccount.cpp b/noncore/unsupported/mailit/editaccount.cpp index c4f95ea..c0afbb2 100644 --- a/noncore/unsupported/mailit/editaccount.cpp +++ b/noncore/unsupported/mailit/editaccount.cpp @@ -1,120 +1,133 @@ /********************************************************************** ** 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("Email", this); + emailInputLabel = new QLabel(tr("Email"), this); grid->addWidget(emailInputLabel, 2, 0 ); emailInput = new QLineEdit( this, "emailInput" ); grid->addWidget( emailInput, 2, 1 ); - popUserInputLabel = new QLabel("POP username", this); + 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( "POP password", this); + 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("POP server", this); + 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("SMTP server", this ); + smtpServerInputLabel = new QLabel(tr("SMTP server"), this ); grid->addWidget( smtpServerInputLabel, 6, 0 ); smtpServerInput = new QLineEdit( this, "smtpServerInput" ); grid->addWidget( smtpServerInput, 6, 1 ); - syncCheckBox = new QCheckBox( tr( "Synchronize with server" ), this); + QHBox* syncBox=new QHBox(this); + grid->addWidget( syncBox, 7, 1 ); + + syncCheckBox = new QCheckBox( tr( "Synchronize" ), this); syncCheckBox->setChecked( TRUE ); - grid->addMultiCellWidget( syncCheckBox, 7, 7, 0, 1 ); + 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/unsupported/mailit/editaccount.h b/noncore/unsupported/mailit/editaccount.h index 7a90e50..1e15047 100644 --- a/noncore/unsupported/mailit/editaccount.h +++ b/noncore/unsupported/mailit/editaccount.h @@ -4,63 +4,66 @@ ** 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/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp index 2943986..6612541 100644 --- a/noncore/unsupported/mailit/emailclient.cpp +++ b/noncore/unsupported/mailit/emailclient.cpp @@ -2,67 +2,67 @@ ** 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 <qfile.h> #include <qcheckbox.h> #include <qmenubar.h> #include <qaction.h> -#include "resource.h" +#include <qpe/resource.h> #include "emailclient.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( getPath(FALSE) + "mail_adr"); + 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)), this, SLOT(smtpError(int)) ); connect(emailHandler, SIGNAL(popError(int)), this, SLOT(popError(int)) ); connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, SLOT(mailArrived(const Email &, bool)) ); connect(emailHandler, SIGNAL(mailTransfered(int)), this, SLOT(allMailArrived(int)) ); @@ -650,93 +650,101 @@ void EmailClient::readSettings() if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) account.popUserName = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) account.popPasswd = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) account.popServer = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) account.smtpServer = p->getString(& ++pos, 'z', TRUE); if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { s = p->getString(& ++pos, 'z', TRUE); account.id = s.toInt(); } account.lastServerMailCount = 0; account.synchronize = FALSE; if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { account.synchronize = TRUE; if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { s = p->getString(& ++pos, 'z', TRUE); account.lastServerMailCount = s.toInt(); } } } + + if ( (pos = p->find("SYNCLIMIT",':', accountPos, TRUE)) != -1) { + account.syncLimit = p->getString(& ++pos, 'z', TRUE).toInt(); + } + + accountList.append(&account); } delete p; } mailconf->setGroup("mailitglobal"); if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { mailIdCount = y; } if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { accountIdCount = y; } } void EmailClient::saveSettings() { QString temp; QFile f( getPath(FALSE) + "settings.txt"); MailAccount *accountPtr; if (! f.open(IO_WriteOnly) ) { qWarning("could not save settings file"); return; } QTextStream t(&f); t << "#Settings for QPE Mailit program\n"; for (accountPtr = accountList.first(); accountPtr != 0; accountPtr = accountList.next()) { t << "accountStart;\n"; t << "AccountName: " + accountPtr->accountName + "\n"; t << "Name: " + accountPtr->name + "\n"; t << "Email: " + accountPtr->emailAddress + "\n"; t << "POPUser: " + accountPtr->popUserName + "\n"; t << "POPPAssword: " + accountPtr->popPasswd + "\n"; t << "POPServer: " + accountPtr->popServer + "\n"; t << "SMTPServer: " + accountPtr->smtpServer + "\n"; t << "AccountId: " << accountPtr->id << "\n"; if (accountPtr->synchronize) { t << "Synchronize: Yes\n"; t << "LastServerMailCount: "; t << accountPtr->lastServerMailCount << "\n"; } else { t << "Synchronize: No\n"; } + t << "SyncLimit: "; + t << accountPtr->syncLimit << "\n"; t << "accountEnd;\n"; } f.close(); mailconf->setGroup("mailitglobal"); 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("Mailit ! No account defined"); } } void EmailClient::editAccount(int id) { MailAccount *newAccount; diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp index 1be16d4..9c1c814 100644 --- a/noncore/unsupported/mailit/emailhandler.cpp +++ b/noncore/unsupported/mailit/emailhandler.cpp @@ -97,49 +97,49 @@ void EmailHandler::setAccount(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); if (mailAccount.synchronize) { popClient->setSynchronize(mailAccount.lastServerMailCount); } else { popClient->removeSynchronize(); } headers = TRUE; - popClient->headersOnly(headers, 2000); //less than 2000, download all + popClient->headersOnly(headers, mailAccount.syncLimit); //less than requested syncLimit, download all 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->newConnection(mailAccount.popServer, 110); popClient->setSelectedMails(mailList); } 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; @@ -179,60 +179,69 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail) TextParser p(header, lineShift); 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) == '<') || (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; } } + + //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To: + if (pos = p.find("TO",':', pos, TRUE) != -1) + { + pos++; + mail->recipients.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("TO",':', 0, TRUE)) != -1) { - pos++; - mail->recipients.append (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 = ""; diff --git a/noncore/unsupported/mailit/emailhandler.h b/noncore/unsupported/mailit/emailhandler.h index 17c4414..e47fd9a 100644 --- a/noncore/unsupported/mailit/emailhandler.h +++ b/noncore/unsupported/mailit/emailhandler.h @@ -73,48 +73,49 @@ struct Email 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); void sendMail(QList<Email> *mailList); void getMail(); void getMailHeaders(); void getMailByList(MailList *mailList); bool parse(QString in, QString lineShift, Email *mail); bool getEnclosure(Enclosure *ePtr); int parse64base(char *src, char *dest); int encodeMime(Email *mail); diff --git a/noncore/unsupported/mailit/emaillistitem.cpp b/noncore/unsupported/mailit/emaillistitem.cpp index d47b0b7..a325766 100644 --- a/noncore/unsupported/mailit/emaillistitem.cpp +++ b/noncore/unsupported/mailit/emaillistitem.cpp @@ -1,64 +1,69 @@ /********************************************************************** ** 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); + 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; diff --git a/noncore/unsupported/mailit/mailit.pro b/noncore/unsupported/mailit/mailit.pro index a404884..b262f9a 100644 --- a/noncore/unsupported/mailit/mailit.pro +++ b/noncore/unsupported/mailit/mailit.pro @@ -19,25 +19,42 @@ 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 MOC_DIR=qpeobj OBJECTS_DIR=qpeobj DESTDIR=$(OPIEDIR)/bin +TRANSLATIONS = ../../../i18n/de/mailit.ts \ + ../../../i18n/da/mailit.ts \ + ../../../i18n/xx/mailit.ts \ + ../../../i18n/en/mailit.ts \ + ../../../i18n/es/mailit.ts \ + ../../../i18n/fr/mailit.ts \ + ../../../i18n/hu/mailit.ts \ + ../../../i18n/ja/mailit.ts \ + ../../../i18n/ko/mailit.ts \ + ../../../i18n/no/mailit.ts \ + ../../../i18n/pl/mailit.ts \ + ../../../i18n/pt/mailit.ts \ + ../../../i18n/pt_BR/mailit.ts \ + ../../../i18n/sl/mailit.ts \ + ../../../i18n/zh_CN/mailit.ts \ + ../../../i18n/zh_TW/mailit.ts + include ( $(OPIEDIR)/include.pro ) diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp index 2011ecf..a5e7147 100644 --- a/noncore/unsupported/mailit/readmail.cpp +++ b/noncore/unsupported/mailit/readmail.cpp @@ -1,48 +1,48 @@ /********************************************************************** ** 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 <qmime.h> #include <qaction.h> -#include "resource.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); bar = new QToolBar(this); bar->setHorizontalStretchable( TRUE ); menu = new QMenuBar( bar ); diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp index a45cfd2..38a2596 100644 --- a/noncore/unsupported/mailit/writemail.cpp +++ b/noncore/unsupported/mailit/writemail.cpp @@ -1,46 +1,46 @@ /********************************************************************** ** 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 "writemail.h" -#include "resource.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 Attatchments"); } WriteMail::~WriteMail() { delete addAtt; } void WriteMail::setAddressList(AddressList *list) { Contact *cPtr; addressList = list; addressView->clear(); QList<Contact> *cListPtr = addressList->getContactList(); QListViewItem *item; |