summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/.cvsignore3
-rw-r--r--noncore/net/mail/accountitem.cpp15
-rw-r--r--noncore/net/mail/accountitem.h1
-rw-r--r--noncore/net/mail/mail.pro11
-rw-r--r--noncore/net/mail/nntpgroups.cpp57
-rw-r--r--noncore/net/mail/nntpgroups.h33
-rw-r--r--noncore/net/mail/nntpgroupsdlg.cpp29
-rw-r--r--noncore/net/mail/nntpgroupsdlg.h24
-rw-r--r--noncore/net/mail/nntpgroupsui.ui88
9 files changed, 256 insertions, 5 deletions
diff --git a/noncore/net/mail/.cvsignore b/noncore/net/mail/.cvsignore
index 4957719..3819f80 100644
--- a/noncore/net/mail/.cvsignore
+++ b/noncore/net/mail/.cvsignore
@@ -1,31 +1,32 @@
1.moc 1.moc
2Makefile 2Makefile
3addresspickerui.cpp 3addresspickerui.cpp
4addresspickerui.h 4addresspickerui.h
5composemailui.cpp 5composemailui.cpp
6composemailui.h 6composemailui.h
7editaccountsui.cpp 7editaccountsui.cpp
8editaccountsui.h 8editaccountsui.h
9imapconfigui.cpp 9imapconfigui.cpp
10imapconfigui.h 10imapconfigui.h
11logindialogui.cpp 11logindialogui.cpp
12logindialogui.h 12logindialogui.h
13nntpconfigui.cpp 13nntpconfigui.cpp
14nntpconfigui.h 14nntpconfigui.h
15pop3configui.cpp 15pop3configui.cpp
16pop3configui.h 16pop3configui.h
17selectmailtypeui.cpp 17selectmailtypeui.cpp
18selectmailtypeui.h 18selectmailtypeui.h
19smtpconfigui.cpp 19smtpconfigui.cpp
20smtpconfigui.h 20smtpconfigui.h
21settingsdialogui.cpp 21settingsdialogui.cpp
22settingsdialogui.h 22settingsdialogui.h
23statuswidgetui.cpp 23statuswidgetui.cpp
24statuswidgetui.h 24statuswidgetui.h
25newmaildirui.cpp 25newmaildirui.cpp
26newmaildirui.h 26newmaildirui.h
27sendmailprogressui.cpp 27sendmailprogressui.cpp
28sendmailprogressui.h 28sendmailprogressui.h
29selectstoreui.cpp 29selectstoreui.cpp
30selectstoreui.h 30selectstoreui.h
31 31nntpgroupsui.cpp
32nntpgroupsui.h
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp
index e925d8d..0d636a4 100644
--- a/noncore/net/mail/accountitem.cpp
+++ b/noncore/net/mail/accountitem.cpp
@@ -1,100 +1,101 @@
1 1
2#include "accountitem.h" 2#include "accountitem.h"
3#include "accountview.h" 3#include "accountview.h"
4#include "newmaildir.h" 4#include "newmaildir.h"
5#include "nntpgroupsdlg.h"
5#include "defines.h" 6#include "defines.h"
6 7
7/* OPIE */ 8/* OPIE */
8#include <libmailwrapper/mailtypes.h> 9#include <libmailwrapper/mailtypes.h>
9#include <libmailwrapper/abstractmail.h> 10#include <libmailwrapper/abstractmail.h>
10#include <libmailwrapper/mailwrapper.h> 11#include <libmailwrapper/mailwrapper.h>
11#include <qpe/qpeapplication.h> 12#include <qpe/qpeapplication.h>
12 13
13/* QT */ 14/* QT */
14#include <qpopupmenu.h> 15#include <qpopupmenu.h>
15#include <qmessagebox.h> 16#include <qmessagebox.h>
16 17
17#define SETPIX(x) if (!account->getOffline()) {setPixmap( 0,x);} else {setPixmap( 0, PIXMAP_OFFLINE );} 18#define SETPIX(x) if (!account->getOffline()) {setPixmap( 0,x);} else {setPixmap( 0, PIXMAP_OFFLINE );}
18/** 19/**
19 * POP3 Account stuff 20 * POP3 Account stuff
20 */ 21 */
21POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent ) 22POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent )
22 : AccountViewItem( parent ) 23 : AccountViewItem( parent )
23{ 24{
24 account = a; 25 account = a;
25 wrapper = AbstractMail::getWrapper( account ); 26 wrapper = AbstractMail::getWrapper( account );
26 SETPIX(PIXMAP_POP3FOLDER); 27 SETPIX(PIXMAP_POP3FOLDER);
27#if 0 28#if 0
28 if (!account->getOffline()) 29 if (!account->getOffline())
29 { 30 {
30 setPixmap( 0, ); 31 setPixmap( 0, );
31 } 32 }
32 else 33 else
33 { 34 {
34 setPixmap( 0, PIXMAP_OFFLINE ); 35 setPixmap( 0, PIXMAP_OFFLINE );
35 } 36 }
36#endif 37#endif
37 setText( 0, account->getAccountName() ); 38 setText( 0, account->getAccountName() );
38 setOpen( true ); 39 setOpen( true );
39} 40}
40 41
41POP3viewItem::~POP3viewItem() 42POP3viewItem::~POP3viewItem()
42{ 43{
43 delete wrapper; 44 delete wrapper;
44} 45}
45 46
46AbstractMail *POP3viewItem::getWrapper() 47AbstractMail *POP3viewItem::getWrapper()
47{ 48{
48 return wrapper; 49 return wrapper;
49} 50}
50 51
51void POP3viewItem::refresh( QList<RecMail> & ) 52void POP3viewItem::refresh( QList<RecMail> & )
52{ 53{
53 refresh(); 54 refresh();
54} 55}
55 56
56void POP3viewItem::refresh() 57void POP3viewItem::refresh()
57{ 58{
58 if (account->getOffline()) return; 59 if (account->getOffline()) return;
59 QList<Folder> *folders = wrapper->listFolders(); 60 QList<Folder> *folders = wrapper->listFolders();
60 QListViewItem *child = firstChild(); 61 QListViewItem *child = firstChild();
61 while ( child ) 62 while ( child )
62 { 63 {
63 QListViewItem *tmp = child; 64 QListViewItem *tmp = child;
64 child = child->nextSibling(); 65 child = child->nextSibling();
65 delete tmp; 66 delete tmp;
66 } 67 }
67 Folder *it; 68 Folder *it;
68 QListViewItem*item = 0; 69 QListViewItem*item = 0;
69 for ( it = folders->first(); it; it = folders->next() ) 70 for ( it = folders->first(); it; it = folders->next() )
70 { 71 {
71 item = new POP3folderItem( it, this , item ); 72 item = new POP3folderItem( it, this , item );
72 item->setSelectable(it->may_select()); 73 item->setSelectable(it->may_select());
73 } 74 }
74 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 75 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
75 folders->setAutoDelete(false); 76 folders->setAutoDelete(false);
76 delete folders; 77 delete folders;
77} 78}
78 79
79RecBody POP3viewItem::fetchBody( const RecMail &mail ) 80RecBody POP3viewItem::fetchBody( const RecMail &mail )
80{ 81{
81 qDebug( "POP3 fetchBody" ); 82 qDebug( "POP3 fetchBody" );
82 return wrapper->fetchBody( mail ); 83 return wrapper->fetchBody( mail );
83} 84}
84 85
85QPopupMenu * POP3viewItem::getContextMenu() 86QPopupMenu * POP3viewItem::getContextMenu()
86{ 87{
87 QPopupMenu *m = new QPopupMenu(0); 88 QPopupMenu *m = new QPopupMenu(0);
88 if (m) 89 if (m)
89 { 90 {
90 if (!account->getOffline()) 91 if (!account->getOffline())
91 { 92 {
92 m->insertItem(QObject::tr("Disconnect",contextName),0); 93 m->insertItem(QObject::tr("Disconnect",contextName),0);
93 m->insertItem(QObject::tr("Set offline",contextName),1); 94 m->insertItem(QObject::tr("Set offline",contextName),1);
94 } 95 }
95 else 96 else
96 { 97 {
97 m->insertItem(QObject::tr("Set online",contextName),1); 98 m->insertItem(QObject::tr("Set online",contextName),1);
98 } 99 }
99 } 100 }
100 return m; 101 return m;
@@ -191,276 +192,288 @@ void POP3folderItem::contextMenuSelected(int which)
191 AccountView * view = (AccountView*)listView(); 192 AccountView * view = (AccountView*)listView();
192 switch (which) 193 switch (which)
193 { 194 {
194 case 0: 195 case 0:
195 /* must be 'cause pop3 lists are cached */ 196 /* must be 'cause pop3 lists are cached */
196 pop3->getWrapper()->logout(); 197 pop3->getWrapper()->logout();
197 view->refreshCurrent(); 198 view->refreshCurrent();
198 break; 199 break;
199 case 1: 200 case 1:
200 deleteAllMail(pop3->getWrapper(),folder); 201 deleteAllMail(pop3->getWrapper(),folder);
201 break; 202 break;
202 case 2: 203 case 2:
203 downloadMails(); 204 downloadMails();
204 break; 205 break;
205 default: 206 default:
206 break; 207 break;
207 } 208 }
208} 209}
209 210
210/** 211/**
211 * NNTP Account stuff 212 * NNTP Account stuff
212 */ 213 */
213NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent ) 214NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent )
214 : AccountViewItem( parent ) 215 : AccountViewItem( parent )
215{ 216{
216 account = a; 217 account = a;
217 wrapper = AbstractMail::getWrapper( account ); 218 wrapper = AbstractMail::getWrapper( account );
218 //FIXME 219 //FIXME
219 SETPIX(PIXMAP_POP3FOLDER); 220 SETPIX(PIXMAP_POP3FOLDER);
220#if 0 221#if 0
221 if (!account->getOffline()) 222 if (!account->getOffline())
222 { 223 {
223 setPixmap( 0, ); 224 setPixmap( 0, );
224 } 225 }
225 else 226 else
226 { 227 {
227 setPixmap( 0, PIXMAP_OFFLINE ); 228 setPixmap( 0, PIXMAP_OFFLINE );
228 } 229 }
229#endif 230#endif
230 setText( 0, account->getAccountName() ); 231 setText( 0, account->getAccountName() );
231 setOpen( true ); 232 setOpen( true );
232} 233}
233 234
234NNTPviewItem::~NNTPviewItem() 235NNTPviewItem::~NNTPviewItem()
235{ 236{
236 delete wrapper; 237 delete wrapper;
237} 238}
238 239
239AbstractMail *NNTPviewItem::getWrapper() 240AbstractMail *NNTPviewItem::getWrapper()
240{ 241{
241 return wrapper; 242 return wrapper;
242} 243}
243 244
244void NNTPviewItem::refresh( QList<RecMail> & ) 245void NNTPviewItem::refresh( QList<RecMail> & )
245{ 246{
246 refresh(); 247 refresh();
247} 248}
248 249
249void NNTPviewItem::refresh() 250void NNTPviewItem::refresh()
250{ 251{
251 if (account->getOffline()) return; 252 if (account->getOffline()) return;
252 QList<Folder> *folders = wrapper->listFolders(); 253 QList<Folder> *folders = wrapper->listFolders();
253 QListViewItem *child = firstChild(); 254 QListViewItem *child = firstChild();
254 while ( child ) 255 while ( child )
255 { 256 {
256 QListViewItem *tmp = child; 257 QListViewItem *tmp = child;
257 child = child->nextSibling(); 258 child = child->nextSibling();
258 delete tmp; 259 delete tmp;
259 } 260 }
260 Folder *it; 261 Folder *it;
261 QListViewItem*item = 0; 262 QListViewItem*item = 0;
262 for ( it = folders->first(); it; it = folders->next() ) 263 for ( it = folders->first(); it; it = folders->next() )
263 { 264 {
264 item = new NNTPfolderItem( it, this , item ); 265 item = new NNTPfolderItem( it, this , item );
265 item->setSelectable(it->may_select()); 266 item->setSelectable(it->may_select());
266 } 267 }
267 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 268 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
268 folders->setAutoDelete(false); 269 folders->setAutoDelete(false);
269 delete folders; 270 delete folders;
270} 271}
271 272
272RecBody NNTPviewItem::fetchBody( const RecMail &mail ) 273RecBody NNTPviewItem::fetchBody( const RecMail &mail )
273{ 274{
274 qDebug( "NNTP fetchBody" ); 275 qDebug( "NNTP fetchBody" );
275 return wrapper->fetchBody( mail ); 276 return wrapper->fetchBody( mail );
276} 277}
277 278
278QPopupMenu * NNTPviewItem::getContextMenu() 279QPopupMenu * NNTPviewItem::getContextMenu()
279{ 280{
280 QPopupMenu *m = new QPopupMenu(0); 281 QPopupMenu *m = new QPopupMenu(0);
281 if (m) 282 if (m)
282 { 283 {
283 if (!account->getOffline()) 284 if (!account->getOffline())
284 { 285 {
285 m->insertItem(QObject::tr("Disconnect",contextName),0); 286 m->insertItem(QObject::tr("Disconnect",contextName),0);
286 m->insertItem(QObject::tr("Set offline",contextName),1); 287 m->insertItem(QObject::tr("Set offline",contextName),1);
288 m->insertItem(QObject::tr("(Un-)Subscribe groups",contextName),2);
287 } 289 }
288 else 290 else
289 { 291 {
290 m->insertItem(QObject::tr("Set online",contextName),1); 292 m->insertItem(QObject::tr("Set online",contextName),1);
291 } 293 }
292 } 294 }
293 return m; 295 return m;
294} 296}
295 297
298void NNTPviewItem::subscribeGroups()
299{
300 NNTPGroupsDlg dlg(account);
301 if (QPEApplication::execDialog(&dlg)== QDialog::Accepted ){
302 refresh();
303 }
304}
305
296void NNTPviewItem::disconnect() 306void NNTPviewItem::disconnect()
297{ 307{
298 QListViewItem *child = firstChild(); 308 QListViewItem *child = firstChild();
299 while ( child ) 309 while ( child )
300 { 310 {
301 QListViewItem *tmp = child; 311 QListViewItem *tmp = child;
302 child = child->nextSibling(); 312 child = child->nextSibling();
303 delete tmp; 313 delete tmp;
304 } 314 }
305 wrapper->logout(); 315 wrapper->logout();
306} 316}
307 317
308void NNTPviewItem::setOnOffline() 318void NNTPviewItem::setOnOffline()
309{ 319{
310 if (!account->getOffline()) 320 if (!account->getOffline())
311 { 321 {
312 disconnect(); 322 disconnect();
313 } 323 }
314 account->setOffline(!account->getOffline()); 324 account->setOffline(!account->getOffline());
315 account->save(); 325 account->save();
316 //FIXME 326 //FIXME
317 SETPIX(PIXMAP_POP3FOLDER); 327 SETPIX(PIXMAP_POP3FOLDER);
318 refresh(); 328 refresh();
319} 329}
320 330
321void NNTPviewItem::contextMenuSelected(int which) 331void NNTPviewItem::contextMenuSelected(int which)
322{ 332{
323 switch (which) 333 switch (which)
324 { 334 {
325 case 0: 335 case 0:
326 disconnect(); 336 disconnect();
327 break; 337 break;
328 case 1: 338 case 1:
329 setOnOffline(); 339 setOnOffline();
330 break; 340 break;
341 case 2:
342 subscribeGroups();
343 break;
331 } 344 }
332} 345}
333 346
334NNTPfolderItem::~NNTPfolderItem() 347NNTPfolderItem::~NNTPfolderItem()
335{} 348{}
336 349
337NNTPfolderItem::NNTPfolderItem( Folder *folderInit, NNTPviewItem *parent , QListViewItem*after ) 350NNTPfolderItem::NNTPfolderItem( Folder *folderInit, NNTPviewItem *parent , QListViewItem*after )
338 : AccountViewItem( parent,after ) 351 : AccountViewItem( parent,after )
339{ 352{
340 folder = folderInit; 353 folder = folderInit;
341 nntp = parent; 354 nntp = parent;
342 if (folder->getDisplayName().lower()!="inbox") 355 if (folder->getDisplayName().lower()!="inbox")
343 { 356 {
344 setPixmap( 0, PIXMAP_POP3FOLDER ); 357 setPixmap( 0, PIXMAP_POP3FOLDER );
345 } 358 }
346 else 359 else
347 { 360 {
348 setPixmap( 0, PIXMAP_INBOXFOLDER); 361 setPixmap( 0, PIXMAP_INBOXFOLDER);
349 } 362 }
350 setText( 0, folder->getDisplayName() ); 363 setText( 0, folder->getDisplayName() );
351} 364}
352 365
353void NNTPfolderItem::refresh(QList<RecMail>&target) 366void NNTPfolderItem::refresh(QList<RecMail>&target)
354{ 367{
355 if (folder->may_select()) 368 if (folder->may_select())
356 nntp->getWrapper()->listMessages( folder->getName(),target ); 369 nntp->getWrapper()->listMessages( folder->getName(),target );
357} 370}
358 371
359RecBody NNTPfolderItem::fetchBody(const RecMail&aMail) 372RecBody NNTPfolderItem::fetchBody(const RecMail&aMail)
360{ 373{
361 return nntp->getWrapper()->fetchBody(aMail); 374 return nntp->getWrapper()->fetchBody(aMail);
362} 375}
363 376
364QPopupMenu * NNTPfolderItem::getContextMenu() 377QPopupMenu * NNTPfolderItem::getContextMenu()
365{ 378{
366 QPopupMenu *m = new QPopupMenu(0); 379 QPopupMenu *m = new QPopupMenu(0);
367 if (m) 380 if (m)
368 { 381 {
369 m->insertItem(QObject::tr("Refresh header list",contextName),0); 382 m->insertItem(QObject::tr("Refresh header list",contextName),0);
370 m->insertItem(QObject::tr("Move/Copie all mails",contextName),1); 383 m->insertItem(QObject::tr("Copy all postings",contextName),1);
371 } 384 }
372 return m; 385 return m;
373} 386}
374 387
375void NNTPfolderItem::downloadMails() 388void NNTPfolderItem::downloadMails()
376{ 389{
377 AccountView*bl = nntp->accountView(); 390 AccountView*bl = nntp->accountView();
378 if (!bl) return; 391 if (!bl) return;
379 bl->downloadMails(folder,nntp->getWrapper()); 392 bl->downloadMails(folder,nntp->getWrapper());
380} 393}
381 394
382void NNTPfolderItem::contextMenuSelected(int which) 395void NNTPfolderItem::contextMenuSelected(int which)
383{ 396{
384 AccountView * view = (AccountView*)listView(); 397 AccountView * view = (AccountView*)listView();
385 switch (which) 398 switch (which)
386 { 399 {
387 case 0: 400 case 0:
388 /* must be 'cause pop3 lists are cached */ 401 /* must be 'cause pop3 lists are cached */
389 nntp->getWrapper()->logout(); 402 nntp->getWrapper()->logout();
390 view->refreshCurrent(); 403 view->refreshCurrent();
391 break; 404 break;
392 case 1: 405 case 1:
393 downloadMails(); 406 downloadMails();
394 break; 407 break;
395 default: 408 default:
396 break; 409 break;
397 } 410 }
398} 411}
399 412
400/** 413/**
401 * IMAP Account stuff 414 * IMAP Account stuff
402 */ 415 */
403IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent ) 416IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent )
404 : AccountViewItem( parent ) 417 : AccountViewItem( parent )
405{ 418{
406 account = a; 419 account = a;
407 wrapper = AbstractMail::getWrapper( account ); 420 wrapper = AbstractMail::getWrapper( account );
408 SETPIX(PIXMAP_IMAPFOLDER); 421 SETPIX(PIXMAP_IMAPFOLDER);
409 setText( 0, account->getAccountName() ); 422 setText( 0, account->getAccountName() );
410 setOpen( true ); 423 setOpen( true );
411} 424}
412 425
413IMAPviewItem::~IMAPviewItem() 426IMAPviewItem::~IMAPviewItem()
414{ 427{
415 delete wrapper; 428 delete wrapper;
416} 429}
417 430
418AbstractMail *IMAPviewItem::getWrapper() 431AbstractMail *IMAPviewItem::getWrapper()
419{ 432{
420 return wrapper; 433 return wrapper;
421} 434}
422 435
423void IMAPviewItem::refresh(QList<RecMail>&) 436void IMAPviewItem::refresh(QList<RecMail>&)
424{ 437{
425 refreshFolders(false); 438 refreshFolders(false);
426} 439}
427 440
428const QStringList&IMAPviewItem::subFolders() 441const QStringList&IMAPviewItem::subFolders()
429{ 442{
430 return currentFolders; 443 return currentFolders;
431} 444}
432 445
433void IMAPviewItem::refreshFolders(bool force) 446void IMAPviewItem::refreshFolders(bool force)
434{ 447{
435 if (childCount()>0 && force==false) return; 448 if (childCount()>0 && force==false) return;
436 if (account->getOffline()) return; 449 if (account->getOffline()) return;
437 450
438 removeChilds(); 451 removeChilds();
439 currentFolders.clear(); 452 currentFolders.clear();
440 QList<Folder> *folders = wrapper->listFolders(); 453 QList<Folder> *folders = wrapper->listFolders();
441 454
442 Folder *it; 455 Folder *it;
443 QListViewItem*item = 0; 456 QListViewItem*item = 0;
444 QListViewItem*titem = 0; 457 QListViewItem*titem = 0;
445 QString fname,del,search; 458 QString fname,del,search;
446 int pos; 459 int pos;
447 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 460 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
448 folders->setAutoDelete(false); 461 folders->setAutoDelete(false);
449 462
450 for ( it = folders->first(); it; it = folders->next() ) 463 for ( it = folders->first(); it; it = folders->next() )
451 { 464 {
452 if (it->getDisplayName().lower()=="inbox") 465 if (it->getDisplayName().lower()=="inbox")
453 { 466 {
454 item = new IMAPfolderItem( it, this , item ); 467 item = new IMAPfolderItem( it, this , item );
455 folders->remove(it); 468 folders->remove(it);
456 qDebug("inbox found"); 469 qDebug("inbox found");
457 break; 470 break;
458 } 471 }
459 } 472 }
460 for ( it = folders->first(); it; it = folders->next() ) 473 for ( it = folders->first(); it; it = folders->next() )
461 { 474 {
462 fname = it->getDisplayName(); 475 fname = it->getDisplayName();
463 currentFolders.append(it->getName()); 476 currentFolders.append(it->getName());
464 pos = fname.findRev(it->Separator()); 477 pos = fname.findRev(it->Separator());
465 if (pos != -1) 478 if (pos != -1)
466 { 479 {
diff --git a/noncore/net/mail/accountitem.h b/noncore/net/mail/accountitem.h
index a138c9b..f3c0f5d 100644
--- a/noncore/net/mail/accountitem.h
+++ b/noncore/net/mail/accountitem.h
@@ -3,192 +3,193 @@
3 3
4#include <qlistview.h> 4#include <qlistview.h>
5#include <qlist.h> 5#include <qlist.h>
6 6
7class POP3wrapper; 7class POP3wrapper;
8class RecMail; 8class RecMail;
9class RecBody; 9class RecBody;
10class QPopupMenu; 10class QPopupMenu;
11class Selectstore; 11class Selectstore;
12class AccountView; 12class AccountView;
13class POP3account; 13class POP3account;
14class NNTPaccount; 14class NNTPaccount;
15class IMAPaccount; 15class IMAPaccount;
16class AbstractMail; 16class AbstractMail;
17class Folder; 17class Folder;
18 18
19class AccountViewItem : public QListViewItem 19class AccountViewItem : public QListViewItem
20{ 20{
21 21
22public: 22public:
23 AccountViewItem( AccountView *parent ); 23 AccountViewItem( AccountView *parent );
24 AccountViewItem( QListViewItem *parent); 24 AccountViewItem( QListViewItem *parent);
25 AccountViewItem( QListViewItem *parent , QListViewItem*after ); 25 AccountViewItem( QListViewItem *parent , QListViewItem*after );
26 virtual ~AccountViewItem(); 26 virtual ~AccountViewItem();
27 virtual void refresh(QList<RecMail>&)=0; 27 virtual void refresh(QList<RecMail>&)=0;
28 virtual RecBody fetchBody(const RecMail&)=0; 28 virtual RecBody fetchBody(const RecMail&)=0;
29 virtual QPopupMenu * getContextMenu(){return 0;}; 29 virtual QPopupMenu * getContextMenu(){return 0;};
30 virtual void contextMenuSelected(int){} 30 virtual void contextMenuSelected(int){}
31 virtual AccountView*accountView(); 31 virtual AccountView*accountView();
32 virtual bool matchName(const QString&name)const; 32 virtual bool matchName(const QString&name)const;
33 33
34protected: 34protected:
35 AccountViewItem*findSubItem(const QString&path,AccountViewItem*start=0); 35 AccountViewItem*findSubItem(const QString&path,AccountViewItem*start=0);
36 virtual void init(); 36 virtual void init();
37 virtual void removeChilds(); 37 virtual void removeChilds();
38 virtual void deleteAllMail(AbstractMail*wrapper,Folder*f); 38 virtual void deleteAllMail(AbstractMail*wrapper,Folder*f);
39 static const QString contextName; 39 static const QString contextName;
40 AccountView*m_Backlink; 40 AccountView*m_Backlink;
41 Folder *folder; 41 Folder *folder;
42}; 42};
43 43
44class POP3viewItem : public AccountViewItem 44class POP3viewItem : public AccountViewItem
45{ 45{
46 46
47public: 47public:
48 POP3viewItem( POP3account *a, AccountView *parent ); 48 POP3viewItem( POP3account *a, AccountView *parent );
49 virtual ~POP3viewItem(); 49 virtual ~POP3viewItem();
50 virtual void refresh( QList<RecMail> &target ); 50 virtual void refresh( QList<RecMail> &target );
51 virtual RecBody fetchBody( const RecMail &mail ); 51 virtual RecBody fetchBody( const RecMail &mail );
52 AbstractMail *getWrapper(); 52 AbstractMail *getWrapper();
53 virtual QPopupMenu * getContextMenu(); 53 virtual QPopupMenu * getContextMenu();
54 virtual void contextMenuSelected(int); 54 virtual void contextMenuSelected(int);
55 55
56protected: 56protected:
57 POP3account *account; 57 POP3account *account;
58 virtual void refresh(); 58 virtual void refresh();
59 AbstractMail *wrapper; 59 AbstractMail *wrapper;
60 void disconnect(); 60 void disconnect();
61 void setOnOffline(); 61 void setOnOffline();
62}; 62};
63 63
64class POP3folderItem : public AccountViewItem 64class POP3folderItem : public AccountViewItem
65{ 65{
66 66
67public: 67public:
68 POP3folderItem( Folder *folder, POP3viewItem *parent , QListViewItem*after ); 68 POP3folderItem( Folder *folder, POP3viewItem *parent , QListViewItem*after );
69 virtual ~POP3folderItem(); 69 virtual ~POP3folderItem();
70 virtual void refresh(QList<RecMail>&); 70 virtual void refresh(QList<RecMail>&);
71 virtual RecBody fetchBody(const RecMail&); 71 virtual RecBody fetchBody(const RecMail&);
72 virtual QPopupMenu * getContextMenu(); 72 virtual QPopupMenu * getContextMenu();
73 virtual void contextMenuSelected(int); 73 virtual void contextMenuSelected(int);
74 74
75protected: 75protected:
76 void downloadMails(); 76 void downloadMails();
77 POP3viewItem *pop3; 77 POP3viewItem *pop3;
78}; 78};
79 79
80 80
81class NNTPviewItem : public AccountViewItem 81class NNTPviewItem : public AccountViewItem
82{ 82{
83 83
84public: 84public:
85 NNTPviewItem( NNTPaccount *a, AccountView *parent ); 85 NNTPviewItem( NNTPaccount *a, AccountView *parent );
86 virtual ~NNTPviewItem(); 86 virtual ~NNTPviewItem();
87 virtual void refresh( QList<RecMail> &target ); 87 virtual void refresh( QList<RecMail> &target );
88 virtual RecBody fetchBody( const RecMail &mail ); 88 virtual RecBody fetchBody( const RecMail &mail );
89 AbstractMail *getWrapper(); 89 AbstractMail *getWrapper();
90 virtual QPopupMenu * getContextMenu(); 90 virtual QPopupMenu * getContextMenu();
91 virtual void contextMenuSelected(int); 91 virtual void contextMenuSelected(int);
92 92
93protected: 93protected:
94 NNTPaccount *account; 94 NNTPaccount *account;
95 virtual void refresh(); 95 virtual void refresh();
96 AbstractMail *wrapper; 96 AbstractMail *wrapper;
97 void disconnect(); 97 void disconnect();
98 void setOnOffline(); 98 void setOnOffline();
99 void subscribeGroups();
99}; 100};
100 101
101class NNTPfolderItem : public AccountViewItem 102class NNTPfolderItem : public AccountViewItem
102{ 103{
103 104
104public: 105public:
105 NNTPfolderItem( Folder *folder, NNTPviewItem *parent , QListViewItem*after ); 106 NNTPfolderItem( Folder *folder, NNTPviewItem *parent , QListViewItem*after );
106 virtual ~NNTPfolderItem(); 107 virtual ~NNTPfolderItem();
107 virtual void refresh(QList<RecMail>&); 108 virtual void refresh(QList<RecMail>&);
108 virtual RecBody fetchBody(const RecMail&); 109 virtual RecBody fetchBody(const RecMail&);
109 virtual QPopupMenu * getContextMenu(); 110 virtual QPopupMenu * getContextMenu();
110 virtual void contextMenuSelected(int); 111 virtual void contextMenuSelected(int);
111 112
112protected: 113protected:
113 void downloadMails(); 114 void downloadMails();
114 NNTPviewItem *nntp; 115 NNTPviewItem *nntp;
115}; 116};
116 117
117 118
118 119
119class IMAPviewItem : public AccountViewItem 120class IMAPviewItem : public AccountViewItem
120{ 121{
121 friend class IMAPfolderItem; 122 friend class IMAPfolderItem;
122public: 123public:
123 IMAPviewItem( IMAPaccount *a, AccountView *parent ); 124 IMAPviewItem( IMAPaccount *a, AccountView *parent );
124 virtual ~IMAPviewItem(); 125 virtual ~IMAPviewItem();
125 virtual void refresh(QList<RecMail>&); 126 virtual void refresh(QList<RecMail>&);
126 virtual RecBody fetchBody(const RecMail&); 127 virtual RecBody fetchBody(const RecMail&);
127 AbstractMail *getWrapper(); 128 AbstractMail *getWrapper();
128 virtual QPopupMenu * getContextMenu(); 129 virtual QPopupMenu * getContextMenu();
129 virtual void contextMenuSelected(int); 130 virtual void contextMenuSelected(int);
130 const QStringList&subFolders(); 131 const QStringList&subFolders();
131 virtual void refreshFolders(bool force=false); 132 virtual void refreshFolders(bool force=false);
132 bool offline(); 133 bool offline();
133 134
134protected: 135protected:
135 virtual void createNewFolder(); 136 virtual void createNewFolder();
136 IMAPaccount *account; 137 IMAPaccount *account;
137 AbstractMail *wrapper; 138 AbstractMail *wrapper;
138 QStringList currentFolders; 139 QStringList currentFolders;
139}; 140};
140 141
141class IMAPfolderItem : public AccountViewItem 142class IMAPfolderItem : public AccountViewItem
142{ 143{
143 144
144public: 145public:
145 IMAPfolderItem( Folder *folder, IMAPviewItem *parent , QListViewItem*after ); 146 IMAPfolderItem( Folder *folder, IMAPviewItem *parent , QListViewItem*after );
146 IMAPfolderItem( Folder *folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ); 147 IMAPfolderItem( Folder *folder, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master );
147 virtual ~IMAPfolderItem(); 148 virtual ~IMAPfolderItem();
148 virtual void refresh(QList<RecMail>&); 149 virtual void refresh(QList<RecMail>&);
149 virtual RecBody fetchBody(const RecMail&); 150 virtual RecBody fetchBody(const RecMail&);
150 virtual QPopupMenu * getContextMenu(); 151 virtual QPopupMenu * getContextMenu();
151 virtual void contextMenuSelected(int); 152 virtual void contextMenuSelected(int);
152 virtual const QString& Delemiter()const; 153 virtual const QString& Delemiter()const;
153protected: 154protected:
154 virtual void createNewFolder(); 155 virtual void createNewFolder();
155 virtual void deleteFolder(); 156 virtual void deleteFolder();
156 virtual void downloadMails(); 157 virtual void downloadMails();
157 IMAPviewItem *imap; 158 IMAPviewItem *imap;
158}; 159};
159 160
160class MHviewItem : public AccountViewItem 161class MHviewItem : public AccountViewItem
161{ 162{
162 friend class MHfolderItem; 163 friend class MHfolderItem;
163 164
164public: 165public:
165 MHviewItem( const QString&aMboxPath, AccountView *parent ); 166 MHviewItem( const QString&aMboxPath, AccountView *parent );
166 virtual ~MHviewItem(); 167 virtual ~MHviewItem();
167 virtual void refresh( QList<RecMail> &target ); 168 virtual void refresh( QList<RecMail> &target );
168 virtual RecBody fetchBody( const RecMail &mail ); 169 virtual RecBody fetchBody( const RecMail &mail );
169 AbstractMail *getWrapper(); 170 AbstractMail *getWrapper();
170 virtual QPopupMenu * getContextMenu(); 171 virtual QPopupMenu * getContextMenu();
171 virtual void contextMenuSelected(int); 172 virtual void contextMenuSelected(int);
172 QStringList subFolders(); 173 QStringList subFolders();
173 virtual void refresh(bool force=false); 174 virtual void refresh(bool force=false);
174 175
175protected: 176protected:
176 void downloadMails(); 177 void downloadMails();
177 virtual void createFolder(); 178 virtual void createFolder();
178 QString m_Path; 179 QString m_Path;
179 AbstractMail *wrapper; 180 AbstractMail *wrapper;
180 QStringList currentFolders; 181 QStringList currentFolders;
181}; 182};
182 183
183class MHfolderItem : public AccountViewItem 184class MHfolderItem : public AccountViewItem
184{ 185{
185 186
186public: 187public:
187 MHfolderItem( Folder *folder, MHviewItem *parent , QListViewItem*after ); 188 MHfolderItem( Folder *folder, MHviewItem *parent , QListViewItem*after );
188 MHfolderItem( Folder *folder, MHfolderItem *parent, QListViewItem*after, MHviewItem*master); 189 MHfolderItem( Folder *folder, MHfolderItem *parent, QListViewItem*after, MHviewItem*master);
189 virtual ~MHfolderItem(); 190 virtual ~MHfolderItem();
190 virtual void refresh(QList<RecMail>&); 191 virtual void refresh(QList<RecMail>&);
191 virtual RecBody fetchBody(const RecMail&); 192 virtual RecBody fetchBody(const RecMail&);
192 virtual QPopupMenu * getContextMenu(); 193 virtual QPopupMenu * getContextMenu();
193 virtual void contextMenuSelected(int); 194 virtual void contextMenuSelected(int);
194 virtual Folder*getFolder(); 195 virtual Folder*getFolder();
diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro
index 7e0de2b..005a839 100644
--- a/noncore/net/mail/mail.pro
+++ b/noncore/net/mail/mail.pro
@@ -1,61 +1,66 @@
1CONFIG += qt warn_on debug quick-app 1CONFIG += qt warn_on debug quick-app
2 2
3HEADERS = defines.h \ 3HEADERS = defines.h \
4 editaccounts.h \ 4 editaccounts.h \
5 composemail.h \ 5 composemail.h \
6 accountview.h \ 6 accountview.h \
7 accountitem.h \ 7 accountitem.h \
8 mainwindow.h \ 8 mainwindow.h \
9 viewmail.h \ 9 viewmail.h \
10 viewmailbase.h \ 10 viewmailbase.h \
11 opiemail.h \ 11 opiemail.h \
12 mailistviewitem.h \ 12 mailistviewitem.h \
13 settingsdialog.h \ 13 settingsdialog.h \
14 statuswidget.h \ 14 statuswidget.h \
15 newmaildir.h \ 15 newmaildir.h \
16 selectstore.h \ 16 selectstore.h \
17 selectsmtp.h 17 selectsmtp.h \
18 nntpgroups.h \
19 nntpgroupsdlg.h
18 20
19SOURCES = main.cpp \ 21SOURCES = main.cpp \
20 opiemail.cpp \ 22 opiemail.cpp \
21 mainwindow.cpp \ 23 mainwindow.cpp \
22 accountview.cpp \ 24 accountview.cpp \
23 accountitem.cpp \ 25 accountitem.cpp \
24 composemail.cpp \ 26 composemail.cpp \
25 addresspicker.cpp \ 27 addresspicker.cpp \
26 editaccounts.cpp \ 28 editaccounts.cpp \
27 viewmail.cpp \ 29 viewmail.cpp \
28 viewmailbase.cpp \ 30 viewmailbase.cpp \
29 mailistviewitem.cpp \ 31 mailistviewitem.cpp \
30 settingsdialog.cpp \ 32 settingsdialog.cpp \
31 statuswidget.cpp \ 33 statuswidget.cpp \
32 newmaildir.cpp \ 34 newmaildir.cpp \
33 selectstore.cpp \ 35 selectstore.cpp \
34 selectsmtp.cpp 36 selectsmtp.cpp \
37 nntpgroups.cpp \
38 nntpgroupsdlg.cpp
35 39
36INTERFACES = editaccountsui.ui \ 40INTERFACES = editaccountsui.ui \
37 selectmailtypeui.ui \ 41 selectmailtypeui.ui \
38 imapconfigui.ui \ 42 imapconfigui.ui \
39 pop3configui.ui \ 43 pop3configui.ui \
40 nntpconfigui.ui \ 44 nntpconfigui.ui \
41 smtpconfigui.ui \ 45 smtpconfigui.ui \
42 addresspickerui.ui \ 46 addresspickerui.ui \
43 composemailui.ui \ 47 composemailui.ui \
44 settingsdialogui.ui \ 48 settingsdialogui.ui \
45 statuswidgetui.ui \ 49 statuswidgetui.ui \
46 newmaildirui.ui \ 50 newmaildirui.ui \
47 selectstoreui.ui 51 selectstoreui.ui \
52 nntpgroupsui.ui
48 53
49 54
50INCLUDEPATH += $(OPIEDIR)/include 55INCLUDEPATH += $(OPIEDIR)/include
51 56
52CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX ) 57CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX )
53contains( CONFTEST, y ){ 58contains( CONFTEST, y ){
54 LIBS += -lqpe -lopieui2 -lopiecore2 -lopiepim2 -lopiedb2 -lmailwrapper -liconv 59 LIBS += -lqpe -lopieui2 -lopiecore2 -lopiepim2 -lopiedb2 -lmailwrapper -liconv
55}else{ 60}else{
56 LIBS += -lqpe -lopieui2 -lopiecore2 -lopiepim2 -lopiedb2 -lmailwrapper 61 LIBS += -lqpe -lopieui2 -lopiecore2 -lopiepim2 -lopiedb2 -lmailwrapper
57} 62}
58 63
59TARGET = opiemail 64TARGET = opiemail
60 65
61include ( $(OPIEDIR)/include.pro ) 66include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/net/mail/nntpgroups.cpp b/noncore/net/mail/nntpgroups.cpp
new file mode 100644
index 0000000..97b1985
--- a/dev/null
+++ b/noncore/net/mail/nntpgroups.cpp
@@ -0,0 +1,57 @@
1#include "nntpgroups.h"
2
3#include <libmailwrapper/settings.h>
4
5#include <qlistview.h>
6
7NNTPGroups::NNTPGroups(NNTPaccount *account, QWidget* parent, const char* name, WFlags fl)
8 : NNTPGroupsUI(parent,name,fl),subscribedGroups()
9{
10 m_Account = account;
11 fillGroups();
12}
13
14NNTPGroups::~NNTPGroups()
15{
16
17}
18
19void NNTPGroups::slotGetNG()
20{
21 if (!m_Account) return;
22 GroupListView->clear();
23 NNTPwrapper tmp( m_Account );
24 QStringList list = tmp.listAllNewsgroups();
25 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
26 QCheckListItem *item;
27 item = new QCheckListItem( GroupListView, (*it), QCheckListItem::CheckBox );
28 if ( subscribedGroups.contains( (*it) ) >= 1 ) {
29 item->setOn( true );
30 }
31 }
32}
33
34void NNTPGroups::fillGroups()
35{
36 if (!m_Account) return;
37 subscribedGroups = m_Account->getGroups();
38 for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) {
39 QCheckListItem *item;
40 item = new QCheckListItem( GroupListView, (*it), QCheckListItem::CheckBox );
41 item->setOn( true );
42 }
43}
44
45void NNTPGroups::storeValues()
46{
47 if (!m_Account) return;
48 QListViewItemIterator list_it( GroupListView );
49 subscribedGroups.clear();
50 for ( ; list_it.current(); ++list_it ) {
51 if ( ( (QCheckListItem*)list_it.current() )->isOn() ) {
52 qDebug(list_it.current()->text(0) );
53 subscribedGroups.append( list_it.current()->text(0) );
54 }
55 }
56 m_Account->setGroups( subscribedGroups );
57}
diff --git a/noncore/net/mail/nntpgroups.h b/noncore/net/mail/nntpgroups.h
new file mode 100644
index 0000000..8cc2e8b
--- a/dev/null
+++ b/noncore/net/mail/nntpgroups.h
@@ -0,0 +1,33 @@
1#ifndef __NNTPGROUPS_WINDOW__
2#define __NNTPGROUPS_WINDOW__
3
4#include "nntpgroupsui.h"
5
6#include <libmailwrapper/nntpwrapper.h>
7
8class NNTPaccount;
9class QStringList;
10
11class NNTPGroups:public NNTPGroupsUI
12{
13 Q_OBJECT
14public:
15 NNTPGroups(NNTPaccount *account, QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
16 virtual ~NNTPGroups();
17 /* must be called from external.
18 * it will store the new subscription list into the account
19 * but don't save them, this must be done by the calling class.
20 */
21 void storeValues();
22
23protected slots:
24 virtual void slotGetNG();
25
26protected:
27 virtual void fillGroups();
28
29 NNTPaccount*m_Account;
30 QStringList subscribedGroups;
31};
32
33#endif
diff --git a/noncore/net/mail/nntpgroupsdlg.cpp b/noncore/net/mail/nntpgroupsdlg.cpp
new file mode 100644
index 0000000..752ce3c
--- a/dev/null
+++ b/noncore/net/mail/nntpgroupsdlg.cpp
@@ -0,0 +1,29 @@
1#include "nntpgroupsdlg.h"
2#include "nntpgroups.h"
3
4#include <libmailwrapper/settings.h>
5
6#include <qlayout.h>
7
8NNTPGroupsDlg::NNTPGroupsDlg(NNTPaccount *account,QWidget * parent, const char * name)
9 : QDialog(parent,name,true)
10{
11 setCaption(tr("Subscribed newsgroups"));
12 m_Account = account;
13 QVBoxLayout*dlglayout = new QVBoxLayout(this);
14 dlglayout->setSpacing(2);
15 dlglayout->setMargin(1);
16 groupsWidget = new NNTPGroups(account,this);
17 dlglayout->addWidget(groupsWidget);
18}
19
20NNTPGroupsDlg::~NNTPGroupsDlg()
21{
22}
23
24void NNTPGroupsDlg::accept()
25{
26 groupsWidget->storeValues();
27 m_Account->save();
28 QDialog::accept();
29}
diff --git a/noncore/net/mail/nntpgroupsdlg.h b/noncore/net/mail/nntpgroupsdlg.h
new file mode 100644
index 0000000..a21bac7
--- a/dev/null
+++ b/noncore/net/mail/nntpgroupsdlg.h
@@ -0,0 +1,24 @@
1#ifndef __NNTP_GROUP_DLG_H
2#define __NNTP_GROUP_DLG_H
3
4#include <qdialog.h>
5
6class NNTPGroups;
7class NNTPaccount;
8
9class NNTPGroupsDlg : public QDialog
10{
11 Q_OBJECT
12public:
13 NNTPGroupsDlg(NNTPaccount *account,QWidget * parent=0, const char * name=0);
14 virtual ~NNTPGroupsDlg();
15
16protected:
17 NNTPGroups*groupsWidget;
18 NNTPaccount*m_Account;
19
20protected slots:
21 virtual void accept ();
22};
23
24#endif
diff --git a/noncore/net/mail/nntpgroupsui.ui b/noncore/net/mail/nntpgroupsui.ui
new file mode 100644
index 0000000..93f487b
--- a/dev/null
+++ b/noncore/net/mail/nntpgroupsui.ui
@@ -0,0 +1,88 @@
1<!DOCTYPE UI><UI>
2<class>NNTPGroupsUI</class>
3<widget>
4 <class>QWidget</class>
5 <property stdset="1">
6 <name>name</name>
7 <cstring>NNTPGroupsUI</cstring>
8 </property>
9 <property stdset="1">
10 <name>geometry</name>
11 <rect>
12 <x>0</x>
13 <y>0</y>
14 <width>356</width>
15 <height>406</height>
16 </rect>
17 </property>
18 <property stdset="1">
19 <name>caption</name>
20 <string>newsgroupslist</string>
21 </property>
22 <property>
23 <name>layoutMargin</name>
24 </property>
25 <property>
26 <name>layoutSpacing</name>
27 </property>
28 <vbox>
29 <property stdset="1">
30 <name>margin</name>
31 <number>2</number>
32 </property>
33 <property stdset="1">
34 <name>spacing</name>
35 <number>2</number>
36 </property>
37 <widget>
38 <class>QListView</class>
39 <column>
40 <property>
41 <name>text</name>
42 <string>Newsgroups</string>
43 </property>
44 <property>
45 <name>clickable</name>
46 <bool>true</bool>
47 </property>
48 <property>
49 <name>resizeable</name>
50 <bool>true</bool>
51 </property>
52 </column>
53 <property stdset="1">
54 <name>name</name>
55 <cstring>GroupListView</cstring>
56 </property>
57 <property>
58 <name>whatsThis</name>
59 <string>List of groups from the server. On start, only subscribed groups are listed.</string>
60 </property>
61 </widget>
62 <widget>
63 <class>QPushButton</class>
64 <property stdset="1">
65 <name>name</name>
66 <cstring>GetNGButton</cstring>
67 </property>
68 <property stdset="1">
69 <name>text</name>
70 <string>Get newsgroup list from server</string>
71 </property>
72 <property>
73 <name>whatsThis</name>
74 <string>Retrieve the list of groups from server</string>
75 </property>
76 </widget>
77 </vbox>
78</widget>
79<connections>
80 <connection>
81 <sender>GetNGButton</sender>
82 <signal>clicked()</signal>
83 <receiver>NNTPGroupsUI</receiver>
84 <slot>slotGetNG()</slot>
85 </connection>
86 <slot access="protected">slotGetNG()</slot>
87</connections>
88</UI>