summaryrefslogtreecommitdiff
path: root/noncore/net/mail/accountitem.cpp
Unidiff
Diffstat (limited to 'noncore/net/mail/accountitem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/accountitem.cpp240
1 files changed, 126 insertions, 114 deletions
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp
index 10db2c6..f7fdccd 100644
--- a/noncore/net/mail/accountitem.cpp
+++ b/noncore/net/mail/accountitem.cpp
@@ -74,40 +74,34 @@ void POP3viewItem::refresh()
74 item = new POP3folderItem( (*it), this , item ); 74 item = new POP3folderItem( (*it), this , item );
75 item->setSelectable( (*it)->may_select()); 75 item->setSelectable( (*it)->may_select());
76 } 76 }
77 delete folders; 77 delete folders;
78} 78}
79 79
80RECBODYP POP3viewItem::fetchBody( const RecMailP &mail ) 80RECBODYP POP3viewItem::fetchBody( const RecMailP &mail )
81{ 81{
82 odebug << "POP3 fetchBody" << oendl; 82 odebug << "POP3 fetchBody" << oendl;
83 return wrapper->fetchBody( mail ); 83 return wrapper->fetchBody( mail );
84} 84}
85 85
86QPopupMenu * POP3viewItem::getContextMenu() 86QMap<int,QString> POP3viewItem::serverMenu()
87{ 87{
88 QPopupMenu *m = new QPopupMenu(0); 88 QMap<int,QString> _entries;
89 if (m) 89 if (!account->getOffline()) {
90 { 90 _entries[SERVER_MENU_DISCONNECT]=QObject::tr("Disconnect",contextName);
91 if (!account->getOffline()) 91 _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set offline",contextName);
92 { 92 } else {
93 m->insertItem(QObject::tr("Disconnect",contextName),SERVER_MENU_DISCONNECT); 93 _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set online",contextName);
94 m->insertItem(QObject::tr("Set offline",contextName),SERVER_MENU_OFFLINE);
95 }
96 else
97 {
98 m->insertItem(QObject::tr("Set online",contextName),SERVER_MENU_OFFLINE);
99 }
100 } 94 }
101 return m; 95 return _entries;
102} 96}
103 97
104void POP3viewItem::disconnect() 98void POP3viewItem::disconnect()
105{ 99{
106 QListViewItem *child = firstChild(); 100 QListViewItem *child = firstChild();
107 while ( child ) 101 while ( child )
108 { 102 {
109 QListViewItem *tmp = child; 103 QListViewItem *tmp = child;
110 child = child->nextSibling(); 104 child = child->nextSibling();
111 delete tmp; 105 delete tmp;
112 } 106 }
113 wrapper->logout(); 107 wrapper->logout();
@@ -116,35 +110,36 @@ void POP3viewItem::disconnect()
116void POP3viewItem::setOnOffline() 110void POP3viewItem::setOnOffline()
117{ 111{
118 if (!account->getOffline()) 112 if (!account->getOffline())
119 { 113 {
120 disconnect(); 114 disconnect();
121 } 115 }
122 account->setOffline(!account->getOffline()); 116 account->setOffline(!account->getOffline());
123 account->save(); 117 account->save();
124 SETPIX(PIXMAP_POP3FOLDER); 118 SETPIX(PIXMAP_POP3FOLDER);
125 refresh(); 119 refresh();
126} 120}
127 121
128void POP3viewItem::contextMenuSelected(int which) 122bool POP3viewItem::contextMenuSelected(int which)
129{ 123{
130 switch (which) 124 switch (which)
131 { 125 {
132 case SERVER_MENU_DISCONNECT: 126 case SERVER_MENU_DISCONNECT:
133 disconnect(); 127 disconnect();
134 break; 128 break;
135 case SERVER_MENU_OFFLINE: 129 case SERVER_MENU_OFFLINE:
136 setOnOffline(); 130 setOnOffline();
137 break; 131 break;
138 } 132 }
133 return false;
139} 134}
140 135
141POP3folderItem::~POP3folderItem() 136POP3folderItem::~POP3folderItem()
142{} 137{}
143 138
144POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent , QListViewItem*after ) 139POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent , QListViewItem*after )
145 : AccountViewItem(folderInit,parent,after ) 140 : AccountViewItem(folderInit,parent,after )
146{ 141{
147 pop3 = parent; 142 pop3 = parent;
148 if (folder->getDisplayName().lower()!="inbox") 143 if (folder->getDisplayName().lower()!="inbox")
149 { 144 {
150 setPixmap( 0, PIXMAP_POP3FOLDER ); 145 setPixmap( 0, PIXMAP_POP3FOLDER );
@@ -158,62 +153,60 @@ POP3folderItem::POP3folderItem( const FolderP&folderInit, POP3viewItem *parent ,
158 153
159void POP3folderItem::refresh(QValueList<RecMailP>&target) 154void POP3folderItem::refresh(QValueList<RecMailP>&target)
160{ 155{
161 if (folder->may_select()) 156 if (folder->may_select())
162 pop3->getWrapper()->listMessages( folder->getName(),target ); 157 pop3->getWrapper()->listMessages( folder->getName(),target );
163} 158}
164 159
165RECBODYP POP3folderItem::fetchBody(const RecMailP&aMail) 160RECBODYP POP3folderItem::fetchBody(const RecMailP&aMail)
166{ 161{
167 return pop3->getWrapper()->fetchBody(aMail); 162 return pop3->getWrapper()->fetchBody(aMail);
168} 163}
169 164
170QPopupMenu * POP3folderItem::getContextMenu() 165QMap<int,QString> POP3folderItem::folderMenu()
171{ 166{
172 QPopupMenu *m = new QPopupMenu(0); 167 QMap<int,QString> _entries;
173 if (m) 168 _entries[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName);
174 { 169 _entries[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName);
175 m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER); 170 _entries[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copie all mails",contextName);
176 m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS); 171 return _entries;
177 m->insertItem(QObject::tr("Move/Copie all mails",contextName),FOLDER_MENU_MOVE_MAILS);
178 }
179 return m;
180} 172}
181 173
182void POP3folderItem::downloadMails() 174void POP3folderItem::downloadMails()
183{ 175{
184 AccountView*bl = pop3->accountView(); 176 AccountView*bl = pop3->accountView();
185 if (!bl) return; 177 if (!bl) return;
186 bl->downloadMails(folder,pop3->getWrapper()); 178 bl->downloadMails(folder,pop3->getWrapper());
187} 179}
188 180
189void POP3folderItem::contextMenuSelected(int which) 181bool POP3folderItem::contextMenuSelected(int which)
190{ 182{
191 AccountView * view = (AccountView*)listView(); 183 AccountView * view = (AccountView*)listView();
192 switch (which) 184 switch (which)
193 { 185 {
194 case FOLDER_MENU_REFRESH_HEADER: 186 case FOLDER_MENU_REFRESH_HEADER:
195 /* must be 'cause pop3 lists are cached */ 187 /* must be 'cause pop3 lists are cached */
196 pop3->getWrapper()->logout(); 188 pop3->getWrapper()->logout();
197 view->refreshCurrent(); 189 view->refreshCurrent();
198 break; 190 break;
199 case FOLDER_MENU_DELETE_ALL_MAILS: 191 case FOLDER_MENU_DELETE_ALL_MAILS:
200 deleteAllMail(pop3->getWrapper(),folder); 192 deleteAllMail(pop3->getWrapper(),folder);
201 break; 193 break;
202 case FOLDER_MENU_MOVE_MAILS: 194 case FOLDER_MENU_MOVE_MAILS:
203 downloadMails(); 195 downloadMails();
204 break; 196 break;
205 default: 197 default:
206 break; 198 break;
207 } 199 }
200 return false;
208} 201}
209 202
210/** 203/**
211 * NNTP Account stuff 204 * NNTP Account stuff
212 */ 205 */
213NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent ) 206NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent )
214 : AccountViewItem( parent ) 207 : AccountViewItem( parent )
215{ 208{
216 account = a; 209 account = a;
217 wrapper = AbstractMail::getWrapper( account ); 210 wrapper = AbstractMail::getWrapper( account );
218 //FIXME 211 //FIXME
219 SETPIX(PIXMAP_POP3FOLDER); 212 SETPIX(PIXMAP_POP3FOLDER);
@@ -265,41 +258,36 @@ void NNTPviewItem::refresh()
265 item = new NNTPfolderItem( (*it), this , item ); 258 item = new NNTPfolderItem( (*it), this , item );
266 item->setSelectable( (*it)->may_select()); 259 item->setSelectable( (*it)->may_select());
267 } 260 }
268 delete folders; 261 delete folders;
269} 262}
270 263
271RECBODYP NNTPviewItem::fetchBody( const RecMailP &mail ) 264RECBODYP NNTPviewItem::fetchBody( const RecMailP &mail )
272{ 265{
273 odebug << "NNTP fetchBody" << oendl; 266 odebug << "NNTP fetchBody" << oendl;
274 return wrapper->fetchBody( mail ); 267 return wrapper->fetchBody( mail );
275} 268}
276 269
277QPopupMenu * NNTPviewItem::getContextMenu() 270QMap<int,QString> NNTPviewItem::serverMenu()
278{ 271{
279 QPopupMenu *m = new QPopupMenu(0); 272 QMap<int,QString> _entries;
280 if (m) 273 if (!account->getOffline())
281 { 274 {
282 if (!account->getOffline()) 275 _entries[SERVER_MENU_DISCONNECT]=QObject::tr("Disconnect",contextName);
283 { 276 _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set offline",contextName);
284 m->insertItem(QObject::tr("Disconnect",contextName),SERVER_MENU_DISCONNECT); 277 _entries[SERVER_MENU_SUBSCRIBE]=QObject::tr("(Un-)Subscribe groups",contextName);
285 m->insertItem(QObject::tr("Set offline",contextName),SERVER_MENU_OFFLINE); 278 } else {
286 m->insertItem(QObject::tr("(Un-)Subscribe groups",contextName),SERVER_MENU_SUBSCRIBE); 279 _entries[SERVER_MENU_OFFLINE]=QObject::tr("Set online",contextName);
287 }
288 else
289 {
290 m->insertItem(QObject::tr("Set online",contextName),SERVER_MENU_OFFLINE);
291 }
292 } 280 }
293 return m; 281 return _entries;
294} 282}
295 283
296void NNTPviewItem::subscribeGroups() 284void NNTPviewItem::subscribeGroups()
297{ 285{
298 NNTPGroupsDlg dlg(account); 286 NNTPGroupsDlg dlg(account);
299 if (QPEApplication::execDialog(&dlg)== QDialog::Accepted ){ 287 if (QPEApplication::execDialog(&dlg)== QDialog::Accepted ){
300 refresh(); 288 refresh();
301 } 289 }
302} 290}
303 291
304void NNTPviewItem::disconnect() 292void NNTPviewItem::disconnect()
305{ 293{
@@ -317,38 +305,39 @@ void NNTPviewItem::setOnOffline()
317{ 305{
318 if (!account->getOffline()) 306 if (!account->getOffline())
319 { 307 {
320 disconnect(); 308 disconnect();
321 } 309 }
322 account->setOffline(!account->getOffline()); 310 account->setOffline(!account->getOffline());
323 account->save(); 311 account->save();
324 //FIXME 312 //FIXME
325 SETPIX(PIXMAP_POP3FOLDER); 313 SETPIX(PIXMAP_POP3FOLDER);
326 refresh(); 314 refresh();
327} 315}
328 316
329void NNTPviewItem::contextMenuSelected(int which) 317bool NNTPviewItem::contextMenuSelected(int which)
330{ 318{
331 switch (which) 319 switch (which)
332 { 320 {
333 case SERVER_MENU_DISCONNECT: 321 case SERVER_MENU_DISCONNECT:
334 disconnect(); 322 disconnect();
335 break; 323 break;
336 case SERVER_MENU_OFFLINE: 324 case SERVER_MENU_OFFLINE:
337 setOnOffline(); 325 setOnOffline();
338 break; 326 break;
339 case SERVER_MENU_SUBSCRIBE: 327 case SERVER_MENU_SUBSCRIBE:
340 subscribeGroups(); 328 subscribeGroups();
341 break; 329 break;
342 } 330 }
331 return false;
343} 332}
344 333
345NNTPfolderItem::~NNTPfolderItem() 334NNTPfolderItem::~NNTPfolderItem()
346{} 335{}
347 336
348NNTPfolderItem::NNTPfolderItem( const FolderP &folderInit, NNTPviewItem *parent , QListViewItem*after ) 337NNTPfolderItem::NNTPfolderItem( const FolderP &folderInit, NNTPviewItem *parent , QListViewItem*after )
349 : AccountViewItem( folderInit, parent,after ) 338 : AccountViewItem( folderInit, parent,after )
350{ 339{
351 nntp = parent; 340 nntp = parent;
352 if (folder->getDisplayName().lower()!="inbox") 341 if (folder->getDisplayName().lower()!="inbox")
353 { 342 {
354 setPixmap( 0, PIXMAP_POP3FOLDER ); 343 setPixmap( 0, PIXMAP_POP3FOLDER );
@@ -362,58 +351,56 @@ NNTPfolderItem::NNTPfolderItem( const FolderP &folderInit, NNTPviewItem *parent
362 351
363void NNTPfolderItem::refresh(QValueList<RecMailP>&target) 352void NNTPfolderItem::refresh(QValueList<RecMailP>&target)
364{ 353{
365 if (folder->may_select()) 354 if (folder->may_select())
366 nntp->getWrapper()->listMessages( folder->getName(),target ); 355 nntp->getWrapper()->listMessages( folder->getName(),target );
367} 356}
368 357
369RECBODYP NNTPfolderItem::fetchBody(const RecMailP&aMail) 358RECBODYP NNTPfolderItem::fetchBody(const RecMailP&aMail)
370{ 359{
371 return nntp->getWrapper()->fetchBody(aMail); 360 return nntp->getWrapper()->fetchBody(aMail);
372} 361}
373 362
374QPopupMenu * NNTPfolderItem::getContextMenu() 363QMap<int,QString> NNTPfolderItem::folderMenu()
375{ 364{
376 QPopupMenu *m = new QPopupMenu(0); 365 QMap<int,QString> _entries;
377 if (m) 366 _entries[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName);
378 { 367 _entries[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Copy all postings",contextName);
379 m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER); 368 return _entries;
380 m->insertItem(QObject::tr("Copy all postings",contextName),FOLDER_MENU_MOVE_MAILS);
381 }
382 return m;
383} 369}
384 370
385void NNTPfolderItem::downloadMails() 371void NNTPfolderItem::downloadMails()
386{ 372{
387 AccountView*bl = nntp->accountView(); 373 AccountView*bl = nntp->accountView();
388 if (!bl) return; 374 if (!bl) return;
389 bl->downloadMails(folder,nntp->getWrapper()); 375 bl->downloadMails(folder,nntp->getWrapper());
390} 376}
391 377
392void NNTPfolderItem::contextMenuSelected(int which) 378bool NNTPfolderItem::contextMenuSelected(int which)
393{ 379{
394 AccountView * view = (AccountView*)listView(); 380 AccountView * view = (AccountView*)listView();
395 switch (which) 381 switch (which)
396 { 382 {
397 case FOLDER_MENU_REFRESH_HEADER: 383 case FOLDER_MENU_REFRESH_HEADER:
398 /* must be 'cause nntp lists are cached */ 384 /* must be 'cause nntp lists are cached */
399 nntp->getWrapper()->logout(); 385 nntp->getWrapper()->logout();
400 view->refreshCurrent(); 386 view->refreshCurrent();
401 break; 387 break;
402 case FOLDER_MENU_MOVE_MAILS: 388 case FOLDER_MENU_MOVE_MAILS:
403 downloadMails(); 389 downloadMails();
404 break; 390 break;
405 default: 391 default:
406 break; 392 break;
407 } 393 }
394 return false;
408} 395}
409 396
410/** 397/**
411 * IMAP Account stuff 398 * IMAP Account stuff
412 */ 399 */
413IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent ) 400IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent )
414 : AccountViewItem( parent ) 401 : AccountViewItem( parent )
415{ 402{
416 account = a; 403 account = a;
417 wrapper = AbstractMail::getWrapper( account ); 404 wrapper = AbstractMail::getWrapper( account );
418 SETPIX(PIXMAP_IMAPFOLDER); 405 SETPIX(PIXMAP_IMAPFOLDER);
419 setText( 0, account->getAccountName() ); 406 setText( 0, account->getAccountName() );
@@ -482,66 +469,59 @@ void IMAPviewItem::refreshFolders(bool force)
482 /* setup the short name */ 469 /* setup the short name */
483 item->setText(0,(*it)->getDisplayName().right((*it)->getDisplayName().length()-pos-1)); 470 item->setText(0,(*it)->getDisplayName().right((*it)->getDisplayName().length()-pos-1));
484 item = titem; 471 item = titem;
485 } 472 }
486 else 473 else
487 { 474 {
488 item = new IMAPfolderItem( (*it), this , item ); 475 item = new IMAPfolderItem( (*it), this , item );
489 } 476 }
490 } 477 }
491 delete folders; 478 delete folders;
492} 479}
493 480
494QPopupMenu * IMAPviewItem::getContextMenu() 481QMap<int,QString> IMAPviewItem::serverMenu()
495{ 482{
496 QPopupMenu *m = new QPopupMenu(0); 483 QMap<int,QString> e;
497 if (m) 484 if (!account->getOffline()) {
498 { 485 e[SERVER_MENU_DISCONNECT]=QObject::tr("Disconnect",contextName);
499 if (!account->getOffline()) 486 e[SERVER_MENU_OFFLINE]=QObject::tr("Set offline",contextName);
500 { 487 e[SERVER_MENU_REFRESH_FOLDER]=QObject::tr("Refresh folder list",contextName);
501 m->insertItem(QObject::tr("Disconnect",contextName),SERVER_MENU_DISCONNECT); 488 e[SERVER_MENU_CREATE_FOLDER]=QObject::tr("Create new folder",contextName);
502 m->insertItem(QObject::tr("Set offline",contextName),SERVER_MENU_OFFLINE); 489 } else {
503 m->insertSeparator(); 490 e[SERVER_MENU_OFFLINE]=QObject::tr("Set online",contextName);
504 m->insertItem(QObject::tr("Refresh folder list",contextName),SERVER_MENU_REFRESH_FOLDER);
505 m->insertItem(QObject::tr("Create new folder",contextName),SERVER_MENU_CREATE_FOLDER);
506 }
507 else
508 {
509 m->insertItem(QObject::tr("Set online",contextName),SERVER_MENU_OFFLINE);
510 }
511 } 491 }
512 return m; 492 return e;
513} 493}
514 494
515void IMAPviewItem::createNewFolder() 495void IMAPviewItem::createNewFolder()
516{ 496{
517 Newmdirdlg ndirdlg; 497 Newmdirdlg ndirdlg;
518 if ( QPEApplication::execDialog( &ndirdlg )) 498 if ( QPEApplication::execDialog( &ndirdlg ))
519 { 499 {
520 QString ndir = ndirdlg.Newdir(); 500 QString ndir = ndirdlg.Newdir();
521 bool makesubs = ndirdlg.subpossible(); 501 bool makesubs = ndirdlg.subpossible();
522 QString delemiter = "/"; 502 QString delemiter = "/";
523 IMAPfolderItem*item = (IMAPfolderItem*)firstChild(); 503 IMAPfolderItem*item = (IMAPfolderItem*)firstChild();
524 if (item) 504 if (item)
525 { 505 {
526 delemiter = item->Delemiter(); 506 delemiter = item->Delemiter();
527 } 507 }
528 if (wrapper->createMbox(ndir,0,delemiter,makesubs)) 508 if (wrapper->createMbox(ndir,0,delemiter,makesubs))
529 { 509 {
530 refreshFolders(true); 510 refreshFolders(true);
531 } 511 }
532 } 512 }
533} 513}
534 514
535void IMAPviewItem::contextMenuSelected(int id) 515bool IMAPviewItem::contextMenuSelected(int id)
536{ 516{
537 odebug << "Id selected: " << id << "" << oendl; 517 odebug << "Id selected: " << id << "" << oendl;
538 switch (id) 518 switch (id)
539 { 519 {
540 case SERVER_MENU_REFRESH_FOLDER: 520 case SERVER_MENU_REFRESH_FOLDER:
541 refreshFolders(true); 521 refreshFolders(true);
542 break; 522 break;
543 case SERVER_MENU_CREATE_FOLDER: 523 case SERVER_MENU_CREATE_FOLDER:
544 createNewFolder(); 524 createNewFolder();
545 break; 525 break;
546 case SERVER_MENU_DISCONNECT: 526 case SERVER_MENU_DISCONNECT:
547 removeChilds(); 527 removeChilds();
@@ -552,24 +532,25 @@ void IMAPviewItem::contextMenuSelected(int id)
552 { 532 {
553 removeChilds(); 533 removeChilds();
554 wrapper->logout(); 534 wrapper->logout();
555 } 535 }
556 account->setOffline(!account->getOffline()); 536 account->setOffline(!account->getOffline());
557 account->save(); 537 account->save();
558 SETPIX(PIXMAP_IMAPFOLDER); 538 SETPIX(PIXMAP_IMAPFOLDER);
559 refreshFolders(false); 539 refreshFolders(false);
560 break; 540 break;
561 default: 541 default:
562 break; 542 break;
563 } 543 }
544 return false;
564} 545}
565 546
566RECBODYP IMAPviewItem::fetchBody(const RecMailP&) 547RECBODYP IMAPviewItem::fetchBody(const RecMailP&)
567{ 548{
568 return new RecBody(); 549 return new RecBody();
569} 550}
570 551
571bool IMAPviewItem::offline() 552bool IMAPviewItem::offline()
572{ 553{
573 return account->getOffline(); 554 return account->getOffline();
574} 555}
575 556
@@ -619,121 +600,118 @@ void IMAPfolderItem::refresh(QValueList<RecMailP>&target)
619 } 600 }
620 else 601 else
621 { 602 {
622 target.clear(); 603 target.clear();
623 } 604 }
624} 605}
625 606
626RECBODYP IMAPfolderItem::fetchBody(const RecMailP&aMail) 607RECBODYP IMAPfolderItem::fetchBody(const RecMailP&aMail)
627{ 608{
628 return imap->getWrapper()->fetchBody(aMail); 609 return imap->getWrapper()->fetchBody(aMail);
629} 610}
630 611
631QPopupMenu * IMAPfolderItem::getContextMenu() 612QMap<int,QString> IMAPfolderItem::folderMenu()
632{ 613{
633 QPopupMenu *m = new QPopupMenu(0); 614 QMap<int,QString> e;
634 if (m) 615 if (folder->may_select()) {
635 { 616 e[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName);
636 if (folder->may_select()) 617 e[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copy all mails",contextName);
637 { 618 e[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName);
638 m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER);
639 m->insertItem(QObject::tr("Move/Copy all mails",contextName),FOLDER_MENU_MOVE_MAILS);
640 m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS);
641 }
642 if (folder->no_inferior()==false)
643 {
644 m->insertItem(QObject::tr("Create new subfolder",contextName),FOLDER_MENU_NEW_SUBFOLDER);
645 }
646 if (folder->getDisplayName().lower()!="inbox")
647 {
648 m->insertItem(QObject::tr("Delete folder",contextName),FOLDER_MENU_DELETE_FOLDER);
649 }
650 } 619 }
651 return m; 620 if (folder->no_inferior()==false) {
621 e[FOLDER_MENU_NEW_SUBFOLDER]=QObject::tr("Create new subfolder",contextName);
622 }
623 if (folder->getDisplayName().lower()!="inbox") {
624 e[FOLDER_MENU_DELETE_FOLDER]=QObject::tr("Delete folder",contextName);
625 }
626 return e;
652} 627}
653 628
654void IMAPfolderItem::createNewFolder() 629void IMAPfolderItem::createNewFolder()
655{ 630{
656 Newmdirdlg ndirdlg; 631 Newmdirdlg ndirdlg;
657 if ( QPEApplication::execDialog( &ndirdlg ) ) 632 if ( QPEApplication::execDialog( &ndirdlg ) )
658 { 633 {
659 QString ndir = ndirdlg.Newdir(); 634 QString ndir = ndirdlg.Newdir();
660 bool makesubs = ndirdlg.subpossible(); 635 bool makesubs = ndirdlg.subpossible();
661 QString delemiter = Delemiter(); 636 QString delemiter = Delemiter();
662 if (imap->wrapper->createMbox(ndir,folder,delemiter,makesubs)) 637 if (imap->wrapper->createMbox(ndir,folder,delemiter,makesubs))
663 { 638 {
664 imap->refreshFolders(true); 639 imap->refreshFolders(true);
665 } 640 }
666 } 641 }
667} 642}
668 643
669void IMAPfolderItem::deleteFolder() 644bool IMAPfolderItem::deleteFolder()
670{ 645{
671 int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), 646 int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName),
672 QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), 647 QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()),
673 QObject::tr("Yes",contextName), 648 QObject::tr("Yes",contextName),
674 QObject::tr("No",contextName),QString::null,1,1); 649 QObject::tr("No",contextName),QString::null,1,1);
675 odebug << "Auswahl: " << yesno << "" << oendl; 650 odebug << "Auswahl: " << yesno << "" << oendl;
676 if (yesno == 0) 651 if (yesno == 0)
677 { 652 {
678 if (imap->getWrapper()->deleteMbox(folder)) 653 if (imap->getWrapper()->deleteMbox(folder))
679 { 654 {
680 QListView*v=listView(); 655 QListView*v=listView();
681 IMAPviewItem * box = imap; 656 IMAPviewItem * box = imap;
682 /* be carefull - after that this object is destroyd so don't use 657 /* be carefull - after that this object is destroyd so don't use
683 * any member of it after that call!!*/ 658 * any member of it after that call!!*/
684 imap->refreshFolders(true); 659 imap->refreshFolders(true);
685 if (v) 660 if (v)
686 { 661 {
687 v->setSelected(box,true); 662 v->setSelected(box,true);
688 } 663 }
664 return true;
689 } 665 }
690 } 666 }
667 return false;
691} 668}
692 669
693void IMAPfolderItem::downloadMails() 670void IMAPfolderItem::downloadMails()
694{ 671{
695 AccountView*bl = imap->accountView(); 672 AccountView*bl = imap->accountView();
696 if (!bl) return; 673 if (!bl) return;
697 bl->downloadMails(folder,imap->getWrapper()); 674 bl->downloadMails(folder,imap->getWrapper());
698} 675}
699 676
700void IMAPfolderItem::contextMenuSelected(int id) 677bool IMAPfolderItem::contextMenuSelected(int id)
701{ 678{
702 odebug << "Selected id: " << id << "" << oendl; 679 odebug << "Selected id: " << id << "" << oendl;
703 AccountView * view = (AccountView*)listView(); 680 AccountView * view = (AccountView*)listView();
704 switch(id) 681 switch(id)
705 { 682 {
706 case FOLDER_MENU_REFRESH_HEADER: 683 case FOLDER_MENU_REFRESH_HEADER:
707 view->refreshCurrent(); 684 view->refreshCurrent();
708 break; 685 break;
709 case FOLDER_MENU_DELETE_ALL_MAILS: 686 case FOLDER_MENU_DELETE_ALL_MAILS:
710 deleteAllMail(imap->getWrapper(),folder); 687 deleteAllMail(imap->getWrapper(),folder);
711 break; 688 break;
712 case FOLDER_MENU_NEW_SUBFOLDER: 689 case FOLDER_MENU_NEW_SUBFOLDER:
713 if (folder->no_inferior()==false) { 690 if (folder->no_inferior()==false) {
714 createNewFolder(); 691 createNewFolder();
715 } 692 }
716 break; 693 break;
717 case FOLDER_MENU_DELETE_FOLDER: 694 case FOLDER_MENU_DELETE_FOLDER:
718 if (folder->getDisplayName().lower()!="inbox") { 695 if (folder->getDisplayName().lower()!="inbox") {
719 deleteFolder(); 696 return deleteFolder();
720 } 697 }
721 break; 698 break;
722 case FOLDER_MENU_MOVE_MAILS: 699 case FOLDER_MENU_MOVE_MAILS:
723 downloadMails(); 700 downloadMails();
724 break; 701 break;
725 default: 702 default:
726 break; 703 break;
727 } 704 }
705 return false;
728} 706}
729 707
730/** 708/**
731 * MH Account stuff 709 * MH Account stuff
732 */ 710 */
733/* MH is a little bit different - the top folder can contains messages other than in IMAP and 711/* MH is a little bit different - the top folder can contains messages other than in IMAP and
734 POP3 and MBOX */ 712 POP3 and MBOX */
735MHviewItem::MHviewItem( const QString&aPath, AccountView *parent ) 713MHviewItem::MHviewItem( const QString&aPath, AccountView *parent )
736 : AccountViewItem( parent ) 714 : AccountViewItem( parent )
737{ 715{
738 m_Path = aPath; 716 m_Path = aPath;
739 /* be carefull - the space within settext is wanted - thats why the string twice */ 717 /* be carefull - the space within settext is wanted - thats why the string twice */
@@ -803,35 +781,39 @@ void MHviewItem::refresh(bool force)
803 } 781 }
804 item->setSelectable((*it)->may_select()); 782 item->setSelectable((*it)->may_select());
805 } 783 }
806 delete folders; 784 delete folders;
807} 785}
808 786
809RECBODYP MHviewItem::fetchBody( const RecMailP &mail ) 787RECBODYP MHviewItem::fetchBody( const RecMailP &mail )
810{ 788{
811 odebug << "MH fetchBody" << oendl; 789 odebug << "MH fetchBody" << oendl;
812 return wrapper->fetchBody( mail ); 790 return wrapper->fetchBody( mail );
813} 791}
814 792
815QPopupMenu * MHviewItem::getContextMenu() 793QMap<int,QString> MHviewItem::serverMenu()
816{ 794{
817 QPopupMenu *m = new QPopupMenu(0); 795 QMap<int,QString> e;
818 if (m) 796 e[SERVER_MENU_REFRESH_FOLDER]=QObject::tr("Refresh folder list",contextName);
819 { 797 return e;
820 m->insertItem(QObject::tr("Refresh folder list",contextName),SERVER_MENU_REFRESH_FOLDER); 798}
821 m->insertItem(QObject::tr("Create new folder",contextName),FOLDER_MENU_NEW_SUBFOLDER); 799
822 m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS); 800QMap<int,QString> MHviewItem::folderMenu()
823 m->insertItem(QObject::tr("Move/Copie all mails",contextName),FOLDER_MENU_MOVE_MAILS); 801{
824 } 802 QMap<int,QString> e;
825 return m; 803 e[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName);
804 e[FOLDER_MENU_NEW_SUBFOLDER]=QObject::tr("Create new folder",contextName);
805 e[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName);
806 e[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copie all mails",contextName);
807 return e;
826} 808}
827 809
828void MHviewItem::createFolder() 810void MHviewItem::createFolder()
829{ 811{
830 Newmdirdlg ndirdlg(0,0,true); 812 Newmdirdlg ndirdlg(0,0,true);
831 if ( QPEApplication::execDialog( &ndirdlg ) ) 813 if ( QPEApplication::execDialog( &ndirdlg ) )
832 { 814 {
833 QString ndir = ndirdlg.Newdir(); 815 QString ndir = ndirdlg.Newdir();
834 if (wrapper->createMbox(ndir)) 816 if (wrapper->createMbox(ndir))
835 { 817 {
836 refresh(true); 818 refresh(true);
837 } 819 }
@@ -841,49 +823,50 @@ void MHviewItem::createFolder()
841void MHviewItem::downloadMails() 823void MHviewItem::downloadMails()
842{ 824{
843 AccountView*bl = accountView(); 825 AccountView*bl = accountView();
844 if (!bl) return; 826 if (!bl) return;
845 bl->downloadMails(folder,getWrapper()); 827 bl->downloadMails(folder,getWrapper());
846} 828}
847 829
848QStringList MHviewItem::subFolders() 830QStringList MHviewItem::subFolders()
849{ 831{
850 return currentFolders; 832 return currentFolders;
851} 833}
852 834
853void MHviewItem::contextMenuSelected(int which) 835bool MHviewItem::contextMenuSelected(int which)
854{ 836{
855 AccountView*view = 0; 837 AccountView*view = 0;
856 838
857 switch (which) 839 switch (which)
858 { 840 {
859 case SERVER_MENU_REFRESH_FOLDER: 841 case SERVER_MENU_REFRESH_FOLDER:
860 refresh(true); 842 refresh(true);
861 break; 843 break;
862 case FOLDER_MENU_NEW_SUBFOLDER: 844 case FOLDER_MENU_NEW_SUBFOLDER:
863 createFolder(); 845 createFolder();
864 break; 846 break;
865 case FOLDER_MENU_DELETE_ALL_MAILS: 847 case FOLDER_MENU_DELETE_ALL_MAILS:
866 deleteAllMail(getWrapper(),folder); 848 deleteAllMail(getWrapper(),folder);
867 break; 849 break;
868 case FOLDER_MENU_MOVE_MAILS: 850 case FOLDER_MENU_MOVE_MAILS:
869 downloadMails(); 851 downloadMails();
870 break; 852 break;
871 case FOLDER_MENU_REFRESH_HEADER: 853 case FOLDER_MENU_REFRESH_HEADER:
872 view = (AccountView*)listView(); 854 view = (AccountView*)listView();
873 if (view) view->refreshCurrent(); 855 if (view) view->refreshCurrent();
874 break; 856 break;
875 default: 857 default:
876 break; 858 break;
877 } 859 }
860 return false;
878} 861}
879 862
880MHfolderItem::~MHfolderItem() 863MHfolderItem::~MHfolderItem()
881{} 864{}
882 865
883MHfolderItem::MHfolderItem( const FolderP &folderInit, MHviewItem *parent , QListViewItem*after ) 866MHfolderItem::MHfolderItem( const FolderP &folderInit, MHviewItem *parent , QListViewItem*after )
884 : AccountViewItem(folderInit, parent,after ) 867 : AccountViewItem(folderInit, parent,after )
885{ 868{
886 mbox = parent; 869 mbox = parent;
887 initName(); 870 initName();
888} 871}
889 872
@@ -929,60 +912,59 @@ const FolderP&MHfolderItem::getFolder()const
929 912
930void MHfolderItem::refresh(QValueList<RecMailP>&target) 913void MHfolderItem::refresh(QValueList<RecMailP>&target)
931{ 914{
932 if (folder->may_select()) 915 if (folder->may_select())
933 mbox->getWrapper()->listMessages( folder->getName(),target ); 916 mbox->getWrapper()->listMessages( folder->getName(),target );
934} 917}
935 918
936RECBODYP MHfolderItem::fetchBody(const RecMailP&aMail) 919RECBODYP MHfolderItem::fetchBody(const RecMailP&aMail)
937{ 920{
938 return mbox->getWrapper()->fetchBody(aMail); 921 return mbox->getWrapper()->fetchBody(aMail);
939} 922}
940 923
941void MHfolderItem::deleteFolder() 924bool MHfolderItem::deleteFolder()
942{ 925{
943 int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), 926 int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName),
944 QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), 927 QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()),
945 QObject::tr("Yes",contextName), 928 QObject::tr("Yes",contextName),
946 QObject::tr("No",contextName),QString::null,1,1); 929 QObject::tr("No",contextName),QString::null,1,1);
947 odebug << "Auswahl: " << yesno << "" << oendl; 930 odebug << "Auswahl: " << yesno << "" << oendl;
948 if (yesno == 0) 931 if (yesno == 0)
949 { 932 {
950 if (mbox->getWrapper()->deleteMbox(folder)) 933 if (mbox->getWrapper()->deleteMbox(folder))
951 { 934 {
952 QListView*v=listView(); 935 QListView*v=listView();
953 MHviewItem * box = mbox; 936 MHviewItem * box = mbox;
954 /* be carefull - after that this object is destroyd so don't use 937 /* be carefull - after that this object is destroyd so don't use
955 * any member of it after that call!!*/ 938 * any member of it after that call!!*/
956 mbox->refresh(true); 939 mbox->refresh(true);
957 if (v) 940 if (v)
958 { 941 {
959 v->setSelected(box,true); 942 v->setSelected(box,true);
960 } 943 }
944 return true;
961 } 945 }
962 } 946 }
947 return false;
963} 948}
964 949
965QPopupMenu * MHfolderItem::getContextMenu() 950QMap<int,QString> MHfolderItem::folderMenu()
966{ 951{
967 QPopupMenu *m = new QPopupMenu(0); 952 QMap<int,QString> e;
968 if (m) 953 e[FOLDER_MENU_NEW_SUBFOLDER]=QObject::tr("Create new subfolder",contextName);
969 { 954 e[FOLDER_MENU_REFRESH_HEADER]=QObject::tr("Refresh header list",contextName);
970 m->insertItem(QObject::tr("Create new subfolder",contextName),FOLDER_MENU_NEW_SUBFOLDER); 955 e[FOLDER_MENU_MOVE_MAILS]=QObject::tr("Move/Copie all mails",contextName);
971 m->insertItem(QObject::tr("Refresh header list",contextName),FOLDER_MENU_REFRESH_HEADER); 956 e[FOLDER_MENU_DELETE_ALL_MAILS]=QObject::tr("Delete all mails",contextName);
972 m->insertItem(QObject::tr("Move/Copie all mails",contextName),FOLDER_MENU_MOVE_MAILS); 957 e[FOLDER_MENU_DELETE_FOLDER]=QObject::tr("Delete folder",contextName);
973 m->insertItem(QObject::tr("Delete all mails",contextName),FOLDER_MENU_DELETE_ALL_MAILS); 958 return e;
974 m->insertItem(QObject::tr("Delete folder",contextName),FOLDER_MENU_DELETE_FOLDER);
975 }
976 return m;
977} 959}
978 960
979void MHfolderItem::downloadMails() 961void MHfolderItem::downloadMails()
980{ 962{
981 AccountView*bl = mbox->accountView(); 963 AccountView*bl = mbox->accountView();
982 if (!bl) return; 964 if (!bl) return;
983 bl->downloadMails(folder,mbox->getWrapper()); 965 bl->downloadMails(folder,mbox->getWrapper());
984} 966}
985 967
986void MHfolderItem::createFolder() 968void MHfolderItem::createFolder()
987{ 969{
988 Newmdirdlg ndirdlg(0,0,true); 970 Newmdirdlg ndirdlg(0,0,true);
@@ -995,48 +977,49 @@ void MHfolderItem::createFolder()
995 MHviewItem * box = mbox; 977 MHviewItem * box = mbox;
996 /* be carefull - after that this object is destroyd so don't use 978 /* be carefull - after that this object is destroyd so don't use
997 * any member of it after that call!!*/ 979 * any member of it after that call!!*/
998 mbox->refresh(true); 980 mbox->refresh(true);
999 if (v) 981 if (v)
1000 { 982 {
1001 v->setSelected(box,true); 983 v->setSelected(box,true);
1002 } 984 }
1003 } 985 }
1004 } 986 }
1005} 987}
1006 988
1007void MHfolderItem::contextMenuSelected(int which) 989bool MHfolderItem::contextMenuSelected(int which)
1008{ 990{
1009 AccountView*view = 0; 991 AccountView*view = 0;
1010 switch(which) 992 switch(which)
1011 { 993 {
1012 case FOLDER_MENU_DELETE_ALL_MAILS: 994 case FOLDER_MENU_DELETE_ALL_MAILS:
1013 deleteAllMail(mbox->getWrapper(),folder); 995 deleteAllMail(mbox->getWrapper(),folder);
1014 break; 996 break;
1015 case FOLDER_MENU_DELETE_FOLDER: 997 case FOLDER_MENU_DELETE_FOLDER:
1016 deleteFolder(); 998 return deleteFolder();
1017 break; 999 break;
1018 case FOLDER_MENU_MOVE_MAILS: 1000 case FOLDER_MENU_MOVE_MAILS:
1019 downloadMails(); 1001 downloadMails();
1020 break; 1002 break;
1021 case FOLDER_MENU_NEW_SUBFOLDER: 1003 case FOLDER_MENU_NEW_SUBFOLDER:
1022 createFolder(); 1004 createFolder();
1023 break; 1005 break;
1024 case FOLDER_MENU_REFRESH_HEADER: 1006 case FOLDER_MENU_REFRESH_HEADER:
1025 view = (AccountView*)listView(); 1007 view = (AccountView*)listView();
1026 if (view) view->refreshCurrent(); 1008 if (view) view->refreshCurrent();
1027 break; 1009 break;
1028 default: 1010 default:
1029 break; 1011 break;
1030 } 1012 }
1013 return false;
1031} 1014}
1032 1015
1033bool MHfolderItem::isDraftfolder() 1016bool MHfolderItem::isDraftfolder()
1034{ 1017{
1035 if (folder && folder->getName()==AbstractMail::defaultLocalfolder()+"/"+AbstractMail::draftFolder()) return true; 1018 if (folder && folder->getName()==AbstractMail::defaultLocalfolder()+"/"+AbstractMail::draftFolder()) return true;
1036 return false; 1019 return false;
1037} 1020}
1038 1021
1039/** 1022/**
1040 * Generic stuff 1023 * Generic stuff
1041 */ 1024 */
1042 1025
@@ -1141,12 +1124,41 @@ AccountViewItem*AccountViewItem::findSubItem(const QString&path,AccountViewItem*
1141 break; 1124 break;
1142 } 1125 }
1143 } 1126 }
1144 pitem=(AccountViewItem*)pitem->nextSibling(); 1127 pitem=(AccountViewItem*)pitem->nextSibling();
1145 } 1128 }
1146 return pitem; 1129 return pitem;
1147} 1130}
1148 1131
1149bool AccountViewItem::isDraftfolder() 1132bool AccountViewItem::isDraftfolder()
1150{ 1133{
1151 return false; 1134 return false;
1152} 1135}
1136
1137QMap<int,QString> AccountViewItem::serverMenu()
1138{
1139 return QMap<int,QString>();
1140}
1141
1142QMap<int,QString> AccountViewItem::folderMenu()
1143{
1144 return QMap<int,QString>();
1145}
1146
1147QPopupMenu * AccountViewItem::getContextMenu()
1148{
1149 QPopupMenu *m = new QPopupMenu(0);
1150 if (m)
1151 {
1152 QMap<int,QString> entries;
1153 entries = folderMenu();
1154 QMap<int,QString>::Iterator it;
1155 for (it=entries.begin();it!=entries.end();++it) {
1156 m->insertItem(it.data(),it.key());
1157 }
1158 entries = serverMenu();
1159 for (it=entries.begin();it!=entries.end();++it) {
1160 m->insertItem(it.data(),it.key());
1161 }
1162 }
1163 return m;
1164}