summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mailit/emailclient.cpp6
-rw-r--r--noncore/unsupported/mailit/emailclient.cpp6
2 files changed, 10 insertions, 2 deletions
diff --git a/noncore/net/mailit/emailclient.cpp b/noncore/net/mailit/emailclient.cpp
index 2cedc51..b039cc4 100644
--- a/noncore/net/mailit/emailclient.cpp
+++ b/noncore/net/mailit/emailclient.cpp
@@ -214,513 +214,517 @@ void EmailClient::initStatusBar(QWidget* parent)
214{ 214{
215 statusBar = new QStatusBar(parent); 215 statusBar = new QStatusBar(parent);
216 statusBar->setSizeGripEnabled(FALSE); 216 statusBar->setSizeGripEnabled(FALSE);
217 217
218 status1Label = new QLabel( tr("Idle"), statusBar); 218 status1Label = new QLabel( tr("Idle"), statusBar);
219 status2Label = new QLabel("", statusBar); 219 status2Label = new QLabel("", statusBar);
220 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)), 220 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
221 status2Label, SLOT(setText(const QString &)) ); 221 status2Label, SLOT(setText(const QString &)) );
222 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), 222 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
223 status2Label, SLOT(setText(const QString &)) ); 223 status2Label, SLOT(setText(const QString &)) );
224 224
225 progressBar = new QProgressBar(statusBar); 225 progressBar = new QProgressBar(statusBar);
226 226
227 connect(emailHandler, SIGNAL(mailboxSize(int)), 227 connect(emailHandler, SIGNAL(mailboxSize(int)),
228 this, SLOT(setTotalSize(int)) ); 228 this, SLOT(setTotalSize(int)) );
229 connect(emailHandler, SIGNAL(currentMailSize(int)), 229 connect(emailHandler, SIGNAL(currentMailSize(int)),
230 this, SLOT(setMailSize(int)) ); 230 this, SLOT(setMailSize(int)) );
231 connect(emailHandler, SIGNAL(downloadedSize(int)), 231 connect(emailHandler, SIGNAL(downloadedSize(int)),
232 this, SLOT(setDownloadedSize(int)) ); 232 this, SLOT(setDownloadedSize(int)) );
233 233
234 statusBar->addWidget(status1Label); 234 statusBar->addWidget(status1Label);
235 statusBar->addWidget(progressBar); 235 statusBar->addWidget(progressBar);
236 statusBar->addWidget(status2Label); 236 statusBar->addWidget(status2Label);
237 237
238} 238}
239 239
240void EmailClient::compose() 240void EmailClient::compose()
241{ 241{
242 emit composeRequested(); 242 emit composeRequested();
243} 243}
244 244
245void EmailClient::cancel() 245void EmailClient::cancel()
246{ 246{
247 emailHandler->cancel(); 247 emailHandler->cancel();
248} 248}
249 249
250AddressList* EmailClient::getAdrListRef() 250AddressList* EmailClient::getAdrListRef()
251{ 251{
252 return addressList; 252 return addressList;
253} 253}
254 254
255//this needs to be rewritten to syncronize with outboxView 255//this needs to be rewritten to syncronize with outboxView
256void EmailClient::enqueMail(const Email &mail) 256void EmailClient::enqueMail(const Email &mail)
257{ 257{
258 if (accountList.count() == 0) { 258 if (accountList.count() == 0) {
259 QMessageBox::warning(qApp->activeWindow(), 259 QMessageBox::warning(qApp->activeWindow(),
260 tr("No account selected"), tr("You must create an account"), "OK\n"); 260 tr("No account selected"), tr("You must create an account"), "OK\n");
261 return; 261 return;
262 } 262 }
263 263
264 if (accountList.count() > 0) { 264 if (accountList.count() > 0) {
265 currentAccount = accountList.first(); 265 currentAccount = accountList.first();
266 qWarning("using account " + currentAccount->name); 266 qWarning("using account " + currentAccount->name);
267 } 267 }
268 268
269 Email addMail = mail; 269 Email addMail = mail;
270 addMail.from = currentAccount->name; 270 addMail.from = currentAccount->name;
271 addMail.fromMail = currentAccount->emailAddress; 271 addMail.fromMail = currentAccount->emailAddress;
272 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 272 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
273 item = new EmailListItem(outboxView, addMail, false); 273 item = new EmailListItem(outboxView, addMail, false);
274 274
275 mailboxView->setCurrentTab(1); 275 mailboxView->setCurrentTab(1);
276 276
277} 277}
278 278
279void EmailClient::sendQuedMail() 279void EmailClient::sendQuedMail()
280{ 280{
281 int count = 0; 281 int count = 0;
282 282
283 if (accountList.count() == 0) { 283 if (accountList.count() == 0) {
284 QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n"); 284 QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n");
285 return; 285 return;
286 } 286 }
287 //traverse listview, find messages to send 287 //traverse listview, find messages to send
288 if (! sending) { 288 if (! sending) {
289 item = (EmailListItem *) outboxView->firstChild(); 289 item = (EmailListItem *) outboxView->firstChild();
290 if (item != NULL) { 290 if (item != NULL) {
291 while (item != NULL) { 291 while (item != NULL) {
292 quedMessages.append(item->getMail()); 292 quedMessages.append(item->getMail());
293 item = (EmailListItem *) item->nextSibling(); 293 item = (EmailListItem *) item->nextSibling();
294 count++; 294 count++;
295 } 295 }
296 setMailAccount(); 296 setMailAccount();
297 emailHandler->sendMail(&quedMessages); 297 emailHandler->sendMail(&quedMessages);
298 sending = TRUE; 298 sending = TRUE;
299 sendMailButton->setEnabled(FALSE); 299 sendMailButton->setEnabled(FALSE);
300 cancelButton->setEnabled(TRUE); 300 cancelButton->setEnabled(TRUE);
301 } else { 301 } else {
302 qWarning("sendQuedMail(): no messages to send"); 302 qWarning("sendQuedMail(): no messages to send");
303 } 303 }
304 } 304 }
305} 305}
306 306
307void EmailClient::setMailAccount() 307void EmailClient::setMailAccount()
308{ 308{
309 emailHandler->setAccount(*currentAccount); 309 emailHandler->setAccount(*currentAccount);
310} 310}
311 311
312void EmailClient::mailSent() 312void EmailClient::mailSent()
313{ 313{
314 sending = FALSE; 314 sending = FALSE;
315 sendMailButton->setEnabled(TRUE); 315 sendMailButton->setEnabled(TRUE);
316 316
317 quedMessages.clear(); 317 quedMessages.clear();
318 outboxView->clear(); //should be moved to an sentBox 318 outboxView->clear(); //should be moved to an sentBox
319} 319}
320 320
321void EmailClient::getNewMail() { 321void EmailClient::getNewMail() {
322 322
323 if (accountList.count() == 0) { 323 if (accountList.count() == 0) {
324 QMessageBox::warning(qApp->activeWindow(),"No account selected", 324 QMessageBox::warning(qApp->activeWindow(),"No account selected",
325 "You must create an account", "OK\n"); 325 "You must create an account", "OK\n");
326 return; 326 return;
327 } 327 }
328 328
329 setMailAccount(); 329 setMailAccount();
330 330
331 receiving = TRUE; 331 receiving = TRUE;
332 previewingMail = TRUE; 332 previewingMail = TRUE;
333 getMailButton->setEnabled(FALSE); 333 getMailButton->setEnabled(FALSE);
334 cancelButton->setEnabled(TRUE); 334 cancelButton->setEnabled(TRUE);
335 selectAccountMenu->setEnabled(FALSE); 335 selectAccountMenu->setEnabled(FALSE);
336 336
337 status1Label->setText(currentAccount->accountName + " headers"); 337 status1Label->setText(currentAccount->accountName + " headers");
338 progressBar->reset(); 338 progressBar->reset();
339 339
340 //get any previous mails not downloaded and add to queue 340 //get any previous mails not downloaded and add to queue
341 /*mailDownloadList.clear(); 341 /*mailDownloadList.clear();
342 Email *mailPtr; 342 Email *mailPtr;
343 item = (EmailListItem *) inboxView->firstChild(); 343 item = (EmailListItem *) inboxView->firstChild();
344 while (item != NULL) { 344 while (item != NULL) {
345 mailPtr = item->getMail(); 345 mailPtr = item->getMail();
346 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) { 346 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
347 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 347 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
348 } 348 }
349 item = (EmailListItem *) item->nextSibling(); 349 item = (EmailListItem *) item->nextSibling();
350 }*/ 350 }*/
351 351
352 emailHandler->getMailHeaders(); 352 emailHandler->getMailHeaders();
353 353
354} 354}
355 355
356void EmailClient::getAllNewMail() 356void EmailClient::getAllNewMail()
357{ 357{
358 allAccounts = TRUE; 358 allAccounts = TRUE;
359 currentAccount = accountList.first(); 359 currentAccount = accountList.first();
360 getNewMail(); 360 getNewMail();
361} 361}
362 362
363void EmailClient::mailArrived(const Email &mail, bool fromDisk) 363void EmailClient::mailArrived(const Email &mail, bool fromDisk)
364{ 364{
365 Enclosure *ePtr; 365 Enclosure *ePtr;
366 Email newMail; 366 Email newMail;
367 int thisMailId; 367 int thisMailId;
368 emailHandler->parse(mail.rawMail, lineShift, &newMail); 368 emailHandler->parse(mail.rawMail, lineShift, &newMail);
369 mailconf->setGroup(newMail.id); 369 mailconf->setGroup(newMail.id);
370 370
371 if (fromDisk) 371 if (fromDisk)
372 { 372 {
373 373
374 newMail.downloaded = mailconf->readBoolEntry("downloaded"); 374 newMail.downloaded = mailconf->readBoolEntry("downloaded");
375 newMail.size = mailconf->readNumEntry("size"); 375 newMail.size = mailconf->readNumEntry("size");
376 newMail.serverId = mailconf->readNumEntry("serverid"); 376 newMail.serverId = mailconf->readNumEntry("serverid");
377 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid"); 377 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
378 } 378 }
379 else 379 else
380 { //mail arrived from server 380 { //mail arrived from server
381 381
382 newMail.serverId = mail.serverId; 382 newMail.serverId = mail.serverId;
383 newMail.size = mail.size; 383 newMail.size = mail.size;
384 newMail.downloaded = mail.downloaded; 384 newMail.downloaded = mail.downloaded;
385 385
386 newMail.fromAccountId = emailHandler->getAccount()->id; 386 newMail.fromAccountId = emailHandler->getAccount()->id;
387 mailconf->writeEntry("fromaccountid", newMail.fromAccountId); 387 mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
388 } 388 }
389 389
390 //add if read or not 390 //add if read or not
391 newMail.read = mailconf->readBoolEntry("mailread"); 391 newMail.read = mailconf->readBoolEntry("mailread");
392 392
393 //check if new mail 393 //check if new mail
394 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) { 394 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) {
395 thisMailId = mailIdCount; 395 thisMailId = mailIdCount;
396 mailIdCount++; 396 mailIdCount++;
397 397
398 //set server count, so that if the user aborts, the new 398 //set server count, so that if the user aborts, the new
399 //header is not reloaded 399 //header is not reloaded
400 if ((currentAccount)&&(currentAccount->synchronize)) 400 if ((currentAccount)&&(currentAccount->synchronize))
401 currentAccount->lastServerMailCount++; 401 currentAccount->lastServerMailCount++;
402 402
403 mailconf->writeEntry("internalmailid", thisMailId); 403 mailconf->writeEntry("internalmailid", thisMailId);
404 mailconf->writeEntry("downloaded", newMail.downloaded); 404 mailconf->writeEntry("downloaded", newMail.downloaded);
405 mailconf->writeEntry("size", (int) newMail.size); 405 mailconf->writeEntry("size", (int) newMail.size);
406 mailconf->writeEntry("serverid", newMail.serverId); 406 mailconf->writeEntry("serverid", newMail.serverId);
407 407
408 //addressList->addContact(newMail.fromMail, newMail.from); 408 //addressList->addContact(newMail.fromMail, newMail.from);
409 } 409 }
410 410
411 mailconf->writeEntry("downloaded", newMail.downloaded); 411 mailconf->writeEntry("downloaded", newMail.downloaded);
412 412
413 QString stringMailId; 413 QString stringMailId;
414 stringMailId.setNum(thisMailId); 414 stringMailId.setNum(thisMailId);
415 //see if any attatchments needs to be stored 415 //see if any attatchments needs to be stored
416 416
417 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { 417 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
418 QString stringId; 418 QString stringId;
419 stringId.setNum(ePtr->id); 419 stringId.setNum(ePtr->id);
420 420
421 int id = mailconf->readNumEntry("enclosureid_" + stringId); 421 int id = mailconf->readNumEntry("enclosureid_" + stringId);
422 if (id != ePtr->id) { //new entry 422 if (id != ePtr->id) { //new entry
423 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id); 423 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id);
424 mailconf->writeEntry("name_" + stringId, ePtr->originalName); 424 mailconf->writeEntry("name_" + stringId, ePtr->originalName);
425 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType); 425 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType);
426 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute); 426 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute);
427 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 427 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
428 mailconf->writeEntry("installed_" + stringId, FALSE); 428 mailconf->writeEntry("installed_" + stringId, FALSE);
429 429
430 ePtr->name = stringMailId + "_" + stringId; 430 ePtr->name = stringMailId + "_" + stringId;
431 ePtr->path = getPath(TRUE); 431 ePtr->path = getPath(TRUE);
432 if (emailHandler->getEnclosure(ePtr)) { //file saved 432 if (emailHandler->getEnclosure(ePtr)) { //file saved
433 ePtr->saved = TRUE; 433 ePtr->saved = TRUE;
434 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 434 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
435 mailconf->writeEntry("filename_" + stringId, ePtr->name); 435 mailconf->writeEntry("filename_" + stringId, ePtr->name);
436 mailconf->writeEntry("path_" + stringId, ePtr->path); 436 mailconf->writeEntry("path_" + stringId, ePtr->path);
437 } else { 437 } else {
438 ePtr->saved = FALSE; 438 ePtr->saved = FALSE;
439 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 439 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
440 } 440 }
441 } else { 441 } else {
442 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId); 442 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId);
443 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId); 443 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId);
444 if (ePtr->saved) { 444 if (ePtr->saved) {
445 ePtr->name = mailconf->readEntry("filename_" + stringId); 445 ePtr->name = mailconf->readEntry("filename_" + stringId);
446 ePtr->path = mailconf->readEntry("path_" + stringId); 446 ePtr->path = mailconf->readEntry("path_" + stringId);
447 } 447 }
448 } 448 }
449 } 449 }
450 450
451 bool found=false; 451 bool found=false;
452 452
453 if (!fromDisk) 453 if (!fromDisk)
454 { 454 {
455 455
456 Email *mailPtr; 456 Email *mailPtr;
457 item = (EmailListItem *) inboxView->firstChild(); 457 item = (EmailListItem *) inboxView->firstChild();
458 while ((item != NULL)&&(!found)) 458 while ((item != NULL)&&(!found))
459 { 459 {
460 mailPtr = item->getMail(); 460 mailPtr = item->getMail();
461 if (mailPtr->id == newMail.id) { 461 if (mailPtr->id == newMail.id) {
462 item->setMail(newMail); 462 item->setMail(newMail);
463 emit mailUpdated(item->getMail()); 463 emit mailUpdated(item->getMail());
464 found = true; 464 found = true;
465 } 465 }
466 item = (EmailListItem *) item->nextSibling(); 466 item = (EmailListItem *) item->nextSibling();
467 } 467 }
468 } 468 }
469 if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE); 469 if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
470 470
471 if (item->getMail()->files.count()>0)
472 {
473 item->setPixmap(0, Resource::loadPixmap("mailit/attach"));
474 }
471 /*if (!newMail.downloaded) 475 /*if (!newMail.downloaded)
472 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/ 476 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
473 477
474 mailboxView->setCurrentTab(0); 478 mailboxView->setCurrentTab(0);
475 479
476} 480}
477 481
478void EmailClient::allMailArrived(int count) 482void EmailClient::allMailArrived(int count)
479{ 483{
480 // not previewing means all mailtransfer has been done 484 // not previewing means all mailtransfer has been done
481 /*if (!previewingMail) {*/ 485 /*if (!previewingMail) {*/
482 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { 486 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
483 emit newCaption("Mailit - " + currentAccount->accountName); 487 emit newCaption("Mailit - " + currentAccount->accountName);
484 getNewMail(); 488 getNewMail();
485 return; 489 return;
486 } else { 490 } else {
487 allAccounts = FALSE; 491 allAccounts = FALSE;
488 receiving = FALSE; 492 receiving = FALSE;
489 getMailButton->setEnabled(TRUE); 493 getMailButton->setEnabled(TRUE);
490 cancelButton->setEnabled(FALSE); 494 cancelButton->setEnabled(FALSE);
491 selectAccountMenu->setEnabled(TRUE); 495 selectAccountMenu->setEnabled(TRUE);
492 status1Label->setText("Idle"); 496 status1Label->setText("Idle");
493 497
494 progressBar->reset(); 498 progressBar->reset();
495 return; 499 return;
496 } 500 }
497 //} 501 //}
498 502
499 // all headers downloaded from server, start downloading remaining mails 503 // all headers downloaded from server, start downloading remaining mails
500 previewingMail = FALSE; 504 previewingMail = FALSE;
501 status1Label->setText(currentAccount->accountName); 505 status1Label->setText(currentAccount->accountName);
502 progressBar->reset(); 506 progressBar->reset();
503 507
504 508
505 mailboxView->setCurrentTab(0); 509 mailboxView->setCurrentTab(0);
506} 510}
507 511
508 512
509void EmailClient::moveMailFront(Email *mailPtr) 513void EmailClient::moveMailFront(Email *mailPtr)
510{ 514{
511 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) { 515 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
512 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size); 516 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
513 } 517 }
514} 518}
515 519
516void EmailClient::smtpError(int code) 520void EmailClient::smtpError(int code)
517{ 521{
518 QString temp; 522 QString temp;
519 523
520 if (code == ErrUnknownResponse) 524 if (code == ErrUnknownResponse)
521 temp = "Unknown response from server"; 525 temp = "Unknown response from server";
522 526
523 if (code == QSocket::ErrHostNotFound) 527 if (code == QSocket::ErrHostNotFound)
524 temp = "host not found"; 528 temp = "host not found";
525 if (code == QSocket::ErrConnectionRefused) 529 if (code == QSocket::ErrConnectionRefused)
526 temp = "connection refused"; 530 temp = "connection refused";
527 if (code == QSocket::ErrSocketRead) 531 if (code == QSocket::ErrSocketRead)
528 temp = "socket packet error"; 532 temp = "socket packet error";
529 533
530 if (code != ErrCancel) { 534 if (code != ErrCancel) {
531 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n"); 535 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n");
532 } else { 536 } else {
533 status2Label->setText("Aborted by user"); 537 status2Label->setText("Aborted by user");
534 } 538 }
535 539
536 sending = FALSE; 540 sending = FALSE;
537 sendMailButton->setEnabled(TRUE); 541 sendMailButton->setEnabled(TRUE);
538 cancelButton->setEnabled(FALSE); 542 cancelButton->setEnabled(FALSE);
539 quedMessages.clear(); 543 quedMessages.clear();
540} 544}
541 545
542void EmailClient::popError(int code) 546void EmailClient::popError(int code)
543{ 547{
544 QString temp; 548 QString temp;
545 549
546 if (code == ErrUnknownResponse) 550 if (code == ErrUnknownResponse)
547 temp = "Unknown response from server"; 551 temp = "Unknown response from server";
548 if (code == ErrLoginFailed) 552 if (code == ErrLoginFailed)
549 temp = "Login failed\nCheck user name and password"; 553 temp = "Login failed\nCheck user name and password";
550 554
551 if (code == QSocket::ErrHostNotFound) 555 if (code == QSocket::ErrHostNotFound)
552 temp = "host not found"; 556 temp = "host not found";
553 if (code == QSocket::ErrConnectionRefused) 557 if (code == QSocket::ErrConnectionRefused)
554 temp = "connection refused"; 558 temp = "connection refused";
555 if (code == QSocket::ErrSocketRead) 559 if (code == QSocket::ErrSocketRead)
556 temp = "socket packet error"; 560 temp = "socket packet error";
557 561
558 if (code != ErrCancel) { 562 if (code != ErrCancel) {
559 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n"); 563 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n");
560 } else { 564 } else {
561 status2Label->setText("Aborted by user"); 565 status2Label->setText("Aborted by user");
562 } 566 }
563 567
564 receiving = FALSE; 568 receiving = FALSE;
565 getMailButton->setEnabled(TRUE); 569 getMailButton->setEnabled(TRUE);
566 cancelButton->setEnabled(FALSE); 570 cancelButton->setEnabled(FALSE);
567 selectAccountMenu->setEnabled(TRUE); 571 selectAccountMenu->setEnabled(TRUE);
568} 572}
569 573
570void EmailClient::inboxItemSelected() 574void EmailClient::inboxItemSelected()
571{ 575{
572 //killTimer(timerID); 576 //killTimer(timerID);
573 577
574 item = (EmailListItem*) inboxView->selectedItem(); 578 item = (EmailListItem*) inboxView->selectedItem();
575 if (item != NULL) { 579 if (item != NULL) {
576 emit viewEmail(inboxView, item->getMail()); 580 emit viewEmail(inboxView, item->getMail());
577 } 581 }
578} 582}
579 583
580void EmailClient::outboxItemSelected() 584void EmailClient::outboxItemSelected()
581{ 585{
582 //killTimer(timerID); 586 //killTimer(timerID);
583 587
584 item = (EmailListItem*) outboxView->selectedItem(); 588 item = (EmailListItem*) outboxView->selectedItem();
585 if (item != NULL) { 589 if (item != NULL) {
586 emit viewEmail(outboxView, item->getMail()); 590 emit viewEmail(outboxView, item->getMail());
587 } 591 }
588 592
589} 593}
590 594
591void EmailClient::readMail() 595void EmailClient::readMail()
592{ 596{
593 Email mail; 597 Email mail;
594 int start, stop; 598 int start, stop;
595 QString s, del; 599 QString s, del;
596 600
597 QFile f(getPath(FALSE) + "inbox.txt"); 601 QFile f(getPath(FALSE) + "inbox.txt");
598 602
599 if ( f.open(IO_ReadOnly) ) { // file opened successfully 603 if ( f.open(IO_ReadOnly) ) { // file opened successfully
600 QTextStream t( &f ); // use a text stream 604 QTextStream t( &f ); // use a text stream
601 s = t.read(); 605 s = t.read();
602 f.close(); 606 f.close();
603 607
604 start = 0; 608 start = 0;
605 del = "\n.\n"; 609 del = "\n.\n";
606 while ((uint) start < s.length()) { 610 while ((uint) start < s.length()) {
607 stop = s.find(del, start); 611 stop = s.find(del, start);
608 if (stop == -1) 612 if (stop == -1)
609 stop = s.length() - del.length(); 613 stop = s.length() - del.length();
610 614
611 mail.rawMail = s.mid(start, stop + del.length() - start ); 615 mail.rawMail = s.mid(start, stop + del.length() - start );
612 start = stop + del.length(); 616 start = stop + del.length();
613 mailArrived(mail, TRUE); 617 mailArrived(mail, TRUE);
614 } 618 }
615 } 619 }
616 620
617 QFile fo(getPath(FALSE) + "outbox.txt"); 621 QFile fo(getPath(FALSE) + "outbox.txt");
618 if ( fo.open(IO_ReadOnly) ) { // file opened successfully 622 if ( fo.open(IO_ReadOnly) ) { // file opened successfully
619 QTextStream t( &fo ); // use a text stream 623 QTextStream t( &fo ); // use a text stream
620 s = t.read(); 624 s = t.read();
621 fo.close(); 625 fo.close();
622 626
623 start = 0; 627 start = 0;
624 del = "\n.\n"; 628 del = "\n.\n";
625 while ((uint) start < s.length()) { 629 while ((uint) start < s.length()) {
626 stop = s.find(del, start); 630 stop = s.find(del, start);
627 if (stop == -1) 631 if (stop == -1)
628 stop = s.length() - del.length(); 632 stop = s.length() - del.length();
629 633
630 mail.rawMail = s.mid(start, stop + del.length() - start ); 634 mail.rawMail = s.mid(start, stop + del.length() - start );
631 start = stop + del.length(); 635 start = stop + del.length();
632 emailHandler->parse(mail.rawMail, lineShift, &mail); 636 emailHandler->parse(mail.rawMail, lineShift, &mail);
633 mail.sent = false; 637 mail.sent = false;
634 mail.received = false; 638 mail.received = false;
635 enqueMail(mail); 639 enqueMail(mail);
636 640
637 } 641 }
638 } 642 }
639} 643}
640 644
641void EmailClient::saveMail(QString fileName, QListView *view) 645void EmailClient::saveMail(QString fileName, QListView *view)
642{ 646{
643 QFile f(fileName); 647 QFile f(fileName);
644 Email *mail; 648 Email *mail;
645 649
646 if (! f.open(IO_WriteOnly) ) { 650 if (! f.open(IO_WriteOnly) ) {
647 qWarning("could not open file"); 651 qWarning("could not open file");
648 return; 652 return;
649 } 653 }
650 item = (EmailListItem *) view->firstChild(); 654 item = (EmailListItem *) view->firstChild();
651 QTextStream t(&f); 655 QTextStream t(&f);
652 while (item != NULL) { 656 while (item != NULL) {
653 mail = item->getMail(); 657 mail = item->getMail();
654 t << mail->rawMail; 658 t << mail->rawMail;
655 659
656 mailconf->setGroup(mail->id); 660 mailconf->setGroup(mail->id);
657 mailconf->writeEntry("mailread", mail->read); 661 mailconf->writeEntry("mailread", mail->read);
658 662
659 item = (EmailListItem *) item->nextSibling(); 663 item = (EmailListItem *) item->nextSibling();
660 } 664 }
661 f.close(); 665 f.close();
662} 666}
663 667
664//paths for mailit, is settings, inbox, enclosures 668//paths for mailit, is settings, inbox, enclosures
665QString EmailClient::getPath(bool enclosurePath) 669QString EmailClient::getPath(bool enclosurePath)
666{ 670{
667 QString basePath = "qtmail"; 671 QString basePath = "qtmail";
668 QString enclosures = "enclosures"; 672 QString enclosures = "enclosures";
669 673
670 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); 674 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
671 if ( !dir.exists() ) 675 if ( !dir.exists() )
672 dir.mkdir( dir.path() ); 676 dir.mkdir( dir.path() );
673 677
674 if (enclosurePath) { 678 if (enclosurePath) {
675 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); 679 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
676 680
677 if ( !dir.exists() ) 681 if ( !dir.exists() )
678 dir.mkdir( dir.path() ); 682 dir.mkdir( dir.path() );
679 683
680 return (dir.path() + "/"); 684 return (dir.path() + "/");
681 685
682 } 686 }
683 return (dir.path() + "/"); 687 return (dir.path() + "/");
684} 688}
685 689
686void EmailClient::readSettings() 690void EmailClient::readSettings()
687{ 691{
688 int y,acc_count; 692 int y,acc_count;
689 693
690 mailconf->setGroup("mailitglobal"); 694 mailconf->setGroup("mailitglobal");
691 acc_count=mailconf->readNumEntry("Accounts",0); 695 acc_count=mailconf->readNumEntry("Accounts",0);
692 696
693 for (int accountPos = 0;accountPos<acc_count ; accountPos++) 697 for (int accountPos = 0;accountPos<acc_count ; accountPos++)
694 { 698 {
695 mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ... 699 mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ...
696 account.accountName = mailconf->readEntry("AccName",""); 700 account.accountName = mailconf->readEntry("AccName","");
697 account.name = mailconf->readEntry("UserName",""); 701 account.name = mailconf->readEntry("UserName","");
698 account.emailAddress = mailconf->readEntry("Email",""); 702 account.emailAddress = mailconf->readEntry("Email","");
699 account.popUserName = mailconf->readEntry("POPUser",""); 703 account.popUserName = mailconf->readEntry("POPUser","");
700 account.popPasswd = mailconf->readEntryCrypt("POPPassword",""); 704 account.popPasswd = mailconf->readEntryCrypt("POPPassword","");
701 account.popServer = mailconf->readEntry("POPServer",""); 705 account.popServer = mailconf->readEntry("POPServer","");
702 account.smtpServer = mailconf->readEntry("SMTPServer",""); 706 account.smtpServer = mailconf->readEntry("SMTPServer","");
703 account.id = mailconf->readNumEntry("AccountId",0); 707 account.id = mailconf->readNumEntry("AccountId",0);
704 account.syncLimit = mailconf->readNumEntry("HeaderLimit",0); 708 account.syncLimit = mailconf->readNumEntry("HeaderLimit",0);
705 account.lastServerMailCount = 0; 709 account.lastServerMailCount = 0;
706 account.synchronize = FALSE; 710 account.synchronize = FALSE;
707 711
708 account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes"); 712 account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
709 if (account.synchronize) 713 if (account.synchronize)
710 { 714 {
711 mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); 715 mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
712 } 716 }
713 717
714 accountList.append(&account); 718 accountList.append(&account);
715 } 719 }
716 720
717 mailconf->setGroup("mailitglobal"); 721 mailconf->setGroup("mailitglobal");
718 722
719 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) 723 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1)
720 { 724 {
721 mailIdCount = y; 725 mailIdCount = y;
722 } 726 }
723 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) 727 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1)
724 { 728 {
725 accountIdCount = y; 729 accountIdCount = y;
726 } 730 }
diff --git a/noncore/unsupported/mailit/emailclient.cpp b/noncore/unsupported/mailit/emailclient.cpp
index 2cedc51..b039cc4 100644
--- a/noncore/unsupported/mailit/emailclient.cpp
+++ b/noncore/unsupported/mailit/emailclient.cpp
@@ -214,513 +214,517 @@ void EmailClient::initStatusBar(QWidget* parent)
214{ 214{
215 statusBar = new QStatusBar(parent); 215 statusBar = new QStatusBar(parent);
216 statusBar->setSizeGripEnabled(FALSE); 216 statusBar->setSizeGripEnabled(FALSE);
217 217
218 status1Label = new QLabel( tr("Idle"), statusBar); 218 status1Label = new QLabel( tr("Idle"), statusBar);
219 status2Label = new QLabel("", statusBar); 219 status2Label = new QLabel("", statusBar);
220 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)), 220 connect(emailHandler, SIGNAL(updatePopStatus(const QString &)),
221 status2Label, SLOT(setText(const QString &)) ); 221 status2Label, SLOT(setText(const QString &)) );
222 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)), 222 connect(emailHandler, SIGNAL(updateSmtpStatus(const QString &)),
223 status2Label, SLOT(setText(const QString &)) ); 223 status2Label, SLOT(setText(const QString &)) );
224 224
225 progressBar = new QProgressBar(statusBar); 225 progressBar = new QProgressBar(statusBar);
226 226
227 connect(emailHandler, SIGNAL(mailboxSize(int)), 227 connect(emailHandler, SIGNAL(mailboxSize(int)),
228 this, SLOT(setTotalSize(int)) ); 228 this, SLOT(setTotalSize(int)) );
229 connect(emailHandler, SIGNAL(currentMailSize(int)), 229 connect(emailHandler, SIGNAL(currentMailSize(int)),
230 this, SLOT(setMailSize(int)) ); 230 this, SLOT(setMailSize(int)) );
231 connect(emailHandler, SIGNAL(downloadedSize(int)), 231 connect(emailHandler, SIGNAL(downloadedSize(int)),
232 this, SLOT(setDownloadedSize(int)) ); 232 this, SLOT(setDownloadedSize(int)) );
233 233
234 statusBar->addWidget(status1Label); 234 statusBar->addWidget(status1Label);
235 statusBar->addWidget(progressBar); 235 statusBar->addWidget(progressBar);
236 statusBar->addWidget(status2Label); 236 statusBar->addWidget(status2Label);
237 237
238} 238}
239 239
240void EmailClient::compose() 240void EmailClient::compose()
241{ 241{
242 emit composeRequested(); 242 emit composeRequested();
243} 243}
244 244
245void EmailClient::cancel() 245void EmailClient::cancel()
246{ 246{
247 emailHandler->cancel(); 247 emailHandler->cancel();
248} 248}
249 249
250AddressList* EmailClient::getAdrListRef() 250AddressList* EmailClient::getAdrListRef()
251{ 251{
252 return addressList; 252 return addressList;
253} 253}
254 254
255//this needs to be rewritten to syncronize with outboxView 255//this needs to be rewritten to syncronize with outboxView
256void EmailClient::enqueMail(const Email &mail) 256void EmailClient::enqueMail(const Email &mail)
257{ 257{
258 if (accountList.count() == 0) { 258 if (accountList.count() == 0) {
259 QMessageBox::warning(qApp->activeWindow(), 259 QMessageBox::warning(qApp->activeWindow(),
260 tr("No account selected"), tr("You must create an account"), "OK\n"); 260 tr("No account selected"), tr("You must create an account"), "OK\n");
261 return; 261 return;
262 } 262 }
263 263
264 if (accountList.count() > 0) { 264 if (accountList.count() > 0) {
265 currentAccount = accountList.first(); 265 currentAccount = accountList.first();
266 qWarning("using account " + currentAccount->name); 266 qWarning("using account " + currentAccount->name);
267 } 267 }
268 268
269 Email addMail = mail; 269 Email addMail = mail;
270 addMail.from = currentAccount->name; 270 addMail.from = currentAccount->name;
271 addMail.fromMail = currentAccount->emailAddress; 271 addMail.fromMail = currentAccount->emailAddress;
272 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n"); 272 addMail.rawMail.prepend("From: " + addMail.from + "<" + addMail.fromMail + ">\n");
273 item = new EmailListItem(outboxView, addMail, false); 273 item = new EmailListItem(outboxView, addMail, false);
274 274
275 mailboxView->setCurrentTab(1); 275 mailboxView->setCurrentTab(1);
276 276
277} 277}
278 278
279void EmailClient::sendQuedMail() 279void EmailClient::sendQuedMail()
280{ 280{
281 int count = 0; 281 int count = 0;
282 282
283 if (accountList.count() == 0) { 283 if (accountList.count() == 0) {
284 QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n"); 284 QMessageBox::warning(qApp->activeWindow(), "No account selected", "You must create an account", "OK\n");
285 return; 285 return;
286 } 286 }
287 //traverse listview, find messages to send 287 //traverse listview, find messages to send
288 if (! sending) { 288 if (! sending) {
289 item = (EmailListItem *) outboxView->firstChild(); 289 item = (EmailListItem *) outboxView->firstChild();
290 if (item != NULL) { 290 if (item != NULL) {
291 while (item != NULL) { 291 while (item != NULL) {
292 quedMessages.append(item->getMail()); 292 quedMessages.append(item->getMail());
293 item = (EmailListItem *) item->nextSibling(); 293 item = (EmailListItem *) item->nextSibling();
294 count++; 294 count++;
295 } 295 }
296 setMailAccount(); 296 setMailAccount();
297 emailHandler->sendMail(&quedMessages); 297 emailHandler->sendMail(&quedMessages);
298 sending = TRUE; 298 sending = TRUE;
299 sendMailButton->setEnabled(FALSE); 299 sendMailButton->setEnabled(FALSE);
300 cancelButton->setEnabled(TRUE); 300 cancelButton->setEnabled(TRUE);
301 } else { 301 } else {
302 qWarning("sendQuedMail(): no messages to send"); 302 qWarning("sendQuedMail(): no messages to send");
303 } 303 }
304 } 304 }
305} 305}
306 306
307void EmailClient::setMailAccount() 307void EmailClient::setMailAccount()
308{ 308{
309 emailHandler->setAccount(*currentAccount); 309 emailHandler->setAccount(*currentAccount);
310} 310}
311 311
312void EmailClient::mailSent() 312void EmailClient::mailSent()
313{ 313{
314 sending = FALSE; 314 sending = FALSE;
315 sendMailButton->setEnabled(TRUE); 315 sendMailButton->setEnabled(TRUE);
316 316
317 quedMessages.clear(); 317 quedMessages.clear();
318 outboxView->clear(); //should be moved to an sentBox 318 outboxView->clear(); //should be moved to an sentBox
319} 319}
320 320
321void EmailClient::getNewMail() { 321void EmailClient::getNewMail() {
322 322
323 if (accountList.count() == 0) { 323 if (accountList.count() == 0) {
324 QMessageBox::warning(qApp->activeWindow(),"No account selected", 324 QMessageBox::warning(qApp->activeWindow(),"No account selected",
325 "You must create an account", "OK\n"); 325 "You must create an account", "OK\n");
326 return; 326 return;
327 } 327 }
328 328
329 setMailAccount(); 329 setMailAccount();
330 330
331 receiving = TRUE; 331 receiving = TRUE;
332 previewingMail = TRUE; 332 previewingMail = TRUE;
333 getMailButton->setEnabled(FALSE); 333 getMailButton->setEnabled(FALSE);
334 cancelButton->setEnabled(TRUE); 334 cancelButton->setEnabled(TRUE);
335 selectAccountMenu->setEnabled(FALSE); 335 selectAccountMenu->setEnabled(FALSE);
336 336
337 status1Label->setText(currentAccount->accountName + " headers"); 337 status1Label->setText(currentAccount->accountName + " headers");
338 progressBar->reset(); 338 progressBar->reset();
339 339
340 //get any previous mails not downloaded and add to queue 340 //get any previous mails not downloaded and add to queue
341 /*mailDownloadList.clear(); 341 /*mailDownloadList.clear();
342 Email *mailPtr; 342 Email *mailPtr;
343 item = (EmailListItem *) inboxView->firstChild(); 343 item = (EmailListItem *) inboxView->firstChild();
344 while (item != NULL) { 344 while (item != NULL) {
345 mailPtr = item->getMail(); 345 mailPtr = item->getMail();
346 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) { 346 if ( (!mailPtr->downloaded) && (mailPtr->fromAccountId == currentAccount->id) ) {
347 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size); 347 mailDownloadList.sizeInsert(mailPtr->serverId, mailPtr->size);
348 } 348 }
349 item = (EmailListItem *) item->nextSibling(); 349 item = (EmailListItem *) item->nextSibling();
350 }*/ 350 }*/
351 351
352 emailHandler->getMailHeaders(); 352 emailHandler->getMailHeaders();
353 353
354} 354}
355 355
356void EmailClient::getAllNewMail() 356void EmailClient::getAllNewMail()
357{ 357{
358 allAccounts = TRUE; 358 allAccounts = TRUE;
359 currentAccount = accountList.first(); 359 currentAccount = accountList.first();
360 getNewMail(); 360 getNewMail();
361} 361}
362 362
363void EmailClient::mailArrived(const Email &mail, bool fromDisk) 363void EmailClient::mailArrived(const Email &mail, bool fromDisk)
364{ 364{
365 Enclosure *ePtr; 365 Enclosure *ePtr;
366 Email newMail; 366 Email newMail;
367 int thisMailId; 367 int thisMailId;
368 emailHandler->parse(mail.rawMail, lineShift, &newMail); 368 emailHandler->parse(mail.rawMail, lineShift, &newMail);
369 mailconf->setGroup(newMail.id); 369 mailconf->setGroup(newMail.id);
370 370
371 if (fromDisk) 371 if (fromDisk)
372 { 372 {
373 373
374 newMail.downloaded = mailconf->readBoolEntry("downloaded"); 374 newMail.downloaded = mailconf->readBoolEntry("downloaded");
375 newMail.size = mailconf->readNumEntry("size"); 375 newMail.size = mailconf->readNumEntry("size");
376 newMail.serverId = mailconf->readNumEntry("serverid"); 376 newMail.serverId = mailconf->readNumEntry("serverid");
377 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid"); 377 newMail.fromAccountId = mailconf->readNumEntry("fromaccountid");
378 } 378 }
379 else 379 else
380 { //mail arrived from server 380 { //mail arrived from server
381 381
382 newMail.serverId = mail.serverId; 382 newMail.serverId = mail.serverId;
383 newMail.size = mail.size; 383 newMail.size = mail.size;
384 newMail.downloaded = mail.downloaded; 384 newMail.downloaded = mail.downloaded;
385 385
386 newMail.fromAccountId = emailHandler->getAccount()->id; 386 newMail.fromAccountId = emailHandler->getAccount()->id;
387 mailconf->writeEntry("fromaccountid", newMail.fromAccountId); 387 mailconf->writeEntry("fromaccountid", newMail.fromAccountId);
388 } 388 }
389 389
390 //add if read or not 390 //add if read or not
391 newMail.read = mailconf->readBoolEntry("mailread"); 391 newMail.read = mailconf->readBoolEntry("mailread");
392 392
393 //check if new mail 393 //check if new mail
394 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) { 394 if ( (thisMailId = mailconf->readNumEntry("internalmailid", -1)) == -1) {
395 thisMailId = mailIdCount; 395 thisMailId = mailIdCount;
396 mailIdCount++; 396 mailIdCount++;
397 397
398 //set server count, so that if the user aborts, the new 398 //set server count, so that if the user aborts, the new
399 //header is not reloaded 399 //header is not reloaded
400 if ((currentAccount)&&(currentAccount->synchronize)) 400 if ((currentAccount)&&(currentAccount->synchronize))
401 currentAccount->lastServerMailCount++; 401 currentAccount->lastServerMailCount++;
402 402
403 mailconf->writeEntry("internalmailid", thisMailId); 403 mailconf->writeEntry("internalmailid", thisMailId);
404 mailconf->writeEntry("downloaded", newMail.downloaded); 404 mailconf->writeEntry("downloaded", newMail.downloaded);
405 mailconf->writeEntry("size", (int) newMail.size); 405 mailconf->writeEntry("size", (int) newMail.size);
406 mailconf->writeEntry("serverid", newMail.serverId); 406 mailconf->writeEntry("serverid", newMail.serverId);
407 407
408 //addressList->addContact(newMail.fromMail, newMail.from); 408 //addressList->addContact(newMail.fromMail, newMail.from);
409 } 409 }
410 410
411 mailconf->writeEntry("downloaded", newMail.downloaded); 411 mailconf->writeEntry("downloaded", newMail.downloaded);
412 412
413 QString stringMailId; 413 QString stringMailId;
414 stringMailId.setNum(thisMailId); 414 stringMailId.setNum(thisMailId);
415 //see if any attatchments needs to be stored 415 //see if any attatchments needs to be stored
416 416
417 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) { 417 for ( ePtr=newMail.files.first(); ePtr != 0; ePtr=newMail.files.next() ) {
418 QString stringId; 418 QString stringId;
419 stringId.setNum(ePtr->id); 419 stringId.setNum(ePtr->id);
420 420
421 int id = mailconf->readNumEntry("enclosureid_" + stringId); 421 int id = mailconf->readNumEntry("enclosureid_" + stringId);
422 if (id != ePtr->id) { //new entry 422 if (id != ePtr->id) { //new entry
423 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id); 423 mailconf->writeEntry("enclosureid_" + stringId, ePtr->id);
424 mailconf->writeEntry("name_" + stringId, ePtr->originalName); 424 mailconf->writeEntry("name_" + stringId, ePtr->originalName);
425 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType); 425 mailconf->writeEntry("contenttype_" + stringId, ePtr->contentType);
426 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute); 426 mailconf->writeEntry("contentattribute_" + stringId, ePtr->contentAttribute);
427 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 427 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
428 mailconf->writeEntry("installed_" + stringId, FALSE); 428 mailconf->writeEntry("installed_" + stringId, FALSE);
429 429
430 ePtr->name = stringMailId + "_" + stringId; 430 ePtr->name = stringMailId + "_" + stringId;
431 ePtr->path = getPath(TRUE); 431 ePtr->path = getPath(TRUE);
432 if (emailHandler->getEnclosure(ePtr)) { //file saved 432 if (emailHandler->getEnclosure(ePtr)) { //file saved
433 ePtr->saved = TRUE; 433 ePtr->saved = TRUE;
434 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 434 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
435 mailconf->writeEntry("filename_" + stringId, ePtr->name); 435 mailconf->writeEntry("filename_" + stringId, ePtr->name);
436 mailconf->writeEntry("path_" + stringId, ePtr->path); 436 mailconf->writeEntry("path_" + stringId, ePtr->path);
437 } else { 437 } else {
438 ePtr->saved = FALSE; 438 ePtr->saved = FALSE;
439 mailconf->writeEntry("saved_" + stringId, ePtr->saved); 439 mailconf->writeEntry("saved_" + stringId, ePtr->saved);
440 } 440 }
441 } else { 441 } else {
442 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId); 442 ePtr->saved = mailconf->readBoolEntry("saved_" + stringId);
443 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId); 443 ePtr->installed = mailconf->readBoolEntry("installed_" + stringId);
444 if (ePtr->saved) { 444 if (ePtr->saved) {
445 ePtr->name = mailconf->readEntry("filename_" + stringId); 445 ePtr->name = mailconf->readEntry("filename_" + stringId);
446 ePtr->path = mailconf->readEntry("path_" + stringId); 446 ePtr->path = mailconf->readEntry("path_" + stringId);
447 } 447 }
448 } 448 }
449 } 449 }
450 450
451 bool found=false; 451 bool found=false;
452 452
453 if (!fromDisk) 453 if (!fromDisk)
454 { 454 {
455 455
456 Email *mailPtr; 456 Email *mailPtr;
457 item = (EmailListItem *) inboxView->firstChild(); 457 item = (EmailListItem *) inboxView->firstChild();
458 while ((item != NULL)&&(!found)) 458 while ((item != NULL)&&(!found))
459 { 459 {
460 mailPtr = item->getMail(); 460 mailPtr = item->getMail();
461 if (mailPtr->id == newMail.id) { 461 if (mailPtr->id == newMail.id) {
462 item->setMail(newMail); 462 item->setMail(newMail);
463 emit mailUpdated(item->getMail()); 463 emit mailUpdated(item->getMail());
464 found = true; 464 found = true;
465 } 465 }
466 item = (EmailListItem *) item->nextSibling(); 466 item = (EmailListItem *) item->nextSibling();
467 } 467 }
468 } 468 }
469 if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE); 469 if ((!found)||(fromDisk)) item = new EmailListItem(inboxView, newMail, TRUE);
470 470
471 if (item->getMail()->files.count()>0)
472 {
473 item->setPixmap(0, Resource::loadPixmap("mailit/attach"));
474 }
471 /*if (!newMail.downloaded) 475 /*if (!newMail.downloaded)
472 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/ 476 mailDownloadList.sizeInsert(newMail.serverId, newMail.size);*/
473 477
474 mailboxView->setCurrentTab(0); 478 mailboxView->setCurrentTab(0);
475 479
476} 480}
477 481
478void EmailClient::allMailArrived(int count) 482void EmailClient::allMailArrived(int count)
479{ 483{
480 // not previewing means all mailtransfer has been done 484 // not previewing means all mailtransfer has been done
481 /*if (!previewingMail) {*/ 485 /*if (!previewingMail) {*/
482 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) { 486 if ( (allAccounts) && ( (currentAccount = accountList.next()) !=0 ) ) {
483 emit newCaption("Mailit - " + currentAccount->accountName); 487 emit newCaption("Mailit - " + currentAccount->accountName);
484 getNewMail(); 488 getNewMail();
485 return; 489 return;
486 } else { 490 } else {
487 allAccounts = FALSE; 491 allAccounts = FALSE;
488 receiving = FALSE; 492 receiving = FALSE;
489 getMailButton->setEnabled(TRUE); 493 getMailButton->setEnabled(TRUE);
490 cancelButton->setEnabled(FALSE); 494 cancelButton->setEnabled(FALSE);
491 selectAccountMenu->setEnabled(TRUE); 495 selectAccountMenu->setEnabled(TRUE);
492 status1Label->setText("Idle"); 496 status1Label->setText("Idle");
493 497
494 progressBar->reset(); 498 progressBar->reset();
495 return; 499 return;
496 } 500 }
497 //} 501 //}
498 502
499 // all headers downloaded from server, start downloading remaining mails 503 // all headers downloaded from server, start downloading remaining mails
500 previewingMail = FALSE; 504 previewingMail = FALSE;
501 status1Label->setText(currentAccount->accountName); 505 status1Label->setText(currentAccount->accountName);
502 progressBar->reset(); 506 progressBar->reset();
503 507
504 508
505 mailboxView->setCurrentTab(0); 509 mailboxView->setCurrentTab(0);
506} 510}
507 511
508 512
509void EmailClient::moveMailFront(Email *mailPtr) 513void EmailClient::moveMailFront(Email *mailPtr)
510{ 514{
511 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) { 515 if ( (receiving) && (mailPtr->fromAccountId == currentAccount->id) ) {
512 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size); 516 mailDownloadList.moveFront(mailPtr->serverId, mailPtr->size);
513 } 517 }
514} 518}
515 519
516void EmailClient::smtpError(int code) 520void EmailClient::smtpError(int code)
517{ 521{
518 QString temp; 522 QString temp;
519 523
520 if (code == ErrUnknownResponse) 524 if (code == ErrUnknownResponse)
521 temp = "Unknown response from server"; 525 temp = "Unknown response from server";
522 526
523 if (code == QSocket::ErrHostNotFound) 527 if (code == QSocket::ErrHostNotFound)
524 temp = "host not found"; 528 temp = "host not found";
525 if (code == QSocket::ErrConnectionRefused) 529 if (code == QSocket::ErrConnectionRefused)
526 temp = "connection refused"; 530 temp = "connection refused";
527 if (code == QSocket::ErrSocketRead) 531 if (code == QSocket::ErrSocketRead)
528 temp = "socket packet error"; 532 temp = "socket packet error";
529 533
530 if (code != ErrCancel) { 534 if (code != ErrCancel) {
531 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n"); 535 QMessageBox::warning(qApp->activeWindow(), "Sending error", temp, "OK\n");
532 } else { 536 } else {
533 status2Label->setText("Aborted by user"); 537 status2Label->setText("Aborted by user");
534 } 538 }
535 539
536 sending = FALSE; 540 sending = FALSE;
537 sendMailButton->setEnabled(TRUE); 541 sendMailButton->setEnabled(TRUE);
538 cancelButton->setEnabled(FALSE); 542 cancelButton->setEnabled(FALSE);
539 quedMessages.clear(); 543 quedMessages.clear();
540} 544}
541 545
542void EmailClient::popError(int code) 546void EmailClient::popError(int code)
543{ 547{
544 QString temp; 548 QString temp;
545 549
546 if (code == ErrUnknownResponse) 550 if (code == ErrUnknownResponse)
547 temp = "Unknown response from server"; 551 temp = "Unknown response from server";
548 if (code == ErrLoginFailed) 552 if (code == ErrLoginFailed)
549 temp = "Login failed\nCheck user name and password"; 553 temp = "Login failed\nCheck user name and password";
550 554
551 if (code == QSocket::ErrHostNotFound) 555 if (code == QSocket::ErrHostNotFound)
552 temp = "host not found"; 556 temp = "host not found";
553 if (code == QSocket::ErrConnectionRefused) 557 if (code == QSocket::ErrConnectionRefused)
554 temp = "connection refused"; 558 temp = "connection refused";
555 if (code == QSocket::ErrSocketRead) 559 if (code == QSocket::ErrSocketRead)
556 temp = "socket packet error"; 560 temp = "socket packet error";
557 561
558 if (code != ErrCancel) { 562 if (code != ErrCancel) {
559 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n"); 563 QMessageBox::warning(qApp->activeWindow(), "Receiving error", temp, "OK\n");
560 } else { 564 } else {
561 status2Label->setText("Aborted by user"); 565 status2Label->setText("Aborted by user");
562 } 566 }
563 567
564 receiving = FALSE; 568 receiving = FALSE;
565 getMailButton->setEnabled(TRUE); 569 getMailButton->setEnabled(TRUE);
566 cancelButton->setEnabled(FALSE); 570 cancelButton->setEnabled(FALSE);
567 selectAccountMenu->setEnabled(TRUE); 571 selectAccountMenu->setEnabled(TRUE);
568} 572}
569 573
570void EmailClient::inboxItemSelected() 574void EmailClient::inboxItemSelected()
571{ 575{
572 //killTimer(timerID); 576 //killTimer(timerID);
573 577
574 item = (EmailListItem*) inboxView->selectedItem(); 578 item = (EmailListItem*) inboxView->selectedItem();
575 if (item != NULL) { 579 if (item != NULL) {
576 emit viewEmail(inboxView, item->getMail()); 580 emit viewEmail(inboxView, item->getMail());
577 } 581 }
578} 582}
579 583
580void EmailClient::outboxItemSelected() 584void EmailClient::outboxItemSelected()
581{ 585{
582 //killTimer(timerID); 586 //killTimer(timerID);
583 587
584 item = (EmailListItem*) outboxView->selectedItem(); 588 item = (EmailListItem*) outboxView->selectedItem();
585 if (item != NULL) { 589 if (item != NULL) {
586 emit viewEmail(outboxView, item->getMail()); 590 emit viewEmail(outboxView, item->getMail());
587 } 591 }
588 592
589} 593}
590 594
591void EmailClient::readMail() 595void EmailClient::readMail()
592{ 596{
593 Email mail; 597 Email mail;
594 int start, stop; 598 int start, stop;
595 QString s, del; 599 QString s, del;
596 600
597 QFile f(getPath(FALSE) + "inbox.txt"); 601 QFile f(getPath(FALSE) + "inbox.txt");
598 602
599 if ( f.open(IO_ReadOnly) ) { // file opened successfully 603 if ( f.open(IO_ReadOnly) ) { // file opened successfully
600 QTextStream t( &f ); // use a text stream 604 QTextStream t( &f ); // use a text stream
601 s = t.read(); 605 s = t.read();
602 f.close(); 606 f.close();
603 607
604 start = 0; 608 start = 0;
605 del = "\n.\n"; 609 del = "\n.\n";
606 while ((uint) start < s.length()) { 610 while ((uint) start < s.length()) {
607 stop = s.find(del, start); 611 stop = s.find(del, start);
608 if (stop == -1) 612 if (stop == -1)
609 stop = s.length() - del.length(); 613 stop = s.length() - del.length();
610 614
611 mail.rawMail = s.mid(start, stop + del.length() - start ); 615 mail.rawMail = s.mid(start, stop + del.length() - start );
612 start = stop + del.length(); 616 start = stop + del.length();
613 mailArrived(mail, TRUE); 617 mailArrived(mail, TRUE);
614 } 618 }
615 } 619 }
616 620
617 QFile fo(getPath(FALSE) + "outbox.txt"); 621 QFile fo(getPath(FALSE) + "outbox.txt");
618 if ( fo.open(IO_ReadOnly) ) { // file opened successfully 622 if ( fo.open(IO_ReadOnly) ) { // file opened successfully
619 QTextStream t( &fo ); // use a text stream 623 QTextStream t( &fo ); // use a text stream
620 s = t.read(); 624 s = t.read();
621 fo.close(); 625 fo.close();
622 626
623 start = 0; 627 start = 0;
624 del = "\n.\n"; 628 del = "\n.\n";
625 while ((uint) start < s.length()) { 629 while ((uint) start < s.length()) {
626 stop = s.find(del, start); 630 stop = s.find(del, start);
627 if (stop == -1) 631 if (stop == -1)
628 stop = s.length() - del.length(); 632 stop = s.length() - del.length();
629 633
630 mail.rawMail = s.mid(start, stop + del.length() - start ); 634 mail.rawMail = s.mid(start, stop + del.length() - start );
631 start = stop + del.length(); 635 start = stop + del.length();
632 emailHandler->parse(mail.rawMail, lineShift, &mail); 636 emailHandler->parse(mail.rawMail, lineShift, &mail);
633 mail.sent = false; 637 mail.sent = false;
634 mail.received = false; 638 mail.received = false;
635 enqueMail(mail); 639 enqueMail(mail);
636 640
637 } 641 }
638 } 642 }
639} 643}
640 644
641void EmailClient::saveMail(QString fileName, QListView *view) 645void EmailClient::saveMail(QString fileName, QListView *view)
642{ 646{
643 QFile f(fileName); 647 QFile f(fileName);
644 Email *mail; 648 Email *mail;
645 649
646 if (! f.open(IO_WriteOnly) ) { 650 if (! f.open(IO_WriteOnly) ) {
647 qWarning("could not open file"); 651 qWarning("could not open file");
648 return; 652 return;
649 } 653 }
650 item = (EmailListItem *) view->firstChild(); 654 item = (EmailListItem *) view->firstChild();
651 QTextStream t(&f); 655 QTextStream t(&f);
652 while (item != NULL) { 656 while (item != NULL) {
653 mail = item->getMail(); 657 mail = item->getMail();
654 t << mail->rawMail; 658 t << mail->rawMail;
655 659
656 mailconf->setGroup(mail->id); 660 mailconf->setGroup(mail->id);
657 mailconf->writeEntry("mailread", mail->read); 661 mailconf->writeEntry("mailread", mail->read);
658 662
659 item = (EmailListItem *) item->nextSibling(); 663 item = (EmailListItem *) item->nextSibling();
660 } 664 }
661 f.close(); 665 f.close();
662} 666}
663 667
664//paths for mailit, is settings, inbox, enclosures 668//paths for mailit, is settings, inbox, enclosures
665QString EmailClient::getPath(bool enclosurePath) 669QString EmailClient::getPath(bool enclosurePath)
666{ 670{
667 QString basePath = "qtmail"; 671 QString basePath = "qtmail";
668 QString enclosures = "enclosures"; 672 QString enclosures = "enclosures";
669 673
670 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath); 674 QDir dir = (QString(getenv("HOME")) + "/Applications/" + basePath);
671 if ( !dir.exists() ) 675 if ( !dir.exists() )
672 dir.mkdir( dir.path() ); 676 dir.mkdir( dir.path() );
673 677
674 if (enclosurePath) { 678 if (enclosurePath) {
675 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures); 679 dir = (QString(getenv("HOME")) + "/Applications/" + basePath + "/" + enclosures);
676 680
677 if ( !dir.exists() ) 681 if ( !dir.exists() )
678 dir.mkdir( dir.path() ); 682 dir.mkdir( dir.path() );
679 683
680 return (dir.path() + "/"); 684 return (dir.path() + "/");
681 685
682 } 686 }
683 return (dir.path() + "/"); 687 return (dir.path() + "/");
684} 688}
685 689
686void EmailClient::readSettings() 690void EmailClient::readSettings()
687{ 691{
688 int y,acc_count; 692 int y,acc_count;
689 693
690 mailconf->setGroup("mailitglobal"); 694 mailconf->setGroup("mailitglobal");
691 acc_count=mailconf->readNumEntry("Accounts",0); 695 acc_count=mailconf->readNumEntry("Accounts",0);
692 696
693 for (int accountPos = 0;accountPos<acc_count ; accountPos++) 697 for (int accountPos = 0;accountPos<acc_count ; accountPos++)
694 { 698 {
695 mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ... 699 mailconf->setGroup("Account_"+QString::number(accountPos+1)); //Account numbers start at 1 ...
696 account.accountName = mailconf->readEntry("AccName",""); 700 account.accountName = mailconf->readEntry("AccName","");
697 account.name = mailconf->readEntry("UserName",""); 701 account.name = mailconf->readEntry("UserName","");
698 account.emailAddress = mailconf->readEntry("Email",""); 702 account.emailAddress = mailconf->readEntry("Email","");
699 account.popUserName = mailconf->readEntry("POPUser",""); 703 account.popUserName = mailconf->readEntry("POPUser","");
700 account.popPasswd = mailconf->readEntryCrypt("POPPassword",""); 704 account.popPasswd = mailconf->readEntryCrypt("POPPassword","");
701 account.popServer = mailconf->readEntry("POPServer",""); 705 account.popServer = mailconf->readEntry("POPServer","");
702 account.smtpServer = mailconf->readEntry("SMTPServer",""); 706 account.smtpServer = mailconf->readEntry("SMTPServer","");
703 account.id = mailconf->readNumEntry("AccountId",0); 707 account.id = mailconf->readNumEntry("AccountId",0);
704 account.syncLimit = mailconf->readNumEntry("HeaderLimit",0); 708 account.syncLimit = mailconf->readNumEntry("HeaderLimit",0);
705 account.lastServerMailCount = 0; 709 account.lastServerMailCount = 0;
706 account.synchronize = FALSE; 710 account.synchronize = FALSE;
707 711
708 account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes"); 712 account.synchronize = (mailconf->readEntry("Synchronize","No")=="Yes");
709 if (account.synchronize) 713 if (account.synchronize)
710 { 714 {
711 mailconf->readNumEntry("LASTSERVERMAILCOUNT",0); 715 mailconf->readNumEntry("LASTSERVERMAILCOUNT",0);
712 } 716 }
713 717
714 accountList.append(&account); 718 accountList.append(&account);
715 } 719 }
716 720
717 mailconf->setGroup("mailitglobal"); 721 mailconf->setGroup("mailitglobal");
718 722
719 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1) 723 if ( (y = mailconf->readNumEntry("mailidcount", -1)) != -1)
720 { 724 {
721 mailIdCount = y; 725 mailIdCount = y;
722 } 726 }
723 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1) 727 if ( (y = mailconf->readNumEntry("accountidcount", -1)) != -1)
724 { 728 {
725 accountIdCount = y; 729 accountIdCount = y;
726 } 730 }