From 9671975e21266e3bfa6f3c793a3278b67cea34b7 Mon Sep 17 00:00:00 2001
From: groucho <groucho>
Date: Thu, 24 Apr 2003 11:19:11 +0000
Subject: - reworked size filtering

- started reworking offline download
- better tab focus switching
- Hello "Whats this" capability
- Fixed parsing of To: header files (no more Delivered-To: and Reply-To: matches)
- Good bye Settings.txt, hello Config Objects and encrypted passwords
- Translation improvements (added trs)
- Parser optimizations
---
diff --git a/noncore/net/mailit/addatt.cpp b/noncore/net/mailit/addatt.cpp
index d268f1f..daefac6 100644
--- a/noncore/net/mailit/addatt.cpp
+++ b/noncore/net/mailit/addatt.cpp
@@ -56,13 +56,13 @@ FileItem::~FileItem()
 AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
 	: QDialog(parent, name, f)
 {
-	setCaption("Adding attatchments");
+	setCaption("Adding attachments");
 
 	QGridLayout *top = new QGridLayout(this, 1,1 );
 	
 	QHBox *buttons=new QHBox(this);
 	/*fileCategoryButton = new QPushButton(this);*/
-	attatchButton = new QPushButton(tr("Attatch..."), buttons);
+	attachButton = new QPushButton(tr("attach..."), buttons);
 	removeButton = new QPushButton(tr("Remove"), buttons);
 
 	/*fileCategories = new QPopupMenu(fileCategoryButton);
@@ -78,27 +78,27 @@ AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
 	
 
 	top->addWidget(buttons,1,0);
-	//buttons->addWidget(attatchButton,0,0);
+	//buttons->addWidget(attachButton,0,0);
 	//buttons->addWidget(removeButton,0,1);
 
 	//connect(fileCategories, SIGNAL(activated(int)), this,
     	//	SLOT(fileCategorySelected(int)) );*/
-	connect(attatchButton, SIGNAL(clicked()), this,
-		SLOT(addAttatchment()) );
+	connect(attachButton, SIGNAL(clicked()), this,
+		SLOT(addattachment()) );
 	connect(removeButton, SIGNAL(clicked()), this,
-		SLOT(removeAttatchment()) );
+		SLOT(removeattachment()) );
 	
 	/*listView = new QListView(this, "AttView");
 	listView->addColumn("Documents");*
 	connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
-		SLOT(addAttatchment()) );*/
+		SLOT(addattachment()) );*/
 	
 	
 	attView = new QListView(this, "Selected");
 	attView->addColumn(tr("Attached"));
 	attView->addColumn(tr("File type"));
 	connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
-		SLOT(removeAttatchment()) );
+		SLOT(removeattachment()) );
 
 	//top->addWidget(ofs, 0,0);
 	top->addWidget(attView, 0,0);
@@ -121,7 +121,7 @@ void AddAtt::clear()
 	getFiles();
 }*/
 
-void AddAtt::addAttatchment()
+void AddAtt::addattachment()
 {	
 	OFileDialog ofs("Attachments",this,0,0,"/root/Documents");
 	
@@ -138,7 +138,7 @@ void AddAtt::addAttatchment()
 	}
 }
 
-void AddAtt::removeAttatchment()
+void AddAtt::removeattachment()
 {
 	if (attView->selectedItem() != NULL) 
 	{
@@ -192,7 +192,7 @@ void AddAtt::getFiles()
 	}*/
 }
 
-QStringList AddAtt::returnAttatchedFiles()
+QStringList AddAtt::returnattachedFiles()
 {
 	QFileInfo info;
 	QStringList list;
diff --git a/noncore/net/mailit/addatt.h b/noncore/net/mailit/addatt.h
index fcf3279..a365947 100644
--- a/noncore/net/mailit/addatt.h
+++ b/noncore/net/mailit/addatt.h
@@ -49,7 +49,7 @@ class AddAtt : public QDialog
 
 public:
 	AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
-	QStringList returnAttatchedFiles();	
+	QStringList returnattachedFiles();	
 	QStringList returnFileTypes();
 	void getFiles();
 	void clear();
@@ -57,15 +57,15 @@ public:
 	
 public slots:
 	//void fileCategorySelected(int);
-	void addAttatchment();
-	void removeAttatchment();
+	void addattachment();
+	void removeattachment();
 	void reject();
 	void accept();
 	
 private:
 	FileItem* item;
 	QListView *attView;
-	QPushButton *attatchButton, *removeButton;
+	QPushButton *attachButton, *removeButton;
 	QPopupMenu *fileCategories;
 	bool modified;
 	//QFileInfo *fi;
diff --git a/noncore/net/mailit/addresslist.cpp b/noncore/net/mailit/addresslist.cpp
index 8d9ab91..7d60ebf 100644
--- a/noncore/net/mailit/addresslist.cpp
+++ b/noncore/net/mailit/addresslist.cpp
@@ -121,7 +121,7 @@ void AddressList::read()
 	QString lineEmail, lineName, email, name;
 	OContactAccess m_contactdb("mailit");
 	OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
-	//OContact* oc;
+	//OContact* oc;(*it).defaultEmail()
 	
 	for ( it = m_list.begin(); it != m_list.end(); ++it )
 	{
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index ad1e0b4..23059cf 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -23,6 +23,7 @@
 #include <qcheckbox.h>
 #include <qmenubar.h>
 #include <qaction.h>
+#include <qwhatsthis.h>
 #include <qpe/resource.h>
 #include "emailclient.h"
 
@@ -82,6 +83,7 @@ EmailClient::EmailClient( QWidget* parent,  const char* name, WFlags fl )
   readMail();
   lineShift = "\r\n";
   
+  mailboxView->setCurrentTab(0);  //ensure that inbox has focus
 }
 
 
@@ -113,6 +115,7 @@ void EmailClient::init()
     status2Label, SLOT(setText(const QString &)) );
   
   progressBar = new QProgressBar(statusBar);
+
   connect(emailHandler, SIGNAL(mailboxSize(int)),
     this, SLOT(setTotalSize(int)) );
   connect(emailHandler, SIGNAL(currentMailSize(int)),
@@ -127,6 +130,7 @@ void EmailClient::init()
   setToolBarsMovable(FALSE);
   
   bar = new QToolBar(this);
+  QWhatsThis::add(bar,tr("Main operation toolbar"));
   bar->setHorizontalStretchable( TRUE );
 
   mb = new QMenuBar( bar );
@@ -148,45 +152,34 @@ void EmailClient::init()
   bar = new QToolBar(this);
 
   getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar);
-  //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) );
- // setAccountButton->addTo(bar);
-  //setAccountButton->addTo(mail);
-  
-  /*idCount = 0;
-  
-  for (MailAccount* accountPtr = accountList.first(); accountPtr != 0;
-      accountPtr = accountList.next()) {
-    
-    selectAccountMenu->insertItem(accountPtr->accountName,this, SLOT(selectAccount(int)), 0, idCount);
-    idCount++;
-  }*/
+  QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account."));
+
   getMailButton->setPopup(selectAccountMenu);
-    
-  
-  /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
-  connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
-  getMailButton->addTo(bar);*/
-  //getMailButton->addTo(mail);
-  
+      
   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" );
 
@@ -201,6 +194,8 @@ void EmailClient::init()
   inboxView->addColumn( tr( "Date" ) );
   inboxView->setMinimumSize( QSize( 0, 0 ) );
   inboxView->setAllColumnsShowFocus(TRUE);
+  QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n It keeps the fetched mail which can be viewed by double clicking the entry.\n"
+  "					A blue attachment icon shows whether this mail has attachments."));
 
   grid_2->addWidget( inboxView, 2, 0 );
   mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
@@ -215,12 +210,12 @@ void EmailClient::init()
   outboxView->addColumn( tr( "Subject" ) );
   outboxView->setAllColumnsShowFocus(TRUE);
 
+  QWhatsThis::add(outboxView,QWidget::tr("This is the oubox view.\n It keeps the queued mails to send which can be reviewed by double clicking the entry."));
   grid_3->addWidget( outboxView, 0, 0 );
   mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
   
   setCentralWidget(mailboxView);
   
-  mailboxView->setCurrentTab(0);
 }
 
 void EmailClient::compose()
@@ -324,7 +319,7 @@ void EmailClient::getNewMail() {
   progressBar->reset();
     
   //get any previous mails not downloaded and add to queue
-/*  mailDownloadList.clear();
+  mailDownloadList.clear();
   Email *mailPtr;
   item = (EmailListItem *) inboxView->firstChild();
   while (item != NULL) {
@@ -333,9 +328,10 @@ void EmailClient::getNewMail() {
       mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
     }
     item = (EmailListItem *) item->nextSibling();
-  }*/
+  }
   
   emailHandler->getMailHeaders();
+  
 }
 
 void EmailClient::getAllNewMail()
@@ -351,15 +347,17 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
   Email newMail;
   int thisMailId;
   emailHandler->parse(mail.rawMail, lineShift, &newMail);
-  
   mailconf->setGroup(newMail.id);
-  
-  if (fromDisk) {
+    
+  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
+  } 
+  else 
+  {  //mail arrived from server
     newMail.serverId = mail.serverId;
     newMail.size = mail.size;
     newMail.downloaded = mail.downloaded;
@@ -378,7 +376,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
     
     //set server count, so that if the user aborts, the new
     //header is not reloaded
-    if (currentAccount->synchronize)
+    if ((currentAccount)&&(currentAccount->synchronize))
       currentAccount->lastServerMailCount++;
     
     mailconf->writeEntry("internalmailid", thisMailId);
@@ -386,13 +384,15 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
     mailconf->writeEntry("size", (int) newMail.size);
     mailconf->writeEntry("serverid", newMail.serverId);
     
-    addressList->addContact(newMail.fromMail, newMail.from);
-  } else if (!fromDisk) {   //body to header arrived
-    mailconf->writeEntry("downloaded", TRUE);
+    //addressList->addContact(newMail.fromMail, newMail.from);
   }
+  
+  mailconf->writeEntry("downloaded", newMail.downloaded);
+  
   QString stringMailId;
   stringMailId.setNum(thisMailId);
-  //se if any attatchments needs to be stored
+  //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);
@@ -426,22 +426,29 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
       }   
     }
   }
-  if (!previewingMail && !fromDisk) {
+
+  bool found=false;
+  
+  if (!fromDisk) 
+  {
+    
     Email *mailPtr;
     item = (EmailListItem *) inboxView->firstChild();
-    while (item != NULL) {
+    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();
     }
-  } else {
-    item = new EmailListItem(inboxView, newMail, TRUE);
-    if (!newMail.downloaded)
-      mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
   }
+  if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
+    
+    /*if (!newMail.downloaded)
+      mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
   
   mailboxView->setCurrentTab(0);
   
@@ -450,7 +457,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
 void EmailClient::allMailArrived(int count)
 {
   // not previewing means all mailtransfer has been done
-  if (!previewingMail) {
+  /*if (!previewingMail) {*/
     if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
       emit newCaption("Mailit - " + currentAccount->accountName);
       getNewMail();
@@ -466,14 +473,14 @@ void EmailClient::allMailArrived(int count)
       progressBar->reset();
       return;
     }
-  }
+  //}
   
   // all headers downloaded from server, start downloading remaining mails
   previewingMail = FALSE;
   status1Label->setText(currentAccount->accountName);
   progressBar->reset();
 
-  emailHandler->getMailByList(&mailDownloadList);
+  //emailHandler->getMailByList(&mailDownloadList);
   
   mailboxView->setCurrentTab(0);
 }
@@ -541,7 +548,7 @@ void EmailClient::popError(int code)
 
 void EmailClient::inboxItemSelected()
 {
-  killTimer(timerID);
+  //killTimer(timerID);
   
   item = (EmailListItem*) inboxView->selectedItem();
   if (item != NULL) {
@@ -551,7 +558,7 @@ void EmailClient::inboxItemSelected()
 
 void EmailClient::outboxItemSelected()
 {
-  killTimer(timerID);
+  //killTimer(timerID);
   
   item = (EmailListItem*) outboxView->selectedItem();
   if (item != NULL) {
@@ -567,9 +574,7 @@ void EmailClient::readMail()
   QString s, del;
 
   QFile f(getPath(FALSE) + "inbox.txt");
-//  QFileInfo fi(f);
-  //qDebug( f.name());
-
+  
   if ( f.open(IO_ReadOnly) ) {    // file opened successfully
     QTextStream t( &f );        // use a text stream
     s = t.read();
@@ -622,12 +627,9 @@ void EmailClient::saveMail(QString fileName, QListView *view)
     return;
   }
   item = (EmailListItem *) view->firstChild();
-  //qDebug (QString("Write : ") );
   QTextStream t(&f);
   while (item != NULL) {
     mail = item->getMail();
-    //qDebug(mail->rawMail);
-    //qDebug(mail->recipients.first());
     t << mail->rawMail;
     
     mailconf->setGroup(mail->id);
@@ -662,110 +664,85 @@ QString EmailClient::getPath(bool enclosurePath)
 
 void EmailClient::readSettings()
 {
-  TextParser *p;
-  QString s;
-  int pos, accountPos, y;
-  QFile f( getPath(FALSE) + "settings.txt");
-  
-  if ( f.open(IO_ReadOnly) ) {    // file opened successfully
-    QTextStream t( &f );        // use a text stream
-    s = t.read();
-    f.close();
+  int y,acc_count, accountPos=0;
     
-    p = new TextParser(s, "\n");
-    
-    accountPos = 0;
-    while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
-      accountPos++;
-      if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
-        account.accountName = p->getString(& ++pos, 'z', TRUE);
-      if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
-        account.name = p->getString(& ++pos, 'z', TRUE);
-      if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
-        account.emailAddress = p->getString(& ++pos, 'z', TRUE);
-      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();
-      }
+    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;
-      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();
+    
+      account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
+      if (account.synchronize)
+      {
+    	mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); 
       }
-
       
       accountList.append(&account);
     }
-    delete p;
-  }
+  
   mailconf->setGroup("mailitglobal");
-  if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) {
+  
+  if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) 
+  {
     mailIdCount = y;
   }
-  if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) {
+  if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) 
+  {
     accountIdCount = y;
   }
 }
 
 void EmailClient::saveSettings()
 {
-
-  QString temp;
-  QFile f( getPath(FALSE) + "settings.txt");
+  int acc_count=0;
   MailAccount *accountPtr;
-  
-  if (! f.open(IO_WriteOnly) ) {
-    qWarning("could not save settings file");
+
+    
+  if (!mailconf) 
+  {
+    qWarning("could not save settings");
     return;
   }
-  QTextStream t(&f);
-  t << "#Settings for OPIE 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";
+      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");
     }
-    t << "SyncLimit: ";
-    t << accountPtr->syncLimit << "\n";
-    t << "accountEnd;\n";
   }
-  f.close();
   
   mailconf->setGroup("mailitglobal");
+  mailconf->writeEntry("Accounts",acc_count);
   mailconf->writeEntry("mailidcount", mailIdCount);
   mailconf->writeEntry("accountidcount", accountIdCount);
 }
@@ -1001,4 +978,4 @@ void EmailClient::remove()
   {
 	emit remove(*mail);
   }
-}*/
\ No newline at end of file
+}*/
diff --git a/noncore/net/mailit/emailhandler.cpp b/noncore/net/mailit/emailhandler.cpp
index f6c6d60..b180051 100644
--- a/noncore/net/mailit/emailhandler.cpp
+++ b/noncore/net/mailit/emailhandler.cpp
@@ -104,18 +104,14 @@ void EmailHandler::getMail()
   }
   
   headers = FALSE;
-  popClient->headersOnly(headers, 0);
+  //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();
-  }
+  mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
   
   headers = TRUE;
   popClient->headersOnly(headers, mailAccount.syncLimit);  //less than requested syncLimit, download all
@@ -135,14 +131,14 @@ void EmailHandler::getMailByList(MailList *mailList)
   popClient->setSelectedMails(mailList);
 }
 
-void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
+void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete)
 {
   Email mail;
   
   mail.rawMail = message;
   mail.serverId = id;
   mail.size = size;
-  mail.downloaded = complete;
+  mail.downloaded = incomplete;
   
   emit mailArrived(mail, FALSE);
 }
@@ -185,7 +181,8 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
         mail->from = mail->from.left(mail->from.length() - 1);
         mail->from = mail->from.right(mail->from.length() - 1);
       }
-      pos++;
+      pos++;                 
+
       mail->fromMail = p.getString(&pos, '>', false);
     } else {
       if ((p.separatorAt(pos) == '<')
@@ -199,28 +196,47 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
     }
   }
   
-  //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
-  if ((pos = p.find("TO",':', 0, TRUE)) != -1)
+  pos=0;
+  
+  //Search for To: after the FROM: attribute to prevent hitting the Delivered-To:
+  while((pos = p.find("TO",':', pos+1, TRUE))!=-1)
   {
-    	pos++;
-    	mail->recipients.append (p.getString(&pos, 'z', TRUE) );
+  	QString rec;
+	
+  	if (p.separatorAt(pos-1)!='-')	
+	{
+		pos++;
+		mail->recipients.append(p.getString(&pos, '\r', TRUE));
+      	} 
+	/*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;
+    		}
+		mail->recipients.append (p.getString(&pos, 'z', TRUE) );
+	}*/
   }
- 
-  //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
+  //
+  //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);
+    mail->date = p.getString(&pos, 'z', TRUE);
   }
   
   
diff --git a/noncore/net/mailit/emaillistitem.cpp b/noncore/net/mailit/emaillistitem.cpp
index a325766..b925a1c 100644
--- a/noncore/net/mailit/emaillistitem.cpp
+++ b/noncore/net/mailit/emaillistitem.cpp
@@ -38,11 +38,13 @@ EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
 		setText(0, temp);
 	}
 	setText(1, mail.subject);
+	setText(2,mail.date);
 	
 	if (mailIn.files.count()>0)
 	{
 		setPixmap(0, Resource::loadPixmap("mailit/attach"));
 	}
+	
 	selected = FALSE;
 }
 
diff --git a/noncore/net/mailit/mailitwindow.cpp b/noncore/net/mailit/mailitwindow.cpp
index ef5fc09..7181adf 100644
--- a/noncore/net/mailit/mailitwindow.cpp
+++ b/noncore/net/mailit/mailitwindow.cpp
@@ -17,17 +17,18 @@
 ** not clear to you.
 **
 **********************************************************************/
+#include <qwhatsthis.h>
 #include "mailitwindow.h"
 
 MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
-  : QMainWindow(parent, name, fl)
+  : QMainWindow(parent, name, WStyle_ContextHelp)
 {
   currentCaption = "Mailit";
   setCaption(tr(currentCaption));
   views = new QWidgetStack(this);
   setCentralWidget(views);
-  
- emailClient = new EmailClient(views, "client");
+  QWhatsThis::add(views,tr("Central view area"));
+  emailClient = new EmailClient(views, "client");
   writeMail = new WriteMail(views, "writing");
   readMail = new ReadMail(views, "reading");
 
@@ -140,26 +141,3 @@ void MailItWindow::setDocument(const QString &_address)
     compose();
     writeMail->setRecipient(address);
 }
-
-/*void MailItWindow::reply(Email& mail)
-{
-	qDebug("####EmailClient: 0 reached");
-	composeReply(mail,(bool&)FALSE);
-}
-
-void MailItWindow::replyAll(Email& mail)
-{
-	qDebug("####EmailClient: 1 reached");
-	composeReply(mail,(bool&)TRUE);
-}
-
-void MailItWindow::forward(Email& mail)
-{
-	qDebug("####EmailClient: 2 reached");
-}
-
-void MailItWindow::remove(Email&)
-{
-	qDebug("####EmailClient: 3 reached");
-	//emit removeItem(eli,(bool&)TRUE);
-} */
\ No newline at end of file
diff --git a/noncore/net/mailit/popclient.cpp b/noncore/net/mailit/popclient.cpp
index f9cc337..67306be 100644
--- a/noncore/net/mailit/popclient.cpp
+++ b/noncore/net/mailit/popclient.cpp
@@ -119,7 +119,6 @@ void PopClient::incomingData()
 //    return;
   
   response = socket->readLine();
-  //qDebug(response +" %d", status);
   
   switch(status) {
     //logging in
@@ -131,18 +130,8 @@ void PopClient::incomingData()
        {
           timeStamp = response.mid( start , end - start + 1);
           md5Source = timeStamp + popPassword;
-          //qDebug( md5Source);
-//           for( int i = 0; i < md5Source.length(); i++) {
-//              buff[i] = (QChar)md5Source[i];
-//           }
           
           md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]);
-//          md5_buffer(char const *buffer, unsigned int len, char *digest);
- 
-//           MD5_Init( &ctx);
-//           MD5_Update( &ctx, buff, sizeof( buff) );
-//           MD5_Final( md5Digest, &ctx);
-//          MD5( buff, md5Source.length(), md5Digest);
 
            for(int j =0;j < MD5_DIGEST_LENGTH ;j++)
            {
@@ -164,7 +153,7 @@ void PopClient::incomingData()
           
           break;
         }
-    //password shhh. don't tell anyone (implement APOP...)
+    
     case Pass:  {
           *stream << "PASS " << popPassword << "\r\n";
           status = Stat;
@@ -248,10 +237,11 @@ void PopClient::incomingData()
     //Read message number x, count upwards to messageCount
     case Retr:  {
           if (status != Quit) {
-            if (!preview || mailSize <= headerLimit) {
+            if (mailSize <= headerLimit) 
+	    {
               *stream << "RETR " << messageCount << "\r\n";
             } else {        //only header
-              *stream << "TOP " << messageCount << " 0\r\n";
+	     *stream << "TOP " << messageCount << " 0\r\n";
             }
             messageCount++;
             status = Ignore;
@@ -283,8 +273,10 @@ void PopClient::incomingData()
               break;
             } else {  //message reach entire size
               //complete mail downloaded
-              if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
-                emit newMessage(message, messageCount-1, mailSize, TRUE);
+		//if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
+	      if ( mailSize <= headerLimit)
+	      {
+	    	emit newMessage(message, messageCount-1, mailSize, TRUE);
               } else {  //incomplete mail downloaded
 		emit newMessage(message, messageCount-1, mailSize, FALSE);
               }
diff --git a/noncore/net/mailit/readmail.cpp b/noncore/net/mailit/readmail.cpp
index dc98a6f..4eae7f6 100644
--- a/noncore/net/mailit/readmail.cpp
+++ b/noncore/net/mailit/readmail.cpp
@@ -59,36 +59,46 @@ void ReadMail::init()
 	replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
 		QString::null, 0, this, 0 );
 	connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
-	
+  	replyButton->setWhatsThis(tr("Click here to reply to the selected mail"));
+		
 	forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
 	QString::null, 0, this, 0 );
 	connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
+	forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
 	
 	previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
 	connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
 	previousButton->addTo(bar);
 	previousButton->addTo(viewMenu);
+	previousButton->setWhatsThis(tr("Read the previous mail in the list"));
 
 	nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
 	connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) );
 	nextButton->addTo(bar);
 	nextButton->addTo(viewMenu);
+	previousButton->setWhatsThis(tr("Read the next mail in the list"));
 
-	attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 );
-	connect( attatchmentsButton, SIGNAL( activated() ), this,
-		SLOT( viewAttatchments() ) );
-	attatchmentsButton->addTo(bar);
-	attatchmentsButton->addTo(viewMenu);
+	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" ));
 
 	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()));
 		
@@ -248,8 +258,8 @@ void ReadMail::updateView()
 	}
 	
 	if (mail->files.count() == 0)
-		attatchmentsButton->setEnabled(FALSE);
-	else attatchmentsButton->setEnabled(TRUE);
+		attachmentButton->setEnabled(FALSE);
+	else attachmentButton->setEnabled(TRUE);
 	
 	setCaption("Examining mail: " + mail->subject);
 }
@@ -339,7 +349,7 @@ void ReadMail::shiftText()
 	updateView();
 }
 
-void ReadMail::viewAttatchments()
+void ReadMail::viewAttachments()
 {
 	viewAtt->update(mail, inbox);
 	viewAtt->showMaximized();
diff --git a/noncore/net/mailit/readmail.h b/noncore/net/mailit/readmail.h
index 0fe0646..df32c34 100644
--- a/noncore/net/mailit/readmail.h
+++ b/noncore/net/mailit/readmail.h
@@ -57,7 +57,7 @@ public slots:
 	void previous();
 	void deleteItem();
 	void shiftText();
-	void viewAttatchments();
+	void viewAttachments();
 	void reply();
 	void forward();
 	
@@ -80,7 +80,7 @@ private:
 	QAction *plainTextButton;
 	QAction *nextButton;
 	QTextView *emailView;
-	QAction *attatchmentsButton;
+	QAction *attachmentButton;
 	QAction *previousButton;
 	QAction *replyButton;
 	QAction *forwardButton;
diff --git a/noncore/net/mailit/smtpclient.cpp b/noncore/net/mailit/smtpclient.cpp
index b2e38e5..8a51a5b 100644
--- a/noncore/net/mailit/smtpclient.cpp
+++ b/noncore/net/mailit/smtpclient.cpp
@@ -87,7 +87,6 @@ void SmtpClient::incomingData()
     return;
   
   response = socket->readLine();
-  //qDebug(response);
 
   switch(status) {
     case Init:  {
@@ -95,7 +94,6 @@ void SmtpClient::incomingData()
             status = From;
             mailPtr = mailList.first();
             *stream << "HELO there\r\n";
-            //qDebug("HELO");
           } else errorHandling(ErrUnknownResponse);
           break;
         } 
@@ -103,7 +101,6 @@ void SmtpClient::incomingData()
           if (response[0] == '2') {
             *stream << "MAIL FROM: " << mailPtr->from << "\r\n";
             status = Recv;
-            //qDebug("MAIL FROM: "+mailPtr->from);
           } else errorHandling(ErrUnknownResponse);
           break;
         } 
@@ -113,7 +110,6 @@ void SmtpClient::incomingData()
             if (it == NULL)
               errorHandling(ErrUnknownResponse);
             *stream << "RCPT TO: " << *it << ">\r\n";
-            //qDebug("RCPT TO: "+ *it);
             status = MRcv;
           } else errorHandling(ErrUnknownResponse);
           break;
@@ -123,7 +119,6 @@ void SmtpClient::incomingData()
             it++;
             if ( it != mailPtr->to.end() ) {
               *stream << "RCPT TO: <" << *it << ">\r\n";
-            //qDebug("RCPT TO: "+ *it);
               break;
             } else  {
               status = Data;
@@ -134,7 +129,6 @@ void SmtpClient::incomingData()
           if (response[0] == '2') {
             *stream << "DATA\r\n";
             status = Body;
-            //qDebug("DATA");
             emit updateStatus(tr("Sending: ") + mailPtr->subject);
           } else errorHandling(ErrUnknownResponse);
           break;
@@ -148,7 +142,6 @@ void SmtpClient::incomingData()
             } else {
               status = Quit;
             }
-            //qDebug("BODY");
           } else errorHandling(ErrUnknownResponse);
           break;
         } 
@@ -163,7 +156,6 @@ void SmtpClient::incomingData()
             mailList.clear();
             sending = FALSE;
             socket->close();
-            //qDebug("QUIT");
           } else errorHandling(ErrUnknownResponse);
           break;
         }
diff --git a/noncore/net/mailit/textparser.cpp b/noncore/net/mailit/textparser.cpp
index f082417..3fa5f6e 100644
--- a/noncore/net/mailit/textparser.cpp
+++ b/noncore/net/mailit/textparser.cpp
@@ -62,27 +62,37 @@ void TextParser::createSeparators()
 /*	Returns pos of given search criteria, -1 if not found */
 int TextParser::find(QString target, QChar sep, int pos, bool upperCase)
 {
+	
+	t_splitElm parsstr;
+	QString pString;
+	
 	int atLine = 0, atPosElm = 0;
 	
-	for (int x = 0; x < totalElmCount; x++) {
-		if (x >= pos) {
-			if (upperCase) {
-				if ((splitDone[atLine].elm[atPosElm].str.upper() == target) &&
-					(splitDone[atLine].elm[atPosElm].separator == sep))
-						return x;
-			} else {
-				if ((splitDone[atLine].elm[atPosElm].str == target) &&
-					(splitDone[atLine].elm[atPosElm].separator == sep))
-						return x;
-			}
-		}
-		atPosElm++;
-		if (atPosElm >= splitDone[atLine].elmCount) {  //new Line
+	getLineReference(pos,&atLine,&atPosElm);
+	
+	for (int x = pos; x < totalElmCount; x++) 
+	{
+		parsstr=splitDone[atLine].elm[atPosElm++];
+	
+		if (upperCase)
+		{
+		 	pString=parsstr.str.upper();
+			target=target.upper();
+		}	
+		else
+		{
+			pString=parsstr.str;
+		}				
+		if ((pString == target) && (parsstr.separator == sep))
+		{
+			return x;
+		}	
+		if (atPosElm >= splitDone[atLine].elmCount) 
+		{  //new Line
 			atLine++;
 			atPosElm = 0;
 		}
 	}
-	
 	return -1;
 }
 
diff --git a/noncore/net/mailit/viewatt.cpp b/noncore/net/mailit/viewatt.cpp
index b6f5015..21885c2 100644
--- a/noncore/net/mailit/viewatt.cpp
+++ b/noncore/net/mailit/viewatt.cpp
@@ -19,6 +19,7 @@
 **********************************************************************/
 #include "resource.h"
 #include "viewatt.h"
+#include <qwhatsthis.h>
 #include <qpe/applnk.h>
 #include <qpe/mimetype.h>
 
@@ -31,12 +32,14 @@ ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f)
 	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( "Attatchment" );
 	listView->addColumn( "Type" );
 	listView->addColumn( "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)
diff --git a/noncore/net/mailit/writemail.cpp b/noncore/net/mailit/writemail.cpp
index a9dcb02..0336c83 100644
--- a/noncore/net/mailit/writemail.cpp
+++ b/noncore/net/mailit/writemail.cpp
@@ -18,6 +18,7 @@
 **
 **********************************************************************/
 #include <qmessagebox.h>
+#include <qwhatsthis.h>
 #include "writemail.h"
 #include <qpe/resource.h>
 
@@ -27,7 +28,7 @@ WriteMail::WriteMail( QWidget* parent,  const char* name, WFlags fl )
 	showingAddressList = FALSE;
 	init();
 	
-	addAtt = new AddAtt(0, "Add Attatchments");
+	addAtt = new AddAtt(0, "Add Attachments");
 }
 
 WriteMail::~WriteMail()
@@ -64,20 +65,23 @@ void WriteMail::init()
 	menu->insertItem( tr( "&Add" ), addMenu);
 	
 	bar = new QToolBar(this);
-	attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
-	attatchButton->addTo(bar);
-	attatchButton->addTo(addMenu);
-	connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) );
-	
+	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 );
 
@@ -88,7 +92,6 @@ void WriteMail::init()
 	grid->addWidget( recipientsBox, 0, 0 );
 	connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int)));
 	
-	
 	subjetLabel = new QLabel( widget, "subjetLabel" );
 	subjetLabel->setText( tr( "Subject:"  ) );
 
@@ -100,25 +103,28 @@ void WriteMail::init()
 
 	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(recipientsBox,QWidget::tr("Enter your mail text here"));
 
-	
 	addressView = new QListView( widget, "addressView");
 	addressView->addColumn("Name");
 	addressView->addColumn("EMail");
@@ -126,11 +132,13 @@ void WriteMail::init()
 	addressView->setMultiSelection(TRUE);
 	addressView->hide();
 	grid->addMultiCellWidget( addressView, 3, 3, 0, 2);
-	
+	QWhatsThis::add(recipientsBox,QWidget::tr("Chose 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);
 }
@@ -143,7 +151,7 @@ void WriteMail::reject()
 // need to insert date
 void WriteMail::accept()
 {
-	QStringList attatchedFiles, attatchmentsType;
+	QStringList attachedFiles, attachmentsType;
 	int idCount = 0;
 	
 	if (toInput->text() == "") 
@@ -196,13 +204,13 @@ void WriteMail::accept()
 	mail.rawMail += mail.subject;
 	mail.rawMail += "\n\n";
 	
-	attatchedFiles = addAtt->returnAttatchedFiles();
-	attatchmentsType = addAtt->returnFileTypes();
+	attachedFiles = addAtt->returnattachedFiles();
+	attachmentsType = addAtt->returnFileTypes();
 
-	QStringList::Iterator itType = attatchmentsType.begin();
+	QStringList::Iterator itType = attachmentsType.begin();
 	
 	Enclosure e;
-	for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) {
+	for ( QStringList::Iterator it = attachedFiles.begin(); it != attachedFiles.end(); ++it ) {
 		e.id = idCount;
 		e.originalName = (*it).latin1();
 		e.contentType = (*itType).latin1();
@@ -236,7 +244,7 @@ void WriteMail::getAddress()
 	}
 }
 
-void WriteMail::attatchFile()
+void WriteMail::attachFile()
 {
 	addAtt->showMaximized();
 }
@@ -256,7 +264,7 @@ void WriteMail::reply(Email replyMail, bool replyAll)
 	subjectInput->setText(tr("Re: ") + mail.subject);
 	
 	pos = 0;
-	mail.body.insert(pos, ">>");
+	mail.body.insert(pos, ">");
 	while (pos != -1) {
 		pos = mail.body.find('\n', pos);
 		if (pos != -1)
diff --git a/noncore/net/mailit/writemail.h b/noncore/net/mailit/writemail.h
index f193b13..921f27e 100644
--- a/noncore/net/mailit/writemail.h
+++ b/noncore/net/mailit/writemail.h
@@ -55,7 +55,7 @@ signals:
 	
 public slots:
 	void getAddress();
-	void attatchFile();
+	void attachFile();
 	void addRecipients();
 	void newMail();
 	void accept();
@@ -79,7 +79,7 @@ private:
 	
 	QToolButton *okButton;
 	QWidget *widget;
-	QAction *attatchButton;
+	QAction *attachButton;
 	QAction *confirmButton;
 	QAction *newButton;
 	QLabel* subjetLabel;
diff --git a/noncore/unsupported/mailit/addatt.cpp b/noncore/unsupported/mailit/addatt.cpp
index d268f1f..daefac6 100644
--- a/noncore/unsupported/mailit/addatt.cpp
+++ b/noncore/unsupported/mailit/addatt.cpp
@@ -56,13 +56,13 @@ FileItem::~FileItem()
 AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
 	: QDialog(parent, name, f)
 {
-	setCaption("Adding attatchments");
+	setCaption("Adding attachments");
 
 	QGridLayout *top = new QGridLayout(this, 1,1 );
 	
 	QHBox *buttons=new QHBox(this);
 	/*fileCategoryButton = new QPushButton(this);*/
-	attatchButton = new QPushButton(tr("Attatch..."), buttons);
+	attachButton = new QPushButton(tr("attach..."), buttons);
 	removeButton = new QPushButton(tr("Remove"), buttons);
 
 	/*fileCategories = new QPopupMenu(fileCategoryButton);
@@ -78,27 +78,27 @@ AddAtt::AddAtt(QWidget *parent, const char *name, WFlags f)
 	
 
 	top->addWidget(buttons,1,0);
-	//buttons->addWidget(attatchButton,0,0);
+	//buttons->addWidget(attachButton,0,0);
 	//buttons->addWidget(removeButton,0,1);
 
 	//connect(fileCategories, SIGNAL(activated(int)), this,
     	//	SLOT(fileCategorySelected(int)) );*/
-	connect(attatchButton, SIGNAL(clicked()), this,
-		SLOT(addAttatchment()) );
+	connect(attachButton, SIGNAL(clicked()), this,
+		SLOT(addattachment()) );
 	connect(removeButton, SIGNAL(clicked()), this,
-		SLOT(removeAttatchment()) );
+		SLOT(removeattachment()) );
 	
 	/*listView = new QListView(this, "AttView");
 	listView->addColumn("Documents");*
 	connect(listView, SIGNAL(doubleClicked(QListViewItem *)), this,
-		SLOT(addAttatchment()) );*/
+		SLOT(addattachment()) );*/
 	
 	
 	attView = new QListView(this, "Selected");
 	attView->addColumn(tr("Attached"));
 	attView->addColumn(tr("File type"));
 	connect(attView, SIGNAL(doubleClicked(QListViewItem *)), this,
-		SLOT(removeAttatchment()) );
+		SLOT(removeattachment()) );
 
 	//top->addWidget(ofs, 0,0);
 	top->addWidget(attView, 0,0);
@@ -121,7 +121,7 @@ void AddAtt::clear()
 	getFiles();
 }*/
 
-void AddAtt::addAttatchment()
+void AddAtt::addattachment()
 {	
 	OFileDialog ofs("Attachments",this,0,0,"/root/Documents");
 	
@@ -138,7 +138,7 @@ void AddAtt::addAttatchment()
 	}
 }
 
-void AddAtt::removeAttatchment()
+void AddAtt::removeattachment()
 {
 	if (attView->selectedItem() != NULL) 
 	{
@@ -192,7 +192,7 @@ void AddAtt::getFiles()
 	}*/
 }
 
-QStringList AddAtt::returnAttatchedFiles()
+QStringList AddAtt::returnattachedFiles()
 {
 	QFileInfo info;
 	QStringList list;
diff --git a/noncore/unsupported/mailit/addatt.h b/noncore/unsupported/mailit/addatt.h
index fcf3279..a365947 100644
--- a/noncore/unsupported/mailit/addatt.h
+++ b/noncore/unsupported/mailit/addatt.h
@@ -49,7 +49,7 @@ class AddAtt : public QDialog
 
 public:
 	AddAtt(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
-	QStringList returnAttatchedFiles();	
+	QStringList returnattachedFiles();	
 	QStringList returnFileTypes();
 	void getFiles();
 	void clear();
@@ -57,15 +57,15 @@ public:
 	
 public slots:
 	//void fileCategorySelected(int);
-	void addAttatchment();
-	void removeAttatchment();
+	void addattachment();
+	void removeattachment();
 	void reject();
 	void accept();
 	
 private:
 	FileItem* item;
 	QListView *attView;
-	QPushButton *attatchButton, *removeButton;
+	QPushButton *attachButton, *removeButton;
 	QPopupMenu *fileCategories;
 	bool modified;
 	//QFileInfo *fi;
diff --git a/noncore/unsupported/mailit/addresslist.cpp b/noncore/unsupported/mailit/addresslist.cpp
index 8d9ab91..7d60ebf 100644
--- a/noncore/unsupported/mailit/addresslist.cpp
+++ b/noncore/unsupported/mailit/addresslist.cpp
@@ -121,7 +121,7 @@ void AddressList::read()
 	QString lineEmail, lineName, email, name;
 	OContactAccess m_contactdb("mailit");
 	OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 );
-	//OContact* oc;
+	//OContact* oc;(*it).defaultEmail()
 	
 	for ( it = m_list.begin(); it != m_list.end(); ++it )
 	{
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index ad1e0b4..23059cf 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -23,6 +23,7 @@
 #include <qcheckbox.h>
 #include <qmenubar.h>
 #include <qaction.h>
+#include <qwhatsthis.h>
 #include <qpe/resource.h>
 #include "emailclient.h"
 
@@ -82,6 +83,7 @@ EmailClient::EmailClient( QWidget* parent,  const char* name, WFlags fl )
   readMail();
   lineShift = "\r\n";
   
+  mailboxView->setCurrentTab(0);  //ensure that inbox has focus
 }
 
 
@@ -113,6 +115,7 @@ void EmailClient::init()
     status2Label, SLOT(setText(const QString &)) );
   
   progressBar = new QProgressBar(statusBar);
+
   connect(emailHandler, SIGNAL(mailboxSize(int)),
     this, SLOT(setTotalSize(int)) );
   connect(emailHandler, SIGNAL(currentMailSize(int)),
@@ -127,6 +130,7 @@ void EmailClient::init()
   setToolBarsMovable(FALSE);
   
   bar = new QToolBar(this);
+  QWhatsThis::add(bar,tr("Main operation toolbar"));
   bar->setHorizontalStretchable( TRUE );
 
   mb = new QMenuBar( bar );
@@ -148,45 +152,34 @@ void EmailClient::init()
   bar = new QToolBar(this);
 
   getMailButton = new QToolButton(Resource::loadPixmap("mailit/getmail"),tr("getMail"),tr("select account"), this,SLOT(getAllNewMail()),bar);
-  //connect(setAccountlButton, SIGNAL(activated()), this, SLOT(setCurrentAccount()) );
- // setAccountButton->addTo(bar);
-  //setAccountButton->addTo(mail);
-  
-  /*idCount = 0;
-  
-  for (MailAccount* accountPtr = accountList.first(); accountPtr != 0;
-      accountPtr = accountList.next()) {
-    
-    selectAccountMenu->insertItem(accountPtr->accountName,this, SLOT(selectAccount(int)), 0, idCount);
-    idCount++;
-  }*/
+  QWhatsThis::add(getMailButton,tr("Click to download mail via all available accounts.\n Press and hold to select the desired account."));
+
   getMailButton->setPopup(selectAccountMenu);
-    
-  
-  /*getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
-  connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
-  getMailButton->addTo(bar);*/
-  //getMailButton->addTo(mail);
-  
+      
   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" );
 
@@ -201,6 +194,8 @@ void EmailClient::init()
   inboxView->addColumn( tr( "Date" ) );
   inboxView->setMinimumSize( QSize( 0, 0 ) );
   inboxView->setAllColumnsShowFocus(TRUE);
+  QWhatsThis::add(inboxView,QWidget::tr("This is the inbox view.\n It keeps the fetched mail which can be viewed by double clicking the entry.\n"
+  "					A blue attachment icon shows whether this mail has attachments."));
 
   grid_2->addWidget( inboxView, 2, 0 );
   mailboxView->addTab( widget, "mailit/inbox", tr( "Inbox" ) );
@@ -215,12 +210,12 @@ void EmailClient::init()
   outboxView->addColumn( tr( "Subject" ) );
   outboxView->setAllColumnsShowFocus(TRUE);
 
+  QWhatsThis::add(outboxView,QWidget::tr("This is the oubox view.\n It keeps the queued mails to send which can be reviewed by double clicking the entry."));
   grid_3->addWidget( outboxView, 0, 0 );
   mailboxView->addTab( widget_2,"mailit/outbox", tr( "Outbox" ) );
   
   setCentralWidget(mailboxView);
   
-  mailboxView->setCurrentTab(0);
 }
 
 void EmailClient::compose()
@@ -324,7 +319,7 @@ void EmailClient::getNewMail() {
   progressBar->reset();
     
   //get any previous mails not downloaded and add to queue
-/*  mailDownloadList.clear();
+  mailDownloadList.clear();
   Email *mailPtr;
   item = (EmailListItem *) inboxView->firstChild();
   while (item != NULL) {
@@ -333,9 +328,10 @@ void EmailClient::getNewMail() {
       mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
     }
     item = (EmailListItem *) item->nextSibling();
-  }*/
+  }
   
   emailHandler->getMailHeaders();
+  
 }
 
 void EmailClient::getAllNewMail()
@@ -351,15 +347,17 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
   Email newMail;
   int thisMailId;
   emailHandler->parse(mail.rawMail, lineShift, &newMail);
-  
   mailconf->setGroup(newMail.id);
-  
-  if (fromDisk) {
+    
+  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
+  } 
+  else 
+  {  //mail arrived from server
     newMail.serverId = mail.serverId;
     newMail.size = mail.size;
     newMail.downloaded = mail.downloaded;
@@ -378,7 +376,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
     
     //set server count, so that if the user aborts, the new
     //header is not reloaded
-    if (currentAccount->synchronize)
+    if ((currentAccount)&&(currentAccount->synchronize))
       currentAccount->lastServerMailCount++;
     
     mailconf->writeEntry("internalmailid", thisMailId);
@@ -386,13 +384,15 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
     mailconf->writeEntry("size", (int) newMail.size);
     mailconf->writeEntry("serverid", newMail.serverId);
     
-    addressList->addContact(newMail.fromMail, newMail.from);
-  } else if (!fromDisk) {   //body to header arrived
-    mailconf->writeEntry("downloaded", TRUE);
+    //addressList->addContact(newMail.fromMail, newMail.from);
   }
+  
+  mailconf->writeEntry("downloaded", newMail.downloaded);
+  
   QString stringMailId;
   stringMailId.setNum(thisMailId);
-  //se if any attatchments needs to be stored
+  //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);
@@ -426,22 +426,29 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
       }   
     }
   }
-  if (!previewingMail && !fromDisk) {
+
+  bool found=false;
+  
+  if (!fromDisk) 
+  {
+    
     Email *mailPtr;
     item = (EmailListItem *) inboxView->firstChild();
-    while (item != NULL) {
+    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();
     }
-  } else {
-    item = new EmailListItem(inboxView, newMail, TRUE);
-    if (!newMail.downloaded)
-      mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
   }
+  if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
+    
+    /*if (!newMail.downloaded)
+      mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
   
   mailboxView->setCurrentTab(0);
   
@@ -450,7 +457,7 @@ void EmailClient::mailArrived(const Email &mail, bool fromDisk)
 void EmailClient::allMailArrived(int count)
 {
   // not previewing means all mailtransfer has been done
-  if (!previewingMail) {
+  /*if (!previewingMail) {*/
     if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
       emit newCaption("Mailit - " + currentAccount->accountName);
       getNewMail();
@@ -466,14 +473,14 @@ void EmailClient::allMailArrived(int count)
       progressBar->reset();
       return;
     }
-  }
+  //}
   
   // all headers downloaded from server, start downloading remaining mails
   previewingMail = FALSE;
   status1Label->setText(currentAccount->accountName);
   progressBar->reset();
 
-  emailHandler->getMailByList(&mailDownloadList);
+  //emailHandler->getMailByList(&mailDownloadList);
   
   mailboxView->setCurrentTab(0);
 }
@@ -541,7 +548,7 @@ void EmailClient::popError(int code)
 
 void EmailClient::inboxItemSelected()
 {
-  killTimer(timerID);
+  //killTimer(timerID);
   
   item = (EmailListItem*) inboxView->selectedItem();
   if (item != NULL) {
@@ -551,7 +558,7 @@ void EmailClient::inboxItemSelected()
 
 void EmailClient::outboxItemSelected()
 {
-  killTimer(timerID);
+  //killTimer(timerID);
   
   item = (EmailListItem*) outboxView->selectedItem();
   if (item != NULL) {
@@ -567,9 +574,7 @@ void EmailClient::readMail()
   QString s, del;
 
   QFile f(getPath(FALSE) + "inbox.txt");
-//  QFileInfo fi(f);
-  //qDebug( f.name());
-
+  
   if ( f.open(IO_ReadOnly) ) {    // file opened successfully
     QTextStream t( &f );        // use a text stream
     s = t.read();
@@ -622,12 +627,9 @@ void EmailClient::saveMail(QString fileName, QListView *view)
     return;
   }
   item = (EmailListItem *) view->firstChild();
-  //qDebug (QString("Write : ") );
   QTextStream t(&f);
   while (item != NULL) {
     mail = item->getMail();
-    //qDebug(mail->rawMail);
-    //qDebug(mail->recipients.first());
     t << mail->rawMail;
     
     mailconf->setGroup(mail->id);
@@ -662,110 +664,85 @@ QString EmailClient::getPath(bool enclosurePath)
 
 void EmailClient::readSettings()
 {
-  TextParser *p;
-  QString s;
-  int pos, accountPos, y;
-  QFile f( getPath(FALSE) + "settings.txt");
-  
-  if ( f.open(IO_ReadOnly) ) {    // file opened successfully
-    QTextStream t( &f );        // use a text stream
-    s = t.read();
-    f.close();
+  int y,acc_count, accountPos=0;
     
-    p = new TextParser(s, "\n");
-    
-    accountPos = 0;
-    while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
-      accountPos++;
-      if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
-        account.accountName = p->getString(& ++pos, 'z', TRUE);
-      if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
-        account.name = p->getString(& ++pos, 'z', TRUE);
-      if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
-        account.emailAddress = p->getString(& ++pos, 'z', TRUE);
-      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();
-      }
+    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;
-      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();
+    
+      account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
+      if (account.synchronize)
+      {
+    	mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); 
       }
-
       
       accountList.append(&account);
     }
-    delete p;
-  }
+  
   mailconf->setGroup("mailitglobal");
-  if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) {
+  
+  if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) 
+  {
     mailIdCount = y;
   }
-  if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) {
+  if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) 
+  {
     accountIdCount = y;
   }
 }
 
 void EmailClient::saveSettings()
 {
-
-  QString temp;
-  QFile f( getPath(FALSE) + "settings.txt");
+  int acc_count=0;
   MailAccount *accountPtr;
-  
-  if (! f.open(IO_WriteOnly) ) {
-    qWarning("could not save settings file");
+
+    
+  if (!mailconf) 
+  {
+    qWarning("could not save settings");
     return;
   }
-  QTextStream t(&f);
-  t << "#Settings for OPIE 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";
+      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");
     }
-    t << "SyncLimit: ";
-    t << accountPtr->syncLimit << "\n";
-    t << "accountEnd;\n";
   }
-  f.close();
   
   mailconf->setGroup("mailitglobal");
+  mailconf->writeEntry("Accounts",acc_count);
   mailconf->writeEntry("mailidcount", mailIdCount);
   mailconf->writeEntry("accountidcount", accountIdCount);
 }
@@ -1001,4 +978,4 @@ void EmailClient::remove()
   {
 	emit remove(*mail);
   }
-}*/
\ No newline at end of file
+}*/
diff --git a/noncore/unsupported/mailit/emailhandler.cpp b/noncore/unsupported/mailit/emailhandler.cpp
index f6c6d60..b180051 100644
--- a/noncore/unsupported/mailit/emailhandler.cpp
+++ b/noncore/unsupported/mailit/emailhandler.cpp
@@ -104,18 +104,14 @@ void EmailHandler::getMail()
   }
   
   headers = FALSE;
-  popClient->headersOnly(headers, 0);
+  //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();
-  }
+  mailAccount.synchronize ? popClient->setSynchronize(mailAccount.lastServerMailCount): popClient->removeSynchronize();
   
   headers = TRUE;
   popClient->headersOnly(headers, mailAccount.syncLimit);  //less than requested syncLimit, download all
@@ -135,14 +131,14 @@ void EmailHandler::getMailByList(MailList *mailList)
   popClient->setSelectedMails(mailList);
 }
 
-void EmailHandler::messageArrived(const QString &message, int id, uint size, bool complete)
+void EmailHandler::messageArrived(const QString &message, int id, uint size, bool incomplete)
 {
   Email mail;
   
   mail.rawMail = message;
   mail.serverId = id;
   mail.size = size;
-  mail.downloaded = complete;
+  mail.downloaded = incomplete;
   
   emit mailArrived(mail, FALSE);
 }
@@ -185,7 +181,8 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
         mail->from = mail->from.left(mail->from.length() - 1);
         mail->from = mail->from.right(mail->from.length() - 1);
       }
-      pos++;
+      pos++;                 
+
       mail->fromMail = p.getString(&pos, '>', false);
     } else {
       if ((p.separatorAt(pos) == '<')
@@ -199,28 +196,47 @@ bool EmailHandler::parse(QString in, QString lineShift, Email *mail)
     }
   }
   
-  //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
-  if ((pos = p.find("TO",':', 0, TRUE)) != -1)
+  pos=0;
+  
+  //Search for To: after the FROM: attribute to prevent hitting the Delivered-To:
+  while((pos = p.find("TO",':', pos+1, TRUE))!=-1)
   {
-    	pos++;
-    	mail->recipients.append (p.getString(&pos, 'z', TRUE) );
+  	QString rec;
+	
+  	if (p.separatorAt(pos-1)!='-')	
+	{
+		pos++;
+		mail->recipients.append(p.getString(&pos, '\r', TRUE));
+      	} 
+	/*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;
+    		}
+		mail->recipients.append (p.getString(&pos, 'z', TRUE) );
+	}*/
   }
- 
-  //@@@ToDo: Rewrite the parser as To: stops at the first occurence- which is Delivered-To:
+  //
+  //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);
+    mail->date = p.getString(&pos, 'z', TRUE);
   }
   
   
diff --git a/noncore/unsupported/mailit/emaillistitem.cpp b/noncore/unsupported/mailit/emaillistitem.cpp
index a325766..b925a1c 100644
--- a/noncore/unsupported/mailit/emaillistitem.cpp
+++ b/noncore/unsupported/mailit/emaillistitem.cpp
@@ -38,11 +38,13 @@ EmailListItem::EmailListItem(QListView *parent, Email mailIn, bool inbox)
 		setText(0, temp);
 	}
 	setText(1, mail.subject);
+	setText(2,mail.date);
 	
 	if (mailIn.files.count()>0)
 	{
 		setPixmap(0, Resource::loadPixmap("mailit/attach"));
 	}
+	
 	selected = FALSE;
 }
 
diff --git a/noncore/unsupported/mailit/mailitwindow.cpp b/noncore/unsupported/mailit/mailitwindow.cpp
index ef5fc09..7181adf 100644
--- a/noncore/unsupported/mailit/mailitwindow.cpp
+++ b/noncore/unsupported/mailit/mailitwindow.cpp
@@ -17,17 +17,18 @@
 ** not clear to you.
 **
 **********************************************************************/
+#include <qwhatsthis.h>
 #include "mailitwindow.h"
 
 MailItWindow::MailItWindow(QWidget *parent, const char *name, WFlags fl)
-  : QMainWindow(parent, name, fl)
+  : QMainWindow(parent, name, WStyle_ContextHelp)
 {
   currentCaption = "Mailit";
   setCaption(tr(currentCaption));
   views = new QWidgetStack(this);
   setCentralWidget(views);
-  
- emailClient = new EmailClient(views, "client");
+  QWhatsThis::add(views,tr("Central view area"));
+  emailClient = new EmailClient(views, "client");
   writeMail = new WriteMail(views, "writing");
   readMail = new ReadMail(views, "reading");
 
@@ -140,26 +141,3 @@ void MailItWindow::setDocument(const QString &_address)
     compose();
     writeMail->setRecipient(address);
 }
-
-/*void MailItWindow::reply(Email& mail)
-{
-	qDebug("####EmailClient: 0 reached");
-	composeReply(mail,(bool&)FALSE);
-}
-
-void MailItWindow::replyAll(Email& mail)
-{
-	qDebug("####EmailClient: 1 reached");
-	composeReply(mail,(bool&)TRUE);
-}
-
-void MailItWindow::forward(Email& mail)
-{
-	qDebug("####EmailClient: 2 reached");
-}
-
-void MailItWindow::remove(Email&)
-{
-	qDebug("####EmailClient: 3 reached");
-	//emit removeItem(eli,(bool&)TRUE);
-} */
\ No newline at end of file
diff --git a/noncore/unsupported/mailit/popclient.cpp b/noncore/unsupported/mailit/popclient.cpp
index f9cc337..67306be 100644
--- a/noncore/unsupported/mailit/popclient.cpp
+++ b/noncore/unsupported/mailit/popclient.cpp
@@ -119,7 +119,6 @@ void PopClient::incomingData()
 //    return;
   
   response = socket->readLine();
-  //qDebug(response +" %d", status);
   
   switch(status) {
     //logging in
@@ -131,18 +130,8 @@ void PopClient::incomingData()
        {
           timeStamp = response.mid( start , end - start + 1);
           md5Source = timeStamp + popPassword;
-          //qDebug( md5Source);
-//           for( int i = 0; i < md5Source.length(); i++) {
-//              buff[i] = (QChar)md5Source[i];
-//           }
           
           md5_buffer( (char const *)md5Source, md5Source.length(),&md5Digest[0]);
-//          md5_buffer(char const *buffer, unsigned int len, char *digest);
- 
-//           MD5_Init( &ctx);
-//           MD5_Update( &ctx, buff, sizeof( buff) );
-//           MD5_Final( md5Digest, &ctx);
-//          MD5( buff, md5Source.length(), md5Digest);
 
            for(int j =0;j < MD5_DIGEST_LENGTH ;j++)
            {
@@ -164,7 +153,7 @@ void PopClient::incomingData()
           
           break;
         }
-    //password shhh. don't tell anyone (implement APOP...)
+    
     case Pass:  {
           *stream << "PASS " << popPassword << "\r\n";
           status = Stat;
@@ -248,10 +237,11 @@ void PopClient::incomingData()
     //Read message number x, count upwards to messageCount
     case Retr:  {
           if (status != Quit) {
-            if (!preview || mailSize <= headerLimit) {
+            if (mailSize <= headerLimit) 
+	    {
               *stream << "RETR " << messageCount << "\r\n";
             } else {        //only header
-              *stream << "TOP " << messageCount << " 0\r\n";
+	     *stream << "TOP " << messageCount << " 0\r\n";
             }
             messageCount++;
             status = Ignore;
@@ -283,8 +273,10 @@ void PopClient::incomingData()
               break;
             } else {  //message reach entire size
               //complete mail downloaded
-              if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
-                emit newMessage(message, messageCount-1, mailSize, TRUE);
+		//if ( (!preview ) || ((preview) && (mailSize <= headerLimit)) ){
+	      if ( mailSize <= headerLimit)
+	      {
+	    	emit newMessage(message, messageCount-1, mailSize, TRUE);
               } else {  //incomplete mail downloaded
 		emit newMessage(message, messageCount-1, mailSize, FALSE);
               }
diff --git a/noncore/unsupported/mailit/readmail.cpp b/noncore/unsupported/mailit/readmail.cpp
index dc98a6f..4eae7f6 100644
--- a/noncore/unsupported/mailit/readmail.cpp
+++ b/noncore/unsupported/mailit/readmail.cpp
@@ -59,36 +59,46 @@ void ReadMail::init()
 	replyButton = new QAction( tr( "Reply" ), Resource::loadPixmap( "mailit/reply" ),
 		QString::null, 0, this, 0 );
 	connect(replyButton, SIGNAL(activated()), this, SLOT(reply()) );
-	
+  	replyButton->setWhatsThis(tr("Click here to reply to the selected mail"));
+		
 	forwardButton = new QAction( tr( "Forward" ), Resource::loadPixmap( "mailit/forward" ),
 	QString::null, 0, this, 0 );
 	connect(forwardButton, SIGNAL(activated()), this, SLOT(forward()) );
+	forwardButton->setWhatsThis(tr("Click here to forward the selected mail"));
 	
 	previousButton = new QAction( tr( "Previous" ), Resource::loadPixmap( "back" ), QString::null, 0, this, 0 );
 	connect( previousButton, SIGNAL( activated() ), this, SLOT( previous() ) );
 	previousButton->addTo(bar);
 	previousButton->addTo(viewMenu);
+	previousButton->setWhatsThis(tr("Read the previous mail in the list"));
 
 	nextButton = new QAction( tr( "Next" ), Resource::loadPixmap( "forward" ), QString::null, 0, this, 0 );
 	connect( nextButton, SIGNAL( activated() ), this, SLOT( next() ) );
 	nextButton->addTo(bar);
 	nextButton->addTo(viewMenu);
+	previousButton->setWhatsThis(tr("Read the next mail in the list"));
 
-	attatchmentsButton = new QAction( tr( "Attatchments" ), Resource::loadPixmap( "mailit/attach" ), QString::null, 0, this, 0 );
-	connect( attatchmentsButton, SIGNAL( activated() ), this,
-		SLOT( viewAttatchments() ) );
-	attatchmentsButton->addTo(bar);
-	attatchmentsButton->addTo(viewMenu);
+	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" ));
 
 	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()));
 		
@@ -248,8 +258,8 @@ void ReadMail::updateView()
 	}
 	
 	if (mail->files.count() == 0)
-		attatchmentsButton->setEnabled(FALSE);
-	else attatchmentsButton->setEnabled(TRUE);
+		attachmentButton->setEnabled(FALSE);
+	else attachmentButton->setEnabled(TRUE);
 	
 	setCaption("Examining mail: " + mail->subject);
 }
@@ -339,7 +349,7 @@ void ReadMail::shiftText()
 	updateView();
 }
 
-void ReadMail::viewAttatchments()
+void ReadMail::viewAttachments()
 {
 	viewAtt->update(mail, inbox);
 	viewAtt->showMaximized();
diff --git a/noncore/unsupported/mailit/readmail.h b/noncore/unsupported/mailit/readmail.h
index 0fe0646..df32c34 100644
--- a/noncore/unsupported/mailit/readmail.h
+++ b/noncore/unsupported/mailit/readmail.h
@@ -57,7 +57,7 @@ public slots:
 	void previous();
 	void deleteItem();
 	void shiftText();
-	void viewAttatchments();
+	void viewAttachments();
 	void reply();
 	void forward();
 	
@@ -80,7 +80,7 @@ private:
 	QAction *plainTextButton;
 	QAction *nextButton;
 	QTextView *emailView;
-	QAction *attatchmentsButton;
+	QAction *attachmentButton;
 	QAction *previousButton;
 	QAction *replyButton;
 	QAction *forwardButton;
diff --git a/noncore/unsupported/mailit/smtpclient.cpp b/noncore/unsupported/mailit/smtpclient.cpp
index b2e38e5..8a51a5b 100644
--- a/noncore/unsupported/mailit/smtpclient.cpp
+++ b/noncore/unsupported/mailit/smtpclient.cpp
@@ -87,7 +87,6 @@ void SmtpClient::incomingData()
     return;
   
   response = socket->readLine();
-  //qDebug(response);
 
   switch(status) {
     case Init:  {
@@ -95,7 +94,6 @@ void SmtpClient::incomingData()
             status = From;
             mailPtr = mailList.first();
             *stream << "HELO there\r\n";
-            //qDebug("HELO");
           } else errorHandling(ErrUnknownResponse);
           break;
         } 
@@ -103,7 +101,6 @@ void SmtpClient::incomingData()
           if (response[0] == '2') {
             *stream << "MAIL FROM: " << mailPtr->from << "\r\n";
             status = Recv;
-            //qDebug("MAIL FROM: "+mailPtr->from);
           } else errorHandling(ErrUnknownResponse);
           break;
         } 
@@ -113,7 +110,6 @@ void SmtpClient::incomingData()
             if (it == NULL)
               errorHandling(ErrUnknownResponse);
             *stream << "RCPT TO: " << *it << ">\r\n";
-            //qDebug("RCPT TO: "+ *it);
             status = MRcv;
           } else errorHandling(ErrUnknownResponse);
           break;
@@ -123,7 +119,6 @@ void SmtpClient::incomingData()
             it++;
             if ( it != mailPtr->to.end() ) {
               *stream << "RCPT TO: <" << *it << ">\r\n";
-            //qDebug("RCPT TO: "+ *it);
               break;
             } else  {
               status = Data;
@@ -134,7 +129,6 @@ void SmtpClient::incomingData()
           if (response[0] == '2') {
             *stream << "DATA\r\n";
             status = Body;
-            //qDebug("DATA");
             emit updateStatus(tr("Sending: ") + mailPtr->subject);
           } else errorHandling(ErrUnknownResponse);
           break;
@@ -148,7 +142,6 @@ void SmtpClient::incomingData()
             } else {
               status = Quit;
             }
-            //qDebug("BODY");
           } else errorHandling(ErrUnknownResponse);
           break;
         } 
@@ -163,7 +156,6 @@ void SmtpClient::incomingData()
             mailList.clear();
             sending = FALSE;
             socket->close();
-            //qDebug("QUIT");
           } else errorHandling(ErrUnknownResponse);
           break;
         }
diff --git a/noncore/unsupported/mailit/textparser.cpp b/noncore/unsupported/mailit/textparser.cpp
index f082417..3fa5f6e 100644
--- a/noncore/unsupported/mailit/textparser.cpp
+++ b/noncore/unsupported/mailit/textparser.cpp
@@ -62,27 +62,37 @@ void TextParser::createSeparators()
 /*	Returns pos of given search criteria, -1 if not found */
 int TextParser::find(QString target, QChar sep, int pos, bool upperCase)
 {
+	
+	t_splitElm parsstr;
+	QString pString;
+	
 	int atLine = 0, atPosElm = 0;
 	
-	for (int x = 0; x < totalElmCount; x++) {
-		if (x >= pos) {
-			if (upperCase) {
-				if ((splitDone[atLine].elm[atPosElm].str.upper() == target) &&
-					(splitDone[atLine].elm[atPosElm].separator == sep))
-						return x;
-			} else {
-				if ((splitDone[atLine].elm[atPosElm].str == target) &&
-					(splitDone[atLine].elm[atPosElm].separator == sep))
-						return x;
-			}
-		}
-		atPosElm++;
-		if (atPosElm >= splitDone[atLine].elmCount) {  //new Line
+	getLineReference(pos,&atLine,&atPosElm);
+	
+	for (int x = pos; x < totalElmCount; x++) 
+	{
+		parsstr=splitDone[atLine].elm[atPosElm++];
+	
+		if (upperCase)
+		{
+		 	pString=parsstr.str.upper();
+			target=target.upper();
+		}	
+		else
+		{
+			pString=parsstr.str;
+		}				
+		if ((pString == target) && (parsstr.separator == sep))
+		{
+			return x;
+		}	
+		if (atPosElm >= splitDone[atLine].elmCount) 
+		{  //new Line
 			atLine++;
 			atPosElm = 0;
 		}
 	}
-	
 	return -1;
 }
 
diff --git a/noncore/unsupported/mailit/viewatt.cpp b/noncore/unsupported/mailit/viewatt.cpp
index b6f5015..21885c2 100644
--- a/noncore/unsupported/mailit/viewatt.cpp
+++ b/noncore/unsupported/mailit/viewatt.cpp
@@ -19,6 +19,7 @@
 **********************************************************************/
 #include "resource.h"
 #include "viewatt.h"
+#include <qwhatsthis.h>
 #include <qpe/applnk.h>
 #include <qpe/mimetype.h>
 
@@ -31,12 +32,14 @@ ViewAtt::ViewAtt(QWidget *parent, const char *name, WFlags f)
 	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( "Attatchment" );
 	listView->addColumn( "Type" );
 	listView->addColumn( "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)
diff --git a/noncore/unsupported/mailit/writemail.cpp b/noncore/unsupported/mailit/writemail.cpp
index a9dcb02..0336c83 100644
--- a/noncore/unsupported/mailit/writemail.cpp
+++ b/noncore/unsupported/mailit/writemail.cpp
@@ -18,6 +18,7 @@
 **
 **********************************************************************/
 #include <qmessagebox.h>
+#include <qwhatsthis.h>
 #include "writemail.h"
 #include <qpe/resource.h>
 
@@ -27,7 +28,7 @@ WriteMail::WriteMail( QWidget* parent,  const char* name, WFlags fl )
 	showingAddressList = FALSE;
 	init();
 	
-	addAtt = new AddAtt(0, "Add Attatchments");
+	addAtt = new AddAtt(0, "Add Attachments");
 }
 
 WriteMail::~WriteMail()
@@ -64,20 +65,23 @@ void WriteMail::init()
 	menu->insertItem( tr( "&Add" ), addMenu);
 	
 	bar = new QToolBar(this);
-	attatchButton = new QAction(tr("Attatchment"), Resource::loadPixmap("mailit/attach"), QString::null, 0, this, 0);
-	attatchButton->addTo(bar);
-	attatchButton->addTo(addMenu);
-	connect( attatchButton, SIGNAL( activated() ), this, SLOT( attatchFile() ) );
-	
+	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 );
 
@@ -88,7 +92,6 @@ void WriteMail::init()
 	grid->addWidget( recipientsBox, 0, 0 );
 	connect(recipientsBox,SIGNAL(activated(int)),this, SLOT(changeRecipients(int)));
 	
-	
 	subjetLabel = new QLabel( widget, "subjetLabel" );
 	subjetLabel->setText( tr( "Subject:"  ) );
 
@@ -100,25 +103,28 @@ void WriteMail::init()
 
 	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(recipientsBox,QWidget::tr("Enter your mail text here"));
 
-	
 	addressView = new QListView( widget, "addressView");
 	addressView->addColumn("Name");
 	addressView->addColumn("EMail");
@@ -126,11 +132,13 @@ void WriteMail::init()
 	addressView->setMultiSelection(TRUE);
 	addressView->hide();
 	grid->addMultiCellWidget( addressView, 3, 3, 0, 2);
-	
+	QWhatsThis::add(recipientsBox,QWidget::tr("Chose 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);
 }
@@ -143,7 +151,7 @@ void WriteMail::reject()
 // need to insert date
 void WriteMail::accept()
 {
-	QStringList attatchedFiles, attatchmentsType;
+	QStringList attachedFiles, attachmentsType;
 	int idCount = 0;
 	
 	if (toInput->text() == "") 
@@ -196,13 +204,13 @@ void WriteMail::accept()
 	mail.rawMail += mail.subject;
 	mail.rawMail += "\n\n";
 	
-	attatchedFiles = addAtt->returnAttatchedFiles();
-	attatchmentsType = addAtt->returnFileTypes();
+	attachedFiles = addAtt->returnattachedFiles();
+	attachmentsType = addAtt->returnFileTypes();
 
-	QStringList::Iterator itType = attatchmentsType.begin();
+	QStringList::Iterator itType = attachmentsType.begin();
 	
 	Enclosure e;
-	for ( QStringList::Iterator it = attatchedFiles.begin(); it != attatchedFiles.end(); ++it ) {
+	for ( QStringList::Iterator it = attachedFiles.begin(); it != attachedFiles.end(); ++it ) {
 		e.id = idCount;
 		e.originalName = (*it).latin1();
 		e.contentType = (*itType).latin1();
@@ -236,7 +244,7 @@ void WriteMail::getAddress()
 	}
 }
 
-void WriteMail::attatchFile()
+void WriteMail::attachFile()
 {
 	addAtt->showMaximized();
 }
@@ -256,7 +264,7 @@ void WriteMail::reply(Email replyMail, bool replyAll)
 	subjectInput->setText(tr("Re: ") + mail.subject);
 	
 	pos = 0;
-	mail.body.insert(pos, ">>");
+	mail.body.insert(pos, ">");
 	while (pos != -1) {
 		pos = mail.body.find('\n', pos);
 		if (pos != -1)
diff --git a/noncore/unsupported/mailit/writemail.h b/noncore/unsupported/mailit/writemail.h
index f193b13..921f27e 100644
--- a/noncore/unsupported/mailit/writemail.h
+++ b/noncore/unsupported/mailit/writemail.h
@@ -55,7 +55,7 @@ signals:
 	
 public slots:
 	void getAddress();
-	void attatchFile();
+	void attachFile();
 	void addRecipients();
 	void newMail();
 	void accept();
@@ -79,7 +79,7 @@ private:
 	
 	QToolButton *okButton;
 	QWidget *widget;
-	QAction *attatchButton;
+	QAction *attachButton;
 	QAction *confirmButton;
 	QAction *newButton;
 	QLabel* subjetLabel;
--
cgit v0.9.0.2