-rw-r--r-- | kmicromail/libmailwrapper/abstractmail.cpp | 1 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/genericwrapper.cpp | 35 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/genericwrapper.h | 2 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/imapwrapper.cpp | 17 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/mailtypes.cpp | 20 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/mailtypes.h | 4 |
6 files changed, 56 insertions, 23 deletions
diff --git a/kmicromail/libmailwrapper/abstractmail.cpp b/kmicromail/libmailwrapper/abstractmail.cpp index 8f67566..88545f8 100644 --- a/kmicromail/libmailwrapper/abstractmail.cpp +++ b/kmicromail/libmailwrapper/abstractmail.cpp | |||
@@ -199,16 +199,17 @@ void AbstractMail::downloadNewMails(const FolderP&fromFolder, AbstractMail*targe | |||
199 | RecMailP re = (*e.at( jjj )); | 199 | RecMailP re = (*e.at( jjj )); |
200 | if ( re->isEqual(r) ) { | 200 | if ( re->isEqual(r) ) { |
201 | found = true; | 201 | found = true; |
202 | break; | 202 | break; |
203 | } | 203 | } |
204 | ++jjj; | 204 | ++jjj; |
205 | } | 205 | } |
206 | if ( !found ) { | 206 | if ( !found ) { |
207 | //qDebug("AAAdate *%s* ", r->isodate.latin1() ); | ||
207 | n.append( r ); | 208 | n.append( r ); |
208 | } | 209 | } |
209 | ++iii; | 210 | ++iii; |
210 | } | 211 | } |
211 | if ( n.count() == 0 ) { | 212 | if ( n.count() == 0 ) { |
212 | Global::statusMessage(tr("There are no new messages")); | 213 | Global::statusMessage(tr("There are no new messages")); |
213 | return; | 214 | return; |
214 | } | 215 | } |
diff --git a/kmicromail/libmailwrapper/genericwrapper.cpp b/kmicromail/libmailwrapper/genericwrapper.cpp index c3a1627..d99c6a3 100644 --- a/kmicromail/libmailwrapper/genericwrapper.cpp +++ b/kmicromail/libmailwrapper/genericwrapper.cpp | |||
@@ -22,17 +22,17 @@ Genericwrapper::~Genericwrapper() | |||
22 | if (m_folder) { | 22 | if (m_folder) { |
23 | mailfolder_free(m_folder); | 23 | mailfolder_free(m_folder); |
24 | } | 24 | } |
25 | if (m_storage) { | 25 | if (m_storage) { |
26 | mailstorage_free(m_storage); | 26 | mailstorage_free(m_storage); |
27 | } | 27 | } |
28 | cleanMimeCache(); | 28 | cleanMimeCache(); |
29 | } | 29 | } |
30 | QString Genericwrapper::parseDateTime( mailimf_date_time *date ) | 30 | const QDateTime Genericwrapper::parseDateTime( mailimf_date_time *date ) |
31 | { | 31 | { |
32 | static bool init = false ; | 32 | static bool init = false ; |
33 | if ( ! init ) { | 33 | if ( ! init ) { |
34 | KConfig kon ( locateLocal( "config", "korganizerrc" ) ); | 34 | KConfig kon ( locateLocal( "config", "korganizerrc" ) ); |
35 | kon.setGroup("Locale"); | 35 | kon.setGroup("Locale"); |
36 | KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)kon.readNumEntry( "PreferredDate",0) ); | 36 | KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)kon.readNumEntry( "PreferredDate",0) ); |
37 | QString dummy = kon.readEntry( "UserDateFormatShort","%aK %d.%m.%y" );// kon.readEntry( ""); | 37 | QString dummy = kon.readEntry( "UserDateFormatShort","%aK %d.%m.%y" );// kon.readEntry( ""); |
38 | KGlobal::locale()->setHore24Format( !kon.readBoolEntry( "PreferredTime",0 ) ); | 38 | KGlobal::locale()->setHore24Format( !kon.readBoolEntry( "PreferredTime",0 ) ); |
@@ -46,25 +46,33 @@ QString Genericwrapper::parseDateTime( mailimf_date_time *date ) | |||
46 | KGlobal::locale()->setTimezone( kon.readEntry( "TimeZoneName" ," 00:00 Europe/London(UTC)") ); | 46 | KGlobal::locale()->setTimezone( kon.readEntry( "TimeZoneName" ," 00:00 Europe/London(UTC)") ); |
47 | 47 | ||
48 | init = true; | 48 | init = true; |
49 | 49 | ||
50 | } | 50 | } |
51 | QDate da (date->dt_year,date->dt_month, date->dt_day ); | 51 | QDate da (date->dt_year,date->dt_month, date->dt_day ); |
52 | QTime ti ( date->dt_hour, date->dt_min, date->dt_sec ); | 52 | QTime ti ( date->dt_hour, date->dt_min, date->dt_sec ); |
53 | QDateTime dt ( da ,ti ); | 53 | QDateTime dt ( da ,ti ); |
54 | int addsec = -date->dt_zone*36; | ||
55 | //qDebug("adsec1 %d ",addsec ); | ||
56 | dt = dt.addSecs( addsec ); | ||
54 | int off = KGlobal::locale()->localTimeOffset( dt ); | 57 | int off = KGlobal::locale()->localTimeOffset( dt ); |
55 | //dt = dt.addSecs( off*60 ); | 58 | //qDebug("adsec2 %d ",off*60 ); |
59 | |||
60 | dt = dt.addSecs( off*60 ); | ||
61 | return dt; | ||
62 | #if 0 | ||
56 | QString ret; | 63 | QString ret; |
57 | if ( da == QDate::currentDate () ) | 64 | if ( dt.date() == QDate::currentDate () ) |
58 | ret = KGlobal::locale()->formatTime( ti,true); | 65 | ret = KGlobal::locale()->formatTime( dt.time(),true); |
59 | 66 | ||
60 | else { | 67 | else { |
61 | ret = KGlobal::locale()->formatDateTime( dt,true,true); | 68 | ret = KGlobal::locale()->formatDateTime( dt,true,true); |
62 | } | 69 | } |
70 | #endif | ||
63 | #if 0 | 71 | #if 0 |
64 | if ( off < 0 ) | 72 | if ( off < 0 ) |
65 | ret += " -"; | 73 | ret += " -"; |
66 | else | 74 | else |
67 | ret += " +"; | 75 | ret += " +"; |
68 | ret += QString::number( off / 60 ); | 76 | ret += QString::number( off / 60 ); |
69 | ret += "h"; | 77 | ret += "h"; |
70 | #endif | 78 | #endif |
@@ -74,17 +82,17 @@ QString Genericwrapper::parseDateTime( mailimf_date_time *date ) | |||
74 | // snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i", | 82 | // snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i", |
75 | // date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); | 83 | // date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); |
76 | snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %+05i", | 84 | snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %+05i", |
77 | date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); | 85 | date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); |
78 | 86 | ||
79 | 87 | ||
80 | return QString( tmp ); | 88 | return QString( tmp ); |
81 | #endif | 89 | #endif |
82 | return ret; | 90 | //return ret; |
83 | } | 91 | } |
84 | 92 | ||
85 | void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime) | 93 | void Genericwrapper::fillSingleBody(RecPartP&target,mailmessage*,mailmime*mime) |
86 | { | 94 | { |
87 | if (!mime) { | 95 | if (!mime) { |
88 | return; | 96 | return; |
89 | } | 97 | } |
90 | mailmime_field*field = 0; | 98 | mailmime_field*field = 0; |
@@ -490,21 +498,28 @@ void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > & | |||
490 | } else { | 498 | } else { |
491 | mail->setTo(mailbox); | 499 | mail->setTo(mailbox); |
492 | } | 500 | } |
493 | if (single_fields.fld_cc) | 501 | if (single_fields.fld_cc) |
494 | mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); | 502 | mail->setCC( parseAddressList( single_fields.fld_cc->cc_addr_list ) ); |
495 | if (single_fields.fld_bcc) | 503 | if (single_fields.fld_bcc) |
496 | mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); | 504 | mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); |
497 | if (single_fields.fld_orig_date) { | 505 | if (single_fields.fld_orig_date) { |
498 | mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); | 506 | QDateTime dt = Genericwrapper::parseDateTime( single_fields.fld_orig_date->dt_date_time ); |
499 | char tmp[23]; | 507 | QString ret; |
500 | struct mailimf_date_time* date = single_fields.fld_orig_date->dt_date_time; | 508 | if ( dt.date() == QDate::currentDate () ) |
501 | snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %05i", | 509 | ret = KGlobal::locale()->formatTime( dt.time(),true); |
502 | date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); | 510 | else { |
511 | ret = KGlobal::locale()->formatDateTime( dt,true,true); | ||
512 | } | ||
513 | mail->setDate( ret ); | ||
514 | char tmp[20]; | ||
515 | snprintf( tmp, 20, "%04i-%02i-%02i %02i:%02i:%02i", | ||
516 | dt.date().year(),dt.date().month(), dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second() ); | ||
517 | //qDebug(" iso %s ", tmp); | ||
503 | mail->setIsoDate( QString( tmp ) ); | 518 | mail->setIsoDate( QString( tmp ) ); |
504 | } | 519 | } |
505 | // crashes when accessing pop3 account? | 520 | // crashes when accessing pop3 account? |
506 | if (single_fields.fld_message_id) { | 521 | if (single_fields.fld_message_id) { |
507 | mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); | 522 | mail->setMsgid(QString(single_fields.fld_message_id->mid_value)); |
508 | ; // odebug << "Msgid == " << mail->Msgid().latin1() << "" << oendl; | 523 | ; // odebug << "Msgid == " << mail->Msgid().latin1() << "" << oendl; |
509 | } | 524 | } |
510 | if (single_fields.fld_reply_to) { | 525 | if (single_fields.fld_reply_to) { |
diff --git a/kmicromail/libmailwrapper/genericwrapper.h b/kmicromail/libmailwrapper/genericwrapper.h index 244212f..c35a6da 100644 --- a/kmicromail/libmailwrapper/genericwrapper.h +++ b/kmicromail/libmailwrapper/genericwrapper.h | |||
@@ -37,17 +37,17 @@ public: | |||
37 | 37 | ||
38 | virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPartP&part); | 38 | virtual encodedString* fetchDecodedPart(const RecMailP&mail,const RecPartP&part); |
39 | virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPartP&part); | 39 | virtual encodedString* fetchRawPart(const RecMailP&mail,const RecPartP&part); |
40 | virtual QString fetchTextPart(const RecMailP&mail,const RecPartP&part); | 40 | virtual QString fetchTextPart(const RecMailP&mail,const RecPartP&part); |
41 | virtual void cleanMimeCache(); | 41 | virtual void cleanMimeCache(); |
42 | virtual int deleteMbox(const Opie::Core::OSmartPointer<Folder>&){return 1;} | 42 | virtual int deleteMbox(const Opie::Core::OSmartPointer<Folder>&){return 1;} |
43 | virtual void logout(){}; | 43 | virtual void logout(){}; |
44 | virtual void storeMessage(const char*msg,size_t length, const QString&folder){}; | 44 | virtual void storeMessage(const char*msg,size_t length, const QString&folder){}; |
45 | static QString parseDateTime( mailimf_date_time *date ); | 45 | static const QDateTime parseDateTime( mailimf_date_time *date ); |
46 | 46 | ||
47 | protected: | 47 | protected: |
48 | RecBodyP parseMail( mailmessage * msg ); | 48 | RecBodyP parseMail( mailmessage * msg ); |
49 | QString parseMailboxList( mailimf_mailbox_list *list ); | 49 | QString parseMailboxList( mailimf_mailbox_list *list ); |
50 | QString parseMailbox( mailimf_mailbox *box ); | 50 | QString parseMailbox( mailimf_mailbox *box ); |
51 | QString parseGroup( mailimf_group *group ); | 51 | QString parseGroup( mailimf_group *group ); |
52 | QString parseAddressList( mailimf_address_list *list ); | 52 | QString parseAddressList( mailimf_address_list *list ); |
53 | 53 | ||
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp index d79df4f..b0dd1b8 100644 --- a/kmicromail/libmailwrapper/imapwrapper.cpp +++ b/kmicromail/libmailwrapper/imapwrapper.cpp | |||
@@ -3,16 +3,17 @@ | |||
3 | #include <libetpan/libetpan.h> | 3 | #include <libetpan/libetpan.h> |
4 | #include <qpe/global.h> | 4 | #include <qpe/global.h> |
5 | #include <qapplication.h> | 5 | #include <qapplication.h> |
6 | #include "imapwrapper.h" | 6 | #include "imapwrapper.h" |
7 | #include "mailtypes.h" | 7 | #include "mailtypes.h" |
8 | #include "logindialog.h" | 8 | #include "logindialog.h" |
9 | #include <qprogressbar.h> | 9 | #include <qprogressbar.h> |
10 | #include "genericwrapper.h" | 10 | #include "genericwrapper.h" |
11 | #include <kglobal.h> | ||
11 | 12 | ||
12 | using namespace Opie::Core; | 13 | using namespace Opie::Core; |
13 | int IMAPwrapper::mMax = 0; | 14 | int IMAPwrapper::mMax = 0; |
14 | int IMAPwrapper::mCurrent = 0; | 15 | int IMAPwrapper::mCurrent = 0; |
15 | 16 | ||
16 | IMAPwrapper::IMAPwrapper( IMAPaccount *a ) | 17 | IMAPwrapper::IMAPwrapper( IMAPaccount *a ) |
17 | : AbstractMail() | 18 | : AbstractMail() |
18 | { | 19 | { |
@@ -460,20 +461,28 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att) | |||
460 | if ( head->env_date != NULL ) { | 461 | if ( head->env_date != NULL ) { |
461 | m->setDate(head->env_date); | 462 | m->setDate(head->env_date); |
462 | struct mailimf_date_time result; | 463 | struct mailimf_date_time result; |
463 | struct mailimf_date_time* date = &result; | 464 | struct mailimf_date_time* date = &result; |
464 | struct mailimf_date_time **re = &date; | 465 | struct mailimf_date_time **re = &date; |
465 | size_t length = m->getDate().length(); | 466 | size_t length = m->getDate().length(); |
466 | size_t index = 0; | 467 | size_t index = 0; |
467 | if ( mailimf_date_time_parse(head->env_date, length,&index, re ) == MAILIMF_NO_ERROR ) { | 468 | if ( mailimf_date_time_parse(head->env_date, length,&index, re ) == MAILIMF_NO_ERROR ) { |
468 | m->setDate( Genericwrapper::parseDateTime( date ) ); | 469 | QDateTime dt = Genericwrapper::parseDateTime( date ); |
469 | char tmp[23]; | 470 | QString ret; |
470 | snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %05i", | 471 | if ( dt.date() == QDate::currentDate () ) |
471 | date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone ); | 472 | ret = KGlobal::locale()->formatTime( dt.time(),true); |
473 | else { | ||
474 | ret = KGlobal::locale()->formatDateTime( dt,true,true); | ||
475 | } | ||
476 | m->setDate( ret ); | ||
477 | char tmp[20]; | ||
478 | snprintf( tmp, 20, "%04i-%02i-%02i %02i:%02i:%02i", | ||
479 | dt.date().year(),dt.date().month(), dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second() ); | ||
480 | //qDebug("%d iso %s %s ", date->dt_zone, tmp, head->env_date); | ||
472 | m->setIsoDate( QString( tmp ) ); | 481 | m->setIsoDate( QString( tmp ) ); |
473 | } else { | 482 | } else { |
474 | m->setIsoDate(head->env_date); | 483 | m->setIsoDate(head->env_date); |
475 | } | 484 | } |
476 | } | 485 | } |
477 | if ( head->env_subject != NULL ) | 486 | if ( head->env_subject != NULL ) |
478 | m->setSubject(convert_String((const char*)head->env_subject)); | 487 | m->setSubject(convert_String((const char*)head->env_subject)); |
479 | //m->setSubject(head->env_subject); | 488 | //m->setSubject(head->env_subject); |
diff --git a/kmicromail/libmailwrapper/mailtypes.cpp b/kmicromail/libmailwrapper/mailtypes.cpp index 1a4ffd1..af3b9d0 100644 --- a/kmicromail/libmailwrapper/mailtypes.cpp +++ b/kmicromail/libmailwrapper/mailtypes.cpp | |||
@@ -28,26 +28,32 @@ static bool stringCompareRec( const QString& s1, const QString& s2 ) | |||
28 | if ( s1.isEmpty() && s2.isEmpty() ) | 28 | if ( s1.isEmpty() && s2.isEmpty() ) |
29 | return true; | 29 | return true; |
30 | return s1 == s2; | 30 | return s1 == s2; |
31 | } | 31 | } |
32 | 32 | ||
33 | bool RecMail::isEqual( RecMail* r1 ) | 33 | bool RecMail::isEqual( RecMail* r1 ) |
34 | { | 34 | { |
35 | if ( !stringCompareRec( isodate, r1->isodate ) ) { | 35 | if ( !stringCompareRec( isodate, r1->isodate ) ) { |
36 | // qDebug("date *%s* *%s* ", isodate.latin1(), r1->isodate.latin1()); | 36 | //qDebug("date *%s* *%s* ", isodate.latin1(), r1->isodate.latin1()); |
37 | return false; | 37 | return false; |
38 | } | 38 | } |
39 | if ( !stringCompareRec( from, r1->from ) ) { | 39 | if ( !stringCompareRec( subject.left(40), r1->subject.left(40) ) ) { |
40 | //qDebug("from *%s* *%s* ", from.latin1(), r1->from.latin1()); | 40 | //qDebug("sub *%s* *%s*", subject.latin1(), r1->subject.latin1()); |
41 | return false; | 41 | return false; |
42 | } | 42 | } |
43 | if ( !stringCompareRec( subject, r1->subject ) ) { | 43 | |
44 | //qDebug("sub "); | 44 | //qDebug("date *%s* *%s* ", isodate.latin1(), r1->isodate.latin1()); |
45 | return false; | 45 | if ( !stringCompareRec( from.left(40), r1->from.left(40)) ) { |
46 | if ( r1->from.find ( from ) < 0 ) { | ||
47 | if ( !stringCompareRec( from.simplifyWhiteSpace ().left(40), r1->from.simplifyWhiteSpace ().left(40)) ) { | ||
48 | //qDebug("from *%s* *%s* ", from.left(40).latin1(), r1->from.left(20).latin1()); | ||
49 | return false; | ||
50 | } | ||
51 | } | ||
46 | } | 52 | } |
47 | 53 | ||
48 | return true; | 54 | return true; |
49 | } | 55 | } |
50 | void RecMail::copy_old(const RecMail&old) | 56 | void RecMail::copy_old(const RecMail&old) |
51 | { | 57 | { |
52 | subject = old.subject; | 58 | subject = old.subject; |
53 | date = old.date; | 59 | date = old.date; |
diff --git a/kmicromail/libmailwrapper/mailtypes.h b/kmicromail/libmailwrapper/mailtypes.h index 020278d..c1c1a74 100644 --- a/kmicromail/libmailwrapper/mailtypes.h +++ b/kmicromail/libmailwrapper/mailtypes.h | |||
@@ -68,19 +68,21 @@ public: | |||
68 | void setReferences(const QStringList&list); | 68 | void setReferences(const QStringList&list); |
69 | const QStringList&References()const; | 69 | const QStringList&References()const; |
70 | 70 | ||
71 | const QBitArray&getFlags()const{return msg_flags;} | 71 | const QBitArray&getFlags()const{return msg_flags;} |
72 | void setFlags(const QBitArray&flags){msg_flags = flags;} | 72 | void setFlags(const QBitArray&flags){msg_flags = flags;} |
73 | 73 | ||
74 | void setWrapper(AbstractMail*wrapper); | 74 | void setWrapper(AbstractMail*wrapper); |
75 | AbstractMail* Wrapper(); | 75 | AbstractMail* Wrapper(); |
76 | // public for debugging | ||
77 | QString subject,date,isodate,from,mbox,msg_id,replyto; | ||
76 | 78 | ||
77 | protected: | 79 | protected: |
78 | QString subject,date,isodate,from,mbox,msg_id,replyto; | 80 | //QString subject,date,isodate,from,mbox,msg_id,replyto; |
79 | unsigned int msg_number,msg_size; | 81 | unsigned int msg_number,msg_size; |
80 | QBitArray msg_flags; | 82 | QBitArray msg_flags; |
81 | QStringList to,cc,bcc,in_reply_to,references; | 83 | QStringList to,cc,bcc,in_reply_to,references; |
82 | AbstractMail*wrapper; | 84 | AbstractMail*wrapper; |
83 | void init(); | 85 | void init(); |
84 | void copy_old(const RecMail&old); | 86 | void copy_old(const RecMail&old); |
85 | }; | 87 | }; |
86 | 88 | ||