author | alwin <alwin> | 2004-03-06 12:36:55 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-03-06 12:36:55 (UTC) |
commit | a66fd5afde517e9a61e74fc17df617297f134c96 (patch) (unidiff) | |
tree | 7bb9819c087516f6b0f3399bdec6d5ce225201e5 | |
parent | 5b49d47174925c1e2415641b77269b753688f5f1 (diff) | |
download | opie-a66fd5afde517e9a61e74fc17df617297f134c96.zip opie-a66fd5afde517e9a61e74fc17df617297f134c96.tar.gz opie-a66fd5afde517e9a61e74fc17df617297f134c96.tar.bz2 |
standalone dlg for (un-)subscribing newsgroups.
May be integrated into the standard nntp-settings-dialog, too.
-rw-r--r-- | noncore/net/mail/.cvsignore | 3 | ||||
-rw-r--r-- | noncore/net/mail/accountitem.cpp | 15 | ||||
-rw-r--r-- | noncore/net/mail/accountitem.h | 1 | ||||
-rw-r--r-- | noncore/net/mail/mail.pro | 11 | ||||
-rw-r--r-- | noncore/net/mail/nntpgroups.cpp | 57 | ||||
-rw-r--r-- | noncore/net/mail/nntpgroups.h | 33 | ||||
-rw-r--r-- | noncore/net/mail/nntpgroupsdlg.cpp | 29 | ||||
-rw-r--r-- | noncore/net/mail/nntpgroupsdlg.h | 24 | ||||
-rw-r--r-- | noncore/net/mail/nntpgroupsui.ui | 88 |
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 |
2 | Makefile | 2 | Makefile |
3 | addresspickerui.cpp | 3 | addresspickerui.cpp |
4 | addresspickerui.h | 4 | addresspickerui.h |
5 | composemailui.cpp | 5 | composemailui.cpp |
6 | composemailui.h | 6 | composemailui.h |
7 | editaccountsui.cpp | 7 | editaccountsui.cpp |
8 | editaccountsui.h | 8 | editaccountsui.h |
9 | imapconfigui.cpp | 9 | imapconfigui.cpp |
10 | imapconfigui.h | 10 | imapconfigui.h |
11 | logindialogui.cpp | 11 | logindialogui.cpp |
12 | logindialogui.h | 12 | logindialogui.h |
13 | nntpconfigui.cpp | 13 | nntpconfigui.cpp |
14 | nntpconfigui.h | 14 | nntpconfigui.h |
15 | pop3configui.cpp | 15 | pop3configui.cpp |
16 | pop3configui.h | 16 | pop3configui.h |
17 | selectmailtypeui.cpp | 17 | selectmailtypeui.cpp |
18 | selectmailtypeui.h | 18 | selectmailtypeui.h |
19 | smtpconfigui.cpp | 19 | smtpconfigui.cpp |
20 | smtpconfigui.h | 20 | smtpconfigui.h |
21 | settingsdialogui.cpp | 21 | settingsdialogui.cpp |
22 | settingsdialogui.h | 22 | settingsdialogui.h |
23 | statuswidgetui.cpp | 23 | statuswidgetui.cpp |
24 | statuswidgetui.h | 24 | statuswidgetui.h |
25 | newmaildirui.cpp | 25 | newmaildirui.cpp |
26 | newmaildirui.h | 26 | newmaildirui.h |
27 | sendmailprogressui.cpp | 27 | sendmailprogressui.cpp |
28 | sendmailprogressui.h | 28 | sendmailprogressui.h |
29 | selectstoreui.cpp | 29 | selectstoreui.cpp |
30 | selectstoreui.h | 30 | selectstoreui.h |
31 | 31 | nntpgroupsui.cpp | |
32 | nntpgroupsui.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,132 +1,133 @@ | |||
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 | */ |
21 | POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent ) | 22 | POP3viewItem::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 | ||
41 | POP3viewItem::~POP3viewItem() | 42 | POP3viewItem::~POP3viewItem() |
42 | { | 43 | { |
43 | delete wrapper; | 44 | delete wrapper; |
44 | } | 45 | } |
45 | 46 | ||
46 | AbstractMail *POP3viewItem::getWrapper() | 47 | AbstractMail *POP3viewItem::getWrapper() |
47 | { | 48 | { |
48 | return wrapper; | 49 | return wrapper; |
49 | } | 50 | } |
50 | 51 | ||
51 | void POP3viewItem::refresh( QList<RecMail> & ) | 52 | void POP3viewItem::refresh( QList<RecMail> & ) |
52 | { | 53 | { |
53 | refresh(); | 54 | refresh(); |
54 | } | 55 | } |
55 | 56 | ||
56 | void POP3viewItem::refresh() | 57 | void 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 | ||
79 | RecBody POP3viewItem::fetchBody( const RecMail &mail ) | 80 | RecBody 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 | ||
85 | QPopupMenu * POP3viewItem::getContextMenu() | 86 | QPopupMenu * 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; |
101 | } | 102 | } |
102 | 103 | ||
103 | void POP3viewItem::disconnect() | 104 | void POP3viewItem::disconnect() |
104 | { | 105 | { |
105 | QListViewItem *child = firstChild(); | 106 | QListViewItem *child = firstChild(); |
106 | while ( child ) | 107 | while ( child ) |
107 | { | 108 | { |
108 | QListViewItem *tmp = child; | 109 | QListViewItem *tmp = child; |
109 | child = child->nextSibling(); | 110 | child = child->nextSibling(); |
110 | delete tmp; | 111 | delete tmp; |
111 | } | 112 | } |
112 | wrapper->logout(); | 113 | wrapper->logout(); |
113 | } | 114 | } |
114 | 115 | ||
115 | void POP3viewItem::setOnOffline() | 116 | void POP3viewItem::setOnOffline() |
116 | { | 117 | { |
117 | if (!account->getOffline()) | 118 | if (!account->getOffline()) |
118 | { | 119 | { |
119 | disconnect(); | 120 | disconnect(); |
120 | } | 121 | } |
121 | account->setOffline(!account->getOffline()); | 122 | account->setOffline(!account->getOffline()); |
122 | account->save(); | 123 | account->save(); |
123 | SETPIX(PIXMAP_POP3FOLDER); | 124 | SETPIX(PIXMAP_POP3FOLDER); |
124 | refresh(); | 125 | refresh(); |
125 | } | 126 | } |
126 | 127 | ||
127 | void POP3viewItem::contextMenuSelected(int which) | 128 | void POP3viewItem::contextMenuSelected(int which) |
128 | { | 129 | { |
129 | switch (which) | 130 | switch (which) |
130 | { | 131 | { |
131 | case 0: | 132 | case 0: |
132 | disconnect(); | 133 | disconnect(); |
@@ -159,340 +160,352 @@ POP3folderItem::POP3folderItem( Folder *folderInit, POP3viewItem *parent , QList | |||
159 | void POP3folderItem::refresh(QList<RecMail>&target) | 160 | void POP3folderItem::refresh(QList<RecMail>&target) |
160 | { | 161 | { |
161 | if (folder->may_select()) | 162 | if (folder->may_select()) |
162 | pop3->getWrapper()->listMessages( folder->getName(),target ); | 163 | pop3->getWrapper()->listMessages( folder->getName(),target ); |
163 | } | 164 | } |
164 | 165 | ||
165 | RecBody POP3folderItem::fetchBody(const RecMail&aMail) | 166 | RecBody POP3folderItem::fetchBody(const RecMail&aMail) |
166 | { | 167 | { |
167 | return pop3->getWrapper()->fetchBody(aMail); | 168 | return pop3->getWrapper()->fetchBody(aMail); |
168 | } | 169 | } |
169 | 170 | ||
170 | QPopupMenu * POP3folderItem::getContextMenu() | 171 | QPopupMenu * POP3folderItem::getContextMenu() |
171 | { | 172 | { |
172 | QPopupMenu *m = new QPopupMenu(0); | 173 | QPopupMenu *m = new QPopupMenu(0); |
173 | if (m) | 174 | if (m) |
174 | { | 175 | { |
175 | m->insertItem(QObject::tr("Refresh header list",contextName),0); | 176 | m->insertItem(QObject::tr("Refresh header list",contextName),0); |
176 | m->insertItem(QObject::tr("Delete all mails",contextName),1); | 177 | m->insertItem(QObject::tr("Delete all mails",contextName),1); |
177 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),2); | 178 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),2); |
178 | } | 179 | } |
179 | return m; | 180 | return m; |
180 | } | 181 | } |
181 | 182 | ||
182 | void POP3folderItem::downloadMails() | 183 | void POP3folderItem::downloadMails() |
183 | { | 184 | { |
184 | AccountView*bl = pop3->accountView(); | 185 | AccountView*bl = pop3->accountView(); |
185 | if (!bl) return; | 186 | if (!bl) return; |
186 | bl->downloadMails(folder,pop3->getWrapper()); | 187 | bl->downloadMails(folder,pop3->getWrapper()); |
187 | } | 188 | } |
188 | 189 | ||
189 | void POP3folderItem::contextMenuSelected(int which) | 190 | void POP3folderItem::contextMenuSelected(int which) |
190 | { | 191 | { |
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 | */ |
213 | NNTPviewItem::NNTPviewItem( NNTPaccount *a, AccountView *parent ) | 214 | NNTPviewItem::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 | ||
234 | NNTPviewItem::~NNTPviewItem() | 235 | NNTPviewItem::~NNTPviewItem() |
235 | { | 236 | { |
236 | delete wrapper; | 237 | delete wrapper; |
237 | } | 238 | } |
238 | 239 | ||
239 | AbstractMail *NNTPviewItem::getWrapper() | 240 | AbstractMail *NNTPviewItem::getWrapper() |
240 | { | 241 | { |
241 | return wrapper; | 242 | return wrapper; |
242 | } | 243 | } |
243 | 244 | ||
244 | void NNTPviewItem::refresh( QList<RecMail> & ) | 245 | void NNTPviewItem::refresh( QList<RecMail> & ) |
245 | { | 246 | { |
246 | refresh(); | 247 | refresh(); |
247 | } | 248 | } |
248 | 249 | ||
249 | void NNTPviewItem::refresh() | 250 | void 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 | ||
272 | RecBody NNTPviewItem::fetchBody( const RecMail &mail ) | 273 | RecBody 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 | ||
278 | QPopupMenu * NNTPviewItem::getContextMenu() | 279 | QPopupMenu * 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 | ||
298 | void NNTPviewItem::subscribeGroups() | ||
299 | { | ||
300 | NNTPGroupsDlg dlg(account); | ||
301 | if (QPEApplication::execDialog(&dlg)== QDialog::Accepted ){ | ||
302 | refresh(); | ||
303 | } | ||
304 | } | ||
305 | |||
296 | void NNTPviewItem::disconnect() | 306 | void 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 | ||
308 | void NNTPviewItem::setOnOffline() | 318 | void 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 | ||
321 | void NNTPviewItem::contextMenuSelected(int which) | 331 | void 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 | ||
334 | NNTPfolderItem::~NNTPfolderItem() | 347 | NNTPfolderItem::~NNTPfolderItem() |
335 | {} | 348 | {} |
336 | 349 | ||
337 | NNTPfolderItem::NNTPfolderItem( Folder *folderInit, NNTPviewItem *parent , QListViewItem*after ) | 350 | NNTPfolderItem::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 | ||
353 | void NNTPfolderItem::refresh(QList<RecMail>&target) | 366 | void 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 | ||
359 | RecBody NNTPfolderItem::fetchBody(const RecMail&aMail) | 372 | RecBody NNTPfolderItem::fetchBody(const RecMail&aMail) |
360 | { | 373 | { |
361 | return nntp->getWrapper()->fetchBody(aMail); | 374 | return nntp->getWrapper()->fetchBody(aMail); |
362 | } | 375 | } |
363 | 376 | ||
364 | QPopupMenu * NNTPfolderItem::getContextMenu() | 377 | QPopupMenu * 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 | ||
375 | void NNTPfolderItem::downloadMails() | 388 | void 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 | ||
382 | void NNTPfolderItem::contextMenuSelected(int which) | 395 | void 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 | */ |
403 | IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent ) | 416 | IMAPviewItem::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 | ||
413 | IMAPviewItem::~IMAPviewItem() | 426 | IMAPviewItem::~IMAPviewItem() |
414 | { | 427 | { |
415 | delete wrapper; | 428 | delete wrapper; |
416 | } | 429 | } |
417 | 430 | ||
418 | AbstractMail *IMAPviewItem::getWrapper() | 431 | AbstractMail *IMAPviewItem::getWrapper() |
419 | { | 432 | { |
420 | return wrapper; | 433 | return wrapper; |
421 | } | 434 | } |
422 | 435 | ||
423 | void IMAPviewItem::refresh(QList<RecMail>&) | 436 | void IMAPviewItem::refresh(QList<RecMail>&) |
424 | { | 437 | { |
425 | refreshFolders(false); | 438 | refreshFolders(false); |
426 | } | 439 | } |
427 | 440 | ||
428 | const QStringList&IMAPviewItem::subFolders() | 441 | const QStringList&IMAPviewItem::subFolders() |
429 | { | 442 | { |
430 | return currentFolders; | 443 | return currentFolders; |
431 | } | 444 | } |
432 | 445 | ||
433 | void IMAPviewItem::refreshFolders(bool force) | 446 | void 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 | { |
467 | fname = fname.left(pos); | 480 | fname = fname.left(pos); |
468 | } | 481 | } |
469 | IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname); | 482 | IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname); |
470 | if (pitem) | 483 | if (pitem) |
471 | { | 484 | { |
472 | titem = item; | 485 | titem = item; |
473 | item = new IMAPfolderItem(it,pitem,pitem->firstChild(),this); | 486 | item = new IMAPfolderItem(it,pitem,pitem->firstChild(),this); |
474 | /* setup the short name */ | 487 | /* setup the short name */ |
475 | item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1)); | 488 | item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1)); |
476 | item = titem; | 489 | item = titem; |
477 | } | 490 | } |
478 | else | 491 | else |
479 | { | 492 | { |
480 | item = new IMAPfolderItem( it, this , item ); | 493 | item = new IMAPfolderItem( it, this , item ); |
481 | } | 494 | } |
482 | } | 495 | } |
483 | delete folders; | 496 | delete folders; |
484 | } | 497 | } |
485 | 498 | ||
486 | QPopupMenu * IMAPviewItem::getContextMenu() | 499 | QPopupMenu * IMAPviewItem::getContextMenu() |
487 | { | 500 | { |
488 | QPopupMenu *m = new QPopupMenu(0); | 501 | QPopupMenu *m = new QPopupMenu(0); |
489 | if (m) | 502 | if (m) |
490 | { | 503 | { |
491 | if (!account->getOffline()) | 504 | if (!account->getOffline()) |
492 | { | 505 | { |
493 | m->insertItem(QObject::tr("Refresh folder list",contextName),0); | 506 | m->insertItem(QObject::tr("Refresh folder list",contextName),0); |
494 | m->insertItem(QObject::tr("Create new folder",contextName),1); | 507 | m->insertItem(QObject::tr("Create new folder",contextName),1); |
495 | m->insertSeparator(); | 508 | m->insertSeparator(); |
496 | m->insertItem(QObject::tr("Disconnect",contextName),2); | 509 | m->insertItem(QObject::tr("Disconnect",contextName),2); |
497 | m->insertItem(QObject::tr("Set offline",contextName),3); | 510 | m->insertItem(QObject::tr("Set offline",contextName),3); |
498 | } | 511 | } |
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 | |||
@@ -1,204 +1,205 @@ | |||
1 | #ifndef __ACCOUNT_ITEM | 1 | #ifndef __ACCOUNT_ITEM |
2 | #define __ACCOUNT_ITEM | 2 | #define __ACCOUNT_ITEM |
3 | 3 | ||
4 | #include <qlistview.h> | 4 | #include <qlistview.h> |
5 | #include <qlist.h> | 5 | #include <qlist.h> |
6 | 6 | ||
7 | class POP3wrapper; | 7 | class POP3wrapper; |
8 | class RecMail; | 8 | class RecMail; |
9 | class RecBody; | 9 | class RecBody; |
10 | class QPopupMenu; | 10 | class QPopupMenu; |
11 | class Selectstore; | 11 | class Selectstore; |
12 | class AccountView; | 12 | class AccountView; |
13 | class POP3account; | 13 | class POP3account; |
14 | class NNTPaccount; | 14 | class NNTPaccount; |
15 | class IMAPaccount; | 15 | class IMAPaccount; |
16 | class AbstractMail; | 16 | class AbstractMail; |
17 | class Folder; | 17 | class Folder; |
18 | 18 | ||
19 | class AccountViewItem : public QListViewItem | 19 | class AccountViewItem : public QListViewItem |
20 | { | 20 | { |
21 | 21 | ||
22 | public: | 22 | public: |
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 | ||
34 | protected: | 34 | protected: |
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 | ||
44 | class POP3viewItem : public AccountViewItem | 44 | class POP3viewItem : public AccountViewItem |
45 | { | 45 | { |
46 | 46 | ||
47 | public: | 47 | public: |
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 | ||
56 | protected: | 56 | protected: |
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 | ||
64 | class POP3folderItem : public AccountViewItem | 64 | class POP3folderItem : public AccountViewItem |
65 | { | 65 | { |
66 | 66 | ||
67 | public: | 67 | public: |
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 | ||
75 | protected: | 75 | protected: |
76 | void downloadMails(); | 76 | void downloadMails(); |
77 | POP3viewItem *pop3; | 77 | POP3viewItem *pop3; |
78 | }; | 78 | }; |
79 | 79 | ||
80 | 80 | ||
81 | class NNTPviewItem : public AccountViewItem | 81 | class NNTPviewItem : public AccountViewItem |
82 | { | 82 | { |
83 | 83 | ||
84 | public: | 84 | public: |
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 | ||
93 | protected: | 93 | protected: |
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 | ||
101 | class NNTPfolderItem : public AccountViewItem | 102 | class NNTPfolderItem : public AccountViewItem |
102 | { | 103 | { |
103 | 104 | ||
104 | public: | 105 | public: |
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 | ||
112 | protected: | 113 | protected: |
113 | void downloadMails(); | 114 | void downloadMails(); |
114 | NNTPviewItem *nntp; | 115 | NNTPviewItem *nntp; |
115 | }; | 116 | }; |
116 | 117 | ||
117 | 118 | ||
118 | 119 | ||
119 | class IMAPviewItem : public AccountViewItem | 120 | class IMAPviewItem : public AccountViewItem |
120 | { | 121 | { |
121 | friend class IMAPfolderItem; | 122 | friend class IMAPfolderItem; |
122 | public: | 123 | public: |
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 | ||
134 | protected: | 135 | protected: |
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 | ||
141 | class IMAPfolderItem : public AccountViewItem | 142 | class IMAPfolderItem : public AccountViewItem |
142 | { | 143 | { |
143 | 144 | ||
144 | public: | 145 | public: |
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; |
153 | protected: | 154 | protected: |
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 | ||
160 | class MHviewItem : public AccountViewItem | 161 | class MHviewItem : public AccountViewItem |
161 | { | 162 | { |
162 | friend class MHfolderItem; | 163 | friend class MHfolderItem; |
163 | 164 | ||
164 | public: | 165 | public: |
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 | ||
175 | protected: | 176 | protected: |
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 | ||
183 | class MHfolderItem : public AccountViewItem | 184 | class MHfolderItem : public AccountViewItem |
184 | { | 185 | { |
185 | 186 | ||
186 | public: | 187 | public: |
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(); |
195 | 196 | ||
196 | protected: | 197 | protected: |
197 | void downloadMails(); | 198 | void downloadMails(); |
198 | virtual void createFolder(); | 199 | virtual void createFolder(); |
199 | virtual void deleteFolder(); | 200 | virtual void deleteFolder(); |
200 | void initName(); | 201 | void initName(); |
201 | MHviewItem *mbox; | 202 | MHviewItem *mbox; |
202 | }; | 203 | }; |
203 | 204 | ||
204 | #endif | 205 | #endif |
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 @@ | |||
1 | CONFIG += qt warn_on debug quick-app | 1 | CONFIG += qt warn_on debug quick-app |
2 | 2 | ||
3 | HEADERS = defines.h \ | 3 | HEADERS = 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 | ||
19 | SOURCES = main.cpp \ | 21 | SOURCES = 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 | ||
36 | INTERFACES = editaccountsui.ui \ | 40 | INTERFACES = 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 | ||
50 | INCLUDEPATH += $(OPIEDIR)/include | 55 | INCLUDEPATH += $(OPIEDIR)/include |
51 | 56 | ||
52 | CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX ) | 57 | CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX ) |
53 | contains( CONFTEST, y ){ | 58 | contains( 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 | ||
59 | TARGET = opiemail | 64 | TARGET = opiemail |
60 | 65 | ||
61 | include ( $(OPIEDIR)/include.pro ) | 66 | include ( $(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 | |||
7 | NNTPGroups::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 | |||
14 | NNTPGroups::~NNTPGroups() | ||
15 | { | ||
16 | |||
17 | } | ||
18 | |||
19 | void 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 | |||
34 | void 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 | |||
45 | void 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 | |||
8 | class NNTPaccount; | ||
9 | class QStringList; | ||
10 | |||
11 | class NNTPGroups:public NNTPGroupsUI | ||
12 | { | ||
13 | Q_OBJECT | ||
14 | public: | ||
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 | |||
23 | protected slots: | ||
24 | virtual void slotGetNG(); | ||
25 | |||
26 | protected: | ||
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 | |||
8 | NNTPGroupsDlg::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 | |||
20 | NNTPGroupsDlg::~NNTPGroupsDlg() | ||
21 | { | ||
22 | } | ||
23 | |||
24 | void 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 | |||
6 | class NNTPGroups; | ||
7 | class NNTPaccount; | ||
8 | |||
9 | class NNTPGroupsDlg : public QDialog | ||
10 | { | ||
11 | Q_OBJECT | ||
12 | public: | ||
13 | NNTPGroupsDlg(NNTPaccount *account,QWidget * parent=0, const char * name=0); | ||
14 | virtual ~NNTPGroupsDlg(); | ||
15 | |||
16 | protected: | ||
17 | NNTPGroups*groupsWidget; | ||
18 | NNTPaccount*m_Account; | ||
19 | |||
20 | protected 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> | ||