summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/emailclient.cpp4
-rw-r--r--noncore/net/mailit/getmail.xpm21
-rw-r--r--noncore/net/mailit/sendmail.xpm20
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp4
-rw-r--r--noncore/unsupported/mailit/getmail.xpm21
-rw-r--r--noncore/unsupported/mailit/sendmail.xpm20
6 files changed, 4 insertions, 86 deletions
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index 7ba5c75..2e82623 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -1,858 +1,858 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qapplication.h> 20#include <qapplication.h>
21#include <qmessagebox.h> 21#include <qmessagebox.h>
22#include <qfile.h> 22#include <qfile.h>
23#include <qcheckbox.h> 23#include <qcheckbox.h>
24#include <qmenubar.h> 24#include <qmenubar.h>
25#include <qaction.h> 25#include <qaction.h>
26#include "resource.h" 26#include "resource.h"
27#include "emailclient.h" 27#include "emailclient.h"
28 28
29QCollection::Item AccountList::newItem(QCollection::Item d) 29QCollection::Item AccountList::newItem(QCollection::Item d)
30{ 30{
31 return dupl( (MailAccount *) d); 31 return dupl( (MailAccount *) d);
32} 32}
33 33
34MailAccount* AccountList::dupl(MailAccount *in) 34MailAccount* AccountList::dupl(MailAccount *in)
35{ 35{
36 ac = new MailAccount(*in); 36 ac = new MailAccount(*in);
37 return ac; 37 return ac;
38} 38}
39 39
40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) 40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
41 : QMainWindow( parent, name, fl ) 41 : QMainWindow( parent, name, fl )
42{ 42{
43 emailHandler = new EmailHandler(); 43 emailHandler = new EmailHandler();
44 addressList = new AddressList( getPath(FALSE) + "mail_adr"); 44 addressList = new AddressList( getPath(FALSE) + "mail_adr");
45 45
46 sending = FALSE; 46 sending = FALSE;
47 receiving = FALSE; 47 receiving = FALSE;
48 previewingMail = FALSE; 48 previewingMail = FALSE;
49 mailIdCount = 1; 49 mailIdCount = 1;
50 accountIdCount = 1; 50 accountIdCount = 1;
51 allAccounts = FALSE; 51 allAccounts = FALSE;
52 52
53 init(); 53 init();
54 54
55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) ); 55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) );
56 56
57 connect(emailHandler, SIGNAL(smtpError(int)), this, 57 connect(emailHandler, SIGNAL(smtpError(int)), this,
58 SLOT(smtpError(int)) ); 58 SLOT(smtpError(int)) );
59 connect(emailHandler, SIGNAL(popError(int)), this, 59 connect(emailHandler, SIGNAL(popError(int)), this,
60 SLOT(popError(int)) ); 60 SLOT(popError(int)) );
61 61
62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); 62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); 63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
64 64
65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, 65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
66 SLOT(mailArrived(const Email &, bool)) ); 66 SLOT(mailArrived(const Email &, bool)) );
67 connect(emailHandler, SIGNAL(mailTransfered(int)), this, 67 connect(emailHandler, SIGNAL(mailTransfered(int)), this,
68 SLOT(allMailArrived(int)) ); 68 SLOT(allMailArrived(int)) );
69 69
70 mailconf = new Config("mailit"); 70 mailconf = new Config("mailit");
71 //In case Synchronize is not defined in settings.txt 71 //In case Synchronize is not defined in settings.txt
72 72
73 readSettings(); 73 readSettings();
74 74
75 updateAccounts(); 75 updateAccounts();
76 76
77 lineShift = "\n"; 77 lineShift = "\n";
78 readMail(); 78 readMail();
79 lineShift = "\r\n"; 79 lineShift = "\r\n";
80 80
81} 81}
82 82
83 83
84EmailClient::~EmailClient() 84EmailClient::~EmailClient()
85{ 85{
86 //needs to be moved from destructor to closewindow event 86 //needs to be moved from destructor to closewindow event
87 saveMail(getPath(FALSE) + "inbox.txt", inboxView); 87 saveMail(getPath(FALSE) + "inbox.txt", inboxView);
88 //does not currently work. Defining outbox in the same 88 //does not currently work. Defining outbox in the same
89 //format as inbox is not a good solution as they have 89 //format as inbox is not a good solution as they have
90 //different properties 90 //different properties
91 saveMail(getPath(FALSE) + "outbox.txt", outboxView); 91 saveMail(getPath(FALSE) + "outbox.txt", outboxView);
92 saveSettings(); 92 saveSettings();
93 93
94 mailconf->write(); 94 mailconf->write();
95 delete mailconf; 95 delete mailconf;
96 96
97} 97}
98 98
99void EmailClient::init() 99void EmailClient::init()
100{ 100{
101 statusBar = new QStatusBar(this); 101 statusBar = new QStatusBar(this);
102 statusBar->setSizeGripEnabled(FALSE); 102 statusBar->setSizeGripEnabled(FALSE);
103 103
104 status1Label = new QLabel( tr("Idle"), statusBar); 104 status1Label = new QLabel( tr("Idle"), statusBar);
105 status2Label = new QLabel("", statusBar); 105 status2Label = new QLabel("", statusBar);
106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)), 106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
107 status2Label, SLOT(setText(const QString &)) ); 107 status2Label, SLOT(setText(const QString &)) );
108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), 108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
109 status2Label, SLOT(setText(const QString &)) ); 109 status2Label, SLOT(setText(const QString &)) );
110 110
111 progressBar = new QProgressBar(statusBar); 111 progressBar = new QProgressBar(statusBar);
112 connect(emailHandler, SIGNAL(mailboxSize(int)), 112 connect(emailHandler, SIGNAL(mailboxSize(int)),
113 this, SLOT(setTotalSize(int)) ); 113 this, SLOT(setTotalSize(int)) );
114 connect(emailHandler, SIGNAL(currentMailSize(int)), 114 connect(emailHandler, SIGNAL(currentMailSize(int)),
115 this, SLOT(setMailSize(int)) ); 115 this, SLOT(setMailSize(int)) );
116 connect(emailHandler, SIGNAL(downloadedSize(int)), 116 connect(emailHandler, SIGNAL(downloadedSize(int)),
117 this, SLOT(setDownloadedSize(int)) ); 117 this, SLOT(setDownloadedSize(int)) );
118 118
119 statusBar->addWidget(status1Label); 119 statusBar->addWidget(status1Label);
120 statusBar->addWidget(progressBar); 120 statusBar->addWidget(progressBar);
121 statusBar->addWidget(status2Label); 121 statusBar->addWidget(status2Label);
122 122
123 setToolBarsMovable(FALSE); 123 setToolBarsMovable(FALSE);
124 124
125 bar = new QToolBar(this); 125 bar = new QToolBar(this);
126 bar->setHorizontalStretchable( TRUE ); 126 bar->setHorizontalStretchable( TRUE );
127 127
128 mb = new QMenuBar( bar ); 128 mb = new QMenuBar( bar );
129 129
130 QPopupMenu *mail = new QPopupMenu(mb); 130 QPopupMenu *mail = new QPopupMenu(mb);
131 mb->insertItem( tr( "&Mail" ), mail); 131 mb->insertItem( tr( "&Mail" ), mail);
132 132
133 QPopupMenu *configure = new QPopupMenu(mb); 133 QPopupMenu *configure = new QPopupMenu(mb);
134 mb->insertItem( tr( "Accounts" ), configure); 134 mb->insertItem( tr( "Accounts" ), configure);
135 135
136 selectAccountMenu = new QPopupMenu(mb); 136 selectAccountMenu = new QPopupMenu(mb);
137 editAccountMenu = new QPopupMenu(mb); 137 editAccountMenu = new QPopupMenu(mb);
138 deleteAccountMenu = new QPopupMenu(mb); 138 deleteAccountMenu = new QPopupMenu(mb);
139 139
140 mail->insertItem(tr("Get Mail in"), selectAccountMenu); 140 mail->insertItem(tr("Get Mail in"), selectAccountMenu);
141 configure->insertItem(tr("Edit account"), editAccountMenu); 141 configure->insertItem(tr("Edit account"), editAccountMenu);
142 configure->insertItem(tr("Delete account"), deleteAccountMenu); 142 configure->insertItem(tr("Delete account"), deleteAccountMenu);
143 143
144 bar = new QToolBar(this); 144 bar = new QToolBar(this);
145 145
146 getMailButton = new QAction(tr("Get all mail"), QPixmap("getmail.xpm"), QString::null, 0, this, 0); 146 getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
147 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) ); 147 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
148 getMailButton->addTo(bar); 148 getMailButton->addTo(bar);
149 getMailButton->addTo(mail); 149 getMailButton->addTo(mail);
150 150
151 sendMailButton = new QAction(tr("Send mail"), QPixmap("sendmail.xpm"), QString::null, 0, this, 0); 151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0);
152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
153 sendMailButton->addTo(bar); 153 sendMailButton->addTo(bar);
154 sendMailButton->addTo(mail); 154 sendMailButton->addTo(mail);
155 155
156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); 157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
158 composeButton->addTo(bar); 158 composeButton->addTo(bar);
159 composeButton->addTo(mail); 159 composeButton->addTo(mail);
160 160
161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("reset"), QString::null, 0, this, 0); 161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("reset"), QString::null, 0, this, 0);
162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); 162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
163 cancelButton->addTo(mail); 163 cancelButton->addTo(mail);
164 cancelButton->setEnabled(FALSE); 164 cancelButton->setEnabled(FALSE);
165 165
166 mailboxView = new QTabWidget( this, "mailboxView" ); 166 mailboxView = new QTabWidget( this, "mailboxView" );
167 167
168 QWidget* widget = new QWidget( mailboxView, "widget" ); 168 QWidget* widget = new QWidget( mailboxView, "widget" );
169 grid_2 = new QGridLayout( widget ); 169 grid_2 = new QGridLayout( widget );
170// grid_2->setSpacing(6); 170// grid_2->setSpacing(6);
171// grid_2->setMargin( 11 ); 171// grid_2->setMargin( 11 );
172 172
173 inboxView = new QListView( widget, "inboxView" ); 173 inboxView = new QListView( widget, "inboxView" );
174 inboxView->addColumn( tr( "From" ) ); 174 inboxView->addColumn( tr( "From" ) );
175 inboxView->addColumn( tr( "Subject" ) ); 175 inboxView->addColumn( tr( "Subject" ) );
176 inboxView->addColumn( tr( "Date" ) ); 176 inboxView->addColumn( tr( "Date" ) );
177 inboxView->setMinimumSize( QSize( 0, 0 ) ); 177 inboxView->setMinimumSize( QSize( 0, 0 ) );
178 inboxView->setAllColumnsShowFocus(TRUE); 178 inboxView->setAllColumnsShowFocus(TRUE);
179 179
180 grid_2->addWidget( inboxView, 2, 0 ); 180 grid_2->addWidget( inboxView, 2, 0 );
181 mailboxView->insertTab( widget, tr( "Inbox" ) ); 181 mailboxView->insertTab( widget, tr( "Inbox" ) );
182 182
183 QWidget* widget_2 = new QWidget( mailboxView, "widget_2" ); 183 QWidget* widget_2 = new QWidget( mailboxView, "widget_2" );
184 grid_3 = new QGridLayout( widget_2 ); 184 grid_3 = new QGridLayout( widget_2 );
185// grid_3->setSpacing(6); 185// grid_3->setSpacing(6);
186// grid_3->setMargin( 11 ); 186// grid_3->setMargin( 11 );
187 187
188 outboxView = new QListView( widget_2, "outboxView" ); 188 outboxView = new QListView( widget_2, "outboxView" );
189 outboxView->addColumn( tr( "To" ) ); 189 outboxView->addColumn( tr( "To" ) );
190 outboxView->addColumn( tr( "Subject" ) ); 190 outboxView->addColumn( tr( "Subject" ) );
191 outboxView->setAllColumnsShowFocus(TRUE); 191 outboxView->setAllColumnsShowFocus(TRUE);
192 192
193 grid_3->addWidget( outboxView, 0, 0 ); 193 grid_3->addWidget( outboxView, 0, 0 );
194 mailboxView->insertTab( widget_2, tr( "Outbox" ) ); 194 mailboxView->insertTab( widget_2, tr( "Outbox" ) );
195 195
196 setCentralWidget(mailboxView); 196 setCentralWidget(mailboxView);
197} 197}
198 198
199void EmailClient::compose() 199void EmailClient::compose()
200{ 200{
201 emit composeRequested(); 201 emit composeRequested();
202} 202}
203 203
204void EmailClient::cancel() 204void EmailClient::cancel()
205{ 205{
206 emailHandler->cancel(); 206 emailHandler->cancel();
207} 207}
208 208
209AddressList* EmailClient::getAdrListRef() 209AddressList* EmailClient::getAdrListRef()
210{ 210{
211 return addressList; 211 return addressList;
212} 212}
213 213
214//this needs to be rewritten to syncronize with outboxView 214//this needs to be rewritten to syncronize with outboxView
215void EmailClient::enqueMail(const Email &mail) 215void EmailClient::enqueMail(const Email &mail)
216{ 216{
217 if (accountList.count() > 0) { 217 if (accountList.count() > 0) {
218 currentAccount = accountList.first(); 218 currentAccount = accountList.first();
219 qWarning("using account " + currentAccount->name); 219 qWarning("using account " + currentAccount->name);
220 } 220 }
221 221
222 Email addMail = mail; 222 Email addMail = mail;
223 addMail.from = currentAccount->name; 223 addMail.from = currentAccount->name;
224 addMail.fromMail = currentAccount->emailAddress; 224 addMail.fromMail = currentAccount->emailAddress;
225 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 225 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
226 item = new EmailListItem(outboxView, addMail, false); 226 item = new EmailListItem(outboxView, addMail, false);
227 227
228} 228}
229 229
230void EmailClient::sendQuedMail() 230void EmailClient::sendQuedMail()
231{ 231{
232 int count = 0; 232 int count = 0;
233 233
234 if (accountList.count() == 0) { 234 if (accountList.count() == 0) {
235 QMessageBox::warning(qApp->activeWindow(), 235 QMessageBox::warning(qApp->activeWindow(),
236 "No account selected", "You must create an account", "OK\n"); 236 "No account selected", "You must create an account", "OK\n");
237 return; 237 return;
238 } 238 }
239 //traverse listview, find messages to send 239 //traverse listview, find messages to send
240 if (! sending) { 240 if (! sending) {
241 item = (EmailListItem *) outboxView->firstChild(); 241 item = (EmailListItem *) outboxView->firstChild();
242 if (item != NULL) { 242 if (item != NULL) {
243 while (item != NULL) { 243 while (item != NULL) {
244 quedMessages.append(item->getMail()); 244 quedMessages.append(item->getMail());
245 item = (EmailListItem *) item->nextSibling(); 245 item = (EmailListItem *) item->nextSibling();
246 count++; 246 count++;
247 } 247 }
248 setMailAccount(); 248 setMailAccount();
249 emailHandler->sendMail(&quedMessages); 249 emailHandler->sendMail(&quedMessages);
250 sending = TRUE; 250 sending = TRUE;
251 sendMailButton->setEnabled(FALSE); 251 sendMailButton->setEnabled(FALSE);
252 cancelButton->setEnabled(TRUE); 252 cancelButton->setEnabled(TRUE);
253 } else { 253 } else {
254 qWarning("sendQuedMail(): no messages to send"); 254 qWarning("sendQuedMail(): no messages to send");
255 } 255 }
256 } 256 }
257} 257}
258 258
259void EmailClient::setMailAccount() 259void EmailClient::setMailAccount()
260{ 260{
261 emailHandler->setAccount(*currentAccount); 261 emailHandler->setAccount(*currentAccount);
262} 262}
263 263
264void EmailClient::mailSent() 264void EmailClient::mailSent()
265{ 265{
266 sending = FALSE; 266 sending = FALSE;
267 sendMailButton->setEnabled(TRUE); 267 sendMailButton->setEnabled(TRUE);
268 268
269 quedMessages.clear(); 269 quedMessages.clear();
270 outboxView->clear(); //should be moved to an sentBox 270 outboxView->clear(); //should be moved to an sentBox
271} 271}
272 272
273void EmailClient::getNewMail() { 273void EmailClient::getNewMail() {
274 274
275 if (accountList.count() == 0) { 275 if (accountList.count() == 0) {
276 QMessageBox::warning(qApp->activeWindow(),"No account selected", 276 QMessageBox::warning(qApp->activeWindow(),"No account selected",
277 "You must create an account", "OK\n"); 277 "You must create an account", "OK\n");
278 return; 278 return;
279 } 279 }
280 280
281 setMailAccount(); 281 setMailAccount();
282 282
283 receiving = TRUE; 283 receiving = TRUE;
284 previewingMail = TRUE; 284 previewingMail = TRUE;
285 getMailButton->setEnabled(FALSE); 285 getMailButton->setEnabled(FALSE);
286 cancelButton->setEnabled(TRUE); 286 cancelButton->setEnabled(TRUE);
287 selectAccountMenu->setEnabled(FALSE); 287 selectAccountMenu->setEnabled(FALSE);
288 288
289 status1Label->setText(currentAccount->accountName + " headers"); 289 status1Label->setText(currentAccount->accountName + " headers");
290 progressBar->reset(); 290 progressBar->reset();
291 291
292 //get any previous mails not downloaded and add to queue 292 //get any previous mails not downloaded and add to queue
293 mailDownloadList.clear(); 293 mailDownloadList.clear();
294 Email *mailPtr; 294 Email *mailPtr;
295 item = (EmailListItem *) inboxView->firstChild(); 295 item = (EmailListItem *) inboxView->firstChild();
296 while (item != NULL) { 296 while (item != NULL) {
297 mailPtr = item->getMail(); 297 mailPtr = item->getMail();
298 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) { 298 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
299 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 299 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
300 } 300 }
301 item = (EmailListItem *) item->nextSibling(); 301 item = (EmailListItem *) item->nextSibling();
302 } 302 }
303 303
304 emailHandler->getMailHeaders(); 304 emailHandler->getMailHeaders();
305} 305}
306 306
307void EmailClient::getAllNewMail() 307void EmailClient::getAllNewMail()
308{ 308{
309 allAccounts = TRUE; 309 allAccounts = TRUE;
310 currentAccount = accountList.first(); 310 currentAccount = accountList.first();
311 getNewMail(); 311 getNewMail();
312} 312}
313 313
314void EmailClient::mailArrived(const Email &mail, bool fromDisk) 314void EmailClient::mailArrived(const Email &mail, bool fromDisk)
315{ 315{
316 Enclosure *ePtr; 316 Enclosure *ePtr;
317 Email newMail; 317 Email newMail;
318 int thisMailId; 318 int thisMailId;
319 emailHandler->parse(mail.rawMail, lineShift, &newMail); 319 emailHandler->parse(mail.rawMail, lineShift, &newMail);
320 320
321 mailconf->setGroup(newMail.id); 321 mailconf->setGroup(newMail.id);
322 322
323 if (fromDisk) { 323 if (fromDisk) {
324 newMail.downloaded = mailconf->readBoolEntry("downloaded"); 324 newMail.downloaded = mailconf->readBoolEntry("downloaded");
325 newMail.size = mailconf->readNumEntry("size"); 325 newMail.size = mailconf->readNumEntry("size");
326 newMail.serverId = mailconf->readNumEntry("serverid"); 326 newMail.serverId = mailconf->readNumEntry("serverid");
327 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid"); 327 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
328 } else { //mail arrived from server 328 } else { //mail arrived from server
329 newMail.serverId = mail.serverId; 329 newMail.serverId = mail.serverId;
330 newMail.size = mail.size; 330 newMail.size = mail.size;
331 newMail.downloaded = mail.downloaded; 331 newMail.downloaded = mail.downloaded;
332 332
333 newMail.fromAccountId = currentAccount->id; 333 newMail.fromAccountId = currentAccount->id;
334 mailconf->writeEntry("fromaccountid", newMail.fromAccountId); 334 mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
335 } 335 }
336 336
337 //add if read or not 337 //add if read or not
338 newMail.read = mailconf->readBoolEntry("mailread"); 338 newMail.read = mailconf->readBoolEntry("mailread");
339 339
340 //check if new mail 340 //check if new mail
341 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) { 341 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) {
342 thisMailId = mailIdCount; 342 thisMailId = mailIdCount;
343 mailIdCount++; 343 mailIdCount++;
344 344
345 //set server count, so that if the user aborts, the new 345 //set server count, so that if the user aborts, the new
346 //header is not reloaded 346 //header is not reloaded
347 if (currentAccount->synchronize) 347 if (currentAccount->synchronize)
348 currentAccount->lastServerMailCount++; 348 currentAccount->lastServerMailCount++;
349 349
350 mailconf->writeEntry("internalmailid", thisMailId); 350 mailconf->writeEntry("internalmailid", thisMailId);
351 mailconf->writeEntry("downloaded", newMail.downloaded); 351 mailconf->writeEntry("downloaded", newMail.downloaded);
352 mailconf->writeEntry("size", (int) newMail.size); 352 mailconf->writeEntry("size", (int) newMail.size);
353 mailconf->writeEntry("serverid", newMail.serverId); 353 mailconf->writeEntry("serverid", newMail.serverId);
354 354
355 addressList->addContact(newMail.fromMail, newMail.from); 355 addressList->addContact(newMail.fromMail, newMail.from);
356 } else if (!fromDisk) { //body to header arrived 356 } else if (!fromDisk) { //body to header arrived
357 mailconf->writeEntry("downloaded", TRUE); 357 mailconf->writeEntry("downloaded", TRUE);
358 } 358 }
359 QString stringMailId; 359 QString stringMailId;
360 stringMailId.setNum(thisMailId); 360 stringMailId.setNum(thisMailId);
361 //se if any attatchments needs to be stored 361 //se if any attatchments needs to be stored
362 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { 362 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
363 QString stringId; 363 QString stringId;
364 stringId.setNum(ePtr->id); 364 stringId.setNum(ePtr->id);
365 365
366 int id = mailconf->readNumEntry("enclosureid_" + stringId); 366 int id = mailconf->readNumEntry("enclosureid_" + stringId);
367 if (id != ePtr->id) { //new entry 367 if (id != ePtr->id) { //new entry
368 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id); 368 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id);
369 mailconf->writeEntry("name_" + stringId, ePtr->originalName); 369 mailconf->writeEntry("name_" + stringId, ePtr->originalName);
370 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType); 370 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType);
371 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute); 371 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute);
372 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 372 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
373 mailconf->writeEntry("installed_" + stringId, FALSE); 373 mailconf->writeEntry("installed_" + stringId, FALSE);
374 374
375 ePtr->name = stringMailId + "_" + stringId; 375 ePtr->name = stringMailId + "_" + stringId;
376 ePtr->path = getPath(TRUE); 376 ePtr->path = getPath(TRUE);
377 if (emailHandler->getEnclosure(ePtr)) { //file saved 377 if (emailHandler->getEnclosure(ePtr)) { //file saved
378 ePtr->saved = TRUE; 378 ePtr->saved = TRUE;
379 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 379 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
380 mailconf->writeEntry("filename_" + stringId, ePtr->name); 380 mailconf->writeEntry("filename_" + stringId, ePtr->name);
381 mailconf->writeEntry("path_" + stringId, ePtr->path); 381 mailconf->writeEntry("path_" + stringId, ePtr->path);
382 } else { 382 } else {
383 ePtr->saved = FALSE; 383 ePtr->saved = FALSE;
384 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 384 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
385 } 385 }
386 } else { 386 } else {
387 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId); 387 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId);
388 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId); 388 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId);
389 if (ePtr->saved) { 389 if (ePtr->saved) {
390 ePtr->name = mailconf->readEntry("filename_" + stringId); 390 ePtr->name = mailconf->readEntry("filename_" + stringId);
391 ePtr->path = mailconf->readEntry("path_" + stringId); 391 ePtr->path = mailconf->readEntry("path_" + stringId);
392 } 392 }
393 } 393 }
394 } 394 }
395 if (!previewingMail && !fromDisk) { 395 if (!previewingMail && !fromDisk) {
396 Email *mailPtr; 396 Email *mailPtr;
397 item = (EmailListItem *) inboxView->firstChild(); 397 item = (EmailListItem *) inboxView->firstChild();
398 while (item != NULL) { 398 while (item != NULL) {
399 mailPtr = item->getMail(); 399 mailPtr = item->getMail();
400 if (mailPtr->id == newMail.id) { 400 if (mailPtr->id == newMail.id) {
401 item->setMail(newMail); 401 item->setMail(newMail);
402 emit mailUpdated(item->getMail()); 402 emit mailUpdated(item->getMail());
403 } 403 }
404 item = (EmailListItem *) item->nextSibling(); 404 item = (EmailListItem *) item->nextSibling();
405 } 405 }
406 } else { 406 } else {
407 item = new EmailListItem(inboxView, newMail, TRUE); 407 item = new EmailListItem(inboxView, newMail, TRUE);
408 if (!newMail.downloaded) 408 if (!newMail.downloaded)
409 mailDownloadList.sizeInsert(newMail.serverId, newMail.size); 409 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
410 } 410 }
411 411
412} 412}
413 413
414void EmailClient::allMailArrived(int count) 414void EmailClient::allMailArrived(int count)
415{ 415{
416 // not previewing means all mailtransfer has been done 416 // not previewing means all mailtransfer has been done
417 if (!previewingMail) { 417 if (!previewingMail) {
418 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { 418 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
419 emit newCaption("Mailit - " + currentAccount->accountName); 419 emit newCaption("Mailit - " + currentAccount->accountName);
420 getNewMail(); 420 getNewMail();
421 return; 421 return;
422 } else { 422 } else {
423 allAccounts = FALSE; 423 allAccounts = FALSE;
424 receiving = FALSE; 424 receiving = FALSE;
425 getMailButton->setEnabled(TRUE); 425 getMailButton->setEnabled(TRUE);
426 cancelButton->setEnabled(FALSE); 426 cancelButton->setEnabled(FALSE);
427 selectAccountMenu->setEnabled(TRUE); 427 selectAccountMenu->setEnabled(TRUE);
428 status1Label->setText("Idle"); 428 status1Label->setText("Idle");
429 429
430 progressBar->reset(); 430 progressBar->reset();
431 return; 431 return;
432 } 432 }
433 } 433 }
434 434
435 // all headers downloaded from server, start downloading remaining mails 435 // all headers downloaded from server, start downloading remaining mails
436 previewingMail = FALSE; 436 previewingMail = FALSE;
437 status1Label->setText(currentAccount->accountName); 437 status1Label->setText(currentAccount->accountName);
438 progressBar->reset(); 438 progressBar->reset();
439 439
440 emailHandler->getMailByList(&mailDownloadList); 440 emailHandler->getMailByList(&mailDownloadList);
441} 441}
442 442
443void EmailClient::moveMailFront(Email *mailPtr) 443void EmailClient::moveMailFront(Email *mailPtr)
444{ 444{
445 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) { 445 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
446 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size); 446 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
447 } 447 }
448} 448}
449 449
450void EmailClient::smtpError(int code) 450void EmailClient::smtpError(int code)
451{ 451{
452 QString temp; 452 QString temp;
453 453
454 if (code == ErrUnknownResponse) 454 if (code == ErrUnknownResponse)
455 temp = "Unknown response from server"; 455 temp = "Unknown response from server";
456 456
457 if (code == QSocket::ErrHostNotFound) 457 if (code == QSocket::ErrHostNotFound)
458 temp = "host not found"; 458 temp = "host not found";
459 if (code == QSocket::ErrConnectionRefused) 459 if (code == QSocket::ErrConnectionRefused)
460 temp = "connection refused"; 460 temp = "connection refused";
461 if (code == QSocket::ErrSocketRead) 461 if (code == QSocket::ErrSocketRead)
462 temp = "socket packet error"; 462 temp = "socket packet error";
463 463
464 if (code != ErrCancel) { 464 if (code != ErrCancel) {
465 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n"); 465 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n");
466 } else { 466 } else {
467 status2Label->setText("Aborted by user"); 467 status2Label->setText("Aborted by user");
468 } 468 }
469 469
470 sending = FALSE; 470 sending = FALSE;
471 sendMailButton->setEnabled(TRUE); 471 sendMailButton->setEnabled(TRUE);
472 cancelButton->setEnabled(FALSE); 472 cancelButton->setEnabled(FALSE);
473 quedMessages.clear(); 473 quedMessages.clear();
474} 474}
475 475
476void EmailClient::popError(int code) 476void EmailClient::popError(int code)
477{ 477{
478 QString temp; 478 QString temp;
479 479
480 if (code == ErrUnknownResponse) 480 if (code == ErrUnknownResponse)
481 temp = "Unknown response from server"; 481 temp = "Unknown response from server";
482 if (code == ErrLoginFailed) 482 if (code == ErrLoginFailed)
483 temp = "Login failed\nCheck user name and password"; 483 temp = "Login failed\nCheck user name and password";
484 484
485 if (code == QSocket::ErrHostNotFound) 485 if (code == QSocket::ErrHostNotFound)
486 temp = "host not found"; 486 temp = "host not found";
487 if (code == QSocket::ErrConnectionRefused) 487 if (code == QSocket::ErrConnectionRefused)
488 temp = "connection refused"; 488 temp = "connection refused";
489 if (code == QSocket::ErrSocketRead) 489 if (code == QSocket::ErrSocketRead)
490 temp = "socket packet error"; 490 temp = "socket packet error";
491 491
492 if (code != ErrCancel) { 492 if (code != ErrCancel) {
493 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n"); 493 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n");
494 } else { 494 } else {
495 status2Label->setText("Aborted by user"); 495 status2Label->setText("Aborted by user");
496 } 496 }
497 497
498 receiving = FALSE; 498 receiving = FALSE;
499 getMailButton->setEnabled(TRUE); 499 getMailButton->setEnabled(TRUE);
500 cancelButton->setEnabled(FALSE); 500 cancelButton->setEnabled(FALSE);
501 selectAccountMenu->setEnabled(TRUE); 501 selectAccountMenu->setEnabled(TRUE);
502} 502}
503 503
504void EmailClient::inboxItemSelected() 504void EmailClient::inboxItemSelected()
505{ 505{
506 item = (EmailListItem*) inboxView->selectedItem(); 506 item = (EmailListItem*) inboxView->selectedItem();
507 if (item != NULL) { 507 if (item != NULL) {
508 emit viewEmail(inboxView, item->getMail()); 508 emit viewEmail(inboxView, item->getMail());
509 } 509 }
510} 510}
511 511
512void EmailClient::outboxItemSelected() 512void EmailClient::outboxItemSelected()
513{ 513{
514 item = (EmailListItem*) outboxView->selectedItem(); 514 item = (EmailListItem*) outboxView->selectedItem();
515 if (item != NULL) { 515 if (item != NULL) {
516 emit viewEmail(outboxView, item->getMail()); 516 emit viewEmail(outboxView, item->getMail());
517 } 517 }
518 518
519} 519}
520 520
521void EmailClient::readMail() 521void EmailClient::readMail()
522{ 522{
523 Email mail; 523 Email mail;
524 int start, stop; 524 int start, stop;
525 QString s, del; 525 QString s, del;
526 526
527 QFile f(getPath(FALSE) + "inbox.txt"); 527 QFile f(getPath(FALSE) + "inbox.txt");
528// QFileInfo fi(f); 528// QFileInfo fi(f);
529 qDebug( f.name()); 529 qDebug( f.name());
530 530
531 if ( f.open(IO_ReadOnly) ) { // file opened successfully 531 if ( f.open(IO_ReadOnly) ) { // file opened successfully
532 QTextStream t( &f ); // use a text stream 532 QTextStream t( &f ); // use a text stream
533 s = t.read(); 533 s = t.read();
534 f.close(); 534 f.close();
535 535
536 start = 0; 536 start = 0;
537 del = "\n.\n"; 537 del = "\n.\n";
538 while ((uint) start < s.length()) { 538 while ((uint) start < s.length()) {
539 stop = s.find(del, start); 539 stop = s.find(del, start);
540 if (stop == -1) 540 if (stop == -1)
541 stop = s.length() - del.length(); 541 stop = s.length() - del.length();
542 542
543 mail.rawMail = s.mid(start, stop + del.length() - start ); 543 mail.rawMail = s.mid(start, stop + del.length() - start );
544 start = stop + del.length(); 544 start = stop + del.length();
545 mailArrived(mail, TRUE); 545 mailArrived(mail, TRUE);
546 } 546 }
547 } 547 }
548 548
549 QFile fo(getPath(FALSE) + "outbox.txt"); 549 QFile fo(getPath(FALSE) + "outbox.txt");
550 if ( fo.open(IO_ReadOnly) ) { // file opened successfully 550 if ( fo.open(IO_ReadOnly) ) { // file opened successfully
551 QTextStream t( &fo ); // use a text stream 551 QTextStream t( &fo ); // use a text stream
552 s = t.read(); 552 s = t.read();
553 fo.close(); 553 fo.close();
554 554
555 start = 0; 555 start = 0;
556 del = "\n.\n"; 556 del = "\n.\n";
557 while ((uint) start < s.length()) { 557 while ((uint) start < s.length()) {
558 stop = s.find(del, start); 558 stop = s.find(del, start);
559 if (stop == -1) 559 if (stop == -1)
560 stop = s.length() - del.length(); 560 stop = s.length() - del.length();
561 561
562 mail.rawMail = s.mid(start, stop + del.length() - start ); 562 mail.rawMail = s.mid(start, stop + del.length() - start );
563 start = stop + del.length(); 563 start = stop + del.length();
564 emailHandler->parse(mail.rawMail, lineShift, &mail); 564 emailHandler->parse(mail.rawMail, lineShift, &mail);
565 mail.sent = false; 565 mail.sent = false;
566 mail.received = false; 566 mail.received = false;
567 enqueMail(mail); 567 enqueMail(mail);
568 568
569 } 569 }
570 } 570 }
571} 571}
572 572
573void EmailClient::saveMail(QString fileName, QListView *view) 573void EmailClient::saveMail(QString fileName, QListView *view)
574{ 574{
575 QFile f(fileName); 575 QFile f(fileName);
576 Email *mail; 576 Email *mail;
577 577
578 if (! f.open(IO_WriteOnly) ) { 578 if (! f.open(IO_WriteOnly) ) {
579 qWarning("could not open file"); 579 qWarning("could not open file");
580 return; 580 return;
581 } 581 }
582 item = (EmailListItem *) view->firstChild(); 582 item = (EmailListItem *) view->firstChild();
583 qDebug (QString("Write : ") ); 583 qDebug (QString("Write : ") );
584 QTextStream t(&f); 584 QTextStream t(&f);
585 while (item != NULL) { 585 while (item != NULL) {
586 mail = item->getMail(); 586 mail = item->getMail();
587 qDebug(mail->rawMail); 587 qDebug(mail->rawMail);
588 qDebug(mail->recipients.first()); 588 qDebug(mail->recipients.first());
589 t << mail->rawMail; 589 t << mail->rawMail;
590 590
591 mailconf->setGroup(mail->id); 591 mailconf->setGroup(mail->id);
592 mailconf->writeEntry("mailread", mail->read); 592 mailconf->writeEntry("mailread", mail->read);
593 593
594 item = (EmailListItem *) item->nextSibling(); 594 item = (EmailListItem *) item->nextSibling();
595 } 595 }
596 f.close(); 596 f.close();
597} 597}
598 598
599//paths for mailit, is settings, inbox, enclosures 599//paths for mailit, is settings, inbox, enclosures
600QString EmailClient::getPath(bool enclosurePath) 600QString EmailClient::getPath(bool enclosurePath)
601{ 601{
602 QString basePath = "qtmail"; 602 QString basePath = "qtmail";
603 QString enclosures = "enclosures"; 603 QString enclosures = "enclosures";
604 604
605 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); 605 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
606 if ( !dir.exists() ) 606 if ( !dir.exists() )
607 dir.mkdir( dir.path() ); 607 dir.mkdir( dir.path() );
608 608
609 if (enclosurePath) { 609 if (enclosurePath) {
610 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); 610 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
611 611
612 if ( !dir.exists() ) 612 if ( !dir.exists() )
613 dir.mkdir( dir.path() ); 613 dir.mkdir( dir.path() );
614 614
615 return (dir.path() + "/"); 615 return (dir.path() + "/");
616 616
617 } 617 }
618 return (dir.path() + "/"); 618 return (dir.path() + "/");
619} 619}
620 620
621void EmailClient::readSettings() 621void EmailClient::readSettings()
622{ 622{
623 TextParser *p; 623 TextParser *p;
624 QString s; 624 QString s;
625 int pos, accountPos, y; 625 int pos, accountPos, y;
626 QFile f( getPath(FALSE) + "settings.txt"); 626 QFile f( getPath(FALSE) + "settings.txt");
627 627
628 if ( f.open(IO_ReadOnly) ) { // file opened successfully 628 if ( f.open(IO_ReadOnly) ) { // file opened successfully
629 QTextStream t( &f ); // use a text stream 629 QTextStream t( &f ); // use a text stream
630 s = t.read(); 630 s = t.read();
631 f.close(); 631 f.close();
632 632
633 p = new TextParser(s, "\n"); 633 p = new TextParser(s, "\n");
634 634
635 accountPos = 0; 635 accountPos = 0;
636 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) { 636 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
637 accountPos++; 637 accountPos++;
638 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 ) 638 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
639 account.accountName = p->getString(& ++pos, 'z', TRUE); 639 account.accountName = p->getString(& ++pos, 'z', TRUE);
640 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1) 640 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
641 account.name = p->getString(& ++pos, 'z', TRUE); 641 account.name = p->getString(& ++pos, 'z', TRUE);
642 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1) 642 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
643 account.emailAddress = p->getString(& ++pos, 'z', TRUE); 643 account.emailAddress = p->getString(& ++pos, 'z', TRUE);
644 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) 644 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1)
645 account.popUserName = p->getString(& ++pos, 'z', TRUE); 645 account.popUserName = p->getString(& ++pos, 'z', TRUE);
646 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) 646 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1)
647 account.popPasswd = p->getString(& ++pos, 'z', TRUE); 647 account.popPasswd = p->getString(& ++pos, 'z', TRUE);
648 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) 648 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1)
649 account.popServer = p->getString(& ++pos, 'z', TRUE); 649 account.popServer = p->getString(& ++pos, 'z', TRUE);
650 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) 650 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1)
651 account.smtpServer = p->getString(& ++pos, 'z', TRUE); 651 account.smtpServer = p->getString(& ++pos, 'z', TRUE);
652 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { 652 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) {
653 s = p->getString(& ++pos, 'z', TRUE); 653 s = p->getString(& ++pos, 'z', TRUE);
654 account.id = s.toInt(); 654 account.id = s.toInt();
655 } 655 }
656 656
657 account.lastServerMailCount = 0; 657 account.lastServerMailCount = 0;
658 account.synchronize = FALSE; 658 account.synchronize = FALSE;
659 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { 659 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) {
660 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { 660 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") {
661 account.synchronize = TRUE; 661 account.synchronize = TRUE;
662 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { 662 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) {
663 s = p->getString(& ++pos, 'z', TRUE); 663 s = p->getString(& ++pos, 'z', TRUE);
664 account.lastServerMailCount = s.toInt(); 664 account.lastServerMailCount = s.toInt();
665 } 665 }
666 } 666 }
667 } 667 }
668 accountList.append(&account); 668 accountList.append(&account);
669 } 669 }
670 delete p; 670 delete p;
671 } 671 }
672 mailconf->setGroup("mailitglobal"); 672 mailconf->setGroup("mailitglobal");
673 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { 673 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) {
674 mailIdCount = y; 674 mailIdCount = y;
675 } 675 }
676 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { 676 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) {
677 accountIdCount = y; 677 accountIdCount = y;
678 } 678 }
679} 679}
680 680
681void EmailClient::saveSettings() 681void EmailClient::saveSettings()
682{ 682{
683 QString temp; 683 QString temp;
684 QFile f( getPath(FALSE) + "settings.txt"); 684 QFile f( getPath(FALSE) + "settings.txt");
685 MailAccount *accountPtr; 685 MailAccount *accountPtr;
686 686
687 if (! f.open(IO_WriteOnly) ) { 687 if (! f.open(IO_WriteOnly) ) {
688 qWarning("could not save settings file"); 688 qWarning("could not save settings file");
689 return; 689 return;
690 } 690 }
691 QTextStream t(&f); 691 QTextStream t(&f);
692 t << "#Settings for QPE Mailit program\n"; 692 t << "#Settings for QPE Mailit program\n";
693 693
694 for (accountPtr = accountList.first(); accountPtr != 0; 694 for (accountPtr = accountList.first(); accountPtr != 0;
695 accountPtr = accountList.next()) { 695 accountPtr = accountList.next()) {
696 696
697 t << "accountStart;\n"; 697 t << "accountStart;\n";
698 t << "AccountName: " + accountPtr->accountName + "\n"; 698 t << "AccountName: " + accountPtr->accountName + "\n";
699 t << "Name: " + accountPtr->name + "\n"; 699 t << "Name: " + accountPtr->name + "\n";
700 t << "Email: " + accountPtr->emailAddress + "\n"; 700 t << "Email: " + accountPtr->emailAddress + "\n";
701 t << "POPUser: " + accountPtr->popUserName + "\n"; 701 t << "POPUser: " + accountPtr->popUserName + "\n";
702 t << "POPPAssword: " + accountPtr->popPasswd + "\n"; 702 t << "POPPAssword: " + accountPtr->popPasswd + "\n";
703 t << "POPServer: " + accountPtr->popServer + "\n"; 703 t << "POPServer: " + accountPtr->popServer + "\n";
704 t << "SMTPServer: " + accountPtr->smtpServer + "\n"; 704 t << "SMTPServer: " + accountPtr->smtpServer + "\n";
705 t << "AccountId: " << accountPtr->id << "\n"; 705 t << "AccountId: " << accountPtr->id << "\n";
706 if (accountPtr->synchronize) { 706 if (accountPtr->synchronize) {
707 t << "Synchronize: Yes\n"; 707 t << "Synchronize: Yes\n";
708 t << "LastServerMailCount: "; 708 t << "LastServerMailCount: ";
709 t << accountPtr->lastServerMailCount << "\n"; 709 t << accountPtr->lastServerMailCount << "\n";
710 } else { 710 } else {
711 t << "Synchronize: No\n"; 711 t << "Synchronize: No\n";
712 } 712 }
713 t << "accountEnd;\n"; 713 t << "accountEnd;\n";
714 } 714 }
715 f.close(); 715 f.close();
716 716
717 mailconf->setGroup("mailitglobal"); 717 mailconf->setGroup("mailitglobal");
718 mailconf->writeEntry("mailidcount", mailIdCount); 718 mailconf->writeEntry("mailidcount", mailIdCount);
719 mailconf->writeEntry("accountidcount", accountIdCount); 719 mailconf->writeEntry("accountidcount", accountIdCount);
720} 720}
721 721
722void EmailClient::selectAccount(int id) 722void EmailClient::selectAccount(int id)
723{ 723{
724 if (accountList.count() > 0) { 724 if (accountList.count() > 0) {
725 currentAccount = accountList.at(id); 725 currentAccount = accountList.at(id);
726 emit newCaption("Mailit - " + currentAccount->accountName); 726 emit newCaption("Mailit - " + currentAccount->accountName);
727 getNewMail(); 727 getNewMail();
728 } else { 728 } else {
729 emit newCaption("Mailit ! No account defined"); 729 emit newCaption("Mailit ! No account defined");
730 } 730 }
731} 731}
732 732
733void EmailClient::editAccount(int id) 733void EmailClient::editAccount(int id)
734{ 734{
735 MailAccount *newAccount; 735 MailAccount *newAccount;
736 736
737 editAccountView = new EditAccount(this, "account", TRUE); 737 editAccountView = new EditAccount(this, "account", TRUE);
738 if (id == newAccountId) { //new account 738 if (id == newAccountId) { //new account
739 newAccount = new MailAccount; 739 newAccount = new MailAccount;
740 editAccountView->setAccount(newAccount); 740 editAccountView->setAccount(newAccount);
741 } else { 741 } else {
742 newAccount = accountList.at(id); 742 newAccount = accountList.at(id);
743 editAccountView->setAccount(newAccount, FALSE); 743 editAccountView->setAccount(newAccount, FALSE);
744 } 744 }
745 745
746 editAccountView->showMaximized(); 746 editAccountView->showMaximized();
747 editAccountView->exec(); 747 editAccountView->exec();
748 748
749 if (editAccountView->result() == QDialog::Accepted) { 749 if (editAccountView->result() == QDialog::Accepted) {
750 if (id == newAccountId) { 750 if (id == newAccountId) {
751 newAccount->id = accountIdCount; 751 newAccount->id = accountIdCount;
752 accountIdCount++; 752 accountIdCount++;
753 accountList.append(newAccount); 753 accountList.append(newAccount);
754 updateAccounts(); 754 updateAccounts();
755 } else { 755 } else {
756 updateAccounts(); 756 updateAccounts();
757 } 757 }
758 } 758 }
759 759
760 delete editAccountView; 760 delete editAccountView;
761} 761}
762 762
763void EmailClient::deleteAccount(int id) 763void EmailClient::deleteAccount(int id)
764{ 764{
765 MailAccount *newAccount; 765 MailAccount *newAccount;
766 QString message; 766 QString message;
767 767
768 newAccount = accountList.at(id); 768 newAccount = accountList.at(id);
769 message = "Delete account:\n" + newAccount->accountName; 769 message = "Delete account:\n" + newAccount->accountName;
770 switch( QMessageBox::warning( this, "Mailit", message, 770 switch( QMessageBox::warning( this, "Mailit", message,
771 "Yes", "No", 0, 0, 1 ) ) { 771 "Yes", "No", 0, 0, 1 ) ) {
772 772
773 case 0: accountList.remove(id); 773 case 0: accountList.remove(id);
774 updateAccounts(); 774 updateAccounts();
775 break; 775 break;
776 case 1: 776 case 1:
777 break; 777 break;
778 } 778 }
779} 779}
780 780
781void EmailClient::updateAccounts() 781void EmailClient::updateAccounts()
782{ 782{
783 MailAccount *accountPtr; 783 MailAccount *accountPtr;
784 784
785 //rebuild menus, clear all first 785 //rebuild menus, clear all first
786 editAccountMenu->clear(); 786 editAccountMenu->clear();
787 selectAccountMenu->clear(); 787 selectAccountMenu->clear();
788 deleteAccountMenu->clear(); 788 deleteAccountMenu->clear();
789 789
790 newAccountId = editAccountMenu->insertItem("New", this, 790 newAccountId = editAccountMenu->insertItem("New", this,
791 SLOT(editAccount(int)) ); 791 SLOT(editAccount(int)) );
792 editAccountMenu->insertSeparator(); 792 editAccountMenu->insertSeparator();
793 793
794 idCount = 0; 794 idCount = 0;
795 for (accountPtr = accountList.first(); accountPtr != 0; 795 for (accountPtr = accountList.first(); accountPtr != 0;
796 accountPtr = accountList.next()) { 796 accountPtr = accountList.next()) {
797 797
798 editAccountMenu->insertItem(accountPtr->accountName, 798 editAccountMenu->insertItem(accountPtr->accountName,
799 this, SLOT(editAccount(int)), 0, idCount); 799 this, SLOT(editAccount(int)), 0, idCount);
800 selectAccountMenu->insertItem(accountPtr->accountName, 800 selectAccountMenu->insertItem(accountPtr->accountName,
801 this, SLOT(selectAccount(int)), 0, idCount); 801 this, SLOT(selectAccount(int)), 0, idCount);
802 deleteAccountMenu->insertItem(accountPtr->accountName, 802 deleteAccountMenu->insertItem(accountPtr->accountName,
803 this, SLOT(deleteAccount(int)), 0, idCount); 803 this, SLOT(deleteAccount(int)), 0, idCount);
804 idCount++; 804 idCount++;
805 } 805 }
806} 806}
807 807
808void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox) 808void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
809{ 809{
810 Email *mPtr; 810 Email *mPtr;
811 Enclosure *ePtr; 811 Enclosure *ePtr;
812 812
813 if (inbox) { 813 if (inbox) {
814 mPtr = mailItem->getMail(); 814 mPtr = mailItem->getMail();
815 815
816 //if mail is in queue for download, remove it from 816 //if mail is in queue for download, remove it from
817 //queue if possible 817 //queue if possible
818 if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) { 818 if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) {
819 if ( !mPtr->downloaded ) 819 if ( !mPtr->downloaded )
820 mailDownloadList.remove(mPtr->serverId, mPtr->size); 820 mailDownloadList.remove(mPtr->serverId, mPtr->size);
821 } 821 }
822 822
823 mailconf->setGroup(mPtr->id); 823 mailconf->setGroup(mPtr->id);
824 mailconf->clearGroup(); 824 mailconf->clearGroup();
825 825
826 //delete any temporary attatchemnts storing 826 //delete any temporary attatchemnts storing
827 for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) { 827 for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) {
828 if (ePtr->saved) { 828 if (ePtr->saved) {
829 QFile::remove( (ePtr->path + ePtr->name) ); 829 QFile::remove( (ePtr->path + ePtr->name) );
830 } 830 }
831 } 831 }
832 inboxView->takeItem(mailItem); 832 inboxView->takeItem(mailItem);
833 } else { 833 } else {
834 outboxView->takeItem(mailItem); 834 outboxView->takeItem(mailItem);
835 } 835 }
836} 836}
837 837
838void EmailClient::setMailSize(int size) 838void EmailClient::setMailSize(int size)
839{ 839{
840 progressBar->reset(); 840 progressBar->reset();
841 progressBar->setTotalSteps(size); 841 progressBar->setTotalSteps(size);
842} 842}
843 843
844void EmailClient::setTotalSize(int size) 844void EmailClient::setTotalSize(int size)
845{ 845{
846 846
847} 847}
848 848
849void EmailClient::setDownloadedSize(int size) 849void EmailClient::setDownloadedSize(int size)
850{ 850{
851 int total = progressBar->totalSteps(); 851 int total = progressBar->totalSteps();
852 852
853 if (size < total) { 853 if (size < total) {
854 progressBar->setProgress(size); 854 progressBar->setProgress(size);
855 } else { 855 } else {
856 progressBar->setProgress(total); 856 progressBar->setProgress(total);
857 } 857 }
858} 858}
diff --git a/noncore/net/mailit/getmail.xpm b/noncore/net/mailit/getmail.xpm
deleted file mode 100644
index d294656..0000000
--- a/noncore/net/mailit/getmail.xpm
+++ b/dev/null
@@ -1,21 +0,0 @@
1/* XPM */
2static char*getmail[]={
3"16 13 5 1",
4"# c #040404",
5"a c #c3c3c3",
6"c c #000000",
7". c None",
8"b c #ffffff",
9".........###....",
10"........#...#.#.",
11".............##.",
12"............###.",
13"................",
14"..............aa",
15".bbbbbbbbbbbbbba",
16".bbbcbbcbbbcccba",
17".bbcbccbbbbcbcba",
18".bbbbbbbbbbcccba",
19".bbcbcccbbbbbbba",
20".bbbcbbbbbbbbbba",
21".bbbbbbbbbbbbbba"};
diff --git a/noncore/net/mailit/sendmail.xpm b/noncore/net/mailit/sendmail.xpm
deleted file mode 100644
index 2803793..0000000
--- a/noncore/net/mailit/sendmail.xpm
+++ b/dev/null
@@ -1,20 +0,0 @@
1/* XPM */
2static char*sendmail[]={
3"16 13 4 1",
4"a c #c3c3c3",
5"# c #000000",
6". c None",
7"b c #ffffff",
8".....#####aaa...",
9"....####aaaaa.a.",
10"....#.###...aaa.",
11"....#..###..aaa.",
12".......###......",
13"..............aa",
14".bbbbbbbbbbbbbba",
15".bbb#bb#bbb###ba",
16".bb#b##bbbb#b#ba",
17".bbbbbbbbbb###ba",
18".bb#b###bbbbbbba",
19".bbb#bbbbbbbbbba",
20".bbbbbbbbbbbbbba"};
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index 7ba5c75..2e82623 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -1,858 +1,858 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2001 Trolltech AS. All rights reserved. 2** Copyright (C) 2001 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qt Palmtop Environment. 4** This file is part of Qt Palmtop Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include <qapplication.h> 20#include <qapplication.h>
21#include <qmessagebox.h> 21#include <qmessagebox.h>
22#include <qfile.h> 22#include <qfile.h>
23#include <qcheckbox.h> 23#include <qcheckbox.h>
24#include <qmenubar.h> 24#include <qmenubar.h>
25#include <qaction.h> 25#include <qaction.h>
26#include "resource.h" 26#include "resource.h"
27#include "emailclient.h" 27#include "emailclient.h"
28 28
29QCollection::Item AccountList::newItem(QCollection::Item d) 29QCollection::Item AccountList::newItem(QCollection::Item d)
30{ 30{
31 return dupl( (MailAccount *) d); 31 return dupl( (MailAccount *) d);
32} 32}
33 33
34MailAccount* AccountList::dupl(MailAccount *in) 34MailAccount* AccountList::dupl(MailAccount *in)
35{ 35{
36 ac = new MailAccount(*in); 36 ac = new MailAccount(*in);
37 return ac; 37 return ac;
38} 38}
39 39
40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl ) 40EmailClient::EmailClient( QWidget* parent, const char* name, WFlags fl )
41 : QMainWindow( parent, name, fl ) 41 : QMainWindow( parent, name, fl )
42{ 42{
43 emailHandler = new EmailHandler(); 43 emailHandler = new EmailHandler();
44 addressList = new AddressList( getPath(FALSE) + "mail_adr"); 44 addressList = new AddressList( getPath(FALSE) + "mail_adr");
45 45
46 sending = FALSE; 46 sending = FALSE;
47 receiving = FALSE; 47 receiving = FALSE;
48 previewingMail = FALSE; 48 previewingMail = FALSE;
49 mailIdCount = 1; 49 mailIdCount = 1;
50 accountIdCount = 1; 50 accountIdCount = 1;
51 allAccounts = FALSE; 51 allAccounts = FALSE;
52 52
53 init(); 53 init();
54 54
55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) ); 55 connect(emailHandler, SIGNAL(mailSent()), this, SLOT(mailSent()) );
56 56
57 connect(emailHandler, SIGNAL(smtpError(int)), this, 57 connect(emailHandler, SIGNAL(smtpError(int)), this,
58 SLOT(smtpError(int)) ); 58 SLOT(smtpError(int)) );
59 connect(emailHandler, SIGNAL(popError(int)), this, 59 connect(emailHandler, SIGNAL(popError(int)), this,
60 SLOT(popError(int)) ); 60 SLOT(popError(int)) );
61 61
62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) ); 62 connect(inboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(inboxItemSelected()) );
63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) ); 63 connect(outboxView, SIGNAL(clicked(QListViewItem *)), this, SLOT(outboxItemSelected()) );
64 64
65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this, 65 connect(emailHandler, SIGNAL(mailArrived(const Email &, bool)), this,
66 SLOT(mailArrived(const Email &, bool)) ); 66 SLOT(mailArrived(const Email &, bool)) );
67 connect(emailHandler, SIGNAL(mailTransfered(int)), this, 67 connect(emailHandler, SIGNAL(mailTransfered(int)), this,
68 SLOT(allMailArrived(int)) ); 68 SLOT(allMailArrived(int)) );
69 69
70 mailconf = new Config("mailit"); 70 mailconf = new Config("mailit");
71 //In case Synchronize is not defined in settings.txt 71 //In case Synchronize is not defined in settings.txt
72 72
73 readSettings(); 73 readSettings();
74 74
75 updateAccounts(); 75 updateAccounts();
76 76
77 lineShift = "\n"; 77 lineShift = "\n";
78 readMail(); 78 readMail();
79 lineShift = "\r\n"; 79 lineShift = "\r\n";
80 80
81} 81}
82 82
83 83
84EmailClient::~EmailClient() 84EmailClient::~EmailClient()
85{ 85{
86 //needs to be moved from destructor to closewindow event 86 //needs to be moved from destructor to closewindow event
87 saveMail(getPath(FALSE) + "inbox.txt", inboxView); 87 saveMail(getPath(FALSE) + "inbox.txt", inboxView);
88 //does not currently work. Defining outbox in the same 88 //does not currently work. Defining outbox in the same
89 //format as inbox is not a good solution as they have 89 //format as inbox is not a good solution as they have
90 //different properties 90 //different properties
91 saveMail(getPath(FALSE) + "outbox.txt", outboxView); 91 saveMail(getPath(FALSE) + "outbox.txt", outboxView);
92 saveSettings(); 92 saveSettings();
93 93
94 mailconf->write(); 94 mailconf->write();
95 delete mailconf; 95 delete mailconf;
96 96
97} 97}
98 98
99void EmailClient::init() 99void EmailClient::init()
100{ 100{
101 statusBar = new QStatusBar(this); 101 statusBar = new QStatusBar(this);
102 statusBar->setSizeGripEnabled(FALSE); 102 statusBar->setSizeGripEnabled(FALSE);
103 103
104 status1Label = new QLabel( tr("Idle"), statusBar); 104 status1Label = new QLabel( tr("Idle"), statusBar);
105 status2Label = new QLabel("", statusBar); 105 status2Label = new QLabel("", statusBar);
106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)), 106 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
107 status2Label, SLOT(setText(const QString &)) ); 107 status2Label, SLOT(setText(const QString &)) );
108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), 108 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
109 status2Label, SLOT(setText(const QString &)) ); 109 status2Label, SLOT(setText(const QString &)) );
110 110
111 progressBar = new QProgressBar(statusBar); 111 progressBar = new QProgressBar(statusBar);
112 connect(emailHandler, SIGNAL(mailboxSize(int)), 112 connect(emailHandler, SIGNAL(mailboxSize(int)),
113 this, SLOT(setTotalSize(int)) ); 113 this, SLOT(setTotalSize(int)) );
114 connect(emailHandler, SIGNAL(currentMailSize(int)), 114 connect(emailHandler, SIGNAL(currentMailSize(int)),
115 this, SLOT(setMailSize(int)) ); 115 this, SLOT(setMailSize(int)) );
116 connect(emailHandler, SIGNAL(downloadedSize(int)), 116 connect(emailHandler, SIGNAL(downloadedSize(int)),
117 this, SLOT(setDownloadedSize(int)) ); 117 this, SLOT(setDownloadedSize(int)) );
118 118
119 statusBar->addWidget(status1Label); 119 statusBar->addWidget(status1Label);
120 statusBar->addWidget(progressBar); 120 statusBar->addWidget(progressBar);
121 statusBar->addWidget(status2Label); 121 statusBar->addWidget(status2Label);
122 122
123 setToolBarsMovable(FALSE); 123 setToolBarsMovable(FALSE);
124 124
125 bar = new QToolBar(this); 125 bar = new QToolBar(this);
126 bar->setHorizontalStretchable( TRUE ); 126 bar->setHorizontalStretchable( TRUE );
127 127
128 mb = new QMenuBar( bar ); 128 mb = new QMenuBar( bar );
129 129
130 QPopupMenu *mail = new QPopupMenu(mb); 130 QPopupMenu *mail = new QPopupMenu(mb);
131 mb->insertItem( tr( "&Mail" ), mail); 131 mb->insertItem( tr( "&Mail" ), mail);
132 132
133 QPopupMenu *configure = new QPopupMenu(mb); 133 QPopupMenu *configure = new QPopupMenu(mb);
134 mb->insertItem( tr( "Accounts" ), configure); 134 mb->insertItem( tr( "Accounts" ), configure);
135 135
136 selectAccountMenu = new QPopupMenu(mb); 136 selectAccountMenu = new QPopupMenu(mb);
137 editAccountMenu = new QPopupMenu(mb); 137 editAccountMenu = new QPopupMenu(mb);
138 deleteAccountMenu = new QPopupMenu(mb); 138 deleteAccountMenu = new QPopupMenu(mb);
139 139
140 mail->insertItem(tr("Get Mail in"), selectAccountMenu); 140 mail->insertItem(tr("Get Mail in"), selectAccountMenu);
141 configure->insertItem(tr("Edit account"), editAccountMenu); 141 configure->insertItem(tr("Edit account"), editAccountMenu);
142 configure->insertItem(tr("Delete account"), deleteAccountMenu); 142 configure->insertItem(tr("Delete account"), deleteAccountMenu);
143 143
144 bar = new QToolBar(this); 144 bar = new QToolBar(this);
145 145
146 getMailButton = new QAction(tr("Get all mail"), QPixmap("getmail.xpm"), QString::null, 0, this, 0); 146 getMailButton = new QAction(tr("Get all mail"), Resource::loadPixmap("mailit/getmail"), QString::null, 0, this, 0);
147 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) ); 147 connect(getMailButton, SIGNAL(activated()), this, SLOT(getAllNewMail()) );
148 getMailButton->addTo(bar); 148 getMailButton->addTo(bar);
149 getMailButton->addTo(mail); 149 getMailButton->addTo(mail);
150 150
151 sendMailButton = new QAction(tr("Send mail"), QPixmap("sendmail.xpm"), QString::null, 0, this, 0); 151 sendMailButton = new QAction(tr("Send mail"), Resource::loadPixmap("mailit/sendmail"), QString::null, 0, this, 0);
152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) ); 152 connect(sendMailButton, SIGNAL(activated()), this, SLOT(sendQuedMail()) );
153 sendMailButton->addTo(bar); 153 sendMailButton->addTo(bar);
154 sendMailButton->addTo(mail); 154 sendMailButton->addTo(mail);
155 155
156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0); 156 composeButton = new QAction(tr("Compose"), Resource::loadPixmap("new"), QString::null, 0, this, 0);
157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) ); 157 connect(composeButton, SIGNAL(activated()), this, SLOT(compose()) );
158 composeButton->addTo(bar); 158 composeButton->addTo(bar);
159 composeButton->addTo(mail); 159 composeButton->addTo(mail);
160 160
161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("reset"), QString::null, 0, this, 0); 161 cancelButton = new QAction(tr("Cancel transfer"), Resource::loadPixmap("reset"), QString::null, 0, this, 0);
162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) ); 162 connect(cancelButton, SIGNAL(activated()), this, SLOT(cancel()) );
163 cancelButton->addTo(mail); 163 cancelButton->addTo(mail);
164 cancelButton->setEnabled(FALSE); 164 cancelButton->setEnabled(FALSE);
165 165
166 mailboxView = new QTabWidget( this, "mailboxView" ); 166 mailboxView = new QTabWidget( this, "mailboxView" );
167 167
168 QWidget* widget = new QWidget( mailboxView, "widget" ); 168 QWidget* widget = new QWidget( mailboxView, "widget" );
169 grid_2 = new QGridLayout( widget ); 169 grid_2 = new QGridLayout( widget );
170// grid_2->setSpacing(6); 170// grid_2->setSpacing(6);
171// grid_2->setMargin( 11 ); 171// grid_2->setMargin( 11 );
172 172
173 inboxView = new QListView( widget, "inboxView" ); 173 inboxView = new QListView( widget, "inboxView" );
174 inboxView->addColumn( tr( "From" ) ); 174 inboxView->addColumn( tr( "From" ) );
175 inboxView->addColumn( tr( "Subject" ) ); 175 inboxView->addColumn( tr( "Subject" ) );
176 inboxView->addColumn( tr( "Date" ) ); 176 inboxView->addColumn( tr( "Date" ) );
177 inboxView->setMinimumSize( QSize( 0, 0 ) ); 177 inboxView->setMinimumSize( QSize( 0, 0 ) );
178 inboxView->setAllColumnsShowFocus(TRUE); 178 inboxView->setAllColumnsShowFocus(TRUE);
179 179
180 grid_2->addWidget( inboxView, 2, 0 ); 180 grid_2->addWidget( inboxView, 2, 0 );
181 mailboxView->insertTab( widget, tr( "Inbox" ) ); 181 mailboxView->insertTab( widget, tr( "Inbox" ) );
182 182
183 QWidget* widget_2 = new QWidget( mailboxView, "widget_2" ); 183 QWidget* widget_2 = new QWidget( mailboxView, "widget_2" );
184 grid_3 = new QGridLayout( widget_2 ); 184 grid_3 = new QGridLayout( widget_2 );
185// grid_3->setSpacing(6); 185// grid_3->setSpacing(6);
186// grid_3->setMargin( 11 ); 186// grid_3->setMargin( 11 );
187 187
188 outboxView = new QListView( widget_2, "outboxView" ); 188 outboxView = new QListView( widget_2, "outboxView" );
189 outboxView->addColumn( tr( "To" ) ); 189 outboxView->addColumn( tr( "To" ) );
190 outboxView->addColumn( tr( "Subject" ) ); 190 outboxView->addColumn( tr( "Subject" ) );
191 outboxView->setAllColumnsShowFocus(TRUE); 191 outboxView->setAllColumnsShowFocus(TRUE);
192 192
193 grid_3->addWidget( outboxView, 0, 0 ); 193 grid_3->addWidget( outboxView, 0, 0 );
194 mailboxView->insertTab( widget_2, tr( "Outbox" ) ); 194 mailboxView->insertTab( widget_2, tr( "Outbox" ) );
195 195
196 setCentralWidget(mailboxView); 196 setCentralWidget(mailboxView);
197} 197}
198 198
199void EmailClient::compose() 199void EmailClient::compose()
200{ 200{
201 emit composeRequested(); 201 emit composeRequested();
202} 202}
203 203
204void EmailClient::cancel() 204void EmailClient::cancel()
205{ 205{
206 emailHandler->cancel(); 206 emailHandler->cancel();
207} 207}
208 208
209AddressList* EmailClient::getAdrListRef() 209AddressList* EmailClient::getAdrListRef()
210{ 210{
211 return addressList; 211 return addressList;
212} 212}
213 213
214//this needs to be rewritten to syncronize with outboxView 214//this needs to be rewritten to syncronize with outboxView
215void EmailClient::enqueMail(const Email &mail) 215void EmailClient::enqueMail(const Email &mail)
216{ 216{
217 if (accountList.count() > 0) { 217 if (accountList.count() > 0) {
218 currentAccount = accountList.first(); 218 currentAccount = accountList.first();
219 qWarning("using account " + currentAccount->name); 219 qWarning("using account " + currentAccount->name);
220 } 220 }
221 221
222 Email addMail = mail; 222 Email addMail = mail;
223 addMail.from = currentAccount->name; 223 addMail.from = currentAccount->name;
224 addMail.fromMail = currentAccount->emailAddress; 224 addMail.fromMail = currentAccount->emailAddress;
225 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 225 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
226 item = new EmailListItem(outboxView, addMail, false); 226 item = new EmailListItem(outboxView, addMail, false);
227 227
228} 228}
229 229
230void EmailClient::sendQuedMail() 230void EmailClient::sendQuedMail()
231{ 231{
232 int count = 0; 232 int count = 0;
233 233
234 if (accountList.count() == 0) { 234 if (accountList.count() == 0) {
235 QMessageBox::warning(qApp->activeWindow(), 235 QMessageBox::warning(qApp->activeWindow(),
236 "No account selected", "You must create an account", "OK\n"); 236 "No account selected", "You must create an account", "OK\n");
237 return; 237 return;
238 } 238 }
239 //traverse listview, find messages to send 239 //traverse listview, find messages to send
240 if (! sending) { 240 if (! sending) {
241 item = (EmailListItem *) outboxView->firstChild(); 241 item = (EmailListItem *) outboxView->firstChild();
242 if (item != NULL) { 242 if (item != NULL) {
243 while (item != NULL) { 243 while (item != NULL) {
244 quedMessages.append(item->getMail()); 244 quedMessages.append(item->getMail());
245 item = (EmailListItem *) item->nextSibling(); 245 item = (EmailListItem *) item->nextSibling();
246 count++; 246 count++;
247 } 247 }
248 setMailAccount(); 248 setMailAccount();
249 emailHandler->sendMail(&quedMessages); 249 emailHandler->sendMail(&quedMessages);
250 sending = TRUE; 250 sending = TRUE;
251 sendMailButton->setEnabled(FALSE); 251 sendMailButton->setEnabled(FALSE);
252 cancelButton->setEnabled(TRUE); 252 cancelButton->setEnabled(TRUE);
253 } else { 253 } else {
254 qWarning("sendQuedMail(): no messages to send"); 254 qWarning("sendQuedMail(): no messages to send");
255 } 255 }
256 } 256 }
257} 257}
258 258
259void EmailClient::setMailAccount() 259void EmailClient::setMailAccount()
260{ 260{
261 emailHandler->setAccount(*currentAccount); 261 emailHandler->setAccount(*currentAccount);
262} 262}
263 263
264void EmailClient::mailSent() 264void EmailClient::mailSent()
265{ 265{
266 sending = FALSE; 266 sending = FALSE;
267 sendMailButton->setEnabled(TRUE); 267 sendMailButton->setEnabled(TRUE);
268 268
269 quedMessages.clear(); 269 quedMessages.clear();
270 outboxView->clear(); //should be moved to an sentBox 270 outboxView->clear(); //should be moved to an sentBox
271} 271}
272 272
273void EmailClient::getNewMail() { 273void EmailClient::getNewMail() {
274 274
275 if (accountList.count() == 0) { 275 if (accountList.count() == 0) {
276 QMessageBox::warning(qApp->activeWindow(),"No account selected", 276 QMessageBox::warning(qApp->activeWindow(),"No account selected",
277 "You must create an account", "OK\n"); 277 "You must create an account", "OK\n");
278 return; 278 return;
279 } 279 }
280 280
281 setMailAccount(); 281 setMailAccount();
282 282
283 receiving = TRUE; 283 receiving = TRUE;
284 previewingMail = TRUE; 284 previewingMail = TRUE;
285 getMailButton->setEnabled(FALSE); 285 getMailButton->setEnabled(FALSE);
286 cancelButton->setEnabled(TRUE); 286 cancelButton->setEnabled(TRUE);
287 selectAccountMenu->setEnabled(FALSE); 287 selectAccountMenu->setEnabled(FALSE);
288 288
289 status1Label->setText(currentAccount->accountName + " headers"); 289 status1Label->setText(currentAccount->accountName + " headers");
290 progressBar->reset(); 290 progressBar->reset();
291 291
292 //get any previous mails not downloaded and add to queue 292 //get any previous mails not downloaded and add to queue
293 mailDownloadList.clear(); 293 mailDownloadList.clear();
294 Email *mailPtr; 294 Email *mailPtr;
295 item = (EmailListItem *) inboxView->firstChild(); 295 item = (EmailListItem *) inboxView->firstChild();
296 while (item != NULL) { 296 while (item != NULL) {
297 mailPtr = item->getMail(); 297 mailPtr = item->getMail();
298 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) { 298 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
299 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 299 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
300 } 300 }
301 item = (EmailListItem *) item->nextSibling(); 301 item = (EmailListItem *) item->nextSibling();
302 } 302 }
303 303
304 emailHandler->getMailHeaders(); 304 emailHandler->getMailHeaders();
305} 305}
306 306
307void EmailClient::getAllNewMail() 307void EmailClient::getAllNewMail()
308{ 308{
309 allAccounts = TRUE; 309 allAccounts = TRUE;
310 currentAccount = accountList.first(); 310 currentAccount = accountList.first();
311 getNewMail(); 311 getNewMail();
312} 312}
313 313
314void EmailClient::mailArrived(const Email &mail, bool fromDisk) 314void EmailClient::mailArrived(const Email &mail, bool fromDisk)
315{ 315{
316 Enclosure *ePtr; 316 Enclosure *ePtr;
317 Email newMail; 317 Email newMail;
318 int thisMailId; 318 int thisMailId;
319 emailHandler->parse(mail.rawMail, lineShift, &newMail); 319 emailHandler->parse(mail.rawMail, lineShift, &newMail);
320 320
321 mailconf->setGroup(newMail.id); 321 mailconf->setGroup(newMail.id);
322 322
323 if (fromDisk) { 323 if (fromDisk) {
324 newMail.downloaded = mailconf->readBoolEntry("downloaded"); 324 newMail.downloaded = mailconf->readBoolEntry("downloaded");
325 newMail.size = mailconf->readNumEntry("size"); 325 newMail.size = mailconf->readNumEntry("size");
326 newMail.serverId = mailconf->readNumEntry("serverid"); 326 newMail.serverId = mailconf->readNumEntry("serverid");
327 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid"); 327 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
328 } else { //mail arrived from server 328 } else { //mail arrived from server
329 newMail.serverId = mail.serverId; 329 newMail.serverId = mail.serverId;
330 newMail.size = mail.size; 330 newMail.size = mail.size;
331 newMail.downloaded = mail.downloaded; 331 newMail.downloaded = mail.downloaded;
332 332
333 newMail.fromAccountId = currentAccount->id; 333 newMail.fromAccountId = currentAccount->id;
334 mailconf->writeEntry("fromaccountid", newMail.fromAccountId); 334 mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
335 } 335 }
336 336
337 //add if read or not 337 //add if read or not
338 newMail.read = mailconf->readBoolEntry("mailread"); 338 newMail.read = mailconf->readBoolEntry("mailread");
339 339
340 //check if new mail 340 //check if new mail
341 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) { 341 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) {
342 thisMailId = mailIdCount; 342 thisMailId = mailIdCount;
343 mailIdCount++; 343 mailIdCount++;
344 344
345 //set server count, so that if the user aborts, the new 345 //set server count, so that if the user aborts, the new
346 //header is not reloaded 346 //header is not reloaded
347 if (currentAccount->synchronize) 347 if (currentAccount->synchronize)
348 currentAccount->lastServerMailCount++; 348 currentAccount->lastServerMailCount++;
349 349
350 mailconf->writeEntry("internalmailid", thisMailId); 350 mailconf->writeEntry("internalmailid", thisMailId);
351 mailconf->writeEntry("downloaded", newMail.downloaded); 351 mailconf->writeEntry("downloaded", newMail.downloaded);
352 mailconf->writeEntry("size", (int) newMail.size); 352 mailconf->writeEntry("size", (int) newMail.size);
353 mailconf->writeEntry("serverid", newMail.serverId); 353 mailconf->writeEntry("serverid", newMail.serverId);
354 354
355 addressList->addContact(newMail.fromMail, newMail.from); 355 addressList->addContact(newMail.fromMail, newMail.from);
356 } else if (!fromDisk) { //body to header arrived 356 } else if (!fromDisk) { //body to header arrived
357 mailconf->writeEntry("downloaded", TRUE); 357 mailconf->writeEntry("downloaded", TRUE);
358 } 358 }
359 QString stringMailId; 359 QString stringMailId;
360 stringMailId.setNum(thisMailId); 360 stringMailId.setNum(thisMailId);
361 //se if any attatchments needs to be stored 361 //se if any attatchments needs to be stored
362 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { 362 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
363 QString stringId; 363 QString stringId;
364 stringId.setNum(ePtr->id); 364 stringId.setNum(ePtr->id);
365 365
366 int id = mailconf->readNumEntry("enclosureid_" + stringId); 366 int id = mailconf->readNumEntry("enclosureid_" + stringId);
367 if (id != ePtr->id) { //new entry 367 if (id != ePtr->id) { //new entry
368 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id); 368 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id);
369 mailconf->writeEntry("name_" + stringId, ePtr->originalName); 369 mailconf->writeEntry("name_" + stringId, ePtr->originalName);
370 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType); 370 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType);
371 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute); 371 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute);
372 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 372 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
373 mailconf->writeEntry("installed_" + stringId, FALSE); 373 mailconf->writeEntry("installed_" + stringId, FALSE);
374 374
375 ePtr->name = stringMailId + "_" + stringId; 375 ePtr->name = stringMailId + "_" + stringId;
376 ePtr->path = getPath(TRUE); 376 ePtr->path = getPath(TRUE);
377 if (emailHandler->getEnclosure(ePtr)) { //file saved 377 if (emailHandler->getEnclosure(ePtr)) { //file saved
378 ePtr->saved = TRUE; 378 ePtr->saved = TRUE;
379 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 379 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
380 mailconf->writeEntry("filename_" + stringId, ePtr->name); 380 mailconf->writeEntry("filename_" + stringId, ePtr->name);
381 mailconf->writeEntry("path_" + stringId, ePtr->path); 381 mailconf->writeEntry("path_" + stringId, ePtr->path);
382 } else { 382 } else {
383 ePtr->saved = FALSE; 383 ePtr->saved = FALSE;
384 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 384 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
385 } 385 }
386 } else { 386 } else {
387 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId); 387 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId);
388 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId); 388 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId);
389 if (ePtr->saved) { 389 if (ePtr->saved) {
390 ePtr->name = mailconf->readEntry("filename_" + stringId); 390 ePtr->name = mailconf->readEntry("filename_" + stringId);
391 ePtr->path = mailconf->readEntry("path_" + stringId); 391 ePtr->path = mailconf->readEntry("path_" + stringId);
392 } 392 }
393 } 393 }
394 } 394 }
395 if (!previewingMail && !fromDisk) { 395 if (!previewingMail && !fromDisk) {
396 Email *mailPtr; 396 Email *mailPtr;
397 item = (EmailListItem *) inboxView->firstChild(); 397 item = (EmailListItem *) inboxView->firstChild();
398 while (item != NULL) { 398 while (item != NULL) {
399 mailPtr = item->getMail(); 399 mailPtr = item->getMail();
400 if (mailPtr->id == newMail.id) { 400 if (mailPtr->id == newMail.id) {
401 item->setMail(newMail); 401 item->setMail(newMail);
402 emit mailUpdated(item->getMail()); 402 emit mailUpdated(item->getMail());
403 } 403 }
404 item = (EmailListItem *) item->nextSibling(); 404 item = (EmailListItem *) item->nextSibling();
405 } 405 }
406 } else { 406 } else {
407 item = new EmailListItem(inboxView, newMail, TRUE); 407 item = new EmailListItem(inboxView, newMail, TRUE);
408 if (!newMail.downloaded) 408 if (!newMail.downloaded)
409 mailDownloadList.sizeInsert(newMail.serverId, newMail.size); 409 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);
410 } 410 }
411 411
412} 412}
413 413
414void EmailClient::allMailArrived(int count) 414void EmailClient::allMailArrived(int count)
415{ 415{
416 // not previewing means all mailtransfer has been done 416 // not previewing means all mailtransfer has been done
417 if (!previewingMail) { 417 if (!previewingMail) {
418 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { 418 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
419 emit newCaption("Mailit - " + currentAccount->accountName); 419 emit newCaption("Mailit - " + currentAccount->accountName);
420 getNewMail(); 420 getNewMail();
421 return; 421 return;
422 } else { 422 } else {
423 allAccounts = FALSE; 423 allAccounts = FALSE;
424 receiving = FALSE; 424 receiving = FALSE;
425 getMailButton->setEnabled(TRUE); 425 getMailButton->setEnabled(TRUE);
426 cancelButton->setEnabled(FALSE); 426 cancelButton->setEnabled(FALSE);
427 selectAccountMenu->setEnabled(TRUE); 427 selectAccountMenu->setEnabled(TRUE);
428 status1Label->setText("Idle"); 428 status1Label->setText("Idle");
429 429
430 progressBar->reset(); 430 progressBar->reset();
431 return; 431 return;
432 } 432 }
433 } 433 }
434 434
435 // all headers downloaded from server, start downloading remaining mails 435 // all headers downloaded from server, start downloading remaining mails
436 previewingMail = FALSE; 436 previewingMail = FALSE;
437 status1Label->setText(currentAccount->accountName); 437 status1Label->setText(currentAccount->accountName);
438 progressBar->reset(); 438 progressBar->reset();
439 439
440 emailHandler->getMailByList(&mailDownloadList); 440 emailHandler->getMailByList(&mailDownloadList);
441} 441}
442 442
443void EmailClient::moveMailFront(Email *mailPtr) 443void EmailClient::moveMailFront(Email *mailPtr)
444{ 444{
445 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) { 445 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
446 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size); 446 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
447 } 447 }
448} 448}
449 449
450void EmailClient::smtpError(int code) 450void EmailClient::smtpError(int code)
451{ 451{
452 QString temp; 452 QString temp;
453 453
454 if (code == ErrUnknownResponse) 454 if (code == ErrUnknownResponse)
455 temp = "Unknown response from server"; 455 temp = "Unknown response from server";
456 456
457 if (code == QSocket::ErrHostNotFound) 457 if (code == QSocket::ErrHostNotFound)
458 temp = "host not found"; 458 temp = "host not found";
459 if (code == QSocket::ErrConnectionRefused) 459 if (code == QSocket::ErrConnectionRefused)
460 temp = "connection refused"; 460 temp = "connection refused";
461 if (code == QSocket::ErrSocketRead) 461 if (code == QSocket::ErrSocketRead)
462 temp = "socket packet error"; 462 temp = "socket packet error";
463 463
464 if (code != ErrCancel) { 464 if (code != ErrCancel) {
465 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n"); 465 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n");
466 } else { 466 } else {
467 status2Label->setText("Aborted by user"); 467 status2Label->setText("Aborted by user");
468 } 468 }
469 469
470 sending = FALSE; 470 sending = FALSE;
471 sendMailButton->setEnabled(TRUE); 471 sendMailButton->setEnabled(TRUE);
472 cancelButton->setEnabled(FALSE); 472 cancelButton->setEnabled(FALSE);
473 quedMessages.clear(); 473 quedMessages.clear();
474} 474}
475 475
476void EmailClient::popError(int code) 476void EmailClient::popError(int code)
477{ 477{
478 QString temp; 478 QString temp;
479 479
480 if (code == ErrUnknownResponse) 480 if (code == ErrUnknownResponse)
481 temp = "Unknown response from server"; 481 temp = "Unknown response from server";
482 if (code == ErrLoginFailed) 482 if (code == ErrLoginFailed)
483 temp = "Login failed\nCheck user name and password"; 483 temp = "Login failed\nCheck user name and password";
484 484
485 if (code == QSocket::ErrHostNotFound) 485 if (code == QSocket::ErrHostNotFound)
486 temp = "host not found"; 486 temp = "host not found";
487 if (code == QSocket::ErrConnectionRefused) 487 if (code == QSocket::ErrConnectionRefused)
488 temp = "connection refused"; 488 temp = "connection refused";
489 if (code == QSocket::ErrSocketRead) 489 if (code == QSocket::ErrSocketRead)
490 temp = "socket packet error"; 490 temp = "socket packet error";
491 491
492 if (code != ErrCancel) { 492 if (code != ErrCancel) {
493 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n"); 493 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n");
494 } else { 494 } else {
495 status2Label->setText("Aborted by user"); 495 status2Label->setText("Aborted by user");
496 } 496 }
497 497
498 receiving = FALSE; 498 receiving = FALSE;
499 getMailButton->setEnabled(TRUE); 499 getMailButton->setEnabled(TRUE);
500 cancelButton->setEnabled(FALSE); 500 cancelButton->setEnabled(FALSE);
501 selectAccountMenu->setEnabled(TRUE); 501 selectAccountMenu->setEnabled(TRUE);
502} 502}
503 503
504void EmailClient::inboxItemSelected() 504void EmailClient::inboxItemSelected()
505{ 505{
506 item = (EmailListItem*) inboxView->selectedItem(); 506 item = (EmailListItem*) inboxView->selectedItem();
507 if (item != NULL) { 507 if (item != NULL) {
508 emit viewEmail(inboxView, item->getMail()); 508 emit viewEmail(inboxView, item->getMail());
509 } 509 }
510} 510}
511 511
512void EmailClient::outboxItemSelected() 512void EmailClient::outboxItemSelected()
513{ 513{
514 item = (EmailListItem*) outboxView->selectedItem(); 514 item = (EmailListItem*) outboxView->selectedItem();
515 if (item != NULL) { 515 if (item != NULL) {
516 emit viewEmail(outboxView, item->getMail()); 516 emit viewEmail(outboxView, item->getMail());
517 } 517 }
518 518
519} 519}
520 520
521void EmailClient::readMail() 521void EmailClient::readMail()
522{ 522{
523 Email mail; 523 Email mail;
524 int start, stop; 524 int start, stop;
525 QString s, del; 525 QString s, del;
526 526
527 QFile f(getPath(FALSE) + "inbox.txt"); 527 QFile f(getPath(FALSE) + "inbox.txt");
528// QFileInfo fi(f); 528// QFileInfo fi(f);
529 qDebug( f.name()); 529 qDebug( f.name());
530 530
531 if ( f.open(IO_ReadOnly) ) { // file opened successfully 531 if ( f.open(IO_ReadOnly) ) { // file opened successfully
532 QTextStream t( &f ); // use a text stream 532 QTextStream t( &f ); // use a text stream
533 s = t.read(); 533 s = t.read();
534 f.close(); 534 f.close();
535 535
536 start = 0; 536 start = 0;
537 del = "\n.\n"; 537 del = "\n.\n";
538 while ((uint) start < s.length()) { 538 while ((uint) start < s.length()) {
539 stop = s.find(del, start); 539 stop = s.find(del, start);
540 if (stop == -1) 540 if (stop == -1)
541 stop = s.length() - del.length(); 541 stop = s.length() - del.length();
542 542
543 mail.rawMail = s.mid(start, stop + del.length() - start ); 543 mail.rawMail = s.mid(start, stop + del.length() - start );
544 start = stop + del.length(); 544 start = stop + del.length();
545 mailArrived(mail, TRUE); 545 mailArrived(mail, TRUE);
546 } 546 }
547 } 547 }
548 548
549 QFile fo(getPath(FALSE) + "outbox.txt"); 549 QFile fo(getPath(FALSE) + "outbox.txt");
550 if ( fo.open(IO_ReadOnly) ) { // file opened successfully 550 if ( fo.open(IO_ReadOnly) ) { // file opened successfully
551 QTextStream t( &fo ); // use a text stream 551 QTextStream t( &fo ); // use a text stream
552 s = t.read(); 552 s = t.read();
553 fo.close(); 553 fo.close();
554 554
555 start = 0; 555 start = 0;
556 del = "\n.\n"; 556 del = "\n.\n";
557 while ((uint) start < s.length()) { 557 while ((uint) start < s.length()) {
558 stop = s.find(del, start); 558 stop = s.find(del, start);
559 if (stop == -1) 559 if (stop == -1)
560 stop = s.length() - del.length(); 560 stop = s.length() - del.length();
561 561
562 mail.rawMail = s.mid(start, stop + del.length() - start ); 562 mail.rawMail = s.mid(start, stop + del.length() - start );
563 start = stop + del.length(); 563 start = stop + del.length();
564 emailHandler->parse(mail.rawMail, lineShift, &mail); 564 emailHandler->parse(mail.rawMail, lineShift, &mail);
565 mail.sent = false; 565 mail.sent = false;
566 mail.received = false; 566 mail.received = false;
567 enqueMail(mail); 567 enqueMail(mail);
568 568
569 } 569 }
570 } 570 }
571} 571}
572 572
573void EmailClient::saveMail(QString fileName, QListView *view) 573void EmailClient::saveMail(QString fileName, QListView *view)
574{ 574{
575 QFile f(fileName); 575 QFile f(fileName);
576 Email *mail; 576 Email *mail;
577 577
578 if (! f.open(IO_WriteOnly) ) { 578 if (! f.open(IO_WriteOnly) ) {
579 qWarning("could not open file"); 579 qWarning("could not open file");
580 return; 580 return;
581 } 581 }
582 item = (EmailListItem *) view->firstChild(); 582 item = (EmailListItem *) view->firstChild();
583 qDebug (QString("Write : ") ); 583 qDebug (QString("Write : ") );
584 QTextStream t(&f); 584 QTextStream t(&f);
585 while (item != NULL) { 585 while (item != NULL) {
586 mail = item->getMail(); 586 mail = item->getMail();
587 qDebug(mail->rawMail); 587 qDebug(mail->rawMail);
588 qDebug(mail->recipients.first()); 588 qDebug(mail->recipients.first());
589 t << mail->rawMail; 589 t << mail->rawMail;
590 590
591 mailconf->setGroup(mail->id); 591 mailconf->setGroup(mail->id);
592 mailconf->writeEntry("mailread", mail->read); 592 mailconf->writeEntry("mailread", mail->read);
593 593
594 item = (EmailListItem *) item->nextSibling(); 594 item = (EmailListItem *) item->nextSibling();
595 } 595 }
596 f.close(); 596 f.close();
597} 597}
598 598
599//paths for mailit, is settings, inbox, enclosures 599//paths for mailit, is settings, inbox, enclosures
600QString EmailClient::getPath(bool enclosurePath) 600QString EmailClient::getPath(bool enclosurePath)
601{ 601{
602 QString basePath = "qtmail"; 602 QString basePath = "qtmail";
603 QString enclosures = "enclosures"; 603 QString enclosures = "enclosures";
604 604
605 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); 605 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
606 if ( !dir.exists() ) 606 if ( !dir.exists() )
607 dir.mkdir( dir.path() ); 607 dir.mkdir( dir.path() );
608 608
609 if (enclosurePath) { 609 if (enclosurePath) {
610 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); 610 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
611 611
612 if ( !dir.exists() ) 612 if ( !dir.exists() )
613 dir.mkdir( dir.path() ); 613 dir.mkdir( dir.path() );
614 614
615 return (dir.path() + "/"); 615 return (dir.path() + "/");
616 616
617 } 617 }
618 return (dir.path() + "/"); 618 return (dir.path() + "/");
619} 619}
620 620
621void EmailClient::readSettings() 621void EmailClient::readSettings()
622{ 622{
623 TextParser *p; 623 TextParser *p;
624 QString s; 624 QString s;
625 int pos, accountPos, y; 625 int pos, accountPos, y;
626 QFile f( getPath(FALSE) + "settings.txt"); 626 QFile f( getPath(FALSE) + "settings.txt");
627 627
628 if ( f.open(IO_ReadOnly) ) { // file opened successfully 628 if ( f.open(IO_ReadOnly) ) { // file opened successfully
629 QTextStream t( &f ); // use a text stream 629 QTextStream t( &f ); // use a text stream
630 s = t.read(); 630 s = t.read();
631 f.close(); 631 f.close();
632 632
633 p = new TextParser(s, "\n"); 633 p = new TextParser(s, "\n");
634 634
635 accountPos = 0; 635 accountPos = 0;
636 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) { 636 while ( (accountPos = p->find("ACCOUNTSTART",';', accountPos, TRUE)) != -1 ) {
637 accountPos++; 637 accountPos++;
638 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 ) 638 if ( (pos = p->find("ACCOUNTNAME",':', accountPos, TRUE)) != -1 )
639 account.accountName = p->getString(& ++pos, 'z', TRUE); 639 account.accountName = p->getString(& ++pos, 'z', TRUE);
640 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1) 640 if ( (pos = p->find("NAME",':', accountPos, TRUE)) != -1)
641 account.name = p->getString(& ++pos, 'z', TRUE); 641 account.name = p->getString(& ++pos, 'z', TRUE);
642 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1) 642 if ( (pos = p->find("EMAIL",':', accountPos, TRUE)) != -1)
643 account.emailAddress = p->getString(& ++pos, 'z', TRUE); 643 account.emailAddress = p->getString(& ++pos, 'z', TRUE);
644 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1) 644 if ( (pos = p->find("POPUSER",':', accountPos, TRUE)) != -1)
645 account.popUserName = p->getString(& ++pos, 'z', TRUE); 645 account.popUserName = p->getString(& ++pos, 'z', TRUE);
646 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1) 646 if ( (pos = p->find("POPPASSWORD",':', accountPos, TRUE)) != -1)
647 account.popPasswd = p->getString(& ++pos, 'z', TRUE); 647 account.popPasswd = p->getString(& ++pos, 'z', TRUE);
648 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1) 648 if ( (pos = p->find("POPSERVER",':', accountPos, TRUE)) != -1)
649 account.popServer = p->getString(& ++pos, 'z', TRUE); 649 account.popServer = p->getString(& ++pos, 'z', TRUE);
650 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1) 650 if ( (pos = p->find("SMTPSERVER",':', accountPos, TRUE)) != -1)
651 account.smtpServer = p->getString(& ++pos, 'z', TRUE); 651 account.smtpServer = p->getString(& ++pos, 'z', TRUE);
652 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) { 652 if ( (pos = p->find("ACCOUNTID",':', accountPos, TRUE)) != -1) {
653 s = p->getString(& ++pos, 'z', TRUE); 653 s = p->getString(& ++pos, 'z', TRUE);
654 account.id = s.toInt(); 654 account.id = s.toInt();
655 } 655 }
656 656
657 account.lastServerMailCount = 0; 657 account.lastServerMailCount = 0;
658 account.synchronize = FALSE; 658 account.synchronize = FALSE;
659 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) { 659 if ( (pos = p->find("SYNCHRONIZE",':', accountPos, TRUE)) != -1) {
660 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") { 660 if (p->getString(& ++pos, 'z', TRUE).upper() == "YES") {
661 account.synchronize = TRUE; 661 account.synchronize = TRUE;
662 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) { 662 if ( (pos = p->find("LASTSERVERMAILCOUNT",':', accountPos, TRUE)) != -1) {
663 s = p->getString(& ++pos, 'z', TRUE); 663 s = p->getString(& ++pos, 'z', TRUE);
664 account.lastServerMailCount = s.toInt(); 664 account.lastServerMailCount = s.toInt();
665 } 665 }
666 } 666 }
667 } 667 }
668 accountList.append(&account); 668 accountList.append(&account);
669 } 669 }
670 delete p; 670 delete p;
671 } 671 }
672 mailconf->setGroup("mailitglobal"); 672 mailconf->setGroup("mailitglobal");
673 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) { 673 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) {
674 mailIdCount = y; 674 mailIdCount = y;
675 } 675 }
676 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) { 676 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) {
677 accountIdCount = y; 677 accountIdCount = y;
678 } 678 }
679} 679}
680 680
681void EmailClient::saveSettings() 681void EmailClient::saveSettings()
682{ 682{
683 QString temp; 683 QString temp;
684 QFile f( getPath(FALSE) + "settings.txt"); 684 QFile f( getPath(FALSE) + "settings.txt");
685 MailAccount *accountPtr; 685 MailAccount *accountPtr;
686 686
687 if (! f.open(IO_WriteOnly) ) { 687 if (! f.open(IO_WriteOnly) ) {
688 qWarning("could not save settings file"); 688 qWarning("could not save settings file");
689 return; 689 return;
690 } 690 }
691 QTextStream t(&f); 691 QTextStream t(&f);
692 t << "#Settings for QPE Mailit program\n"; 692 t << "#Settings for QPE Mailit program\n";
693 693
694 for (accountPtr = accountList.first(); accountPtr != 0; 694 for (accountPtr = accountList.first(); accountPtr != 0;
695 accountPtr = accountList.next()) { 695 accountPtr = accountList.next()) {
696 696
697 t << "accountStart;\n"; 697 t << "accountStart;\n";
698 t << "AccountName: " + accountPtr->accountName + "\n"; 698 t << "AccountName: " + accountPtr->accountName + "\n";
699 t << "Name: " + accountPtr->name + "\n"; 699 t << "Name: " + accountPtr->name + "\n";
700 t << "Email: " + accountPtr->emailAddress + "\n"; 700 t << "Email: " + accountPtr->emailAddress + "\n";
701 t << "POPUser: " + accountPtr->popUserName + "\n"; 701 t << "POPUser: " + accountPtr->popUserName + "\n";
702 t << "POPPAssword: " + accountPtr->popPasswd + "\n"; 702 t << "POPPAssword: " + accountPtr->popPasswd + "\n";
703 t << "POPServer: " + accountPtr->popServer + "\n"; 703 t << "POPServer: " + accountPtr->popServer + "\n";
704 t << "SMTPServer: " + accountPtr->smtpServer + "\n"; 704 t << "SMTPServer: " + accountPtr->smtpServer + "\n";
705 t << "AccountId: " << accountPtr->id << "\n"; 705 t << "AccountId: " << accountPtr->id << "\n";
706 if (accountPtr->synchronize) { 706 if (accountPtr->synchronize) {
707 t << "Synchronize: Yes\n"; 707 t << "Synchronize: Yes\n";
708 t << "LastServerMailCount: "; 708 t << "LastServerMailCount: ";
709 t << accountPtr->lastServerMailCount << "\n"; 709 t << accountPtr->lastServerMailCount << "\n";
710 } else { 710 } else {
711 t << "Synchronize: No\n"; 711 t << "Synchronize: No\n";
712 } 712 }
713 t << "accountEnd;\n"; 713 t << "accountEnd;\n";
714 } 714 }
715 f.close(); 715 f.close();
716 716
717 mailconf->setGroup("mailitglobal"); 717 mailconf->setGroup("mailitglobal");
718 mailconf->writeEntry("mailidcount", mailIdCount); 718 mailconf->writeEntry("mailidcount", mailIdCount);
719 mailconf->writeEntry("accountidcount", accountIdCount); 719 mailconf->writeEntry("accountidcount", accountIdCount);
720} 720}
721 721
722void EmailClient::selectAccount(int id) 722void EmailClient::selectAccount(int id)
723{ 723{
724 if (accountList.count() > 0) { 724 if (accountList.count() > 0) {
725 currentAccount = accountList.at(id); 725 currentAccount = accountList.at(id);
726 emit newCaption("Mailit - " + currentAccount->accountName); 726 emit newCaption("Mailit - " + currentAccount->accountName);
727 getNewMail(); 727 getNewMail();
728 } else { 728 } else {
729 emit newCaption("Mailit ! No account defined"); 729 emit newCaption("Mailit ! No account defined");
730 } 730 }
731} 731}
732 732
733void EmailClient::editAccount(int id) 733void EmailClient::editAccount(int id)
734{ 734{
735 MailAccount *newAccount; 735 MailAccount *newAccount;
736 736
737 editAccountView = new EditAccount(this, "account", TRUE); 737 editAccountView = new EditAccount(this, "account", TRUE);
738 if (id == newAccountId) { //new account 738 if (id == newAccountId) { //new account
739 newAccount = new MailAccount; 739 newAccount = new MailAccount;
740 editAccountView->setAccount(newAccount); 740 editAccountView->setAccount(newAccount);
741 } else { 741 } else {
742 newAccount = accountList.at(id); 742 newAccount = accountList.at(id);
743 editAccountView->setAccount(newAccount, FALSE); 743 editAccountView->setAccount(newAccount, FALSE);
744 } 744 }
745 745
746 editAccountView->showMaximized(); 746 editAccountView->showMaximized();
747 editAccountView->exec(); 747 editAccountView->exec();
748 748
749 if (editAccountView->result() == QDialog::Accepted) { 749 if (editAccountView->result() == QDialog::Accepted) {
750 if (id == newAccountId) { 750 if (id == newAccountId) {
751 newAccount->id = accountIdCount; 751 newAccount->id = accountIdCount;
752 accountIdCount++; 752 accountIdCount++;
753 accountList.append(newAccount); 753 accountList.append(newAccount);
754 updateAccounts(); 754 updateAccounts();
755 } else { 755 } else {
756 updateAccounts(); 756 updateAccounts();
757 } 757 }
758 } 758 }
759 759
760 delete editAccountView; 760 delete editAccountView;
761} 761}
762 762
763void EmailClient::deleteAccount(int id) 763void EmailClient::deleteAccount(int id)
764{ 764{
765 MailAccount *newAccount; 765 MailAccount *newAccount;
766 QString message; 766 QString message;
767 767
768 newAccount = accountList.at(id); 768 newAccount = accountList.at(id);
769 message = "Delete account:\n" + newAccount->accountName; 769 message = "Delete account:\n" + newAccount->accountName;
770 switch( QMessageBox::warning( this, "Mailit", message, 770 switch( QMessageBox::warning( this, "Mailit", message,
771 "Yes", "No", 0, 0, 1 ) ) { 771 "Yes", "No", 0, 0, 1 ) ) {
772 772
773 case 0: accountList.remove(id); 773 case 0: accountList.remove(id);
774 updateAccounts(); 774 updateAccounts();
775 break; 775 break;
776 case 1: 776 case 1:
777 break; 777 break;
778 } 778 }
779} 779}
780 780
781void EmailClient::updateAccounts() 781void EmailClient::updateAccounts()
782{ 782{
783 MailAccount *accountPtr; 783 MailAccount *accountPtr;
784 784
785 //rebuild menus, clear all first 785 //rebuild menus, clear all first
786 editAccountMenu->clear(); 786 editAccountMenu->clear();
787 selectAccountMenu->clear(); 787 selectAccountMenu->clear();
788 deleteAccountMenu->clear(); 788 deleteAccountMenu->clear();
789 789
790 newAccountId = editAccountMenu->insertItem("New", this, 790 newAccountId = editAccountMenu->insertItem("New", this,
791 SLOT(editAccount(int)) ); 791 SLOT(editAccount(int)) );
792 editAccountMenu->insertSeparator(); 792 editAccountMenu->insertSeparator();
793 793
794 idCount = 0; 794 idCount = 0;
795 for (accountPtr = accountList.first(); accountPtr != 0; 795 for (accountPtr = accountList.first(); accountPtr != 0;
796 accountPtr = accountList.next()) { 796 accountPtr = accountList.next()) {
797 797
798 editAccountMenu->insertItem(accountPtr->accountName, 798 editAccountMenu->insertItem(accountPtr->accountName,
799 this, SLOT(editAccount(int)), 0, idCount); 799 this, SLOT(editAccount(int)), 0, idCount);
800 selectAccountMenu->insertItem(accountPtr->accountName, 800 selectAccountMenu->insertItem(accountPtr->accountName,
801 this, SLOT(selectAccount(int)), 0, idCount); 801 this, SLOT(selectAccount(int)), 0, idCount);
802 deleteAccountMenu->insertItem(accountPtr->accountName, 802 deleteAccountMenu->insertItem(accountPtr->accountName,
803 this, SLOT(deleteAccount(int)), 0, idCount); 803 this, SLOT(deleteAccount(int)), 0, idCount);
804 idCount++; 804 idCount++;
805 } 805 }
806} 806}
807 807
808void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox) 808void EmailClient::deleteMail(EmailListItem *mailItem, bool &inbox)
809{ 809{
810 Email *mPtr; 810 Email *mPtr;
811 Enclosure *ePtr; 811 Enclosure *ePtr;
812 812
813 if (inbox) { 813 if (inbox) {
814 mPtr = mailItem->getMail(); 814 mPtr = mailItem->getMail();
815 815
816 //if mail is in queue for download, remove it from 816 //if mail is in queue for download, remove it from
817 //queue if possible 817 //queue if possible
818 if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) { 818 if ( (receiving) && (mPtr->fromAccountId == currentAccount->id) ) {
819 if ( !mPtr->downloaded ) 819 if ( !mPtr->downloaded )
820 mailDownloadList.remove(mPtr->serverId, mPtr->size); 820 mailDownloadList.remove(mPtr->serverId, mPtr->size);
821 } 821 }
822 822
823 mailconf->setGroup(mPtr->id); 823 mailconf->setGroup(mPtr->id);
824 mailconf->clearGroup(); 824 mailconf->clearGroup();
825 825
826 //delete any temporary attatchemnts storing 826 //delete any temporary attatchemnts storing
827 for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) { 827 for ( ePtr=mPtr->files.first(); ePtr != 0; ePtr=mPtr->files.next() ) {
828 if (ePtr->saved) { 828 if (ePtr->saved) {
829 QFile::remove( (ePtr->path + ePtr->name) ); 829 QFile::remove( (ePtr->path + ePtr->name) );
830 } 830 }
831 } 831 }
832 inboxView->takeItem(mailItem); 832 inboxView->takeItem(mailItem);
833 } else { 833 } else {
834 outboxView->takeItem(mailItem); 834 outboxView->takeItem(mailItem);
835 } 835 }
836} 836}
837 837
838void EmailClient::setMailSize(int size) 838void EmailClient::setMailSize(int size)
839{ 839{
840 progressBar->reset(); 840 progressBar->reset();
841 progressBar->setTotalSteps(size); 841 progressBar->setTotalSteps(size);
842} 842}
843 843
844void EmailClient::setTotalSize(int size) 844void EmailClient::setTotalSize(int size)
845{ 845{
846 846
847} 847}
848 848
849void EmailClient::setDownloadedSize(int size) 849void EmailClient::setDownloadedSize(int size)
850{ 850{
851 int total = progressBar->totalSteps(); 851 int total = progressBar->totalSteps();
852 852
853 if (size < total) { 853 if (size < total) {
854 progressBar->setProgress(size); 854 progressBar->setProgress(size);
855 } else { 855 } else {
856 progressBar->setProgress(total); 856 progressBar->setProgress(total);
857 } 857 }
858} 858}
diff --git a/noncore/unsupported/mailit/getmail.xpm b/noncore/unsupported/mailit/getmail.xpm
deleted file mode 100644
index d294656..0000000
--- a/noncore/unsupported/mailit/getmail.xpm
+++ b/dev/null
@@ -1,21 +0,0 @@
1/* XPM */
2static char*getmail[]={
3"16 13 5 1",
4"# c #040404",
5"a c #c3c3c3",
6"c c #000000",
7". c None",
8"b c #ffffff",
9".........###....",
10"........#...#.#.",
11".............##.",
12"............###.",
13"................",
14"..............aa",
15".bbbbbbbbbbbbbba",
16".bbbcbbcbbbcccba",
17".bbcbccbbbbcbcba",
18".bbbbbbbbbbcccba",
19".bbcbcccbbbbbbba",
20".bbbcbbbbbbbbbba",
21".bbbbbbbbbbbbbba"};
diff --git a/noncore/unsupported/mailit/sendmail.xpm b/noncore/unsupported/mailit/sendmail.xpm
deleted file mode 100644
index 2803793..0000000
--- a/noncore/unsupported/mailit/sendmail.xpm
+++ b/dev/null
@@ -1,20 +0,0 @@
1/* XPM */
2static char*sendmail[]={
3"16 13 4 1",
4"a c #c3c3c3",
5"# c #000000",
6". c None",
7"b c #ffffff",
8".....#####aaa...",
9"....####aaaaa.a.",
10"....#.###...aaa.",
11"....#..###..aaa.",
12".......###......",
13"..............aa",
14".bbbbbbbbbbbbbba",
15".bbb#bb#bbb###ba",
16".bb#b##bbbb#b#ba",
17".bbbbbbbbbb###ba",
18".bb#b###bbbbbbba",
19".bbb#bbbbbbbbbba",
20".bbbbbbbbbbbbbba"};