-rw-r--r-- | noncore/net/mail/accountitem.cpp | 309 | ||||
-rw-r--r-- | noncore/net/mail/accountview.cpp | 48 | ||||
-rw-r--r-- | noncore/net/mail/addresspicker.cpp | 120 | ||||
-rw-r--r-- | noncore/net/mail/editaccounts.cpp | 183 | ||||
-rw-r--r-- | noncore/net/mail/opiemail.cpp | 113 | ||||
-rw-r--r-- | noncore/net/mail/viewmail.cpp | 513 | ||||
-rw-r--r-- | noncore/net/opieirc/ircservereditor.cpp | 10 | ||||
-rw-r--r-- | noncore/net/opieirc/ircserverlist.cpp | 76 | ||||
-rw-r--r-- | noncore/net/opieirc/ircsettings.cpp | 22 | ||||
-rw-r--r-- | noncore/net/opietooth/blue-pin/pindlg.cc | 41 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/bluebase.cpp | 261 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/obexpopup.cpp | 22 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/rfcommassigndialogimpl.cpp | 51 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/rfcpopup.cpp | 49 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/mainwindow.cpp | 5 |
15 files changed, 1100 insertions, 723 deletions
diff --git a/noncore/net/mail/accountitem.cpp b/noncore/net/mail/accountitem.cpp index 2d3cd4b..c8f6ec4 100644 --- a/noncore/net/mail/accountitem.cpp +++ b/noncore/net/mail/accountitem.cpp | |||
@@ -1,842 +1,927 @@ | |||
1 | |||
1 | #include "accountitem.h" | 2 | #include "accountitem.h" |
2 | #include "accountview.h" | 3 | #include "accountview.h" |
3 | #include <qpopupmenu.h> | ||
4 | #include <qmessagebox.h> | ||
5 | #include "selectstore.h" | 4 | #include "selectstore.h" |
6 | #include "newmaildir.h" | 5 | #include "newmaildir.h" |
6 | #include "defines.h" | ||
7 | |||
8 | /* OPIE */ | ||
7 | #include <libmailwrapper/mailtypes.h> | 9 | #include <libmailwrapper/mailtypes.h> |
8 | #include <libmailwrapper/abstractmail.h> | 10 | #include <libmailwrapper/abstractmail.h> |
9 | #include <libmailwrapper/mailwrapper.h> | 11 | #include <libmailwrapper/mailwrapper.h> |
10 | #include "defines.h" | 12 | #include <qpe/qpeapplication.h> |
13 | |||
14 | /* QT */ | ||
15 | #include <qpopupmenu.h> | ||
16 | #include <qmessagebox.h> | ||
11 | 17 | ||
12 | #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 );} |
13 | /** | 19 | /** |
14 | * POP3 Account stuff | 20 | * POP3 Account stuff |
15 | */ | 21 | */ |
16 | POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent ) | 22 | POP3viewItem::POP3viewItem( POP3account *a, AccountView *parent ) |
17 | : AccountViewItem( parent ) | 23 | : AccountViewItem( parent ) |
18 | { | 24 | { |
19 | account = a; | 25 | account = a; |
20 | wrapper = AbstractMail::getWrapper( account ); | 26 | wrapper = AbstractMail::getWrapper( account ); |
21 | SETPIX(PIXMAP_POP3FOLDER); | 27 | SETPIX(PIXMAP_POP3FOLDER); |
22 | #if 0 | 28 | #if 0 |
23 | if (!account->getOffline()) { | 29 | if (!account->getOffline()) |
30 | { | ||
24 | setPixmap( 0, ); | 31 | setPixmap( 0, ); |
25 | } else { | 32 | } |
33 | else | ||
34 | { | ||
26 | setPixmap( 0, PIXMAP_OFFLINE ); | 35 | setPixmap( 0, PIXMAP_OFFLINE ); |
27 | } | 36 | } |
28 | #endif | 37 | #endif |
29 | setText( 0, account->getAccountName() ); | 38 | setText( 0, account->getAccountName() ); |
30 | setOpen( true ); | 39 | setOpen( true ); |
31 | } | 40 | } |
32 | 41 | ||
33 | POP3viewItem::~POP3viewItem() | 42 | POP3viewItem::~POP3viewItem() |
34 | { | 43 | { |
35 | delete wrapper; | 44 | delete wrapper; |
36 | } | 45 | } |
37 | 46 | ||
38 | AbstractMail *POP3viewItem::getWrapper() | 47 | AbstractMail *POP3viewItem::getWrapper() |
39 | { | 48 | { |
40 | return wrapper; | 49 | return wrapper; |
41 | } | 50 | } |
42 | 51 | ||
43 | void POP3viewItem::refresh( QList<RecMail> & ) | 52 | void POP3viewItem::refresh( QList<RecMail> & ) |
44 | { | 53 | { |
45 | refresh(); | 54 | refresh(); |
46 | } | 55 | } |
47 | 56 | ||
48 | void POP3viewItem::refresh() | 57 | void POP3viewItem::refresh() |
49 | { | 58 | { |
50 | if (account->getOffline()) return; | 59 | if (account->getOffline()) return; |
51 | QList<Folder> *folders = wrapper->listFolders(); | 60 | QList<Folder> *folders = wrapper->listFolders(); |
52 | QListViewItem *child = firstChild(); | 61 | QListViewItem *child = firstChild(); |
53 | while ( child ) { | 62 | while ( child ) |
63 | { | ||
54 | QListViewItem *tmp = child; | 64 | QListViewItem *tmp = child; |
55 | child = child->nextSibling(); | 65 | child = child->nextSibling(); |
56 | delete tmp; | 66 | delete tmp; |
57 | } | 67 | } |
58 | Folder *it; | 68 | Folder *it; |
59 | QListViewItem*item = 0; | 69 | QListViewItem*item = 0; |
60 | for ( it = folders->first(); it; it = folders->next() ) { | 70 | for ( it = folders->first(); it; it = folders->next() ) |
71 | { | ||
61 | item = new POP3folderItem( it, this , item ); | 72 | item = new POP3folderItem( it, this , item ); |
62 | item->setSelectable(it->may_select()); | 73 | item->setSelectable(it->may_select()); |
63 | } | 74 | } |
64 | // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 75 | // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
65 | folders->setAutoDelete(false); | 76 | folders->setAutoDelete(false); |
66 | delete folders; | 77 | delete folders; |
67 | } | 78 | } |
68 | 79 | ||
69 | RecBody POP3viewItem::fetchBody( const RecMail &mail ) | 80 | RecBody POP3viewItem::fetchBody( const RecMail &mail ) |
70 | { | 81 | { |
71 | qDebug( "POP3 fetchBody" ); | 82 | qDebug( "POP3 fetchBody" ); |
72 | return wrapper->fetchBody( mail ); | 83 | return wrapper->fetchBody( mail ); |
73 | } | 84 | } |
74 | 85 | ||
75 | QPopupMenu * POP3viewItem::getContextMenu() | 86 | QPopupMenu * POP3viewItem::getContextMenu() |
76 | { | 87 | { |
77 | QPopupMenu *m = new QPopupMenu(0); | 88 | QPopupMenu *m = new QPopupMenu(0); |
78 | if (m) { | 89 | if (m) |
79 | if (!account->getOffline()) { | 90 | { |
91 | if (!account->getOffline()) | ||
92 | { | ||
80 | m->insertItem(QObject::tr("Disconnect",contextName),0); | 93 | m->insertItem(QObject::tr("Disconnect",contextName),0); |
81 | m->insertItem(QObject::tr("Set offline",contextName),1); | 94 | m->insertItem(QObject::tr("Set offline",contextName),1); |
82 | } else { | 95 | } |
96 | else | ||
97 | { | ||
83 | m->insertItem(QObject::tr("Set online",contextName),1); | 98 | m->insertItem(QObject::tr("Set online",contextName),1); |
84 | } | 99 | } |
85 | } | 100 | } |
86 | return m; | 101 | return m; |
87 | } | 102 | } |
88 | 103 | ||
89 | void POP3viewItem::disconnect() | 104 | void POP3viewItem::disconnect() |
90 | { | 105 | { |
91 | QListViewItem *child = firstChild(); | 106 | QListViewItem *child = firstChild(); |
92 | while ( child ) { | 107 | while ( child ) |
108 | { | ||
93 | QListViewItem *tmp = child; | 109 | QListViewItem *tmp = child; |
94 | child = child->nextSibling(); | 110 | child = child->nextSibling(); |
95 | delete tmp; | 111 | delete tmp; |
96 | } | 112 | } |
97 | wrapper->logout(); | 113 | wrapper->logout(); |
98 | } | 114 | } |
99 | 115 | ||
100 | void POP3viewItem::setOnOffline() | 116 | void POP3viewItem::setOnOffline() |
101 | { | 117 | { |
102 | if (!account->getOffline()) { | 118 | if (!account->getOffline()) |
119 | { | ||
103 | disconnect(); | 120 | disconnect(); |
104 | } | 121 | } |
105 | account->setOffline(!account->getOffline()); | 122 | account->setOffline(!account->getOffline()); |
106 | account->save(); | 123 | account->save(); |
107 | SETPIX(PIXMAP_POP3FOLDER); | 124 | SETPIX(PIXMAP_POP3FOLDER); |
108 | refresh(); | 125 | refresh(); |
109 | } | 126 | } |
110 | 127 | ||
111 | void POP3viewItem::contextMenuSelected(int which) | 128 | void POP3viewItem::contextMenuSelected(int which) |
112 | { | 129 | { |
113 | switch (which) { | 130 | switch (which) |
131 | { | ||
114 | case 0: | 132 | case 0: |
115 | disconnect(); | 133 | disconnect(); |
116 | break; | 134 | break; |
117 | case 1: | 135 | case 1: |
118 | setOnOffline(); | 136 | setOnOffline(); |
119 | break; | 137 | break; |
120 | } | 138 | } |
121 | } | 139 | } |
122 | 140 | ||
123 | POP3folderItem::~POP3folderItem() | 141 | POP3folderItem::~POP3folderItem() |
124 | { | 142 | {} |
125 | } | ||
126 | 143 | ||
127 | POP3folderItem::POP3folderItem( Folder *folderInit, POP3viewItem *parent , QListViewItem*after ) | 144 | POP3folderItem::POP3folderItem( Folder *folderInit, POP3viewItem *parent , QListViewItem*after ) |
128 | : AccountViewItem( parent,after ) | 145 | : AccountViewItem( parent,after ) |
129 | { | 146 | { |
130 | folder = folderInit; | 147 | folder = folderInit; |
131 | pop3 = parent; | 148 | pop3 = parent; |
132 | if (folder->getDisplayName().lower()!="inbox") { | 149 | if (folder->getDisplayName().lower()!="inbox") |
150 | { | ||
133 | setPixmap( 0, PIXMAP_POP3FOLDER ); | 151 | setPixmap( 0, PIXMAP_POP3FOLDER ); |
134 | } else { | 152 | } |
153 | else | ||
154 | { | ||
135 | setPixmap( 0, PIXMAP_INBOXFOLDER); | 155 | setPixmap( 0, PIXMAP_INBOXFOLDER); |
136 | } | 156 | } |
137 | setText( 0, folder->getDisplayName() ); | 157 | setText( 0, folder->getDisplayName() ); |
138 | } | 158 | } |
139 | 159 | ||
140 | void POP3folderItem::refresh(QList<RecMail>&target) | 160 | void POP3folderItem::refresh(QList<RecMail>&target) |
141 | { | 161 | { |
142 | if (folder->may_select()) | 162 | if (folder->may_select()) |
143 | pop3->getWrapper()->listMessages( folder->getName(),target ); | 163 | pop3->getWrapper()->listMessages( folder->getName(),target ); |
144 | } | 164 | } |
145 | 165 | ||
146 | RecBody POP3folderItem::fetchBody(const RecMail&aMail) | 166 | RecBody POP3folderItem::fetchBody(const RecMail&aMail) |
147 | { | 167 | { |
148 | return pop3->getWrapper()->fetchBody(aMail); | 168 | return pop3->getWrapper()->fetchBody(aMail); |
149 | } | 169 | } |
150 | 170 | ||
151 | QPopupMenu * POP3folderItem::getContextMenu() | 171 | QPopupMenu * POP3folderItem::getContextMenu() |
152 | { | 172 | { |
153 | QPopupMenu *m = new QPopupMenu(0); | 173 | QPopupMenu *m = new QPopupMenu(0); |
154 | if (m) { | 174 | if (m) |
175 | { | ||
155 | m->insertItem(QObject::tr("Refresh header list",contextName),0); | 176 | m->insertItem(QObject::tr("Refresh header list",contextName),0); |
156 | m->insertItem(QObject::tr("Delete all mails",contextName),1); | 177 | m->insertItem(QObject::tr("Delete all mails",contextName),1); |
157 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),2); | 178 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),2); |
158 | } | 179 | } |
159 | return m; | 180 | return m; |
160 | } | 181 | } |
161 | 182 | ||
162 | void POP3folderItem::downloadMails() | 183 | void POP3folderItem::downloadMails() |
163 | { | 184 | { |
164 | AccountView*bl = pop3->accountView(); | 185 | AccountView*bl = pop3->accountView(); |
165 | if (!bl) return; | 186 | if (!bl) return; |
166 | bl->downloadMails(folder,pop3->getWrapper()); | 187 | bl->downloadMails(folder,pop3->getWrapper()); |
167 | } | 188 | } |
168 | 189 | ||
169 | void POP3folderItem::contextMenuSelected(int which) | 190 | void POP3folderItem::contextMenuSelected(int which) |
170 | { | 191 | { |
171 | AccountView * view = (AccountView*)listView(); | 192 | AccountView * view = (AccountView*)listView(); |
172 | switch (which) { | 193 | switch (which) |
194 | { | ||
173 | case 0: | 195 | case 0: |
174 | /* must be 'cause pop3 lists are cached */ | 196 | /* must be 'cause pop3 lists are cached */ |
175 | pop3->getWrapper()->logout(); | 197 | pop3->getWrapper()->logout(); |
176 | view->refreshCurrent(); | 198 | view->refreshCurrent(); |
177 | break; | 199 | break; |
178 | case 1: | 200 | case 1: |
179 | deleteAllMail(pop3->getWrapper(),folder); | 201 | deleteAllMail(pop3->getWrapper(),folder); |
180 | break; | 202 | break; |
181 | case 2: | 203 | case 2: |
182 | downloadMails(); | 204 | downloadMails(); |
183 | break; | 205 | break; |
184 | default: | 206 | default: |
185 | break; | 207 | break; |
186 | } | 208 | } |
187 | } | 209 | } |
188 | 210 | ||
189 | /** | 211 | /** |
190 | * IMAP Account stuff | 212 | * IMAP Account stuff |
191 | */ | 213 | */ |
192 | IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent ) | 214 | IMAPviewItem::IMAPviewItem( IMAPaccount *a, AccountView *parent ) |
193 | : AccountViewItem( parent ) | 215 | : AccountViewItem( parent ) |
194 | { | 216 | { |
195 | account = a; | 217 | account = a; |
196 | wrapper = AbstractMail::getWrapper( account ); | 218 | wrapper = AbstractMail::getWrapper( account ); |
197 | SETPIX(PIXMAP_IMAPFOLDER); | 219 | SETPIX(PIXMAP_IMAPFOLDER); |
198 | setText( 0, account->getAccountName() ); | 220 | setText( 0, account->getAccountName() ); |
199 | setOpen( true ); | 221 | setOpen( true ); |
200 | } | 222 | } |
201 | 223 | ||
202 | IMAPviewItem::~IMAPviewItem() | 224 | IMAPviewItem::~IMAPviewItem() |
203 | { | 225 | { |
204 | delete wrapper; | 226 | delete wrapper; |
205 | } | 227 | } |
206 | 228 | ||
207 | AbstractMail *IMAPviewItem::getWrapper() | 229 | AbstractMail *IMAPviewItem::getWrapper() |
208 | { | 230 | { |
209 | return wrapper; | 231 | return wrapper; |
210 | } | 232 | } |
211 | 233 | ||
212 | void IMAPviewItem::refresh(QList<RecMail>&) | 234 | void IMAPviewItem::refresh(QList<RecMail>&) |
213 | { | 235 | { |
214 | refreshFolders(false); | 236 | refreshFolders(false); |
215 | } | 237 | } |
216 | 238 | ||
217 | const QStringList&IMAPviewItem::subFolders() | 239 | const QStringList&IMAPviewItem::subFolders() |
218 | { | 240 | { |
219 | return currentFolders; | 241 | return currentFolders; |
220 | } | 242 | } |
221 | 243 | ||
222 | void IMAPviewItem::refreshFolders(bool force) | 244 | void IMAPviewItem::refreshFolders(bool force) |
223 | { | 245 | { |
224 | if (childCount()>0 && force==false) return; | 246 | if (childCount()>0 && force==false) return; |
225 | if (account->getOffline()) return; | 247 | if (account->getOffline()) return; |
226 | 248 | ||
227 | removeChilds(); | 249 | removeChilds(); |
228 | currentFolders.clear(); | 250 | currentFolders.clear(); |
229 | QList<Folder> *folders = wrapper->listFolders(); | 251 | QList<Folder> *folders = wrapper->listFolders(); |
230 | 252 | ||
231 | Folder *it; | 253 | Folder *it; |
232 | QListViewItem*item = 0; | 254 | QListViewItem*item = 0; |
233 | QListViewItem*titem = 0; | 255 | QListViewItem*titem = 0; |
234 | QString fname,del,search; | 256 | QString fname,del,search; |
235 | int pos; | 257 | int pos; |
236 | // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 258 | // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
237 | folders->setAutoDelete(false); | 259 | folders->setAutoDelete(false); |
238 | 260 | ||
239 | for ( it = folders->first(); it; it = folders->next() ) { | 261 | for ( it = folders->first(); it; it = folders->next() ) |
240 | if (it->getDisplayName().lower()=="inbox") { | 262 | { |
263 | if (it->getDisplayName().lower()=="inbox") | ||
264 | { | ||
241 | item = new IMAPfolderItem( it, this , item ); | 265 | item = new IMAPfolderItem( it, this , item ); |
242 | folders->remove(it); | 266 | folders->remove(it); |
243 | qDebug("inbox found"); | 267 | qDebug("inbox found"); |
244 | break; | 268 | break; |
245 | } | 269 | } |
246 | } | 270 | } |
247 | for ( it = folders->first(); it; it = folders->next() ) { | 271 | for ( it = folders->first(); it; it = folders->next() ) |
272 | { | ||
248 | fname = it->getDisplayName(); | 273 | fname = it->getDisplayName(); |
249 | currentFolders.append(it->getName()); | 274 | currentFolders.append(it->getName()); |
250 | pos = fname.findRev(it->Separator()); | 275 | pos = fname.findRev(it->Separator()); |
251 | if (pos != -1) { | 276 | if (pos != -1) |
277 | { | ||
252 | fname = fname.left(pos); | 278 | fname = fname.left(pos); |
253 | } | 279 | } |
254 | IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname); | 280 | IMAPfolderItem*pitem = (IMAPfolderItem*)findSubItem(fname); |
255 | if (pitem) { | 281 | if (pitem) |
282 | { | ||
256 | titem = item; | 283 | titem = item; |
257 | item = new IMAPfolderItem(it,pitem,pitem->firstChild(),this); | 284 | item = new IMAPfolderItem(it,pitem,pitem->firstChild(),this); |
258 | /* setup the short name */ | 285 | /* setup the short name */ |
259 | item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1)); | 286 | item->setText(0,it->getDisplayName().right(it->getDisplayName().length()-pos-1)); |
260 | item = titem; | 287 | item = titem; |
261 | } else { | 288 | } |
289 | else | ||
290 | { | ||
262 | item = new IMAPfolderItem( it, this , item ); | 291 | item = new IMAPfolderItem( it, this , item ); |
263 | } | 292 | } |
264 | } | 293 | } |
265 | delete folders; | 294 | delete folders; |
266 | } | 295 | } |
267 | 296 | ||
268 | QPopupMenu * IMAPviewItem::getContextMenu() | 297 | QPopupMenu * IMAPviewItem::getContextMenu() |
269 | { | 298 | { |
270 | QPopupMenu *m = new QPopupMenu(0); | 299 | QPopupMenu *m = new QPopupMenu(0); |
271 | if (m) { | 300 | if (m) |
272 | if (!account->getOffline()) { | 301 | { |
302 | if (!account->getOffline()) | ||
303 | { | ||
273 | m->insertItem(QObject::tr("Refresh folder list",contextName),0); | 304 | m->insertItem(QObject::tr("Refresh folder list",contextName),0); |
274 | m->insertItem(QObject::tr("Create new folder",contextName),1); | 305 | m->insertItem(QObject::tr("Create new folder",contextName),1); |
275 | m->insertSeparator(); | 306 | m->insertSeparator(); |
276 | m->insertItem(QObject::tr("Disconnect",contextName),2); | 307 | m->insertItem(QObject::tr("Disconnect",contextName),2); |
277 | m->insertItem(QObject::tr("Set offline",contextName),3); | 308 | m->insertItem(QObject::tr("Set offline",contextName),3); |
278 | } else { | 309 | } |
310 | else | ||
311 | { | ||
279 | m->insertItem(QObject::tr("Set online",contextName),3); | 312 | m->insertItem(QObject::tr("Set online",contextName),3); |
280 | } | 313 | } |
281 | } | 314 | } |
282 | return m; | 315 | return m; |
283 | } | 316 | } |
284 | 317 | ||
285 | void IMAPviewItem::createNewFolder() | 318 | void IMAPviewItem::createNewFolder() |
286 | { | 319 | { |
287 | Newmdirdlg ndirdlg; | 320 | Newmdirdlg ndirdlg; |
288 | ndirdlg.showMaximized(); | 321 | if ( QPEApplication::execDialog( &ndirdlg )) |
289 | if (ndirdlg.exec()) { | 322 | { |
290 | QString ndir = ndirdlg.Newdir(); | 323 | QString ndir = ndirdlg.Newdir(); |
291 | bool makesubs = ndirdlg.subpossible(); | 324 | bool makesubs = ndirdlg.subpossible(); |
292 | QString delemiter = "/"; | 325 | QString delemiter = "/"; |
293 | IMAPfolderItem*item = (IMAPfolderItem*)firstChild(); | 326 | IMAPfolderItem*item = (IMAPfolderItem*)firstChild(); |
294 | if (item) { | 327 | if (item) |
328 | { | ||
295 | delemiter = item->Delemiter(); | 329 | delemiter = item->Delemiter(); |
296 | } | 330 | } |
297 | if (wrapper->createMbox(ndir,0,delemiter,makesubs)) { | 331 | if (wrapper->createMbox(ndir,0,delemiter,makesubs)) |
332 | { | ||
298 | refreshFolders(true); | 333 | refreshFolders(true); |
299 | } | 334 | } |
300 | } | 335 | } |
301 | } | 336 | } |
302 | 337 | ||
303 | void IMAPviewItem::contextMenuSelected(int id) | 338 | void IMAPviewItem::contextMenuSelected(int id) |
304 | { | 339 | { |
305 | qDebug("Id selected: %i",id); | 340 | qDebug("Id selected: %i",id); |
306 | switch (id) { | 341 | switch (id) |
342 | { | ||
307 | case 0: | 343 | case 0: |
308 | refreshFolders(true); | 344 | refreshFolders(true); |
309 | break; | 345 | break; |
310 | case 1: | 346 | case 1: |
311 | createNewFolder(); | 347 | createNewFolder(); |
312 | break; | 348 | break; |
313 | case 2: | 349 | case 2: |
314 | removeChilds(); | 350 | removeChilds(); |
315 | wrapper->logout(); | 351 | wrapper->logout(); |
316 | break; | 352 | break; |
317 | case 3: | 353 | case 3: |
318 | if (account->getOffline()==false) { | 354 | if (account->getOffline()==false) |
355 | { | ||
319 | removeChilds(); | 356 | removeChilds(); |
320 | wrapper->logout(); | 357 | wrapper->logout(); |
321 | } | 358 | } |
322 | account->setOffline(!account->getOffline()); | 359 | account->setOffline(!account->getOffline()); |
323 | account->save(); | 360 | account->save(); |
324 | SETPIX(PIXMAP_IMAPFOLDER); | 361 | SETPIX(PIXMAP_IMAPFOLDER); |
325 | refreshFolders(false); | 362 | refreshFolders(false); |
326 | break; | 363 | break; |
327 | default: | 364 | default: |
328 | break; | 365 | break; |
329 | } | 366 | } |
330 | } | 367 | } |
331 | 368 | ||
332 | RecBody IMAPviewItem::fetchBody(const RecMail&) | 369 | RecBody IMAPviewItem::fetchBody(const RecMail&) |
333 | { | 370 | { |
334 | return RecBody(); | 371 | return RecBody(); |
335 | } | 372 | } |
336 | 373 | ||
337 | bool IMAPviewItem::offline() | 374 | bool IMAPviewItem::offline() |
338 | { | 375 | { |
339 | return account->getOffline(); | 376 | return account->getOffline(); |
340 | } | 377 | } |
341 | 378 | ||
342 | IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after ) | 379 | IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPviewItem *parent , QListViewItem*after ) |
343 | : AccountViewItem( parent , after ) | 380 | : AccountViewItem( parent , after ) |
344 | { | 381 | { |
345 | folder = folderInit; | 382 | folder = folderInit; |
346 | imap = parent; | 383 | imap = parent; |
347 | if (folder->getDisplayName().lower()!="inbox") { | 384 | if (folder->getDisplayName().lower()!="inbox") |
385 | { | ||
348 | setPixmap( 0, PIXMAP_IMAPFOLDER ); | 386 | setPixmap( 0, PIXMAP_IMAPFOLDER ); |
349 | } else { | 387 | } |
388 | else | ||
389 | { | ||
350 | setPixmap( 0, PIXMAP_INBOXFOLDER); | 390 | setPixmap( 0, PIXMAP_INBOXFOLDER); |
351 | } | 391 | } |
352 | setText( 0, folder->getDisplayName() ); | 392 | setText( 0, folder->getDisplayName() ); |
353 | } | 393 | } |
354 | 394 | ||
355 | IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ) | 395 | IMAPfolderItem::IMAPfolderItem( Folder *folderInit, IMAPfolderItem *parent , QListViewItem*after, IMAPviewItem *master ) |
356 | : AccountViewItem( parent,after ) | 396 | : AccountViewItem( parent,after ) |
357 | { | 397 | { |
358 | folder = folderInit; | 398 | folder = folderInit; |
359 | imap = master; | 399 | imap = master; |
360 | if (folder->getDisplayName().lower()!="inbox") { | 400 | if (folder->getDisplayName().lower()!="inbox") |
401 | { | ||
361 | setPixmap( 0, PIXMAP_IMAPFOLDER ); | 402 | setPixmap( 0, PIXMAP_IMAPFOLDER ); |
362 | } else { | 403 | } |
404 | else | ||
405 | { | ||
363 | setPixmap( 0, PIXMAP_INBOXFOLDER); | 406 | setPixmap( 0, PIXMAP_INBOXFOLDER); |
364 | } | 407 | } |
365 | setText( 0, folder->getDisplayName() ); | 408 | setText( 0, folder->getDisplayName() ); |
366 | } | 409 | } |
367 | 410 | ||
368 | IMAPfolderItem::~IMAPfolderItem() | 411 | IMAPfolderItem::~IMAPfolderItem() |
369 | { | 412 | {} |
370 | } | ||
371 | 413 | ||
372 | const QString& IMAPfolderItem::Delemiter()const | 414 | const QString& IMAPfolderItem::Delemiter()const |
373 | { | 415 | { |
374 | return folder->Separator(); | 416 | return folder->Separator(); |
375 | } | 417 | } |
376 | 418 | ||
377 | void IMAPfolderItem::refresh(QList<RecMail>&target) | 419 | void IMAPfolderItem::refresh(QList<RecMail>&target) |
378 | { | 420 | { |
379 | if (folder->may_select()) { | 421 | if (folder->may_select()) |
422 | { | ||
380 | imap->getWrapper()->listMessages( folder->getName(),target ); | 423 | imap->getWrapper()->listMessages( folder->getName(),target ); |
381 | } else { | 424 | } |
425 | else | ||
426 | { | ||
382 | target.clear(); | 427 | target.clear(); |
383 | } | 428 | } |
384 | } | 429 | } |
385 | 430 | ||
386 | RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) | 431 | RecBody IMAPfolderItem::fetchBody(const RecMail&aMail) |
387 | { | 432 | { |
388 | return imap->getWrapper()->fetchBody(aMail); | 433 | return imap->getWrapper()->fetchBody(aMail); |
389 | } | 434 | } |
390 | 435 | ||
391 | QPopupMenu * IMAPfolderItem::getContextMenu() | 436 | QPopupMenu * IMAPfolderItem::getContextMenu() |
392 | { | 437 | { |
393 | QPopupMenu *m = new QPopupMenu(0); | 438 | QPopupMenu *m = new QPopupMenu(0); |
394 | if (m) { | 439 | if (m) |
395 | if (folder->may_select()) { | 440 | { |
441 | if (folder->may_select()) | ||
442 | { | ||
396 | m->insertItem(QObject::tr("Refresh header list",contextName),0); | 443 | m->insertItem(QObject::tr("Refresh header list",contextName),0); |
397 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),4); | 444 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),4); |
398 | m->insertItem(QObject::tr("Delete all mails",contextName),1); | 445 | m->insertItem(QObject::tr("Delete all mails",contextName),1); |
399 | } | 446 | } |
400 | if (folder->no_inferior()==false) { | 447 | if (folder->no_inferior()==false) |
448 | { | ||
401 | m->insertItem(QObject::tr("Create new subfolder",contextName),2); | 449 | m->insertItem(QObject::tr("Create new subfolder",contextName),2); |
402 | } | 450 | } |
403 | if (folder->getDisplayName().lower()!="inbox") { | 451 | if (folder->getDisplayName().lower()!="inbox") |
452 | { | ||
404 | m->insertItem(QObject::tr("Delete folder",contextName),3); | 453 | m->insertItem(QObject::tr("Delete folder",contextName),3); |
405 | } | 454 | } |
406 | } | 455 | } |
407 | return m; | 456 | return m; |
408 | } | 457 | } |
409 | 458 | ||
410 | void IMAPfolderItem::createNewFolder() | 459 | void IMAPfolderItem::createNewFolder() |
411 | { | 460 | { |
412 | Newmdirdlg ndirdlg; | 461 | Newmdirdlg ndirdlg; |
413 | ndirdlg.showMaximized(); | 462 | if ( QPEApplication::execDialog( &ndirdlg ) ) |
414 | if (ndirdlg.exec()) { | 463 | { |
415 | QString ndir = ndirdlg.Newdir(); | 464 | QString ndir = ndirdlg.Newdir(); |
416 | bool makesubs = ndirdlg.subpossible(); | 465 | bool makesubs = ndirdlg.subpossible(); |
417 | QString delemiter = Delemiter(); | 466 | QString delemiter = Delemiter(); |
418 | if (imap->wrapper->createMbox(ndir,folder,delemiter,makesubs)) { | 467 | if (imap->wrapper->createMbox(ndir,folder,delemiter,makesubs)) |
468 | { | ||
419 | imap->refreshFolders(true); | 469 | imap->refreshFolders(true); |
420 | } | 470 | } |
421 | } | 471 | } |
422 | } | 472 | } |
423 | 473 | ||
424 | void IMAPfolderItem::deleteFolder() | 474 | void IMAPfolderItem::deleteFolder() |
425 | { | 475 | { |
426 | int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), | 476 | int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), |
427 | QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), | 477 | QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), |
428 | QObject::tr("Yes",contextName), | 478 | QObject::tr("Yes",contextName), |
429 | QObject::tr("No",contextName),QString::null,1,1); | 479 | QObject::tr("No",contextName),QString::null,1,1); |
430 | qDebug("Auswahl: %i",yesno); | 480 | qDebug("Auswahl: %i",yesno); |
431 | if (yesno == 0) { | 481 | if (yesno == 0) |
432 | if (imap->getWrapper()->deleteMbox(folder)) { | 482 | { |
483 | if (imap->getWrapper()->deleteMbox(folder)) | ||
484 | { | ||
433 | QListView*v=listView(); | 485 | QListView*v=listView(); |
434 | IMAPviewItem * box = imap; | 486 | IMAPviewItem * box = imap; |
435 | /* be carefull - after that this object is destroyd so don't use | 487 | /* be carefull - after that this object is destroyd so don't use |
436 | * any member of it after that call!!*/ | 488 | * any member of it after that call!!*/ |
437 | imap->refreshFolders(true); | 489 | imap->refreshFolders(true); |
438 | if (v) { | 490 | if (v) |
491 | { | ||
439 | v->setSelected(box,true); | 492 | v->setSelected(box,true); |
440 | } | 493 | } |
441 | } | 494 | } |
442 | } | 495 | } |
443 | } | 496 | } |
444 | 497 | ||
445 | void IMAPfolderItem::downloadMails() | 498 | void IMAPfolderItem::downloadMails() |
446 | { | 499 | { |
447 | AccountView*bl = imap->accountView(); | 500 | AccountView*bl = imap->accountView(); |
448 | if (!bl) return; | 501 | if (!bl) return; |
449 | bl->downloadMails(folder,imap->getWrapper()); | 502 | bl->downloadMails(folder,imap->getWrapper()); |
450 | } | 503 | } |
451 | 504 | ||
452 | void IMAPfolderItem::contextMenuSelected(int id) | 505 | void IMAPfolderItem::contextMenuSelected(int id) |
453 | { | 506 | { |
454 | qDebug("Selected id: %i",id); | 507 | qDebug("Selected id: %i",id); |
455 | AccountView * view = (AccountView*)listView(); | 508 | AccountView * view = (AccountView*)listView(); |
456 | switch(id) { | 509 | switch(id) |
510 | { | ||
457 | case 0: | 511 | case 0: |
458 | view->refreshCurrent(); | 512 | view->refreshCurrent(); |
459 | break; | 513 | break; |
460 | case 1: | 514 | case 1: |
461 | deleteAllMail(imap->getWrapper(),folder); | 515 | deleteAllMail(imap->getWrapper(),folder); |
462 | break; | 516 | break; |
463 | case 2: | 517 | case 2: |
464 | createNewFolder(); | 518 | createNewFolder(); |
465 | break; | 519 | break; |
466 | case 3: | 520 | case 3: |
467 | deleteFolder(); | 521 | deleteFolder(); |
468 | break; | 522 | break; |
469 | case 4: | 523 | case 4: |
470 | downloadMails(); | 524 | downloadMails(); |
471 | break; | 525 | break; |
472 | default: | 526 | default: |
473 | break; | 527 | break; |
474 | } | 528 | } |
475 | } | 529 | } |
476 | 530 | ||
477 | /** | 531 | /** |
478 | * MH Account stuff | 532 | * MH Account stuff |
479 | */ | 533 | */ |
480 | /* MH is a little bit different - the top folder can contains messages other than in IMAP and | 534 | /* MH is a little bit different - the top folder can contains messages other than in IMAP and |
481 | POP3 and MBOX */ | 535 | POP3 and MBOX */ |
482 | MHviewItem::MHviewItem( const QString&aPath, AccountView *parent ) | 536 | MHviewItem::MHviewItem( const QString&aPath, AccountView *parent ) |
483 | : AccountViewItem( parent ) | 537 | : AccountViewItem( parent ) |
484 | { | 538 | { |
485 | m_Path = aPath; | 539 | m_Path = aPath; |
486 | /* be carefull - the space within settext is wanted - thats why the string twice */ | 540 | /* be carefull - the space within settext is wanted - thats why the string twice */ |
487 | wrapper = AbstractMail::getWrapper( m_Path,"Local Folders"); | 541 | wrapper = AbstractMail::getWrapper( m_Path,"Local Folders"); |
488 | setPixmap( 0, PIXMAP_LOCALFOLDER ); | 542 | setPixmap( 0, PIXMAP_LOCALFOLDER ); |
489 | setText( 0, " Local Folders" ); | 543 | setText( 0, " Local Folders" ); |
490 | setOpen( true ); | 544 | setOpen( true ); |
491 | folder = 0; | 545 | folder = 0; |
492 | } | 546 | } |
493 | 547 | ||
494 | MHviewItem::~MHviewItem() | 548 | MHviewItem::~MHviewItem() |
495 | { | 549 | { |
496 | delete wrapper; | 550 | delete wrapper; |
497 | } | 551 | } |
498 | 552 | ||
499 | AbstractMail *MHviewItem::getWrapper() | 553 | AbstractMail *MHviewItem::getWrapper() |
500 | { | 554 | { |
501 | return wrapper; | 555 | return wrapper; |
502 | } | 556 | } |
503 | 557 | ||
504 | void MHviewItem::refresh( QList<RecMail> & target) | 558 | void MHviewItem::refresh( QList<RecMail> & target) |
505 | { | 559 | { |
506 | refresh(false); | 560 | refresh(false); |
507 | getWrapper()->listMessages( "",target ); | 561 | getWrapper()->listMessages( "",target ); |
508 | } | 562 | } |
509 | 563 | ||
510 | void MHviewItem::refresh(bool force) | 564 | void MHviewItem::refresh(bool force) |
511 | { | 565 | { |
512 | if (childCount()>0 && force==false) return; | 566 | if (childCount()>0 && force==false) return; |
513 | removeChilds(); | 567 | removeChilds(); |
514 | currentFolders.clear(); | 568 | currentFolders.clear(); |
515 | QList<Folder> *folders = wrapper->listFolders(); | 569 | QList<Folder> *folders = wrapper->listFolders(); |
516 | Folder *it; | 570 | Folder *it; |
517 | MHfolderItem*item = 0; | 571 | MHfolderItem*item = 0; |
518 | MHfolderItem*pmaster = 0; | 572 | MHfolderItem*pmaster = 0; |
519 | QString fname = ""; | 573 | QString fname = ""; |
520 | int pos; | 574 | int pos; |
521 | for ( it = folders->first(); it; it = folders->next() ) { | 575 | for ( it = folders->first(); it; it = folders->next() ) |
576 | { | ||
522 | fname = it->getDisplayName(); | 577 | fname = it->getDisplayName(); |
523 | /* this folder itself */ | 578 | /* this folder itself */ |
524 | if (fname=="/") { | 579 | if (fname=="/") |
580 | { | ||
525 | currentFolders.append(fname); | 581 | currentFolders.append(fname); |
526 | folder = it; | 582 | folder = it; |
527 | continue; | 583 | continue; |
528 | } | 584 | } |
529 | currentFolders.append(fname); | 585 | currentFolders.append(fname); |
530 | pos = fname.findRev("/"); | 586 | pos = fname.findRev("/"); |
531 | if (pos > 0) { | 587 | if (pos > 0) |
588 | { | ||
532 | fname = fname.left(pos); | 589 | fname = fname.left(pos); |
533 | pmaster = (MHfolderItem*)findSubItem(fname); | 590 | pmaster = (MHfolderItem*)findSubItem(fname); |
534 | } else { | 591 | } |
592 | else | ||
593 | { | ||
535 | pmaster = 0; | 594 | pmaster = 0; |
536 | } | 595 | } |
537 | if (pmaster) { | 596 | if (pmaster) |
597 | { | ||
538 | item = new MHfolderItem( it, pmaster, item, this ); | 598 | item = new MHfolderItem( it, pmaster, item, this ); |
539 | } else { | 599 | } |
600 | else | ||
601 | { | ||
540 | item = new MHfolderItem( it, this , item ); | 602 | item = new MHfolderItem( it, this , item ); |
541 | } | 603 | } |
542 | item->setSelectable(it->may_select()); | 604 | item->setSelectable(it->may_select()); |
543 | } | 605 | } |
544 | // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 606 | // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
545 | folders->setAutoDelete(false); | 607 | folders->setAutoDelete(false); |
546 | delete folders; | 608 | delete folders; |
547 | } | 609 | } |
548 | 610 | ||
549 | RecBody MHviewItem::fetchBody( const RecMail &mail ) | 611 | RecBody MHviewItem::fetchBody( const RecMail &mail ) |
550 | { | 612 | { |
551 | qDebug( "MH fetchBody" ); | 613 | qDebug( "MH fetchBody" ); |
552 | return wrapper->fetchBody( mail ); | 614 | return wrapper->fetchBody( mail ); |
553 | } | 615 | } |
554 | 616 | ||
555 | QPopupMenu * MHviewItem::getContextMenu() | 617 | QPopupMenu * MHviewItem::getContextMenu() |
556 | { | 618 | { |
557 | QPopupMenu *m = new QPopupMenu(0); | 619 | QPopupMenu *m = new QPopupMenu(0); |
558 | if (m) { | 620 | if (m) |
621 | { | ||
559 | m->insertItem(QObject::tr("Refresh folder list",contextName),0); | 622 | m->insertItem(QObject::tr("Refresh folder list",contextName),0); |
560 | m->insertItem(QObject::tr("Create new folder",contextName),1); | 623 | m->insertItem(QObject::tr("Create new folder",contextName),1); |
561 | m->insertItem(QObject::tr("Delete all mails",contextName),2); | 624 | m->insertItem(QObject::tr("Delete all mails",contextName),2); |
562 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),3); | 625 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),3); |
563 | } | 626 | } |
564 | return m; | 627 | return m; |
565 | } | 628 | } |
566 | 629 | ||
567 | void MHviewItem::createFolder() | 630 | void MHviewItem::createFolder() |
568 | { | 631 | { |
569 | Newmdirdlg ndirdlg(0,0,true); | 632 | Newmdirdlg ndirdlg(0,0,true); |
570 | ndirdlg.showMaximized(); | 633 | if ( QPEApplication::execDialog( &ndirdlg ) ) |
571 | if (ndirdlg.exec()) { | 634 | { |
572 | QString ndir = ndirdlg.Newdir(); | 635 | QString ndir = ndirdlg.Newdir(); |
573 | if (wrapper->createMbox(ndir)) { | 636 | if (wrapper->createMbox(ndir)) |
637 | { | ||
574 | refresh(true); | 638 | refresh(true); |
575 | } | 639 | } |
576 | } | 640 | } |
577 | } | 641 | } |
578 | 642 | ||
579 | void MHviewItem::downloadMails() | 643 | void MHviewItem::downloadMails() |
580 | { | 644 | { |
581 | AccountView*bl = accountView(); | 645 | AccountView*bl = accountView(); |
582 | if (!bl) return; | 646 | if (!bl) return; |
583 | bl->downloadMails(folder,getWrapper()); | 647 | bl->downloadMails(folder,getWrapper()); |
584 | } | 648 | } |
585 | 649 | ||
586 | QStringList MHviewItem::subFolders() | 650 | QStringList MHviewItem::subFolders() |
587 | { | 651 | { |
588 | return currentFolders; | 652 | return currentFolders; |
589 | } | 653 | } |
590 | 654 | ||
591 | void MHviewItem::contextMenuSelected(int which) | 655 | void MHviewItem::contextMenuSelected(int which) |
592 | { | 656 | { |
593 | switch (which) { | 657 | switch (which) |
658 | { | ||
594 | case 0: | 659 | case 0: |
595 | refresh(true); | 660 | refresh(true); |
596 | break; | 661 | break; |
597 | case 1: | 662 | case 1: |
598 | createFolder(); | 663 | createFolder(); |
599 | break; | 664 | break; |
600 | case 2: | 665 | case 2: |
601 | deleteAllMail(getWrapper(),folder); | 666 | deleteAllMail(getWrapper(),folder); |
602 | break; | 667 | break; |
603 | case 3: | 668 | case 3: |
604 | downloadMails(); | 669 | downloadMails(); |
605 | break; | 670 | break; |
606 | default: | 671 | default: |
607 | break; | 672 | break; |
608 | } | 673 | } |
609 | } | 674 | } |
610 | 675 | ||
611 | MHfolderItem::~MHfolderItem() | 676 | MHfolderItem::~MHfolderItem() |
612 | { | 677 | {} |
613 | } | ||
614 | 678 | ||
615 | MHfolderItem::MHfolderItem( Folder *folderInit, MHviewItem *parent , QListViewItem*after ) | 679 | MHfolderItem::MHfolderItem( Folder *folderInit, MHviewItem *parent , QListViewItem*after ) |
616 | : AccountViewItem( parent,after ) | 680 | : AccountViewItem( parent,after ) |
617 | { | 681 | { |
618 | folder = folderInit; | 682 | folder = folderInit; |
619 | mbox = parent; | 683 | mbox = parent; |
620 | initName(); | 684 | initName(); |
621 | } | 685 | } |
622 | 686 | ||
623 | MHfolderItem::MHfolderItem( Folder *folderInit, MHfolderItem *parent, QListViewItem*after, MHviewItem*master) | 687 | MHfolderItem::MHfolderItem( Folder *folderInit, MHfolderItem *parent, QListViewItem*after, MHviewItem*master) |
624 | : AccountViewItem( parent,after ) | 688 | : AccountViewItem( parent,after ) |
625 | { | 689 | { |
626 | folder = folderInit; | 690 | folder = folderInit; |
627 | mbox = master; | 691 | mbox = master; |
628 | initName(); | 692 | initName(); |
629 | } | 693 | } |
630 | 694 | ||
631 | void MHfolderItem::initName() | 695 | void MHfolderItem::initName() |
632 | { | 696 | { |
633 | QString bName = folder->getDisplayName(); | 697 | QString bName = folder->getDisplayName(); |
634 | if (bName.startsWith("/")&&bName.length()>1) { | 698 | if (bName.startsWith("/")&&bName.length()>1) |
699 | { | ||
635 | bName.replace(0,1,""); | 700 | bName.replace(0,1,""); |
636 | } | 701 | } |
637 | int pos = bName.findRev("/"); | 702 | int pos = bName.findRev("/"); |
638 | if (pos > 0) { | 703 | if (pos > 0) |
704 | { | ||
639 | bName.replace(0,pos+1,""); | 705 | bName.replace(0,pos+1,""); |
640 | } | 706 | } |
641 | if (bName.lower() == "outgoing") { | 707 | if (bName.lower() == "outgoing") |
708 | { | ||
642 | setPixmap( 0, PIXMAP_OUTBOXFOLDER ); | 709 | setPixmap( 0, PIXMAP_OUTBOXFOLDER ); |
643 | } else if (bName.lower() == "inbox") { | 710 | } |
711 | else if (bName.lower() == "inbox") | ||
712 | { | ||
644 | setPixmap( 0, PIXMAP_INBOXFOLDER); | 713 | setPixmap( 0, PIXMAP_INBOXFOLDER); |
645 | } else { | 714 | } |
715 | else | ||
716 | { | ||
646 | setPixmap( 0, PIXMAP_MBOXFOLDER ); | 717 | setPixmap( 0, PIXMAP_MBOXFOLDER ); |
647 | } | 718 | } |
648 | setText( 0, bName ); | 719 | setText( 0, bName ); |
649 | } | 720 | } |
650 | 721 | ||
651 | Folder*MHfolderItem::getFolder() | 722 | Folder*MHfolderItem::getFolder() |
652 | { | 723 | { |
653 | return folder; | 724 | return folder; |
654 | } | 725 | } |
655 | 726 | ||
656 | void MHfolderItem::refresh(QList<RecMail>&target) | 727 | void MHfolderItem::refresh(QList<RecMail>&target) |
657 | { | 728 | { |
658 | if (folder->may_select()) | 729 | if (folder->may_select()) |
659 | mbox->getWrapper()->listMessages( folder->getName(),target ); | 730 | mbox->getWrapper()->listMessages( folder->getName(),target ); |
660 | } | 731 | } |
661 | 732 | ||
662 | RecBody MHfolderItem::fetchBody(const RecMail&aMail) | 733 | RecBody MHfolderItem::fetchBody(const RecMail&aMail) |
663 | { | 734 | { |
664 | return mbox->getWrapper()->fetchBody(aMail); | 735 | return mbox->getWrapper()->fetchBody(aMail); |
665 | } | 736 | } |
666 | 737 | ||
667 | void MHfolderItem::deleteFolder() | 738 | void MHfolderItem::deleteFolder() |
668 | { | 739 | { |
669 | int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), | 740 | int yesno = QMessageBox::warning(0,QObject::tr("Delete folder",contextName), |
670 | QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), | 741 | QObject::tr("<center>Realy delete folder <br><b>%1</b><br>and all if it content?</center>",contextName).arg(folder->getDisplayName()), |
671 | QObject::tr("Yes",contextName), | 742 | QObject::tr("Yes",contextName), |
672 | QObject::tr("No",contextName),QString::null,1,1); | 743 | QObject::tr("No",contextName),QString::null,1,1); |
673 | qDebug("Auswahl: %i",yesno); | 744 | qDebug("Auswahl: %i",yesno); |
674 | if (yesno == 0) { | 745 | if (yesno == 0) |
675 | if (mbox->getWrapper()->deleteMbox(folder)) { | 746 | { |
747 | if (mbox->getWrapper()->deleteMbox(folder)) | ||
748 | { | ||
676 | QListView*v=listView(); | 749 | QListView*v=listView(); |
677 | MHviewItem * box = mbox; | 750 | MHviewItem * box = mbox; |
678 | /* be carefull - after that this object is destroyd so don't use | 751 | /* be carefull - after that this object is destroyd so don't use |
679 | * any member of it after that call!!*/ | 752 | * any member of it after that call!!*/ |
680 | mbox->refresh(true); | 753 | mbox->refresh(true); |
681 | if (v) { | 754 | if (v) |
755 | { | ||
682 | v->setSelected(box,true); | 756 | v->setSelected(box,true); |
683 | } | 757 | } |
684 | } | 758 | } |
685 | } | 759 | } |
686 | } | 760 | } |
687 | 761 | ||
688 | QPopupMenu * MHfolderItem::getContextMenu() | 762 | QPopupMenu * MHfolderItem::getContextMenu() |
689 | { | 763 | { |
690 | QPopupMenu *m = new QPopupMenu(0); | 764 | QPopupMenu *m = new QPopupMenu(0); |
691 | if (m) { | 765 | if (m) |
766 | { | ||
692 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),2); | 767 | m->insertItem(QObject::tr("Move/Copie all mails",contextName),2); |
693 | m->insertItem(QObject::tr("Delete all mails",contextName),0); | 768 | m->insertItem(QObject::tr("Delete all mails",contextName),0); |
694 | m->insertItem(QObject::tr("Create new subfolder",contextName),3); | 769 | m->insertItem(QObject::tr("Create new subfolder",contextName),3); |
695 | m->insertItem(QObject::tr("Delete folder",contextName),1); | 770 | m->insertItem(QObject::tr("Delete folder",contextName),1); |
696 | } | 771 | } |
697 | return m; | 772 | return m; |
698 | } | 773 | } |
699 | 774 | ||
700 | void MHfolderItem::downloadMails() | 775 | void MHfolderItem::downloadMails() |
701 | { | 776 | { |
702 | AccountView*bl = mbox->accountView(); | 777 | AccountView*bl = mbox->accountView(); |
703 | if (!bl) return; | 778 | if (!bl) return; |
704 | bl->downloadMails(folder,mbox->getWrapper()); | 779 | bl->downloadMails(folder,mbox->getWrapper()); |
705 | } | 780 | } |
706 | 781 | ||
707 | void MHfolderItem::createFolder() | 782 | void MHfolderItem::createFolder() |
708 | { | 783 | { |
709 | Newmdirdlg ndirdlg(0,0,true); | 784 | Newmdirdlg ndirdlg(0,0,true); |
710 | ndirdlg.showMaximized(); | 785 | if ( QPEApplication::execDialog( &ndirdlg ) ) |
711 | if (ndirdlg.exec()) { | 786 | { |
712 | QString ndir = ndirdlg.Newdir(); | 787 | QString ndir = ndirdlg.Newdir(); |
713 | if (mbox->getWrapper()->createMbox(ndir,folder)) { | 788 | if (mbox->getWrapper()->createMbox(ndir,folder)) |
789 | { | ||
714 | QListView*v=listView(); | 790 | QListView*v=listView(); |
715 | MHviewItem * box = mbox; | 791 | MHviewItem * box = mbox; |
716 | /* be carefull - after that this object is destroyd so don't use | 792 | /* be carefull - after that this object is destroyd so don't use |
717 | * any member of it after that call!!*/ | 793 | * any member of it after that call!!*/ |
718 | mbox->refresh(true); | 794 | mbox->refresh(true); |
719 | if (v) { | 795 | if (v) |
796 | { | ||
720 | v->setSelected(box,true); | 797 | v->setSelected(box,true); |
721 | } | 798 | } |
722 | } | 799 | } |
723 | } | 800 | } |
724 | } | 801 | } |
725 | 802 | ||
726 | void MHfolderItem::contextMenuSelected(int which) | 803 | void MHfolderItem::contextMenuSelected(int which) |
727 | { | 804 | { |
728 | switch(which) { | 805 | switch(which) |
806 | { | ||
729 | case 0: | 807 | case 0: |
730 | deleteAllMail(mbox->getWrapper(),folder); | 808 | deleteAllMail(mbox->getWrapper(),folder); |
731 | break; | 809 | break; |
732 | case 1: | 810 | case 1: |
733 | deleteFolder(); | 811 | deleteFolder(); |
734 | break; | 812 | break; |
735 | case 2: | 813 | case 2: |
736 | downloadMails(); | 814 | downloadMails(); |
737 | break; | 815 | break; |
738 | case 3: | 816 | case 3: |
739 | createFolder(); | 817 | createFolder(); |
740 | break; | 818 | break; |
741 | default: | 819 | default: |
742 | break; | 820 | break; |
743 | } | 821 | } |
744 | } | 822 | } |
745 | 823 | ||
746 | /** | 824 | /** |
747 | * Generic stuff | 825 | * Generic stuff |
748 | */ | 826 | */ |
749 | 827 | ||
750 | const QString AccountViewItem::contextName="AccountViewItem"; | 828 | const QString AccountViewItem::contextName="AccountViewItem"; |
751 | 829 | ||
752 | AccountViewItem::AccountViewItem( AccountView *parent ) | 830 | AccountViewItem::AccountViewItem( AccountView *parent ) |
753 | : QListViewItem( parent ) | 831 | : QListViewItem( parent ) |
754 | { | 832 | { |
755 | init(); | 833 | init(); |
756 | m_Backlink = parent; | 834 | m_Backlink = parent; |
757 | } | 835 | } |
758 | 836 | ||
759 | AccountViewItem::AccountViewItem( QListViewItem *parent) | 837 | AccountViewItem::AccountViewItem( QListViewItem *parent) |
760 | : QListViewItem( parent) | 838 | : QListViewItem( parent) |
761 | { | 839 | { |
762 | init(); | 840 | init(); |
763 | } | 841 | } |
764 | 842 | ||
765 | AccountViewItem::AccountViewItem( QListViewItem *parent , QListViewItem*after ) | 843 | AccountViewItem::AccountViewItem( QListViewItem *parent , QListViewItem*after ) |
766 | :QListViewItem( parent,after ) | 844 | :QListViewItem( parent,after ) |
767 | { | 845 | { |
768 | init(); | 846 | init(); |
769 | } | 847 | } |
770 | 848 | ||
771 | void AccountViewItem::init() | 849 | void AccountViewItem::init() |
772 | { | 850 | { |
773 | m_Backlink = 0; | 851 | m_Backlink = 0; |
774 | folder = 0; | 852 | folder = 0; |
775 | } | 853 | } |
776 | 854 | ||
777 | AccountViewItem::~AccountViewItem() | 855 | AccountViewItem::~AccountViewItem() |
778 | { | 856 | { |
779 | if (folder) delete folder; | 857 | if (folder) delete folder; |
780 | } | 858 | } |
781 | 859 | ||
782 | AccountView*AccountViewItem::accountView() | 860 | AccountView*AccountViewItem::accountView() |
783 | { | 861 | { |
784 | return m_Backlink; | 862 | return m_Backlink; |
785 | } | 863 | } |
786 | 864 | ||
787 | void AccountViewItem::deleteAllMail(AbstractMail*wrapper,Folder*folder) | 865 | void AccountViewItem::deleteAllMail(AbstractMail*wrapper,Folder*folder) |
788 | { | 866 | { |
789 | if (!wrapper) return; | 867 | if (!wrapper) return; |
790 | QString fname=""; | 868 | QString fname=""; |
791 | if (folder) fname = folder->getDisplayName(); | 869 | if (folder) fname = folder->getDisplayName(); |
792 | int yesno = QMessageBox::warning(0,QObject::tr("Delete all mails",contextName), | 870 | int yesno = QMessageBox::warning(0,QObject::tr("Delete all mails",contextName), |
793 | QObject::tr("<center>Realy delete all mails in box <br>%1</center>",contextName). | 871 | QObject::tr("<center>Realy delete all mails in box <br>%1</center>",contextName). |
794 | arg(fname), | 872 | arg(fname), |
795 | QObject::tr("Yes",contextName), | 873 | QObject::tr("Yes",contextName), |
796 | QObject::tr("No",contextName),QString::null,1,1); | 874 | QObject::tr("No",contextName),QString::null,1,1); |
797 | qDebug("Auswahl: %i",yesno); | 875 | qDebug("Auswahl: %i",yesno); |
798 | if (yesno == 0) { | 876 | if (yesno == 0) |
799 | if (wrapper->deleteAllMail(folder)) { | 877 | { |
878 | if (wrapper->deleteAllMail(folder)) | ||
879 | { | ||
800 | AccountView * view = (AccountView*)listView(); | 880 | AccountView * view = (AccountView*)listView(); |
801 | if (view) view->refreshCurrent(); | 881 | if (view) view->refreshCurrent(); |
802 | } | 882 | } |
803 | } | 883 | } |
804 | } | 884 | } |
805 | 885 | ||
806 | void AccountViewItem::removeChilds() | 886 | void AccountViewItem::removeChilds() |
807 | { | 887 | { |
808 | QListViewItem *child = firstChild(); | 888 | QListViewItem *child = firstChild(); |
809 | while ( child ) { | 889 | while ( child ) |
890 | { | ||
810 | QListViewItem *tmp = child; | 891 | QListViewItem *tmp = child; |
811 | child = child->nextSibling(); | 892 | child = child->nextSibling(); |
812 | delete tmp; | 893 | delete tmp; |
813 | } | 894 | } |
814 | } | 895 | } |
815 | 896 | ||
816 | bool AccountViewItem::matchName(const QString&name)const | 897 | bool AccountViewItem::matchName(const QString&name)const |
817 | { | 898 | { |
818 | if (!folder) return false; | 899 | if (!folder) return false; |
819 | return folder->getDisplayName()==name; | 900 | return folder->getDisplayName()==name; |
820 | } | 901 | } |
821 | 902 | ||
822 | 903 | ||
823 | AccountViewItem*AccountViewItem::findSubItem(const QString&path,AccountViewItem*start) | 904 | AccountViewItem*AccountViewItem::findSubItem(const QString&path,AccountViewItem*start) |
824 | { | 905 | { |
825 | AccountViewItem*pitem,*sitem; | 906 | AccountViewItem*pitem,*sitem; |
826 | if (!start) pitem = (AccountViewItem*)firstChild(); | 907 | if (!start) pitem = (AccountViewItem*)firstChild(); |
827 | else pitem = (AccountViewItem*)start->firstChild(); | 908 | else pitem = (AccountViewItem*)start->firstChild(); |
828 | while (pitem) { | 909 | while (pitem) |
829 | if (pitem->matchName(path)) { | 910 | { |
911 | if (pitem->matchName(path)) | ||
912 | { | ||
830 | break; | 913 | break; |
831 | } | 914 | } |
832 | if (pitem->childCount()>0) { | 915 | if (pitem->childCount()>0) |
916 | { | ||
833 | sitem = findSubItem(path,pitem); | 917 | sitem = findSubItem(path,pitem); |
834 | if (sitem) { | 918 | if (sitem) |
919 | { | ||
835 | pitem = sitem; | 920 | pitem = sitem; |
836 | break; | 921 | break; |
837 | } | 922 | } |
838 | } | 923 | } |
839 | pitem=(AccountViewItem*)pitem->nextSibling(); | 924 | pitem=(AccountViewItem*)pitem->nextSibling(); |
840 | } | 925 | } |
841 | return pitem; | 926 | return pitem; |
842 | } | 927 | } |
diff --git a/noncore/net/mail/accountview.cpp b/noncore/net/mail/accountview.cpp index d9792d4..2ddf834 100644 --- a/noncore/net/mail/accountview.cpp +++ b/noncore/net/mail/accountview.cpp | |||
@@ -1,149 +1,163 @@ | |||
1 | |||
1 | #include "accountview.h" | 2 | #include "accountview.h" |
2 | #include "accountitem.h" | 3 | #include "accountitem.h" |
3 | #include "selectstore.h" | 4 | #include "selectstore.h" |
4 | #include <qmessagebox.h> | 5 | |
5 | #include <qpopupmenu.h> | 6 | /* OPIE */ |
6 | #include <libmailwrapper/settings.h> | 7 | #include <libmailwrapper/settings.h> |
7 | #include <libmailwrapper/mailwrapper.h> | 8 | #include <libmailwrapper/mailwrapper.h> |
8 | #include <libmailwrapper/mailtypes.h> | 9 | #include <libmailwrapper/mailtypes.h> |
9 | #include <libmailwrapper/abstractmail.h> | 10 | #include <libmailwrapper/abstractmail.h> |
11 | #include <qpe/qpeapplication.h> | ||
10 | 12 | ||
13 | /* QT */ | ||
14 | #include <qmessagebox.h> | ||
15 | #include <qpopupmenu.h> | ||
11 | 16 | ||
12 | AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) | 17 | AccountView::AccountView( QWidget *parent, const char *name, WFlags flags ) |
13 | : QListView( parent, name, flags ) | 18 | : QListView( parent, name, flags ) |
14 | { | 19 | { |
15 | connect( this, SIGNAL( selectionChanged( QListViewItem * ) ), | 20 | connect( this, SIGNAL( selectionChanged( QListViewItem * ) ), |
16 | SLOT( refresh( QListViewItem * ) ) ); | 21 | SLOT( refresh( QListViewItem * ) ) ); |
17 | connect( this, SIGNAL( mouseButtonPressed(int, QListViewItem *,const QPoint&,int ) ),this, | 22 | connect( this, SIGNAL( mouseButtonPressed(int, QListViewItem *,const QPoint&,int ) ),this, |
18 | SLOT( slotHold( int, QListViewItem *,const QPoint&,int ) ) ); | 23 | SLOT( slotHold( int, QListViewItem *,const QPoint&,int ) ) ); |
19 | setSorting(0); | 24 | setSorting(0); |
20 | } | 25 | } |
21 | 26 | ||
22 | AccountView::~AccountView() | 27 | AccountView::~AccountView() |
23 | { | 28 | { |
24 | imapAccounts.clear(); | 29 | imapAccounts.clear(); |
25 | mhAccounts.clear(); | 30 | mhAccounts.clear(); |
26 | } | 31 | } |
27 | 32 | ||
28 | void AccountView::slotContextMenu(int id) | 33 | void AccountView::slotContextMenu(int id) |
29 | { | 34 | { |
30 | AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); | 35 | AccountViewItem *view = static_cast<AccountViewItem *>(currentItem()); |
31 | if (!view) return; | 36 | if (!view) return; |
32 | view->contextMenuSelected(id); | 37 | view->contextMenuSelected(id); |
33 | } | 38 | } |
34 | 39 | ||
35 | void AccountView::slotHold(int button, QListViewItem * item,const QPoint&,int) | 40 | void AccountView::slotHold(int button, QListViewItem * item,const QPoint&,int) |
36 | { | 41 | { |
37 | if (button==1) {return;} | 42 | if (button==1) {return;} |
38 | if (!item) return; | 43 | if (!item) return; |
39 | AccountViewItem *view = static_cast<AccountViewItem *>(item); | 44 | AccountViewItem *view = static_cast<AccountViewItem *>(item); |
40 | QPopupMenu*m = view->getContextMenu(); | 45 | QPopupMenu*m = view->getContextMenu(); |
41 | if (!m) return; | 46 | if (!m) return; |
42 | connect(m,SIGNAL(activated(int)),this,SLOT(slotContextMenu(int))); | 47 | connect(m,SIGNAL(activated(int)),this,SLOT(slotContextMenu(int))); |
43 | m->setFocus(); | 48 | m->setFocus(); |
44 | m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); | 49 | m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); |
45 | delete m; | 50 | delete m; |
46 | } | 51 | } |
47 | 52 | ||
48 | void AccountView::populate( QList<Account> list ) | 53 | void AccountView::populate( QList<Account> list ) |
49 | { | 54 | { |
50 | clear(); | 55 | clear(); |
51 | 56 | ||
52 | imapAccounts.clear(); | 57 | imapAccounts.clear(); |
53 | mhAccounts.clear(); | 58 | mhAccounts.clear(); |
54 | 59 | ||
55 | mhAccounts.append(new MHviewItem(AbstractMail::defaultLocalfolder(),this)); | 60 | mhAccounts.append(new MHviewItem(AbstractMail::defaultLocalfolder(),this)); |
56 | 61 | ||
57 | Account *it; | 62 | Account *it; |
58 | for ( it = list.first(); it; it = list.next() ) { | 63 | for ( it = list.first(); it; it = list.next() ) |
59 | if ( it->getType().compare( "IMAP" ) == 0 ) { | 64 | { |
65 | if ( it->getType().compare( "IMAP" ) == 0 ) | ||
66 | { | ||
60 | IMAPaccount *imap = static_cast<IMAPaccount *>(it); | 67 | IMAPaccount *imap = static_cast<IMAPaccount *>(it); |
61 | qDebug( "added IMAP " + imap->getAccountName() ); | 68 | qDebug( "added IMAP " + imap->getAccountName() ); |
62 | imapAccounts.append(new IMAPviewItem( imap, this )); | 69 | imapAccounts.append(new IMAPviewItem( imap, this )); |
63 | } else if ( it->getType().compare( "POP3" ) == 0 ) { | 70 | } |
71 | else if ( it->getType().compare( "POP3" ) == 0 ) | ||
72 | { | ||
64 | POP3account *pop3 = static_cast<POP3account *>(it); | 73 | POP3account *pop3 = static_cast<POP3account *>(it); |
65 | qDebug( "added POP3 " + pop3->getAccountName() ); | 74 | qDebug( "added POP3 " + pop3->getAccountName() ); |
66 | /* must not be hold 'cause it isn't required */ | 75 | /* must not be hold 'cause it isn't required */ |
67 | (void) new POP3viewItem( pop3, this ); | 76 | (void) new POP3viewItem( pop3, this ); |
68 | } | 77 | } |
69 | } | 78 | } |
70 | } | 79 | } |
71 | 80 | ||
72 | void AccountView::refresh(QListViewItem *item) { | 81 | void AccountView::refresh(QListViewItem *item) |
82 | { | ||
73 | 83 | ||
74 | qDebug("AccountView refresh..."); | 84 | qDebug("AccountView refresh..."); |
75 | if ( item ) { | 85 | if ( item ) |
86 | { | ||
76 | m_currentItem = item; | 87 | m_currentItem = item; |
77 | QList<RecMail> headerlist; | 88 | QList<RecMail> headerlist; |
78 | headerlist.setAutoDelete(true); | 89 | headerlist.setAutoDelete(true); |
79 | AccountViewItem *view = static_cast<AccountViewItem *>(item); | 90 | AccountViewItem *view = static_cast<AccountViewItem *>(item); |
80 | view->refresh(headerlist); | 91 | view->refresh(headerlist); |
81 | emit refreshMailview(&headerlist); | 92 | emit refreshMailview(&headerlist); |
82 | } | 93 | } |
83 | } | 94 | } |
84 | 95 | ||
85 | void AccountView::refreshCurrent() | 96 | void AccountView::refreshCurrent() |
86 | { | 97 | { |
87 | m_currentItem = currentItem(); | 98 | m_currentItem = currentItem(); |
88 | if ( !m_currentItem ) return; | 99 | if ( !m_currentItem ) return; |
89 | QList<RecMail> headerlist; | 100 | QList<RecMail> headerlist; |
90 | headerlist.setAutoDelete(true); | 101 | headerlist.setAutoDelete(true); |
91 | AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem); | 102 | AccountViewItem *view = static_cast<AccountViewItem *>(m_currentItem); |
92 | view->refresh(headerlist); | 103 | view->refresh(headerlist); |
93 | emit refreshMailview(&headerlist); | 104 | emit refreshMailview(&headerlist); |
94 | } | 105 | } |
95 | 106 | ||
96 | void AccountView::refreshAll() | 107 | void AccountView::refreshAll() |
97 | { | 108 | { |
98 | |||
99 | } | 109 | } |
100 | 110 | ||
101 | RecBody AccountView::fetchBody(const RecMail&aMail) | 111 | RecBody AccountView::fetchBody(const RecMail&aMail) |
102 | { | 112 | { |
103 | QListViewItem*item = selectedItem (); | 113 | QListViewItem*item = selectedItem (); |
104 | if (!item) return RecBody(); | 114 | if (!item) return RecBody(); |
105 | AccountViewItem *view = static_cast<AccountViewItem *>(item); | 115 | AccountViewItem *view = static_cast<AccountViewItem *>(item); |
106 | return view->fetchBody(aMail); | 116 | return view->fetchBody(aMail); |
107 | } | 117 | } |
108 | 118 | ||
109 | void AccountView::setupFolderselect(Selectstore*sels) | 119 | void AccountView::setupFolderselect(Selectstore*sels) |
110 | { | 120 | { |
111 | sels->showMaximized(); | 121 | QPEApplication::showDialog( sels ); |
112 | QStringList sFolders; | 122 | QStringList sFolders; |
113 | unsigned int i = 0; | 123 | unsigned int i = 0; |
114 | for (i=0; i < mhAccounts.count();++i) { | 124 | for (i=0; i < mhAccounts.count();++i) |
125 | { | ||
115 | mhAccounts[i]->refresh(false); | 126 | mhAccounts[i]->refresh(false); |
116 | sFolders = mhAccounts[i]->subFolders(); | 127 | sFolders = mhAccounts[i]->subFolders(); |
117 | sels->addAccounts(mhAccounts[i]->getWrapper(),sFolders); | 128 | sels->addAccounts(mhAccounts[i]->getWrapper(),sFolders); |
118 | } | 129 | } |
119 | for (i=0; i < imapAccounts.count();++i) { | 130 | for (i=0; i < imapAccounts.count();++i) |
131 | { | ||
120 | if (imapAccounts[i]->offline()) | 132 | if (imapAccounts[i]->offline()) |
121 | continue; | 133 | continue; |
122 | imapAccounts[i]->refreshFolders(false); | 134 | imapAccounts[i]->refreshFolders(false); |
123 | sels->addAccounts(imapAccounts[i]->getWrapper(),imapAccounts[i]->subFolders()); | 135 | sels->addAccounts(imapAccounts[i]->getWrapper(),imapAccounts[i]->subFolders()); |
124 | } | 136 | } |
125 | } | 137 | } |
126 | 138 | ||
127 | void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper) | 139 | void AccountView::downloadMails(Folder*fromFolder,AbstractMail*fromWrapper) |
128 | { | 140 | { |
129 | AbstractMail*targetMail = 0; | 141 | AbstractMail*targetMail = 0; |
130 | QString targetFolder = ""; | 142 | QString targetFolder = ""; |
131 | Selectstore sels; | 143 | Selectstore sels; |
132 | setupFolderselect(&sels); | 144 | setupFolderselect(&sels); |
133 | if (!sels.exec()) return; | 145 | if (!sels.exec()) return; |
134 | targetMail = sels.currentMail(); | 146 | targetMail = sels.currentMail(); |
135 | targetFolder = sels.currentFolder(); | 147 | targetFolder = sels.currentFolder(); |
136 | if ( (fromWrapper==targetMail && fromFolder->getName()==targetFolder) || | 148 | if ( (fromWrapper==targetMail && fromFolder->getName()==targetFolder) || |
137 | targetFolder.isEmpty()) { | 149 | targetFolder.isEmpty()) |
150 | { | ||
138 | return; | 151 | return; |
139 | } | 152 | } |
140 | if (sels.newFolder() && !targetMail->createMbox(targetFolder)) { | 153 | if (sels.newFolder() && !targetMail->createMbox(targetFolder)) |
154 | { | ||
141 | QMessageBox::critical(0,tr("Error creating new Folder"), | 155 | QMessageBox::critical(0,tr("Error creating new Folder"), |
142 | tr("<center>Error while creating<br>new folder - breaking.</center>")); | 156 | tr("<center>Error while creating<br>new folder - breaking.</center>")); |
143 | return; | 157 | return; |
144 | } | 158 | } |
145 | qDebug("Targetfolder: %s",targetFolder.latin1()); | 159 | qDebug("Targetfolder: %s",targetFolder.latin1()); |
146 | qDebug("Fromfolder: %s",fromFolder->getName().latin1()); | 160 | qDebug("Fromfolder: %s",fromFolder->getName().latin1()); |
147 | fromWrapper->mvcpAllMails(fromFolder,targetFolder,targetMail,sels.moveMails()); | 161 | fromWrapper->mvcpAllMails(fromFolder,targetFolder,targetMail,sels.moveMails()); |
148 | refreshCurrent(); | 162 | refreshCurrent(); |
149 | } | 163 | } |
diff --git a/noncore/net/mail/addresspicker.cpp b/noncore/net/mail/addresspicker.cpp index f4f4cea..8cdabde 100644 --- a/noncore/net/mail/addresspicker.cpp +++ b/noncore/net/mail/addresspicker.cpp | |||
@@ -1,100 +1,114 @@ | |||
1 | |||
2 | #include "composemail.h" | ||
3 | |||
4 | /* OPIE */ | ||
5 | #include <opie2/ocontactaccess.h> | ||
6 | #include <opie2/ocontact.h> | ||
7 | #include <qpe/resource.h> | ||
8 | #include <qpe/qpeapplication.h> | ||
9 | |||
10 | /* QT */ | ||
1 | #include <qpushbutton.h> | 11 | #include <qpushbutton.h> |
2 | #include <qmessagebox.h> | 12 | #include <qmessagebox.h> |
3 | #include <qtextstream.h> | 13 | #include <qtextstream.h> |
4 | #include <qlistbox.h> | 14 | #include <qlistbox.h> |
5 | #include <qfile.h> | 15 | #include <qfile.h> |
6 | 16 | ||
7 | #include <qpe/resource.h> | 17 | /* STD */ |
8 | #include <opie2/ocontactaccess.h> | ||
9 | #include <opie2/ocontact.h> | ||
10 | |||
11 | |||
12 | #include <stdlib.h> | 18 | #include <stdlib.h> |
13 | 19 | ||
14 | #include "composemail.h" | 20 | AddressPicker::AddressPicker( QWidget *parent, const char *name, bool modal, WFlags flags ) |
15 | 21 | : AddressPickerUI( parent, name, modal, flags ) | |
16 | AddressPicker::AddressPicker( QWidget *parent, const char *name, bool modal, WFlags flags ) | ||
17 | : AddressPickerUI( parent, name, modal, flags ) | ||
18 | { | 22 | { |
19 | okButton->setIconSet( Resource::loadPixmap( "enter" ) ); | 23 | okButton->setIconSet( Resource::loadPixmap( "enter" ) ); |
20 | cancelButton->setIconSet( Resource::loadPixmap( "editdelete" ) ); | 24 | cancelButton->setIconSet( Resource::loadPixmap( "editdelete" ) ); |
21 | 25 | ||
22 | connect(okButton, SIGNAL(clicked()), SLOT(accept())); | 26 | connect(okButton, SIGNAL(clicked()), SLOT(accept())); |
23 | connect(cancelButton, SIGNAL(clicked()), SLOT(close())); | 27 | connect(cancelButton, SIGNAL(clicked()), SLOT(close())); |
24 | Opie::OContactAccess::List::Iterator it; | 28 | Opie::OContactAccess::List::Iterator it; |
25 | 29 | ||
26 | QString lineEmail, lineName, contactLine; | 30 | QString lineEmail, lineName, contactLine; |
27 | /* what name has to set here???? */ | 31 | /* what name has to set here???? */ |
28 | Opie::OContactAccess m_contactdb("opiemail"); | 32 | Opie::OContactAccess m_contactdb("opiemail"); |
29 | 33 | ||
30 | QStringList mails; | 34 | QStringList mails; |
31 | QString pre,suf; | 35 | QString pre,suf; |
32 | Opie::OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); | 36 | Opie::OContactAccess::List m_list = m_contactdb.sorted( true, 0, 0, 0 ); |
33 | for ( it = m_list.begin(); it != m_list.end(); ++it ) { | 37 | for ( it = m_list.begin(); it != m_list.end(); ++it ) |
34 | if ((*it).defaultEmail().length()!=0) { | 38 | { |
39 | if ((*it).defaultEmail().length()!=0) | ||
40 | { | ||
35 | mails = (*it).emailList(); | 41 | mails = (*it).emailList(); |
36 | if ((*it).fileAs().length()>0) { | 42 | if ((*it).fileAs().length()>0) |
43 | { | ||
37 | pre = "\""+(*it).firstName()+" "+(*it).lastName()+"\" <"; | 44 | pre = "\""+(*it).firstName()+" "+(*it).lastName()+"\" <"; |
38 | suf = ">"; | 45 | suf = ">"; |
39 | } else { | 46 | } |
47 | else | ||
48 | { | ||
40 | pre = ""; | 49 | pre = ""; |
41 | suf = ""; | 50 | suf = ""; |
42 | } | 51 | } |
43 | QStringList::ConstIterator sit = mails.begin(); | 52 | QStringList::ConstIterator sit = mails.begin(); |
44 | for (;sit!=mails.end();++sit) { | 53 | for (;sit!=mails.end();++sit) |
54 | { | ||
45 | contactLine=pre+(*sit)+suf; | 55 | contactLine=pre+(*sit)+suf; |
46 | addressList->insertItem(contactLine); | 56 | addressList->insertItem(contactLine); |
47 | } | 57 | } |
48 | } | 58 | } |
49 | } | 59 | } |
50 | if ( addressList->count() <= 0 ) { | 60 | if ( addressList->count() <= 0 ) |
61 | { | ||
51 | #if 0 | 62 | #if 0 |
52 | // makes this realy sense?? | 63 | // makes this realy sense?? |
53 | addressList->insertItem( | 64 | addressList->insertItem( |
54 | tr( "There are no entries in the addressbook." ) ); | 65 | tr( "There are no entries in the addressbook." ) ); |
55 | #endif | 66 | #endif |
56 | addressList->setEnabled( false ); | 67 | addressList->setEnabled( false ); |
57 | okButton->setEnabled( false ); | 68 | okButton->setEnabled( false ); |
58 | } else { | 69 | } |
59 | // addressList->sort(); | 70 | else |
71 | { | ||
72 | // addressList->sort(); | ||
60 | } | 73 | } |
61 | } | 74 | } |
62 | 75 | ||
63 | void AddressPicker::accept() | 76 | void AddressPicker::accept() |
64 | { | 77 | { |
65 | QListBoxItem *item = addressList->firstItem(); | 78 | QListBoxItem *item = addressList->firstItem(); |
66 | QString names; | 79 | QString names; |
67 | 80 | ||
68 | while ( item ) { | 81 | while ( item ) |
69 | if ( item->selected() ) | 82 | { |
70 | names += item->text() + ", "; | 83 | if ( item->selected() ) |
71 | item = item->next(); | 84 | names += item->text() + ", "; |
72 | } | 85 | item = item->next(); |
73 | names.replace( names.length() - 2, 2, "" ); | 86 | } |
74 | 87 | names.replace( names.length() - 2, 2, "" ); | |
75 | if ( names.isEmpty() ) { | 88 | |
76 | QMessageBox::information(this, tr("Error"), tr("<p>You have to select" | 89 | if ( names.isEmpty() ) |
77 | " at least one address entry.</p>"), tr("Ok")); | 90 | { |
78 | return; | 91 | QMessageBox::information(this, tr("Error"), tr("<p>You have to select" |
79 | } | 92 | " at least one address entry.</p>"), tr("Ok")); |
80 | 93 | return; | |
81 | selectedNames = names; | 94 | } |
82 | QDialog::accept(); | 95 | |
96 | selectedNames = names; | ||
97 | QDialog::accept(); | ||
83 | } | 98 | } |
84 | 99 | ||
85 | QString AddressPicker::getNames() | 100 | QString AddressPicker::getNames() |
86 | { | 101 | { |
87 | QString names = 0; | 102 | QString names = 0; |
88 | 103 | ||
89 | AddressPicker picker(0, 0, true); | 104 | AddressPicker picker(0, 0, true); |
90 | picker.showMaximized(); | 105 | |
91 | picker.show(); | 106 | int ret = QPEApplication::execDialog( &picker ); |
92 | 107 | if ( QDialog::Accepted == ret ) | |
93 | int ret = picker.exec(); | 108 | { |
94 | if ( QDialog::Accepted == ret ) { | 109 | return picker.selectedNames; |
95 | return picker.selectedNames; | 110 | } |
96 | } | 111 | |
97 | 112 | return 0; | |
98 | return 0; | ||
99 | } | 113 | } |
100 | 114 | ||
diff --git a/noncore/net/mail/editaccounts.cpp b/noncore/net/mail/editaccounts.cpp index 1cb202e..60bffa5 100644 --- a/noncore/net/mail/editaccounts.cpp +++ b/noncore/net/mail/editaccounts.cpp | |||
@@ -1,477 +1,532 @@ | |||
1 | #include <qt.h> | ||
2 | 1 | ||
3 | #include "defines.h" | 2 | #include "defines.h" |
4 | #include "editaccounts.h" | 3 | #include "editaccounts.h" |
5 | 4 | ||
5 | /* OPIE */ | ||
6 | #include <qpe/qpeapplication.h> | ||
7 | |||
8 | /* QT */ | ||
9 | #include <qt.h> | ||
10 | |||
6 | AccountListItem::AccountListItem( QListView *parent, Account *a) | 11 | AccountListItem::AccountListItem( QListView *parent, Account *a) |
7 | : QListViewItem( parent ) | 12 | : QListViewItem( parent ) |
8 | { | 13 | { |
9 | account = a; | 14 | account = a; |
10 | setText( 0, account->getAccountName() ); | 15 | setText( 0, account->getAccountName() ); |
11 | setText( 1, account->getType() ); | 16 | setText( 1, account->getType() ); |
12 | } | 17 | } |
13 | 18 | ||
14 | EditAccounts::EditAccounts( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags ) | 19 | EditAccounts::EditAccounts( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags ) |
15 | : EditAccountsUI( parent, name, modal, flags ) | 20 | : EditAccountsUI( parent, name, modal, flags ) |
16 | { | 21 | { |
17 | qDebug( "New Account Configuration Widget" ); | 22 | qDebug( "New Account Configuration Widget" ); |
18 | settings = s; | 23 | settings = s; |
19 | 24 | ||
20 | mailList->addColumn( tr( "Account" ) ); | 25 | mailList->addColumn( tr( "Account" ) ); |
21 | mailList->addColumn( tr( "Type" ) ); | 26 | mailList->addColumn( tr( "Type" ) ); |
22 | 27 | ||
23 | newsList->addColumn( tr( "Account" ) ); | 28 | newsList->addColumn( tr( "Account" ) ); |
24 | 29 | ||
25 | connect( newMail, SIGNAL( clicked() ), SLOT( slotNewMail() ) ); | 30 | connect( newMail, SIGNAL( clicked() ), SLOT( slotNewMail() ) ); |
26 | connect( editMail, SIGNAL( clicked() ), SLOT( slotEditMail() ) ); | 31 | connect( editMail, SIGNAL( clicked() ), SLOT( slotEditMail() ) ); |
27 | connect( deleteMail, SIGNAL( clicked() ), SLOT( slotDeleteMail() ) ); | 32 | connect( deleteMail, SIGNAL( clicked() ), SLOT( slotDeleteMail() ) ); |
28 | connect( newNews, SIGNAL( clicked() ), SLOT( slotNewNews() ) ); | 33 | connect( newNews, SIGNAL( clicked() ), SLOT( slotNewNews() ) ); |
29 | connect( editNews, SIGNAL( clicked() ), SLOT( slotEditNews() ) ); | 34 | connect( editNews, SIGNAL( clicked() ), SLOT( slotEditNews() ) ); |
30 | connect( deleteNews, SIGNAL( clicked() ), SLOT( slotDeleteNews() ) ); | 35 | connect( deleteNews, SIGNAL( clicked() ), SLOT( slotDeleteNews() ) ); |
31 | 36 | ||
32 | slotFillLists(); | 37 | slotFillLists(); |
33 | } | 38 | } |
34 | 39 | ||
35 | void EditAccounts::slotFillLists() | 40 | void EditAccounts::slotFillLists() |
36 | { | 41 | { |
37 | mailList->clear(); | 42 | mailList->clear(); |
38 | newsList->clear(); | 43 | newsList->clear(); |
39 | 44 | ||
40 | QList<Account> accounts = settings->getAccounts(); | 45 | QList<Account> accounts = settings->getAccounts(); |
41 | Account *it; | 46 | Account *it; |
42 | for ( it = accounts.first(); it; it = accounts.next() ) { | 47 | for ( it = accounts.first(); it; it = accounts.next() ) |
43 | if ( it->getType().compare( "NNTP" ) == 0 ) { | 48 | { |
49 | if ( it->getType().compare( "NNTP" ) == 0 ) | ||
50 | { | ||
44 | (void) new AccountListItem( newsList, it ); | 51 | (void) new AccountListItem( newsList, it ); |
45 | } else { | 52 | } |
53 | else | ||
54 | { | ||
46 | (void) new AccountListItem( mailList, it ); | 55 | (void) new AccountListItem( mailList, it ); |
47 | } | 56 | } |
48 | } | 57 | } |
49 | } | 58 | } |
50 | 59 | ||
51 | void EditAccounts::slotNewMail() | 60 | void EditAccounts::slotNewMail() |
52 | { | 61 | { |
53 | qDebug( "New Mail Account" ); | 62 | qDebug( "New Mail Account" ); |
54 | QString *selection = new QString(); | 63 | QString *selection = new QString(); |
55 | SelectMailType selType( selection, this, 0, true ); | 64 | SelectMailType selType( selection, this, 0, true ); |
56 | selType.show(); | 65 | selType.show(); |
57 | if ( QDialog::Accepted == selType.exec() ) { | 66 | if ( QDialog::Accepted == selType.exec() ) |
67 | { | ||
58 | slotNewAccount( *selection ); | 68 | slotNewAccount( *selection ); |
59 | } | 69 | } |
60 | } | 70 | } |
61 | 71 | ||
62 | void EditAccounts::slotNewAccount( const QString &type ) | 72 | void EditAccounts::slotNewAccount( const QString &type ) |
63 | { | 73 | { |
64 | if ( type.compare( "IMAP" ) == 0 ) { | 74 | if ( type.compare( "IMAP" ) == 0 ) |
75 | { | ||
65 | qDebug( "-> config IMAP" ); | 76 | qDebug( "-> config IMAP" ); |
66 | IMAPaccount *account = new IMAPaccount(); | 77 | IMAPaccount *account = new IMAPaccount(); |
67 | IMAPconfig imap( account, this, 0, true ); | 78 | IMAPconfig imap( account, this, 0, true ); |
68 | imap.showMaximized(); | 79 | if ( QDialog::Accepted == QPEApplication::execDialog( &imap ) ) |
69 | if ( QDialog::Accepted == imap.exec() ) { | 80 | { |
70 | settings->addAccount( account ); | 81 | settings->addAccount( account ); |
71 | account->save(); | 82 | account->save(); |
72 | slotFillLists(); | 83 | slotFillLists(); |
73 | } else { | 84 | } |
85 | else | ||
86 | { | ||
74 | account->remove(); | 87 | account->remove(); |
75 | } | 88 | } |
76 | } else if ( type.compare( "POP3" ) == 0 ) { | 89 | } |
90 | else if ( type.compare( "POP3" ) == 0 ) | ||
91 | { | ||
77 | qDebug( "-> config POP3" ); | 92 | qDebug( "-> config POP3" ); |
78 | POP3account *account = new POP3account(); | 93 | POP3account *account = new POP3account(); |
79 | POP3config pop3( account, this, 0, true, WStyle_ContextHelp ); | 94 | POP3config pop3( account, this, 0, true, WStyle_ContextHelp ); |
80 | pop3.showMaximized(); | 95 | if ( QDialog::Accepted == QPEApplication::execDialog( &pop3 ) ) |
81 | if ( QDialog::Accepted == pop3.exec() ) { | 96 | { |
82 | settings->addAccount( account ); | 97 | settings->addAccount( account ); |
83 | account->save(); | 98 | account->save(); |
84 | slotFillLists(); | 99 | slotFillLists(); |
85 | } else { | 100 | } |
101 | else | ||
102 | { | ||
86 | account->remove(); | 103 | account->remove(); |
87 | } | 104 | } |
88 | } else if ( type.compare( "SMTP" ) == 0 ) { | 105 | } |
106 | else if ( type.compare( "SMTP" ) == 0 ) | ||
107 | { | ||
89 | qDebug( "-> config SMTP" ); | 108 | qDebug( "-> config SMTP" ); |
90 | SMTPaccount *account = new SMTPaccount(); | 109 | SMTPaccount *account = new SMTPaccount(); |
91 | SMTPconfig smtp( account, this, 0, true, WStyle_ContextHelp ); | 110 | SMTPconfig smtp( account, this, 0, true, WStyle_ContextHelp ); |
92 | smtp.showMaximized(); | 111 | if ( QDialog::Accepted == QPEApplication::execDialog( &smtp ) ) |
93 | if ( QDialog::Accepted == smtp.exec() ) { | 112 | { |
94 | settings->addAccount( account ); | 113 | settings->addAccount( account ); |
95 | account->save(); | 114 | account->save(); |
96 | slotFillLists(); | 115 | slotFillLists(); |
97 | 116 | ||
98 | } else { | 117 | } |
118 | else | ||
119 | { | ||
99 | account->remove(); | 120 | account->remove(); |
100 | } | 121 | } |
101 | } else if ( type.compare( "NNTP" ) == 0 ) { | 122 | } |
123 | else if ( type.compare( "NNTP" ) == 0 ) | ||
124 | { | ||
102 | qDebug( "-> config NNTP" ); | 125 | qDebug( "-> config NNTP" ); |
103 | NNTPaccount *account = new NNTPaccount(); | 126 | NNTPaccount *account = new NNTPaccount(); |
104 | NNTPconfig nntp( account, this, 0, true, WStyle_ContextHelp ); | 127 | NNTPconfig nntp( account, this, 0, true, WStyle_ContextHelp ); |
105 | nntp.showMaximized(); | 128 | if ( QDialog::Accepted == QPEApplication::execDialog( &nntp ) ) |
106 | if ( QDialog::Accepted == nntp.exec() ) { | 129 | { |
107 | settings->addAccount( account ); | 130 | settings->addAccount( account ); |
108 | account->save(); | 131 | account->save(); |
109 | slotFillLists(); | 132 | slotFillLists(); |
110 | } else { | 133 | } |
134 | else | ||
135 | { | ||
111 | account->remove(); | 136 | account->remove(); |
112 | } | 137 | } |
113 | } | 138 | } |
114 | } | 139 | } |
115 | 140 | ||
116 | void EditAccounts::slotEditAccount( Account *account ) | 141 | void EditAccounts::slotEditAccount( Account *account ) |
117 | { | 142 | { |
118 | if ( account->getType().compare( "IMAP" ) == 0 ) { | 143 | if ( account->getType().compare( "IMAP" ) == 0 ) |
144 | { | ||
119 | IMAPaccount *imapAcc = static_cast<IMAPaccount *>(account); | 145 | IMAPaccount *imapAcc = static_cast<IMAPaccount *>(account); |
120 | IMAPconfig imap( imapAcc, this, 0, true, WStyle_ContextHelp ); | 146 | IMAPconfig imap( imapAcc, this, 0, true, WStyle_ContextHelp ); |
121 | imap.showMaximized(); | 147 | if ( QDialog::Accepted == QPEApplication::execDialog( &imap ) ) |
122 | if ( QDialog::Accepted == imap.exec() ) { | 148 | { |
123 | slotFillLists(); | 149 | slotFillLists(); |
124 | } | 150 | } |
125 | } else if ( account->getType().compare( "POP3" ) == 0 ) { | 151 | } |
152 | else if ( account->getType().compare( "POP3" ) == 0 ) | ||
153 | { | ||
126 | POP3account *pop3Acc = static_cast<POP3account *>(account); | 154 | POP3account *pop3Acc = static_cast<POP3account *>(account); |
127 | POP3config pop3( pop3Acc, this, 0, true, WStyle_ContextHelp ); | 155 | POP3config pop3( pop3Acc, this, 0, true, WStyle_ContextHelp ); |
128 | pop3.showMaximized(); | 156 | if ( QDialog::Accepted == QPEApplication::execDialog( &pop3 ) ) |
129 | if ( QDialog::Accepted == pop3.exec() ) { | 157 | { |
130 | slotFillLists(); | 158 | slotFillLists(); |
131 | } | 159 | } |
132 | } else if ( account->getType().compare( "SMTP" ) == 0 ) { | 160 | } |
161 | else if ( account->getType().compare( "SMTP" ) == 0 ) | ||
162 | { | ||
133 | SMTPaccount *smtpAcc = static_cast<SMTPaccount *>(account); | 163 | SMTPaccount *smtpAcc = static_cast<SMTPaccount *>(account); |
134 | SMTPconfig smtp( smtpAcc, this, 0, true, WStyle_ContextHelp ); | 164 | SMTPconfig smtp( smtpAcc, this, 0, true, WStyle_ContextHelp ); |
135 | smtp.showMaximized(); | 165 | if ( QDialog::Accepted == QPEApplication::execDialog( &smtp ) ) |
136 | if ( QDialog::Accepted == smtp.exec() ) { | 166 | { |
137 | slotFillLists(); | 167 | slotFillLists(); |
138 | } | 168 | } |
139 | } else if ( account->getType().compare( "NNTP" ) == 0 ) { | 169 | } |
170 | else if ( account->getType().compare( "NNTP" ) == 0 ) | ||
171 | { | ||
140 | NNTPaccount *nntpAcc = static_cast<NNTPaccount *>(account); | 172 | NNTPaccount *nntpAcc = static_cast<NNTPaccount *>(account); |
141 | NNTPconfig nntp( nntpAcc, this, 0, true, WStyle_ContextHelp ); | 173 | NNTPconfig nntp( nntpAcc, this, 0, true, WStyle_ContextHelp ); |
142 | nntp.showMaximized(); | 174 | if ( QDialog::Accepted == QPEApplication::execDialog( &nntp ) ) |
143 | if ( QDialog::Accepted == nntp.exec() ) { | 175 | { |
144 | slotFillLists(); | 176 | slotFillLists(); |
145 | } | 177 | } |
146 | } | 178 | } |
147 | } | 179 | } |
148 | 180 | ||
149 | void EditAccounts::slotDeleteAccount( Account *account ) | 181 | void EditAccounts::slotDeleteAccount( Account *account ) |
150 | { | 182 | { |
151 | if ( QMessageBox::information( this, tr( "Question" ), | 183 | if ( QMessageBox::information( this, tr( "Question" ), |
152 | tr( "<p>Do you really want to delete the selected Account?</p>" ), | 184 | tr( "<p>Do you really want to delete the selected Account?</p>" ), |
153 | tr( "Yes" ), tr( "No" ) ) == 0 ) { | 185 | tr( "Yes" ), tr( "No" ) ) == 0 ) |
186 | { | ||
154 | settings->delAccount( account ); | 187 | settings->delAccount( account ); |
155 | slotFillLists(); | 188 | slotFillLists(); |
156 | } | 189 | } |
157 | } | 190 | } |
158 | 191 | ||
159 | void EditAccounts::slotEditMail() | 192 | void EditAccounts::slotEditMail() |
160 | { | 193 | { |
161 | qDebug( "Edit Mail Account" ); | 194 | qDebug( "Edit Mail Account" ); |
162 | if ( !mailList->currentItem() ) { | 195 | if ( !mailList->currentItem() ) |
196 | { | ||
163 | QMessageBox::information( this, tr( "Error" ), | 197 | QMessageBox::information( this, tr( "Error" ), |
164 | tr( "<p>Please select an account.</p>" ), | 198 | tr( "<p>Please select an account.</p>" ), |
165 | tr( "Ok" ) ); | 199 | tr( "Ok" ) ); |
166 | return; | 200 | return; |
167 | } | 201 | } |
168 | 202 | ||
169 | Account *a = ((AccountListItem *) mailList->currentItem())->getAccount(); | 203 | Account *a = ((AccountListItem *) mailList->currentItem())->getAccount(); |
170 | slotEditAccount( a ); | 204 | slotEditAccount( a ); |
171 | } | 205 | } |
172 | 206 | ||
173 | void EditAccounts::slotDeleteMail() | 207 | void EditAccounts::slotDeleteMail() |
174 | { | 208 | { |
175 | if ( !mailList->currentItem() ) { | 209 | if ( !mailList->currentItem() ) |
210 | { | ||
176 | QMessageBox::information( this, tr( "Error" ), | 211 | QMessageBox::information( this, tr( "Error" ), |
177 | tr( "<p>Please select an account.</p>" ), | 212 | tr( "<p>Please select an account.</p>" ), |
178 | tr( "Ok" ) ); | 213 | tr( "Ok" ) ); |
179 | return; | 214 | return; |
180 | } | 215 | } |
181 | 216 | ||
182 | Account *a = ((AccountListItem *) mailList->currentItem())->getAccount(); | 217 | Account *a = ((AccountListItem *) mailList->currentItem())->getAccount(); |
183 | slotDeleteAccount( a ); | 218 | slotDeleteAccount( a ); |
184 | } | 219 | } |
185 | 220 | ||
186 | void EditAccounts::slotNewNews() | 221 | void EditAccounts::slotNewNews() |
187 | { | 222 | { |
188 | qDebug( "New News Account" ); | 223 | qDebug( "New News Account" ); |
189 | slotNewAccount( "NNTP" ); | 224 | slotNewAccount( "NNTP" ); |
190 | } | 225 | } |
191 | 226 | ||
192 | void EditAccounts::slotEditNews() | 227 | void EditAccounts::slotEditNews() |
193 | { | 228 | { |
194 | qDebug( "Edit News Account" ); | 229 | qDebug( "Edit News Account" ); |
195 | if ( !newsList->currentItem() ) { | 230 | if ( !newsList->currentItem() ) |
231 | { | ||
196 | QMessageBox::information( this, tr( "Error" ), | 232 | QMessageBox::information( this, tr( "Error" ), |
197 | tr( "<p>Please select an account.</p>" ), | 233 | tr( "<p>Please select an account.</p>" ), |
198 | tr( "Ok" ) ); | 234 | tr( "Ok" ) ); |
199 | return; | 235 | return; |
200 | } | 236 | } |
201 | 237 | ||
202 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); | 238 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); |
203 | slotEditAccount( a ); | 239 | slotEditAccount( a ); |
204 | } | 240 | } |
205 | 241 | ||
206 | void EditAccounts::slotDeleteNews() | 242 | void EditAccounts::slotDeleteNews() |
207 | { | 243 | { |
208 | qDebug( "Delete News Account" ); | 244 | qDebug( "Delete News Account" ); |
209 | if ( !newsList->currentItem() ) { | 245 | if ( !newsList->currentItem() ) |
246 | { | ||
210 | QMessageBox::information( this, tr( "Error" ), | 247 | QMessageBox::information( this, tr( "Error" ), |
211 | tr( "<p>Please select an account.</p>" ), | 248 | tr( "<p>Please select an account.</p>" ), |
212 | tr( "Ok" ) ); | 249 | tr( "Ok" ) ); |
213 | return; | 250 | return; |
214 | } | 251 | } |
215 | 252 | ||
216 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); | 253 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); |
217 | slotDeleteAccount( a ); | 254 | slotDeleteAccount( a ); |
218 | } | 255 | } |
219 | 256 | ||
220 | void EditAccounts::slotAdjustColumns() | 257 | void EditAccounts::slotAdjustColumns() |
221 | { | 258 | { |
222 | int currPage = configTab->currentPageIndex(); | 259 | int currPage = configTab->currentPageIndex(); |
223 | 260 | ||
224 | configTab->showPage( mailTab ); | 261 | configTab->showPage( mailTab ); |
225 | mailList->setColumnWidth( 0, mailList->visibleWidth() - 50 ); | 262 | mailList->setColumnWidth( 0, mailList->visibleWidth() - 50 ); |
226 | mailList->setColumnWidth( 1, 50 ); | 263 | mailList->setColumnWidth( 1, 50 ); |
227 | 264 | ||
228 | configTab->showPage( newsTab ); | 265 | configTab->showPage( newsTab ); |
229 | newsList->setColumnWidth( 0, newsList->visibleWidth() ); | 266 | newsList->setColumnWidth( 0, newsList->visibleWidth() ); |
230 | 267 | ||
231 | configTab->setCurrentPage( currPage ); | 268 | configTab->setCurrentPage( currPage ); |
232 | } | 269 | } |
233 | 270 | ||
234 | void EditAccounts::accept() | 271 | void EditAccounts::accept() |
235 | { | 272 | { |
236 | settings->saveAccounts(); | 273 | settings->saveAccounts(); |
237 | 274 | ||
238 | QDialog::accept(); | 275 | QDialog::accept(); |
239 | } | 276 | } |
240 | 277 | ||
241 | /** | 278 | /** |
242 | * SelectMailType | 279 | * SelectMailType |
243 | */ | 280 | */ |
244 | 281 | ||
245 | SelectMailType::SelectMailType( QString *selection, QWidget *parent, const char *name, bool modal, WFlags flags ) | 282 | SelectMailType::SelectMailType( QString *selection, QWidget *parent, const char *name, bool modal, WFlags flags ) |
246 | : SelectMailTypeUI( parent, name, modal, flags ) | 283 | : SelectMailTypeUI( parent, name, modal, flags ) |
247 | { | 284 | { |
248 | selected = selection; | 285 | selected = selection; |
249 | selected->replace( 0, selected->length(), typeBox->currentText() ); | 286 | selected->replace( 0, selected->length(), typeBox->currentText() ); |
250 | connect( typeBox, SIGNAL( activated( const QString & ) ), SLOT( slotSelection( const QString & ) ) ); | 287 | connect( typeBox, SIGNAL( activated( const QString & ) ), SLOT( slotSelection( const QString & ) ) ); |
251 | } | 288 | } |
252 | 289 | ||
253 | void SelectMailType::slotSelection( const QString &sel ) | 290 | void SelectMailType::slotSelection( const QString &sel ) |
254 | { | 291 | { |
255 | selected->replace( 0, selected->length(), sel ); | 292 | selected->replace( 0, selected->length(), sel ); |
256 | } | 293 | } |
257 | 294 | ||
258 | /** | 295 | /** |
259 | * IMAPconfig | 296 | * IMAPconfig |
260 | */ | 297 | */ |
261 | 298 | ||
262 | IMAPconfig::IMAPconfig( IMAPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 299 | IMAPconfig::IMAPconfig( IMAPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) |
263 | : IMAPconfigUI( parent, name, modal, flags ) | 300 | : IMAPconfigUI( parent, name, modal, flags ) |
264 | { | 301 | { |
265 | data = account; | 302 | data = account; |
266 | 303 | ||
267 | fillValues(); | 304 | fillValues(); |
268 | 305 | ||
269 | connect( ComboBox1, SIGNAL( activated( int ) ), SLOT( slotConnectionToggle( int ) ) ); | 306 | connect( ComboBox1, SIGNAL( activated( int ) ), SLOT( slotConnectionToggle( int ) ) ); |
270 | ComboBox1->insertItem( "Only if available", 0 ); | 307 | ComboBox1->insertItem( "Only if available", 0 ); |
271 | ComboBox1->insertItem( "Always, Negotiated", 1 ); | 308 | ComboBox1->insertItem( "Always, Negotiated", 1 ); |
272 | ComboBox1->insertItem( "Connect on secure port", 2 ); | 309 | ComboBox1->insertItem( "Connect on secure port", 2 ); |
273 | ComboBox1->insertItem( "Run command instead", 3 ); | 310 | ComboBox1->insertItem( "Run command instead", 3 ); |
274 | CommandEdit->hide(); | 311 | CommandEdit->hide(); |
275 | ComboBox1->setCurrentItem( data->ConnectionType() ); | 312 | ComboBox1->setCurrentItem( data->ConnectionType() ); |
276 | } | 313 | } |
277 | 314 | ||
278 | void IMAPconfig::slotConnectionToggle( int index ) | 315 | void IMAPconfig::slotConnectionToggle( int index ) |
279 | { | 316 | { |
280 | if ( index == 2 ) { | 317 | if ( index == 2 ) |
281 | portLine->setText( IMAP_SSL_PORT ); | 318 | { |
282 | } else if ( index == 3 ) { | 319 | portLine->setText( IMAP_SSL_PORT ); |
320 | } | ||
321 | else if ( index == 3 ) | ||
322 | { | ||
283 | portLine->setText( IMAP_PORT ); | 323 | portLine->setText( IMAP_PORT ); |
284 | CommandEdit->show(); | 324 | CommandEdit->show(); |
285 | } else { | 325 | } |
326 | else | ||
327 | { | ||
286 | portLine->setText( IMAP_PORT ); | 328 | portLine->setText( IMAP_PORT ); |
287 | } | 329 | } |
288 | } | 330 | } |
289 | 331 | ||
290 | void IMAPconfig::fillValues() | 332 | void IMAPconfig::fillValues() |
291 | { | 333 | { |
292 | accountLine->setText( data->getAccountName() ); | 334 | accountLine->setText( data->getAccountName() ); |
293 | serverLine->setText( data->getServer() ); | 335 | serverLine->setText( data->getServer() ); |
294 | portLine->setText( data->getPort() ); | 336 | portLine->setText( data->getPort() ); |
295 | ComboBox1->setCurrentItem( data->ConnectionType() ); | 337 | ComboBox1->setCurrentItem( data->ConnectionType() ); |
296 | userLine->setText( data->getUser() ); | 338 | userLine->setText( data->getUser() ); |
297 | passLine->setText( data->getPassword() ); | 339 | passLine->setText( data->getPassword() ); |
298 | prefixLine->setText(data->getPrefix()); | 340 | prefixLine->setText(data->getPrefix()); |
299 | } | 341 | } |
300 | 342 | ||
301 | void IMAPconfig::accept() | 343 | void IMAPconfig::accept() |
302 | { | 344 | { |
303 | data->setAccountName( accountLine->text() ); | 345 | data->setAccountName( accountLine->text() ); |
304 | data->setServer( serverLine->text() ); | 346 | data->setServer( serverLine->text() ); |
305 | data->setPort( portLine->text() ); | 347 | data->setPort( portLine->text() ); |
306 | data->setConnectionType( ComboBox1->currentItem() ); | 348 | data->setConnectionType( ComboBox1->currentItem() ); |
307 | data->setUser( userLine->text() ); | 349 | data->setUser( userLine->text() ); |
308 | data->setPassword( passLine->text() ); | 350 | data->setPassword( passLine->text() ); |
309 | data->setPrefix(prefixLine->text()); | 351 | data->setPrefix(prefixLine->text()); |
310 | 352 | ||
311 | QDialog::accept(); | 353 | QDialog::accept(); |
312 | } | 354 | } |
313 | 355 | ||
314 | /** | 356 | /** |
315 | * POP3config | 357 | * POP3config |
316 | */ | 358 | */ |
317 | 359 | ||
318 | POP3config::POP3config( POP3account *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 360 | POP3config::POP3config( POP3account *account, QWidget *parent, const char *name, bool modal, WFlags flags ) |
319 | : POP3configUI( parent, name, modal, flags ) | 361 | : POP3configUI( parent, name, modal, flags ) |
320 | { | 362 | { |
321 | data = account; | 363 | data = account; |
322 | fillValues(); | 364 | fillValues(); |
323 | 365 | ||
324 | connect( ComboBox1, SIGNAL( activated( int ) ), SLOT( slotConnectionToggle( int ) ) ); | 366 | connect( ComboBox1, SIGNAL( activated( int ) ), SLOT( slotConnectionToggle( int ) ) ); |
325 | ComboBox1->insertItem( "Only if available", 0 ); | 367 | ComboBox1->insertItem( "Only if available", 0 ); |
326 | ComboBox1->insertItem( "Always, Negotiated", 1 ); | 368 | ComboBox1->insertItem( "Always, Negotiated", 1 ); |
327 | ComboBox1->insertItem( "Connect on secure port", 2 ); | 369 | ComboBox1->insertItem( "Connect on secure port", 2 ); |
328 | ComboBox1->insertItem( "Run command instead", 3 ); | 370 | ComboBox1->insertItem( "Run command instead", 3 ); |
329 | CommandEdit->hide(); | 371 | CommandEdit->hide(); |
330 | ComboBox1->setCurrentItem( data->ConnectionType() ); | 372 | ComboBox1->setCurrentItem( data->ConnectionType() ); |
331 | } | 373 | } |
332 | 374 | ||
333 | void POP3config::slotConnectionToggle( int index ) | 375 | void POP3config::slotConnectionToggle( int index ) |
334 | { | 376 | { |
335 | // 2 is ssl connection | 377 | // 2 is ssl connection |
336 | if ( index == 2 ) { | 378 | if ( index == 2 ) |
337 | portLine->setText( POP3_SSL_PORT ); | 379 | { |
338 | } else if ( index == 3 ) { | 380 | portLine->setText( POP3_SSL_PORT ); |
381 | } | ||
382 | else if ( index == 3 ) | ||
383 | { | ||
339 | portLine->setText( POP3_PORT ); | 384 | portLine->setText( POP3_PORT ); |
340 | CommandEdit->show(); | 385 | CommandEdit->show(); |
341 | } else { | 386 | } |
387 | else | ||
388 | { | ||
342 | portLine->setText( POP3_PORT ); | 389 | portLine->setText( POP3_PORT ); |
343 | } | 390 | } |
344 | } | 391 | } |
345 | 392 | ||
346 | void POP3config::fillValues() | 393 | void POP3config::fillValues() |
347 | { | 394 | { |
348 | accountLine->setText( data->getAccountName() ); | 395 | accountLine->setText( data->getAccountName() ); |
349 | serverLine->setText( data->getServer() ); | 396 | serverLine->setText( data->getServer() ); |
350 | portLine->setText( data->getPort() ); | 397 | portLine->setText( data->getPort() ); |
351 | ComboBox1->setCurrentItem( data->ConnectionType() ); | 398 | ComboBox1->setCurrentItem( data->ConnectionType() ); |
352 | userLine->setText( data->getUser() ); | 399 | userLine->setText( data->getUser() ); |
353 | passLine->setText( data->getPassword() ); | 400 | passLine->setText( data->getPassword() ); |
354 | } | 401 | } |
355 | 402 | ||
356 | void POP3config::accept() | 403 | void POP3config::accept() |
357 | { | 404 | { |
358 | data->setAccountName( accountLine->text() ); | 405 | data->setAccountName( accountLine->text() ); |
359 | data->setServer( serverLine->text() ); | 406 | data->setServer( serverLine->text() ); |
360 | data->setPort( portLine->text() ); | 407 | data->setPort( portLine->text() ); |
361 | data->setConnectionType( ComboBox1->currentItem() ); | 408 | data->setConnectionType( ComboBox1->currentItem() ); |
362 | data->setUser( userLine->text() ); | 409 | data->setUser( userLine->text() ); |
363 | data->setPassword( passLine->text() ); | 410 | data->setPassword( passLine->text() ); |
364 | 411 | ||
365 | QDialog::accept(); | 412 | QDialog::accept(); |
366 | } | 413 | } |
367 | 414 | ||
368 | /** | 415 | /** |
369 | * SMTPconfig | 416 | * SMTPconfig |
370 | */ | 417 | */ |
371 | 418 | ||
372 | SMTPconfig::SMTPconfig( SMTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 419 | SMTPconfig::SMTPconfig( SMTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) |
373 | : SMTPconfigUI( parent, name, modal, flags ) | 420 | : SMTPconfigUI( parent, name, modal, flags ) |
374 | { | 421 | { |
375 | data = account; | 422 | data = account; |
376 | 423 | ||
377 | connect( loginBox, SIGNAL( toggled( bool ) ), userLine, SLOT( setEnabled( bool ) ) ); | 424 | connect( loginBox, SIGNAL( toggled( bool ) ), userLine, SLOT( setEnabled( bool ) ) ); |
378 | connect( loginBox, SIGNAL( toggled( bool ) ), passLine, SLOT( setEnabled( bool ) ) ); | 425 | connect( loginBox, SIGNAL( toggled( bool ) ), passLine, SLOT( setEnabled( bool ) ) ); |
379 | 426 | ||
380 | fillValues(); | 427 | fillValues(); |
381 | 428 | ||
382 | connect( ComboBox1, SIGNAL( activated( int ) ), SLOT( slotConnectionToggle( int ) ) ); | 429 | connect( ComboBox1, SIGNAL( activated( int ) ), SLOT( slotConnectionToggle( int ) ) ); |
383 | ComboBox1->insertItem( "Only if available", 0 ); | 430 | ComboBox1->insertItem( "Only if available", 0 ); |
384 | ComboBox1->insertItem( "Always, Negotiated", 1 ); | 431 | ComboBox1->insertItem( "Always, Negotiated", 1 ); |
385 | ComboBox1->insertItem( "Connect on secure port", 2 ); | 432 | ComboBox1->insertItem( "Connect on secure port", 2 ); |
386 | ComboBox1->insertItem( "Run command instead", 3 ); | 433 | ComboBox1->insertItem( "Run command instead", 3 ); |
387 | CommandEdit->hide(); | 434 | CommandEdit->hide(); |
388 | ComboBox1->setCurrentItem( data->ConnectionType() ); | 435 | ComboBox1->setCurrentItem( data->ConnectionType() ); |
389 | } | 436 | } |
390 | 437 | ||
391 | void SMTPconfig::slotConnectionToggle( int index ) | 438 | void SMTPconfig::slotConnectionToggle( int index ) |
392 | { | 439 | { |
393 | // 2 is ssl connection | 440 | // 2 is ssl connection |
394 | if ( index == 2 ) { | 441 | if ( index == 2 ) |
395 | portLine->setText( SMTP_SSL_PORT ); | 442 | { |
396 | } else if ( index == 3 ) { | 443 | portLine->setText( SMTP_SSL_PORT ); |
444 | } | ||
445 | else if ( index == 3 ) | ||
446 | { | ||
397 | portLine->setText( SMTP_PORT ); | 447 | portLine->setText( SMTP_PORT ); |
398 | CommandEdit->show(); | 448 | CommandEdit->show(); |
399 | } else { | 449 | } |
450 | else | ||
451 | { | ||
400 | portLine->setText( SMTP_PORT ); | 452 | portLine->setText( SMTP_PORT ); |
401 | } | 453 | } |
402 | } | 454 | } |
403 | 455 | ||
404 | void SMTPconfig::fillValues() | 456 | void SMTPconfig::fillValues() |
405 | { | 457 | { |
406 | accountLine->setText( data->getAccountName() ); | 458 | accountLine->setText( data->getAccountName() ); |
407 | serverLine->setText( data->getServer() ); | 459 | serverLine->setText( data->getServer() ); |
408 | portLine->setText( data->getPort() ); | 460 | portLine->setText( data->getPort() ); |
409 | ComboBox1->setCurrentItem( data->ConnectionType() ); | 461 | ComboBox1->setCurrentItem( data->ConnectionType() ); |
410 | loginBox->setChecked( data->getLogin() ); | 462 | loginBox->setChecked( data->getLogin() ); |
411 | userLine->setText( data->getUser() ); | 463 | userLine->setText( data->getUser() ); |
412 | passLine->setText( data->getPassword() ); | 464 | passLine->setText( data->getPassword() ); |
413 | } | 465 | } |
414 | 466 | ||
415 | void SMTPconfig::accept() | 467 | void SMTPconfig::accept() |
416 | { | 468 | { |
417 | data->setAccountName( accountLine->text() ); | 469 | data->setAccountName( accountLine->text() ); |
418 | data->setServer( serverLine->text() ); | 470 | data->setServer( serverLine->text() ); |
419 | data->setPort( portLine->text() ); | 471 | data->setPort( portLine->text() ); |
420 | data->setConnectionType( ComboBox1->currentItem() ); | 472 | data->setConnectionType( ComboBox1->currentItem() ); |
421 | data->setLogin( loginBox->isChecked() ); | 473 | data->setLogin( loginBox->isChecked() ); |
422 | data->setUser( userLine->text() ); | 474 | data->setUser( userLine->text() ); |
423 | data->setPassword( passLine->text() ); | 475 | data->setPassword( passLine->text() ); |
424 | 476 | ||
425 | QDialog::accept(); | 477 | QDialog::accept(); |
426 | } | 478 | } |
427 | 479 | ||
428 | /** | 480 | /** |
429 | * NNTPconfig | 481 | * NNTPconfig |
430 | */ | 482 | */ |
431 | 483 | ||
432 | NNTPconfig::NNTPconfig( NNTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 484 | NNTPconfig::NNTPconfig( NNTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) |
433 | : NNTPconfigUI( parent, name, modal, flags ) | 485 | : NNTPconfigUI( parent, name, modal, flags ) |
434 | { | 486 | { |
435 | data = account; | 487 | data = account; |
436 | 488 | ||
437 | connect( loginBox, SIGNAL( toggled( bool ) ), userLine, SLOT( setEnabled( bool ) ) ); | 489 | connect( loginBox, SIGNAL( toggled( bool ) ), userLine, SLOT( setEnabled( bool ) ) ); |
438 | connect( loginBox, SIGNAL( toggled( bool ) ), passLine, SLOT( setEnabled( bool ) ) ); | 490 | connect( loginBox, SIGNAL( toggled( bool ) ), passLine, SLOT( setEnabled( bool ) ) ); |
439 | 491 | ||
440 | fillValues(); | 492 | fillValues(); |
441 | 493 | ||
442 | connect( sslBox, SIGNAL( toggled( bool ) ), SLOT( slotSSL( bool ) ) ); | 494 | connect( sslBox, SIGNAL( toggled( bool ) ), SLOT( slotSSL( bool ) ) ); |
443 | } | 495 | } |
444 | 496 | ||
445 | void NNTPconfig::slotSSL( bool enabled ) | 497 | void NNTPconfig::slotSSL( bool enabled ) |
446 | { | 498 | { |
447 | if ( enabled ) { | 499 | if ( enabled ) |
500 | { | ||
448 | portLine->setText( NNTP_SSL_PORT ); | 501 | portLine->setText( NNTP_SSL_PORT ); |
449 | } else { | 502 | } |
503 | else | ||
504 | { | ||
450 | portLine->setText( NNTP_PORT ); | 505 | portLine->setText( NNTP_PORT ); |
451 | } | 506 | } |
452 | } | 507 | } |
453 | 508 | ||
454 | void NNTPconfig::fillValues() | 509 | void NNTPconfig::fillValues() |
455 | { | 510 | { |
456 | accountLine->setText( data->getAccountName() ); | 511 | accountLine->setText( data->getAccountName() ); |
457 | serverLine->setText( data->getServer() ); | 512 | serverLine->setText( data->getServer() ); |
458 | portLine->setText( data->getPort() ); | 513 | portLine->setText( data->getPort() ); |
459 | sslBox->setChecked( data->getSSL() ); | 514 | sslBox->setChecked( data->getSSL() ); |
460 | loginBox->setChecked( data->getLogin() ); | 515 | loginBox->setChecked( data->getLogin() ); |
461 | userLine->setText( data->getUser() ); | 516 | userLine->setText( data->getUser() ); |
462 | passLine->setText( data->getPassword() ); | 517 | passLine->setText( data->getPassword() ); |
463 | } | 518 | } |
464 | 519 | ||
465 | void NNTPconfig::accept() | 520 | void NNTPconfig::accept() |
466 | { | 521 | { |
467 | data->setAccountName( accountLine->text() ); | 522 | data->setAccountName( accountLine->text() ); |
468 | data->setServer( serverLine->text() ); | 523 | data->setServer( serverLine->text() ); |
469 | data->setPort( portLine->text() ); | 524 | data->setPort( portLine->text() ); |
470 | data->setSSL( sslBox->isChecked() ); | 525 | data->setSSL( sslBox->isChecked() ); |
471 | data->setLogin( loginBox->isChecked() ); | 526 | data->setLogin( loginBox->isChecked() ); |
472 | data->setUser( userLine->text() ); | 527 | data->setUser( userLine->text() ); |
473 | data->setPassword( passLine->text() ); | 528 | data->setPassword( passLine->text() ); |
474 | 529 | ||
475 | QDialog::accept(); | 530 | QDialog::accept(); |
476 | } | 531 | } |
477 | 532 | ||
diff --git a/noncore/net/mail/opiemail.cpp b/noncore/net/mail/opiemail.cpp index 0795436..abf93dc 100644 --- a/noncore/net/mail/opiemail.cpp +++ b/noncore/net/mail/opiemail.cpp | |||
@@ -1,229 +1,258 @@ | |||
1 | #include <qmessagebox.h> | 1 | |
2 | #include "settingsdialog.h" | 2 | #include "settingsdialog.h" |
3 | #include "opiemail.h" | 3 | #include "opiemail.h" |
4 | #include "editaccounts.h" | 4 | #include "editaccounts.h" |
5 | #include "composemail.h" | 5 | #include "composemail.h" |
6 | #include "mailistviewitem.h" | ||
7 | #include "viewmail.h" | ||
8 | #include "selectstore.h" | ||
9 | #include "selectsmtp.h" | ||
10 | |||
11 | /* OPIE */ | ||
6 | #include <libmailwrapper/smtpwrapper.h> | 12 | #include <libmailwrapper/smtpwrapper.h> |
13 | #include <libmailwrapper/mailtypes.h> | ||
14 | #include <libmailwrapper/abstractmail.h> | ||
7 | #include <qpe/qcopenvelope_qws.h> | 15 | #include <qpe/qcopenvelope_qws.h> |
8 | #include <qpe/resource.h> | 16 | #include <qpe/resource.h> |
17 | #include <qpe/qpeapplication.h> | ||
18 | |||
19 | /* QT */ | ||
20 | #include <qmessagebox.h> | ||
9 | #include <qaction.h> | 21 | #include <qaction.h> |
10 | #include <qapplication.h> | 22 | #include <qapplication.h> |
11 | #include <libmailwrapper/mailtypes.h> | ||
12 | #include <libmailwrapper/abstractmail.h> | ||
13 | #include "mailistviewitem.h" | ||
14 | #include "viewmail.h" | ||
15 | #include "selectstore.h" | ||
16 | #include "selectsmtp.h" | ||
17 | 23 | ||
18 | OpieMail::OpieMail( QWidget *parent, const char *name, WFlags flags ) | 24 | OpieMail::OpieMail( QWidget *parent, const char *name, WFlags flags ) |
19 | : MainWindow( parent, name, WStyle_ContextHelp ) | 25 | : MainWindow( parent, name, WStyle_ContextHelp ) |
20 | { | 26 | { |
21 | settings = new Settings(); | 27 | settings = new Settings(); |
22 | 28 | ||
23 | folderView->populate( settings->getAccounts() ); | 29 | folderView->populate( settings->getAccounts() ); |
24 | } | 30 | } |
25 | 31 | ||
26 | OpieMail::~OpieMail() | 32 | OpieMail::~OpieMail() |
27 | { | 33 | { |
28 | if (settings) delete settings; | 34 | if (settings) delete settings; |
29 | } | 35 | } |
30 | 36 | ||
31 | void OpieMail::appMessage(const QCString &msg, const QByteArray &data) | 37 | void OpieMail::appMessage(const QCString &msg, const QByteArray &data) |
32 | { | 38 | { |
33 | // copied from old mail2 | 39 | // copied from old mail2 |
34 | if (msg == "writeMail(QString,QString)") { | 40 | if (msg == "writeMail(QString,QString)") |
41 | { | ||
35 | QDataStream stream(data,IO_ReadOnly); | 42 | QDataStream stream(data,IO_ReadOnly); |
36 | QString name, email; | 43 | QString name, email; |
37 | stream >> name >> email; | 44 | stream >> name >> email; |
38 | // removing the whitespaces at beginning and end is needed! | 45 | // removing the whitespaces at beginning and end is needed! |
39 | slotwriteMail(name.stripWhiteSpace(),email.stripWhiteSpace()); | 46 | slotwriteMail(name.stripWhiteSpace(),email.stripWhiteSpace()); |
40 | } else if (msg == "newMail()") { | 47 | } |
48 | else if (msg == "newMail()") | ||
49 | { | ||
41 | slotComposeMail(); | 50 | slotComposeMail(); |
42 | } | 51 | } |
43 | } | 52 | } |
44 | 53 | ||
45 | void OpieMail::slotwriteMail(const QString&name,const QString&email) | 54 | void OpieMail::slotwriteMail(const QString&name,const QString&email) |
46 | { | 55 | { |
47 | ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp ); | 56 | ComposeMail compose( settings, this, 0, true , WStyle_ContextHelp ); |
48 | if (!email.isEmpty()) { | 57 | if (!email.isEmpty()) |
49 | if (!name.isEmpty()) { | 58 | { |
59 | if (!name.isEmpty()) | ||
60 | { | ||
50 | compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">"); | 61 | compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">"); |
51 | } else { | 62 | } |
63 | else | ||
64 | { | ||
52 | compose.setTo(email); | 65 | compose.setTo(email); |
53 | } | 66 | } |
54 | } | 67 | } |
55 | compose.showMaximized(); | ||
56 | compose.slotAdjustColumns(); | 68 | compose.slotAdjustColumns(); |
57 | compose.exec(); | 69 | QPEApplication::execDialog( &compose ); |
58 | } | 70 | } |
59 | 71 | ||
60 | void OpieMail::slotComposeMail() | 72 | void OpieMail::slotComposeMail() |
61 | { | 73 | { |
62 | qDebug( "Compose Mail" ); | 74 | qDebug( "Compose Mail" ); |
63 | slotwriteMail(0l,0l); | 75 | slotwriteMail(0l,0l); |
64 | } | 76 | } |
65 | 77 | ||
66 | void OpieMail::slotSendQueued() | 78 | void OpieMail::slotSendQueued() |
67 | { | 79 | { |
68 | qDebug( "Send Queued" ); | 80 | qDebug( "Send Queued" ); |
69 | SMTPaccount *smtp = 0; | 81 | SMTPaccount *smtp = 0; |
70 | 82 | ||
71 | QList<Account> list = settings->getAccounts(); | 83 | QList<Account> list = settings->getAccounts(); |
72 | QList<SMTPaccount> smtpList; | 84 | QList<SMTPaccount> smtpList; |
73 | smtpList.setAutoDelete(false); | 85 | smtpList.setAutoDelete(false); |
74 | Account *it; | 86 | Account *it; |
75 | for ( it = list.first(); it; it = list.next() ) { | 87 | for ( it = list.first(); it; it = list.next() ) |
76 | if ( it->getType().compare( "SMTP" ) == 0 ) { | 88 | { |
89 | if ( it->getType().compare( "SMTP" ) == 0 ) | ||
90 | { | ||
77 | smtp = static_cast<SMTPaccount *>(it); | 91 | smtp = static_cast<SMTPaccount *>(it); |
78 | smtpList.append(smtp); | 92 | smtpList.append(smtp); |
79 | } | 93 | } |
80 | } | 94 | } |
81 | if (smtpList.count()==0) { | 95 | if (smtpList.count()==0) |
96 | { | ||
82 | QMessageBox::information(0,tr("Info"),tr("Define a smtp account first")); | 97 | QMessageBox::information(0,tr("Info"),tr("Define a smtp account first")); |
83 | return; | 98 | return; |
84 | } | 99 | } |
85 | if (smtpList.count()==1) { | 100 | if (smtpList.count()==1) |
101 | { | ||
86 | smtp = smtpList.at(0); | 102 | smtp = smtpList.at(0); |
87 | } else { | 103 | } |
104 | else | ||
105 | { | ||
88 | smtp = 0; | 106 | smtp = 0; |
89 | selectsmtp selsmtp; | 107 | selectsmtp selsmtp; |
90 | selsmtp.setSelectionlist(&smtpList); | 108 | selsmtp.setSelectionlist(&smtpList); |
91 | selsmtp.showMaximized(); | 109 | if ( QPEApplication::execDialog( &selsmtp ) == QDialog::Accepted ) |
92 | if (selsmtp.exec()==QDialog::Accepted) { | 110 | { |
93 | smtp = selsmtp.selected_smtp(); | 111 | smtp = selsmtp.selected_smtp(); |
94 | } | 112 | } |
95 | } | 113 | } |
96 | if (smtp) { | 114 | if (smtp) |
115 | { | ||
97 | SMTPwrapper * wrap = new SMTPwrapper(smtp); | 116 | SMTPwrapper * wrap = new SMTPwrapper(smtp); |
98 | if ( wrap->flushOutbox() ) { | 117 | if ( wrap->flushOutbox() ) |
118 | { | ||
99 | QMessageBox::information(0,tr("Info"),tr("Mail queue flushed")); | 119 | QMessageBox::information(0,tr("Info"),tr("Mail queue flushed")); |
100 | } | 120 | } |
101 | delete wrap; | 121 | delete wrap; |
102 | } | 122 | } |
103 | } | 123 | } |
104 | 124 | ||
105 | void OpieMail::slotSearchMails() | 125 | void OpieMail::slotSearchMails() |
106 | { | 126 | { |
107 | qDebug( "Search Mails" ); | 127 | qDebug( "Search Mails" ); |
108 | } | 128 | } |
109 | 129 | ||
110 | void OpieMail::slotEditSettings() | 130 | void OpieMail::slotEditSettings() |
111 | { | 131 | { |
112 | SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp ); | 132 | SettingsDialog settingsDialog( this, 0, true, WStyle_ContextHelp ); |
113 | settingsDialog.showMaximized(); | 133 | QPEApplication::execDialog( &settingsDialog ); |
114 | settingsDialog.exec(); | ||
115 | } | 134 | } |
116 | 135 | ||
117 | void OpieMail::slotEditAccounts() | 136 | void OpieMail::slotEditAccounts() |
118 | { | 137 | { |
119 | qDebug( "Edit Accounts" ); | 138 | qDebug( "Edit Accounts" ); |
120 | EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp ); | 139 | EditAccounts eaDialog( settings, this, 0, true, WStyle_ContextHelp ); |
121 | eaDialog.showMaximized(); | ||
122 | eaDialog.slotAdjustColumns(); | 140 | eaDialog.slotAdjustColumns(); |
123 | eaDialog.exec(); | 141 | QPEApplication::execDialog( &eaDialog ); |
124 | if ( settings ) delete settings; | 142 | if ( settings ) delete settings; |
125 | settings = new Settings(); | 143 | settings = new Settings(); |
126 | 144 | ||
127 | folderView->populate( settings->getAccounts() ); | 145 | folderView->populate( settings->getAccounts() ); |
128 | } | 146 | } |
129 | 147 | ||
130 | void OpieMail::displayMail() | 148 | void OpieMail::displayMail() |
131 | { | 149 | { |
132 | QListViewItem*item = mailView->currentItem(); | 150 | QListViewItem*item = mailView->currentItem(); |
133 | if (!item) return; | 151 | if (!item) return; |
134 | RecMail mail = ((MailListViewItem*)item)->data(); | 152 | RecMail mail = ((MailListViewItem*)item)->data(); |
135 | RecBody body = folderView->fetchBody(mail); | 153 | RecBody body = folderView->fetchBody(mail); |
136 | ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp ); | 154 | ViewMail readMail( this,"", Qt::WType_Modal | WStyle_ContextHelp ); |
137 | readMail.setBody( body ); | 155 | readMail.setBody( body ); |
138 | readMail.setMail( mail ); | 156 | readMail.setMail( mail ); |
139 | readMail.showMaximized(); | 157 | readMail.showMaximized(); |
140 | readMail.exec(); | 158 | readMail.exec(); |
141 | 159 | ||
142 | if ( readMail.deleted ) { | 160 | if ( readMail.deleted ) |
143 | folderView->refreshCurrent(); | 161 | { |
144 | } else { | 162 | folderView->refreshCurrent(); |
163 | } | ||
164 | else | ||
165 | { | ||
145 | ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "" ) ); | 166 | ( (MailListViewItem*)item )->setPixmap( 0, Resource::loadPixmap( "" ) ); |
146 | } | 167 | } |
147 | } | 168 | } |
148 | 169 | ||
149 | void OpieMail::slotDeleteMail() | 170 | void OpieMail::slotDeleteMail() |
150 | { | 171 | { |
151 | if (!mailView->currentItem()) return; | 172 | if (!mailView->currentItem()) return; |
152 | RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data(); | 173 | RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data(); |
153 | if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail.getFrom() + " - " + mail.getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) { | 174 | if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + mail.getFrom() + " - " + mail.getSubject() ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) |
154 | mail.Wrapper()->deleteMail( mail ); | 175 | { |
155 | folderView->refreshCurrent(); | 176 | mail.Wrapper()->deleteMail( mail ); |
177 | folderView->refreshCurrent(); | ||
156 | } | 178 | } |
157 | } | 179 | } |
158 | 180 | ||
159 | void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int ) | 181 | void OpieMail::mailHold(int button, QListViewItem *item,const QPoint&,int ) |
160 | { | 182 | { |
161 | /* just the RIGHT button - or hold on pda */ | 183 | /* just the RIGHT button - or hold on pda */ |
162 | if (button!=2) {return;} | 184 | if (button!=2) {return;} |
163 | qDebug("Event right/hold"); | 185 | qDebug("Event right/hold"); |
164 | if (!item) return; | 186 | if (!item) return; |
165 | QPopupMenu *m = new QPopupMenu(0); | 187 | QPopupMenu *m = new QPopupMenu(0); |
166 | if (m) { | 188 | if (m) |
189 | { | ||
167 | m->insertItem(tr("Read this mail"),this,SLOT(displayMail())); | 190 | m->insertItem(tr("Read this mail"),this,SLOT(displayMail())); |
168 | m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail())); | 191 | m->insertItem(tr("Delete this mail"),this,SLOT(slotDeleteMail())); |
169 | m->insertItem(tr("Copy/Move this mail"),this,SLOT(slotMoveCopyMail())); | 192 | m->insertItem(tr("Copy/Move this mail"),this,SLOT(slotMoveCopyMail())); |
170 | m->setFocus(); | 193 | m->setFocus(); |
171 | m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); | 194 | m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y()) ); |
172 | delete m; | 195 | delete m; |
173 | } | 196 | } |
174 | } | 197 | } |
175 | 198 | ||
176 | void OpieMail::slotShowFolders( bool show ) | 199 | void OpieMail::slotShowFolders( bool show ) |
177 | { | 200 | { |
178 | qDebug( "Show Folders" ); | 201 | qDebug( "Show Folders" ); |
179 | if ( show && folderView->isHidden() ) { | 202 | if ( show && folderView->isHidden() ) |
203 | { | ||
180 | qDebug( "-> showing" ); | 204 | qDebug( "-> showing" ); |
181 | folderView->show(); | 205 | folderView->show(); |
182 | } else if ( !show && !folderView->isHidden() ) { | 206 | } |
207 | else if ( !show && !folderView->isHidden() ) | ||
208 | { | ||
183 | qDebug( "-> hiding" ); | 209 | qDebug( "-> hiding" ); |
184 | folderView->hide(); | 210 | folderView->hide(); |
185 | } | 211 | } |
186 | } | 212 | } |
187 | 213 | ||
188 | void OpieMail::refreshMailView(QList<RecMail>*list) | 214 | void OpieMail::refreshMailView(QList<RecMail>*list) |
189 | { | 215 | { |
190 | MailListViewItem*item = 0; | 216 | MailListViewItem*item = 0; |
191 | mailView->clear(); | 217 | mailView->clear(); |
192 | for (unsigned int i = 0; i < list->count();++i) { | 218 | for (unsigned int i = 0; i < list->count();++i) |
219 | { | ||
193 | item = new MailListViewItem(mailView,item); | 220 | item = new MailListViewItem(mailView,item); |
194 | item->storeData(*(list->at(i))); | 221 | item->storeData(*(list->at(i))); |
195 | item->showEntry(); | 222 | item->showEntry(); |
196 | } | 223 | } |
197 | } | 224 | } |
198 | 225 | ||
199 | void OpieMail::mailLeftClicked(int button, QListViewItem *item,const QPoint&,int ) | 226 | void OpieMail::mailLeftClicked(int button, QListViewItem *item,const QPoint&,int ) |
200 | { | 227 | { |
201 | /* just LEFT button - or tap with stylus on pda */ | 228 | /* just LEFT button - or tap with stylus on pda */ |
202 | if (button!=1) return; | 229 | if (button!=1) return; |
203 | if (!item) return; | 230 | if (!item) return; |
204 | displayMail(); | 231 | displayMail(); |
205 | } | 232 | } |
206 | 233 | ||
207 | void OpieMail::slotMoveCopyMail() | 234 | void OpieMail::slotMoveCopyMail() |
208 | { | 235 | { |
209 | if (!mailView->currentItem()) return; | 236 | if (!mailView->currentItem()) return; |
210 | RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data(); | 237 | RecMail mail = ((MailListViewItem*)mailView->currentItem() )->data(); |
211 | AbstractMail*targetMail = 0; | 238 | AbstractMail*targetMail = 0; |
212 | QString targetFolder = ""; | 239 | QString targetFolder = ""; |
213 | Selectstore sels; | 240 | Selectstore sels; |
214 | folderView->setupFolderselect(&sels); | 241 | folderView->setupFolderselect(&sels); |
215 | if (!sels.exec()) return; | 242 | if (!sels.exec()) return; |
216 | targetMail = sels.currentMail(); | 243 | targetMail = sels.currentMail(); |
217 | targetFolder = sels.currentFolder(); | 244 | targetFolder = sels.currentFolder(); |
218 | if ( (mail.Wrapper()==targetMail && mail.getMbox()==targetFolder) || | 245 | if ( (mail.Wrapper()==targetMail && mail.getMbox()==targetFolder) || |
219 | targetFolder.isEmpty()) { | 246 | targetFolder.isEmpty()) |
247 | { | ||
220 | return; | 248 | return; |
221 | } | 249 | } |
222 | if (sels.newFolder() && !targetMail->createMbox(targetFolder)) { | 250 | if (sels.newFolder() && !targetMail->createMbox(targetFolder)) |
251 | { | ||
223 | QMessageBox::critical(0,tr("Error creating new Folder"), | 252 | QMessageBox::critical(0,tr("Error creating new Folder"), |
224 | tr("<center>Error while creating<br>new folder - breaking.</center>")); | 253 | tr("<center>Error while creating<br>new folder - breaking.</center>")); |
225 | return; | 254 | return; |
226 | } | 255 | } |
227 | mail.Wrapper()->mvcpMail(mail,targetFolder,targetMail,sels.moveMails()); | 256 | mail.Wrapper()->mvcpMail(mail,targetFolder,targetMail,sels.moveMails()); |
228 | folderView->refreshCurrent(); | 257 | folderView->refreshCurrent(); |
229 | } | 258 | } |
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp index 99965d4..f015228 100644 --- a/noncore/net/mail/viewmail.cpp +++ b/noncore/net/mail/viewmail.cpp | |||
@@ -1,429 +1,472 @@ | |||
1 | #include "composemail.h" | ||
2 | #include "viewmail.h" | ||
3 | #include "accountview.h" | ||
4 | |||
5 | /* OPIE */ | ||
6 | #include <libmailwrapper/settings.h> | ||
7 | #include <libmailwrapper/abstractmail.h> | ||
8 | #include <libmailwrapper/mailtypes.h> | ||
9 | |||
10 | #include <opie2/ofiledialog.h> | ||
11 | #include <qpe/config.h> | ||
12 | #include <qpe/qpeapplication.h> | ||
13 | |||
14 | /* QT */ | ||
1 | #include <qtextbrowser.h> | 15 | #include <qtextbrowser.h> |
2 | #include <qmessagebox.h> | 16 | #include <qmessagebox.h> |
3 | #include <qtextstream.h> | 17 | #include <qtextstream.h> |
4 | #include <qaction.h> | 18 | #include <qaction.h> |
5 | #include <qpopupmenu.h> | 19 | #include <qpopupmenu.h> |
6 | #include <qfile.h> | 20 | #include <qfile.h> |
7 | #include <qapplication.h> | 21 | #include <qapplication.h> |
8 | #include <qvaluelist.h> | 22 | #include <qvaluelist.h> |
9 | 23 | ||
10 | #include <qpe/config.h> | ||
11 | |||
12 | #include <opie2/ofiledialog.h> | ||
13 | |||
14 | #include <libmailwrapper/settings.h> | ||
15 | #include "composemail.h" | ||
16 | #include "viewmail.h" | ||
17 | #include <libmailwrapper/abstractmail.h> | ||
18 | #include "accountview.h" | ||
19 | #include <libmailwrapper/mailtypes.h> | ||
20 | |||
21 | AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, | 24 | AttachItem::AttachItem(QListView * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, |
22 | const QString&fsize,int num,const QValueList<int>&path) | 25 | const QString&fsize,int num,const QValueList<int>&path) |
23 | : QListViewItem(parent,after),_partNum(num) | 26 | : QListViewItem(parent,after),_partNum(num) |
24 | { | 27 | { |
25 | _path=path; | 28 | _path=path; |
26 | setText(0, mime); | 29 | setText(0, mime); |
27 | setText(1, desc); | 30 | setText(1, desc); |
28 | setText(2, file); | 31 | setText(2, file); |
29 | setText(3, fsize); | 32 | setText(3, fsize); |
30 | } | 33 | } |
31 | 34 | ||
32 | AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, | 35 | AttachItem::AttachItem(QListViewItem * parent,QListViewItem *after, const QString&mime,const QString&desc,const QString&file, |
33 | const QString&fsize,int num,const QValueList<int>&path) | 36 | const QString&fsize,int num,const QValueList<int>&path) |
34 | : QListViewItem(parent,after),_partNum(num) | 37 | : QListViewItem(parent,after),_partNum(num) |
35 | { | 38 | { |
36 | _path=path; | 39 | _path=path; |
37 | setText(0, mime); | 40 | setText(0, mime); |
38 | setText(1, desc); | 41 | setText(1, desc); |
39 | setText(2, file); | 42 | setText(2, file); |
40 | setText(3, fsize); | 43 | setText(3, fsize); |
41 | } | 44 | } |
42 | 45 | ||
43 | bool AttachItem::isParentof(const QValueList<int>&path) | 46 | bool AttachItem::isParentof(const QValueList<int>&path) |
44 | { | 47 | { |
45 | /* if not set, then no parent */ | 48 | /* if not set, then no parent */ |
46 | if (path.count()==0||_path.count()==0) return false; | 49 | if (path.count()==0||_path.count()==0) return false; |
47 | /* the parent must have one digit less then a child */ | 50 | /* the parent must have one digit less then a child */ |
48 | if (path.count()!=_path.count()+1) return false; | 51 | if (path.count()!=_path.count()+1) return false; |
49 | for (unsigned int i=0; i < _path.count();++i) { | 52 | for (unsigned int i=0; i < _path.count();++i) |
53 | { | ||
50 | if (_path[i]!=path[i]) return false; | 54 | if (_path[i]!=path[i]) return false; |
51 | } | 55 | } |
52 | return true; | 56 | return true; |
53 | } | 57 | } |
54 | 58 | ||
55 | AttachItem* ViewMail::searchParent(const QValueList<int>&path) | 59 | AttachItem* ViewMail::searchParent(const QValueList<int>&path) |
56 | { | 60 | { |
57 | QListViewItemIterator it( attachments ); | 61 | QListViewItemIterator it( attachments ); |
58 | for ( ; it.current(); ++it ) { | 62 | for ( ; it.current(); ++it ) |
63 | { | ||
59 | AttachItem*ati = (AttachItem*)it.current(); | 64 | AttachItem*ati = (AttachItem*)it.current(); |
60 | if (ati->isParentof(path)) return ati; | 65 | if (ati->isParentof(path)) return ati; |
61 | } | 66 | } |
62 | return 0; | 67 | return 0; |
63 | } | 68 | } |
64 | 69 | ||
65 | AttachItem* ViewMail::lastChild(AttachItem*parent) | 70 | AttachItem* ViewMail::lastChild(AttachItem*parent) |
66 | { | 71 | { |
67 | if (!parent) return 0; | 72 | if (!parent) return 0; |
68 | AttachItem* item = (AttachItem*)parent->firstChild(); | 73 | AttachItem* item = (AttachItem*)parent->firstChild(); |
69 | if (!item) return item; | 74 | if (!item) return item; |
70 | AttachItem*temp=0; | 75 | AttachItem*temp=0; |
71 | while( (temp=(AttachItem*)item->nextSibling())) { | 76 | while( (temp=(AttachItem*)item->nextSibling())) |
77 | { | ||
72 | item = temp; | 78 | item = temp; |
73 | } | 79 | } |
74 | return item; | 80 | return item; |
75 | } | 81 | } |
76 | 82 | ||
77 | void ViewMail::setBody( RecBody body ) { | 83 | void ViewMail::setBody( RecBody body ) |
78 | |||
79 | m_body = body; | ||
80 | m_mail[2] = body.Bodytext(); | ||
81 | attachbutton->setEnabled(body.Parts().count()>0); | ||
82 | attachments->setEnabled(body.Parts().count()>0); | ||
83 | if (body.Parts().count()==0) { | ||
84 | return; | ||
85 | } | ||
86 | AttachItem * curItem=0; | ||
87 | AttachItem * parentItem = 0; | ||
88 | QString type=body.Description().Type()+"/"+body.Description().Subtype(); | ||
89 | QString desc,fsize; | ||
90 | double s = body.Description().Size(); | ||
91 | int w; | ||
92 | w=0; | ||
93 | |||
94 | while (s>1024) { | ||
95 | s/=1024; | ||
96 | ++w; | ||
97 | if (w>=2) break; | ||
98 | } | ||
99 | |||
100 | QString q=""; | ||
101 | switch(w) { | ||
102 | case 1: | ||
103 | q="k"; | ||
104 | break; | ||
105 | case 2: | ||
106 | q="M"; | ||
107 | break; | ||
108 | default: | ||
109 | break; | ||
110 | } | ||
111 | |||
112 | { | 84 | { |
113 | /* I did not found a method to make a CONTENT reset on a QTextStream | ||
114 | so I use this construct that the stream will re-constructed in each | ||
115 | loop. To let it work, the textstream is packed into a own area of | ||
116 | code is it will be destructed after finishing its small job. | ||
117 | */ | ||
118 | QTextOStream o(&fsize); | ||
119 | if (w>0) o.precision(2); else o.precision(0); | ||
120 | o.setf(QTextStream::fixed); | ||
121 | o << s << " " << q << "Byte"; | ||
122 | } | ||
123 | |||
124 | curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body.Description().Positionlist()); | ||
125 | QString filename = ""; | ||
126 | 85 | ||
127 | for (unsigned int i = 0; i < body.Parts().count();++i) { | 86 | m_body = body; |
128 | type = body.Parts()[i].Type()+"/"+body.Parts()[i].Subtype(); | 87 | m_mail[2] = body.Bodytext(); |
129 | part_plist_t::ConstIterator it = body.Parts()[i].Parameters().begin(); | 88 | attachbutton->setEnabled(body.Parts().count()>0); |
130 | for (;it!=body.Parts()[i].Parameters().end();++it) { | 89 | attachments->setEnabled(body.Parts().count()>0); |
131 | qDebug(it.key()); | 90 | if (body.Parts().count()==0) |
132 | if (it.key().lower()=="name") { | 91 | { |
133 | filename=it.data(); | 92 | return; |
134 | } | ||
135 | } | 93 | } |
136 | s = body.Parts()[i].Size(); | 94 | AttachItem * curItem=0; |
137 | w = 0; | 95 | AttachItem * parentItem = 0; |
138 | while (s>1024) { | 96 | QString type=body.Description().Type()+"/"+body.Description().Subtype(); |
97 | QString desc,fsize; | ||
98 | double s = body.Description().Size(); | ||
99 | int w; | ||
100 | w=0; | ||
101 | |||
102 | while (s>1024) | ||
103 | { | ||
139 | s/=1024; | 104 | s/=1024; |
140 | ++w; | 105 | ++w; |
141 | if (w>=2) break; | 106 | if (w>=2) break; |
142 | } | 107 | } |
143 | switch(w) { | 108 | |
109 | QString q=""; | ||
110 | switch(w) | ||
111 | { | ||
144 | case 1: | 112 | case 1: |
145 | q="k"; | 113 | q="k"; |
146 | break; | 114 | break; |
147 | case 2: | 115 | case 2: |
148 | q="M"; | 116 | q="M"; |
149 | break; | 117 | break; |
150 | default: | 118 | default: |
151 | q=""; | ||
152 | break; | 119 | break; |
153 | } | 120 | } |
154 | QTextOStream o(&fsize); | 121 | |
155 | if (w>0) o.precision(2); else o.precision(0); | 122 | { |
156 | o.setf(QTextStream::fixed); | 123 | /* I did not found a method to make a CONTENT reset on a QTextStream |
157 | o << s << " " << q << "Byte"; | 124 | so I use this construct that the stream will re-constructed in each |
158 | desc = body.Parts()[i].Description(); | 125 | loop. To let it work, the textstream is packed into a own area of |
159 | parentItem = searchParent(body.Parts()[i].Positionlist()); | 126 | code is it will be destructed after finishing its small job. |
160 | if (parentItem) { | 127 | */ |
161 | AttachItem*temp = lastChild(parentItem); | 128 | QTextOStream o(&fsize); |
162 | if (temp) curItem = temp; | 129 | if (w>0) o.precision(2); else o.precision(0); |
163 | curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist()); | 130 | o.setf(QTextStream::fixed); |
164 | attachments->setRootIsDecorated(true); | 131 | o << s << " " << q << "Byte"; |
165 | curItem = parentItem; | 132 | } |
166 | } else { | 133 | |
167 | curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist()); | 134 | curItem=new AttachItem(attachments,curItem,type,"Mailbody","",fsize,-1,body.Description().Positionlist()); |
135 | QString filename = ""; | ||
136 | |||
137 | for (unsigned int i = 0; i < body.Parts().count();++i) | ||
138 | { | ||
139 | type = body.Parts()[i].Type()+"/"+body.Parts()[i].Subtype(); | ||
140 | part_plist_t::ConstIterator it = body.Parts()[i].Parameters().begin(); | ||
141 | for (;it!=body.Parts()[i].Parameters().end();++it) | ||
142 | { | ||
143 | qDebug(it.key()); | ||
144 | if (it.key().lower()=="name") | ||
145 | { | ||
146 | filename=it.data(); | ||
147 | } | ||
148 | } | ||
149 | s = body.Parts()[i].Size(); | ||
150 | w = 0; | ||
151 | while (s>1024) | ||
152 | { | ||
153 | s/=1024; | ||
154 | ++w; | ||
155 | if (w>=2) break; | ||
156 | } | ||
157 | switch(w) | ||
158 | { | ||
159 | case 1: | ||
160 | q="k"; | ||
161 | break; | ||
162 | case 2: | ||
163 | q="M"; | ||
164 | break; | ||
165 | default: | ||
166 | q=""; | ||
167 | break; | ||
168 | } | ||
169 | QTextOStream o(&fsize); | ||
170 | if (w>0) o.precision(2); else o.precision(0); | ||
171 | o.setf(QTextStream::fixed); | ||
172 | o << s << " " << q << "Byte"; | ||
173 | desc = body.Parts()[i].Description(); | ||
174 | parentItem = searchParent(body.Parts()[i].Positionlist()); | ||
175 | if (parentItem) | ||
176 | { | ||
177 | AttachItem*temp = lastChild(parentItem); | ||
178 | if (temp) curItem = temp; | ||
179 | curItem=new AttachItem(parentItem,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist()); | ||
180 | attachments->setRootIsDecorated(true); | ||
181 | curItem = parentItem; | ||
182 | } | ||
183 | else | ||
184 | { | ||
185 | curItem=new AttachItem(attachments,curItem,type,desc,filename,fsize,i,body.Parts()[i].Positionlist()); | ||
186 | } | ||
168 | } | 187 | } |
169 | } | ||
170 | } | 188 | } |
171 | 189 | ||
172 | 190 | ||
173 | void ViewMail::slotShowHtml( bool state ) { | 191 | void ViewMail::slotShowHtml( bool state ) |
192 | { | ||
174 | m_showHtml = state; | 193 | m_showHtml = state; |
175 | setText(); | 194 | setText(); |
176 | } | 195 | } |
177 | 196 | ||
178 | void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) { | 197 | void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int ) |
198 | { | ||
179 | if (!item ) | 199 | if (!item ) |
180 | return; | 200 | return; |
181 | 201 | ||
182 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) { | 202 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) |
203 | { | ||
183 | setText(); | 204 | setText(); |
184 | return; | 205 | return; |
185 | } | 206 | } |
186 | QPopupMenu *menu = new QPopupMenu(); | 207 | QPopupMenu *menu = new QPopupMenu(); |
187 | int ret=0; | 208 | int ret=0; |
188 | 209 | ||
189 | if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" ) { | 210 | if ( item->text( 0 ).left( 5 ) == "text/" || item->text(0)=="message/rfc822" ) |
190 | menu->insertItem( tr( "Show Text" ), 1 ); | 211 | { |
191 | } | 212 | menu->insertItem( tr( "Show Text" ), 1 ); |
192 | menu->insertItem( tr( "Save Attachment" ), 0 ); | 213 | } |
193 | menu->insertSeparator(1); | 214 | menu->insertItem( tr( "Save Attachment" ), 0 ); |
194 | 215 | menu->insertSeparator(1); | |
195 | ret = menu->exec( point, 0 ); | 216 | |
196 | 217 | ret = menu->exec( point, 0 ); | |
197 | switch(ret) { | 218 | |
198 | case 0: | 219 | switch(ret) |
199 | { MimeTypes types; | 220 | { |
200 | types.insert( "all", "*" ); | 221 | case 0: |
201 | QString str = Opie::OFileDialog::getSaveFileName( 1, | 222 | { |
202 | "/", item->text( 2 ) , types, 0 ); | 223 | MimeTypes types; |
203 | 224 | types.insert( "all", "*" ); | |
204 | if( !str.isEmpty() ) { | 225 | QString str = Opie::OFileDialog::getSaveFileName( 1, |
205 | encodedString*content = m_recMail.Wrapper()->fetchDecodedPart( m_recMail, m_body.Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); | 226 | "/", item->text( 2 ) , types, 0 ); |
206 | if (content) { | 227 | |
207 | QFile output(str); | 228 | if( !str.isEmpty() ) |
208 | output.open(IO_WriteOnly); | 229 | { |
209 | output.writeBlock(content->Content(),content->Length()); | 230 | encodedString*content = m_recMail.Wrapper()->fetchDecodedPart( m_recMail, m_body.Parts()[ ( ( AttachItem* )item )->Partnumber() ] ); |
210 | output.close(); | 231 | if (content) |
211 | delete content; | 232 | { |
212 | } | 233 | QFile output(str); |
213 | } | 234 | output.open(IO_WriteOnly); |
214 | } | 235 | output.writeBlock(content->Content(),content->Length()); |
236 | output.close(); | ||
237 | delete content; | ||
238 | } | ||
239 | } | ||
240 | } | ||
215 | break ; | 241 | break ; |
216 | 242 | ||
217 | case 1: | 243 | case 1: |
218 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) { | 244 | if ( ( ( AttachItem* )item )->Partnumber() == -1 ) |
219 | setText(); | 245 | { |
220 | } else { | 246 | setText(); |
221 | if ( m_recMail.Wrapper() != 0l ) { // make sure that there is a wrapper , even after delete or simular actions | 247 | } |
248 | else | ||
249 | { | ||
250 | if ( m_recMail.Wrapper() != 0l ) | ||
251 | { // make sure that there is a wrapper , even after delete or simular actions | ||
222 | browser->setText( m_recMail.Wrapper()->fetchTextPart( m_recMail, m_body.Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); | 252 | browser->setText( m_recMail.Wrapper()->fetchTextPart( m_recMail, m_body.Parts()[ ( ( AttachItem* )item )->Partnumber() ] ) ); |
223 | } | 253 | } |
224 | } | 254 | } |
225 | break; | 255 | break; |
226 | } | 256 | } |
227 | delete menu; | 257 | delete menu; |
228 | } | 258 | } |
229 | 259 | ||
230 | 260 | ||
231 | void ViewMail::setMail( RecMail mail ) { | 261 | void ViewMail::setMail( RecMail mail ) |
262 | { | ||
232 | 263 | ||
233 | m_recMail = mail; | 264 | m_recMail = mail; |
234 | 265 | ||
235 | m_mail[0] = mail.getFrom(); | 266 | m_mail[0] = mail.getFrom(); |
236 | m_mail[1] = mail.getSubject(); | 267 | m_mail[1] = mail.getSubject(); |
237 | m_mail[3] = mail.getDate(); | 268 | m_mail[3] = mail.getDate(); |
238 | m_mail[4] = mail.Msgid(); | 269 | m_mail[4] = mail.Msgid(); |
239 | 270 | ||
240 | m_mail2[0] = mail.To(); | 271 | m_mail2[0] = mail.To(); |
241 | m_mail2[1] = mail.CC(); | 272 | m_mail2[1] = mail.CC(); |
242 | m_mail2[2] = mail.Bcc(); | 273 | m_mail2[2] = mail.Bcc(); |
243 | 274 | ||
244 | setText(); | 275 | setText(); |
245 | } | 276 | } |
246 | 277 | ||
247 | 278 | ||
248 | 279 | ||
249 | ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) | 280 | ViewMail::ViewMail( QWidget *parent, const char *name, WFlags fl) |
250 | : ViewMailBase(parent, name, fl), _inLoop(false) | 281 | : ViewMailBase(parent, name, fl), _inLoop(false) |
251 | { | 282 | { |
252 | m_gotBody = false; | 283 | m_gotBody = false; |
253 | deleted = false; | 284 | deleted = false; |
254 | 285 | ||
255 | connect( reply, SIGNAL(activated()), SLOT(slotReply())); | 286 | connect( reply, SIGNAL(activated()), SLOT(slotReply())); |
256 | connect( forward, SIGNAL(activated()), SLOT(slotForward())); | 287 | connect( forward, SIGNAL(activated()), SLOT(slotForward())); |
257 | connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail( ) ) ); | 288 | connect( deleteMail, SIGNAL( activated() ), SLOT( slotDeleteMail( ) ) ); |
258 | connect( showHtml, SIGNAL( toggled( bool ) ), SLOT( slotShowHtml( bool ) ) ); | 289 | connect( showHtml, SIGNAL( toggled( bool ) ), SLOT( slotShowHtml( bool ) ) ); |
259 | 290 | ||
260 | attachments->setEnabled(m_gotBody); | 291 | attachments->setEnabled(m_gotBody); |
261 | connect( attachments, SIGNAL( clicked ( QListViewItem *, const QPoint & , int ) ), SLOT( slotItemClicked( QListViewItem *, const QPoint & , int ) ) ); | 292 | connect( attachments, SIGNAL( clicked ( QListViewItem *, const QPoint & , int ) ), SLOT( slotItemClicked( QListViewItem *, const QPoint & , int ) ) ); |
262 | 293 | ||
263 | readConfig(); | 294 | readConfig(); |
264 | attachments->setSorting(-1); | 295 | attachments->setSorting(-1); |
265 | } | 296 | } |
266 | 297 | ||
267 | void ViewMail::readConfig() { | 298 | void ViewMail::readConfig() |
299 | { | ||
268 | Config cfg( "mail" ); | 300 | Config cfg( "mail" ); |
269 | cfg.setGroup( "Settings" ); | 301 | cfg.setGroup( "Settings" ); |
270 | m_showHtml = cfg.readBoolEntry( "showHtml", false ); | 302 | m_showHtml = cfg.readBoolEntry( "showHtml", false ); |
271 | showHtml->setOn( m_showHtml ); | 303 | showHtml->setOn( m_showHtml ); |
272 | } | 304 | } |
273 | 305 | ||
274 | void ViewMail::setText() | 306 | void ViewMail::setText() |
275 | { | 307 | { |
276 | 308 | ||
277 | QString toString; | 309 | QString toString; |
278 | QString ccString; | 310 | QString ccString; |
279 | QString bccString; | 311 | QString bccString; |
280 | 312 | ||
281 | for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) { | 313 | for ( QStringList::Iterator it = ( m_mail2[0] ).begin(); it != ( m_mail2[0] ).end(); ++it ) |
314 | { | ||
282 | toString += (*it); | 315 | toString += (*it); |
283 | } | 316 | } |
284 | for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) { | 317 | for ( QStringList::Iterator it = ( m_mail2[1] ).begin(); it != ( m_mail2[1] ).end(); ++it ) |
318 | { | ||
285 | ccString += (*it); | 319 | ccString += (*it); |
286 | } | 320 | } |
287 | for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) { | 321 | for ( QStringList::Iterator it = ( m_mail2[2] ).begin(); it != ( m_mail2[2] ).end(); ++it ) |
322 | { | ||
288 | bccString += (*it); | 323 | bccString += (*it); |
289 | } | 324 | } |
290 | 325 | ||
291 | setCaption( caption().arg( m_mail[0] ) ); | 326 | setCaption( caption().arg( m_mail[0] ) ); |
292 | 327 | ||
293 | m_mailHtml = "<html><body>" | 328 | m_mailHtml = "<html><body>" |
294 | "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" | 329 | "<table width=\"100%\" border=\"0\"><tr bgcolor=\"#FFDD76\"><td>" |
295 | "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" | 330 | "<div align=left><b>" + deHtml( m_mail[1] ) + "</b></div>" |
296 | "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" | 331 | "</td></tr><tr bgcolor=\"#EEEEE6\"><td>" |
297 | "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" | 332 | "<b>" + tr( "From" ) + ": </b><font color=#6C86C0>" + deHtml( m_mail[0] ) + "</font><br>" |
298 | "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + | 333 | "<b>" + tr( "To" ) + ": </b><font color=#6C86C0>" + deHtml( toString ) + "</font><br><b>" + |
299 | tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" | 334 | tr( "Cc" ) + ": </b>" + deHtml( ccString ) + "<br>" |
300 | "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + | 335 | "<b>" + tr( "Date" ) + ": </b> " + m_mail[3] + |
301 | "</td></tr></table><font face=fixed>"; | 336 | "</td></tr></table><font face=fixed>"; |
302 | 337 | ||
303 | if ( !m_showHtml ) { | 338 | if ( !m_showHtml ) |
304 | browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); | 339 | { |
305 | } else { | 340 | browser->setText( QString( m_mailHtml) + deHtml( m_mail[2] ) + "</font></html>" ); |
306 | browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); | 341 | } |
342 | else | ||
343 | { | ||
344 | browser->setText( QString( m_mailHtml) + m_mail[2] + "</font></html>" ); | ||
307 | } | 345 | } |
308 | // remove later in favor of a real handling | 346 | // remove later in favor of a real handling |
309 | m_gotBody = true; | 347 | m_gotBody = true; |
310 | } | 348 | } |
311 | 349 | ||
312 | 350 | ||
313 | ViewMail::~ViewMail() | 351 | ViewMail::~ViewMail() |
314 | { | 352 | { |
315 | m_recMail.Wrapper()->cleanMimeCache(); | 353 | m_recMail.Wrapper()->cleanMimeCache(); |
316 | hide(); | 354 | hide(); |
317 | } | 355 | } |
318 | 356 | ||
319 | void ViewMail::hide() | 357 | void ViewMail::hide() |
320 | { | 358 | { |
321 | QWidget::hide(); | 359 | QWidget::hide(); |
322 | 360 | ||
323 | if (_inLoop) { | 361 | if (_inLoop) |
324 | _inLoop = false; | 362 | { |
325 | qApp->exit_loop(); | 363 | _inLoop = false; |
364 | qApp->exit_loop(); | ||
326 | 365 | ||
327 | } | 366 | } |
328 | 367 | ||
329 | } | 368 | } |
330 | 369 | ||
331 | void ViewMail::exec() | 370 | void ViewMail::exec() |
332 | { | 371 | { |
333 | show(); | 372 | show(); |
334 | 373 | ||
335 | if (!_inLoop) { | 374 | if (!_inLoop) |
336 | _inLoop = true; | 375 | { |
337 | qApp->enter_loop(); | 376 | _inLoop = true; |
338 | } | 377 | qApp->enter_loop(); |
378 | } | ||
339 | 379 | ||
340 | } | 380 | } |
341 | 381 | ||
342 | QString ViewMail::deHtml(const QString &string) | 382 | QString ViewMail::deHtml(const QString &string) |
343 | { | 383 | { |
344 | QString string_ = string; | 384 | QString string_ = string; |
345 | string_.replace(QRegExp("&"), "&"); | 385 | string_.replace(QRegExp("&"), "&"); |
346 | string_.replace(QRegExp("<"), "<"); | 386 | string_.replace(QRegExp("<"), "<"); |
347 | string_.replace(QRegExp(">"), ">"); | 387 | string_.replace(QRegExp(">"), ">"); |
348 | string_.replace(QRegExp("\\n"), "<br>"); | 388 | string_.replace(QRegExp("\\n"), "<br>"); |
349 | return string_; | 389 | return string_; |
350 | } | 390 | } |
351 | 391 | ||
352 | void ViewMail::slotReply() | 392 | void ViewMail::slotReply() |
353 | { | 393 | { |
354 | if (!m_gotBody) { | 394 | if (!m_gotBody) |
355 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); | 395 | { |
356 | return; | 396 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot reply yet."), tr("Ok")); |
357 | } | 397 | return; |
358 | 398 | } | |
359 | QString rtext; | 399 | |
360 | rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose | 400 | QString rtext; |
361 | .arg( m_mail[0] ) | 401 | rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose |
362 | .arg( m_mail[3] ); | 402 | .arg( m_mail[0] ) |
363 | 403 | .arg( m_mail[3] ); | |
364 | QString text = m_mail[2]; | 404 | |
365 | QStringList lines = QStringList::split(QRegExp("\\n"), text); | 405 | QString text = m_mail[2]; |
366 | QStringList::Iterator it; | 406 | QStringList lines = QStringList::split(QRegExp("\\n"), text); |
367 | for (it = lines.begin(); it != lines.end(); it++) { | 407 | QStringList::Iterator it; |
368 | rtext += "> " + *it + "\n"; | 408 | for (it = lines.begin(); it != lines.end(); it++) |
369 | } | 409 | { |
370 | rtext += "\n"; | 410 | rtext += "> " + *it + "\n"; |
371 | 411 | } | |
372 | QString prefix; | 412 | rtext += "\n"; |
373 | if ( m_mail[1].find(QRegExp("^Re: *$")) != -1) prefix = ""; | 413 | |
374 | else prefix = "Re: "; // no i18n on purpose | 414 | QString prefix; |
375 | 415 | if ( m_mail[1].find(QRegExp("^Re: *$")) != -1) prefix = ""; | |
376 | Settings *settings = new Settings(); | 416 | else prefix = "Re: "; // no i18n on purpose |
377 | ComposeMail composer( settings ,this, 0, true); | 417 | |
378 | composer.setTo( m_mail[0] ); | 418 | Settings *settings = new Settings(); |
379 | composer.setSubject( "Re: " + m_mail[1] ); | 419 | ComposeMail composer( settings ,this, 0, true); |
380 | composer.setMessage( rtext ); | 420 | composer.setTo( m_mail[0] ); |
381 | composer.showMaximized(); | 421 | composer.setSubject( "Re: " + m_mail[1] ); |
382 | if ( QDialog::Accepted==composer.exec()) { | 422 | composer.setMessage( rtext ); |
423 | if ( QDialog::Accepted == QPEApplication::execDialog( &composer ) ) | ||
424 | { | ||
383 | m_recMail.Wrapper()->answeredMail(m_recMail); | 425 | m_recMail.Wrapper()->answeredMail(m_recMail); |
384 | } | 426 | } |
385 | } | 427 | } |
386 | 428 | ||
387 | void ViewMail::slotForward() | 429 | void ViewMail::slotForward() |
388 | { | 430 | { |
389 | if (!m_gotBody) { | 431 | if (!m_gotBody) |
390 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok")); | 432 | { |
391 | return; | 433 | QMessageBox::information(this, tr("Error"), tr("<p>The mail body is not yet downloaded, so you cannot forward yet."), tr("Ok")); |
392 | } | 434 | return; |
393 | 435 | } | |
394 | QString ftext; | ||
395 | ftext += QString("\n----- Forwarded message from %1 -----\n\n") | ||
396 | .arg( m_mail[0] ); | ||
397 | if (!m_mail[3].isNull()) | ||
398 | ftext += QString("Date: %1\n") | ||
399 | .arg( m_mail[3] ); | ||
400 | if (!m_mail[0].isNull()) | ||
401 | ftext += QString("From: %1\n") | ||
402 | .arg( m_mail[0] ); | ||
403 | if (!m_mail[1].isNull()) | ||
404 | ftext += QString("Subject: %1\n") | ||
405 | .arg( m_mail[1] ); | ||
406 | |||
407 | ftext += QString("\n%1\n") | ||
408 | .arg( m_mail[2]); | ||
409 | |||
410 | ftext += QString("----- End forwarded message -----\n"); | ||
411 | |||
412 | Settings *settings = new Settings(); | ||
413 | ComposeMail composer( settings ,this, 0, true); | ||
414 | composer.setSubject( "Fwd: " + m_mail[1] ); | ||
415 | composer.setMessage( ftext ); | ||
416 | composer.showMaximized(); | ||
417 | if ( QDialog::Accepted==composer.exec()) { | ||
418 | 436 | ||
437 | QString ftext; | ||
438 | ftext += QString("\n----- Forwarded message from %1 -----\n\n") | ||
439 | .arg( m_mail[0] ); | ||
440 | if (!m_mail[3].isNull()) | ||
441 | ftext += QString("Date: %1\n") | ||
442 | .arg( m_mail[3] ); | ||
443 | if (!m_mail[0].isNull()) | ||
444 | ftext += QString("From: %1\n") | ||
445 | .arg( m_mail[0] ); | ||
446 | if (!m_mail[1].isNull()) | ||
447 | ftext += QString("Subject: %1\n") | ||
448 | .arg( m_mail[1] ); | ||
449 | |||
450 | ftext += QString("\n%1\n") | ||
451 | .arg( m_mail[2]); | ||
452 | |||
453 | ftext += QString("----- End forwarded message -----\n"); | ||
454 | |||
455 | Settings *settings = new Settings(); | ||
456 | ComposeMail composer( settings ,this, 0, true); | ||
457 | composer.setSubject( "Fwd: " + m_mail[1] ); | ||
458 | composer.setMessage( ftext ); | ||
459 | if ( QDialog::Accepted == QPEApplication::execDialog( &composer )) | ||
460 | { | ||
419 | } | 461 | } |
420 | } | 462 | } |
421 | 463 | ||
422 | void ViewMail::slotDeleteMail( ) | 464 | void ViewMail::slotDeleteMail( ) |
423 | { | 465 | { |
424 | if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) { | 466 | if ( QMessageBox::warning(this, tr("Delete Mail"), QString( tr("<p>Do you really want to delete this mail? <br><br>" ) + m_mail[0] + " - " + m_mail[1] ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) |
467 | { | ||
425 | m_recMail.Wrapper()->deleteMail( m_recMail ); | 468 | m_recMail.Wrapper()->deleteMail( m_recMail ); |
426 | hide(); | 469 | hide(); |
427 | deleted = true; | 470 | deleted = true; |
428 | } | 471 | } |
429 | } | 472 | } |
diff --git a/noncore/net/opieirc/ircservereditor.cpp b/noncore/net/opieirc/ircservereditor.cpp index 60274d1..2d11bf0 100644 --- a/noncore/net/opieirc/ircservereditor.cpp +++ b/noncore/net/opieirc/ircservereditor.cpp | |||
@@ -1,86 +1,92 @@ | |||
1 | #include "ircservereditor.h" | ||
2 | |||
3 | /* OPIE */ | ||
4 | #include <qpe/qpeapplication.h> | ||
5 | |||
6 | /* QT */ | ||
1 | #include <qmessagebox.h> | 7 | #include <qmessagebox.h> |
2 | #include <qlayout.h> | 8 | #include <qlayout.h> |
3 | #include <qlabel.h> | 9 | #include <qlabel.h> |
4 | #include <qwhatsthis.h> | 10 | #include <qwhatsthis.h> |
5 | #include "ircservereditor.h" | ||
6 | 11 | ||
7 | IRCServerEditor::IRCServerEditor(IRCServer server, QWidget* parent, const char* name, bool modal, WFlags) : QDialog(parent, name, modal, WStyle_ContextHelp) { | 12 | IRCServerEditor::IRCServerEditor(IRCServer server, QWidget* parent, const char* name, bool modal, WFlags) : QDialog(parent, name, modal, WStyle_ContextHelp) { |
8 | QGridLayout *layout = new QGridLayout(this, 7, 2, 5, 5); | 13 | QGridLayout *layout = new QGridLayout(this, 7, 2, 5, 5); |
9 | QLabel *label = new QLabel(tr("Profile name :"), this); | 14 | QLabel *label = new QLabel(tr("Profile name :"), this); |
10 | m_name = new QLineEdit(server.name(), this); | 15 | m_name = new QLineEdit(server.name(), this); |
11 | QWhatsThis::add(m_name, tr("The name of this server profile in the overview")); | 16 | QWhatsThis::add(m_name, tr("The name of this server profile in the overview")); |
12 | layout->addWidget(label, 0, 0); | 17 | layout->addWidget(label, 0, 0); |
13 | layout->addWidget(m_name, 0, 1); | 18 | layout->addWidget(m_name, 0, 1); |
14 | label = new QLabel(tr("Hostname :"), this); | 19 | label = new QLabel(tr("Hostname :"), this); |
15 | m_hostname = new QLineEdit(server.hostname(), this); | 20 | m_hostname = new QLineEdit(server.hostname(), this); |
16 | QWhatsThis::add(m_hostname, tr("The server to connect to - can be any valid host name or IP address")); | 21 | QWhatsThis::add(m_hostname, tr("The server to connect to - can be any valid host name or IP address")); |
17 | layout->addWidget(label, 1, 0); | 22 | layout->addWidget(label, 1, 0); |
18 | layout->addWidget(m_hostname, 1, 1); | 23 | layout->addWidget(m_hostname, 1, 1); |
19 | label = new QLabel(tr("Port :"), this); | 24 | label = new QLabel(tr("Port :"), this); |
20 | m_port = new QLineEdit(QString::number(server.port()), this); | 25 | m_port = new QLineEdit(QString::number(server.port()), this); |
21 | QWhatsThis::add(m_port, tr("The server port to connect to. Usually 6667")); | 26 | QWhatsThis::add(m_port, tr("The server port to connect to. Usually 6667")); |
22 | layout->addWidget(label, 2, 0); | 27 | layout->addWidget(label, 2, 0); |
23 | layout->addWidget(m_port, 2, 1); | 28 | layout->addWidget(m_port, 2, 1); |
24 | label = new QLabel(tr("Nickname :"), this); | 29 | label = new QLabel(tr("Nickname :"), this); |
25 | m_nickname = new QLineEdit(server.nick(), this); | 30 | m_nickname = new QLineEdit(server.nick(), this); |
26 | QWhatsThis::add(m_nickname, tr("Your nick name on the IRC network")); | 31 | QWhatsThis::add(m_nickname, tr("Your nick name on the IRC network")); |
27 | layout->addWidget(label, 3, 0); | 32 | layout->addWidget(label, 3, 0); |
28 | layout->addWidget(m_nickname, 3, 1); | 33 | layout->addWidget(m_nickname, 3, 1); |
29 | label = new QLabel(tr("Realname :"), this); | 34 | label = new QLabel(tr("Realname :"), this); |
30 | m_realname = new QLineEdit(server.realname(), this); | 35 | m_realname = new QLineEdit(server.realname(), this); |
31 | QWhatsThis::add(m_realname, tr("Your real name")); | 36 | QWhatsThis::add(m_realname, tr("Your real name")); |
32 | layout->addWidget(label, 4, 0); | 37 | layout->addWidget(label, 4, 0); |
33 | layout->addWidget(m_realname, 4, 1); | 38 | layout->addWidget(m_realname, 4, 1); |
34 | label = new QLabel(tr("Password :"), this); | 39 | label = new QLabel(tr("Password :"), this); |
35 | m_password = new QLineEdit(server.password(), this); | 40 | m_password = new QLineEdit(server.password(), this); |
36 | m_password->setEchoMode( QLineEdit::Password ); | 41 | m_password->setEchoMode( QLineEdit::Password ); |
37 | QWhatsThis::add(m_password, tr("Password to connect to the server (if required)")); | 42 | QWhatsThis::add(m_password, tr("Password to connect to the server (if required)")); |
38 | layout->addWidget(label, 5, 0); | 43 | layout->addWidget(label, 5, 0); |
39 | layout->addWidget(m_password, 5, 1); | 44 | layout->addWidget(m_password, 5, 1); |
40 | label = new QLabel(tr("Channels :"), this); | 45 | label = new QLabel(tr("Channels :"), this); |
41 | m_channels = new QLineEdit(server.channels(), this); | 46 | m_channels = new QLineEdit(server.channels(), this); |
42 | QWhatsThis::add(m_channels, tr("Comma-Separated list of all channels you would like to join automatically")); | 47 | QWhatsThis::add(m_channels, tr("Comma-Separated list of all channels you would like to join automatically")); |
43 | layout->addWidget(label, 6, 0); | 48 | layout->addWidget(label, 6, 0); |
44 | layout->addWidget(m_channels, 6, 1); | 49 | layout->addWidget(m_channels, 6, 1); |
45 | setCaption(tr("Edit server information")); | 50 | setCaption(tr("Edit server information")); |
46 | showMaximized(); | 51 | |
52 | QPEApplication::showDialog( this ); | ||
47 | } | 53 | } |
48 | 54 | ||
49 | 55 | ||
50 | void IRCServerEditor::accept() { | 56 | void IRCServerEditor::accept() { |
51 | if (m_name->text().length()==0) | 57 | if (m_name->text().length()==0) |
52 | QMessageBox::critical(this, tr("Error"), tr("Profile name required")); | 58 | QMessageBox::critical(this, tr("Error"), tr("Profile name required")); |
53 | else if (m_hostname->text().length()==0) | 59 | else if (m_hostname->text().length()==0) |
54 | QMessageBox::critical(this, tr("Error"), tr("Host name required")); | 60 | QMessageBox::critical(this, tr("Error"), tr("Host name required")); |
55 | else if (m_port->text().toInt()<=0) | 61 | else if (m_port->text().toInt()<=0) |
56 | QMessageBox::critical(this, tr("Error"), tr("Port required")); | 62 | QMessageBox::critical(this, tr("Error"), tr("Port required")); |
57 | else if (m_nickname->text().length()==0) | 63 | else if (m_nickname->text().length()==0) |
58 | QMessageBox::critical(this, tr("Error"), tr("Nickname required")); | 64 | QMessageBox::critical(this, tr("Error"), tr("Nickname required")); |
59 | else if (m_realname->text().length()==0) | 65 | else if (m_realname->text().length()==0) |
60 | QMessageBox::critical(this, tr("Error"), tr("Realname required")); | 66 | QMessageBox::critical(this, tr("Error"), tr("Realname required")); |
61 | else { | 67 | else { |
62 | /* Now verify whether the channel list has a valid format */ | 68 | /* Now verify whether the channel list has a valid format */ |
63 | QStringList channels = QStringList::split(QChar(','), m_channels->text()); | 69 | QStringList channels = QStringList::split(QChar(','), m_channels->text()); |
64 | for (QStringList::Iterator it = channels.begin(); it != channels.end(); ++it) { | 70 | for (QStringList::Iterator it = channels.begin(); it != channels.end(); ++it) { |
65 | QString channelName = (*it).stripWhiteSpace(); | 71 | QString channelName = (*it).stripWhiteSpace(); |
66 | if (!channelName.startsWith("#") && !channelName.startsWith("+")) { | 72 | if (!channelName.startsWith("#") && !channelName.startsWith("+")) { |
67 | QMessageBox::critical(this, tr("Error"), tr("The channel list needs to contain a\ncomma separated list of channel\n names which start with either '#' or '+'")); | 73 | QMessageBox::critical(this, tr("Error"), tr("The channel list needs to contain a\ncomma separated list of channel\n names which start with either '#' or '+'")); |
68 | return; | 74 | return; |
69 | } | 75 | } |
70 | } | 76 | } |
71 | QDialog::accept(); | 77 | QDialog::accept(); |
72 | } | 78 | } |
73 | } | 79 | } |
74 | 80 | ||
75 | IRCServer IRCServerEditor::getServer() { | 81 | IRCServer IRCServerEditor::getServer() { |
76 | IRCServer server; | 82 | IRCServer server; |
77 | server.setName(m_name->text()); | 83 | server.setName(m_name->text()); |
78 | server.setHostname(m_hostname->text()); | 84 | server.setHostname(m_hostname->text()); |
79 | server.setPort(m_port->text().toInt()); | 85 | server.setPort(m_port->text().toInt()); |
80 | server.setNick(m_nickname->text()); | 86 | server.setNick(m_nickname->text()); |
81 | server.setRealname(m_realname->text()); | 87 | server.setRealname(m_realname->text()); |
82 | server.setUsername(m_nickname->text()); | 88 | server.setUsername(m_nickname->text()); |
83 | server.setPassword(m_password->text()); | 89 | server.setPassword(m_password->text()); |
84 | server.setChannels(m_channels->text()); | 90 | server.setChannels(m_channels->text()); |
85 | return server; | 91 | return server; |
86 | } | 92 | } |
diff --git a/noncore/net/opieirc/ircserverlist.cpp b/noncore/net/opieirc/ircserverlist.cpp index 595ae3e..62bfc17 100644 --- a/noncore/net/opieirc/ircserverlist.cpp +++ b/noncore/net/opieirc/ircserverlist.cpp | |||
@@ -1,135 +1,161 @@ | |||
1 | |||
2 | #include "ircserverlist.h" | ||
3 | #include "ircservereditor.h" | ||
4 | |||
5 | /* OPIE */ | ||
6 | #include <qpe/qpeapplication.h> | ||
7 | |||
8 | /* QT */ | ||
1 | #include <qlayout.h> | 9 | #include <qlayout.h> |
2 | #include <qlabel.h> | 10 | #include <qlabel.h> |
3 | #include <qhbox.h> | 11 | #include <qhbox.h> |
4 | #include <qpushbutton.h> | 12 | #include <qpushbutton.h> |
5 | #include <qwhatsthis.h> | 13 | #include <qwhatsthis.h> |
6 | #include "ircserverlist.h" | ||
7 | #include "ircservereditor.h" | ||
8 | 14 | ||
9 | class IRCListBoxServer : public QListBoxText { | 15 | class IRCListBoxServer : public QListBoxText |
16 | { | ||
10 | public: | 17 | public: |
11 | IRCListBoxServer(IRCServer server) : QListBoxText(server.name()) { | 18 | IRCListBoxServer(IRCServer server) : QListBoxText(server.name()) |
19 | { | ||
12 | m_server = server; | 20 | m_server = server; |
13 | } | 21 | } |
14 | 22 | ||
15 | IRCServer server() { | 23 | IRCServer server() |
24 | { | ||
16 | return m_server; | 25 | return m_server; |
17 | } | 26 | } |
18 | 27 | ||
19 | void setServer(IRCServer server) { | 28 | void setServer(IRCServer server) |
29 | { | ||
20 | m_server = server; | 30 | m_server = server; |
21 | setText(m_server.name()); | 31 | setText(m_server.name()); |
22 | } | 32 | } |
23 | protected: | 33 | protected: |
24 | IRCServer m_server; | 34 | IRCServer m_server; |
25 | }; | 35 | }; |
26 | 36 | ||
27 | IRCServerList::IRCServerList(QWidget* parent, const char *name, bool modal, WFlags) : QDialog(parent, name, modal, WStyle_ContextHelp) { | 37 | IRCServerList::IRCServerList(QWidget* parent, const char *name, bool modal, WFlags) : QDialog(parent, name, modal, WStyle_ContextHelp) |
38 | { | ||
28 | QVBoxLayout *layout = new QVBoxLayout(this, 5, 5); | 39 | QVBoxLayout *layout = new QVBoxLayout(this, 5, 5); |
29 | setCaption(tr("Serverlist Browser")); | 40 | setCaption(tr("Serverlist Browser")); |
30 | QLabel *label = new QLabel(tr("Please choose a server profile"), this); | 41 | QLabel *label = new QLabel(tr("Please choose a server profile"), this); |
31 | label->setAlignment(AlignHCenter); | 42 | label->setAlignment(AlignHCenter); |
32 | layout->addWidget(label); | 43 | layout->addWidget(label); |
33 | m_list = new QListBox(this); | 44 | m_list = new QListBox(this); |
34 | QWhatsThis::add(m_list, tr("Select a server profile from this list and then tap on OK in the upper-right corner")); | 45 | QWhatsThis::add(m_list, tr("Select a server profile from this list and then tap on OK in the upper-right corner")); |
35 | layout->addWidget(m_list); | 46 | layout->addWidget(m_list); |
36 | QHBox *buttons = new QHBox(this); | 47 | QHBox *buttons = new QHBox(this); |
37 | QPushButton *del = new QPushButton(tr("Delete"), buttons); | 48 | QPushButton *del = new QPushButton(tr("Delete"), buttons); |
38 | QPushButton *edit = new QPushButton(tr("Edit"), buttons); | 49 | QPushButton *edit = new QPushButton(tr("Edit"), buttons); |
39 | QPushButton *add = new QPushButton(tr("Add"), buttons); | 50 | QPushButton *add = new QPushButton(tr("Add"), buttons); |
40 | QWhatsThis::add(del, tr("Delete the currently selected server profile")); | 51 | QWhatsThis::add(del, tr("Delete the currently selected server profile")); |
41 | QWhatsThis::add(edit, tr("Edit the currently selected server profile")); | 52 | QWhatsThis::add(edit, tr("Edit the currently selected server profile")); |
42 | QWhatsThis::add(add, tr("Add a new server profile")); | 53 | QWhatsThis::add(add, tr("Add a new server profile")); |
43 | connect(del, SIGNAL(clicked()), this, SLOT(delServer())); | 54 | connect(del, SIGNAL(clicked()), this, SLOT(delServer())); |
44 | connect(edit, SIGNAL(clicked()), this, SLOT(editServer())); | 55 | connect(edit, SIGNAL(clicked()), this, SLOT(editServer())); |
45 | connect(add, SIGNAL(clicked()), this, SLOT(addServer())); | 56 | connect(add, SIGNAL(clicked()), this, SLOT(addServer())); |
46 | layout->addWidget(buttons); | 57 | layout->addWidget(buttons); |
47 | /* Load the configuration file */ | 58 | /* Load the configuration file */ |
48 | m_config = new Config("OpieIRC"); | 59 | m_config = new Config("OpieIRC"); |
49 | m_config->setGroup("OpieIRC"); | 60 | m_config->setGroup("OpieIRC"); |
50 | int count = m_config->readNumEntry("ServerCount", 0); | 61 | int count = m_config->readNumEntry("ServerCount", 0); |
51 | if (count) { | 62 | if (count) |
52 | for (int i=0; i<count; i++) { | 63 | { |
64 | for (int i=0; i<count; i++) | ||
65 | { | ||
53 | m_config->setGroup("OpieIRC"); | 66 | m_config->setGroup("OpieIRC"); |
54 | QString name = m_config->readEntry("Server"+QString::number(i)); | 67 | QString name = m_config->readEntry("Server"+QString::number(i)); |
55 | if (name.length() > 0) { | 68 | if (name.length() > 0) |
69 | { | ||
56 | IRCServer server; | 70 | IRCServer server; |
57 | m_config->setGroup(name); | 71 | m_config->setGroup(name); |
58 | server.setName(name); | 72 | server.setName(name); |
59 | server.setHostname(m_config->readEntry("Hostname")); | 73 | server.setHostname(m_config->readEntry("Hostname")); |
60 | server.setPort(m_config->readNumEntry("Port")); | 74 | server.setPort(m_config->readNumEntry("Port")); |
61 | server.setUsername(m_config->readEntry("Username")); | 75 | server.setUsername(m_config->readEntry("Username")); |
62 | server.setPassword(m_config->readEntry("Password")); | 76 | server.setPassword(m_config->readEntry("Password")); |
63 | server.setNick(m_config->readEntry("Nick")); | 77 | server.setNick(m_config->readEntry("Nick")); |
64 | server.setRealname(m_config->readEntry("Realname")); | 78 | server.setRealname(m_config->readEntry("Realname")); |
65 | server.setChannels(m_config->readEntry("Channels")); | 79 | server.setChannels(m_config->readEntry("Channels")); |
66 | m_list->insertItem(new IRCListBoxServer(server)); | 80 | m_list->insertItem(new IRCListBoxServer(server)); |
67 | } | 81 | } |
68 | } | 82 | } |
69 | } | 83 | } |
70 | 84 | ||
71 | showMaximized(); | 85 | QPEApplication::showDialog( this ); |
72 | } | 86 | } |
73 | 87 | ||
74 | void IRCServerList::addServer() { | 88 | void IRCServerList::addServer() |
89 | { | ||
75 | IRCServer server; | 90 | IRCServer server; |
76 | IRCServerEditor editor(server, this, "ServerEditor", TRUE); | 91 | IRCServerEditor editor(server, this, "ServerEditor", TRUE); |
77 | if (editor.exec() == QDialog::Accepted) { | 92 | if (editor.exec() == QDialog::Accepted) |
93 | { | ||
78 | server = editor.getServer(); | 94 | server = editor.getServer(); |
79 | /* Gets deleted by QListBox, so this is ok */ | 95 | /* Gets deleted by QListBox, so this is ok */ |
80 | m_list->insertItem(new IRCListBoxServer(server)); | 96 | m_list->insertItem(new IRCListBoxServer(server)); |
81 | } | 97 | } |
82 | } | 98 | } |
83 | 99 | ||
84 | void IRCServerList::delServer() { | 100 | void IRCServerList::delServer() |
101 | { | ||
85 | int index = m_list->currentItem(); | 102 | int index = m_list->currentItem(); |
86 | if (index != -1) { | 103 | if (index != -1) |
104 | { | ||
87 | m_list->removeItem(index); | 105 | m_list->removeItem(index); |
88 | } | 106 | } |
89 | } | 107 | } |
90 | 108 | ||
91 | void IRCServerList::editServer() { | 109 | void IRCServerList::editServer() |
110 | { | ||
92 | int index = m_list->currentItem(); | 111 | int index = m_list->currentItem(); |
93 | if (index != -1) { | 112 | if (index != -1) |
113 | { | ||
94 | IRCListBoxServer *item = (IRCListBoxServer *)m_list->item(index); | 114 | IRCListBoxServer *item = (IRCListBoxServer *)m_list->item(index); |
95 | IRCServer server = item->server(); | 115 | IRCServer server = item->server(); |
96 | IRCServerEditor editor(server, this, "ServerEditor", TRUE); | 116 | IRCServerEditor editor(server, this, "ServerEditor", TRUE); |
97 | if (editor.exec() == QDialog::Accepted) { | 117 | if (editor.exec() == QDialog::Accepted) |
118 | { | ||
98 | server = editor.getServer(); | 119 | server = editor.getServer(); |
99 | item->setServer(server); | 120 | item->setServer(server); |
100 | } | 121 | } |
101 | } | 122 | } |
102 | } | 123 | } |
103 | 124 | ||
104 | int IRCServerList::exec() { | 125 | int IRCServerList::exec() |
126 | { | ||
105 | int returncode = QDialog::exec(); | 127 | int returncode = QDialog::exec(); |
106 | /* Now save the changes */ | 128 | /* Now save the changes */ |
107 | m_config->setGroup("OpieIRC"); | 129 | m_config->setGroup("OpieIRC"); |
108 | m_config->writeEntry("ServerCount", QString::number(m_list->count())); | 130 | m_config->writeEntry("ServerCount", QString::number(m_list->count())); |
109 | for (unsigned int i=0; i<m_list->count(); i++) { | 131 | for (unsigned int i=0; i<m_list->count(); i++) |
132 | { | ||
110 | IRCServer server = ((IRCListBoxServer *)m_list->item(i))->server(); | 133 | IRCServer server = ((IRCListBoxServer *)m_list->item(i))->server(); |
111 | m_config->setGroup("OpieIRC"); | 134 | m_config->setGroup("OpieIRC"); |
112 | m_config->writeEntry("Server"+QString::number(i), server.name()); | 135 | m_config->writeEntry("Server"+QString::number(i), server.name()); |
113 | m_config->setGroup(server.name()); | 136 | m_config->setGroup(server.name()); |
114 | m_config->writeEntry("Hostname", server.hostname()); | 137 | m_config->writeEntry("Hostname", server.hostname()); |
115 | m_config->writeEntry("Port", QString::number(server.port())); | 138 | m_config->writeEntry("Port", QString::number(server.port())); |
116 | m_config->writeEntry("Username", server.username()); | 139 | m_config->writeEntry("Username", server.username()); |
117 | m_config->writeEntry("Password", server.password()); | 140 | m_config->writeEntry("Password", server.password()); |
118 | m_config->writeEntry("Nick", server.nick()); | 141 | m_config->writeEntry("Nick", server.nick()); |
119 | m_config->writeEntry("Realname", server.realname()); | 142 | m_config->writeEntry("Realname", server.realname()); |
120 | m_config->writeEntry("Channels", server.channels()); | 143 | m_config->writeEntry("Channels", server.channels()); |
121 | } | 144 | } |
122 | return returncode; | 145 | return returncode; |
123 | } | 146 | } |
124 | 147 | ||
125 | bool IRCServerList::hasServer() { | 148 | bool IRCServerList::hasServer() |
149 | { | ||
126 | return (m_list->currentItem() != -1); | 150 | return (m_list->currentItem() != -1); |
127 | } | 151 | } |
128 | 152 | ||
129 | IRCServer IRCServerList::server() { | 153 | IRCServer IRCServerList::server() |
154 | { | ||
130 | return ((IRCListBoxServer *)m_list->item(m_list->currentItem()))->server(); | 155 | return ((IRCListBoxServer *)m_list->item(m_list->currentItem()))->server(); |
131 | } | 156 | } |
132 | 157 | ||
133 | IRCServerList::~IRCServerList() { | 158 | IRCServerList::~IRCServerList() |
159 | { | ||
134 | delete m_config; | 160 | delete m_config; |
135 | } | 161 | } |
diff --git a/noncore/net/opieirc/ircsettings.cpp b/noncore/net/opieirc/ircsettings.cpp index 2862296..f69d2c4 100644 --- a/noncore/net/opieirc/ircsettings.cpp +++ b/noncore/net/opieirc/ircsettings.cpp | |||
@@ -1,98 +1,108 @@ | |||
1 | |||
2 | #include "ircsettings.h" | ||
3 | #include "irctab.h" | ||
4 | |||
5 | /* OPIE */ | ||
1 | #include <opie/ocolorbutton.h> | 6 | #include <opie/ocolorbutton.h> |
2 | #include <opie/otabwidget.h> | 7 | #include <opie/otabwidget.h> |
8 | #include <qpe/qpeapplication.h> | ||
9 | |||
10 | /* QT */ | ||
3 | #include <qvalidator.h> | 11 | #include <qvalidator.h> |
4 | #include <qwhatsthis.h> | 12 | #include <qwhatsthis.h> |
5 | #include "ircsettings.h" | ||
6 | #include "irctab.h" | ||
7 | 13 | ||
8 | IRCSettings::IRCSettings(QWidget* parent, const char* name, bool modal, WFlags) : QDialog(parent, name, modal, WStyle_ContextHelp) { | 14 | IRCSettings::IRCSettings(QWidget* parent, const char* name, bool modal, WFlags) : QDialog(parent, name, modal, WStyle_ContextHelp) |
15 | { | ||
9 | setCaption(tr("Settings") ); | 16 | setCaption(tr("Settings") ); |
10 | m_config = new Config("OpieIRC"); | 17 | m_config = new Config("OpieIRC"); |
11 | m_config->setGroup("OpieIRC"); | 18 | m_config->setGroup("OpieIRC"); |
12 | QHBoxLayout *l = new QHBoxLayout(this, 2, 2); | 19 | QHBoxLayout *l = new QHBoxLayout(this, 2, 2); |
13 | OTabWidget *tw = new OTabWidget(this); | 20 | OTabWidget *tw = new OTabWidget(this); |
14 | l->addWidget(tw); | 21 | l->addWidget(tw); |
15 | /* General Configuration */ | 22 | /* General Configuration */ |
16 | QWidget *genwidget = new QWidget(tw); | 23 | QWidget *genwidget = new QWidget(tw); |
17 | QGridLayout *layout = new QGridLayout(genwidget, 1, 2, 5, 0); | 24 | QGridLayout *layout = new QGridLayout(genwidget, 1, 2, 5, 0); |
18 | QLabel *label = new QLabel(tr("Lines displayed :"), genwidget); | 25 | QLabel *label = new QLabel(tr("Lines displayed :"), genwidget); |
19 | layout->addWidget(label, 0, 0); | 26 | layout->addWidget(label, 0, 0); |
20 | m_lines = new QLineEdit(m_config->readEntry("Lines", "100"), genwidget); | 27 | m_lines = new QLineEdit(m_config->readEntry("Lines", "100"), genwidget); |
21 | QWhatsThis::add(m_lines, tr("Amount of lines to be displayed in chats before old lines get deleted - this is necessary to restrain memory consumption. Set to 0 if you don't need this")); | 28 | QWhatsThis::add(m_lines, tr("Amount of lines to be displayed in chats before old lines get deleted - this is necessary to restrain memory consumption. Set to 0 if you don't need this")); |
22 | QIntValidator *validator = new QIntValidator(this); | 29 | QIntValidator *validator = new QIntValidator(this); |
23 | validator->setTop(10000); | 30 | validator->setTop(10000); |
24 | validator->setBottom(0); | 31 | validator->setBottom(0); |
25 | m_lines->setValidator(validator); | 32 | m_lines->setValidator(validator); |
26 | layout->addWidget(m_lines, 0, 1); | 33 | layout->addWidget(m_lines, 0, 1); |
27 | tw->addTab(genwidget, "opieirc/settings", tr("General")); | 34 | tw->addTab(genwidget, "opieirc/settings", tr("General")); |
28 | 35 | ||
29 | /* Color configuration */ | 36 | /* Color configuration */ |
30 | QScrollView *view = new QScrollView(this); | 37 | QScrollView *view = new QScrollView(this); |
31 | view->setResizePolicy(QScrollView::AutoOneFit); | 38 | view->setResizePolicy(QScrollView::AutoOneFit); |
32 | view->setFrameStyle( QFrame::NoFrame ); | 39 | view->setFrameStyle( QFrame::NoFrame ); |
33 | QWidget *widget = new QWidget(view->viewport()); | 40 | QWidget *widget = new QWidget(view->viewport()); |
34 | view->addChild(widget); | 41 | view->addChild(widget); |
35 | layout = new QGridLayout(widget, 7, 2, 5, 0); | 42 | layout = new QGridLayout(widget, 7, 2, 5, 0); |
36 | label = new QLabel(tr("Background color :"), widget); | 43 | label = new QLabel(tr("Background color :"), widget); |
37 | layout->addWidget(label, 0, 0); | 44 | layout->addWidget(label, 0, 0); |
38 | m_background = new OColorButton(widget, m_config->readEntry("BackgroundColor", "#FFFFFF")); | 45 | m_background = new OColorButton(widget, m_config->readEntry("BackgroundColor", "#FFFFFF")); |
39 | QWhatsThis::add(m_background, tr("Background color to be used in chats")); | 46 | QWhatsThis::add(m_background, tr("Background color to be used in chats")); |
40 | layout->addWidget(m_background, 0, 1); | 47 | layout->addWidget(m_background, 0, 1); |
41 | label = new QLabel(tr("Normal text color :"), widget); | 48 | label = new QLabel(tr("Normal text color :"), widget); |
42 | layout->addWidget(label, 1, 0); | 49 | layout->addWidget(label, 1, 0); |
43 | m_text = new OColorButton(widget, m_config->readEntry("TextColor", "#000000")); | 50 | m_text = new OColorButton(widget, m_config->readEntry("TextColor", "#000000")); |
44 | QWhatsThis::add(m_text, tr("Text color to be used in chats")); | 51 | QWhatsThis::add(m_text, tr("Text color to be used in chats")); |
45 | layout->addWidget(m_text, 1, 1); | 52 | layout->addWidget(m_text, 1, 1); |
46 | label = new QLabel(tr("Error color :"), widget); | 53 | label = new QLabel(tr("Error color :"), widget); |
47 | layout->addWidget(label, 2, 0); | 54 | layout->addWidget(label, 2, 0); |
48 | m_error = new OColorButton(widget, m_config->readEntry("ErrorColor", "#FF0000")); | 55 | m_error = new OColorButton(widget, m_config->readEntry("ErrorColor", "#FF0000")); |
49 | QWhatsThis::add(m_error, tr("Text color to be used to display errors")); | 56 | QWhatsThis::add(m_error, tr("Text color to be used to display errors")); |
50 | layout->addWidget(m_error, 2, 1); | 57 | layout->addWidget(m_error, 2, 1); |
51 | label = new QLabel(tr("Text written by yourself :"), widget); | 58 | label = new QLabel(tr("Text written by yourself :"), widget); |
52 | layout->addWidget(label, 3, 0); | 59 | layout->addWidget(label, 3, 0); |
53 | m_self = new OColorButton(widget, m_config->readEntry("SelfColor", "#CC0000")); | 60 | m_self = new OColorButton(widget, m_config->readEntry("SelfColor", "#CC0000")); |
54 | QWhatsThis::add(m_self, tr("Text color to be used to identify text written by yourself")); | 61 | QWhatsThis::add(m_self, tr("Text color to be used to identify text written by yourself")); |
55 | layout->addWidget(m_self, 3, 1); | 62 | layout->addWidget(m_self, 3, 1); |
56 | label = new QLabel(tr("Text written by others :"), widget); | 63 | label = new QLabel(tr("Text written by others :"), widget); |
57 | layout->addWidget(label, 4, 0); | 64 | layout->addWidget(label, 4, 0); |
58 | m_other = new OColorButton(widget, m_config->readEntry("OtherColor", "#0000BB")); | 65 | m_other = new OColorButton(widget, m_config->readEntry("OtherColor", "#0000BB")); |
59 | QWhatsThis::add(m_other, tr("Text color to be used to identify text written by others")); | 66 | QWhatsThis::add(m_other, tr("Text color to be used to identify text written by others")); |
60 | layout->addWidget(m_other, 4, 1); | 67 | layout->addWidget(m_other, 4, 1); |
61 | label = new QLabel(tr("Text written by the server :"), widget); | 68 | label = new QLabel(tr("Text written by the server :"), widget); |
62 | layout->addWidget(label, 5, 0); | 69 | layout->addWidget(label, 5, 0); |
63 | m_server = new OColorButton(widget, m_config->readEntry("ServerColor", "#0000FF")); | 70 | m_server = new OColorButton(widget, m_config->readEntry("ServerColor", "#0000FF")); |
64 | QWhatsThis::add(m_server, tr("Text color to be used to identify text written by the server")); | 71 | QWhatsThis::add(m_server, tr("Text color to be used to identify text written by the server")); |
65 | layout->addWidget(m_server, 5, 1); | 72 | layout->addWidget(m_server, 5, 1); |
66 | label = new QLabel(tr("Notifications :"), widget); | 73 | label = new QLabel(tr("Notifications :"), widget); |
67 | layout->addWidget(label, 6, 0); | 74 | layout->addWidget(label, 6, 0); |
68 | m_notification = new OColorButton(widget, m_config->readEntry("NotificationColor", "#AAE300")); | 75 | m_notification = new OColorButton(widget, m_config->readEntry("NotificationColor", "#AAE300")); |
69 | QWhatsThis::add(m_notification, tr("Text color to be used to display notifications")); | 76 | QWhatsThis::add(m_notification, tr("Text color to be used to display notifications")); |
70 | layout->addWidget(m_notification, 6, 1); | 77 | layout->addWidget(m_notification, 6, 1); |
71 | tw->addTab(view, "opieirc/colors", tr("Colors")); | 78 | tw->addTab(view, "opieirc/colors", tr("Colors")); |
72 | tw->setCurrentTab( genwidget ); | 79 | tw->setCurrentTab( genwidget ); |
73 | showMaximized(); | 80 | |
81 | QPEApplication::showDialog( this ); | ||
74 | } | 82 | } |
75 | 83 | ||
76 | void IRCSettings::accept() { | 84 | void IRCSettings::accept() |
85 | { | ||
77 | IRCTab::m_backgroundColor = m_background->color().name(); | 86 | IRCTab::m_backgroundColor = m_background->color().name(); |
78 | IRCTab::m_textColor = m_text->color().name(); | 87 | IRCTab::m_textColor = m_text->color().name(); |
79 | IRCTab::m_errorColor = m_error->color().name(); | 88 | IRCTab::m_errorColor = m_error->color().name(); |
80 | IRCTab::m_selfColor = m_self->color().name(); | 89 | IRCTab::m_selfColor = m_self->color().name(); |
81 | IRCTab::m_otherColor = m_other->color().name(); | 90 | IRCTab::m_otherColor = m_other->color().name(); |
82 | IRCTab::m_serverColor = m_server->color().name(); | 91 | IRCTab::m_serverColor = m_server->color().name(); |
83 | IRCTab::m_notificationColor = m_notification->color().name(); | 92 | IRCTab::m_notificationColor = m_notification->color().name(); |
84 | IRCTab::m_maxLines = m_lines->text().toInt(); | 93 | IRCTab::m_maxLines = m_lines->text().toInt(); |
85 | m_config->writeEntry("BackgroundColor", IRCTab::m_backgroundColor); | 94 | m_config->writeEntry("BackgroundColor", IRCTab::m_backgroundColor); |
86 | m_config->writeEntry("TextColor", IRCTab::m_textColor); | 95 | m_config->writeEntry("TextColor", IRCTab::m_textColor); |
87 | m_config->writeEntry("ErrorColor", IRCTab::m_errorColor); | 96 | m_config->writeEntry("ErrorColor", IRCTab::m_errorColor); |
88 | m_config->writeEntry("SelfColor", IRCTab::m_selfColor); | 97 | m_config->writeEntry("SelfColor", IRCTab::m_selfColor); |
89 | m_config->writeEntry("OtherColor", IRCTab::m_otherColor); | 98 | m_config->writeEntry("OtherColor", IRCTab::m_otherColor); |
90 | m_config->writeEntry("ServerColor", IRCTab::m_serverColor); | 99 | m_config->writeEntry("ServerColor", IRCTab::m_serverColor); |
91 | m_config->writeEntry("NotificationColor", IRCTab::m_notificationColor); | 100 | m_config->writeEntry("NotificationColor", IRCTab::m_notificationColor); |
92 | m_config->writeEntry("Lines", m_lines->text()); | 101 | m_config->writeEntry("Lines", m_lines->text()); |
93 | QDialog::accept(); | 102 | QDialog::accept(); |
94 | } | 103 | } |
95 | 104 | ||
96 | IRCSettings::~IRCSettings() { | 105 | IRCSettings::~IRCSettings() |
106 | { | ||
97 | delete m_config; | 107 | delete m_config; |
98 | } | 108 | } |
diff --git a/noncore/net/opietooth/blue-pin/pindlg.cc b/noncore/net/opietooth/blue-pin/pindlg.cc index 7d60d6c..9418a20 100644 --- a/noncore/net/opietooth/blue-pin/pindlg.cc +++ b/noncore/net/opietooth/blue-pin/pindlg.cc | |||
@@ -1,54 +1,65 @@ | |||
1 | 1 | ||
2 | #include <stdio.h> | 2 | #include "pindlg.h" |
3 | |||
4 | /* OPIE */ | ||
5 | #include <qpe/config.h> | ||
6 | #include <qpe/qpeapplication.h> | ||
3 | 7 | ||
8 | /* QT */ | ||
4 | #include <qcheckbox.h> | 9 | #include <qcheckbox.h> |
5 | #include <qlabel.h> | 10 | #include <qlabel.h> |
6 | #include <qlineedit.h> | 11 | #include <qlineedit.h> |
7 | #include <qtimer.h> | 12 | #include <qtimer.h> |
8 | 13 | ||
9 | #include <qpe/config.h> | 14 | /* STD */ |
10 | 15 | #include <stdio.h> | |
11 | #include "pindlg.h" | ||
12 | 16 | ||
13 | using namespace OpieTooth; | 17 | using namespace OpieTooth; |
14 | 18 | ||
15 | PinDlg::PinDlg( const QString& status, | 19 | PinDlg::PinDlg( const QString& status, |
16 | const QString& mac, QWidget* parent, | 20 | const QString& mac, QWidget* parent, |
17 | const char* name ) | 21 | const char* name ) |
18 | : PinDlgBase( parent, name, WType_Modal ) | 22 | : PinDlgBase( parent, name, WType_Modal ) |
19 | { | 23 | { |
20 | m_mac = mac; | 24 | m_mac = mac; |
21 | test( mac ); | 25 | test( mac ); |
22 | txtStatus->setText(status); | 26 | txtStatus->setText(status); |
23 | showMaximized(); | 27 | QPEApplication::showDialog( this ); |
24 | } | 28 | } |
25 | PinDlg::~PinDlg() { | ||
26 | 29 | ||
27 | } | 30 | PinDlg::~PinDlg() |
28 | void PinDlg::setMac( const QString& mac ) { | 31 | {} |
32 | void PinDlg::setMac( const QString& mac ) | ||
33 | { | ||
29 | txtStatus->setText( mac ); | 34 | txtStatus->setText( mac ); |
30 | } | 35 | } |
31 | QString PinDlg::pin() const{ | 36 | QString PinDlg::pin() const |
37 | { | ||
32 | return lnePin->text(); | 38 | return lnePin->text(); |
33 | } | 39 | } |
34 | 40 | ||
35 | void PinDlg::test( const QString& mac ) { | 41 | void PinDlg::test( const QString& mac ) |
36 | if (!mac.isEmpty() ) { | 42 | { |
43 | if (!mac.isEmpty() ) | ||
44 | { | ||
37 | Config cfg("bluepin"); | 45 | Config cfg("bluepin"); |
38 | cfg.setGroup(mac); | 46 | cfg.setGroup(mac); |
39 | lnePin->setText(cfg.readEntryCrypt("pin", QString::null ) ); | 47 | lnePin->setText(cfg.readEntryCrypt("pin", QString::null ) ); |
40 | if ( !lnePin->text().isEmpty() ) { | 48 | if ( !lnePin->text().isEmpty() ) |
49 | { | ||
41 | //QTimer::singleShot(100, this, SLOT(accept() ) ); | 50 | //QTimer::singleShot(100, this, SLOT(accept() ) ); |
42 | } | 51 | } |
43 | 52 | ||
44 | } | 53 | } |
45 | 54 | ||
46 | } | 55 | } |
47 | void PinDlg::accept() { | 56 | void PinDlg::accept() |
48 | if ( ckbPin->isChecked() ) { | 57 | { |
58 | if ( ckbPin->isChecked() ) | ||
59 | { | ||
49 | Config cfg("bluepin"); | 60 | Config cfg("bluepin"); |
50 | cfg.setGroup(m_mac ); | 61 | cfg.setGroup(m_mac ); |
51 | cfg.writeEntryCrypt("pin", lnePin->text() ); | 62 | cfg.writeEntryCrypt("pin", lnePin->text() ); |
52 | } | 63 | } |
53 | QDialog::accept(); | 64 | QDialog::accept(); |
54 | } | 65 | } |
diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp index 2e68984..0ea45d2 100644 --- a/noncore/net/opietooth/manager/bluebase.cpp +++ b/noncore/net/opietooth/manager/bluebase.cpp | |||
@@ -1,627 +1,688 @@ | |||
1 | /* | 1 | /* |
2 | * bluebase.cpp * | 2 | * bluebase.cpp * |
3 | * --------------------- | 3 | * --------------------- |
4 | * | 4 | * |
5 | * copyright : (c) 2002 by Maximilian Reiß | 5 | * copyright : (c) 2002 by Maximilian Reiß |
6 | * email : max.reiss@gmx.de | 6 | * email : max.reiss@gmx.de |
7 | * | 7 | * |
8 | */ | 8 | */ |
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free software; you can redistribute it and/or modify * | 11 | * This program is free software; you can redistribute it and/or modify * |
12 | * it under the terms of the GNU General Public License as published by * | 12 | * it under the terms of the GNU General Public License as published by * |
13 | * the Free Software Foundation; either version 2 of the License, or * | 13 | * the Free Software Foundation; either version 2 of the License, or * |
14 | * (at your option) any later version. * | 14 | * (at your option) any later version. * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | 17 | ||
18 | #include "bluebase.h" | 18 | #include "bluebase.h" |
19 | #include "scandialog.h" | 19 | #include "scandialog.h" |
20 | #include "hciconfwrapper.h" | 20 | #include "hciconfwrapper.h" |
21 | #include "devicehandler.h" | 21 | #include "devicehandler.h" |
22 | #include "btconnectionitem.h" | 22 | #include "btconnectionitem.h" |
23 | #include "rfcommassigndialogimpl.h" | 23 | #include "rfcommassigndialogimpl.h" |
24 | 24 | ||
25 | #include <remotedevice.h> | 25 | /* OPIE */ |
26 | #include <services.h> | 26 | #include <qpe/qpeapplication.h> |
27 | 27 | #include <qpe/resource.h> | |
28 | #include <stdlib.h> | 28 | #include <qpe/config.h> |
29 | 29 | ||
30 | /* QT */ | ||
30 | #include <qframe.h> | 31 | #include <qframe.h> |
31 | #include <qlabel.h> | 32 | #include <qlabel.h> |
32 | #include <qpushbutton.h> | 33 | #include <qpushbutton.h> |
33 | #include <qlayout.h> | 34 | #include <qlayout.h> |
34 | #include <qvariant.h> | 35 | #include <qvariant.h> |
35 | #include <qimage.h> | 36 | #include <qimage.h> |
36 | #include <qpixmap.h> | 37 | #include <qpixmap.h> |
37 | #include <qtabwidget.h> | 38 | #include <qtabwidget.h> |
38 | #include <qscrollview.h> | 39 | #include <qscrollview.h> |
39 | #include <qvbox.h> | 40 | #include <qvbox.h> |
40 | #include <qmessagebox.h> | 41 | #include <qmessagebox.h> |
41 | #include <qcheckbox.h> | 42 | #include <qcheckbox.h> |
42 | #include <qlineedit.h> | 43 | #include <qlineedit.h> |
43 | #include <qlistview.h> | 44 | #include <qlistview.h> |
44 | #include <qdir.h> | 45 | #include <qdir.h> |
45 | #include <qpopupmenu.h> | 46 | #include <qpopupmenu.h> |
46 | #include <qtimer.h> | 47 | #include <qtimer.h> |
47 | #include <qlist.h> | 48 | #include <qlist.h> |
48 | 49 | ||
49 | #include <qpe/qpeapplication.h> | 50 | /* STD */ |
50 | #include <qpe/resource.h> | 51 | #include <remotedevice.h> |
51 | #include <qpe/config.h> | 52 | #include <services.h> |
52 | 53 | #include <stdlib.h> | |
53 | 54 | ||
54 | using namespace OpieTooth; | 55 | using namespace OpieTooth; |
55 | 56 | ||
56 | BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) | 57 | BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) |
57 | : BluetoothBase( parent, name, fl ) { | 58 | : BluetoothBase( parent, name, fl ) |
59 | { | ||
58 | 60 | ||
59 | m_localDevice = new Manager( "hci0" ); | 61 | m_localDevice = new Manager( "hci0" ); |
60 | 62 | ||
61 | connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) ); | 63 | connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) ); |
62 | connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) ); | 64 | connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) ); |
63 | 65 | ||
64 | connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) ); | 66 | connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) ); |
65 | // not good since lib is async | 67 | // not good since lib is async |
66 | // connect( ListView2, SIGNAL( expanded ( QListViewItem* ) ), | 68 | // connect( ListView2, SIGNAL( expanded ( QListViewItem* ) ), |
67 | // this, SLOT( addServicesToDevice( QListViewItem * ) ) ); | 69 | // this, SLOT( addServicesToDevice( QListViewItem * ) ) ); |
68 | connect( ListView2, SIGNAL( clicked( QListViewItem* )), | 70 | connect( ListView2, SIGNAL( clicked( QListViewItem* )), |
69 | this, SLOT( startServiceActionClicked( QListViewItem* ) ) ); | 71 | this, SLOT( startServiceActionClicked( QListViewItem* ) ) ); |
70 | connect( ListView2, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int ) ), | 72 | connect( ListView2, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int ) ), |
71 | this, SLOT(startServiceActionHold( QListViewItem *, const QPoint &, int) ) ); | 73 | this, SLOT(startServiceActionHold( QListViewItem *, const QPoint &, int) ) ); |
72 | connect( m_localDevice , SIGNAL( foundServices( const QString& , Services::ValueList ) ), | 74 | connect( m_localDevice , SIGNAL( foundServices( const QString& , Services::ValueList ) ), |
73 | this, SLOT( addServicesToDevice( const QString& , Services::ValueList ) ) ); | 75 | this, SLOT( addServicesToDevice( const QString& , Services::ValueList ) ) ); |
74 | connect( m_localDevice, SIGNAL( available( const QString&, bool ) ), | 76 | connect( m_localDevice, SIGNAL( available( const QString&, bool ) ), |
75 | this, SLOT( deviceActive( const QString& , bool ) ) ); | 77 | this, SLOT( deviceActive( const QString& , bool ) ) ); |
76 | connect( m_localDevice, SIGNAL( connections( ConnectionState::ValueList ) ), | 78 | connect( m_localDevice, SIGNAL( connections( ConnectionState::ValueList ) ), |
77 | this, SLOT( addConnectedDevices( ConnectionState::ValueList ) ) ); | 79 | this, SLOT( addConnectedDevices( ConnectionState::ValueList ) ) ); |
78 | connect( m_localDevice, SIGNAL( signalStrength( const QString&, const QString& ) ), | 80 | connect( m_localDevice, SIGNAL( signalStrength( const QString&, const QString& ) ), |
79 | this, SLOT( addSignalStrength( const QString&, const QString& ) ) ); | 81 | this, SLOT( addSignalStrength( const QString&, const QString& ) ) ); |
80 | 82 | ||
81 | 83 | ||
82 | // let hold be rightButtonClicked() | 84 | // let hold be rightButtonClicked() |
83 | QPEApplication::setStylusOperation( ListView2->viewport(), QPEApplication::RightOnHold); | 85 | QPEApplication::setStylusOperation( ListView2->viewport(), QPEApplication::RightOnHold); |
84 | QPEApplication::setStylusOperation( ListView4->viewport(), QPEApplication::RightOnHold); | 86 | QPEApplication::setStylusOperation( ListView4->viewport(), QPEApplication::RightOnHold); |
85 | 87 | ||
86 | //Load all icons needed | 88 | //Load all icons needed |
87 | m_offPix = Resource::loadPixmap( "opietooth/notconnected" ); | 89 | m_offPix = Resource::loadPixmap( "opietooth/notconnected" ); |
88 | m_onPix = Resource::loadPixmap( "opietooth/connected" ); | 90 | m_onPix = Resource::loadPixmap( "opietooth/connected" ); |
89 | m_findPix = Resource::loadPixmap( "opietooth/find" ); | 91 | m_findPix = Resource::loadPixmap( "opietooth/find" ); |
90 | 92 | ||
91 | QPalette pal = this->palette(); | 93 | QPalette pal = this->palette(); |
92 | QColor col = pal.color( QPalette::Active, QColorGroup::Background ); | 94 | QColor col = pal.color( QPalette::Active, QColorGroup::Background ); |
93 | pal.setColor( QPalette::Active, QColorGroup::Button, col ); | 95 | pal.setColor( QPalette::Active, QColorGroup::Button, col ); |
94 | pal.setColor( QPalette::Inactive, QColorGroup::Button, col ); | 96 | pal.setColor( QPalette::Inactive, QColorGroup::Button, col ); |
95 | pal.setColor( QPalette::Normal, QColorGroup::Button, col ); | 97 | pal.setColor( QPalette::Normal, QColorGroup::Button, col ); |
96 | pal.setColor( QPalette::Disabled, QColorGroup::Button, col ); | 98 | pal.setColor( QPalette::Disabled, QColorGroup::Button, col ); |
97 | this->setPalette( pal ); | 99 | this->setPalette( pal ); |
98 | 100 | ||
99 | setCaption( tr( "Bluetooth Manager" ) ); | 101 | setCaption( tr( "Bluetooth Manager" ) ); |
100 | 102 | ||
101 | readConfig(); | 103 | readConfig(); |
102 | initGui(); | 104 | initGui(); |
103 | 105 | ||
104 | ListView2->setRootIsDecorated(true); | 106 | ListView2->setRootIsDecorated(true); |
105 | 107 | ||
106 | 108 | ||
107 | writeToHciConfig(); | 109 | writeToHciConfig(); |
108 | // search conncetions | 110 | // search conncetions |
109 | addConnectedDevices(); | 111 | addConnectedDevices(); |
110 | addSignalStrength(); | 112 | addSignalStrength(); |
111 | m_iconLoader = new BTIconLoader(); | 113 | m_iconLoader = new BTIconLoader(); |
112 | readSavedDevices(); | 114 | readSavedDevices(); |
113 | } | 115 | } |
114 | 116 | ||
115 | /** | 117 | /** |
116 | * Reads all options from the config file | 118 | * Reads all options from the config file |
117 | */ | 119 | */ |
118 | void BlueBase::readConfig() { | 120 | void BlueBase::readConfig() |
121 | { | ||
119 | 122 | ||
120 | Config cfg( "bluetoothmanager" ); | 123 | Config cfg( "bluetoothmanager" ); |
121 | cfg.setGroup( "bluezsettings" ); | 124 | cfg.setGroup( "bluezsettings" ); |
122 | 125 | ||
123 | m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with | 126 | m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with |
124 | m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak | 127 | m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak |
125 | m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE ); | 128 | m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE ); |
126 | m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE ); | 129 | m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE ); |
127 | m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE ); | 130 | m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE ); |
128 | m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE ); | 131 | m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE ); |
129 | } | 132 | } |
130 | 133 | ||
131 | /** | 134 | /** |
132 | * Writes all options to the config file | 135 | * Writes all options to the config file |
133 | */ | 136 | */ |
134 | void BlueBase::writeConfig() { | 137 | void BlueBase::writeConfig() |
138 | { | ||
135 | 139 | ||
136 | Config cfg( "bluetoothmanager" ); | 140 | Config cfg( "bluetoothmanager" ); |
137 | cfg.setGroup( "bluezsettings" ); | 141 | cfg.setGroup( "bluezsettings" ); |
138 | 142 | ||
139 | cfg.writeEntry( "name" , m_deviceName ); | 143 | cfg.writeEntry( "name" , m_deviceName ); |
140 | cfg.writeEntryCrypt( "passkey" , m_defaultPasskey ); | 144 | cfg.writeEntryCrypt( "passkey" , m_defaultPasskey ); |
141 | cfg.writeEntry( "useEncryption" , m_useEncryption ); | 145 | cfg.writeEntry( "useEncryption" , m_useEncryption ); |
142 | cfg.writeEntry( "enableAuthentification" , m_enableAuthentification ); | 146 | cfg.writeEntry( "enableAuthentification" , m_enableAuthentification ); |
143 | cfg.writeEntry( "enablePagescan" , m_enablePagescan ); | 147 | cfg.writeEntry( "enablePagescan" , m_enablePagescan ); |
144 | cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan ); | 148 | cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan ); |
145 | 149 | ||
146 | writeToHciConfig(); | 150 | writeToHciConfig(); |
147 | } | 151 | } |
148 | 152 | ||
149 | /** | 153 | /** |
150 | * Modify the hcid.conf file to our needs | 154 | * Modify the hcid.conf file to our needs |
151 | */ | 155 | */ |
152 | void BlueBase::writeToHciConfig() { | 156 | void BlueBase::writeToHciConfig() |
157 | { | ||
153 | qWarning("writeToHciConfig"); | 158 | qWarning("writeToHciConfig"); |
154 | HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" ); | 159 | HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" ); |
155 | hciconf.load(); | 160 | hciconf.load(); |
156 | hciconf.setPinHelper( "/opt/QtPalmtop/bin/bluepin" ); | 161 | hciconf.setPinHelper( "/opt/QtPalmtop/bin/bluepin" ); |
157 | hciconf.setName( m_deviceName ); | 162 | hciconf.setName( m_deviceName ); |
158 | hciconf.setEncrypt( m_useEncryption ); | 163 | hciconf.setEncrypt( m_useEncryption ); |
159 | hciconf.setAuth( m_enableAuthentification ); | 164 | hciconf.setAuth( m_enableAuthentification ); |
160 | hciconf.setPscan( m_enablePagescan ); | 165 | hciconf.setPscan( m_enablePagescan ); |
161 | hciconf.setIscan( m_enableInquiryscan ); | 166 | hciconf.setIscan( m_enableInquiryscan ); |
162 | hciconf.save(); | 167 | hciconf.save(); |
163 | } | 168 | } |
164 | 169 | ||
165 | 170 | ||
166 | /** | 171 | /** |
167 | * Read the list of allready known devices | 172 | * Read the list of allready known devices |
168 | */ | 173 | */ |
169 | void BlueBase::readSavedDevices() { | 174 | void BlueBase::readSavedDevices() |
175 | { | ||
170 | 176 | ||
171 | QValueList<RemoteDevice> loadedDevices; | 177 | QValueList<RemoteDevice> loadedDevices; |
172 | DeviceHandler handler; | 178 | DeviceHandler handler; |
173 | loadedDevices = handler.load(); | 179 | loadedDevices = handler.load(); |
174 | 180 | ||
175 | addSearchedDevices( loadedDevices ); | 181 | addSearchedDevices( loadedDevices ); |
176 | } | 182 | } |
177 | 183 | ||
178 | 184 | ||
179 | /** | 185 | /** |
180 | * Write the list of allready known devices | 186 | * Write the list of allready known devices |
181 | */ | 187 | */ |
182 | void BlueBase::writeSavedDevices() { | 188 | void BlueBase::writeSavedDevices() |
189 | { | ||
183 | QListViewItemIterator it( ListView2 ); | 190 | QListViewItemIterator it( ListView2 ); |
184 | BTListItem* item; | 191 | BTListItem* item; |
185 | BTDeviceItem* device; | 192 | BTDeviceItem* device; |
186 | RemoteDevice::ValueList list; | 193 | RemoteDevice::ValueList list; |
187 | for ( ; it.current(); ++it ) { | 194 | for ( ; it.current(); ++it ) |
195 | { | ||
188 | item = (BTListItem*)it.current(); | 196 | item = (BTListItem*)it.current(); |
189 | if(item->typeId() != BTListItem::Device ) | 197 | if(item->typeId() != BTListItem::Device ) |
190 | continue; | 198 | continue; |
191 | device = (BTDeviceItem*)item; | 199 | device = (BTDeviceItem*)item; |
192 | 200 | ||
193 | list.append( device->remoteDevice() ); | 201 | list.append( device->remoteDevice() ); |
194 | } | 202 | } |
195 | /* | 203 | /* |
196 | * if not empty save the List through DeviceHandler | 204 | * if not empty save the List through DeviceHandler |
197 | */ | 205 | */ |
198 | if ( list.isEmpty() ) | 206 | if ( list.isEmpty() ) |
199 | return; | 207 | return; |
200 | DeviceHandler handler; | 208 | DeviceHandler handler; |
201 | handler.save( list ); | 209 | handler.save( list ); |
202 | } | 210 | } |
203 | 211 | ||
204 | 212 | ||
205 | /** | 213 | /** |
206 | * Set up the gui | 214 | * Set up the gui |
207 | */ | 215 | */ |
208 | void BlueBase::initGui() { | 216 | void BlueBase::initGui() |
217 | { | ||
209 | StatusLabel->setText( status() ); // maybe move it to getStatus() | 218 | StatusLabel->setText( status() ); // maybe move it to getStatus() |
210 | cryptCheckBox->setChecked( m_useEncryption ); | 219 | cryptCheckBox->setChecked( m_useEncryption ); |
211 | authCheckBox->setChecked( m_enableAuthentification ); | 220 | authCheckBox->setChecked( m_enableAuthentification ); |
212 | pagescanCheckBox->setChecked( m_enablePagescan ); | 221 | pagescanCheckBox->setChecked( m_enablePagescan ); |
213 | inquiryscanCheckBox->setChecked( m_enableInquiryscan ); | 222 | inquiryscanCheckBox->setChecked( m_enableInquiryscan ); |
214 | deviceNameLine->setText( m_deviceName ); | 223 | deviceNameLine->setText( m_deviceName ); |
215 | passkeyLine->setText( m_defaultPasskey ); | 224 | passkeyLine->setText( m_defaultPasskey ); |
216 | // set info tab | 225 | // set info tab |
217 | setInfo(); | 226 | setInfo(); |
218 | } | 227 | } |
219 | 228 | ||
220 | 229 | ||
221 | /** | 230 | /** |
222 | * Get the status informations and returns it | 231 | * Get the status informations and returns it |
223 | * @return QString the status informations gathered | 232 | * @return QString the status informations gathered |
224 | */ | 233 | */ |
225 | QString BlueBase::status()const{ | 234 | QString BlueBase::status()const |
235 | { | ||
226 | QString infoString = tr( "<b>Device name : </b> Ipaq" ); | 236 | QString infoString = tr( "<b>Device name : </b> Ipaq" ); |
227 | infoString += QString( "<br><b>" + tr( "MAC adress: " ) +"</b> No idea" ); | 237 | infoString += QString( "<br><b>" + tr( "MAC adress: " ) +"</b> No idea" ); |
228 | infoString += QString( "<br><b>" + tr( "Class" ) + "</b> PDA" ); | 238 | infoString += QString( "<br><b>" + tr( "Class" ) + "</b> PDA" ); |
229 | 239 | ||
230 | return (infoString); | 240 | return (infoString); |
231 | } | 241 | } |
232 | 242 | ||
233 | 243 | ||
234 | /** | 244 | /** |
235 | * Read the current values from the gui and invoke writeConfig() | 245 | * Read the current values from the gui and invoke writeConfig() |
236 | */ | 246 | */ |
237 | void BlueBase::applyConfigChanges() { | 247 | void BlueBase::applyConfigChanges() |
248 | { | ||
238 | m_deviceName = deviceNameLine->text(); | 249 | m_deviceName = deviceNameLine->text(); |
239 | m_defaultPasskey = passkeyLine->text(); | 250 | m_defaultPasskey = passkeyLine->text(); |
240 | m_useEncryption = cryptCheckBox->isChecked(); | 251 | m_useEncryption = cryptCheckBox->isChecked(); |
241 | m_enableAuthentification = authCheckBox->isChecked(); | 252 | m_enableAuthentification = authCheckBox->isChecked(); |
242 | m_enablePagescan = pagescanCheckBox->isChecked(); | 253 | m_enablePagescan = pagescanCheckBox->isChecked(); |
243 | m_enableInquiryscan = inquiryscanCheckBox->isChecked(); | 254 | m_enableInquiryscan = inquiryscanCheckBox->isChecked(); |
244 | 255 | ||
245 | writeConfig(); | 256 | writeConfig(); |
246 | 257 | ||
247 | QMessageBox::information( this, tr("Test") , tr("Changes were applied.") ); | 258 | QMessageBox::information( this, tr("Test") , tr("Changes were applied.") ); |
248 | } | 259 | } |
249 | 260 | ||
250 | /** | 261 | /** |
251 | * Launch Rfcomm Bind dialog | 262 | * Launch Rfcomm Bind dialog |
252 | * | 263 | * |
253 | */ | 264 | */ |
254 | void BlueBase::rfcommDialog() { | 265 | void BlueBase::rfcommDialog() |
266 | { | ||
255 | RfcommAssignDialog rfcommAssign ( this, "RfcommAssignDialog", true, WStyle_ContextHelp ); | 267 | RfcommAssignDialog rfcommAssign ( this, "RfcommAssignDialog", true, WStyle_ContextHelp ); |
256 | 268 | ||
257 | rfcommAssign.showMaximized(); | 269 | if ( QPEApplication::execDialog( &rfcommAssign ) == QDialog::Accepted ) |
258 | 270 | { | |
259 | if ( rfcommAssign.exec() == QDialog::Accepted ) { | ||
260 | rfcommAssign.saveConfig(); | 271 | rfcommAssign.saveConfig(); |
261 | } | 272 | } |
262 | } | 273 | } |
263 | 274 | ||
264 | /** | 275 | /** |
265 | * Add fresh found devices from scan dialog to the listing | 276 | * Add fresh found devices from scan dialog to the listing |
266 | * | 277 | * |
267 | */ | 278 | */ |
268 | void BlueBase::addSearchedDevices( const QValueList<RemoteDevice> &newDevices ) { | 279 | void BlueBase::addSearchedDevices( const QValueList<RemoteDevice> &newDevices ) |
280 | { | ||
269 | BTDeviceItem * deviceItem; | 281 | BTDeviceItem * deviceItem; |
270 | QValueList<RemoteDevice>::ConstIterator it; | 282 | QValueList<RemoteDevice>::ConstIterator it; |
271 | 283 | ||
272 | for( it = newDevices.begin(); it != newDevices.end() ; ++it ) { | 284 | for( it = newDevices.begin(); it != newDevices.end() ; ++it ) |
285 | { | ||
273 | 286 | ||
274 | if (find( (*it) )) // is already inserted | 287 | if (find( (*it) )) // is already inserted |
275 | continue; | 288 | continue; |
276 | 289 | ||
277 | deviceItem = new BTDeviceItem( ListView2 , (*it) ); | 290 | deviceItem = new BTDeviceItem( ListView2 , (*it) ); |
278 | deviceItem->setPixmap( 1, m_findPix ); | 291 | deviceItem->setPixmap( 1, m_findPix ); |
279 | deviceItem->setExpandable ( true ); | 292 | deviceItem->setExpandable ( true ); |
280 | 293 | ||
281 | // look if device is avail. atm, async | 294 | // look if device is avail. atm, async |
282 | deviceActive( (*it) ); | 295 | deviceActive( (*it) ); |
283 | 296 | ||
284 | // ggf auch hier? | 297 | // ggf auch hier? |
285 | addServicesToDevice( deviceItem ); | 298 | addServicesToDevice( deviceItem ); |
286 | } | 299 | } |
287 | } | 300 | } |
288 | 301 | ||
289 | 302 | ||
290 | /** | 303 | /** |
291 | * Action that is toggled on entrys on click | 304 | * Action that is toggled on entrys on click |
292 | */ | 305 | */ |
293 | void BlueBase::startServiceActionClicked( QListViewItem */*item*/ ) { | 306 | void BlueBase::startServiceActionClicked( QListViewItem */*item*/ ) |
294 | } | 307 | {} |
295 | 308 | ||
296 | 309 | ||
297 | /** | 310 | /** |
298 | * Action that are toggled on hold (mostly QPopups i guess) | 311 | * Action that are toggled on hold (mostly QPopups i guess) |
299 | */ | 312 | */ |
300 | void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & point, int /*column*/ ) { | 313 | void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & point, int /*column*/ ) |
314 | { | ||
301 | if (!item ) | 315 | if (!item ) |
302 | return; | 316 | return; |
303 | 317 | ||
304 | QPopupMenu *menu = new QPopupMenu(); | 318 | QPopupMenu *menu = new QPopupMenu(); |
305 | int ret=0; | 319 | int ret=0; |
306 | 320 | ||
307 | if ( ((BTListItem*)item)->type() == "device") { | 321 | if ( ((BTListItem*)item)->type() == "device") |
322 | { | ||
308 | 323 | ||
309 | QPopupMenu *groups = new QPopupMenu(); | 324 | QPopupMenu *groups = new QPopupMenu(); |
310 | 325 | ||
311 | menu->insertItem( ((BTDeviceItem*)item)->name(),0 ); | 326 | menu->insertItem( ((BTDeviceItem*)item)->name(),0 ); |
312 | menu->insertSeparator(1); | 327 | menu->insertSeparator(1); |
313 | menu->insertItem( tr("rescan sevices"), 2); | 328 | menu->insertItem( tr("rescan sevices"), 2); |
314 | menu->insertItem( tr("to group"), groups , 3); | 329 | menu->insertItem( tr("to group"), groups , 3); |
315 | menu->insertItem( tr("delete"), 4); | 330 | menu->insertItem( tr("delete"), 4); |
316 | 331 | ||
317 | ret = menu->exec( point , 0); | 332 | ret = menu->exec( point , 0); |
318 | 333 | ||
319 | switch(ret) { | 334 | switch(ret) |
335 | { | ||
320 | case -1: | 336 | case -1: |
321 | break; | 337 | break; |
322 | case 2: | 338 | case 2: |
323 | addServicesToDevice( (BTDeviceItem*)item ); | 339 | addServicesToDevice( (BTDeviceItem*)item ); |
324 | break; | 340 | break; |
325 | 341 | ||
326 | case 4: | 342 | case 4: |
327 | // deletes childs too | 343 | // deletes childs too |
328 | delete item; | 344 | delete item; |
329 | break; | 345 | break; |
330 | } | 346 | } |
331 | delete groups; | 347 | delete groups; |
332 | 348 | ||
333 | } | 349 | } |
334 | 350 | ||
335 | /* | 351 | /* |
336 | * We got service sensitive PopupMenus in our factory | 352 | * We got service sensitive PopupMenus in our factory |
337 | * We will create one through the factory and will insert | 353 | * We will create one through the factory and will insert |
338 | * our Separator + ShowInfo into the menu or create a new | 354 | * our Separator + ShowInfo into the menu or create a new |
339 | * one if the factory returns 0 | 355 | * one if the factory returns 0 |
340 | * PopupMenu deletion is kind of weird. | 356 | * PopupMenu deletion is kind of weird. |
341 | * If escaped( -1 ) or any of our items were chosen we'll | 357 | * If escaped( -1 ) or any of our items were chosen we'll |
342 | * delete the PopupMenu otherwise it's the responsibility of | 358 | * delete the PopupMenu otherwise it's the responsibility of |
343 | * the PopupMenu to delete itself | 359 | * the PopupMenu to delete itself |
344 | * | 360 | * |
345 | */ | 361 | */ |
346 | else if ( ((BTListItem*)item)->type() == "service") { | 362 | else if ( ((BTListItem*)item)->type() == "service") |
363 | { | ||
347 | BTServiceItem* service = (BTServiceItem*)item; | 364 | BTServiceItem* service = (BTServiceItem*)item; |
348 | QMap<int, QString> list = service->services().classIdList(); | 365 | QMap<int, QString> list = service->services().classIdList(); |
349 | QMap<int, QString>::Iterator it = list.begin(); | 366 | QMap<int, QString>::Iterator it = list.begin(); |
350 | QPopupMenu *popup =0l; | 367 | QPopupMenu *popup =0l; |
351 | if ( it != list.end() ) { | 368 | if ( it != list.end() ) |
352 | qWarning("Searching id %d %s", it.key(), it.data().latin1() ); | 369 | { |
370 | qWarning("Searching id %d %s", it.key(), it.data().latin1() ); | ||
353 | popup = m_popHelper.find( it.key(), | 371 | popup = m_popHelper.find( it.key(), |
354 | service->services(), | 372 | service->services(), |
355 | (BTDeviceItem*)service->parent() ); | 373 | (BTDeviceItem*)service->parent() ); |
356 | }else { | 374 | } |
357 | qWarning("Empty"); | 375 | else |
358 | } | 376 | { |
377 | qWarning("Empty"); | ||
378 | } | ||
359 | 379 | ||
360 | if ( popup == 0l ) { | 380 | if ( popup == 0l ) |
381 | { | ||
361 | qWarning("factory returned 0l"); | 382 | qWarning("factory returned 0l"); |
362 | popup = new QPopupMenu(); | 383 | popup = new QPopupMenu(); |
363 | } | 384 | } |
364 | int test1 = popup->insertItem( tr("Test1:"), 2); | 385 | int test1 = popup->insertItem( tr("Test1:"), 2); |
365 | 386 | ||
366 | ret = popup->exec( point ); | 387 | ret = popup->exec( point ); |
367 | qWarning("returned from exec() "); | 388 | qWarning("returned from exec() "); |
368 | if ( ret == -1 ) { | 389 | if ( ret == -1 ) |
390 | { | ||
369 | ; | 391 | ; |
370 | } else if ( ret == test1 ) { | 392 | } |
393 | else if ( ret == test1 ) | ||
394 | { | ||
371 | ; | 395 | ; |
372 | } | 396 | } |
373 | delete popup; | 397 | delete popup; |
374 | } | 398 | } |
375 | delete menu; | 399 | delete menu; |
376 | } | 400 | } |
377 | 401 | ||
378 | 402 | ||
379 | /** | 403 | /** |
380 | * Search and display avail. services for a device (on expand from device listing) | 404 | * Search and display avail. services for a device (on expand from device listing) |
381 | * @param item the service item returned | 405 | * @param item the service item returned |
382 | */ | 406 | */ |
383 | void BlueBase::addServicesToDevice( BTDeviceItem * item ) { | 407 | void BlueBase::addServicesToDevice( BTDeviceItem * item ) |
408 | { | ||
384 | qDebug("addServicesToDevice"); | 409 | qDebug("addServicesToDevice"); |
385 | // row of mac adress text(3) | 410 | // row of mac adress text(3) |
386 | RemoteDevice device = item->remoteDevice(); | 411 | RemoteDevice device = item->remoteDevice(); |
387 | m_deviceList.insert( item->mac() , item ); | 412 | m_deviceList.insert( item->mac() , item ); |
388 | // and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back | 413 | // and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back |
389 | m_localDevice->searchServices( device ); | 414 | m_localDevice->searchServices( device ); |
390 | } | 415 | } |
391 | 416 | ||
392 | 417 | ||
393 | /** | 418 | /** |
394 | * Overloaded. This one it the one that is | 419 | * Overloaded. This one it the one that is |
395 | ted to the foundServices signal | 420 | ted to the foundServices signal |
396 | * @param device the mac address of the remote device | 421 | * @param device the mac address of the remote device |
397 | * @param servicesList the list with the service the device has. | 422 | * @param servicesList the list with the service the device has. |
398 | */ | 423 | */ |
399 | void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList ) { | 424 | void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList ) |
425 | { | ||
400 | qDebug("fill services list"); | 426 | qDebug("fill services list"); |
401 | 427 | ||
402 | QMap<QString,BTDeviceItem*>::Iterator it; | 428 | QMap<QString,BTDeviceItem*>::Iterator it; |
403 | BTDeviceItem* deviceItem = 0; | 429 | BTDeviceItem* deviceItem = 0; |
404 | 430 | ||
405 | // get the right devices which requested the search | 431 | // get the right devices which requested the search |
406 | it = m_deviceList.find( device ); | 432 | it = m_deviceList.find( device ); |
407 | if( it == m_deviceList.end() ) | 433 | if( it == m_deviceList.end() ) |
408 | return; | 434 | return; |
409 | deviceItem = it.data(); | 435 | deviceItem = it.data(); |
410 | 436 | ||
411 | // remove previous entries | 437 | // remove previous entries |
412 | QList<QListViewItem> tempList; | 438 | QList<QListViewItem> tempList; |
413 | tempList.setAutoDelete( true ); | 439 | tempList.setAutoDelete( true ); |
414 | QListViewItem * child = deviceItem->firstChild(); | 440 | QListViewItem * child = deviceItem->firstChild(); |
415 | while( child ) { | 441 | while( child ) |
416 | tempList.append( child ); | 442 | { |
417 | child = child->nextSibling(); | 443 | tempList.append( child ); |
444 | child = child->nextSibling(); | ||
418 | } | 445 | } |
419 | tempList.clear(); | 446 | tempList.clear(); |
420 | 447 | ||
421 | QValueList<OpieTooth::Services>::Iterator it2; | 448 | QValueList<OpieTooth::Services>::Iterator it2; |
422 | BTServiceItem* serviceItem; | 449 | BTServiceItem* serviceItem; |
423 | 450 | ||
424 | 451 | ||
425 | if (!servicesList.isEmpty() ) { | 452 | if (!servicesList.isEmpty() ) |
453 | { | ||
426 | // add services | 454 | // add services |
427 | QMap<int, QString> list; | 455 | QMap<int, QString> list; |
428 | QMap<int, QString>::Iterator classIt; | 456 | QMap<int, QString>::Iterator classIt; |
429 | for( it2 = servicesList.begin(); it2 != servicesList.end(); ++it2 ) { | 457 | for( it2 = servicesList.begin(); it2 != servicesList.end(); ++it2 ) |
458 | { | ||
430 | serviceItem = new BTServiceItem( deviceItem, (*it2) ); | 459 | serviceItem = new BTServiceItem( deviceItem, (*it2) ); |
431 | list = (*it2).classIdList(); | 460 | list = (*it2).classIdList(); |
432 | classIt = list.begin(); | 461 | classIt = list.begin(); |
433 | int classId=0; | 462 | int classId=0; |
434 | if ( classIt != list.end() ) { | 463 | if ( classIt != list.end() ) |
464 | { | ||
435 | classId = classIt.key(); | 465 | classId = classIt.key(); |
436 | } | 466 | } |
437 | 467 | ||
438 | serviceItem->setPixmap( 0, m_iconLoader->serviceIcon( classId ) ); | 468 | serviceItem->setPixmap( 0, m_iconLoader->serviceIcon( classId ) ); |
439 | } | 469 | } |
440 | } else { | 470 | } |
471 | else | ||
472 | { | ||
441 | Services s1; | 473 | Services s1; |
442 | s1.setServiceName( tr("no services found") ); | 474 | s1.setServiceName( tr("no services found") ); |
443 | serviceItem = new BTServiceItem( deviceItem, s1 ); | 475 | serviceItem = new BTServiceItem( deviceItem, s1 ); |
444 | } | 476 | } |
445 | // now remove them from the list | 477 | // now remove them from the list |
446 | m_deviceList.remove( it ); | 478 | m_deviceList.remove( it ); |
447 | } | 479 | } |
448 | 480 | ||
449 | 481 | ||
450 | 482 | ||
451 | 483 | ||
452 | 484 | ||
453 | void BlueBase::addSignalStrength() { | 485 | void BlueBase::addSignalStrength() |
486 | { | ||
454 | 487 | ||
455 | QListViewItemIterator it( ListView4 ); | 488 | QListViewItemIterator it( ListView4 ); |
456 | for ( ; it.current(); ++it ) { | 489 | for ( ; it.current(); ++it ) |
457 | m_localDevice->signalStrength( ((BTConnectionItem*)it.current() )->connection().mac() ); | 490 | { |
458 | } | 491 | m_localDevice->signalStrength( ((BTConnectionItem*)it.current() )->connection().mac() ); |
492 | } | ||
459 | 493 | ||
460 | QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) ); | 494 | QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) ); |
461 | } | 495 | } |
462 | 496 | ||
463 | void BlueBase::addSignalStrength( const QString& mac, const QString& strength ) { | 497 | void BlueBase::addSignalStrength( const QString& mac, const QString& strength ) |
498 | { | ||
464 | 499 | ||
465 | QListViewItemIterator it( ListView4 ); | 500 | QListViewItemIterator it( ListView4 ); |
466 | for ( ; it.current(); ++it ) { | 501 | for ( ; it.current(); ++it ) |
467 | if( ((BTConnectionItem*)it.current())->connection().mac() == mac ) { | 502 | { |
468 | ((BTConnectionItem*)it.current() )->setSignalStrength( strength ); | 503 | if( ((BTConnectionItem*)it.current())->connection().mac() == mac ) |
469 | } | 504 | { |
470 | } | 505 | ((BTConnectionItem*)it.current() )->setSignalStrength( strength ); |
506 | } | ||
507 | } | ||
471 | } | 508 | } |
472 | 509 | ||
473 | /** | 510 | /** |
474 | * Add the existing connections (pairs) to the connections tab. | 511 | * Add the existing connections (pairs) to the connections tab. |
475 | * This one triggers the search | 512 | * This one triggers the search |
476 | */ | 513 | */ |
477 | void BlueBase::addConnectedDevices() { | 514 | void BlueBase::addConnectedDevices() |
478 | m_localDevice->searchConnections(); | 515 | { |
516 | m_localDevice->searchConnections(); | ||
479 | } | 517 | } |
480 | 518 | ||
481 | /** | 519 | /** |
482 | * This adds the found connections to the connection tab. | 520 | * This adds the found connections to the connection tab. |
483 | * @param connectionList the ValueList with all current connections | 521 | * @param connectionList the ValueList with all current connections |
484 | */ | 522 | */ |
485 | void BlueBase::addConnectedDevices( ConnectionState::ValueList connectionList ) { | 523 | void BlueBase::addConnectedDevices( ConnectionState::ValueList connectionList ) |
524 | { | ||
486 | 525 | ||
487 | QValueList<OpieTooth::ConnectionState>::Iterator it; | 526 | QValueList<OpieTooth::ConnectionState>::Iterator it; |
488 | BTConnectionItem * connectionItem; | 527 | BTConnectionItem * connectionItem; |
489 | 528 | ||
490 | if ( !connectionList.isEmpty() ) { | 529 | if ( !connectionList.isEmpty() ) |
530 | { | ||
491 | 531 | ||
492 | for (it = connectionList.begin(); it != connectionList.end(); ++it) { | 532 | for (it = connectionList.begin(); it != connectionList.end(); ++it) |
533 | { | ||
493 | 534 | ||
494 | QListViewItemIterator it2( ListView4 ); | 535 | QListViewItemIterator it2( ListView4 ); |
495 | bool found = false; | 536 | bool found = false; |
496 | for ( ; it2.current(); ++it2 ) { | 537 | for ( ; it2.current(); ++it2 ) |
497 | if( ( (BTConnectionItem*)it2.current())->connection().mac() == (*it).mac() ) { | 538 | { |
498 | found = true; | 539 | if( ( (BTConnectionItem*)it2.current())->connection().mac() == (*it).mac() ) |
499 | } | 540 | { |
500 | } | 541 | found = true; |
542 | } | ||
543 | } | ||
501 | 544 | ||
502 | if ( found == false ) { | 545 | if ( found == false ) |
503 | connectionItem = new BTConnectionItem( ListView4, (*it) ); | 546 | { |
547 | connectionItem = new BTConnectionItem( ListView4, (*it) ); | ||
504 | 548 | ||
505 | if( m_deviceList.find((*it).mac()).data() ) { | 549 | if( m_deviceList.find((*it).mac()).data() ) |
506 | connectionItem->setName( m_deviceList.find( (*it).mac()).data()->name() ); | 550 | { |
507 | } | 551 | connectionItem->setName( m_deviceList.find( (*it).mac()).data()->name() ); |
508 | } | 552 | } |
553 | } | ||
509 | 554 | ||
510 | } | 555 | } |
511 | 556 | ||
512 | QListViewItemIterator it2( ListView4 ); | 557 | QListViewItemIterator it2( ListView4 ); |
513 | for ( ; it2.current(); ++it2 ) { | 558 | for ( ; it2.current(); ++it2 ) |
514 | bool found = false; | 559 | { |
515 | for (it = connectionList.begin(); it != connectionList.end(); ++it) { | 560 | bool found = false; |
516 | if( ( ((BTConnectionItem*)it2.current())->connection().mac() ) == (*it).mac() ) { | 561 | for (it = connectionList.begin(); it != connectionList.end(); ++it) |
517 | found = true; | 562 | { |
518 | } | 563 | if( ( ((BTConnectionItem*)it2.current())->connection().mac() ) == (*it).mac() ) |
564 | { | ||
565 | found = true; | ||
566 | } | ||
519 | } | 567 | } |
520 | 568 | ||
521 | if ( !found ) { | 569 | if ( !found ) |
522 | delete it2.current(); | 570 | { |
523 | } | 571 | delete it2.current(); |
572 | } | ||
524 | 573 | ||
525 | } | 574 | } |
526 | 575 | ||
527 | 576 | ||
528 | } else { | 577 | } |
578 | else | ||
579 | { | ||
529 | ListView4->clear(); | 580 | ListView4->clear(); |
530 | ConnectionState con; | 581 | ConnectionState con; |
531 | con.setMac( tr("No connections found") ); | 582 | con.setMac( tr("No connections found") ); |
532 | connectionItem = new BTConnectionItem( ListView4 , con ); | 583 | connectionItem = new BTConnectionItem( ListView4 , con ); |
533 | } | 584 | } |
534 | 585 | ||
535 | // recall connection search after some time | 586 | // recall connection search after some time |
536 | QTimer::singleShot( 15000, this, SLOT( addConnectedDevices() ) ); | 587 | QTimer::singleShot( 15000, this, SLOT( addConnectedDevices() ) ); |
537 | } | 588 | } |
538 | 589 | ||
539 | 590 | ||
540 | /** | 591 | /** |
541 | * Find out if a device can currently be reached | 592 | * Find out if a device can currently be reached |
542 | * @param device | 593 | * @param device |
543 | */ | 594 | */ |
544 | void BlueBase::deviceActive( const RemoteDevice &device ) { | 595 | void BlueBase::deviceActive( const RemoteDevice &device ) |
596 | { | ||
545 | // search by mac, async, gets a signal back | 597 | // search by mac, async, gets a signal back |
546 | // We should have a BTDeviceItem there or where does it get added to the map -zecke | 598 | // We should have a BTDeviceItem there or where does it get added to the map -zecke |
547 | m_localDevice->isAvailable( device.mac() ); | 599 | m_localDevice->isAvailable( device.mac() ); |
548 | } | 600 | } |
549 | 601 | ||
550 | 602 | ||
551 | /** | 603 | /** |
552 | * The signal catcher. Set the avail. status on device. | 604 | * The signal catcher. Set the avail. status on device. |
553 | * @param device - the mac address | 605 | * @param device - the mac address |
554 | * @param connected - if it is avail. or not | 606 | * @param connected - if it is avail. or not |
555 | */ | 607 | */ |
556 | void BlueBase::deviceActive( const QString& device, bool connected ) { | 608 | void BlueBase::deviceActive( const QString& device, bool connected ) |
609 | { | ||
557 | qDebug("deviceActive slot"); | 610 | qDebug("deviceActive slot"); |
558 | 611 | ||
559 | QMap<QString,BTDeviceItem*>::Iterator it; | 612 | QMap<QString,BTDeviceItem*>::Iterator it; |
560 | 613 | ||
561 | it = m_deviceList.find( device ); | 614 | it = m_deviceList.find( device ); |
562 | if( it == m_deviceList.end() ) | 615 | if( it == m_deviceList.end() ) |
563 | return; | 616 | return; |
564 | 617 | ||
565 | BTDeviceItem* deviceItem = it.data(); | 618 | BTDeviceItem* deviceItem = it.data(); |
566 | 619 | ||
567 | 620 | ||
568 | if ( connected ) { | 621 | if ( connected ) |
622 | { | ||
569 | deviceItem->setPixmap( 1, m_onPix ); | 623 | deviceItem->setPixmap( 1, m_onPix ); |
570 | } else { | 624 | } |
625 | else | ||
626 | { | ||
571 | deviceItem->setPixmap( 1, m_offPix ); | 627 | deviceItem->setPixmap( 1, m_offPix ); |
572 | } | 628 | } |
573 | m_deviceList.remove( it ); | 629 | m_deviceList.remove( it ); |
574 | } | 630 | } |
575 | 631 | ||
576 | 632 | ||
577 | /** | 633 | /** |
578 | * Open the "scan for devices" dialog | 634 | * Open the "scan for devices" dialog |
579 | */ | 635 | */ |
580 | void BlueBase::startScan() { | 636 | void BlueBase::startScan() |
637 | { | ||
581 | ScanDialog *scan = new ScanDialog( this, "ScanDialog", | 638 | ScanDialog *scan = new ScanDialog( this, "ScanDialog", |
582 | true, WDestructiveClose ); | 639 | true, WDestructiveClose ); |
583 | QObject::connect( scan, SIGNAL( selectedDevices( const QValueList<RemoteDevice>& ) ), | 640 | QObject::connect( scan, SIGNAL( selectedDevices( const QValueList<RemoteDevice>& ) ), |
584 | this, SLOT( addSearchedDevices( const QValueList<RemoteDevice>& ) ) ); | 641 | this, SLOT( addSearchedDevices( const QValueList<RemoteDevice>& ) ) ); |
585 | 642 | ||
586 | scan->showMaximized(); | 643 | QPEApplication::showDialog( scan ); |
587 | } | 644 | } |
588 | 645 | ||
589 | 646 | ||
590 | /** | 647 | /** |
591 | * Set the informations about the local device in information Tab | 648 | * Set the informations about the local device in information Tab |
592 | */ | 649 | */ |
593 | void BlueBase::setInfo() { | 650 | void BlueBase::setInfo() |
651 | { | ||
594 | StatusLabel->setText( status() ); | 652 | StatusLabel->setText( status() ); |
595 | } | 653 | } |
596 | 654 | ||
597 | 655 | ||
598 | /** | 656 | /** |
599 | * Decontructor | 657 | * Decontructor |
600 | */ | 658 | */ |
601 | BlueBase::~BlueBase() { | 659 | BlueBase::~BlueBase() |
660 | { | ||
602 | writeSavedDevices(); | 661 | writeSavedDevices(); |
603 | delete m_iconLoader; | 662 | delete m_iconLoader; |
604 | } | 663 | } |
605 | 664 | ||
606 | 665 | ||
607 | /** | 666 | /** |
608 | * find searches the ListView for a BTDeviceItem containig | 667 | * find searches the ListView for a BTDeviceItem containig |
609 | * the same Device if found return true else false | 668 | * the same Device if found return true else false |
610 | * @param dev RemoteDevice to find | 669 | * @param dev RemoteDevice to find |
611 | * @return returns true if found | 670 | * @return returns true if found |
612 | */ | 671 | */ |
613 | bool BlueBase::find( const RemoteDevice& rem ) { | 672 | bool BlueBase::find( const RemoteDevice& rem ) |
673 | { | ||
614 | QListViewItemIterator it( ListView2 ); | 674 | QListViewItemIterator it( ListView2 ); |
615 | BTListItem* item; | 675 | BTListItem* item; |
616 | BTDeviceItem* device; | 676 | BTDeviceItem* device; |
617 | for (; it.current(); ++it ) { | 677 | for (; it.current(); ++it ) |
678 | { | ||
618 | item = (BTListItem*) it.current(); | 679 | item = (BTListItem*) it.current(); |
619 | if ( item->typeId() != BTListItem::Device ) | 680 | if ( item->typeId() != BTListItem::Device ) |
620 | continue; | 681 | continue; |
621 | 682 | ||
622 | device = (BTDeviceItem*)item; | 683 | device = (BTDeviceItem*)item; |
623 | if ( rem.equals( device->remoteDevice() ) ) | 684 | if ( rem.equals( device->remoteDevice() ) ) |
624 | return true; | 685 | return true; |
625 | } | 686 | } |
626 | return false; // not found | 687 | return false; // not found |
627 | } | 688 | } |
diff --git a/noncore/net/opietooth/manager/obexpopup.cpp b/noncore/net/opietooth/manager/obexpopup.cpp index a550648..d147d52 100644 --- a/noncore/net/opietooth/manager/obexpopup.cpp +++ b/noncore/net/opietooth/manager/obexpopup.cpp | |||
@@ -1,41 +1,45 @@ | |||
1 | 1 | ||
2 | #include <qtimer.h> | ||
3 | |||
4 | #include "obexdialog.h" | 2 | #include "obexdialog.h" |
5 | #include "obexpopup.h" | 3 | #include "obexpopup.h" |
6 | 4 | ||
5 | /* OPIE */ | ||
6 | #include <qpe/qpeapplication.h> | ||
7 | |||
8 | /* QT */ | ||
9 | #include <qtimer.h> | ||
10 | |||
7 | using namespace OpieTooth; | 11 | using namespace OpieTooth; |
8 | 12 | ||
9 | /* | 13 | /* |
10 | * c'tor init the QAction | 14 | * c'tor init the QAction |
11 | */ | 15 | */ |
12 | ObexPopup::ObexPopup() | 16 | ObexPopup::ObexPopup() |
13 | : QPopupMenu() { | 17 | : QPopupMenu() |
18 | { | ||
14 | qWarning("RfcCommPopup c'tor"); | 19 | qWarning("RfcCommPopup c'tor"); |
15 | 20 | ||
16 | QAction* a; | 21 | QAction* a; |
17 | 22 | ||
18 | /* connect action */ | 23 | /* connect action */ |
19 | a = new QAction( ); // so it's get deleted | 24 | a = new QAction( ); // so it's get deleted |
20 | a->setText("Push file"); | 25 | a->setText("Push file"); |
21 | a->addTo( this ); | 26 | a->addTo( this ); |
22 | connect( a, SIGNAL( activated() ), | 27 | connect( a, SIGNAL( activated() ), |
23 | this, SLOT( slotPush() ) ); | 28 | this, SLOT( slotPush() ) ); |
24 | }; | 29 | }; |
25 | 30 | ||
26 | 31 | ||
27 | ObexPopup::~ObexPopup() { | 32 | ObexPopup::~ObexPopup() |
28 | } | 33 | {} |
29 | 34 | ||
30 | 35 | ||
31 | void ObexPopup::slotPush() { | 36 | void ObexPopup::slotPush() |
37 | { | ||
32 | 38 | ||
33 | qWarning("push something"); | 39 | qWarning("push something"); |
34 | 40 | ||
35 | |||
36 | ObexDialog obexDialog; | 41 | ObexDialog obexDialog; |
37 | obexDialog.showMaximized(); | 42 | QPEApplication::execDialog( &obexDialog ); |
38 | obexDialog.exec(); | ||
39 | } | 43 | } |
40 | 44 | ||
41 | 45 | ||
diff --git a/noncore/net/opietooth/manager/rfcommassigndialogimpl.cpp b/noncore/net/opietooth/manager/rfcommassigndialogimpl.cpp index b5cc074..fc76301 100644 --- a/noncore/net/opietooth/manager/rfcommassigndialogimpl.cpp +++ b/noncore/net/opietooth/manager/rfcommassigndialogimpl.cpp | |||
@@ -1,120 +1,135 @@ | |||
1 | 1 | ||
2 | #include "rfcommassigndialogimpl.h" | 2 | #include "rfcommassigndialogimpl.h" |
3 | #include "rfcommassigndialogitem.h" | 3 | #include "rfcommassigndialogitem.h" |
4 | #include "rfcommconfhandler.h" | 4 | #include "rfcommconfhandler.h" |
5 | 5 | ||
6 | /* OPIE */ | ||
6 | #include <qpe/config.h> | 7 | #include <qpe/config.h> |
8 | #include <qpe/qpeapplication.h> | ||
7 | 9 | ||
10 | /* QT */ | ||
8 | #include <qlayout.h> | 11 | #include <qlayout.h> |
9 | 12 | ||
10 | using namespace OpieTooth; | 13 | using namespace OpieTooth; |
11 | 14 | ||
12 | // TODO: write only the file in bluebase? | 15 | // TODO: write only the file in bluebase? |
13 | // muss rfcommd dann neu gestartet werden | 16 | // muss rfcommd dann neu gestartet werden |
14 | // sollte rfcomm bind all nicht eh default config sein ( polled das? - d.h. sobald nen gerät in der nähe ist bindet es? | 17 | // sollte rfcomm bind all nicht eh default config sein ( polled das? - d.h. sobald nen gerät in der nähe ist bindet es? |
15 | 18 | ||
16 | 19 | ||
17 | RfcommAssignDialog::RfcommAssignDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) | 20 | RfcommAssignDialog::RfcommAssignDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) |
18 | : RfcommAssignDialogBase( parent, name, modal, fl ) { | 21 | : RfcommAssignDialogBase( parent, name, modal, fl ) |
22 | { | ||
19 | 23 | ||
20 | m_range = 5; | 24 | m_range = 5; |
21 | 25 | ||
22 | m_scrollView = new QScrollView( this ); | 26 | m_scrollView = new QScrollView( this ); |
23 | m_scrollView->setResizePolicy( QScrollView::AutoOneFit ); | 27 | m_scrollView->setResizePolicy( QScrollView::AutoOneFit ); |
24 | m_scrollView->setHScrollBarMode( QScrollView::AlwaysOff ); | 28 | m_scrollView->setHScrollBarMode( QScrollView::AlwaysOff ); |
25 | 29 | ||
26 | RfcommAssignDialogBaseLayout->addWidget( m_scrollView ); | 30 | RfcommAssignDialogBaseLayout->addWidget( m_scrollView ); |
27 | 31 | ||
28 | m_box = new QVBox( m_scrollView->viewport() ); | 32 | m_box = new QVBox( m_scrollView->viewport() ); |
29 | m_scrollView->addChild( m_box ); | 33 | m_scrollView->addChild( m_box ); |
30 | 34 | ||
31 | confHandler = new RfCommConfHandler( "/etc/bluetooth/rfcomm.conf" ); | 35 | confHandler = new RfCommConfHandler( "/etc/bluetooth/rfcomm.conf" ); |
32 | 36 | ||
33 | loadConfig(); | 37 | loadConfig(); |
34 | } | 38 | } |
35 | 39 | ||
36 | RfcommAssignDialog::~RfcommAssignDialog() { | 40 | RfcommAssignDialog::~RfcommAssignDialog() |
37 | if ( confHandler ) { | 41 | { |
42 | if ( confHandler ) | ||
43 | { | ||
38 | delete confHandler; | 44 | delete confHandler; |
39 | } | 45 | } |
40 | } | 46 | } |
41 | 47 | ||
42 | 48 | ||
43 | void RfcommAssignDialog::newDevice( const QString & mac ) { | 49 | void RfcommAssignDialog::newDevice( const QString & mac ) |
50 | { | ||
44 | 51 | ||
45 | for ( int i = 0 ; i < m_range; i++ ) { | 52 | for ( int i = 0 ; i < m_range; i++ ) |
53 | { | ||
46 | 54 | ||
47 | QMap<QString, RfCommConfObject*>::Iterator it; | 55 | QMap<QString, RfCommConfObject*>::Iterator it; |
48 | it = confHandler->foundEntries().find( QString("%1").arg( i ) ); | 56 | it = confHandler->foundEntries().find( QString("%1").arg( i ) ); |
49 | // make sure that rfcommX is not assigned yet | 57 | // make sure that rfcommX is not assigned yet |
50 | if ( it == confHandler->foundEntries().end() ) { | 58 | if ( it == confHandler->foundEntries().end() ) |
59 | { | ||
51 | QDialog dialog( this, "newdevice", true, WStyle_ContextHelp ); | 60 | QDialog dialog( this, "newdevice", true, WStyle_ContextHelp ); |
52 | dialog.showMaximized(); | 61 | |
53 | RfcommDialogItem *newDev = new RfcommDialogItem( &dialog ); | 62 | RfcommDialogItem *newDev = new RfcommDialogItem( &dialog ); |
54 | newDev->setIdent( i ); | 63 | newDev->setIdent( i ); |
55 | newDev->setMac( mac ); | 64 | newDev->setMac( mac ); |
56 | 65 | ||
57 | if ( dialog.exec() == QDialog::Accepted ) { | 66 | if ( QPEApplication::execDialog( &dialog ) == QDialog::Accepted ) |
67 | { | ||
58 | RfcommDialogItem *rfcomm = new RfcommDialogItem( m_box ); | 68 | RfcommDialogItem *rfcomm = new RfcommDialogItem( m_box ); |
59 | m_itemList.insert( i , rfcomm ); | 69 | m_itemList.insert( i , rfcomm ); |
60 | rfcomm->setIdent( i ); | 70 | rfcomm->setIdent( i ); |
61 | rfcomm->setMac( mac ); | 71 | rfcomm->setMac( mac ); |
62 | rfcomm->setChannel( newDev->channel() ); | 72 | rfcomm->setChannel( newDev->channel() ); |
63 | rfcomm->setComment( newDev->comment() ); | 73 | rfcomm->setComment( newDev->comment() ); |
64 | qDebug( "New device set up" ); | 74 | qDebug( "New device set up" ); |
65 | } | 75 | } |
66 | } | 76 | } |
67 | } | 77 | } |
68 | } | 78 | } |
69 | 79 | ||
70 | void RfcommAssignDialog::loadConfig() { | 80 | void RfcommAssignDialog::loadConfig() |
81 | { | ||
71 | 82 | ||
72 | //Config cfg( "bluetoothmanager-rfcommbind" ); | 83 | //Config cfg( "bluetoothmanager-rfcommbind" ); |
73 | 84 | ||
74 | for ( int i = 0 ; i < m_range; i++ ) { | 85 | for ( int i = 0 ; i < m_range; i++ ) |
86 | { | ||
75 | // cfg.setGroup( QString("%1").arg( i ) ); | 87 | // cfg.setGroup( QString("%1").arg( i ) ); |
76 | RfcommDialogItem *rfcomm = new RfcommDialogItem( m_box ); | 88 | RfcommDialogItem *rfcomm = new RfcommDialogItem( m_box ); |
77 | m_itemList.insert( i , rfcomm ); | 89 | m_itemList.insert( i , rfcomm ); |
78 | rfcomm->setIdent( i ); | 90 | rfcomm->setIdent( i ); |
79 | QMap<QString, RfCommConfObject*>::Iterator it; | 91 | QMap<QString, RfCommConfObject*>::Iterator it; |
80 | it = confHandler->foundEntries().find( QString("%1").arg( i ) ); | 92 | it = confHandler->foundEntries().find( QString("%1").arg( i ) ); |
81 | if ( it != confHandler->foundEntries().end() ) { | 93 | if ( it != confHandler->foundEntries().end() ) |
94 | { | ||
82 | qDebug( "Found key in foundEntries() " ); | 95 | qDebug( "Found key in foundEntries() " ); |
83 | rfcomm->setMac( it.data()->mac() ); | 96 | rfcomm->setMac( it.data()->mac() ); |
84 | rfcomm->setChannel( it.data()->channel() ); | 97 | rfcomm->setChannel( it.data()->channel() ); |
85 | rfcomm->setComment( it.data()->comment() ); | 98 | rfcomm->setComment( it.data()->comment() ); |
86 | } | 99 | } |
87 | /* Use rfcomm.conf directly for now | 100 | /* Use rfcomm.conf directly for now |
88 | * rfcomm->setMac( cfg.readEntry( "mac", "" ) ); | 101 | * rfcomm->setMac( cfg.readEntry( "mac", "" ) ); |
89 | * rfcomm->setChannel( cfg.readNumEntry( "channel", 1 ) ); | 102 | * rfcomm->setChannel( cfg.readNumEntry( "channel", 1 ) ); |
90 | * rfcomm->setComment( cfg.readEntry( "comment", "" ) ); | 103 | * rfcomm->setComment( cfg.readEntry( "comment", "" ) ); |
91 | */ | 104 | */ |
92 | } | 105 | } |
93 | } | 106 | } |
94 | 107 | ||
95 | 108 | ||
96 | void RfcommAssignDialog::saveConfig() { | 109 | void RfcommAssignDialog::saveConfig() |
110 | { | ||
97 | 111 | ||
98 | //Config cfg( "bluetoothmanager-rfcommbind" ); | 112 | //Config cfg( "bluetoothmanager-rfcommbind" ); |
99 | 113 | ||
100 | QMap< int, RfcommDialogItem*>::Iterator it; | 114 | QMap< int, RfcommDialogItem*>::Iterator it; |
101 | 115 | ||
102 | QMap< QString, RfCommConfObject*> outMap; | 116 | QMap< QString, RfCommConfObject*> outMap; |
103 | 117 | ||
104 | for( it = m_itemList.begin(); it != m_itemList.end(); ++it ) { | 118 | for( it = m_itemList.begin(); it != m_itemList.end(); ++it ) |
119 | { | ||
105 | 120 | ||
106 | //cfg.setGroup( QString("%1").arg( it.key() ) ); | 121 | //cfg.setGroup( QString("%1").arg( it.key() ) ); |
107 | RfcommDialogItem *rfcomm = it.data(); | 122 | RfcommDialogItem *rfcomm = it.data(); |
108 | 123 | ||
109 | 124 | ||
110 | outMap.insert( QString( "%1").arg( it.key() ), new RfCommConfObject( it.key(), rfcomm->mac(), rfcomm->channel(), rfcomm->comment() ) ); | 125 | outMap.insert( QString( "%1").arg( it.key() ), new RfCommConfObject( it.key(), rfcomm->mac(), rfcomm->channel(), rfcomm->comment() ) ); |
111 | 126 | ||
112 | 127 | ||
113 | //cfg.writeEntry( "mac", rfcomm->mac() ); | 128 | //cfg.writeEntry( "mac", rfcomm->mac() ); |
114 | //cfg.writeEntry( "channel", rfcomm->channel() ); | 129 | //cfg.writeEntry( "channel", rfcomm->channel() ); |
115 | //cfg.writeEntry( "comment", rfcomm->comment() ); | 130 | //cfg.writeEntry( "comment", rfcomm->comment() ); |
116 | } | 131 | } |
117 | 132 | ||
118 | confHandler->save( outMap ); | 133 | confHandler->save( outMap ); |
119 | 134 | ||
120 | } | 135 | } |
diff --git a/noncore/net/opietooth/manager/rfcpopup.cpp b/noncore/net/opietooth/manager/rfcpopup.cpp index d95f14b..04bfe48 100644 --- a/noncore/net/opietooth/manager/rfcpopup.cpp +++ b/noncore/net/opietooth/manager/rfcpopup.cpp | |||
@@ -1,96 +1,103 @@ | |||
1 | 1 | ||
2 | #include <qtimer.h> | ||
3 | |||
4 | #include "pppdialog.h" | 2 | #include "pppdialog.h" |
5 | #include "rfcpopup.h" | 3 | #include "rfcpopup.h" |
6 | #include "rfcommassigndialogimpl.h" | 4 | #include "rfcommassigndialogimpl.h" |
7 | 5 | ||
6 | /* OPIE */ | ||
7 | #include <qpe/qpeapplication.h> | ||
8 | |||
9 | /* QT */ | ||
10 | #include <qtimer.h> | ||
11 | |||
8 | using namespace OpieTooth; | 12 | using namespace OpieTooth; |
9 | 13 | ||
10 | /* | 14 | /* |
11 | * c'tor init the QAction | 15 | * c'tor init the QAction |
12 | */ | 16 | */ |
13 | RfcCommPopup::RfcCommPopup( OpieTooth::BTDeviceItem* item ) | 17 | RfcCommPopup::RfcCommPopup( OpieTooth::BTDeviceItem* item ) |
14 | : QPopupMenu() { | 18 | : QPopupMenu() |
19 | { | ||
15 | qWarning("RfcCommPopup c'tor"); | 20 | qWarning("RfcCommPopup c'tor"); |
16 | 21 | ||
17 | QAction* a; | 22 | QAction* a; |
18 | 23 | ||
19 | 24 | ||
20 | m_item = item; | 25 | m_item = item; |
21 | 26 | ||
22 | /* connect action */ | 27 | /* connect action */ |
23 | a = new QAction( ); // so it's get deleted | 28 | a = new QAction( ); // so it's get deleted |
24 | a->setText("Connect"); | 29 | a->setText("Connect"); |
25 | a->addTo( this ); | 30 | a->addTo( this ); |
26 | connect( a, SIGNAL( activated() ), | 31 | connect( a, SIGNAL( activated() ), |
27 | this, SLOT( slotConnect() ) ); | 32 | this, SLOT( slotConnect() ) ); |
28 | 33 | ||
29 | 34 | ||
30 | /* disconnect action */ | 35 | /* disconnect action */ |
31 | a = new QAction( ); | 36 | a = new QAction( ); |
32 | a->setText("Disconnect"); | 37 | a->setText("Disconnect"); |
33 | a->addTo( this ); | 38 | a->addTo( this ); |
34 | connect( a, SIGNAL( activated() ) , | 39 | connect( a, SIGNAL( activated() ) , |
35 | this, SLOT( slotDisconnect() ) ); | 40 | this, SLOT( slotDisconnect() ) ); |
36 | 41 | ||
37 | 42 | ||
38 | /* foo action */ | 43 | /* foo action */ |
39 | a = new QAction( ); | 44 | a = new QAction( ); |
40 | a->setText("Bind table"); | 45 | a->setText("Bind table"); |
41 | a->addTo( this ); | 46 | a->addTo( this ); |
42 | connect( a, SIGNAL( activated() ), | 47 | connect( a, SIGNAL( activated() ), |
43 | this, SLOT( slotBind() ) ); | 48 | this, SLOT( slotBind() ) ); |
44 | 49 | ||
45 | 50 | ||
46 | /* bar action */ | 51 | /* bar action */ |
47 | a = new QAction( ); | 52 | a = new QAction( ); |
48 | a->setText( "Bar" ); | 53 | a->setText( "Bar" ); |
49 | a->addTo( this ); | 54 | a->addTo( this ); |
50 | connect( a, SIGNAL( activated() ), | 55 | connect( a, SIGNAL( activated() ), |
51 | this, SLOT( slotBar() ) ); | 56 | this, SLOT( slotBar() ) ); |
52 | 57 | ||
53 | }; | 58 | }; |
54 | 59 | ||
55 | 60 | ||
56 | RfcCommPopup::~RfcCommPopup() { | 61 | RfcCommPopup::~RfcCommPopup() |
57 | /* delete m_con; | 62 | { |
58 | delete m_dis; | 63 | /* delete m_con; |
59 | delete m_foo; | 64 | delete m_dis; |
60 | delete m_bar; */ | 65 | delete m_foo; |
66 | delete m_bar; */ | ||
61 | } | 67 | } |
62 | 68 | ||
63 | 69 | ||
64 | void RfcCommPopup::slotConnect() { | 70 | void RfcCommPopup::slotConnect() |
71 | { | ||
65 | 72 | ||
66 | qWarning("connect"); | 73 | qWarning("connect"); |
67 | 74 | ||
68 | |||
69 | |||
70 | PPPDialog pppDialog; | 75 | PPPDialog pppDialog; |
71 | pppDialog.showMaximized(); | 76 | QPEApplication::execDialog( &pppDialog ); |
72 | pppDialog.exec(); | ||
73 | } | 77 | } |
74 | 78 | ||
75 | 79 | ||
76 | void RfcCommPopup::slotDisconnect() { | 80 | void RfcCommPopup::slotDisconnect() |
81 | { | ||
77 | qWarning("slot disconnected"); | 82 | qWarning("slot disconnected"); |
78 | } | 83 | } |
79 | 84 | ||
80 | 85 | ||
81 | void RfcCommPopup::slotBind() { | 86 | void RfcCommPopup::slotBind() |
87 | { | ||
82 | RfcommAssignDialog rfcommAssign ( this, "RfcommAssignDialog", true, WStyle_ContextHelp ); | 88 | RfcommAssignDialog rfcommAssign ( this, "RfcommAssignDialog", true, WStyle_ContextHelp ); |
83 | 89 | ||
84 | rfcommAssign.showMaximized(); | ||
85 | rfcommAssign.newDevice( m_item->mac() ); | 90 | rfcommAssign.newDevice( m_item->mac() ); |
86 | 91 | ||
87 | if ( rfcommAssign.exec() == QDialog::Accepted ) { | 92 | if ( QPEApplication::execDialog( &rfcommAssign ) == QDialog::Accepted ) |
93 | { | ||
88 | rfcommAssign.saveConfig(); | 94 | rfcommAssign.saveConfig(); |
89 | } | 95 | } |
90 | } | 96 | } |
91 | 97 | ||
92 | 98 | ||
93 | void RfcCommPopup::slotBar() { | 99 | void RfcCommPopup::slotBar() |
100 | { | ||
94 | qWarning("slotBar"); | 101 | qWarning("slotBar"); |
95 | }; | 102 | }; |
96 | 103 | ||
diff --git a/noncore/net/wellenreiter/gui/mainwindow.cpp b/noncore/net/wellenreiter/gui/mainwindow.cpp index 3729ed0..95a8294 100644 --- a/noncore/net/wellenreiter/gui/mainwindow.cpp +++ b/noncore/net/wellenreiter/gui/mainwindow.cpp | |||
@@ -1,558 +1,555 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | 2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Opie Environment. | 4 | ** This file is part of Opie Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | **********************************************************************/ | 14 | **********************************************************************/ |
15 | 15 | ||
16 | #include "configwindow.h" | 16 | #include "configwindow.h" |
17 | #include "gps.h" | 17 | #include "gps.h" |
18 | #include "logwindow.h" | 18 | #include "logwindow.h" |
19 | #include "hexwindow.h" | 19 | #include "hexwindow.h" |
20 | #include "mainwindow.h" | 20 | #include "mainwindow.h" |
21 | #include "wellenreiter.h" | 21 | #include "wellenreiter.h" |
22 | #include "scanlist.h" | 22 | #include "scanlist.h" |
23 | 23 | ||
24 | #include <qcombobox.h> | 24 | #include <qcombobox.h> |
25 | #include <qdatastream.h> | 25 | #include <qdatastream.h> |
26 | #include <qfile.h> | 26 | #include <qfile.h> |
27 | #include <qfileinfo.h> | 27 | #include <qfileinfo.h> |
28 | #include <qlabel.h> | 28 | #include <qlabel.h> |
29 | #include <qlayout.h> | 29 | #include <qlayout.h> |
30 | #include <qlineedit.h> | 30 | #include <qlineedit.h> |
31 | #include <qiconset.h> | 31 | #include <qiconset.h> |
32 | #include <qmenubar.h> | 32 | #include <qmenubar.h> |
33 | #include <qmessagebox.h> | 33 | #include <qmessagebox.h> |
34 | #include <qpopupmenu.h> | 34 | #include <qpopupmenu.h> |
35 | #include <qpushbutton.h> | 35 | #include <qpushbutton.h> |
36 | #include <qstatusbar.h> | 36 | #include <qstatusbar.h> |
37 | #include <qspinbox.h> | 37 | #include <qspinbox.h> |
38 | #include <qtextstream.h> | 38 | #include <qtextstream.h> |
39 | #include <qtoolbutton.h> | 39 | #include <qtoolbutton.h> |
40 | 40 | ||
41 | #ifdef QWS | 41 | #ifdef QWS |
42 | #include <qpe/resource.h> | 42 | #include <qpe/resource.h> |
43 | #include <opie2/ofiledialog.h> | 43 | #include <opie2/ofiledialog.h> |
44 | using namespace Opie; | 44 | using namespace Opie; |
45 | #else | 45 | #else |
46 | #include "resource.h" | 46 | #include "resource.h" |
47 | #include <qapplication.h> | 47 | #include <qapplication.h> |
48 | #include <qfiledialog.h> | 48 | #include <qfiledialog.h> |
49 | #endif | 49 | #endif |
50 | 50 | ||
51 | #include <unistd.h> | 51 | #include <unistd.h> |
52 | 52 | ||
53 | WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * name, WFlags f ) | 53 | WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * name, WFlags f ) |
54 | :QMainWindow( parent, name, f ) | 54 | :QMainWindow( parent, name, f ) |
55 | { | 55 | { |
56 | cw = new WellenreiterConfigWindow( this ); | 56 | cw = new WellenreiterConfigWindow( this ); |
57 | mw = new Wellenreiter( this ); | 57 | mw = new Wellenreiter( this ); |
58 | mw->setConfigWindow( cw ); | 58 | mw->setConfigWindow( cw ); |
59 | setCentralWidget( mw ); | 59 | setCentralWidget( mw ); |
60 | 60 | ||
61 | // setup application icon | 61 | // setup application icon |
62 | 62 | ||
63 | #ifndef QWS | 63 | #ifndef QWS |
64 | setIcon( Resource::loadPixmap( "wellenreiter/appicon-trans" ) ); | 64 | setIcon( Resource::loadPixmap( "wellenreiter/appicon-trans" ) ); |
65 | setIconText( "Wellenreiter/X11" ); | 65 | setIconText( "Wellenreiter/X11" ); |
66 | #endif | 66 | #endif |
67 | 67 | ||
68 | // setup tool buttons | 68 | // setup tool buttons |
69 | 69 | ||
70 | startButton = new QToolButton( 0 ); | 70 | startButton = new QToolButton( 0 ); |
71 | #ifdef QWS | 71 | #ifdef QWS |
72 | startButton->setAutoRaise( true ); | 72 | startButton->setAutoRaise( true ); |
73 | #endif | 73 | #endif |
74 | startButton->setIconSet( Resource::loadIconSet( "wellenreiter/SearchIcon" ) ); | 74 | startButton->setIconSet( Resource::loadIconSet( "wellenreiter/SearchIcon" ) ); |
75 | startButton->setEnabled( false ); | 75 | startButton->setEnabled( false ); |
76 | connect( startButton, SIGNAL( clicked() ), mw, SLOT( startClicked() ) ); | 76 | connect( startButton, SIGNAL( clicked() ), mw, SLOT( startClicked() ) ); |
77 | 77 | ||
78 | stopButton = new QToolButton( 0 ); | 78 | stopButton = new QToolButton( 0 ); |
79 | #ifdef QWS | 79 | #ifdef QWS |
80 | stopButton->setAutoRaise( true ); | 80 | stopButton->setAutoRaise( true ); |
81 | #endif | 81 | #endif |
82 | stopButton->setIconSet( Resource::loadIconSet( "wellenreiter/CancelIcon" ) ); | 82 | stopButton->setIconSet( Resource::loadIconSet( "wellenreiter/CancelIcon" ) ); |
83 | stopButton->setEnabled( false ); | 83 | stopButton->setEnabled( false ); |
84 | connect( stopButton, SIGNAL( clicked() ), mw, SLOT( stopClicked() ) ); | 84 | connect( stopButton, SIGNAL( clicked() ), mw, SLOT( stopClicked() ) ); |
85 | 85 | ||
86 | QToolButton* d = new QToolButton( 0 ); | 86 | QToolButton* d = new QToolButton( 0 ); |
87 | #ifdef QWS | 87 | #ifdef QWS |
88 | d->setAutoRaise( true ); | 88 | d->setAutoRaise( true ); |
89 | #endif | 89 | #endif |
90 | d->setIconSet( Resource::loadIconSet( "wellenreiter/SettingsIcon" ) ); | 90 | d->setIconSet( Resource::loadIconSet( "wellenreiter/SettingsIcon" ) ); |
91 | connect( d, SIGNAL( clicked() ), this, SLOT( showConfigure() ) ); | 91 | connect( d, SIGNAL( clicked() ), this, SLOT( showConfigure() ) ); |
92 | 92 | ||
93 | uploadButton = new QToolButton( 0 ); | 93 | uploadButton = new QToolButton( 0 ); |
94 | #ifdef QWS | 94 | #ifdef QWS |
95 | uploadButton->setAutoRaise( true ); | 95 | uploadButton->setAutoRaise( true ); |
96 | #endif | 96 | #endif |
97 | uploadButton->setIconSet( Resource::loadIconSet( "up" ) ); | 97 | uploadButton->setIconSet( Resource::loadIconSet( "up" ) ); |
98 | uploadButton->setEnabled( false ); | 98 | uploadButton->setEnabled( false ); |
99 | //uploadButton->setEnabled( true ); // DEBUGGING | 99 | //uploadButton->setEnabled( true ); // DEBUGGING |
100 | connect( uploadButton, SIGNAL( clicked() ), this, SLOT( uploadSession() ) ); | 100 | connect( uploadButton, SIGNAL( clicked() ), this, SLOT( uploadSession() ) ); |
101 | 101 | ||
102 | // setup menu bar | 102 | // setup menu bar |
103 | 103 | ||
104 | int id; | 104 | int id; |
105 | 105 | ||
106 | QMenuBar* mb = menuBar(); | 106 | QMenuBar* mb = menuBar(); |
107 | 107 | ||
108 | QPopupMenu* fileSave = new QPopupMenu( mb ); | 108 | QPopupMenu* fileSave = new QPopupMenu( mb ); |
109 | fileSave->insertItem( tr( "&Session..." ), this, SLOT( fileSaveSession() ) ); | 109 | fileSave->insertItem( tr( "&Session..." ), this, SLOT( fileSaveSession() ) ); |
110 | fileSave->insertItem( tr( "&Text Log..." ), this, SLOT( fileSaveLog() ) ); | 110 | fileSave->insertItem( tr( "&Text Log..." ), this, SLOT( fileSaveLog() ) ); |
111 | fileSave->insertItem( tr( "&Hex Log..." ), this, SLOT( fileSaveHex() ) ); | 111 | fileSave->insertItem( tr( "&Hex Log..." ), this, SLOT( fileSaveHex() ) ); |
112 | 112 | ||
113 | QPopupMenu* fileLoad = new QPopupMenu( mb ); | 113 | QPopupMenu* fileLoad = new QPopupMenu( mb ); |
114 | fileLoad->insertItem( tr( "&Session..." ), this, SLOT( fileLoadSession() ) ); | 114 | fileLoad->insertItem( tr( "&Session..." ), this, SLOT( fileLoadSession() ) ); |
115 | //fileLoad->insertItem( "&Log", this, SLOT( fileLoadLog() ) ); | 115 | //fileLoad->insertItem( "&Log", this, SLOT( fileLoadLog() ) ); |
116 | 116 | ||
117 | QPopupMenu* file = new QPopupMenu( mb ); | 117 | QPopupMenu* file = new QPopupMenu( mb ); |
118 | file->insertItem( tr( "&New" ), this, SLOT( fileNew() ) ); | 118 | file->insertItem( tr( "&New" ), this, SLOT( fileNew() ) ); |
119 | id = file->insertItem( tr( "&Load" ), fileLoad ); | 119 | id = file->insertItem( tr( "&Load" ), fileLoad ); |
120 | file->insertItem( tr( "&Save" ), fileSave ); | 120 | file->insertItem( tr( "&Save" ), fileSave ); |
121 | file->insertSeparator(); | 121 | file->insertSeparator(); |
122 | uploadID = file->insertItem( tr( "&Upload Session" ), this, SLOT( uploadSession() ) ); | 122 | uploadID = file->insertItem( tr( "&Upload Session" ), this, SLOT( uploadSession() ) ); |
123 | file->insertSeparator(); | 123 | file->insertSeparator(); |
124 | file->insertItem( tr( "&Exit" ), qApp, SLOT( quit() ) ); | 124 | file->insertItem( tr( "&Exit" ), qApp, SLOT( quit() ) ); |
125 | 125 | ||
126 | QPopupMenu* view = new QPopupMenu( mb ); | 126 | QPopupMenu* view = new QPopupMenu( mb ); |
127 | view->insertItem( tr( "&Configure..." ) ); | 127 | view->insertItem( tr( "&Configure..." ) ); |
128 | 128 | ||
129 | QPopupMenu* sniffer = new QPopupMenu( mb ); | 129 | QPopupMenu* sniffer = new QPopupMenu( mb ); |
130 | sniffer->insertItem( tr( "&Configure..." ), this, SLOT( showConfigure() ) ); | 130 | sniffer->insertItem( tr( "&Configure..." ), this, SLOT( showConfigure() ) ); |
131 | sniffer->insertSeparator(); | 131 | sniffer->insertSeparator(); |
132 | startID = sniffer->insertItem( tr( "&Start" ), mw, SLOT( startClicked() ) ); | 132 | startID = sniffer->insertItem( tr( "&Start" ), mw, SLOT( startClicked() ) ); |
133 | sniffer->setItemEnabled( startID, false ); | 133 | sniffer->setItemEnabled( startID, false ); |
134 | stopID = sniffer->insertItem( tr( "Sto&p" ), mw, SLOT( stopClicked() ) ); | 134 | stopID = sniffer->insertItem( tr( "Sto&p" ), mw, SLOT( stopClicked() ) ); |
135 | sniffer->setItemEnabled( stopID, false ); | 135 | sniffer->setItemEnabled( stopID, false ); |
136 | 136 | ||
137 | QPopupMenu* demo = new QPopupMenu( mb ); | 137 | QPopupMenu* demo = new QPopupMenu( mb ); |
138 | demo->insertItem( tr( "&Add something" ), this, SLOT( demoAddStations() ) ); | 138 | demo->insertItem( tr( "&Add something" ), this, SLOT( demoAddStations() ) ); |
139 | //demo->insertItem( tr( "&Read from GPSd" ), this, SLOT( demoReadFromGps() ) ); | 139 | //demo->insertItem( tr( "&Read from GPSd" ), this, SLOT( demoReadFromGps() ) ); |
140 | 140 | ||
141 | id = mb->insertItem( tr( "&File" ), file ); | 141 | id = mb->insertItem( tr( "&File" ), file ); |
142 | //id = mb->insertItem( tr( "&View" ), view ); | 142 | //id = mb->insertItem( tr( "&View" ), view ); |
143 | //mb->setItemEnabled( id, false ); | 143 | //mb->setItemEnabled( id, false ); |
144 | id = mb->insertItem( tr( "&Sniffer" ), sniffer ); | 144 | id = mb->insertItem( tr( "&Sniffer" ), sniffer ); |
145 | 145 | ||
146 | id = mb->insertItem( tr( "&Demo" ), demo ); | 146 | id = mb->insertItem( tr( "&Demo" ), demo ); |
147 | mb->setItemEnabled( id, true ); | 147 | mb->setItemEnabled( id, true ); |
148 | mb->setItemEnabled( uploadID, false ); | 148 | mb->setItemEnabled( uploadID, false ); |
149 | 149 | ||
150 | #ifdef QWS | 150 | #ifdef QWS |
151 | mb->insertItem( startButton ); | 151 | mb->insertItem( startButton ); |
152 | mb->insertItem( stopButton ); | 152 | mb->insertItem( stopButton ); |
153 | mb->insertItem( uploadButton ); | 153 | mb->insertItem( uploadButton ); |
154 | mb->insertItem( d ); | 154 | mb->insertItem( d ); |
155 | #else // Qt3 changed the insertion order. It's now totally random :( | 155 | #else // Qt3 changed the insertion order. It's now totally random :( |
156 | mb->insertItem( d ); | 156 | mb->insertItem( d ); |
157 | mb->insertItem( uploadButton ); | 157 | mb->insertItem( uploadButton ); |
158 | mb->insertItem( stopButton ); | 158 | mb->insertItem( stopButton ); |
159 | mb->insertItem( startButton ); | 159 | mb->insertItem( startButton ); |
160 | #endif | 160 | #endif |
161 | 161 | ||
162 | updateToolButtonState(); | 162 | updateToolButtonState(); |
163 | 163 | ||
164 | // setup status bar (for now only on X11) | 164 | // setup status bar (for now only on X11) |
165 | 165 | ||
166 | #ifndef QWS | 166 | #ifndef QWS |
167 | statusBar()->message( tr( "Ready." ) ); | 167 | statusBar()->message( tr( "Ready." ) ); |
168 | #endif | 168 | #endif |
169 | 169 | ||
170 | connect( mw, SIGNAL( startedSniffing() ), this, SLOT( changedSniffingState() ) ); | 170 | connect( mw, SIGNAL( startedSniffing() ), this, SLOT( changedSniffingState() ) ); |
171 | connect( mw, SIGNAL( stoppedSniffing() ), this, SLOT( changedSniffingState() ) ); | 171 | connect( mw, SIGNAL( stoppedSniffing() ), this, SLOT( changedSniffingState() ) ); |
172 | }; | 172 | }; |
173 | 173 | ||
174 | 174 | ||
175 | 175 | ||
176 | void WellenreiterMainWindow::showConfigure() | 176 | void WellenreiterMainWindow::showConfigure() |
177 | { | 177 | { |
178 | qDebug( "show configure..." ); | 178 | qDebug( "show configure..." ); |
179 | cw->setCaption( tr( "Configure" ) ); | 179 | cw->setCaption( tr( "Configure" ) ); |
180 | #ifdef QWS | 180 | int result = QPEApplication::execDialog( cw ); |
181 | cw->showMaximized(); | ||
182 | #endif | ||
183 | int result = cw->exec(); | ||
184 | 181 | ||
185 | if ( result ) updateToolButtonState(); | 182 | if ( result ) updateToolButtonState(); |
186 | } | 183 | } |
187 | 184 | ||
188 | 185 | ||
189 | void WellenreiterMainWindow::updateToolButtonState() | 186 | void WellenreiterMainWindow::updateToolButtonState() |
190 | { | 187 | { |
191 | const QString& interface = cw->interfaceName->currentText(); | 188 | const QString& interface = cw->interfaceName->currentText(); |
192 | const int cardtype = cw->driverType(); | 189 | const int cardtype = cw->driverType(); |
193 | 190 | ||
194 | if ( ( interface != "<select>" ) && ( cardtype != 0 ) ) | 191 | if ( ( interface != "<select>" ) && ( cardtype != 0 ) ) |
195 | { | 192 | { |
196 | startButton->setEnabled( true ); | 193 | startButton->setEnabled( true ); |
197 | menuBar()->setItemEnabled( startID, true ); | 194 | menuBar()->setItemEnabled( startID, true ); |
198 | } | 195 | } |
199 | else | 196 | else |
200 | { | 197 | { |
201 | startButton->setEnabled( false ); | 198 | startButton->setEnabled( false ); |
202 | menuBar()->setItemEnabled( startID, false ); | 199 | menuBar()->setItemEnabled( startID, false ); |
203 | } | 200 | } |
204 | } | 201 | } |
205 | 202 | ||
206 | 203 | ||
207 | void WellenreiterMainWindow::changedSniffingState() | 204 | void WellenreiterMainWindow::changedSniffingState() |
208 | { | 205 | { |
209 | startButton->setEnabled( !mw->sniffing ); | 206 | startButton->setEnabled( !mw->sniffing ); |
210 | menuBar()->setItemEnabled( startID, !mw->sniffing ); | 207 | menuBar()->setItemEnabled( startID, !mw->sniffing ); |
211 | stopButton->setEnabled( mw->sniffing ); | 208 | stopButton->setEnabled( mw->sniffing ); |
212 | menuBar()->setItemEnabled( stopID, mw->sniffing ); | 209 | menuBar()->setItemEnabled( stopID, mw->sniffing ); |
213 | 210 | ||
214 | if ( !mw->sniffing ) | 211 | if ( !mw->sniffing ) |
215 | { | 212 | { |
216 | menuBar()->setItemEnabled( uploadID, true ); | 213 | menuBar()->setItemEnabled( uploadID, true ); |
217 | uploadButton->setEnabled( true ); | 214 | uploadButton->setEnabled( true ); |
218 | } | 215 | } |
219 | } | 216 | } |
220 | 217 | ||
221 | 218 | ||
222 | WellenreiterMainWindow::~WellenreiterMainWindow() | 219 | WellenreiterMainWindow::~WellenreiterMainWindow() |
223 | { | 220 | { |
224 | qDebug( "Wellenreiter: bye." ); | 221 | qDebug( "Wellenreiter: bye." ); |
225 | }; | 222 | }; |
226 | 223 | ||
227 | 224 | ||
228 | void WellenreiterMainWindow::demoAddStations() | 225 | void WellenreiterMainWindow::demoAddStations() |
229 | { | 226 | { |
230 | //mw = 0; // test SIGSEGV handling | 227 | //mw = 0; // test SIGSEGV handling |
231 | 228 | ||
232 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 39.8794, -94.0936) ); | 229 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 39.8794, -94.0936) ); |
233 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:30:6D:EF:A6:23"), true, 11, 10, GpsLocation( 0.0, 0.0 ) ); | 230 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:30:6D:EF:A6:23"), true, 11, 10, GpsLocation( 0.0, 0.0 ) ); |
234 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:03:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) ); | 231 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:03:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) ); |
235 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:04:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) ); | 232 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:04:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) ); |
236 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:05:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) ); | 233 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:05:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) ); |
237 | } | 234 | } |
238 | 235 | ||
239 | 236 | ||
240 | void WellenreiterMainWindow::demoReadFromGps() | 237 | void WellenreiterMainWindow::demoReadFromGps() |
241 | { | 238 | { |
242 | WellenreiterConfigWindow* configwindow = WellenreiterConfigWindow::instance(); | 239 | WellenreiterConfigWindow* configwindow = WellenreiterConfigWindow::instance(); |
243 | GPS* gps = new GPS( this ); | 240 | GPS* gps = new GPS( this ); |
244 | qDebug( "Wellenreiter::demoReadFromGps(): url=gps://%s:%d/", (const char*) configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); | 241 | qDebug( "Wellenreiter::demoReadFromGps(): url=gps://%s:%d/", (const char*) configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); |
245 | gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); | 242 | gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); |
246 | GpsLocation loc = gps->position(); | 243 | GpsLocation loc = gps->position(); |
247 | QMessageBox::information( this, "Wellenreiter/Opie", tr( "GPS said:\n%1" ).arg( loc.dmsPosition() ) ); | 244 | QMessageBox::information( this, "Wellenreiter/Opie", tr( "GPS said:\n%1" ).arg( loc.dmsPosition() ) ); |
248 | delete gps; | 245 | delete gps; |
249 | } | 246 | } |
250 | 247 | ||
251 | 248 | ||
252 | QString WellenreiterMainWindow::getFileName( bool save ) | 249 | QString WellenreiterMainWindow::getFileName( bool save ) |
253 | { | 250 | { |
254 | QMap<QString, QStringList> map; | 251 | QMap<QString, QStringList> map; |
255 | map.insert( tr("All"), QStringList() ); | 252 | map.insert( tr("All"), QStringList() ); |
256 | QStringList text; | 253 | QStringList text; |
257 | text << "text/*"; | 254 | text << "text/*"; |
258 | map.insert( tr("Text"), text ); | 255 | map.insert( tr("Text"), text ); |
259 | text << "*"; | 256 | text << "*"; |
260 | map.insert( tr("All"), text ); | 257 | map.insert( tr("All"), text ); |
261 | 258 | ||
262 | QString str; | 259 | QString str; |
263 | if ( save ) | 260 | if ( save ) |
264 | { | 261 | { |
265 | #ifdef QWS | 262 | #ifdef QWS |
266 | str = OFileDialog::getSaveFileName( 2, "/", QString::null, map ); | 263 | str = OFileDialog::getSaveFileName( 2, "/", QString::null, map ); |
267 | #else | 264 | #else |
268 | str = QFileDialog::getSaveFileName(); | 265 | str = QFileDialog::getSaveFileName(); |
269 | #endif | 266 | #endif |
270 | if ( str.isEmpty() /*|| QFileInfo(str).isDir()*/ ) | 267 | if ( str.isEmpty() /*|| QFileInfo(str).isDir()*/ ) |
271 | return ""; | 268 | return ""; |
272 | } | 269 | } |
273 | else | 270 | else |
274 | { | 271 | { |
275 | #ifdef QWS | 272 | #ifdef QWS |
276 | str = OFileDialog::getOpenFileName( 2, "/", QString::null, map ); | 273 | str = OFileDialog::getOpenFileName( 2, "/", QString::null, map ); |
277 | #else | 274 | #else |
278 | str = QFileDialog::getOpenFileName(); | 275 | str = QFileDialog::getOpenFileName(); |
279 | #endif | 276 | #endif |
280 | if ( str.isEmpty() || !QFile(str).exists() || QFileInfo(str).isDir() ) | 277 | if ( str.isEmpty() || !QFile(str).exists() || QFileInfo(str).isDir() ) |
281 | return ""; | 278 | return ""; |
282 | } | 279 | } |
283 | return str; | 280 | return str; |
284 | } | 281 | } |
285 | 282 | ||
286 | 283 | ||
287 | void WellenreiterMainWindow::fileSaveLog() | 284 | void WellenreiterMainWindow::fileSaveLog() |
288 | { | 285 | { |
289 | QString fname = getFileName( true ); | 286 | QString fname = getFileName( true ); |
290 | if ( !fname.isEmpty() ) | 287 | if ( !fname.isEmpty() ) |
291 | { | 288 | { |
292 | QFile f( fname ); | 289 | QFile f( fname ); |
293 | if ( f.open(IO_WriteOnly) ) | 290 | if ( f.open(IO_WriteOnly) ) |
294 | { | 291 | { |
295 | QTextStream t( &f ); | 292 | QTextStream t( &f ); |
296 | t << mw->logWindow()->getLog(); | 293 | t << mw->logWindow()->getLog(); |
297 | f.close(); | 294 | f.close(); |
298 | qDebug( "Saved log to file '%s'", (const char*) fname ); | 295 | qDebug( "Saved log to file '%s'", (const char*) fname ); |
299 | } | 296 | } |
300 | else | 297 | else |
301 | { | 298 | { |
302 | qDebug( "Problem saving log to file '%s'", (const char*) fname ); | 299 | qDebug( "Problem saving log to file '%s'", (const char*) fname ); |
303 | } | 300 | } |
304 | } | 301 | } |
305 | } | 302 | } |
306 | 303 | ||
307 | void WellenreiterMainWindow::fileSaveSession() | 304 | void WellenreiterMainWindow::fileSaveSession() |
308 | { | 305 | { |
309 | QString fname = getFileName( true ); | 306 | QString fname = getFileName( true ); |
310 | if ( !fname.isEmpty() ) | 307 | if ( !fname.isEmpty() ) |
311 | { | 308 | { |
312 | 309 | ||
313 | QFile f( fname ); | 310 | QFile f( fname ); |
314 | if ( f.open(IO_WriteOnly) ) | 311 | if ( f.open(IO_WriteOnly) ) |
315 | { | 312 | { |
316 | QDataStream t( &f ); | 313 | QDataStream t( &f ); |
317 | t << *mw->netView(); | 314 | t << *mw->netView(); |
318 | f.close(); | 315 | f.close(); |
319 | qDebug( "Saved session to file '%s'", (const char*) fname ); | 316 | qDebug( "Saved session to file '%s'", (const char*) fname ); |
320 | } | 317 | } |
321 | else | 318 | else |
322 | { | 319 | { |
323 | qDebug( "Problem saving session to file '%s'", (const char*) fname ); | 320 | qDebug( "Problem saving session to file '%s'", (const char*) fname ); |
324 | } | 321 | } |
325 | } | 322 | } |
326 | } | 323 | } |
327 | 324 | ||
328 | void WellenreiterMainWindow::fileSaveHex() | 325 | void WellenreiterMainWindow::fileSaveHex() |
329 | { | 326 | { |
330 | QString fname = getFileName( true ); | 327 | QString fname = getFileName( true ); |
331 | if ( !fname.isEmpty() ) | 328 | if ( !fname.isEmpty() ) |
332 | { | 329 | { |
333 | QFile f( fname ); | 330 | QFile f( fname ); |
334 | if ( f.open(IO_WriteOnly) ) | 331 | if ( f.open(IO_WriteOnly) ) |
335 | { | 332 | { |
336 | QTextStream t( &f ); | 333 | QTextStream t( &f ); |
337 | t << mw->hexWindow()->getLog(); | 334 | t << mw->hexWindow()->getLog(); |
338 | f.close(); | 335 | f.close(); |
339 | qDebug( "Saved hex log to file '%s'", (const char*) fname ); | 336 | qDebug( "Saved hex log to file '%s'", (const char*) fname ); |
340 | } | 337 | } |
341 | else | 338 | else |
342 | { | 339 | { |
343 | qDebug( "Problem saving hex log to file '%s'", (const char*) fname ); | 340 | qDebug( "Problem saving hex log to file '%s'", (const char*) fname ); |
344 | } | 341 | } |
345 | } | 342 | } |
346 | } | 343 | } |
347 | 344 | ||
348 | void WellenreiterMainWindow::fileLoadSession() | 345 | void WellenreiterMainWindow::fileLoadSession() |
349 | { | 346 | { |
350 | QString fname = getFileName( false ); | 347 | QString fname = getFileName( false ); |
351 | if ( !fname.isEmpty() ) | 348 | if ( !fname.isEmpty() ) |
352 | { | 349 | { |
353 | QFile f( fname ); | 350 | QFile f( fname ); |
354 | if ( f.open(IO_ReadOnly) ) | 351 | if ( f.open(IO_ReadOnly) ) |
355 | { | 352 | { |
356 | QDataStream t( &f ); | 353 | QDataStream t( &f ); |
357 | t >> *mw->netView(); | 354 | t >> *mw->netView(); |
358 | f.close(); | 355 | f.close(); |
359 | qDebug( "Loaded session from file '%s'", (const char*) fname ); | 356 | qDebug( "Loaded session from file '%s'", (const char*) fname ); |
360 | } | 357 | } |
361 | else | 358 | else |
362 | { | 359 | { |
363 | qDebug( "Problem loading session from file '%s'", (const char*) fname ); | 360 | qDebug( "Problem loading session from file '%s'", (const char*) fname ); |
364 | } | 361 | } |
365 | } | 362 | } |
366 | } | 363 | } |
367 | 364 | ||
368 | 365 | ||
369 | void WellenreiterMainWindow::fileNew() | 366 | void WellenreiterMainWindow::fileNew() |
370 | { | 367 | { |
371 | mw->netView()->clear(); | 368 | mw->netView()->clear(); |
372 | mw->logWindow()->clear(); | 369 | mw->logWindow()->clear(); |
373 | mw->hexWindow()->clear(); | 370 | mw->hexWindow()->clear(); |
374 | } | 371 | } |
375 | 372 | ||
376 | 373 | ||
377 | void WellenreiterMainWindow::closeEvent( QCloseEvent* e ) | 374 | void WellenreiterMainWindow::closeEvent( QCloseEvent* e ) |
378 | { | 375 | { |
379 | if ( mw->isDaemonRunning() ) | 376 | if ( mw->isDaemonRunning() ) |
380 | { | 377 | { |
381 | QMessageBox::warning( this, "Wellenreiter/Opie", | 378 | QMessageBox::warning( this, "Wellenreiter/Opie", |
382 | tr( "Sniffing in progress!\nPlease stop sniffing before closing." ) ); | 379 | tr( "Sniffing in progress!\nPlease stop sniffing before closing." ) ); |
383 | e->ignore(); | 380 | e->ignore(); |
384 | } | 381 | } |
385 | else | 382 | else |
386 | { | 383 | { |
387 | QMainWindow::closeEvent( e ); | 384 | QMainWindow::closeEvent( e ); |
388 | } | 385 | } |
389 | } | 386 | } |
390 | 387 | ||
391 | static const char* CAP_hostname = "www.vanille.de"; | 388 | static const char* CAP_hostname = "www.vanille.de"; |
392 | 389 | ||
393 | #include <netdb.h> | 390 | #include <netdb.h> |
394 | #include <unistd.h> | 391 | #include <unistd.h> |
395 | #include <sys/types.h> | 392 | #include <sys/types.h> |
396 | #include <sys/socket.h> | 393 | #include <sys/socket.h> |
397 | 394 | ||
398 | void WellenreiterMainWindow::uploadSession() | 395 | void WellenreiterMainWindow::uploadSession() |
399 | { | 396 | { |
400 | QLineEdit* from; | 397 | QLineEdit* from; |
401 | QLineEdit* location; | 398 | QLineEdit* location; |
402 | QLineEdit* comments; | 399 | QLineEdit* comments; |
403 | QPushButton* accept; | 400 | QPushButton* accept; |
404 | QPushButton* reject; | 401 | QPushButton* reject; |
405 | 402 | ||
406 | QDialog* d = new QDialog( 0, "session upload", true ); | 403 | QDialog* d = new QDialog( 0, "session upload", true ); |
407 | d->setCaption( tr( "Upload Session" ) ); | 404 | d->setCaption( tr( "Upload Session" ) ); |
408 | QGridLayout* g = new QGridLayout( d, 4, 2, 3 ); | 405 | QGridLayout* g = new QGridLayout( d, 4, 2, 3 ); |
409 | g->addWidget( new QLabel( tr( "From: " ), d ), 0, 0 ); | 406 | g->addWidget( new QLabel( tr( "From: " ), d ), 0, 0 ); |
410 | g->addWidget( from = new QLineEdit( d ), 0, 1 ); | 407 | g->addWidget( from = new QLineEdit( d ), 0, 1 ); |
411 | g->addWidget( new QLabel( tr( "Location: " ), d ), 1, 0 ); | 408 | g->addWidget( new QLabel( tr( "Location: " ), d ), 1, 0 ); |
412 | g->addWidget( location = new QLineEdit( d ), 1, 1 ); | 409 | g->addWidget( location = new QLineEdit( d ), 1, 1 ); |
413 | g->addWidget( new QLabel( tr( "Comments: " ), d ), 2, 0 ); | 410 | g->addWidget( new QLabel( tr( "Comments: " ), d ), 2, 0 ); |
414 | g->addWidget( comments = new QLineEdit( d ), 2, 1 ); | 411 | g->addWidget( comments = new QLineEdit( d ), 2, 1 ); |
415 | g->addWidget( accept = new QPushButton( tr( "&Ok" ), d ), 3, 0 ); | 412 | g->addWidget( accept = new QPushButton( tr( "&Ok" ), d ), 3, 0 ); |
416 | g->addWidget( reject = new QPushButton( tr( "&Cancel" ), d ), 3, 1 ); | 413 | g->addWidget( reject = new QPushButton( tr( "&Cancel" ), d ), 3, 1 ); |
417 | accept->setDefault( true ); | 414 | accept->setDefault( true ); |
418 | accept->setAutoDefault( true ); | 415 | accept->setAutoDefault( true ); |
419 | from->setText( "WL II User" ); | 416 | from->setText( "WL II User" ); |
420 | location->setText( "WL II Location" ); | 417 | location->setText( "WL II Location" ); |
421 | comments->setText( "No Comments." ); | 418 | comments->setText( "No Comments." ); |
422 | connect( accept, SIGNAL( clicked() ), d, SLOT( accept() ) ); | 419 | connect( accept, SIGNAL( clicked() ), d, SLOT( accept() ) ); |
423 | connect( reject, SIGNAL( clicked() ), d, SLOT( reject() ) ); | 420 | connect( reject, SIGNAL( clicked() ), d, SLOT( reject() ) ); |
424 | int result = d->exec(); | 421 | int result = d->exec(); |
425 | 422 | ||
426 | if ( !result ) | 423 | if ( !result ) |
427 | { | 424 | { |
428 | qDebug( "Session upload cancelled :(" ); | 425 | qDebug( "Session upload cancelled :(" ); |
429 | return; | 426 | return; |
430 | } | 427 | } |
431 | 428 | ||
432 | qDebug( "Starting upload..." ); | 429 | qDebug( "Starting upload..." ); |
433 | 430 | ||
434 | struct sockaddr_in raddr; | 431 | struct sockaddr_in raddr; |
435 | struct hostent *rhost_info; | 432 | struct hostent *rhost_info; |
436 | int sock = -1; | 433 | int sock = -1; |
437 | bool ok = false; | 434 | bool ok = false; |
438 | 435 | ||
439 | rhost_info = (struct hostent *) ::gethostbyname( CAP_hostname ); | 436 | rhost_info = (struct hostent *) ::gethostbyname( CAP_hostname ); |
440 | if ( rhost_info ) | 437 | if ( rhost_info ) |
441 | { | 438 | { |
442 | 439 | ||
443 | 440 | ||
444 | if ( !QFile::exists( mw->captureFileName() ) ) | 441 | if ( !QFile::exists( mw->captureFileName() ) ) |
445 | { | 442 | { |
446 | QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Logfile '%1' doesn't exist</p>").arg( mw->captureFileName() ) ); | 443 | QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Logfile '%1' doesn't exist</p>").arg( mw->captureFileName() ) ); |
447 | return; | 444 | return; |
448 | } | 445 | } |
449 | 446 | ||
450 | QFile f( mw->captureFileName() ); | 447 | QFile f( mw->captureFileName() ); |
451 | if ( !f.open( IO_ReadOnly ) ) | 448 | if ( !f.open( IO_ReadOnly ) ) |
452 | { | 449 | { |
453 | QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Can't open Logfile '%1'</p>").arg( mw->captureFileName() ) ); | 450 | QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Can't open Logfile '%1'</p>").arg( mw->captureFileName() ) ); |
454 | return; | 451 | return; |
455 | } | 452 | } |
456 | 453 | ||
457 | int content_length = f.size(); | 454 | int content_length = f.size(); |
458 | 455 | ||
459 | ::memset( &raddr, 0, sizeof (struct sockaddr_in) ); | 456 | ::memset( &raddr, 0, sizeof (struct sockaddr_in) ); |
460 | ::memcpy( &raddr. sin_addr, rhost_info-> h_addr, rhost_info-> h_length ); | 457 | ::memcpy( &raddr. sin_addr, rhost_info-> h_addr, rhost_info-> h_length ); |
461 | raddr.sin_family = rhost_info-> h_addrtype; | 458 | raddr.sin_family = rhost_info-> h_addrtype; |
462 | raddr.sin_port = htons ( 80 ); | 459 | raddr.sin_port = htons ( 80 ); |
463 | 460 | ||
464 | sock = ::socket( AF_INET, SOCK_STREAM, 0 ); | 461 | sock = ::socket( AF_INET, SOCK_STREAM, 0 ); |
465 | 462 | ||
466 | if ( sock >= 0 ) | 463 | if ( sock >= 0 ) |
467 | { | 464 | { |
468 | if ( ::connect ( sock, (struct sockaddr *) & raddr, sizeof (struct sockaddr)) >= 0 ) | 465 | if ( ::connect ( sock, (struct sockaddr *) & raddr, sizeof (struct sockaddr)) >= 0 ) |
469 | { | 466 | { |
470 | QString header; | 467 | QString header; |
471 | QString content; | 468 | QString content; |
472 | QString preambel; | 469 | QString preambel; |
473 | 470 | ||
474 | header = "" | 471 | header = "" |
475 | "POST /projects/capturedump.spy HTTP/1.1\r\n" | 472 | "POST /projects/capturedump.spy HTTP/1.1\r\n" |
476 | "Host: www.vanille.de\r\n" | 473 | "Host: www.vanille.de\r\n" |
477 | "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031010 Galeon/1.3.10\r\n" | 474 | "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031010 Galeon/1.3.10\r\n" |
478 | "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1\r\n" | 475 | "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1\r\n" |
479 | "Accept-Language: en\r\n" | 476 | "Accept-Language: en\r\n" |
480 | "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n" | 477 | "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n" |
481 | "Accept-Charset: us-ascii,utf-8;q=0.7,*;q=0.7\r\n" | 478 | "Accept-Charset: us-ascii,utf-8;q=0.7,*;q=0.7\r\n" |
482 | "Keep-Alive: 300\r\n" | 479 | "Keep-Alive: 300\r\n" |
483 | "Connection: keep-alive\r\n" | 480 | "Connection: keep-alive\r\n" |
484 | "Referer: http://www.vanille.de/projects/capturedump.spy\r\n" | 481 | "Referer: http://www.vanille.de/projects/capturedump.spy\r\n" |
485 | "Content-Type: multipart/form-data; boundary=---------------------------97267758015830030481215568065\r\n" | 482 | "Content-Type: multipart/form-data; boundary=---------------------------97267758015830030481215568065\r\n" |
486 | "Content-Length: %1\r\n" | 483 | "Content-Length: %1\r\n" |
487 | "\r\n"; | 484 | "\r\n"; |
488 | 485 | ||
489 | content = "" | 486 | content = "" |
490 | "-----------------------------97267758015830030481215568065\r\n" | 487 | "-----------------------------97267758015830030481215568065\r\n" |
491 | "Content-Disposition: form-data; name=\"Name\"\r\n" | 488 | "Content-Disposition: form-data; name=\"Name\"\r\n" |
492 | "\r\n" | 489 | "\r\n" |
493 | "%1\r\n" | 490 | "%1\r\n" |
494 | "-----------------------------97267758015830030481215568065\r\n" | 491 | "-----------------------------97267758015830030481215568065\r\n" |
495 | "Content-Disposition: form-data; name=\"Location\"\r\n" | 492 | "Content-Disposition: form-data; name=\"Location\"\r\n" |
496 | "\r\n" | 493 | "\r\n" |
497 | "%2\r\n" | 494 | "%2\r\n" |
498 | "-----------------------------97267758015830030481215568065\r\n" | 495 | "-----------------------------97267758015830030481215568065\r\n" |
499 | "Content-Disposition: form-data; name=\"Comments\"\r\n" | 496 | "Content-Disposition: form-data; name=\"Comments\"\r\n" |
500 | "\r\n" | 497 | "\r\n" |
501 | "%3\r\n" | 498 | "%3\r\n" |
502 | "-----------------------------97267758015830030481215568065\r\n" | 499 | "-----------------------------97267758015830030481215568065\r\n" |
503 | "Content-Disposition: form-data; name=\"upfile\"; filename=\"%4\"\r\n" | 500 | "Content-Disposition: form-data; name=\"upfile\"; filename=\"%4\"\r\n" |
504 | "Content-Type: application/octet-stream\r\n" | 501 | "Content-Type: application/octet-stream\r\n" |
505 | "\r\n"; | 502 | "\r\n"; |
506 | 503 | ||
507 | preambel = "" | 504 | preambel = "" |
508 | "\r\n-----------------------------97267758015830030481215568065--\r\n"; | 505 | "\r\n-----------------------------97267758015830030481215568065--\r\n"; |
509 | 506 | ||
510 | content = content.arg( from->text().isEmpty() ? QString( "Anonymous Wellenreiter II User" ) : from->text() ); | 507 | content = content.arg( from->text().isEmpty() ? QString( "Anonymous Wellenreiter II User" ) : from->text() ); |
511 | content = content.arg( location->text().isEmpty() ? QString( "Anonymous Wellenreiter II Location" ) : location->text() ); | 508 | content = content.arg( location->text().isEmpty() ? QString( "Anonymous Wellenreiter II Location" ) : location->text() ); |
512 | content = content.arg( comments->text().isEmpty() ? QString( "Anonymous Wellenreiter II Comments" ) : comments->text() ); | 509 | content = content.arg( comments->text().isEmpty() ? QString( "Anonymous Wellenreiter II Comments" ) : comments->text() ); |
513 | content = content.arg( mw->captureFileName() ); | 510 | content = content.arg( mw->captureFileName() ); |
514 | 511 | ||
515 | header = header.arg( QString::number( content.length() + f.size() + preambel.length() ) ); | 512 | header = header.arg( QString::number( content.length() + f.size() + preambel.length() ) ); |
516 | 513 | ||
517 | // write header | 514 | // write header |
518 | 515 | ||
519 | const char* ascii = header.latin1(); | 516 | const char* ascii = header.latin1(); |
520 | uint ascii_len = ::strlen( ascii ); | 517 | uint ascii_len = ::strlen( ascii ); |
521 | ::write ( sock, ascii, ascii_len ); | 518 | ::write ( sock, ascii, ascii_len ); |
522 | 519 | ||
523 | // write fixed content | 520 | // write fixed content |
524 | 521 | ||
525 | ascii = content.latin1(); | 522 | ascii = content.latin1(); |
526 | ascii_len = ::strlen( ascii ); | 523 | ascii_len = ::strlen( ascii ); |
527 | ::write ( sock, ascii, ascii_len ); | 524 | ::write ( sock, ascii, ascii_len ); |
528 | 525 | ||
529 | // write variable content | 526 | // write variable content |
530 | 527 | ||
531 | char ch; | 528 | char ch; |
532 | while ( !f.atEnd() ) | 529 | while ( !f.atEnd() ) |
533 | { | 530 | { |
534 | f.readBlock( &ch, 1 ); | 531 | f.readBlock( &ch, 1 ); |
535 | ::write ( sock, &ch, 1 ); | 532 | ::write ( sock, &ch, 1 ); |
536 | } | 533 | } |
537 | 534 | ||
538 | // write preambel | 535 | // write preambel |
539 | 536 | ||
540 | ascii = preambel.latin1(); | 537 | ascii = preambel.latin1(); |
541 | ascii_len = ::strlen( ascii ); | 538 | ascii_len = ::strlen( ascii ); |
542 | ::write ( sock, ascii, ascii_len ); | 539 | ::write ( sock, ascii, ascii_len ); |
543 | 540 | ||
544 | // done! | 541 | // done! |
545 | 542 | ||
546 | ok = true; | 543 | ok = true; |
547 | } | 544 | } |
548 | } | 545 | } |
549 | ::close ( sock ); | 546 | ::close ( sock ); |
550 | } | 547 | } |
551 | if ( ok ) | 548 | if ( ok ) |
552 | QMessageBox::information( 0, tr( "Success" ), | 549 | QMessageBox::information( 0, tr( "Success" ), |
553 | QString ( "<p>%1</p>" ).arg( tr( "Capture Dump was uploaded to %1" ) ).arg( CAP_hostname ) ); | 550 | QString ( "<p>%1</p>" ).arg( tr( "Capture Dump was uploaded to %1" ) ).arg( CAP_hostname ) ); |
554 | else | 551 | else |
555 | QMessageBox::warning( 0, tr( "Error" ), | 552 | QMessageBox::warning( 0, tr( "Error" ), |
556 | QString ( "<p>%1</p>" ).arg ( tr( "Connection to %1 failed" ) ).arg( CAP_hostname ) ); | 553 | QString ( "<p>%1</p>" ).arg ( tr( "Connection to %1 failed" ) ).arg( CAP_hostname ) ); |
557 | } | 554 | } |
558 | 555 | ||