summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/accountitem.cpp22
-rw-r--r--kmicromail/accountview.cpp5
-rw-r--r--kmicromail/libmailwrapper/abstractmail.cpp67
-rw-r--r--kmicromail/libmailwrapper/abstractmail.h7
-rw-r--r--kmicromail/libmailwrapper/genericwrapper.cpp64
-rw-r--r--kmicromail/libmailwrapper/genericwrapper.h2
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp18
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.h1
-rw-r--r--kmicromail/libmailwrapper/mailtypes.cpp23
-rw-r--r--kmicromail/libmailwrapper/mailtypes.h5
-rw-r--r--kmicromail/libmailwrapper/mboxwrapper.h1
-rw-r--r--kmicromail/libmailwrapper/mhwrapper.cpp1
-rw-r--r--kmicromail/libmailwrapper/mhwrapper.h1
-rw-r--r--kmicromail/libmailwrapper/nntpwrapper.h1
-rw-r--r--kmicromail/libmailwrapper/pop3wrapper.h2
-rw-r--r--kmicromail/libmailwrapper/smtpwrapper.h1
-rw-r--r--kmicromail/mailistviewitem.cpp9
17 files changed, 208 insertions, 22 deletions
diff --git a/kmicromail/accountitem.cpp b/kmicromail/accountitem.cpp
index 1698b40..7b9b881 100644
--- a/kmicromail/accountitem.cpp
+++ b/kmicromail/accountitem.cpp
@@ -94,3 +94,3 @@ QPopupMenu * POP3viewItem::getContextMenu()
94 m->insertItem(QObject::tr("Set offline",contextName),1); 94 m->insertItem(QObject::tr("Set offline",contextName),1);
95 m->insertItem(QObject::tr("Download messages",contextName),2); 95 m->insertItem(QObject::tr("Download new INBOX messages",contextName),2);
96 } 96 }
@@ -99,2 +99,3 @@ QPopupMenu * POP3viewItem::getContextMenu()
99 m->insertItem(QObject::tr("Set online",contextName),1); 99 m->insertItem(QObject::tr("Set online",contextName),1);
100 m->insertItem(QObject::tr("Download new INBOX messages",contextName),2);
100 } 101 }
@@ -139,2 +140,4 @@ void POP3viewItem::contextMenuSelected(int which)
139 case 2: // daunlood 140 case 2: // daunlood
141 if (account->getOffline())
142 setOnOffline();
140 AccountView*bl = accountView(); 143 AccountView*bl = accountView();
@@ -515,2 +518,4 @@ QPopupMenu * IMAPviewItem::getContextMenu()
515 m->insertItem(QObject::tr("Set offline",contextName),3); 518 m->insertItem(QObject::tr("Set offline",contextName),3);
519 m->insertSeparator();
520 m->insertItem(QObject::tr("Download new INBOX messages",contextName),4);
516 } 521 }
@@ -519,2 +524,4 @@ QPopupMenu * IMAPviewItem::getContextMenu()
519 m->insertItem(QObject::tr("Set online",contextName),3); 524 m->insertItem(QObject::tr("Set online",contextName),3);
525 m->insertSeparator();
526 m->insertItem(QObject::tr("Download new INBOX messages",contextName),4);
520 } 527 }
@@ -572,2 +579,15 @@ void IMAPviewItem::contextMenuSelected(int id)
572 break; 579 break;
580 case 4: // daunlood
581 {
582 if (account->getOffline()) {
583 contextMenuSelected( 3 );
584 }
585 AccountView*bl = accountView();
586 if (!bl) return;
587 AccountViewItem* in = findSubItem( "inbox" , 0);
588 if ( ! in )
589 return;
590 bl->downloadMailsInbox(in->getFolder(),getWrapper());
591 }
592 break;
573 default: 593 default:
diff --git a/kmicromail/accountview.cpp b/kmicromail/accountview.cpp
index 85523b1..de8c5bb 100644
--- a/kmicromail/accountview.cpp
+++ b/kmicromail/accountview.cpp
@@ -143,2 +143,3 @@ void AccountView::downloadMailsInbox(const FolderP&fromFolder,AbstractMail*fromW
143{ 143{
144#if 0
144 AbstractMail*targetMail = 0; 145 AbstractMail*targetMail = 0;
@@ -164,5 +165,7 @@ void AccountView::downloadMailsInbox(const FolderP&fromFolder,AbstractMail*fromW
164 maxsize = sels.sizeSpinBox->value(); 165 maxsize = sels.sizeSpinBox->value();
165
166 fromWrapper->mvcpAllMails(fromFolder,targetFolder,targetMail,sels.moveMails(), maxsize); 166 fromWrapper->mvcpAllMails(fromFolder,targetFolder,targetMail,sels.moveMails(), maxsize);
167#endif
168 fromWrapper->downloadNewMails( fromFolder, mhAccounts[0]->getWrapper());
167 refreshCurrent(); 169 refreshCurrent();
170
168} 171}
diff --git a/kmicromail/libmailwrapper/abstractmail.cpp b/kmicromail/libmailwrapper/abstractmail.cpp
index f876235..374d606 100644
--- a/kmicromail/libmailwrapper/abstractmail.cpp
+++ b/kmicromail/libmailwrapper/abstractmail.cpp
@@ -12,2 +12,3 @@
12#include <qapplication.h> 12#include <qapplication.h>
13#include <qmessagebox.h>
13 14
@@ -160,2 +161,68 @@ void AbstractMail::deleteMailList(const QValueList<RecMailP>&target)
160} 161}
162
163void AbstractMail::downloadNewMails(const FolderP&fromFolder, AbstractMail*targetMail )
164{
165 qDebug("AbstractMail::downloadNewMails %s ", fromFolder->getName().latin1());
166 // get local folder
167 Account * acc = getAccount();
168 if ( !acc ) return;
169 QString lfName = acc->getLocalFolder();
170 if ( lfName.isEmpty() )
171 lfName = acc->getAccountName();
172 // create local folder
173 if ( !targetMail->createMbox(lfName))
174 {
175 QMessageBox::critical(0,tr("Error creating new Folder"),
176 tr("Error while creating new folder\n%1\n\nCancelling action.").arg(lfName));
177 return;
178 }
179 QValueList<RecMailP> t;
180 listMessages(fromFolder->getName(),t,acc->getMaxMailSize() );
181 if ( t.count() == 0 ) {
182 Global::statusMessage(tr("There are no new messages"));
183 return;
184 }
185 QValueList<RecMailP> e;
186 targetMail->listMessages(lfName,e,acc->getMaxMailSize() );
187 qDebug("target has mails %d ", e.count());
188 QValueList<RecMailP> n;
189 int iii = 0;
190 int count = t.count();
191 while (iii < count ) {
192 RecMailP r = (*t.at( iii ));
193 bool found = false;
194 int jjj = 0;
195 int countE = e.count();
196 while (jjj < countE ) {
197 RecMailP re = (*e.at( jjj ));
198 if ( re->isEqual(r) ) {
199 found = true;
200 break;
201 }
202 ++jjj;
203 }
204 if ( found )
205 qDebug("found ");
206 else
207 qDebug("NOT found ");
208
209 if ( !found ) {
210 n.append( r );
211 }
212 ++iii;
213 }
214 if ( n.count() == 0 ) {
215 Global::statusMessage(tr("There are no new messages"));
216 return;
217 }
218 mvcpMailList( n,lfName,targetMail,!acc->getLeaveOnServer());
219
220
221#if 0
222 QValueList<RecMailP> t;
223 listMessages(fromFolder->getName(),t, maxSizeInKb);
224 mvcpMailList( t,targetFolder,targetWrapper,moveit);
225#endif
226
227}
161void AbstractMail::mvcpAllMails(const FolderP&fromFolder, 228void AbstractMail::mvcpAllMails(const FolderP&fromFolder,
diff --git a/kmicromail/libmailwrapper/abstractmail.h b/kmicromail/libmailwrapper/abstractmail.h
index cae83f4..2069ca1 100644
--- a/kmicromail/libmailwrapper/abstractmail.h
+++ b/kmicromail/libmailwrapper/abstractmail.h
@@ -12,2 +12,5 @@
12 12
13
14#include "mailwrapper.h"
15
13class IMAPwrapper; 16class IMAPwrapper;
@@ -40,3 +43,3 @@ public:
40 virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0; 43 virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0;
41 44 void downloadNewMails(const FolderP&fromFolder,AbstractMail*targetWrapper );
42 virtual void mvcpAllMails(const Opie::Core::OSmartPointer<Folder>&fromFolder, 45 virtual void mvcpAllMails(const Opie::Core::OSmartPointer<Folder>&fromFolder,
@@ -57,2 +60,4 @@ public:
57 60
61 virtual Account* getAccount() = 0;
62
58 static AbstractMail* getWrapper(IMAPaccount *a); 63 static AbstractMail* getWrapper(IMAPaccount *a);
diff --git a/kmicromail/libmailwrapper/genericwrapper.cpp b/kmicromail/libmailwrapper/genericwrapper.cpp
index 9614d53..2b04847 100644
--- a/kmicromail/libmailwrapper/genericwrapper.cpp
+++ b/kmicromail/libmailwrapper/genericwrapper.cpp
@@ -5,2 +5,5 @@
5 5
6#include <kconfig.h>
7#include <kglobal.h>
8#include <kstandarddirs.h>
6 9
@@ -26,2 +29,44 @@ Genericwrapper::~Genericwrapper()
26} 29}
30QString Genericwrapper::parseDateTime( mailimf_date_time *date )
31{
32 static bool init = false ;
33 if ( ! init ) {
34 KConfig kon ( locateLocal( "config", "korganizerrc" ) );
35 kon.setGroup("Locale");
36 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)kon.readNumEntry( "PreferredDate",0) );
37 QString dummy = kon.readEntry( "UserDateFormatShort","%aK %d.%m.%y" );// kon.readEntry( "");
38 KGlobal::locale()->setHore24Format( !kon.readBoolEntry( "PreferredTime",0 ) );
39 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
40 kon.setGroup("Time & Date");
41 KGlobal::locale()->setDaylightSaving( kon.readBoolEntry( "UseDaylightsaving", true ),
42 kon.readNumEntry( "DaylightsavingStart", 90),
43 kon.readNumEntry( "DaylightsavingEnd",304) );
44 KGlobal::locale()->setTimezone( kon.readEntry( "TimeZoneName" ," 00:00 Europe/London(UTC)") );
45
46 init = true;
47
48 }
49 QDateTime dt (QDate(date->dt_year,date->dt_month, date->dt_day ),QTime(date->dt_hour, date->dt_min, date->dt_sec ) );
50 int off = KGlobal::locale()->localTimeOffset( dt );
51 dt = dt.addSecs( off*60 );
52 QString ret = KGlobal::locale()->formatDateTime( dt,true,true);
53 if ( off < 0 )
54 ret += " -";
55 else
56 ret += " +";
57 ret += QString::number( off / 60 );
58 ret += "h";
59#if 0
60 char tmp[23];
61
62 // snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i",
63 // date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
64 snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %+05i",
65 date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
66
67
68 return QString( tmp );
69#endif
70 return ret;
71}
27 72
@@ -244,13 +289,2 @@ RecBodyP Genericwrapper::parseMail( mailmessage * msg )
244 289
245QString Genericwrapper::parseDateTime( mailimf_date_time *date )
246{
247 char tmp[23];
248
249 // snprintf( tmp, 23, "%02i.%02i.%04i %02i:%02i:%02i %+05i",
250 // date->dt_day, date->dt_month, date->dt_year, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
251 snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %+05i",
252 date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
253
254 return QString( tmp );
255}
256 290
@@ -450,4 +484,10 @@ void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &
450 mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) ); 484 mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) );
451 if (single_fields.fld_orig_date) 485 if (single_fields.fld_orig_date) {
452 mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) ); 486 mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) );
487 char tmp[23];
488 struct mailimf_date_time* date = single_fields.fld_orig_date->dt_date_time;
489 snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %05i",
490 date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
491 mail->setIsoDate( QString( tmp ) );
492 }
453 // crashes when accessing pop3 account? 493 // crashes when accessing pop3 account?
diff --git a/kmicromail/libmailwrapper/genericwrapper.h b/kmicromail/libmailwrapper/genericwrapper.h
index 235e116..244212f 100644
--- a/kmicromail/libmailwrapper/genericwrapper.h
+++ b/kmicromail/libmailwrapper/genericwrapper.h
@@ -44,2 +44,3 @@ public:
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 46
@@ -51,3 +52,2 @@ protected:
51 QString parseAddressList( mailimf_address_list *list ); 52 QString parseAddressList( mailimf_address_list *list );
52 QString parseDateTime( mailimf_date_time *date );
53 53
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index 6faa524..5441a9b 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -9,2 +9,3 @@
9#include <qprogressbar.h> 9#include <qprogressbar.h>
10#include "genericwrapper.h"
10 11
@@ -458,4 +459,19 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
458 continue; 459 continue;
459 if ( head->env_date != NULL ) 460 if ( head->env_date != NULL ) {
460 m->setDate(head->env_date); 461 m->setDate(head->env_date);
462 struct mailimf_date_time result;
463 struct mailimf_date_time* date = &result;
464 struct mailimf_date_time **re = &date;
465 size_t length = m->getDate().length();
466 size_t index = 0;
467 if ( mailimf_date_time_parse(head->env_date, length,&index, re ) == MAILIMF_NO_ERROR ) {
468 m->setDate( Genericwrapper::parseDateTime( date ) );
469 char tmp[23];
470 snprintf( tmp, 23, "%04i-%02i-%02i %02i:%02i:%02i %05i",
471 date->dt_year,date->dt_month, date->dt_day, date->dt_hour, date->dt_min, date->dt_sec, date->dt_zone );
472 m->setIsoDate( QString( tmp ) );
473 } else {
474 m->setIsoDate(head->env_date);
475 }
476 }
461 if ( head->env_subject != NULL ) 477 if ( head->env_subject != NULL )
diff --git a/kmicromail/libmailwrapper/imapwrapper.h b/kmicromail/libmailwrapper/imapwrapper.h
index db8ab5b..5535d8d 100644
--- a/kmicromail/libmailwrapper/imapwrapper.h
+++ b/kmicromail/libmailwrapper/imapwrapper.h
@@ -54,2 +54,3 @@ public:
54 virtual const QString&getName()const; 54 virtual const QString&getName()const;
55 virtual Account* getAccount() { return account; };
55 56
diff --git a/kmicromail/libmailwrapper/mailtypes.cpp b/kmicromail/libmailwrapper/mailtypes.cpp
index d43bdc6..1a4ffd1 100644
--- a/kmicromail/libmailwrapper/mailtypes.cpp
+++ b/kmicromail/libmailwrapper/mailtypes.cpp
@@ -25,3 +25,26 @@ RecMail::~RecMail()
25} 25}
26static bool stringCompareRec( const QString& s1, const QString& s2 )
27{
28 if ( s1.isEmpty() && s2.isEmpty() )
29 return true;
30 return s1 == s2;
31}
26 32
33bool RecMail::isEqual( RecMail* r1 )
34{
35 if ( !stringCompareRec( isodate, r1->isodate ) ) {
36 // qDebug("date *%s* *%s* ", isodate.latin1(), r1->isodate.latin1());
37 return false;
38 }
39 if ( !stringCompareRec( from, r1->from ) ) {
40 //qDebug("from *%s* *%s* ", from.latin1(), r1->from.latin1());
41 return false;
42 }
43 if ( !stringCompareRec( subject, r1->subject ) ) {
44 //qDebug("sub ");
45 return false;
46 }
47
48 return true;
49}
27void RecMail::copy_old(const RecMail&old) 50void RecMail::copy_old(const RecMail&old)
diff --git a/kmicromail/libmailwrapper/mailtypes.h b/kmicromail/libmailwrapper/mailtypes.h
index c317880..020278d 100644
--- a/kmicromail/libmailwrapper/mailtypes.h
+++ b/kmicromail/libmailwrapper/mailtypes.h
@@ -37,2 +37,3 @@ public:
37 virtual ~RecMail(); 37 virtual ~RecMail();
38 bool isEqual( RecMail* r1 );
38 39
@@ -42,2 +43,4 @@ public:
42 void setDate( const QString&a ) { date = a; } 43 void setDate( const QString&a ) { date = a; }
44 const QString&getIsoDate()const{ return isodate; }
45 void setIsoDate( const QString&a ) { isodate = a; }
43 const QString&getFrom()const{ return from; } 46 const QString&getFrom()const{ return from; }
@@ -74,3 +77,3 @@ public:
74protected: 77protected:
75 QString subject,date,from,mbox,msg_id,replyto; 78 QString subject,date,isodate,from,mbox,msg_id,replyto;
76 unsigned int msg_number,msg_size; 79 unsigned int msg_number,msg_size;
diff --git a/kmicromail/libmailwrapper/mboxwrapper.h b/kmicromail/libmailwrapper/mboxwrapper.h
index 9731b85..d03940f 100644
--- a/kmicromail/libmailwrapper/mboxwrapper.h
+++ b/kmicromail/libmailwrapper/mboxwrapper.h
@@ -38,2 +38,3 @@ public:
38 virtual const QString&getName()const; 38 virtual const QString&getName()const;
39 virtual Account* getAccount() { return 0; };
39 40
diff --git a/kmicromail/libmailwrapper/mhwrapper.cpp b/kmicromail/libmailwrapper/mhwrapper.cpp
index cbc52d9..962dac0 100644
--- a/kmicromail/libmailwrapper/mhwrapper.cpp
+++ b/kmicromail/libmailwrapper/mhwrapper.cpp
@@ -67,2 +67,3 @@ void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSm
67{ 67{
68 qDebug("MHwrapper::listMessages ");
68 init_storage(); 69 init_storage();
diff --git a/kmicromail/libmailwrapper/mhwrapper.h b/kmicromail/libmailwrapper/mhwrapper.h
index 550824d..d1b7d1f 100644
--- a/kmicromail/libmailwrapper/mhwrapper.h
+++ b/kmicromail/libmailwrapper/mhwrapper.h
@@ -44,2 +44,3 @@ public:
44 virtual const QString&getName()const; 44 virtual const QString&getName()const;
45 virtual Account* getAccount() { return 0; };
45 46
diff --git a/kmicromail/libmailwrapper/nntpwrapper.h b/kmicromail/libmailwrapper/nntpwrapper.h
index 5d4e5ce..8c54f12 100644
--- a/kmicromail/libmailwrapper/nntpwrapper.h
+++ b/kmicromail/libmailwrapper/nntpwrapper.h
@@ -39,2 +39,3 @@ public:
39 static void nntp_progress( size_t current, size_t maximum ); 39 static void nntp_progress( size_t current, size_t maximum );
40 virtual Account* getAccount() { return account; };
40 41
diff --git a/kmicromail/libmailwrapper/pop3wrapper.h b/kmicromail/libmailwrapper/pop3wrapper.h
index 7c70942..ebc2fc7 100644
--- a/kmicromail/libmailwrapper/pop3wrapper.h
+++ b/kmicromail/libmailwrapper/pop3wrapper.h
@@ -36,3 +36,3 @@ public:
36 static void pop3_progress( size_t current, size_t maximum ); 36 static void pop3_progress( size_t current, size_t maximum );
37 37 virtual Account* getAccount() { return account; };
38protected: 38protected:
diff --git a/kmicromail/libmailwrapper/smtpwrapper.h b/kmicromail/libmailwrapper/smtpwrapper.h
index 105cbf5..ec42b56 100644
--- a/kmicromail/libmailwrapper/smtpwrapper.h
+++ b/kmicromail/libmailwrapper/smtpwrapper.h
@@ -29,2 +29,3 @@ public:
29 static progressMailSend*sendProgress; 29 static progressMailSend*sendProgress;
30 virtual Account* getAccount() { return m_SmtpAccount; };
30 31
diff --git a/kmicromail/mailistviewitem.cpp b/kmicromail/mailistviewitem.cpp
index b92b0cf..484a635 100644
--- a/kmicromail/mailistviewitem.cpp
+++ b/kmicromail/mailistviewitem.cpp
@@ -55,3 +55,3 @@ void MailListViewItem::showEntry()
55 //setText(3, fsize + "MB"); 55 //setText(3, fsize + "MB");
56 mKeyMap.insert(4, "M" +fsort ); 56 mKeyMap.insert(3, "M" +fsort );
57 } 57 }
@@ -59,3 +59,3 @@ void MailListViewItem::showEntry()
59 setText(2,mail_data->getFrom()); 59 setText(2,mail_data->getFrom());
60 60#if 0
61 QString date = mail_data->getDate(); 61 QString date = mail_data->getDate();
@@ -100,2 +100,3 @@ void MailListViewItem::showEntry()
100 } 100 }
101 //qDebug("insert Date %s ", date.latin1());
101 // if ( date.left(1) != "1" || date.left(1) != "2" ) 102 // if ( date.left(1) != "1" || date.left(1) != "2" )
@@ -103,2 +104,4 @@ void MailListViewItem::showEntry()
103 mKeyMap.insert(4,date); 104 mKeyMap.insert(4,date);
105#endif
106 mKeyMap.insert(4,mail_data->getIsoDate());
104 setText(4,mail_data->getDate()); 107 setText(4,mail_data->getDate());
@@ -117,3 +120,3 @@ QString MailListViewItem::key(int column, bool) const
117 // to make is fast, we use here special cases 120 // to make is fast, we use here special cases
118 if ( column == 3 || column == 4 ) { 121 if ( column == 3 || column == 4 ) {
119 return *mKeyMap.find(column); 122 return *mKeyMap.find(column);