author | mickeyl <mickeyl> | 2004-04-09 15:00:06 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-04-09 15:00:06 (UTC) |
commit | fb2f09533c7476a266a877c351007c2706b2da0d (patch) (unidiff) | |
tree | 9742d4cb8fd07fd5530c3c29b5f049dcecd46ef4 | |
parent | 39547839995c9f72ca9216ba5c2127246428ece8 (diff) | |
download | opie-fb2f09533c7476a266a877c351007c2706b2da0d.zip opie-fb2f09533c7476a266a877c351007c2706b2da0d.tar.gz opie-fb2f09533c7476a266a877c351007c2706b2da0d.tar.bz2 |
- eliminate cylic dependency
- complete using opie debugging framework
- sanitize #include order
21 files changed, 96 insertions, 55 deletions
diff --git a/noncore/settings/networksettings/interfaces/config.in b/noncore/settings/networksettings/interfaces/config.in index d84cd24..2175800 100644 --- a/noncore/settings/networksettings/interfaces/config.in +++ b/noncore/settings/networksettings/interfaces/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config INTERFACES | 1 | config INTERFACES |
2 | boolean | 2 | boolean "Build interfaces for networksettings" |
3 | default "y" if NETWORKSETUP | 3 | default "y" |
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE | 4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE |
diff --git a/noncore/settings/networksettings/networksettings.pro b/noncore/settings/networksettings/networksettings.pro index 55d2291..9ad9be4 100644 --- a/noncore/settings/networksettings/networksettings.pro +++ b/noncore/settings/networksettings/networksettings.pro | |||
@@ -1,12 +1,11 @@ | |||
1 | CONFIG = qt warn_on quick-app | 1 | CONFIG = qt warn_on quick-app |
2 | HEADERS = mainwindowimp.h addconnectionimp.h defaultmodule.h module.h | 2 | HEADERS = mainwindowimp.h addconnectionimp.h defaultmodule.h module.h |
3 | SOURCES = main.cpp mainwindowimp.cpp addconnectionimp.cpp | 3 | SOURCES = main.cpp mainwindowimp.cpp addconnectionimp.cpp |
4 | INCLUDEPATH += $(OPIEDIR)/include interfaces/ . | 4 | INCLUDEPATH += $(OPIEDIR)/include interfaces/ . |
5 | DEPENDPATH += $(OPIEDIR)/include interfaces/ wlan/ ppp/ | 5 | DEPENDPATH += $(OPIEDIR)/include interfaces/ wlan/ ppp/ |
6 | LIBS += -lqpe -L$(OPIEDIR)/plugins/networksettings -Linterfaces/ -linterfaces -lopiecore2 -lopieui2 | 6 | LIBS += -lqpe -L$(OPIEDIR)/plugins/networksettings -Linterfaces/ -linterfaces -lopiecore2 -lopieui2 |
7 | INTERFACES = mainwindow.ui addconnection.ui | 7 | INTERFACES = mainwindow.ui addconnection.ui |
8 | TARGET = networksettings | 8 | TARGET = networksettings |
9 | 9 | ||
10 | 10 | ||
11 | |||
12 | include ( $(OPIEDIR)/include.pro ) | 11 | include ( $(OPIEDIR)/include.pro ) |
diff --git a/noncore/settings/networksettings/ppp/accounts.cpp b/noncore/settings/networksettings/ppp/accounts.cpp index aedc0b9..f05e7ac 100644 --- a/noncore/settings/networksettings/ppp/accounts.cpp +++ b/noncore/settings/networksettings/ppp/accounts.cpp | |||
@@ -1,349 +1,351 @@ | |||
1 | /* | 1 | /* |
2 | * kPPP: A pppd front end for the KDE project | 2 | * kPPP: A pppd front end for the KDE project |
3 | * | 3 | * |
4 | * $Id$ | 4 | * $Id$ |
5 | * | 5 | * |
6 | * Copyright (C) 1997 Bernd Johannes Wuebben | 6 | * Copyright (C) 1997 Bernd Johannes Wuebben |
7 | * wuebben@math.cornell.edu | 7 | * wuebben@math.cornell.edu |
8 | * | 8 | * |
9 | * based on EzPPP: | 9 | * based on EzPPP: |
10 | * Copyright (C) 1997 Jay Painter | 10 | * Copyright (C) 1997 Jay Painter |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Library General Public | 13 | * modify it under the terms of the GNU Library General Public |
14 | * License as published by the Free Software Foundation; either | 14 | * License as published by the Free Software Foundation; either |
15 | * version 2 of the License, or (at your option) any later version. | 15 | * version 2 of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This program is distributed in the hope that it will be useful, | 17 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Library General Public License for more details. | 20 | * Library General Public License for more details. |
21 | * | 21 | * |
22 | * You should have received a copy of the GNU Library General Public | 22 | * You should have received a copy of the GNU Library General Public |
23 | * License along with this program; if not, write to the Free | 23 | * License along with this program; if not, write to the Free |
24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include "accounts.h" | 27 | #include "accounts.h" |
28 | #include "authwidget.h" | 28 | #include "authwidget.h" |
29 | #include "pppdata.h" | 29 | #include "pppdata.h" |
30 | #include "edit.h" | 30 | #include "edit.h" |
31 | 31 | ||
32 | /* OPIE */ | 32 | /* OPIE */ |
33 | #include <opie2/odebug.h> | ||
33 | #include <qpe/qpeapplication.h> | 34 | #include <qpe/qpeapplication.h> |
35 | using namespace Opie::Core; | ||
34 | 36 | ||
35 | /* QT */ | 37 | /* QT */ |
36 | #include <qdir.h> | 38 | #include <qdir.h> |
37 | #include <qlayout.h> | 39 | #include <qlayout.h> |
38 | #include <qtabwidget.h> | 40 | #include <qtabwidget.h> |
39 | #include <qtabdialog.h> | 41 | #include <qtabdialog.h> |
40 | #include <qwhatsthis.h> | 42 | #include <qwhatsthis.h> |
41 | #include <qmessagebox.h> | 43 | #include <qmessagebox.h> |
42 | #include <qapplication.h> | 44 | #include <qapplication.h> |
43 | #include <qbuttongroup.h> | 45 | #include <qbuttongroup.h> |
44 | #include <qmessagebox.h> | 46 | #include <qmessagebox.h> |
45 | #include <qvgroupbox.h> | 47 | #include <qvgroupbox.h> |
46 | 48 | ||
47 | /* STD */ | 49 | /* STD */ |
48 | #include <stdlib.h> | 50 | #include <stdlib.h> |
49 | 51 | ||
50 | void parseargs(char* buf, char** args); | 52 | void parseargs(char* buf, char** args); |
51 | 53 | ||
52 | 54 | ||
53 | AccountWidget::AccountWidget( PPPData *pd, QWidget *parent, const char *name, WFlags f ) | 55 | AccountWidget::AccountWidget( PPPData *pd, QWidget *parent, const char *name, WFlags f ) |
54 | : ChooserWidget( pd, parent, name, f ) | 56 | : ChooserWidget( pd, parent, name, f ) |
55 | { | 57 | { |
56 | 58 | ||
57 | QWhatsThis::add(edit_b, tr("Allows you to modify the selected account")); | 59 | QWhatsThis::add(edit_b, tr("Allows you to modify the selected account")); |
58 | QWhatsThis::add(new_b, tr("Create a new dialup connection\n" | 60 | QWhatsThis::add(new_b, tr("Create a new dialup connection\n" |
59 | "to the Internet")); | 61 | "to the Internet")); |
60 | QWhatsThis::add(copy_b, | 62 | QWhatsThis::add(copy_b, |
61 | tr("Makes a copy of the selected account. All\n" | 63 | tr("Makes a copy of the selected account. All\n" |
62 | "settings of the selected account are copied\n" | 64 | "settings of the selected account are copied\n" |
63 | "to a new account, that you can modify to fit your\n" | 65 | "to a new account, that you can modify to fit your\n" |
64 | "needs")); | 66 | "needs")); |
65 | QWhatsThis::add(delete_b, | 67 | QWhatsThis::add(delete_b, |
66 | tr("<p>Deletes the selected account\n\n" | 68 | tr("<p>Deletes the selected account\n\n" |
67 | "<font color=\"red\"><b>Use with care!</b></font>")); | 69 | "<font color=\"red\"><b>Use with care!</b></font>")); |
68 | 70 | ||
69 | 71 | ||
70 | 72 | ||
71 | copy_b->setEnabled( false ); //FIXME | 73 | copy_b->setEnabled( false ); //FIXME |
72 | // delete_b->setEnabled( false ); //FIXME | 74 | // delete_b->setEnabled( false ); //FIXME |
73 | 75 | ||
74 | listListbox->insertStringList(_pppdata->getAccountList()); | 76 | listListbox->insertStringList(_pppdata->getAccountList()); |
75 | 77 | ||
76 | for (uint i = 0; i < listListbox->count(); i++) | 78 | for (uint i = 0; i < listListbox->count(); i++) |
77 | { | 79 | { |
78 | if ( listListbox->text(i) == _pppdata->accname() ) | 80 | if ( listListbox->text(i) == _pppdata->accname() ) |
79 | listListbox->setCurrentItem( i ); | 81 | listListbox->setCurrentItem( i ); |
80 | } | 82 | } |
81 | } | 83 | } |
82 | 84 | ||
83 | 85 | ||
84 | 86 | ||
85 | void AccountWidget::slotListBoxSelect(int idx) | 87 | void AccountWidget::slotListBoxSelect(int idx) |
86 | { | 88 | { |
87 | bool ok = _pppdata->setAccount( listListbox->text(idx) ); | 89 | bool ok = _pppdata->setAccount( listListbox->text(idx) ); |
88 | ok = (bool)(idx != -1); | 90 | ok = (bool)(idx != -1); |
89 | delete_b->setEnabled(ok); | 91 | delete_b->setEnabled(ok); |
90 | edit_b->setEnabled(ok); | 92 | edit_b->setEnabled(ok); |
91 | //FIXME copy_b->setEnabled(ok); | 93 | //FIXME copy_b->setEnabled(ok); |
92 | } | 94 | } |
93 | 95 | ||
94 | void AccountWidget::edit() | 96 | void AccountWidget::edit() |
95 | { | 97 | { |
96 | _pppdata->setAccount(listListbox->text(listListbox->currentItem())); | 98 | _pppdata->setAccount(listListbox->text(listListbox->currentItem())); |
97 | 99 | ||
98 | int result = doTab(); | 100 | int result = doTab(); |
99 | 101 | ||
100 | if(result == QDialog::Accepted) | 102 | if(result == QDialog::Accepted) |
101 | { | 103 | { |
102 | listListbox->changeItem(_pppdata->accname(),listListbox->currentItem()); | 104 | listListbox->changeItem(_pppdata->accname(),listListbox->currentItem()); |
103 | // emit resetaccounts(); | 105 | // emit resetaccounts(); |
104 | _pppdata->save(); | 106 | _pppdata->save(); |
105 | } | 107 | } |
106 | } | 108 | } |
107 | 109 | ||
108 | 110 | ||
109 | void AccountWidget::create() | 111 | void AccountWidget::create() |
110 | { | 112 | { |
111 | 113 | ||
112 | // if(listListbox->count() == MAX_ACCOUNTS) { | 114 | // if(listListbox->count() == MAX_ACCOUNTS) { |
113 | // QMessageBox::information(this, "sorry", | 115 | // QMessageBox::information(this, "sorry", |
114 | // tr("Maximum number of accounts reached.")); | 116 | // tr("Maximum number of accounts reached.")); |
115 | // return; | 117 | // return; |
116 | // } | 118 | // } |
117 | 119 | ||
118 | int result; | 120 | int result; |
119 | if (_pppdata->newaccount() == -1) | 121 | if (_pppdata->newaccount() == -1) |
120 | { | 122 | { |
121 | odebug << "_pppdata->newaccount() == -1" << oendl; | 123 | odebug << "_pppdata->newaccount() == -1" << oendl; |
122 | return; | 124 | return; |
123 | } | 125 | } |
124 | result = doTab(); | 126 | result = doTab(); |
125 | 127 | ||
126 | if(result == QDialog::Accepted) | 128 | if(result == QDialog::Accepted) |
127 | { | 129 | { |
128 | listListbox->insertItem(_pppdata->accname()); | 130 | listListbox->insertItem(_pppdata->accname()); |
129 | listListbox->setSelected(listListbox->findItem(_pppdata->accname()),true); | 131 | listListbox->setSelected(listListbox->findItem(_pppdata->accname()),true); |
130 | 132 | ||
131 | _pppdata->save(); | 133 | _pppdata->save(); |
132 | } | 134 | } |
133 | else | 135 | else |
134 | _pppdata->deleteAccount(); | 136 | _pppdata->deleteAccount(); |
135 | } | 137 | } |
136 | 138 | ||
137 | 139 | ||
138 | void AccountWidget::copy() | 140 | void AccountWidget::copy() |
139 | { | 141 | { |
140 | // if(listListbox->count() == MAX_ACCOUNTS) { | 142 | // if(listListbox->count() == MAX_ACCOUNTS) { |
141 | // QMessageBox::information(this, "sorry", tr("Maximum number of accounts reached.")); | 143 | // QMessageBox::information(this, "sorry", tr("Maximum number of accounts reached.")); |
142 | // return; | 144 | // return; |
143 | // } | 145 | // } |
144 | 146 | ||
145 | if(listListbox->currentItem()<0) | 147 | if(listListbox->currentItem()<0) |
146 | { | 148 | { |
147 | QMessageBox::information(this, "sorry", tr("No account selected.")); | 149 | QMessageBox::information(this, "sorry", tr("No account selected.")); |
148 | return; | 150 | return; |
149 | } | 151 | } |
150 | 152 | ||
151 | _pppdata->copyaccount(listListbox->currentText()); | 153 | _pppdata->copyaccount(listListbox->currentText()); |
152 | 154 | ||
153 | listListbox->insertItem(_pppdata->accname()); | 155 | listListbox->insertItem(_pppdata->accname()); |
154 | // emit resetaccounts(); | 156 | // emit resetaccounts(); |
155 | _pppdata->save(); | 157 | _pppdata->save(); |
156 | } | 158 | } |
157 | 159 | ||
158 | 160 | ||
159 | void AccountWidget::remove() | 161 | void AccountWidget::remove() |
160 | { | 162 | { |
161 | 163 | ||
162 | QString s = tr("Are you sure you want to delete\nthe account \"%1\"?") | 164 | QString s = tr("Are you sure you want to delete\nthe account \"%1\"?") |
163 | .arg(listListbox->text(listListbox->currentItem())); | 165 | .arg(listListbox->text(listListbox->currentItem())); |
164 | 166 | ||
165 | if(QMessageBox::warning(this,tr("Confirm"),s, | 167 | if(QMessageBox::warning(this,tr("Confirm"),s, |
166 | QMessageBox::Yes,QMessageBox::No | 168 | QMessageBox::Yes,QMessageBox::No |
167 | ) != QMessageBox::Yes) | 169 | ) != QMessageBox::Yes) |
168 | return; | 170 | return; |
169 | 171 | ||
170 | if(_pppdata->deleteAccount(listListbox->text(listListbox->currentItem()))) | 172 | if(_pppdata->deleteAccount(listListbox->text(listListbox->currentItem()))) |
171 | listListbox->removeItem(listListbox->currentItem()); | 173 | listListbox->removeItem(listListbox->currentItem()); |
172 | 174 | ||
173 | 175 | ||
174 | // emit resetaccounts(); | 176 | // emit resetaccounts(); |
175 | // _pppdata->save(); | 177 | // _pppdata->save(); |
176 | 178 | ||
177 | 179 | ||
178 | slotListBoxSelect(listListbox->currentItem()); | 180 | slotListBoxSelect(listListbox->currentItem()); |
179 | 181 | ||
180 | } | 182 | } |
181 | 183 | ||
182 | 184 | ||
183 | int AccountWidget::doTab() | 185 | int AccountWidget::doTab() |
184 | { | 186 | { |
185 | QDialog *dlg = new QDialog( 0, "newAccount", true, Qt::WStyle_ContextHelp ); | 187 | QDialog *dlg = new QDialog( 0, "newAccount", true, Qt::WStyle_ContextHelp ); |
186 | QVBoxLayout *layout = new QVBoxLayout( dlg ); | 188 | QVBoxLayout *layout = new QVBoxLayout( dlg ); |
187 | layout->setSpacing( 0 ); | 189 | layout->setSpacing( 0 ); |
188 | layout->setMargin( 1 ); | 190 | layout->setMargin( 1 ); |
189 | 191 | ||
190 | QTabWidget *tabWindow = new QTabWidget( dlg, "tabWindow" ); | 192 | QTabWidget *tabWindow = new QTabWidget( dlg, "tabWindow" ); |
191 | layout->addWidget( tabWindow ); | 193 | layout->addWidget( tabWindow ); |
192 | 194 | ||
193 | bool isnewaccount; | 195 | bool isnewaccount; |
194 | 196 | ||
195 | if(_pppdata->accname().isEmpty()) | 197 | if(_pppdata->accname().isEmpty()) |
196 | { | 198 | { |
197 | dlg->setCaption(tr("New Account")); | 199 | dlg->setCaption(tr("New Account")); |
198 | isnewaccount = true; | 200 | isnewaccount = true; |
199 | } | 201 | } |
200 | else | 202 | else |
201 | { | 203 | { |
202 | QString tit = tr("Edit Account: "); | 204 | QString tit = tr("Edit Account: "); |
203 | tit += _pppdata->accname(); | 205 | tit += _pppdata->accname(); |
204 | dlg->setCaption(tit); | 206 | dlg->setCaption(tit); |
205 | isnewaccount = false; | 207 | isnewaccount = false; |
206 | } | 208 | } |
207 | 209 | ||
208 | // // DIAL WIDGET | 210 | // // DIAL WIDGET |
209 | dial_w = new DialWidget( _pppdata, tabWindow, isnewaccount, "Dial Setup"); | 211 | dial_w = new DialWidget( _pppdata, tabWindow, isnewaccount, "Dial Setup"); |
210 | tabWindow->addTab( dial_w, tr("Dial") ); | 212 | tabWindow->addTab( dial_w, tr("Dial") ); |
211 | 213 | ||
212 | // // AUTH WIDGET | 214 | // // AUTH WIDGET |
213 | auth_w = new AuthWidget( _pppdata, tabWindow, isnewaccount, tr("Edit Login Script")); | 215 | auth_w = new AuthWidget( _pppdata, tabWindow, isnewaccount, tr("Edit Login Script")); |
214 | tabWindow->addTab( auth_w, tr("Authentication") ); | 216 | tabWindow->addTab( auth_w, tr("Authentication") ); |
215 | 217 | ||
216 | // // IP WIDGET | 218 | // // IP WIDGET |
217 | ip_w = new IPWidget( _pppdata, tabWindow, isnewaccount, tr("IP Setup")); | 219 | ip_w = new IPWidget( _pppdata, tabWindow, isnewaccount, tr("IP Setup")); |
218 | tabWindow->addTab( ip_w, tr("IP") ); | 220 | tabWindow->addTab( ip_w, tr("IP") ); |
219 | 221 | ||
220 | // // GATEWAY WIDGET | 222 | // // GATEWAY WIDGET |
221 | gateway_w = new GatewayWidget( _pppdata, tabWindow, isnewaccount, tr("Gateway Setup")); | 223 | gateway_w = new GatewayWidget( _pppdata, tabWindow, isnewaccount, tr("Gateway Setup")); |
222 | tabWindow->addTab( gateway_w, tr("Gateway") ); | 224 | tabWindow->addTab( gateway_w, tr("Gateway") ); |
223 | 225 | ||
224 | // // DNS WIDGET | 226 | // // DNS WIDGET |
225 | dns_w = new DNSWidget( _pppdata, tabWindow, isnewaccount, tr("DNS Servers") ); | 227 | dns_w = new DNSWidget( _pppdata, tabWindow, isnewaccount, tr("DNS Servers") ); |
226 | tabWindow->addTab( dns_w, tr("DNS") ); | 228 | tabWindow->addTab( dns_w, tr("DNS") ); |
227 | 229 | ||
228 | // // EXECUTE WIDGET | 230 | // // EXECUTE WIDGET |
229 | ExecWidget *exec_w = new ExecWidget( _pppdata, tabWindow, isnewaccount, tr("Execute Programs")); | 231 | ExecWidget *exec_w = new ExecWidget( _pppdata, tabWindow, isnewaccount, tr("Execute Programs")); |
230 | tabWindow->addTab( exec_w, tr("Execute") ); | 232 | tabWindow->addTab( exec_w, tr("Execute") ); |
231 | 233 | ||
232 | int result = 0; | 234 | int result = 0; |
233 | bool ok = false; | 235 | bool ok = false; |
234 | 236 | ||
235 | while (!ok) | 237 | while (!ok) |
236 | { | 238 | { |
237 | result = QPEApplication::execDialog( dlg ); | 239 | result = QPEApplication::execDialog( dlg ); |
238 | ok = true; | 240 | ok = true; |
239 | 241 | ||
240 | if(result == QDialog::Accepted) | 242 | if(result == QDialog::Accepted) |
241 | { | 243 | { |
242 | if (!auth_w->check()) | 244 | if (!auth_w->check()) |
243 | { | 245 | { |
244 | ok = false; | 246 | ok = false; |
245 | } | 247 | } |
246 | else if(!dial_w->save()) | 248 | else if(!dial_w->save()) |
247 | { | 249 | { |
248 | QMessageBox::critical(this, "error", tr( "You must enter a unique account name")); | 250 | QMessageBox::critical(this, "error", tr( "You must enter a unique account name")); |
249 | ok = false; | 251 | ok = false; |
250 | } | 252 | } |
251 | else | 253 | else |
252 | { | 254 | { |
253 | ip_w->save(); | 255 | ip_w->save(); |
254 | dns_w->save(); | 256 | dns_w->save(); |
255 | gateway_w->save(); | 257 | gateway_w->save(); |
256 | auth_w->save(); | 258 | auth_w->save(); |
257 | exec_w->save(); | 259 | exec_w->save(); |
258 | } | 260 | } |
259 | } | 261 | } |
260 | } | 262 | } |
261 | 263 | ||
262 | delete dlg; | 264 | delete dlg; |
263 | 265 | ||
264 | return result; | 266 | return result; |
265 | } | 267 | } |
266 | 268 | ||
267 | 269 | ||
268 | // QString AccountWidget::prettyPrintVolume(unsigned int n) { | 270 | // QString AccountWidget::prettyPrintVolume(unsigned int n) { |
269 | // int idx = 0; | 271 | // int idx = 0; |
270 | // const QString quant[] = {tr("Byte"), tr("KB"), | 272 | // const QString quant[] = {tr("Byte"), tr("KB"), |
271 | // tr("MB"), tr("GB"), QString::null}; | 273 | // tr("MB"), tr("GB"), QString::null}; |
272 | 274 | ||
273 | // float n1 = n; | 275 | // float n1 = n; |
274 | // while(n >= 1024 && quant[idx] != QString::null) { | 276 | // while(n >= 1024 && quant[idx] != QString::null) { |
275 | // idx++; | 277 | // idx++; |
276 | // n /= 1024; | 278 | // n /= 1024; |
277 | // } | 279 | // } |
278 | 280 | ||
279 | // int i = idx; | 281 | // int i = idx; |
280 | // while(i--) | 282 | // while(i--) |
281 | // n1 = n1 / 1024.0; | 283 | // n1 = n1 / 1024.0; |
282 | 284 | ||
283 | // QString s = QString::number( n1, 'f', idx==0 ? 0 : 1 ); | 285 | // QString s = QString::number( n1, 'f', idx==0 ? 0 : 1 ); |
284 | // s += " " + quant[idx]; | 286 | // s += " " + quant[idx]; |
285 | // return s; | 287 | // return s; |
286 | // } | 288 | // } |
287 | 289 | ||
288 | 290 | ||
289 | ///////////////////////////////////////////////////////////////////////////// | 291 | ///////////////////////////////////////////////////////////////////////////// |
290 | // | 292 | // |
291 | // Queries the user what to reset: costs, volume or both | 293 | // Queries the user what to reset: costs, volume or both |
292 | // | 294 | // |
293 | ///////////////////////////////////////////////////////////////////////////// | 295 | ///////////////////////////////////////////////////////////////////////////// |
294 | // QueryReset::QueryReset(QWidget *parent) : QDialog(parent, 0, true) { | 296 | // QueryReset::QueryReset(QWidget *parent) : QDialog(parent, 0, true) { |
295 | // // KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon()); | 297 | // // KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon()); |
296 | // setCaption(tr("Reset Accounting")); | 298 | // setCaption(tr("Reset Accounting")); |
297 | 299 | ||
298 | // QVBoxLayout *tl = new QVBoxLayout(this, 10, 10); | 300 | // QVBoxLayout *tl = new QVBoxLayout(this, 10, 10); |
299 | // QVGroupBox *f = new QVGroupBox(tr("What to Reset"), this); | 301 | // QVGroupBox *f = new QVGroupBox(tr("What to Reset"), this); |
300 | 302 | ||
301 | // QVBoxLayout *l1 = new QVBoxLayout(this, 10, 10); | 303 | // QVBoxLayout *l1 = new QVBoxLayout(this, 10, 10); |
302 | // // costs = new QCheckBox(tr("Reset the accumulated phone costs"), f); | 304 | // // costs = new QCheckBox(tr("Reset the accumulated phone costs"), f); |
303 | // // costs->setChecked(true); | 305 | // // costs->setChecked(true); |
304 | // // l1->addWidget(costs); | 306 | // // l1->addWidget(costs); |
305 | // // QWhatsThis::add(costs, tr("Check this to set the phone costs\n" | 307 | // // QWhatsThis::add(costs, tr("Check this to set the phone costs\n" |
306 | // // "to zero. Typically you'll want to\n" | 308 | // // "to zero. Typically you'll want to\n" |
307 | // // "do this once a month.")); | 309 | // // "do this once a month.")); |
308 | 310 | ||
309 | // // volume = new QCheckBox(tr("Reset volume accounting"), f); | 311 | // // volume = new QCheckBox(tr("Reset volume accounting"), f); |
310 | // // volume->setChecked(true); | 312 | // // volume->setChecked(true); |
311 | // // l1->addWidget(volume); | 313 | // // l1->addWidget(volume); |
312 | // // QWhatsThis::add(volume, tr("Check this to set the volume accounting\n" | 314 | // // QWhatsThis::add(volume, tr("Check this to set the volume accounting\n" |
313 | // // "to zero. Typically you'll want to do this\n" | 315 | // // "to zero. Typically you'll want to do this\n" |
314 | // // "once a month.")); | 316 | // // "once a month.")); |
315 | 317 | ||
316 | // l1->activate(); | 318 | // l1->activate(); |
317 | 319 | ||
318 | // // this activates the f-layout and sets minimumSize() | 320 | // // this activates the f-layout and sets minimumSize() |
319 | // f->show(); | 321 | // f->show(); |
320 | 322 | ||
321 | // tl->addWidget(f); | 323 | // tl->addWidget(f); |
322 | 324 | ||
323 | // QButtonGroup *bbox = new QButtonGroup(this); | 325 | // QButtonGroup *bbox = new QButtonGroup(this); |
324 | // // bbox->addStretch(1); | 326 | // // bbox->addStretch(1); |
325 | // QPushButton *ok = new QPushButton( bbox, tr("OK") ); | 327 | // QPushButton *ok = new QPushButton( bbox, tr("OK") ); |
326 | // bbox->insert(ok); | 328 | // bbox->insert(ok); |
327 | // ok->setDefault(true); | 329 | // ok->setDefault(true); |
328 | // QPushButton *cancel = new QPushButton( bbox, tr("Cancel") ); | 330 | // QPushButton *cancel = new QPushButton( bbox, tr("Cancel") ); |
329 | // bbox->insert(cancel); | 331 | // bbox->insert(cancel); |
330 | 332 | ||
331 | // connect(ok, SIGNAL(clicked()), | 333 | // connect(ok, SIGNAL(clicked()), |
332 | // this, SLOT(accepted())); | 334 | // this, SLOT(accepted())); |
333 | // connect(cancel, SIGNAL(clicked()), | 335 | // connect(cancel, SIGNAL(clicked()), |
334 | // this, SLOT(reject())); | 336 | // this, SLOT(reject())); |
335 | 337 | ||
336 | // bbox->layout(); | 338 | // bbox->layout(); |
337 | // tl->addWidget(bbox); | 339 | // tl->addWidget(bbox); |
338 | 340 | ||
339 | // } | 341 | // } |
340 | 342 | ||
341 | 343 | ||
342 | // void QueryReset::accepted() { | 344 | // void QueryReset::accepted() { |
343 | // int result = costs->isChecked() ? COSTS : 0; | 345 | // int result = costs->isChecked() ? COSTS : 0; |
344 | // result += volume->isChecked() ? VOLUME : 0; | 346 | // result += volume->isChecked() ? VOLUME : 0; |
345 | 347 | ||
346 | // done(result); | 348 | // done(result); |
347 | // } | 349 | // } |
348 | 350 | ||
349 | 351 | ||
diff --git a/noncore/settings/networksettings/ppp/authwidget.cpp b/noncore/settings/networksettings/ppp/authwidget.cpp index f3d842f..c94c3bc 100644 --- a/noncore/settings/networksettings/ppp/authwidget.cpp +++ b/noncore/settings/networksettings/ppp/authwidget.cpp | |||
@@ -1,197 +1,201 @@ | |||
1 | |||
2 | #include <qlayout.h> | ||
3 | #include <qmessagebox.h> | ||
4 | #include <qtoolbutton.h> | ||
5 | #include <qwhatsthis.h> | ||
6 | |||
7 | #include "auth.h" | 1 | #include "auth.h" |
8 | #include "authwidget.h" | 2 | #include "authwidget.h" |
9 | #include "edit.h" | 3 | #include "edit.h" |
10 | #include "pppdata.h" | 4 | #include "pppdata.h" |
11 | 5 | ||
6 | /* OPIE */ | ||
7 | #include <opie2/odebug.h> | ||
8 | using namespace Opie::Core; | ||
9 | |||
10 | /* QT */ | ||
11 | #include <qlayout.h> | ||
12 | #include <qmessagebox.h> | ||
13 | #include <qtoolbutton.h> | ||
14 | #include <qwhatsthis.h> | ||
12 | 15 | ||
16 | /* XPM */ | ||
13 | static const char* const image0_data[] = { | 17 | static const char* const image0_data[] = { |
14 | "16 16 2 1", | 18 | "16 16 2 1", |
15 | ". c None", | 19 | ". c None", |
16 | "# c #000000", | 20 | "# c #000000", |
17 | "................", | 21 | "................", |
18 | "...#...###...##.", | 22 | "...#...###...##.", |
19 | "..#.#..#..#.##..", | 23 | "..#.#..#..#.##..", |
20 | "..###..###.##...", | 24 | "..###..###.##...", |
21 | ".#...#.#..##....", | 25 | ".#...#.#..##....", |
22 | ".#...#.#.##.....", | 26 | ".#...#.#.##.....", |
23 | "........##.#..#.", | 27 | "........##.#..#.", |
24 | "..##...##...##..", | 28 | "..##...##...##..", |
25 | ".#..#.###...##..", | 29 | ".#..#.###...##..", |
26 | ".#...##..#.#..#.", | 30 | ".#...##..#.#..#.", |
27 | ".#..##..........", | 31 | ".#..##..........", |
28 | ".#.##.#..#.#..#.", | 32 | ".#.##.#..#.#..#.", |
29 | "..##...##...##..", | 33 | "..##...##...##..", |
30 | ".##....##...##..", | 34 | ".##....##...##..", |
31 | ".#....#..#.#..#.", | 35 | ".#....#..#.#..#.", |
32 | "................"}; | 36 | "................"}; |
33 | 37 | ||
34 | 38 | ||
35 | AuthWidget::AuthWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) | 39 | AuthWidget::AuthWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) |
36 | : QWidget( parent, name), | 40 | : QWidget( parent, name), |
37 | scriptWidget(0), | 41 | scriptWidget(0), |
38 | _pppdata(pd), | 42 | _pppdata(pd), |
39 | isNewAccount(isnewaccount) | 43 | isNewAccount(isnewaccount) |
40 | { | 44 | { |
41 | layout = new QGridLayout(this); | 45 | layout = new QGridLayout(this); |
42 | 46 | ||
43 | auth_l = new QLabel(tr("Authentication: "), this); | 47 | auth_l = new QLabel(tr("Authentication: "), this); |
44 | layout->addWidget(auth_l, 0, 0); | 48 | layout->addWidget(auth_l, 0, 0); |
45 | 49 | ||
46 | auth = new QComboBox(this); | 50 | auth = new QComboBox(this); |
47 | auth->insertItem(tr("Script-based")); | 51 | auth->insertItem(tr("Script-based")); |
48 | auth->insertItem(tr("PAP")); | 52 | auth->insertItem(tr("PAP")); |
49 | auth->insertItem(tr("Terminal-based")); | 53 | auth->insertItem(tr("Terminal-based")); |
50 | auth->insertItem(tr("CHAP")); | 54 | auth->insertItem(tr("CHAP")); |
51 | auth->insertItem(tr("PAP/CHAP")); | 55 | auth->insertItem(tr("PAP/CHAP")); |
52 | layout->addWidget(auth, 0, 1); | 56 | layout->addWidget(auth, 0, 1); |
53 | 57 | ||
54 | connect( auth, SIGNAL(activated(const QString&)), | 58 | connect( auth, SIGNAL(activated(const QString&)), |
55 | SLOT(authChanged(const QString&))); | 59 | SLOT(authChanged(const QString&))); |
56 | 60 | ||
57 | QString tmp = tr("<p>Specifies the method used to identify yourself to\n" | 61 | QString tmp = tr("<p>Specifies the method used to identify yourself to\n" |
58 | "the PPP server. Most universities still use\n" | 62 | "the PPP server. Most universities still use\n" |
59 | "<b>Terminal</b>- or <b>Script</b>-based authentication,\n" | 63 | "<b>Terminal</b>- or <b>Script</b>-based authentication,\n" |
60 | "while most ISP use <b>PAP</b> and/or <b>CHAP</b>. If\n" | 64 | "while most ISP use <b>PAP</b> and/or <b>CHAP</b>. If\n" |
61 | "unsure, contact your ISP.\n" | 65 | "unsure, contact your ISP.\n" |
62 | "\n" | 66 | "\n" |
63 | "If you can choose between PAP and CHAP,\n" | 67 | "If you can choose between PAP and CHAP,\n" |
64 | "choose CHAP, because it's much safer. If you don't know\n" | 68 | "choose CHAP, because it's much safer. If you don't know\n" |
65 | "whether PAP or CHAP is right, choose PAP/CHAP."); | 69 | "whether PAP or CHAP is right, choose PAP/CHAP."); |
66 | 70 | ||
67 | QWhatsThis::add(auth_l,tmp); | 71 | QWhatsThis::add(auth_l,tmp); |
68 | QWhatsThis::add(auth,tmp); | 72 | QWhatsThis::add(auth,tmp); |
69 | 73 | ||
70 | user_l = new QLabel( tr("Username: "), this); | 74 | user_l = new QLabel( tr("Username: "), this); |
71 | layout->addWidget( user_l, 1, 0 ); | 75 | layout->addWidget( user_l, 1, 0 ); |
72 | userName = new QLineEdit( this, "usernameEdit" ); | 76 | userName = new QLineEdit( this, "usernameEdit" ); |
73 | layout->addWidget( userName, 1, 1 ); | 77 | layout->addWidget( userName, 1, 1 ); |
74 | tmp = tr("Enter your username here..."); | 78 | tmp = tr("Enter your username here..."); |
75 | QWhatsThis::add( user_l, tmp ); | 79 | QWhatsThis::add( user_l, tmp ); |
76 | QWhatsThis::add( userName, tmp ); | 80 | QWhatsThis::add( userName, tmp ); |
77 | 81 | ||
78 | pw_l = new QLabel( tr("Password: "), this); | 82 | pw_l = new QLabel( tr("Password: "), this); |
79 | layout->addWidget( pw_l, 2, 0 ); | 83 | layout->addWidget( pw_l, 2, 0 ); |
80 | passWord = new QLineEdit( this, "pw" ); | 84 | passWord = new QLineEdit( this, "pw" ); |
81 | passWord->setAutoMask( true ); | 85 | passWord->setAutoMask( true ); |
82 | passWord->setEchoMode( QLineEdit::Password ); | 86 | passWord->setEchoMode( QLineEdit::Password ); |
83 | layout->addWidget( passWord, 2, 1 ); | 87 | layout->addWidget( passWord, 2, 1 ); |
84 | hidePw = new QToolButton( this ); | 88 | hidePw = new QToolButton( this ); |
85 | hidePw->setPixmap( QPixmap( ( const char** ) image0_data ) ); | 89 | hidePw->setPixmap( QPixmap( ( const char** ) image0_data ) ); |
86 | hidePw->setToggleButton( true ); | 90 | hidePw->setToggleButton( true ); |
87 | layout->addWidget( hidePw, 2, 2 ); | 91 | layout->addWidget( hidePw, 2, 2 ); |
88 | 92 | ||
89 | connect(hidePw, SIGNAL(toggled(bool)), SLOT(toggleEchoMode(bool))); | 93 | connect(hidePw, SIGNAL(toggled(bool)), SLOT(toggleEchoMode(bool))); |
90 | 94 | ||
91 | tmp = tr("Enter your password here"); | 95 | tmp = tr("Enter your password here"); |
92 | QWhatsThis::add( pw_l, tmp ); | 96 | QWhatsThis::add( pw_l, tmp ); |
93 | QWhatsThis::add( passWord, tmp ); | 97 | QWhatsThis::add( passWord, tmp ); |
94 | 98 | ||
95 | store_password = new QCheckBox(tr("Store password"), this); | 99 | store_password = new QCheckBox(tr("Store password"), this); |
96 | layout->addMultiCellWidget(store_password, 3, 3, 0, 1, AlignRight); | 100 | layout->addMultiCellWidget(store_password, 3, 3, 0, 1, AlignRight); |
97 | QWhatsThis::add(store_password, | 101 | QWhatsThis::add(store_password, |
98 | tr("<p>When this is turned on, your ISP password\n" | 102 | tr("<p>When this is turned on, your ISP password\n" |
99 | "will be saved in <i>kppp</i>'s config file, so\n" | 103 | "will be saved in <i>kppp</i>'s config file, so\n" |
100 | "you do not need to type it in every time.\n" | 104 | "you do not need to type it in every time.\n" |
101 | "\n" | 105 | "\n" |
102 | "<b><font color=\"red\">Warning:</font> your password will be stored as\n" | 106 | "<b><font color=\"red\">Warning:</font> your password will be stored as\n" |
103 | "plain text in the config file, which is\n" | 107 | "plain text in the config file, which is\n" |
104 | "readable only to you. Make sure nobody\n" | 108 | "readable only to you. Make sure nobody\n" |
105 | "gains access to this file!")); | 109 | "gains access to this file!")); |
106 | 110 | ||
107 | if (isNewAccount){ | 111 | if (isNewAccount){ |
108 | // select PAP/CHAP as default | 112 | // select PAP/CHAP as default |
109 | auth->setCurrentItem(AUTH_PAPCHAP); | 113 | auth->setCurrentItem(AUTH_PAPCHAP); |
110 | store_password->setChecked(true); | 114 | store_password->setChecked(true); |
111 | }else{ | 115 | }else{ |
112 | auth->setCurrentItem(_pppdata->authMethod()); | 116 | auth->setCurrentItem(_pppdata->authMethod()); |
113 | authChanged( auth->currentText() ); | 117 | authChanged( auth->currentText() ); |
114 | userName->setText( _pppdata->storedUsername() ); | 118 | userName->setText( _pppdata->storedUsername() ); |
115 | store_password->setChecked(_pppdata->storePassword()); | 119 | store_password->setChecked(_pppdata->storePassword()); |
116 | if (store_password->isChecked()) | 120 | if (store_password->isChecked()) |
117 | passWord->setText( _pppdata->storedPassword() ); | 121 | passWord->setText( _pppdata->storedPassword() ); |
118 | } | 122 | } |
119 | } | 123 | } |
120 | 124 | ||
121 | bool AuthWidget::check() | 125 | bool AuthWidget::check() |
122 | { | 126 | { |
123 | bool ret = true; | 127 | bool ret = true; |
124 | if (scriptWidget){ | 128 | if (scriptWidget){ |
125 | if (!scriptWidget->check()){ | 129 | if (!scriptWidget->check()){ |
126 | QMessageBox::critical(this, tr("error"), tr("<qt>Login script has unbalanced loop Start/End<qt>")); | 130 | QMessageBox::critical(this, tr("error"), tr("<qt>Login script has unbalanced loop Start/End<qt>")); |
127 | ret = false; | 131 | ret = false; |
128 | } | 132 | } |
129 | } | 133 | } |
130 | return ret; | 134 | return ret; |
131 | } | 135 | } |
132 | 136 | ||
133 | void AuthWidget::save() | 137 | void AuthWidget::save() |
134 | { | 138 | { |
135 | _pppdata->setAuthMethod(auth->currentItem()); | 139 | _pppdata->setAuthMethod(auth->currentItem()); |
136 | if (scriptWidget) scriptWidget->save(); | 140 | if (scriptWidget) scriptWidget->save(); |
137 | _pppdata->setStoredUsername( userName->text() ); | 141 | _pppdata->setStoredUsername( userName->text() ); |
138 | _pppdata->setStorePassword(store_password->isChecked()); | 142 | _pppdata->setStorePassword(store_password->isChecked()); |
139 | if (store_password->isChecked()) | 143 | if (store_password->isChecked()) |
140 | _pppdata->setStoredPassword( passWord->text() ); | 144 | _pppdata->setStoredPassword( passWord->text() ); |
141 | } | 145 | } |
142 | 146 | ||
143 | void AuthWidget::authChanged( const QString &authStr ) | 147 | void AuthWidget::authChanged( const QString &authStr ) |
144 | { | 148 | { |
145 | odebug << "AuthWidget::authChanged( " << authStr.latin1() << " )" << oendl; | 149 | odebug << "AuthWidget::authChanged( " << authStr.latin1() << " )" << oendl; |
146 | if ( authStr.contains( tr("Script-based") ) ){ | 150 | if ( authStr.contains( tr("Script-based") ) ){ |
147 | showUsernamePassword( false ); | 151 | showUsernamePassword( false ); |
148 | showScriptWindow( true ); | 152 | showScriptWindow( true ); |
149 | } else if ( authStr.contains( tr("PAP") ) || | 153 | } else if ( authStr.contains( tr("PAP") ) || |
150 | authStr.contains( tr("CHAP") ) ){ | 154 | authStr.contains( tr("CHAP") ) ){ |
151 | showUsernamePassword( true ); | 155 | showUsernamePassword( true ); |
152 | showScriptWindow( false ); | 156 | showScriptWindow( false ); |
153 | } else { | 157 | } else { |
154 | odebug << "do not really know how to handle" << oendl; | 158 | odebug << "do not really know how to handle" << oendl; |
155 | showUsernamePassword( false ); | 159 | showUsernamePassword( false ); |
156 | showScriptWindow( false ); | 160 | showScriptWindow( false ); |
157 | } | 161 | } |
158 | } | 162 | } |
159 | 163 | ||
160 | 164 | ||
161 | void AuthWidget::showUsernamePassword( bool show ) | 165 | void AuthWidget::showUsernamePassword( bool show ) |
162 | { | 166 | { |
163 | if (show){ | 167 | if (show){ |
164 | user_l->show(); | 168 | user_l->show(); |
165 | userName->show(); | 169 | userName->show(); |
166 | pw_l->show(); | 170 | pw_l->show(); |
167 | passWord->show(); | 171 | passWord->show(); |
168 | store_password->show(); | 172 | store_password->show(); |
169 | hidePw->show(); | 173 | hidePw->show(); |
170 | }else{//!show | 174 | }else{//!show |
171 | user_l->hide(); | 175 | user_l->hide(); |
172 | userName->hide(); | 176 | userName->hide(); |
173 | pw_l->hide(); | 177 | pw_l->hide(); |
174 | passWord->hide(); | 178 | passWord->hide(); |
175 | store_password->hide(); | 179 | store_password->hide(); |
176 | hidePw->hide(); | 180 | hidePw->hide(); |
177 | } | 181 | } |
178 | } | 182 | } |
179 | 183 | ||
180 | void AuthWidget::showScriptWindow( bool show ) | 184 | void AuthWidget::showScriptWindow( bool show ) |
181 | { | 185 | { |
182 | if (show){ | 186 | if (show){ |
183 | if (!scriptWidget){ | 187 | if (!scriptWidget){ |
184 | scriptWidget = new ScriptWidget( _pppdata, this, isNewAccount, "scriptWid"); | 188 | scriptWidget = new ScriptWidget( _pppdata, this, isNewAccount, "scriptWid"); |
185 | layout->addMultiCellWidget( scriptWidget, 1, 4, 0, 1 ); | 189 | layout->addMultiCellWidget( scriptWidget, 1, 4, 0, 1 ); |
186 | } | 190 | } |
187 | scriptWidget->show(); | 191 | scriptWidget->show(); |
188 | }else{ // !show | 192 | }else{ // !show |
189 | if (scriptWidget) scriptWidget->hide(); | 193 | if (scriptWidget) scriptWidget->hide(); |
190 | } | 194 | } |
191 | } | 195 | } |
192 | 196 | ||
193 | void AuthWidget::toggleEchoMode( bool t ) | 197 | void AuthWidget::toggleEchoMode( bool t ) |
194 | { | 198 | { |
195 | passWord->setEchoMode( t ? QLineEdit::Normal : QLineEdit::Password ); | 199 | passWord->setEchoMode( t ? QLineEdit::Normal : QLineEdit::Password ); |
196 | } | 200 | } |
197 | 201 | ||
diff --git a/noncore/settings/networksettings/ppp/config.in b/noncore/settings/networksettings/ppp/config.in index 0b71434..570ebfe 100644 --- a/noncore/settings/networksettings/ppp/config.in +++ b/noncore/settings/networksettings/ppp/config.in | |||
@@ -1,4 +1,4 @@ | |||
1 | config PPP | 1 | config PPP |
2 | boolean "opie-networksettingsplugin-kppp (PPP module)" | 2 | boolean "opie-networksettingsplugin-kppp (PPP module)" |
3 | default "n" if NETWORKSETUP | 3 | default "y" |
4 | depends ( LIBQPE || LIBQPE-X11 ) && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES | 4 | depends ( LIBQPE || LIBQPE-X11 ) && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES |
diff --git a/noncore/settings/networksettings/ppp/connect.cpp b/noncore/settings/networksettings/ppp/connect.cpp index b75410c..24d33f4 100644 --- a/noncore/settings/networksettings/ppp/connect.cpp +++ b/noncore/settings/networksettings/ppp/connect.cpp | |||
@@ -1,421 +1,422 @@ | |||
1 | /* | 1 | /* |
2 | * kPPP: A pppd front end for the KDE project | 2 | * kPPP: A pppd front end for the KDE project |
3 | * | 3 | * |
4 | * | 4 | * |
5 | * Copyright (C) 1997 Bernd Johannes Wuebben | 5 | * Copyright (C) 1997 Bernd Johannes Wuebben |
6 | * wuebben@math.cornell.edu | 6 | * wuebben@math.cornell.edu |
7 | * Copyright (C) 1998-2001 Harri Porten <porten@kde.org> | 7 | * Copyright (C) 1998-2001 Harri Porten <porten@kde.org> |
8 | * | 8 | * |
9 | * based on EzPPP: | 9 | * based on EzPPP: |
10 | * Copyright (C) 1997 Jay Painter | 10 | * Copyright (C) 1997 Jay Painter |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Library General Public | 13 | * modify it under the terms of the GNU Library General Public |
14 | * License as published by the Free Software Foundation; either | 14 | * License as published by the Free Software Foundation; either |
15 | * version 2 of the License, or (at your option) any later version. | 15 | * version 2 of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This program is distributed in the hope that it will be useful, | 17 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Library General Public License for more details. | 20 | * Library General Public License for more details. |
21 | * | 21 | * |
22 | * You should have received a copy of the GNU Library General Public | 22 | * You should have received a copy of the GNU Library General Public |
23 | * License along with this program; if not, write to the Free | 23 | * License along with this program; if not, write to the Free |
24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | //#include <config.h> | 27 | /* OPIE */ |
28 | #include <opie2/odebug.h> | ||
29 | using namespace Opie::Core; | ||
28 | 30 | ||
31 | /* QT */ | ||
29 | #include <qlayout.h> | 32 | #include <qlayout.h> |
30 | #include <qregexp.h> | 33 | #include <qregexp.h> |
31 | |||
32 | #include <qapplication.h> | 34 | #include <qapplication.h> |
33 | //#include <kdebug.h> | ||
34 | //#include <klocale.h> | ||
35 | #include <qmessagebox.h> | 35 | #include <qmessagebox.h> |
36 | #include <qpushbutton.h> | 36 | #include <qpushbutton.h> |
37 | 37 | ||
38 | /* STD */ | ||
38 | #include <unistd.h> | 39 | #include <unistd.h> |
39 | #include <stdlib.h> | 40 | #include <stdlib.h> |
40 | #include <string.h> | 41 | #include <string.h> |
41 | #include <fcntl.h> | 42 | #include <fcntl.h> |
42 | #include <netdb.h> | 43 | #include <netdb.h> |
43 | #include <sys/types.h> | 44 | #include <sys/types.h> |
44 | #include <sys/socket.h> | 45 | #include <sys/socket.h> |
45 | #include <arpa/inet.h> | 46 | #include <arpa/inet.h> |
46 | #include <netinet/in.h> | 47 | #include <netinet/in.h> |
47 | #include <sys/ioctl.h> | 48 | #include <sys/ioctl.h> |
48 | #include <assert.h> | 49 | #include <assert.h> |
49 | 50 | ||
50 | #ifdef _XPG4_2 | 51 | #ifdef _XPG4_2 |
51 | #define __xnet_connectconnect | 52 | #define __xnet_connectconnect |
52 | #endif | 53 | #endif |
53 | 54 | ||
54 | #include <errno.h> | 55 | #include <errno.h> |
55 | 56 | ||
56 | #ifdef HAVE_SYS_PARAM_H | 57 | #ifdef HAVE_SYS_PARAM_H |
57 | #include <sys/param.h> | 58 | #include <sys/param.h> |
58 | #endif | 59 | #endif |
59 | 60 | ||
60 | #ifdef __linux__ | 61 | #ifdef __linux__ |
61 | #include "runtests.h" | 62 | #include "runtests.h" |
62 | #endif | 63 | #endif |
63 | 64 | ||
64 | #include "auth.h" | 65 | #include "auth.h" |
65 | #include "connect.h" | 66 | #include "connect.h" |
66 | //#include "docking.h" | 67 | //#include "docking.h" |
67 | #include "interfaceppp.h" | 68 | #include "interfaceppp.h" |
68 | #include "modem.h" | 69 | #include "modem.h" |
69 | #include "kpppconfig.h" | 70 | #include "kpppconfig.h" |
70 | #include "pppdata.h" | 71 | #include "pppdata.h" |
71 | #include "kpppwidget.h" | 72 | #include "kpppwidget.h" |
72 | //#include "requester.h" | 73 | //#include "requester.h" |
73 | //#include "utils.h" | 74 | //#include "utils.h" |
74 | #define execute_command system | 75 | #define execute_command system |
75 | 76 | ||
76 | QString old_hostname; | 77 | QString old_hostname; |
77 | bool modified_hostname; | 78 | bool modified_hostname; |
78 | 79 | ||
79 | 80 | ||
80 | ConnectWidget::ConnectWidget(InterfacePPP *ifp, QWidget *parent, const char *name) | 81 | ConnectWidget::ConnectWidget(InterfacePPP *ifp, QWidget *parent, const char *name) |
81 | : QWidget(parent, name), | 82 | : QWidget(parent, name), |
82 | myreadbuffer(""), | 83 | myreadbuffer(""), |
83 | main_timer_ID(0), | 84 | main_timer_ID(0), |
84 | vmain(0), | 85 | vmain(0), |
85 | substate(-1), | 86 | substate(-1), |
86 | scriptindex(0), | 87 | scriptindex(0), |
87 | loopnest(0), | 88 | loopnest(0), |
88 | loopend(false), | 89 | loopend(false), |
89 | semaphore(false), | 90 | semaphore(false), |
90 | expecting(false), | 91 | expecting(false), |
91 | readbuffer(""), | 92 | readbuffer(""), |
92 | scanvar(""), | 93 | scanvar(""), |
93 | scanning(false), | 94 | scanning(false), |
94 | pausing(false), | 95 | pausing(false), |
95 | dialnumber(0), | 96 | dialnumber(0), |
96 | _ifaceppp(ifp) | 97 | _ifaceppp(ifp) |
97 | { | 98 | { |
98 | modified_hostname = false; | 99 | modified_hostname = false; |
99 | 100 | ||
100 | QVBoxLayout *tl = new QVBoxLayout(this, 8, 10); | 101 | QVBoxLayout *tl = new QVBoxLayout(this, 8, 10); |
101 | QString tit = QObject::tr("Connecting to: "); | 102 | QString tit = QObject::tr("Connecting to: "); |
102 | setCaption(tit); | 103 | setCaption(tit); |
103 | 104 | ||
104 | QHBoxLayout *l0 = new QHBoxLayout(10); | 105 | QHBoxLayout *l0 = new QHBoxLayout(10); |
105 | tl->addLayout(l0); | 106 | tl->addLayout(l0); |
106 | l0->addSpacing(10); | 107 | l0->addSpacing(10); |
107 | messg = new QLabel(this, "messg"); | 108 | messg = new QLabel(this, "messg"); |
108 | messg->setFrameStyle(QFrame::Panel|QFrame::Sunken); | 109 | messg->setFrameStyle(QFrame::Panel|QFrame::Sunken); |
109 | messg->setAlignment(AlignCenter); | 110 | messg->setAlignment(AlignCenter); |
110 | messg->setText(QObject::tr("Unable to create modem lock file.")); | 111 | messg->setText(QObject::tr("Unable to create modem lock file.")); |
111 | messg->setMinimumHeight(messg->sizeHint().height() + 5); | 112 | messg->setMinimumHeight(messg->sizeHint().height() + 5); |
112 | // int messw = (messg->sizeHint().width() * 12) / 10; | 113 | // int messw = (messg->sizeHint().width() * 12) / 10; |
113 | // messw = QMAX(messw,280); | 114 | // messw = QMAX(messw,280); |
114 | // messg->setMinimumWidth(messw); | 115 | // messg->setMinimumWidth(messw); |
115 | if (_ifaceppp->getStatus()) | 116 | if (_ifaceppp->getStatus()) |
116 | messg->setText(QObject::tr("Online")); | 117 | messg->setText(QObject::tr("Online")); |
117 | else | 118 | else |
118 | messg->setText(QObject::tr("Offline")); | 119 | messg->setText(QObject::tr("Offline")); |
119 | l0->addSpacing(10); | 120 | l0->addSpacing(10); |
120 | l0->addWidget(messg); | 121 | l0->addWidget(messg); |
121 | l0->addSpacing(10); | 122 | l0->addSpacing(10); |
122 | 123 | ||
123 | QHBoxLayout *l1 = new QHBoxLayout(10); | 124 | QHBoxLayout *l1 = new QHBoxLayout(10); |
124 | tl->addLayout(l1); | 125 | tl->addLayout(l1); |
125 | l1->addStretch(1); | 126 | l1->addStretch(1); |
126 | 127 | ||
127 | debug = new QPushButton(QObject::tr("Log"), this); | 128 | debug = new QPushButton(QObject::tr("Log"), this); |
128 | debug->setToggleButton(true); | 129 | debug->setToggleButton(true); |
129 | debug->setEnabled( false ); // FIXME: disable the log button | 130 | debug->setEnabled( false ); // FIXME: disable the log button |
130 | connect(debug, SIGNAL(clicked()), SIGNAL(toggleDebugWindow())); | 131 | connect(debug, SIGNAL(clicked()), SIGNAL(toggleDebugWindow())); |
131 | 132 | ||
132 | cancel = new QPushButton(QObject::tr("Cancel"), this); | 133 | cancel = new QPushButton(QObject::tr("Cancel"), this); |
133 | cancel->setFocus(); | 134 | cancel->setFocus(); |
134 | connect(cancel, SIGNAL(clicked()), SLOT(cancelbutton())); | 135 | connect(cancel, SIGNAL(clicked()), SLOT(cancelbutton())); |
135 | 136 | ||
136 | // int maxw = QMAX(cancel->sizeHint().width(), | 137 | // int maxw = QMAX(cancel->sizeHint().width(), |
137 | // debug->sizeHint().width()); | 138 | // debug->sizeHint().width()); |
138 | // maxw = QMAX(maxw,65); | 139 | // maxw = QMAX(maxw,65); |
139 | // debug->setFixedWidth(maxw); | 140 | // debug->setFixedWidth(maxw); |
140 | // cancel->setFixedWidth(maxw); | 141 | // cancel->setFixedWidth(maxw); |
141 | l1->addWidget(debug); | 142 | l1->addWidget(debug); |
142 | l1->addWidget(cancel); | 143 | l1->addWidget(cancel); |
143 | 144 | ||
144 | // setFixedSize(sizeHint()); | 145 | // setFixedSize(sizeHint()); |
145 | 146 | ||
146 | pausetimer = new QTimer(this); | 147 | pausetimer = new QTimer(this); |
147 | connect(pausetimer, SIGNAL(timeout()), SLOT(pause())); | 148 | connect(pausetimer, SIGNAL(timeout()), SLOT(pause())); |
148 | 149 | ||
149 | qApp->processEvents(); | 150 | qApp->processEvents(); |
150 | 151 | ||
151 | timeout_timer = new QTimer(this); | 152 | timeout_timer = new QTimer(this); |
152 | connect(timeout_timer, SIGNAL(timeout()), SLOT(script_timed_out())); | 153 | connect(timeout_timer, SIGNAL(timeout()), SLOT(script_timed_out())); |
153 | 154 | ||
154 | inittimer = new QTimer(this); | 155 | inittimer = new QTimer(this); |
155 | connect(inittimer, SIGNAL(timeout()), SLOT(init())); | 156 | connect(inittimer, SIGNAL(timeout()), SLOT(init())); |
156 | 157 | ||
157 | if_timeout_timer = new QTimer(this); | 158 | if_timeout_timer = new QTimer(this); |
158 | connect(if_timeout_timer, SIGNAL(timeout()), SLOT(if_waiting_timed_out())); | 159 | connect(if_timeout_timer, SIGNAL(timeout()), SLOT(if_waiting_timed_out())); |
159 | 160 | ||
160 | connect(this,SIGNAL(if_waiting_signal()),this,SLOT(if_waiting_slot())); | 161 | connect(this,SIGNAL(if_waiting_signal()),this,SLOT(if_waiting_slot())); |
161 | 162 | ||
162 | prompt = new PWEntry( this, "pw" ); | 163 | prompt = new PWEntry( this, "pw" ); |
163 | if_timer = new QTimer(this); | 164 | if_timer = new QTimer(this); |
164 | connect(if_timer,SIGNAL(timeout()), SLOT(if_waiting_slot())); | 165 | connect(if_timer,SIGNAL(timeout()), SLOT(if_waiting_slot())); |
165 | } | 166 | } |
166 | 167 | ||
167 | 168 | ||
168 | ConnectWidget::~ConnectWidget() { | 169 | ConnectWidget::~ConnectWidget() { |
169 | } | 170 | } |
170 | 171 | ||
171 | 172 | ||
172 | void ConnectWidget::preinit() { | 173 | void ConnectWidget::preinit() { |
173 | // this is all just to keep the GUI nice and snappy .... | 174 | // this is all just to keep the GUI nice and snappy .... |
174 | // you have to see to believe ... | 175 | // you have to see to believe ... |
175 | messg->setText(QObject::tr("Looking for modem...")); | 176 | messg->setText(QObject::tr("Looking for modem...")); |
176 | inittimer->start(100); | 177 | inittimer->start(100); |
177 | } | 178 | } |
178 | 179 | ||
179 | 180 | ||
180 | void ConnectWidget::init() { | 181 | void ConnectWidget::init() { |
181 | _ifaceppp->data()->setpppdError(0); | 182 | _ifaceppp->data()->setpppdError(0); |
182 | inittimer->stop(); | 183 | inittimer->stop(); |
183 | vmain = 0; | 184 | vmain = 0; |
184 | substate = -1; | 185 | substate = -1; |
185 | expecting = false; | 186 | expecting = false; |
186 | pausing = false; | 187 | pausing = false; |
187 | scriptindex = 0; | 188 | scriptindex = 0; |
188 | myreadbuffer = ""; | 189 | myreadbuffer = ""; |
189 | scanning = false; | 190 | scanning = false; |
190 | scanvar = ""; | 191 | scanvar = ""; |
191 | firstrunID = true; | 192 | firstrunID = true; |
192 | firstrunPW = true; | 193 | firstrunPW = true; |
193 | // stats->totalbytes = 0; | 194 | // stats->totalbytes = 0; |
194 | dialnumber = 0; | 195 | dialnumber = 0; |
195 | 196 | ||
196 | // p_kppp->con_speed = ""; | 197 | // p_kppp->con_speed = ""; |
197 | 198 | ||
198 | // p_kppp->setQuitOnDisconnect (p_kppp->quitOnDisconnect() || _ifaceppp->data()->quit_on_disconnect()); | 199 | // p_kppp->setQuitOnDisconnect (p_kppp->quitOnDisconnect() || _ifaceppp->data()->quit_on_disconnect()); |
199 | 200 | ||
200 | comlist = &_ifaceppp->data()->scriptType(); | 201 | comlist = &_ifaceppp->data()->scriptType(); |
201 | arglist = &_ifaceppp->data()->script(); | 202 | arglist = &_ifaceppp->data()->script(); |
202 | 203 | ||
203 | QString tit = QObject::tr("Connecting to: %1").arg(_ifaceppp->data()->accname()); | 204 | QString tit = QObject::tr("Connecting to: %1").arg(_ifaceppp->data()->accname()); |
204 | setCaption(tit); | 205 | setCaption(tit); |
205 | 206 | ||
206 | qApp->processEvents(); | 207 | qApp->processEvents(); |
207 | 208 | ||
208 | // run the "before-connect" command | 209 | // run the "before-connect" command |
209 | if (!_ifaceppp->data()->command_before_connect().isEmpty()) { | 210 | if (!_ifaceppp->data()->command_before_connect().isEmpty()) { |
210 | messg->setText(QObject::tr("Running pre-startup command...")); | 211 | messg->setText(QObject::tr("Running pre-startup command...")); |
211 | emit debugMessage(QObject::tr("Running pre-startup command...")); | 212 | emit debugMessage(QObject::tr("Running pre-startup command...")); |
212 | 213 | ||
213 | qApp->processEvents(); | 214 | qApp->processEvents(); |
214 | QApplication::flushX(); | 215 | QApplication::flushX(); |
215 | pid_t id = execute_command(_ifaceppp->data()->command_before_connect()); | 216 | pid_t id = execute_command(_ifaceppp->data()->command_before_connect()); |
216 | // int i, status; | 217 | // int i, status; |
217 | 218 | ||
218 | // do { | 219 | // do { |
219 | // qApp->processEvents(); | 220 | // qApp->processEvents(); |
220 | // i = waitpid(id, &status, WNOHANG); | 221 | // i = waitpid(id, &status, WNOHANG); |
221 | // usleep(100000); | 222 | // usleep(100000); |
222 | // } while (i == 0 && errno == 0); | 223 | // } while (i == 0 && errno == 0); |
223 | } | 224 | } |
224 | 225 | ||
225 | int lock = _ifaceppp->modem()->lockdevice(); | 226 | int lock = _ifaceppp->modem()->lockdevice(); |
226 | 227 | ||
227 | if (lock == 1) { | 228 | if (lock == 1) { |
228 | messg->setText(QObject::tr("Modem device is locked.")); | 229 | messg->setText(QObject::tr("Modem device is locked.")); |
229 | vmain = 20; // wait until cancel is pressed | 230 | vmain = 20; // wait until cancel is pressed |
230 | return; | 231 | return; |
231 | } | 232 | } |
232 | 233 | ||
233 | if (lock == -1) { | 234 | if (lock == -1) { |
234 | messg->setText(QObject::tr("Unable to create modem lock file.")); | 235 | messg->setText(QObject::tr("Unable to create modem lock file.")); |
235 | vmain = 20; // wait until cancel is pressed | 236 | vmain = 20; // wait until cancel is pressed |
236 | return; | 237 | return; |
237 | } | 238 | } |
238 | 239 | ||
239 | if(_ifaceppp->modem()->opentty()) { | 240 | if(_ifaceppp->modem()->opentty()) { |
240 | messg->setText(_ifaceppp->modem()->modemMessage()); | 241 | messg->setText(_ifaceppp->modem()->modemMessage()); |
241 | qApp->processEvents(); | 242 | qApp->processEvents(); |
242 | if(_ifaceppp->modem()->hangup()) { | 243 | if(_ifaceppp->modem()->hangup()) { |
243 | 244 | ||
244 | qApp->processEvents(); | 245 | qApp->processEvents(); |
245 | 246 | ||
246 | semaphore = false; | 247 | semaphore = false; |
247 | 248 | ||
248 | _ifaceppp->modem()->stop(); | 249 | _ifaceppp->modem()->stop(); |
249 | _ifaceppp->modem()->notify(this, SLOT(readChar(unsigned char))); | 250 | _ifaceppp->modem()->notify(this, SLOT(readChar(unsigned char))); |
250 | 251 | ||
251 | // if we are stuck anywhere we will time out | 252 | // if we are stuck anywhere we will time out |
252 | timeout_timer->start(_ifaceppp->data()->modemTimeout()*1000); | 253 | timeout_timer->start(_ifaceppp->data()->modemTimeout()*1000); |
253 | 254 | ||
254 | // this timer will run the script etc. | 255 | // this timer will run the script etc. |
255 | main_timer_ID = startTimer(10); | 256 | main_timer_ID = startTimer(10); |
256 | 257 | ||
257 | return; | 258 | return; |
258 | } | 259 | } |
259 | } | 260 | } |
260 | 261 | ||
261 | // initialization failed | 262 | // initialization failed |
262 | messg->setText(_ifaceppp->modem()->modemMessage()); | 263 | messg->setText(_ifaceppp->modem()->modemMessage()); |
263 | vmain = 20; // wait until cancel is pressed | 264 | vmain = 20; // wait until cancel is pressed |
264 | _ifaceppp->modem()->unlockdevice(); | 265 | _ifaceppp->modem()->unlockdevice(); |
265 | } | 266 | } |
266 | 267 | ||
267 | 268 | ||
268 | void ConnectWidget::timerEvent(QTimerEvent *) { | 269 | void ConnectWidget::timerEvent(QTimerEvent *) { |
269 | if (semaphore || pausing) | 270 | if (semaphore || pausing) |
270 | return; | 271 | return; |
271 | 272 | ||
272 | if(vmain == 0) { | 273 | if(vmain == 0) { |
273 | #ifdef DEBUG_WO_DIALING | 274 | #ifdef DEBUG_WO_DIALING |
274 | vmain = 10; | 275 | vmain = 10; |
275 | return; | 276 | return; |
276 | #endif | 277 | #endif |
277 | 278 | ||
278 | assert(PPPData::NumInitStrings > 0); | 279 | assert(PPPData::NumInitStrings > 0); |
279 | // first init string ? | 280 | // first init string ? |
280 | if(substate == -1) { | 281 | if(substate == -1) { |
281 | messg->setText(QObject::tr("Initializing modem...")); | 282 | messg->setText(QObject::tr("Initializing modem...")); |
282 | emit debugMessage(QObject::tr("Initializing modem...")); | 283 | emit debugMessage(QObject::tr("Initializing modem...")); |
283 | substate = 0; | 284 | substate = 0; |
284 | } | 285 | } |
285 | 286 | ||
286 | QString initStr = _ifaceppp->data()->modemInitStr(substate); | 287 | QString initStr = _ifaceppp->data()->modemInitStr(substate); |
287 | if (!initStr.isEmpty()) { | 288 | if (!initStr.isEmpty()) { |
288 | // send a carriage return and then wait a bit so that the modem will | 289 | // send a carriage return and then wait a bit so that the modem will |
289 | // let us issue commands. | 290 | // let us issue commands. |
290 | if(_ifaceppp->data()->modemPreInitDelay() > 0) { | 291 | if(_ifaceppp->data()->modemPreInitDelay() > 0) { |
291 | usleep(_ifaceppp->data()->modemPreInitDelay() * 5000); | 292 | usleep(_ifaceppp->data()->modemPreInitDelay() * 5000); |
292 | writeline(""); | 293 | writeline(""); |
293 | usleep(_ifaceppp->data()->modemPreInitDelay() * 5000); | 294 | usleep(_ifaceppp->data()->modemPreInitDelay() * 5000); |
294 | } | 295 | } |
295 | setExpect(_ifaceppp->data()->modemInitResp()); | 296 | setExpect(_ifaceppp->data()->modemInitResp()); |
296 | writeline(initStr); | 297 | writeline(initStr); |
297 | usleep(_ifaceppp->data()->modemInitDelay() * 10000); // 0.01 - 3.0 sec | 298 | usleep(_ifaceppp->data()->modemInitDelay() * 10000); // 0.01 - 3.0 sec |
298 | } | 299 | } |
299 | 300 | ||
300 | substate++; | 301 | substate++; |
301 | 302 | ||
302 | /* | 303 | /* |
303 | * FIXME after 3.0: Make it possible to disable ATS11 since it | 304 | * FIXME after 3.0: Make it possible to disable ATS11 since it |
304 | * seems to be incompatible with some ISDN adapters (e.g. DataBox | 305 | * seems to be incompatible with some ISDN adapters (e.g. DataBox |
305 | * Speed Dragon). Even better would be to detect this when doing | 306 | * Speed Dragon). Even better would be to detect this when doing |
306 | * a "Modem Query" | 307 | * a "Modem Query" |
307 | */ | 308 | */ |
308 | if (MODEM_TONEDURATION != _ifaceppp->data()->modemToneDuration()) | 309 | if (MODEM_TONEDURATION != _ifaceppp->data()->modemToneDuration()) |
309 | vmain = 5; | 310 | vmain = 5; |
310 | else | 311 | else |
311 | vmain = 3; | 312 | vmain = 3; |
312 | 313 | ||
313 | return; | 314 | return; |
314 | } | 315 | } |
315 | 316 | ||
316 | if (vmain == 5) { | 317 | if (vmain == 5) { |
317 | if(!expecting) { | 318 | if(!expecting) { |
318 | QString sToneDuration = "ATS11=" + QString::number(_ifaceppp->data()->modemToneDuration()); | 319 | QString sToneDuration = "ATS11=" + QString::number(_ifaceppp->data()->modemToneDuration()); |
319 | QString msg = QObject::tr("Setting ") + sToneDuration; | 320 | QString msg = QObject::tr("Setting ") + sToneDuration; |
320 | messg->setText(msg); | 321 | messg->setText(msg); |
321 | emit debugMessage(msg); | 322 | emit debugMessage(msg); |
322 | setExpect(_ifaceppp->data()->modemInitResp()); | 323 | setExpect(_ifaceppp->data()->modemInitResp()); |
323 | writeline(sToneDuration); | 324 | writeline(sToneDuration); |
324 | } | 325 | } |
325 | vmain = 3; | 326 | vmain = 3; |
326 | return; | 327 | return; |
327 | } | 328 | } |
328 | 329 | ||
329 | if(vmain == 3) { | 330 | if(vmain == 3) { |
330 | if(!expecting) { | 331 | if(!expecting) { |
331 | // done with all init strings ? | 332 | // done with all init strings ? |
332 | if(substate < PPPData::NumInitStrings) { | 333 | if(substate < PPPData::NumInitStrings) { |
333 | vmain = 0; | 334 | vmain = 0; |
334 | return; | 335 | return; |
335 | } | 336 | } |
336 | substate = -1; | 337 | substate = -1; |
337 | // skip setting the volume if command is empty | 338 | // skip setting the volume if command is empty |
338 | if(_ifaceppp->data()->volumeInitString().isEmpty()) { | 339 | if(_ifaceppp->data()->volumeInitString().isEmpty()) { |
339 | vmain = 4; | 340 | vmain = 4; |
340 | return; | 341 | return; |
341 | } | 342 | } |
342 | messg->setText(QObject::tr("Setting speaker volume...")); | 343 | messg->setText(QObject::tr("Setting speaker volume...")); |
343 | emit debugMessage(QObject::tr("Setting speaker volume...")); | 344 | emit debugMessage(QObject::tr("Setting speaker volume...")); |
344 | 345 | ||
345 | setExpect(_ifaceppp->data()->modemInitResp()); | 346 | setExpect(_ifaceppp->data()->modemInitResp()); |
346 | QString vol("AT"); | 347 | QString vol("AT"); |
347 | vol += _ifaceppp->data()->volumeInitString(); | 348 | vol += _ifaceppp->data()->volumeInitString(); |
348 | writeline(vol); | 349 | writeline(vol); |
349 | usleep(_ifaceppp->data()->modemInitDelay() * 10000); // 0.01 - 3.0 sec | 350 | usleep(_ifaceppp->data()->modemInitDelay() * 10000); // 0.01 - 3.0 sec |
350 | vmain = 4; | 351 | vmain = 4; |
351 | return; | 352 | return; |
352 | } | 353 | } |
353 | } | 354 | } |
354 | 355 | ||
355 | if(vmain == 4) { | 356 | if(vmain == 4) { |
356 | if(!expecting) { | 357 | if(!expecting) { |
357 | if(!_ifaceppp->data()->waitForDialTone()) { | 358 | if(!_ifaceppp->data()->waitForDialTone()) { |
358 | QString msg = QObject::tr("Turning off dial tone waiting..."); | 359 | QString msg = QObject::tr("Turning off dial tone waiting..."); |
359 | messg->setText(msg); | 360 | messg->setText(msg); |
360 | emit debugMessage(msg); | 361 | emit debugMessage(msg); |
361 | setExpect(_ifaceppp->data()->modemInitResp()); | 362 | setExpect(_ifaceppp->data()->modemInitResp()); |
362 | writeline(_ifaceppp->data()->modemNoDialToneDetectionStr()); | 363 | writeline(_ifaceppp->data()->modemNoDialToneDetectionStr()); |
363 | } | 364 | } |
364 | vmain = 1; | 365 | vmain = 1; |
365 | return; | 366 | return; |
366 | } | 367 | } |
367 | } | 368 | } |
368 | 369 | ||
369 | // dial the number and wait to connect | 370 | // dial the number and wait to connect |
370 | if(vmain == 1) { | 371 | if(vmain == 1) { |
371 | if(!expecting) { | 372 | if(!expecting) { |
372 | 373 | ||
373 | timeout_timer->stop(); | 374 | timeout_timer->stop(); |
374 | timeout_timer->start(_ifaceppp->data()->modemTimeout()*1000); | 375 | timeout_timer->start(_ifaceppp->data()->modemTimeout()*1000); |
375 | 376 | ||
376 | QStringList &plist = _ifaceppp->data()->phonenumbers(); | 377 | QStringList &plist = _ifaceppp->data()->phonenumbers(); |
377 | QString bmarg= _ifaceppp->data()->dialPrefix(); | 378 | QString bmarg= _ifaceppp->data()->dialPrefix(); |
378 | bmarg += *plist.at(dialnumber); | 379 | bmarg += *plist.at(dialnumber); |
379 | QString bm = QObject::tr("Dialing %1").arg(bmarg); | 380 | QString bm = QObject::tr("Dialing %1").arg(bmarg); |
380 | messg->setText(bm); | 381 | messg->setText(bm); |
381 | emit debugMessage(bm); | 382 | emit debugMessage(bm); |
382 | 383 | ||
383 | QString pn = _ifaceppp->data()->modemDialStr(); | 384 | QString pn = _ifaceppp->data()->modemDialStr(); |
384 | pn += _ifaceppp->data()->dialPrefix(); | 385 | pn += _ifaceppp->data()->dialPrefix(); |
385 | pn += *plist.at(dialnumber); | 386 | pn += *plist.at(dialnumber); |
386 | if(++dialnumber >= plist.count()) | 387 | if(++dialnumber >= plist.count()) |
387 | dialnumber = 0; | 388 | dialnumber = 0; |
388 | writeline(pn); | 389 | writeline(pn); |
389 | 390 | ||
390 | setExpect(_ifaceppp->data()->modemConnectResp()); | 391 | setExpect(_ifaceppp->data()->modemConnectResp()); |
391 | vmain = 100; | 392 | vmain = 100; |
392 | return; | 393 | return; |
393 | } | 394 | } |
394 | } | 395 | } |
395 | 396 | ||
396 | // wait for connect, but redial if BUSY or wait for user cancel | 397 | // wait for connect, but redial if BUSY or wait for user cancel |
397 | // if NO CARRIER or NO DIALTONE | 398 | // if NO CARRIER or NO DIALTONE |
398 | if(vmain == 100) { | 399 | if(vmain == 100) { |
399 | if(!expecting) { | 400 | if(!expecting) { |
400 | myreadbuffer = _ifaceppp->data()->modemConnectResp(); | 401 | myreadbuffer = _ifaceppp->data()->modemConnectResp(); |
401 | setExpect("\n"); | 402 | setExpect("\n"); |
402 | vmain = 101; | 403 | vmain = 101; |
403 | return; | 404 | return; |
404 | } | 405 | } |
405 | 406 | ||
406 | if(readbuffer.contains(_ifaceppp->data()->modemBusyResp())) { | 407 | if(readbuffer.contains(_ifaceppp->data()->modemBusyResp())) { |
407 | timeout_timer->stop(); | 408 | timeout_timer->stop(); |
408 | timeout_timer->start(_ifaceppp->data()->modemTimeout()*1000); | 409 | timeout_timer->start(_ifaceppp->data()->modemTimeout()*1000); |
409 | 410 | ||
410 | messg->setText(QObject::tr("Line busy. Hanging up...")); | 411 | messg->setText(QObject::tr("Line busy. Hanging up...")); |
411 | emit debugPutChar('\n'); | 412 | emit debugPutChar('\n'); |
412 | _ifaceppp->modem()->hangup(); | 413 | _ifaceppp->modem()->hangup(); |
413 | 414 | ||
414 | if(_ifaceppp->data()->busyWait() > 0) { | 415 | if(_ifaceppp->data()->busyWait() > 0) { |
415 | QString bm = QObject::tr("Line busy. Waiting: %1 seconds").arg(_ifaceppp->data()->busyWait()); | 416 | QString bm = QObject::tr("Line busy. Waiting: %1 seconds").arg(_ifaceppp->data()->busyWait()); |
416 | messg->setText(bm); | 417 | messg->setText(bm); |
417 | emit debugMessage(bm); | 418 | emit debugMessage(bm); |
418 | 419 | ||
419 | pausing = true; | 420 | pausing = true; |
420 | 421 | ||
421 | pausetimer->start(_ifaceppp->data()->busyWait()*1000, true); | 422 | pausetimer->start(_ifaceppp->data()->busyWait()*1000, true); |
diff --git a/noncore/settings/networksettings/ppp/devices.cpp b/noncore/settings/networksettings/ppp/devices.cpp index 350ff32..42de44c 100644 --- a/noncore/settings/networksettings/ppp/devices.cpp +++ b/noncore/settings/networksettings/ppp/devices.cpp | |||
@@ -1,217 +1,219 @@ | |||
1 | /* | 1 | /* |
2 | * kPPP: A pppd front end for the KDE project | 2 | * kPPP: A pppd front end for the KDE project |
3 | * | 3 | * |
4 | * $Id$ | 4 | * $Id$ |
5 | * | 5 | * |
6 | * Copyright (C) 1997 Bernd Johannes Wuebben | 6 | * Copyright (C) 1997 Bernd Johannes Wuebben |
7 | * wuebben@math.cornell.edu | 7 | * wuebben@math.cornell.edu |
8 | * | 8 | * |
9 | * based on EzPPP: | 9 | * based on EzPPP: |
10 | * Copyright (C) 1997 Jay Painter | 10 | * Copyright (C) 1997 Jay Painter |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Library General Public | 13 | * modify it under the terms of the GNU Library General Public |
14 | * License as published by the Free Software Foundation; either | 14 | * License as published by the Free Software Foundation; either |
15 | * version 2 of the License, or (at your option) any later version. | 15 | * version 2 of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This program is distributed in the hope that it will be useful, | 17 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Library General Public License for more details. | 20 | * Library General Public License for more details. |
21 | * | 21 | * |
22 | * You should have received a copy of the GNU Library General Public | 22 | * You should have received a copy of the GNU Library General Public |
23 | * License along with this program; if not, write to the Free | 23 | * License along with this program; if not, write to the Free |
24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include "interfaceppp.h" | 27 | #include "interfaceppp.h" |
28 | #include "devices.h" | 28 | #include "devices.h" |
29 | #include "authwidget.h" | 29 | #include "authwidget.h" |
30 | #include "pppdata.h" | 30 | #include "pppdata.h" |
31 | #include "edit.h" | 31 | #include "edit.h" |
32 | #include "general.h" | 32 | #include "general.h" |
33 | 33 | ||
34 | /* OPIE */ | 34 | /* OPIE */ |
35 | #include <opie2/odebug.h> | ||
35 | #include <qpe/qpeapplication.h> | 36 | #include <qpe/qpeapplication.h> |
37 | using namespace Opie::Core; | ||
36 | 38 | ||
37 | /* QT */ | 39 | /* QT */ |
38 | #include <qdir.h> | 40 | #include <qdir.h> |
39 | #include <qlayout.h> | 41 | #include <qlayout.h> |
40 | #include <qtabwidget.h> | 42 | #include <qtabwidget.h> |
41 | #include <qtabdialog.h> | 43 | #include <qtabdialog.h> |
42 | #include <qwhatsthis.h> | 44 | #include <qwhatsthis.h> |
43 | #include <qmessagebox.h> | 45 | #include <qmessagebox.h> |
44 | #include <qapplication.h> | 46 | #include <qapplication.h> |
45 | #include <qbuttongroup.h> | 47 | #include <qbuttongroup.h> |
46 | #include <qmessagebox.h> | 48 | #include <qmessagebox.h> |
47 | #include <qvgroupbox.h> | 49 | #include <qvgroupbox.h> |
48 | 50 | ||
49 | /* STD */ | 51 | /* STD */ |
50 | #include <stdlib.h> | 52 | #include <stdlib.h> |
51 | 53 | ||
52 | 54 | ||
53 | void parseargs(char* buf, char** args); | 55 | void parseargs(char* buf, char** args); |
54 | 56 | ||
55 | DevicesWidget::DevicesWidget( InterfacePPP* ip, QWidget *parent, const char *name, WFlags f ) | 57 | DevicesWidget::DevicesWidget( InterfacePPP* ip, QWidget *parent, const char *name, WFlags f ) |
56 | : ChooserWidget(ip->data(), parent, name, f) | 58 | : ChooserWidget(ip->data(), parent, name, f) |
57 | { | 59 | { |
58 | _ifaceppp = ip; | 60 | _ifaceppp = ip; |
59 | QWhatsThis::add(edit_b, tr("Allows you to modify the selected device")); | 61 | QWhatsThis::add(edit_b, tr("Allows you to modify the selected device")); |
60 | QWhatsThis::add(new_b, tr("Create a new device") ); | 62 | QWhatsThis::add(new_b, tr("Create a new device") ); |
61 | 63 | ||
62 | QWhatsThis::add(copy_b, | 64 | QWhatsThis::add(copy_b, |
63 | tr("Makes a copy of the selected device. All\n" | 65 | tr("Makes a copy of the selected device. All\n" |
64 | "settings of the selected device are copied\n" | 66 | "settings of the selected device are copied\n" |
65 | "to a new device, that you can modify to fit your\n" | 67 | "to a new device, that you can modify to fit your\n" |
66 | "needs")); | 68 | "needs")); |
67 | QWhatsThis::add(delete_b, | 69 | QWhatsThis::add(delete_b, |
68 | tr("<p>Deletes the selected device\n\n" | 70 | tr("<p>Deletes the selected device\n\n" |
69 | "<font color=\"red\"><b>Use with care!</b></font>")); | 71 | "<font color=\"red\"><b>Use with care!</b></font>")); |
70 | 72 | ||
71 | copy_b->setEnabled( false ); //FIXME | 73 | copy_b->setEnabled( false ); //FIXME |
72 | // delete_b->setEnabled( false ); //FIXME | 74 | // delete_b->setEnabled( false ); //FIXME |
73 | 75 | ||
74 | QStringList tmp = _pppdata->getDevicesNamesList(); | 76 | QStringList tmp = _pppdata->getDevicesNamesList(); |
75 | odebug << "DevicesWidget::DevicesWidget got devices " << tmp.join("--").latin1() << "" << oendl; | 77 | odebug << "DevicesWidget::DevicesWidget got devices " << tmp.join("--").latin1() << "" << oendl; |
76 | listListbox->insertStringList(tmp); | 78 | listListbox->insertStringList(tmp); |
77 | 79 | ||
78 | for (uint i = 0; i < listListbox->count(); i++){ | 80 | for (uint i = 0; i < listListbox->count(); i++){ |
79 | odebug << "listListbox->text(i) " << listListbox->text(i).latin1() << " == _pppdata->devname() " << _pppdata->devname().latin1() << "" << oendl; | 81 | odebug << "listListbox->text(i) " << listListbox->text(i).latin1() << " == _pppdata->devname() " << _pppdata->devname().latin1() << "" << oendl; |
80 | if ( listListbox->text(i) == _pppdata->devname() ) | 82 | if ( listListbox->text(i) == _pppdata->devname() ) |
81 | listListbox->setCurrentItem( i ); | 83 | listListbox->setCurrentItem( i ); |
82 | } | 84 | } |
83 | } | 85 | } |
84 | 86 | ||
85 | 87 | ||
86 | 88 | ||
87 | void DevicesWidget::slotListBoxSelect(int idx) { | 89 | void DevicesWidget::slotListBoxSelect(int idx) { |
88 | bool ok = _pppdata->setDevice( listListbox->text(idx) ); | 90 | bool ok = _pppdata->setDevice( listListbox->text(idx) ); |
89 | delete_b->setEnabled((bool)(idx != -1)); | 91 | delete_b->setEnabled((bool)(idx != -1)); |
90 | edit_b->setEnabled((bool)(idx != -1)); | 92 | edit_b->setEnabled((bool)(idx != -1)); |
91 | //FIXME copy_b->setEnabled((bool)(idx != -1)); | 93 | //FIXME copy_b->setEnabled((bool)(idx != -1)); |
92 | } | 94 | } |
93 | 95 | ||
94 | void DevicesWidget::edit() { | 96 | void DevicesWidget::edit() { |
95 | _pppdata->setDevice(listListbox->text(listListbox->currentItem())); | 97 | _pppdata->setDevice(listListbox->text(listListbox->currentItem())); |
96 | 98 | ||
97 | int result = doTab(); | 99 | int result = doTab(); |
98 | 100 | ||
99 | if(result == QDialog::Accepted) { | 101 | if(result == QDialog::Accepted) { |
100 | listListbox->changeItem(_pppdata->devname(),listListbox->currentItem()); | 102 | listListbox->changeItem(_pppdata->devname(),listListbox->currentItem()); |
101 | _pppdata->save(); | 103 | _pppdata->save(); |
102 | } | 104 | } |
103 | } | 105 | } |
104 | 106 | ||
105 | 107 | ||
106 | void DevicesWidget::create() { | 108 | void DevicesWidget::create() { |
107 | 109 | ||
108 | // if(listListbox->count() == MAX_ACCOUNTS) { | 110 | // if(listListbox->count() == MAX_ACCOUNTS) { |
109 | // QMessageBox::information(this, "sorry", | 111 | // QMessageBox::information(this, "sorry", |
110 | // tr("Maximum number of accounts reached.")); | 112 | // tr("Maximum number of accounts reached.")); |
111 | // return; | 113 | // return; |
112 | // } | 114 | // } |
113 | 115 | ||
114 | int result; | 116 | int result; |
115 | if (_pppdata->newdevice() == -1){ | 117 | if (_pppdata->newdevice() == -1){ |
116 | return; | 118 | return; |
117 | } | 119 | } |
118 | result = doTab(); | 120 | result = doTab(); |
119 | 121 | ||
120 | if(result == QDialog::Accepted) { | 122 | if(result == QDialog::Accepted) { |
121 | listListbox->insertItem(_pppdata->devname()); | 123 | listListbox->insertItem(_pppdata->devname()); |
122 | listListbox->setSelected(listListbox->findItem(_pppdata->devname()),true ); | 124 | listListbox->setSelected(listListbox->findItem(_pppdata->devname()),true ); |
123 | 125 | ||
124 | _pppdata->save(); | 126 | _pppdata->save(); |
125 | } else | 127 | } else |
126 | _pppdata->deleteDevice(); | 128 | _pppdata->deleteDevice(); |
127 | } | 129 | } |
128 | 130 | ||
129 | 131 | ||
130 | void DevicesWidget::copy() { | 132 | void DevicesWidget::copy() { |
131 | // if(listListbox->count() == MAX_ACCOUNTS) { | 133 | // if(listListbox->count() == MAX_ACCOUNTS) { |
132 | // QMessageBox::information(this, "sorry", tr("Maximum number of accounts reached.")); | 134 | // QMessageBox::information(this, "sorry", tr("Maximum number of accounts reached.")); |
133 | // return; | 135 | // return; |
134 | // } | 136 | // } |
135 | 137 | ||
136 | if(listListbox->currentItem()<0) { | 138 | if(listListbox->currentItem()<0) { |
137 | QMessageBox::information(this, "sorry", tr("No devices selected.")); | 139 | QMessageBox::information(this, "sorry", tr("No devices selected.")); |
138 | return; | 140 | return; |
139 | } | 141 | } |
140 | 142 | ||
141 | _pppdata->copydevice(listListbox->currentText()); | 143 | _pppdata->copydevice(listListbox->currentText()); |
142 | 144 | ||
143 | listListbox->insertItem(_pppdata->devname()); | 145 | listListbox->insertItem(_pppdata->devname()); |
144 | _pppdata->save(); | 146 | _pppdata->save(); |
145 | } | 147 | } |
146 | 148 | ||
147 | 149 | ||
148 | void DevicesWidget::remove() { | 150 | void DevicesWidget::remove() { |
149 | 151 | ||
150 | QString s = tr("Are you sure you want to delete\nthe device \"%1\"?") | 152 | QString s = tr("Are you sure you want to delete\nthe device \"%1\"?") |
151 | .arg(listListbox->text(listListbox->currentItem())); | 153 | .arg(listListbox->text(listListbox->currentItem())); |
152 | 154 | ||
153 | if(QMessageBox::warning(this,tr("Confirm"),s, | 155 | if(QMessageBox::warning(this,tr("Confirm"),s, |
154 | QMessageBox::Yes,QMessageBox::No | 156 | QMessageBox::Yes,QMessageBox::No |
155 | ) != QMessageBox::Yes) | 157 | ) != QMessageBox::Yes) |
156 | return; | 158 | return; |
157 | 159 | ||
158 | if(_pppdata->deleteDevice(listListbox->text(listListbox->currentItem()))) | 160 | if(_pppdata->deleteDevice(listListbox->text(listListbox->currentItem()))) |
159 | listListbox->removeItem(listListbox->currentItem()); | 161 | listListbox->removeItem(listListbox->currentItem()); |
160 | 162 | ||
161 | 163 | ||
162 | // _pppdata->save(); | 164 | // _pppdata->save(); |
163 | 165 | ||
164 | 166 | ||
165 | slotListBoxSelect(listListbox->currentItem()); | 167 | slotListBoxSelect(listListbox->currentItem()); |
166 | 168 | ||
167 | } | 169 | } |
168 | 170 | ||
169 | 171 | ||
170 | int DevicesWidget::doTab(){ | 172 | int DevicesWidget::doTab(){ |
171 | QDialog *dlg = new QDialog( 0, "newDevice", true, Qt::WStyle_ContextHelp ); | 173 | QDialog *dlg = new QDialog( 0, "newDevice", true, Qt::WStyle_ContextHelp ); |
172 | QVBoxLayout *layout = new QVBoxLayout( dlg ); | 174 | QVBoxLayout *layout = new QVBoxLayout( dlg ); |
173 | layout->setSpacing( 0 ); | 175 | layout->setSpacing( 0 ); |
174 | layout->setMargin( 1 ); | 176 | layout->setMargin( 1 ); |
175 | 177 | ||
176 | QTabWidget *tabWindow = new QTabWidget( dlg, "tabWindow" ); | 178 | QTabWidget *tabWindow = new QTabWidget( dlg, "tabWindow" ); |
177 | layout->addWidget( tabWindow ); | 179 | layout->addWidget( tabWindow ); |
178 | 180 | ||
179 | bool isnew; | 181 | bool isnew; |
180 | 182 | ||
181 | if(_pppdata->devname().isEmpty()) { | 183 | if(_pppdata->devname().isEmpty()) { |
182 | dlg->setCaption(tr("New Device")); | 184 | dlg->setCaption(tr("New Device")); |
183 | isnew = true; | 185 | isnew = true; |
184 | } else { | 186 | } else { |
185 | QString tit = tr("Edit Device: "); | 187 | QString tit = tr("Edit Device: "); |
186 | tit += _pppdata->devname(); | 188 | tit += _pppdata->devname(); |
187 | dlg->setCaption(tit); | 189 | dlg->setCaption(tit); |
188 | isnew = false; | 190 | isnew = false; |
189 | } | 191 | } |
190 | 192 | ||
191 | modem1 = new ModemWidget( _pppdata, tabWindow, "modem1" ); | 193 | modem1 = new ModemWidget( _pppdata, tabWindow, "modem1" ); |
192 | tabWindow->addTab( modem1, tr("&Device") ); | 194 | tabWindow->addTab( modem1, tr("&Device") ); |
193 | modem2 = new ModemWidget2( _pppdata, _ifaceppp, tabWindow, "modem2" ); | 195 | modem2 = new ModemWidget2( _pppdata, _ifaceppp, tabWindow, "modem2" ); |
194 | tabWindow->addTab( modem2, tr("&Modem") ); | 196 | tabWindow->addTab( modem2, tr("&Modem") ); |
195 | 197 | ||
196 | int result = 0; | 198 | int result = 0; |
197 | bool ok = false; | 199 | bool ok = false; |
198 | 200 | ||
199 | while (!ok){ | 201 | while (!ok){ |
200 | result = QPEApplication::execDialog( dlg ); | 202 | result = QPEApplication::execDialog( dlg ); |
201 | ok = true; | 203 | ok = true; |
202 | 204 | ||
203 | if(result == QDialog::Accepted) { | 205 | if(result == QDialog::Accepted) { |
204 | if (!modem1->save()){ | 206 | if (!modem1->save()){ |
205 | QMessageBox::critical(this, "error", tr( "You must enter a unique device name")); | 207 | QMessageBox::critical(this, "error", tr( "You must enter a unique device name")); |
206 | ok = false; | 208 | ok = false; |
207 | }else{ | 209 | }else{ |
208 | modem2->save(); | 210 | modem2->save(); |
209 | } | 211 | } |
210 | } | 212 | } |
211 | } | 213 | } |
212 | 214 | ||
213 | delete dlg; | 215 | delete dlg; |
214 | 216 | ||
215 | return result; | 217 | return result; |
216 | } | 218 | } |
217 | 219 | ||
diff --git a/noncore/settings/networksettings/ppp/general.cpp b/noncore/settings/networksettings/ppp/general.cpp index 69bb682..40ba19b 100644 --- a/noncore/settings/networksettings/ppp/general.cpp +++ b/noncore/settings/networksettings/ppp/general.cpp | |||
@@ -1,419 +1,421 @@ | |||
1 | /* | 1 | /* |
2 | * kPPP: A pppd front end for the KDE project | 2 | * kPPP: A pppd front end for the KDE project |
3 | * | 3 | * |
4 | * $Id$ | 4 | * $Id$ |
5 | * | 5 | * |
6 | * Copyright (C) 1997 Bernd Johannes Wuebben | 6 | * Copyright (C) 1997 Bernd Johannes Wuebben |
7 | * wuebben@math.cornell.edu | 7 | * wuebben@math.cornell.edu |
8 | * | 8 | * |
9 | * based on EzPPP: | 9 | * based on EzPPP: |
10 | * Copyright (C) 1997 Jay Painter | 10 | * Copyright (C) 1997 Jay Painter |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Library General Public | 13 | * modify it under the terms of the GNU Library General Public |
14 | * License as published by the Free Software Foundation; either | 14 | * License as published by the Free Software Foundation; either |
15 | * version 2 of the License, or (at your option) any later version. | 15 | * version 2 of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This program is distributed in the hope that it will be useful, | 17 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Library General Public License for more details. | 20 | * Library General Public License for more details. |
21 | * | 21 | * |
22 | * You should have received a copy of the GNU Library General Public | 22 | * You should have received a copy of the GNU Library General Public |
23 | * License along with this program; if not, write to the Free | 23 | * License along with this program; if not, write to the Free |
24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include "general.h" | 27 | #include "general.h" |
28 | #include "interfaceppp.h" | 28 | #include "interfaceppp.h" |
29 | #include "modeminfo.h" | 29 | #include "modeminfo.h" |
30 | #include "modemcmds.h" | 30 | #include "modemcmds.h" |
31 | #include "pppdata.h" | 31 | #include "pppdata.h" |
32 | 32 | ||
33 | /* OPIE */ | 33 | /* OPIE */ |
34 | #include <opie2/odebug.h> | ||
34 | #include <qpe/config.h> | 35 | #include <qpe/config.h> |
35 | #include <qpe/qpeapplication.h> | 36 | #include <qpe/qpeapplication.h> |
37 | using namespace Opie::Core; | ||
36 | 38 | ||
37 | /* QT */ | 39 | /* QT */ |
38 | #include <qcheckbox.h> | 40 | #include <qcheckbox.h> |
39 | #include <qcombobox.h> | 41 | #include <qcombobox.h> |
40 | #include <qlabel.h> | 42 | #include <qlabel.h> |
41 | #include <qlayout.h> | 43 | #include <qlayout.h> |
42 | #include <qpushbutton.h> | 44 | #include <qpushbutton.h> |
43 | #include <qslider.h> | 45 | #include <qslider.h> |
44 | #include <qspinbox.h> | 46 | #include <qspinbox.h> |
45 | #include <qwhatsthis.h> | 47 | #include <qwhatsthis.h> |
46 | 48 | ||
47 | /* STD */ | 49 | /* STD */ |
48 | #include <termios.h> | 50 | #include <termios.h> |
49 | #include <string.h> | 51 | #include <string.h> |
50 | 52 | ||
51 | 53 | ||
52 | ModemWidget::ModemWidget( PPPData *pd, QWidget *parent, const char *name ) | 54 | ModemWidget::ModemWidget( PPPData *pd, QWidget *parent, const char *name ) |
53 | : QWidget(parent, name), _pppdata(pd) | 55 | : QWidget(parent, name), _pppdata(pd) |
54 | { | 56 | { |
55 | int k; | 57 | int k; |
56 | 58 | ||
57 | QGridLayout *tl = new QGridLayout(this, 8, 2, 0 );//, KDialog::spacingHint()); | 59 | QGridLayout *tl = new QGridLayout(this, 8, 2, 0 );//, KDialog::spacingHint()); |
58 | 60 | ||
59 | QLabel *label1; | 61 | QLabel *label1; |
60 | 62 | ||
61 | label1 = new QLabel(tr("Modem &name:"), this); | 63 | label1 = new QLabel(tr("Modem &name:"), this); |
62 | tl->addWidget(label1, 0, 0); | 64 | tl->addWidget(label1, 0, 0); |
63 | 65 | ||
64 | modemname = new QLineEdit(this, "modemName"); | 66 | modemname = new QLineEdit(this, "modemName"); |
65 | modemname->setText( _pppdata->devname() ); | 67 | modemname->setText( _pppdata->devname() ); |
66 | label1->setBuddy(modemname); | 68 | label1->setBuddy(modemname); |
67 | tl->addWidget(modemname, 0, 1); | 69 | tl->addWidget(modemname, 0, 1); |
68 | 70 | ||
69 | label1 = new QLabel(tr("Modem de&vice:"), this); | 71 | label1 = new QLabel(tr("Modem de&vice:"), this); |
70 | tl->addWidget(label1, 1, 0); | 72 | tl->addWidget(label1, 1, 0); |
71 | 73 | ||
72 | modemdevice = new QComboBox(false, this); | 74 | modemdevice = new QComboBox(false, this); |
73 | modemdevice->setEditable( true ); | 75 | modemdevice->setEditable( true ); |
74 | modemdevice->setDuplicatesEnabled ( false ); | 76 | modemdevice->setDuplicatesEnabled ( false ); |
75 | modemdevice->setInsertionPolicy( QComboBox::AtTop ); | 77 | modemdevice->setInsertionPolicy( QComboBox::AtTop ); |
76 | label1->setBuddy(modemdevice); | 78 | label1->setBuddy(modemdevice); |
77 | 79 | ||
78 | Config cfg("NetworkSetupPPP"); | 80 | Config cfg("NetworkSetupPPP"); |
79 | cfg.setGroup("Devices_General"); | 81 | cfg.setGroup("Devices_General"); |
80 | QStringList devs = cfg.readListEntry("devices",','); | 82 | QStringList devs = cfg.readListEntry("devices",','); |
81 | if (devs.isEmpty()) devs << "/dev/modem" << "/dev/ircomm0" << "/dev/ttyS0"; | 83 | if (devs.isEmpty()) devs << "/dev/modem" << "/dev/ircomm0" << "/dev/ttyS0"; |
82 | modemdevice->insertStringList( devs ); | 84 | modemdevice->insertStringList( devs ); |
83 | tl->addWidget(modemdevice, 1, 1); | 85 | tl->addWidget(modemdevice, 1, 1); |
84 | 86 | ||
85 | // connect(modemdevice, SIGNAL(activated(int)), | 87 | // connect(modemdevice, SIGNAL(activated(int)), |
86 | // SLOT(setmodemdc(int))); | 88 | // SLOT(setmodemdc(int))); |
87 | // connect(modemdevice, SIGNAL(textChanged(const QString&) ), | 89 | // connect(modemdevice, SIGNAL(textChanged(const QString&) ), |
88 | // SLOT( setmodemdc(const QString&) ) ); | 90 | // SLOT( setmodemdc(const QString&) ) ); |
89 | 91 | ||
90 | QString tmp = tr("This specifies the serial port your modem is attached \n" | 92 | QString tmp = tr("This specifies the serial port your modem is attached \n" |
91 | "to. On Linux/x86, typically this is either /dev/ttyS0 \n" | 93 | "to. On Linux/x86, typically this is either /dev/ttyS0 \n" |
92 | "(COM1 under DOS) or /dev/ttyS1 (COM2 under DOS).\n" | 94 | "(COM1 under DOS) or /dev/ttyS1 (COM2 under DOS).\n" |
93 | "\n" | 95 | "\n" |
94 | "If you have an internal ISDN card with AT command\n" | 96 | "If you have an internal ISDN card with AT command\n" |
95 | "emulation (most cards under Linux support this), you\n" | 97 | "emulation (most cards under Linux support this), you\n" |
96 | "should select one of the /dev/ttyIx devices."); | 98 | "should select one of the /dev/ttyIx devices."); |
97 | 99 | ||
98 | QWhatsThis::add(label1,tmp); | 100 | QWhatsThis::add(label1,tmp); |
99 | QWhatsThis::add(modemdevice,tmp); | 101 | QWhatsThis::add(modemdevice,tmp); |
100 | 102 | ||
101 | 103 | ||
102 | label1 = new QLabel(tr("&Flow control:"), this); | 104 | label1 = new QLabel(tr("&Flow control:"), this); |
103 | tl->addWidget(label1, 2, 0); | 105 | tl->addWidget(label1, 2, 0); |
104 | 106 | ||
105 | flowcontrol = new QComboBox(false, this); | 107 | flowcontrol = new QComboBox(false, this); |
106 | label1->setBuddy(flowcontrol); | 108 | label1->setBuddy(flowcontrol); |
107 | flowcontrol->insertItem(tr("Hardware [CRTSCTS]")); | 109 | flowcontrol->insertItem(tr("Hardware [CRTSCTS]")); |
108 | flowcontrol->insertItem(tr("Software [XON/XOFF]")); | 110 | flowcontrol->insertItem(tr("Software [XON/XOFF]")); |
109 | flowcontrol->insertItem(tr("None")); | 111 | flowcontrol->insertItem(tr("None")); |
110 | tl->addWidget(flowcontrol, 2, 1); | 112 | tl->addWidget(flowcontrol, 2, 1); |
111 | // connect(flowcontrol, SIGNAL(activated(int)), | 113 | // connect(flowcontrol, SIGNAL(activated(int)), |
112 | // SLOT(setflowcontrol(int))); | 114 | // SLOT(setflowcontrol(int))); |
113 | 115 | ||
114 | tmp = tr("<p>Specifies how the serial port and modem\n" | 116 | tmp = tr("<p>Specifies how the serial port and modem\n" |
115 | "communicate. You should not change this unless\n" | 117 | "communicate. You should not change this unless\n" |
116 | "you know what you are doing.\n" | 118 | "you know what you are doing.\n" |
117 | "\n" | 119 | "\n" |
118 | "<b>Default</b>: CRTSCTS"); | 120 | "<b>Default</b>: CRTSCTS"); |
119 | 121 | ||
120 | QWhatsThis::add(label1,tmp); | 122 | QWhatsThis::add(label1,tmp); |
121 | QWhatsThis::add(flowcontrol,tmp); | 123 | QWhatsThis::add(flowcontrol,tmp); |
122 | 124 | ||
123 | QLabel *labelenter = new QLabel(tr("&Line termination:"), this); | 125 | QLabel *labelenter = new QLabel(tr("&Line termination:"), this); |
124 | tl->addWidget(labelenter, 3, 0); | 126 | tl->addWidget(labelenter, 3, 0); |
125 | 127 | ||
126 | enter = new QComboBox(false, this); | 128 | enter = new QComboBox(false, this); |
127 | labelenter->setBuddy(enter); | 129 | labelenter->setBuddy(enter); |
128 | enter->insertItem("CR"); | 130 | enter->insertItem("CR"); |
129 | enter->insertItem("LF"); | 131 | enter->insertItem("LF"); |
130 | enter->insertItem("CR/LF"); | 132 | enter->insertItem("CR/LF"); |
131 | tl->addWidget(enter, 3, 1); | 133 | tl->addWidget(enter, 3, 1); |
132 | // connect(enter, SIGNAL(activated(int)), SLOT(setenter(int))); | 134 | // connect(enter, SIGNAL(activated(int)), SLOT(setenter(int))); |
133 | tmp = tr("<p>Specifies how AT commands are sent to your\n" | 135 | tmp = tr("<p>Specifies how AT commands are sent to your\n" |
134 | "modem. Most modems will work fine with the\n" | 136 | "modem. Most modems will work fine with the\n" |
135 | "default <i>CR/LF</i>. If your modem does not react\n" | 137 | "default <i>CR/LF</i>. If your modem does not react\n" |
136 | "to the init string, you should try different\n" | 138 | "to the init string, you should try different\n" |
137 | "settings here\n" | 139 | "settings here\n" |
138 | "\n" | 140 | "\n" |
139 | "<b>Default</b>: CR/LF"); | 141 | "<b>Default</b>: CR/LF"); |
140 | 142 | ||
141 | QWhatsThis::add(labelenter,tmp); | 143 | QWhatsThis::add(labelenter,tmp); |
142 | QWhatsThis::add(enter, tmp); | 144 | QWhatsThis::add(enter, tmp); |
143 | 145 | ||
144 | QLabel *baud_label = new QLabel(tr("Co&nnection speed:"), this); | 146 | QLabel *baud_label = new QLabel(tr("Co&nnection speed:"), this); |
145 | tl->addWidget(baud_label, 4, 0); | 147 | tl->addWidget(baud_label, 4, 0); |
146 | baud_c = new QComboBox(this); | 148 | baud_c = new QComboBox(this); |
147 | baud_label->setBuddy(baud_c); | 149 | baud_label->setBuddy(baud_c); |
148 | 150 | ||
149 | static const char *baudrates[] = | 151 | static const char *baudrates[] = |
150 | { | 152 | { |
151 | 153 | ||
152 | #ifdef B460800 | 154 | #ifdef B460800 |
153 | "460800", | 155 | "460800", |
154 | #endif | 156 | #endif |
155 | 157 | ||
156 | #ifdef B230400 | 158 | #ifdef B230400 |
157 | "230400", | 159 | "230400", |
158 | #endif | 160 | #endif |
159 | 161 | ||
160 | #ifdef B115200 | 162 | #ifdef B115200 |
161 | "115200", | 163 | "115200", |
162 | #endif | 164 | #endif |
163 | 165 | ||
164 | #ifdef B57600 | 166 | #ifdef B57600 |
165 | "57600", | 167 | "57600", |
166 | #endif | 168 | #endif |
167 | 169 | ||
168 | "38400", | 170 | "38400", |
169 | "19200", | 171 | "19200", |
170 | "9600", | 172 | "9600", |
171 | "2400", | 173 | "2400", |
172 | 0 | 174 | 0 |
173 | }; | 175 | }; |
174 | 176 | ||
175 | for(k = 0; baudrates[k]; k++) | 177 | for(k = 0; baudrates[k]; k++) |
176 | baud_c->insertItem(baudrates[k]); | 178 | baud_c->insertItem(baudrates[k]); |
177 | 179 | ||
178 | baud_c->setCurrentItem(3); | 180 | baud_c->setCurrentItem(3); |
179 | // connect(baud_c, SIGNAL(activated(int)), | 181 | // connect(baud_c, SIGNAL(activated(int)), |
180 | // this, SLOT(speed_selection(int))); | 182 | // this, SLOT(speed_selection(int))); |
181 | tl->addWidget(baud_c, 4, 1); | 183 | tl->addWidget(baud_c, 4, 1); |
182 | 184 | ||
183 | tmp = tr("Specifies the speed your modem and the serial\n" | 185 | tmp = tr("Specifies the speed your modem and the serial\n" |
184 | "port talk to each other. You should begin with\n" | 186 | "port talk to each other. You should begin with\n" |
185 | "the default of 38400 bits/sec. If everything\n" | 187 | "the default of 38400 bits/sec. If everything\n" |
186 | "works you can try to increase this value, but to\n" | 188 | "works you can try to increase this value, but to\n" |
187 | "no more than 115200 bits/sec (unless you know\n" | 189 | "no more than 115200 bits/sec (unless you know\n" |
188 | "that your serial port supports higher speeds)."); | 190 | "that your serial port supports higher speeds)."); |
189 | 191 | ||
190 | QWhatsThis::add(baud_label,tmp); | 192 | QWhatsThis::add(baud_label,tmp); |
191 | QWhatsThis::add(baud_c,tmp); | 193 | QWhatsThis::add(baud_c,tmp); |
192 | 194 | ||
193 | for(int i=0; i <= enter->count()-1; i++) | 195 | for(int i=0; i <= enter->count()-1; i++) |
194 | { | 196 | { |
195 | if(_pppdata->enter() == enter->text(i)) | 197 | if(_pppdata->enter() == enter->text(i)) |
196 | enter->setCurrentItem(i); | 198 | enter->setCurrentItem(i); |
197 | } | 199 | } |
198 | 200 | ||
199 | tl->addRowSpacing(5, 10); | 201 | tl->addRowSpacing(5, 10); |
200 | 202 | ||
201 | //Modem Lock File | 203 | //Modem Lock File |
202 | modemlockfile = new QCheckBox(tr("&Use lock file"), this); | 204 | modemlockfile = new QCheckBox(tr("&Use lock file"), this); |
203 | 205 | ||
204 | modemlockfile->setChecked(_pppdata->modemLockFile()); | 206 | modemlockfile->setChecked(_pppdata->modemLockFile()); |
205 | // connect(modemlockfile, SIGNAL(toggled(bool)), | 207 | // connect(modemlockfile, SIGNAL(toggled(bool)), |
206 | // SLOT(modemlockfilechanged(bool))); | 208 | // SLOT(modemlockfilechanged(bool))); |
207 | tl->addMultiCellWidget(modemlockfile, 6, 6, 0, 1); | 209 | tl->addMultiCellWidget(modemlockfile, 6, 6, 0, 1); |
208 | // l12->addStretch(1); | 210 | // l12->addStretch(1); |
209 | QWhatsThis::add(modemlockfile, | 211 | QWhatsThis::add(modemlockfile, |
210 | tr("<p>To prevent other programs from accessing the\n" | 212 | tr("<p>To prevent other programs from accessing the\n" |
211 | "modem while a connection is established, a\n" | 213 | "modem while a connection is established, a\n" |
212 | "file can be created to indicate that the modem\n" | 214 | "file can be created to indicate that the modem\n" |
213 | "is in use. On Linux an example file would be\n" | 215 | "is in use. On Linux an example file would be\n" |
214 | "<tt>/var/lock/LCK..ttyS1</tt>\n" | 216 | "<tt>/var/lock/LCK..ttyS1</tt>\n" |
215 | "Here you can select whether this locking will\n" | 217 | "Here you can select whether this locking will\n" |
216 | "be done.\n" | 218 | "be done.\n" |
217 | "\n" | 219 | "\n" |
218 | "<b>Default</b>: On")); | 220 | "<b>Default</b>: On")); |
219 | 221 | ||
220 | // Modem Timeout Line Edit Box | 222 | // Modem Timeout Line Edit Box |
221 | QHBoxLayout *timeoutLayout = new QHBoxLayout( this ); | 223 | QHBoxLayout *timeoutLayout = new QHBoxLayout( this ); |
222 | QLabel *timeoutlabel = new QLabel( tr("Modem timeout:") ,this, "timeout" ); | 224 | QLabel *timeoutlabel = new QLabel( tr("Modem timeout:") ,this, "timeout" ); |
223 | modemtimeout = new QSpinBox( 1, 120, 1, this, "modemTimeout" ); | 225 | modemtimeout = new QSpinBox( 1, 120, 1, this, "modemTimeout" ); |
224 | // modemtimeout = new KIntNumInput(_pppdata->modemTimeout(), this); | 226 | // modemtimeout = new KIntNumInput(_pppdata->modemTimeout(), this); |
225 | // modemtimeout->setLabel(tr("Modem &timeout:")); | 227 | // modemtimeout->setLabel(tr("Modem &timeout:")); |
226 | // modemtimeout->setRange(1, 120, 1); | 228 | // modemtimeout->setRange(1, 120, 1); |
227 | modemtimeout->setSuffix(tr(" sec")); | 229 | modemtimeout->setSuffix(tr(" sec")); |
228 | modemtimeout->setValue( _pppdata->modemTimeout() ); | 230 | modemtimeout->setValue( _pppdata->modemTimeout() ); |
229 | // connect(modemtimeout, SIGNAL(valueChanged(int)), | 231 | // connect(modemtimeout, SIGNAL(valueChanged(int)), |
230 | // SLOT(modemtimeoutchanged(int))); | 232 | // SLOT(modemtimeoutchanged(int))); |
231 | timeoutLayout->addWidget(timeoutlabel); | 233 | timeoutLayout->addWidget(timeoutlabel); |
232 | timeoutLayout->addWidget(modemtimeout); | 234 | timeoutLayout->addWidget(modemtimeout); |
233 | tl->addMultiCellLayout(timeoutLayout, 7, 7, 0, 1); | 235 | tl->addMultiCellLayout(timeoutLayout, 7, 7, 0, 1); |
234 | 236 | ||
235 | QWhatsThis::add(modemtimeout, | 237 | QWhatsThis::add(modemtimeout, |
236 | tr("This specifies how long <i>kppp</i> waits for a\n" | 238 | tr("This specifies how long <i>kppp</i> waits for a\n" |
237 | "<i>CONNECT</i> response from your modem. The\n" | 239 | "<i>CONNECT</i> response from your modem. The\n" |
238 | "recommended value is 30 seconds.")); | 240 | "recommended value is 30 seconds.")); |
239 | 241 | ||
240 | //set stuff from gpppdata | 242 | //set stuff from gpppdata |
241 | for(int i=0; i <= enter->count()-1; i++) | 243 | for(int i=0; i <= enter->count()-1; i++) |
242 | { | 244 | { |
243 | if(_pppdata->enter() == enter->text(i)) | 245 | if(_pppdata->enter() == enter->text(i)) |
244 | enter->setCurrentItem(i); | 246 | enter->setCurrentItem(i); |
245 | } | 247 | } |
246 | 248 | ||
247 | for(int i=0; i <= modemdevice->count()-1; i++) | 249 | for(int i=0; i <= modemdevice->count()-1; i++) |
248 | { | 250 | { |
249 | if(_pppdata->modemDevice() == modemdevice->text(i)) | 251 | if(_pppdata->modemDevice() == modemdevice->text(i)) |
250 | modemdevice->setCurrentItem(i); | 252 | modemdevice->setCurrentItem(i); |
251 | } | 253 | } |
252 | 254 | ||
253 | for(int i=0; i <= flowcontrol->count()-1; i++) | 255 | for(int i=0; i <= flowcontrol->count()-1; i++) |
254 | { | 256 | { |
255 | if(_pppdata->flowcontrol() == flowcontrol->text(i)) | 257 | if(_pppdata->flowcontrol() == flowcontrol->text(i)) |
256 | flowcontrol->setCurrentItem(i); | 258 | flowcontrol->setCurrentItem(i); |
257 | } | 259 | } |
258 | 260 | ||
259 | //set the modem speed | 261 | //set the modem speed |
260 | for(int i=0; i < baud_c->count(); i++) | 262 | for(int i=0; i < baud_c->count(); i++) |
261 | if(baud_c->text(i) == _pppdata->speed()) | 263 | if(baud_c->text(i) == _pppdata->speed()) |
262 | baud_c->setCurrentItem(i); | 264 | baud_c->setCurrentItem(i); |
263 | 265 | ||
264 | tl->setRowStretch(1, 1); | 266 | tl->setRowStretch(1, 1); |
265 | } | 267 | } |
266 | 268 | ||
267 | ModemWidget::~ModemWidget() | 269 | ModemWidget::~ModemWidget() |
268 | { | 270 | { |
269 | QStringList devs; | 271 | QStringList devs; |
270 | 272 | ||
271 | for (int i=0;i<modemdevice->count();i++) | 273 | for (int i=0;i<modemdevice->count();i++) |
272 | { | 274 | { |
273 | QString s = modemdevice->text(i); | 275 | QString s = modemdevice->text(i); |
274 | s.simplifyWhiteSpace(); | 276 | s.simplifyWhiteSpace(); |
275 | if (! s.isEmpty() ) devs << s; | 277 | if (! s.isEmpty() ) devs << s; |
276 | } | 278 | } |
277 | 279 | ||
278 | 280 | ||
279 | QString edited = modemdevice->currentText(); | 281 | QString edited = modemdevice->currentText(); |
280 | if ( !( edited ).isEmpty() ) | 282 | if ( !( edited ).isEmpty() ) |
281 | { | 283 | { |
282 | edited.simplifyWhiteSpace(); | 284 | edited.simplifyWhiteSpace(); |
283 | if ( devs.contains( edited ) == 0 ) | 285 | if ( devs.contains( edited ) == 0 ) |
284 | { | 286 | { |
285 | devs << edited; | 287 | devs << edited; |
286 | } | 288 | } |
287 | _pppdata->setModemDevice( edited ); | 289 | _pppdata->setModemDevice( edited ); |
288 | } | 290 | } |
289 | 291 | ||
290 | 292 | ||
291 | Config cfg("NetworkSetupPPP"); | 293 | Config cfg("NetworkSetupPPP"); |
292 | cfg.setGroup("Devices_General"); | 294 | cfg.setGroup("Devices_General"); |
293 | cfg.writeEntry("devices",devs,','); | 295 | cfg.writeEntry("devices",devs,','); |
294 | 296 | ||
295 | } | 297 | } |
296 | 298 | ||
297 | // void ModemWidget::speed_selection(int) { | 299 | // void ModemWidget::speed_selection(int) { |
298 | // _pppdata->setSpeed(baud_c->text(baud_c->currentItem())); | 300 | // _pppdata->setSpeed(baud_c->text(baud_c->currentItem())); |
299 | // } | 301 | // } |
300 | 302 | ||
301 | 303 | ||
302 | // void ModemWidget::setenter(int ) { | 304 | // void ModemWidget::setenter(int ) { |
303 | // _pppdata->setEnter(enter->text(enter->currentItem())); | 305 | // _pppdata->setEnter(enter->text(enter->currentItem())); |
304 | // } | 306 | // } |
305 | 307 | ||
306 | 308 | ||
307 | // void ModemWidget::setmodemdc(int i) { | 309 | // void ModemWidget::setmodemdc(int i) { |
308 | // _pppdata->setModemDevice(modemdevice->text(i)); | 310 | // _pppdata->setModemDevice(modemdevice->text(i)); |
309 | // } | 311 | // } |
310 | 312 | ||
311 | // void ModemWidget::setmodemdc( const QString &string ) { | 313 | // void ModemWidget::setmodemdc( const QString &string ) { |
312 | // _pppdata->setModemDevice( string ); | 314 | // _pppdata->setModemDevice( string ); |
313 | // } | 315 | // } |
314 | 316 | ||
315 | // void ModemWidget::setflowcontrol(int i) { | 317 | // void ModemWidget::setflowcontrol(int i) { |
316 | // _pppdata->setFlowcontrol(flowcontrol->text(i)); | 318 | // _pppdata->setFlowcontrol(flowcontrol->text(i)); |
317 | // } | 319 | // } |
318 | 320 | ||
319 | 321 | ||
320 | // void ModemWidget::modemlockfilechanged(bool set) { | 322 | // void ModemWidget::modemlockfilechanged(bool set) { |
321 | // _pppdata->setModemLockFile(set); | 323 | // _pppdata->setModemLockFile(set); |
322 | // } | 324 | // } |
323 | 325 | ||
324 | 326 | ||
325 | // void ModemWidget::modemtimeoutchanged(int n) { | 327 | // void ModemWidget::modemtimeoutchanged(int n) { |
326 | // _pppdata->setModemTimeout(n); | 328 | // _pppdata->setModemTimeout(n); |
327 | // } | 329 | // } |
328 | 330 | ||
329 | 331 | ||
330 | 332 | ||
331 | bool ModemWidget::save() | 333 | bool ModemWidget::save() |
332 | { | 334 | { |
333 | //first check to make sure that the device name is unique! | 335 | //first check to make sure that the device name is unique! |
334 | if(modemname->text().isEmpty() || | 336 | if(modemname->text().isEmpty() || |
335 | !_pppdata->isUniqueDevname(modemname->text())) | 337 | !_pppdata->isUniqueDevname(modemname->text())) |
336 | return false; | 338 | return false; |
337 | 339 | ||
338 | odebug << "ModemWidget::save saving modem1 data" << oendl; | 340 | odebug << "ModemWidget::save saving modem1 data" << oendl; |
339 | _pppdata->setDevname( modemname->text() ); | 341 | _pppdata->setDevname( modemname->text() ); |
340 | _pppdata->setModemDevice( modemdevice->currentText() ); | 342 | _pppdata->setModemDevice( modemdevice->currentText() ); |
341 | _pppdata->setFlowcontrol(flowcontrol->currentText()); | 343 | _pppdata->setFlowcontrol(flowcontrol->currentText()); |
342 | _pppdata->setFlowcontrol(flowcontrol->currentText()); | 344 | _pppdata->setFlowcontrol(flowcontrol->currentText()); |
343 | _pppdata->setSpeed(baud_c->currentText()); | 345 | _pppdata->setSpeed(baud_c->currentText()); |
344 | _pppdata->setModemLockFile( modemlockfile->isChecked()); | 346 | _pppdata->setModemLockFile( modemlockfile->isChecked()); |
345 | _pppdata->setModemTimeout( modemtimeout->value() ); | 347 | _pppdata->setModemTimeout( modemtimeout->value() ); |
346 | return true; | 348 | return true; |
347 | 349 | ||
348 | } | 350 | } |
349 | 351 | ||
350 | ModemWidget2::ModemWidget2( PPPData *pd, InterfacePPP *ip, QWidget *parent, | 352 | ModemWidget2::ModemWidget2( PPPData *pd, InterfacePPP *ip, QWidget *parent, |
351 | const char *name) | 353 | const char *name) |
352 | : QWidget(parent, name), _pppdata(pd), _ifaceppp(ip) | 354 | : QWidget(parent, name), _pppdata(pd), _ifaceppp(ip) |
353 | { | 355 | { |
354 | QVBoxLayout *l1 = new QVBoxLayout(this, 0 );//, KDialog::spacingHint()); | 356 | QVBoxLayout *l1 = new QVBoxLayout(this, 0 );//, KDialog::spacingHint()); |
355 | 357 | ||
356 | 358 | ||
357 | waitfordt = new QCheckBox(tr("&Wait for dial tone before dialing"), this); | 359 | waitfordt = new QCheckBox(tr("&Wait for dial tone before dialing"), this); |
358 | waitfordt->setChecked(_pppdata->waitForDialTone()); | 360 | waitfordt->setChecked(_pppdata->waitForDialTone()); |
359 | // connect(waitfordt, SIGNAL(toggled(bool)), SLOT(waitfordtchanged(bool))); | 361 | // connect(waitfordt, SIGNAL(toggled(bool)), SLOT(waitfordtchanged(bool))); |
360 | l1->addWidget(waitfordt); | 362 | l1->addWidget(waitfordt); |
361 | QWhatsThis::add(waitfordt, | 363 | QWhatsThis::add(waitfordt, |
362 | tr("<p>Normally the modem waits for a dial tone\n" | 364 | tr("<p>Normally the modem waits for a dial tone\n" |
363 | "from your phone line, indicating that it can\n" | 365 | "from your phone line, indicating that it can\n" |
364 | "start to dial a number. If your modem does not\n" | 366 | "start to dial a number. If your modem does not\n" |
365 | "recognize this sound, or your local phone system\n" | 367 | "recognize this sound, or your local phone system\n" |
366 | "does not emit such a tone, uncheck this option\n" | 368 | "does not emit such a tone, uncheck this option\n" |
367 | "\n" | 369 | "\n" |
368 | "<b>Default:</b>: On")); | 370 | "<b>Default:</b>: On")); |
369 | 371 | ||
370 | QHBoxLayout *waitLayout = new QHBoxLayout( this ); | 372 | QHBoxLayout *waitLayout = new QHBoxLayout( this ); |
371 | QLabel *waitLabel = new QLabel( tr("Busy wait:"), this, "busyWait" ); | 373 | QLabel *waitLabel = new QLabel( tr("Busy wait:"), this, "busyWait" ); |
372 | busywait = new QSpinBox( 0, 300, 5, this, "busyWait" ); | 374 | busywait = new QSpinBox( 0, 300, 5, this, "busyWait" ); |
373 | // busywait = new KIntNumInput(_pppdata->busyWait(), this); | 375 | // busywait = new KIntNumInput(_pppdata->busyWait(), this); |
374 | // busywait->setLabel(tr("B&usy wait:")); | 376 | // busywait->setLabel(tr("B&usy wait:")); |
375 | // busywait->setRange(0, 300, 5, true); | 377 | // busywait->setRange(0, 300, 5, true); |
376 | busywait->setSuffix(tr(" sec")); | 378 | busywait->setSuffix(tr(" sec")); |
377 | // connect(busywait, SIGNAL(valueChanged(int)), SLOT(busywaitchanged(int))); | 379 | // connect(busywait, SIGNAL(valueChanged(int)), SLOT(busywaitchanged(int))); |
378 | waitLayout->addWidget(waitLabel); | 380 | waitLayout->addWidget(waitLabel); |
379 | waitLayout->addWidget(busywait); | 381 | waitLayout->addWidget(busywait); |
380 | l1->addLayout( waitLayout ); | 382 | l1->addLayout( waitLayout ); |
381 | 383 | ||
382 | QWhatsThis::add(busywait, | 384 | QWhatsThis::add(busywait, |
383 | tr("Specifies the number of seconds to wait before\n" | 385 | tr("Specifies the number of seconds to wait before\n" |
384 | "redial if all dialed numbers are busy. This is\n" | 386 | "redial if all dialed numbers are busy. This is\n" |
385 | "necessary because some modems get stuck if the\n" | 387 | "necessary because some modems get stuck if the\n" |
386 | "same number is busy too often.\n" | 388 | "same number is busy too often.\n" |
387 | "\n" | 389 | "\n" |
388 | "The default is 0 seconds, you should not change\n" | 390 | "The default is 0 seconds, you should not change\n" |
389 | "this unless you need to.")); | 391 | "this unless you need to.")); |
390 | 392 | ||
391 | l1->addSpacing(10); | 393 | l1->addSpacing(10); |
392 | 394 | ||
393 | QHBoxLayout *hbl = new QHBoxLayout; | 395 | QHBoxLayout *hbl = new QHBoxLayout; |
394 | hbl->setSpacing(2);//KDialog::spacingHint()); | 396 | hbl->setSpacing(2);//KDialog::spacingHint()); |
395 | 397 | ||
396 | QLabel *volumeLabel = new QLabel(tr("Modem &volume:"), this); | 398 | QLabel *volumeLabel = new QLabel(tr("Modem &volume:"), this); |
397 | hbl->addWidget(volumeLabel); | 399 | hbl->addWidget(volumeLabel); |
398 | volume = new QSlider(0, 2, 1, _pppdata->volume(), | 400 | volume = new QSlider(0, 2, 1, _pppdata->volume(), |
399 | QSlider::Horizontal, this); | 401 | QSlider::Horizontal, this); |
400 | volumeLabel->setBuddy(volume); | 402 | volumeLabel->setBuddy(volume); |
401 | volume->setTickmarks(QSlider::Below); | 403 | volume->setTickmarks(QSlider::Below); |
402 | hbl->addWidget(volume); | 404 | hbl->addWidget(volume); |
403 | 405 | ||
404 | l1->addLayout(hbl); | 406 | l1->addLayout(hbl); |
405 | 407 | ||
406 | // connect(volume, SIGNAL(valueChanged(int)), | 408 | // connect(volume, SIGNAL(valueChanged(int)), |
407 | // this, SLOT(volumeChanged(int))); | 409 | // this, SLOT(volumeChanged(int))); |
408 | QString tmp = tr("Most modems have a speaker which makes\n" | 410 | QString tmp = tr("Most modems have a speaker which makes\n" |
409 | "a lot of noise when dialing. Here you can\n" | 411 | "a lot of noise when dialing. Here you can\n" |
410 | "either turn this completely off or select a\n" | 412 | "either turn this completely off or select a\n" |
411 | "lower volume.\n" | 413 | "lower volume.\n" |
412 | "\n" | 414 | "\n" |
413 | "If this does not work for your modem,\n" | 415 | "If this does not work for your modem,\n" |
414 | "you must modify the modem volume command."); | 416 | "you must modify the modem volume command."); |
415 | 417 | ||
416 | QWhatsThis::add(volumeLabel,tmp); | 418 | QWhatsThis::add(volumeLabel,tmp); |
417 | QWhatsThis::add(volume, tmp); | 419 | QWhatsThis::add(volume, tmp); |
418 | 420 | ||
419 | l1->addSpacing(20); | 421 | l1->addSpacing(20); |
diff --git a/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp b/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp index 5a76293..4755aed 100644 --- a/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp +++ b/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp | |||
@@ -1,41 +1,45 @@ | |||
1 | #include "interfaceinformationppp.h" | 1 | #include "interfaceinformationppp.h" |
2 | #include "connect.h" | ||
3 | #include "conwindow.h" | ||
4 | |||
5 | /* OPIE */ | ||
6 | #include <opie2/odebug.h> | ||
7 | using namespace Opie::Core; | ||
2 | 8 | ||
9 | /* QT */ | ||
3 | #include <qpushbutton.h> | 10 | #include <qpushbutton.h> |
4 | #include <qlabel.h> | 11 | #include <qlabel.h> |
5 | #include <qmessagebox.h> | 12 | #include <qmessagebox.h> |
6 | #include <qabstractlayout.h> | 13 | #include <qabstractlayout.h> |
7 | 14 | ||
8 | #include "connect.h" | ||
9 | #include "conwindow.h" | ||
10 | |||
11 | #ifdef QWS | 15 | #ifdef QWS |
12 | #else | 16 | #else |
13 | #define showMaximized show | 17 | #define showMaximized show |
14 | #endif | 18 | #endif |
15 | 19 | ||
16 | /** | 20 | /** |
17 | * Constructor for the InterfaceInformationImp class. This class pretty much | 21 | * Constructor for the InterfaceInformationImp class. This class pretty much |
18 | * just display's information about the interface that is passed to it. | 22 | * just display's information about the interface that is passed to it. |
19 | */ | 23 | */ |
20 | InterfaceInformationPPP::InterfaceInformationPPP(QWidget *parent, const char *name, Interface *i, WFlags f) | 24 | InterfaceInformationPPP::InterfaceInformationPPP(QWidget *parent, const char *name, Interface *i, WFlags f) |
21 | :InterfaceInformationImp(parent, name, i, Qt::WStyle_ContextHelp) | 25 | :InterfaceInformationImp(parent, name, i, Qt::WStyle_ContextHelp) |
22 | { | 26 | { |
23 | odebug << "InterfaceInformationPPP::InterfaceInformationPPP " << name << "" << oendl; | 27 | odebug << "InterfaceInformationPPP::InterfaceInformationPPP " << name << "" << oendl; |
24 | con = new ConnectWidget( (InterfacePPP*)i, this, "con" ); | 28 | con = new ConnectWidget( (InterfacePPP*)i, this, "con" ); |
25 | con->setSizePolicy( QSizePolicy(QSizePolicy::MinimumExpanding, | 29 | con->setSizePolicy( QSizePolicy(QSizePolicy::MinimumExpanding, |
26 | QSizePolicy::Fixed) ); | 30 | QSizePolicy::Fixed) ); |
27 | 31 | ||
28 | macAddressLabel->hide(); | 32 | macAddressLabel->hide(); |
29 | subnetMaskLabel->hide(); | 33 | subnetMaskLabel->hide(); |
30 | broadcastLabel->hide(); | 34 | broadcastLabel->hide(); |
31 | TextLabel23->hide(); | 35 | TextLabel23->hide(); |
32 | TextLabel21->hide(); | 36 | TextLabel21->hide(); |
33 | TextLabel24->hide(); | 37 | TextLabel24->hide(); |
34 | 38 | ||
35 | InterfaceInformationLayout->addWidget( con, 1, 0 ); | 39 | InterfaceInformationLayout->addWidget( con, 1, 0 ); |
36 | connect(i, SIGNAL(begin_connect()),con, SLOT(preinit())); | 40 | connect(i, SIGNAL(begin_connect()),con, SLOT(preinit())); |
37 | connect(i, SIGNAL(hangup_now() ), con, SLOT(cancelbutton() ) ); | 41 | connect(i, SIGNAL(hangup_now() ), con, SLOT(cancelbutton() ) ); |
38 | } | 42 | } |
39 | 43 | ||
40 | 44 | ||
41 | 45 | ||
diff --git a/noncore/settings/networksettings/ppp/interfaceppp.cpp b/noncore/settings/networksettings/ppp/interfaceppp.cpp index 5cc6f70..7d52f66 100644 --- a/noncore/settings/networksettings/ppp/interfaceppp.cpp +++ b/noncore/settings/networksettings/ppp/interfaceppp.cpp | |||
@@ -1,174 +1,178 @@ | |||
1 | #include "auth.h" | ||
2 | #include "interfaceppp.h" | ||
3 | #include "modem.h" | ||
4 | #include "pppdata.h" | ||
5 | |||
6 | /* OPIE */ | ||
7 | #include <opie2/odebug.h> | ||
8 | using namespace Opie::Core; | ||
1 | 9 | ||
10 | /* QT */ | ||
2 | #include <qmessagebox.h> | 11 | #include <qmessagebox.h> |
3 | #include <qlayout.h> | 12 | #include <qlayout.h> |
4 | #include <qlineedit.h> | 13 | #include <qlineedit.h> |
5 | #include <qlabel.h> | 14 | #include <qlabel.h> |
6 | 15 | ||
7 | #include "auth.h" | ||
8 | #include "interfaceppp.h" | ||
9 | #include "modem.h" | ||
10 | #include "pppdata.h" | ||
11 | |||
12 | InterfacePPP::InterfacePPP(QObject *parent, const char *name, bool status) | 16 | InterfacePPP::InterfacePPP(QObject *parent, const char *name, bool status) |
13 | : Interface(parent, name, status), | 17 | : Interface(parent, name, status), |
14 | _modemPtr(0), | 18 | _modemPtr(0), |
15 | _dataPtr(0) | 19 | _dataPtr(0) |
16 | { | 20 | { |
17 | odebug << "InterfacePPP::InterfacePPP(" << oendl; | 21 | odebug << "InterfacePPP::InterfacePPP(" << oendl; |
18 | } | 22 | } |
19 | 23 | ||
20 | PPPData* InterfacePPP::data()const | 24 | PPPData* InterfacePPP::data()const |
21 | { | 25 | { |
22 | if (!_dataPtr){ | 26 | if (!_dataPtr){ |
23 | odebug << "creating new Data obj" << oendl; | 27 | odebug << "creating new Data obj" << oendl; |
24 | _dataPtr = new PPPData(); | 28 | _dataPtr = new PPPData(); |
25 | _dataPtr->setDevice( getInterfaceName() ); | 29 | _dataPtr->setDevice( getInterfaceName() ); |
26 | _dataPtr->setAccount( getHardwareName() ); | 30 | _dataPtr->setAccount( getHardwareName() ); |
27 | } | 31 | } |
28 | return _dataPtr; | 32 | return _dataPtr; |
29 | } | 33 | } |
30 | 34 | ||
31 | Modem* InterfacePPP::modem()const | 35 | Modem* InterfacePPP::modem()const |
32 | { | 36 | { |
33 | if (!_modemPtr){ | 37 | if (!_modemPtr){ |
34 | odebug << "creating new modem obj" << oendl; | 38 | odebug << "creating new modem obj" << oendl; |
35 | _modemPtr = new Modem( data() ); | 39 | _modemPtr = new Modem( data() ); |
36 | } | 40 | } |
37 | return _modemPtr; | 41 | return _modemPtr; |
38 | } | 42 | } |
39 | 43 | ||
40 | bool InterfacePPP::refresh() | 44 | bool InterfacePPP::refresh() |
41 | { | 45 | { |
42 | odebug << "InterfacePPP::refresh()" << oendl; | 46 | odebug << "InterfacePPP::refresh()" << oendl; |
43 | QString old = getInterfaceName(); | 47 | QString old = getInterfaceName(); |
44 | setInterfaceName( modem()->pppDevice() ); | 48 | setInterfaceName( modem()->pppDevice() ); |
45 | 49 | ||
46 | (void)Interface::refresh(); | 50 | (void)Interface::refresh(); |
47 | 51 | ||
48 | setInterfaceName( old ); | 52 | setInterfaceName( old ); |
49 | emit updateInterface(this); | 53 | emit updateInterface(this); |
50 | 54 | ||
51 | return true; | 55 | return true; |
52 | } | 56 | } |
53 | 57 | ||
54 | void InterfacePPP::start() | 58 | void InterfacePPP::start() |
55 | { | 59 | { |
56 | odebug << "InterfacePPP::start" << oendl; | 60 | odebug << "InterfacePPP::start" << oendl; |
57 | 61 | ||
58 | if (data()->password().isEmpty() && !data()->storedUsername().isEmpty() ) { | 62 | if (data()->password().isEmpty() && !data()->storedUsername().isEmpty() ) { |
59 | 63 | ||
60 | QDialog mb( 0, "Dialog", true ); | 64 | QDialog mb( 0, "Dialog", true ); |
61 | mb.setCaption( tr( "No password" ) ); | 65 | mb.setCaption( tr( "No password" ) ); |
62 | QVBoxLayout layout( &mb ); | 66 | QVBoxLayout layout( &mb ); |
63 | QLabel text ( &mb ); | 67 | QLabel text ( &mb ); |
64 | text.setText( tr("Username defined but no password\n Please enter a password") ); | 68 | text.setText( tr("Username defined but no password\n Please enter a password") ); |
65 | QLineEdit lineedit( &mb ); | 69 | QLineEdit lineedit( &mb ); |
66 | lineedit.setEchoMode( QLineEdit::Password ); | 70 | lineedit.setEchoMode( QLineEdit::Password ); |
67 | layout.addWidget( &text ); | 71 | layout.addWidget( &text ); |
68 | layout.addWidget( &lineedit ); | 72 | layout.addWidget( &lineedit ); |
69 | if ( mb.exec() == QDialog::Accepted ) { | 73 | if ( mb.exec() == QDialog::Accepted ) { |
70 | data()->setPassword( lineedit.text() ); | 74 | data()->setPassword( lineedit.text() ); |
71 | } | 75 | } |
72 | } | 76 | } |
73 | 77 | ||
74 | QFileInfo info(pppdPath()); | 78 | QFileInfo info(pppdPath()); |
75 | 79 | ||
76 | if(!info.exists()){ | 80 | if(!info.exists()){ |
77 | QMessageBox::warning(0, tr("Error"), | 81 | QMessageBox::warning(0, tr("Error"), |
78 | QObject::tr("<qt>Cannot find the PPP daemon!<br>" | 82 | QObject::tr("<qt>Cannot find the PPP daemon!<br>" |
79 | "Make sure that pppd is installed and " | 83 | "Make sure that pppd is installed and " |
80 | "that you have entered the correct path.</qt>")); | 84 | "that you have entered the correct path.</qt>")); |
81 | return; | 85 | return; |
82 | } | 86 | } |
83 | //#if 0 | 87 | //#if 0 |
84 | if(!info.isExecutable()){ | 88 | if(!info.isExecutable()){ |
85 | 89 | ||
86 | QString string; | 90 | QString string; |
87 | string = QObject::tr( "<qt>Cannot execute:<br> %1<br>" | 91 | string = QObject::tr( "<qt>Cannot execute:<br> %1<br>" |
88 | "Please make sure that you have given " | 92 | "Please make sure that you have given " |
89 | "setuid permission and that " | 93 | "setuid permission and that " |
90 | "pppd is executable.<br>").arg(pppdPath()); | 94 | "pppd is executable.<br>").arg(pppdPath()); |
91 | QMessageBox::warning(0, tr("Error"), string); | 95 | QMessageBox::warning(0, tr("Error"), string); |
92 | return; | 96 | return; |
93 | 97 | ||
94 | } | 98 | } |
95 | //#endif | 99 | //#endif |
96 | 100 | ||
97 | QFileInfo info2(data()->modemDevice()); | 101 | QFileInfo info2(data()->modemDevice()); |
98 | 102 | ||
99 | if(!info2.exists()){ | 103 | if(!info2.exists()){ |
100 | QString string; | 104 | QString string; |
101 | string = QObject::tr( "<qt>Cannot find:<br> %1<br>" | 105 | string = QObject::tr( "<qt>Cannot find:<br> %1<br>" |
102 | "Please make sure you have setup " | 106 | "Please make sure you have setup " |
103 | "your modem device properly " | 107 | "your modem device properly " |
104 | "and/or adjust the location of the modem device on " | 108 | "and/or adjust the location of the modem device on " |
105 | "the modem tab of " | 109 | "the modem tab of " |
106 | "the setup dialog.</qt>").arg(data()->modemDevice()); | 110 | "the setup dialog.</qt>").arg(data()->modemDevice()); |
107 | QMessageBox::warning(0, tr("Error"), string); | 111 | QMessageBox::warning(0, tr("Error"), string); |
108 | return; | 112 | return; |
109 | } | 113 | } |
110 | 114 | ||
111 | // if this is a PAP or CHAP account, ensure that username is | 115 | // if this is a PAP or CHAP account, ensure that username is |
112 | // supplied | 116 | // supplied |
113 | if(data()->authMethod() == AUTH_PAP || | 117 | if(data()->authMethod() == AUTH_PAP || |
114 | data()->authMethod() == AUTH_CHAP || | 118 | data()->authMethod() == AUTH_CHAP || |
115 | data()->authMethod() == AUTH_PAPCHAP ) { | 119 | data()->authMethod() == AUTH_PAPCHAP ) { |
116 | if(false){ //FIXME: ID_Edit->text().isEmpty()) { | 120 | if(false){ //FIXME: ID_Edit->text().isEmpty()) { |
117 | QMessageBox::warning(0,tr("Error"), | 121 | QMessageBox::warning(0,tr("Error"), |
118 | QObject::tr("<qt>You have selected the authentication method PAP or CHAP. This requires that you supply a username and a password!</qt>")); | 122 | QObject::tr("<qt>You have selected the authentication method PAP or CHAP. This requires that you supply a username and a password!</qt>")); |
119 | // FIXME: return; | 123 | // FIXME: return; |
120 | } else { | 124 | } else { |
121 | if(!modem()->setSecret(data()->authMethod(), | 125 | if(!modem()->setSecret(data()->authMethod(), |
122 | PPPData::encodeWord(data()->storedUsername()), | 126 | PPPData::encodeWord(data()->storedUsername()), |
123 | PPPData::encodeWord(data()->password())) | 127 | PPPData::encodeWord(data()->password())) |
124 | ) { | 128 | ) { |
125 | QString s; | 129 | QString s; |
126 | s = QObject::tr("<qt>Cannot create PAP/CHAP authentication<br>" | 130 | s = QObject::tr("<qt>Cannot create PAP/CHAP authentication<br>" |
127 | "file \"%1\"</qt>").arg(PAP_AUTH_FILE); | 131 | "file \"%1\"</qt>").arg(PAP_AUTH_FILE); |
128 | QMessageBox::warning(0, tr("Error"), s); | 132 | QMessageBox::warning(0, tr("Error"), s); |
129 | return; | 133 | return; |
130 | } | 134 | } |
131 | } | 135 | } |
132 | } | 136 | } |
133 | 137 | ||
134 | if (data()->phonenumber().isEmpty()) { | 138 | if (data()->phonenumber().isEmpty()) { |
135 | QString s = QObject::tr("You must specify a telephone number!"); | 139 | QString s = QObject::tr("You must specify a telephone number!"); |
136 | QMessageBox::warning(0, tr("Error"), s); | 140 | QMessageBox::warning(0, tr("Error"), s); |
137 | return; | 141 | return; |
138 | } | 142 | } |
139 | 143 | ||
140 | // SEGFAULTS: | 144 | // SEGFAULTS: |
141 | // setStatus( true ); | 145 | // setStatus( true ); |
142 | // emit updateInterface((Interface*) this); | 146 | // emit updateInterface((Interface*) this); |
143 | 147 | ||
144 | emit begin_connect(); | 148 | emit begin_connect(); |
145 | 149 | ||
146 | odebug << "InterfacePPP::start END" << oendl; | 150 | odebug << "InterfacePPP::start END" << oendl; |
147 | } | 151 | } |
148 | 152 | ||
149 | void InterfacePPP::stop() | 153 | void InterfacePPP::stop() |
150 | { | 154 | { |
151 | odebug << "InterfacePPP::stop" << oendl; | 155 | odebug << "InterfacePPP::stop" << oendl; |
152 | // emit hangup_now(); | 156 | // emit hangup_now(); |
153 | status = false; // not connected | 157 | status = false; // not connected |
154 | setStatus( false ); | 158 | setStatus( false ); |
155 | emit hangup_now(); | 159 | emit hangup_now(); |
156 | refresh(); | 160 | refresh(); |
157 | 161 | ||
158 | } | 162 | } |
159 | 163 | ||
160 | void InterfacePPP::save() | 164 | void InterfacePPP::save() |
161 | { | 165 | { |
162 | data()->save(); | 166 | data()->save(); |
163 | emit updateInterface((Interface*) this); | 167 | emit updateInterface((Interface*) this); |
164 | } | 168 | } |
165 | QString InterfacePPP::pppDev()const { | 169 | QString InterfacePPP::pppDev()const { |
166 | return modem()->pppDevice(); | 170 | return modem()->pppDevice(); |
167 | } | 171 | } |
168 | pid_t InterfacePPP::pppPID()const{ | 172 | pid_t InterfacePPP::pppPID()const{ |
169 | return modem()->pppPID(); | 173 | return modem()->pppPID(); |
170 | } | 174 | } |
171 | void InterfacePPP::setPPPDpid( pid_t pid) { | 175 | void InterfacePPP::setPPPDpid( pid_t pid) { |
172 | setStatus( true ); | 176 | setStatus( true ); |
173 | modem()->setPPPDPid( pid ); | 177 | modem()->setPPPDPid( pid ); |
174 | } | 178 | } |
diff --git a/noncore/settings/networksettings/ppp/modem.cpp b/noncore/settings/networksettings/ppp/modem.cpp index f3f2639..5913a22 100644 --- a/noncore/settings/networksettings/ppp/modem.cpp +++ b/noncore/settings/networksettings/ppp/modem.cpp | |||
@@ -1,410 +1,415 @@ | |||
1 | /* | 1 | /* |
2 | * kPPP: A pppd Front End for the KDE project | 2 | * kPPP: A pppd Front End for the KDE project |
3 | * | 3 | * |
4 | * $Id$ | 4 | * $Id$ |
5 | * | 5 | * |
6 | * Copyright (C) 1997 Bernd Johannes Wuebben | 6 | * Copyright (C) 1997 Bernd Johannes Wuebben |
7 | * wuebben@math.cornell.edu | 7 | * wuebben@math.cornell.edu |
8 | * | 8 | * |
9 | * This file was added by Harri Porten <porten@tu-harburg.de> | 9 | * This file was added by Harri Porten <porten@tu-harburg.de> |
10 | * | 10 | * |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Library General Public | 13 | * modify it under the terms of the GNU Library General Public |
14 | * License as published by the Free Software Foundation; either | 14 | * License as published by the Free Software Foundation; either |
15 | * version 2 of the License, or (at your option) any later version. | 15 | * version 2 of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This program is distributed in the hope that it will be useful, | 17 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Library General Public License for more details. | 20 | * Library General Public License for more details. |
21 | * | 21 | * |
22 | * You should have received a copy of the GNU Library General Public | 22 | * You should have received a copy of the GNU Library General Public |
23 | * License along with this program; if not, write to the Free | 23 | * License along with this program; if not, write to the Free |
24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | /* OPIE */ | ||
28 | #include <opie2/odebug.h> | ||
29 | using namespace Opie::Core; | ||
30 | |||
31 | /* STD */ | ||
27 | #include <errno.h> | 32 | #include <errno.h> |
28 | #include <stdlib.h> | 33 | #include <stdlib.h> |
29 | #include <unistd.h> | 34 | #include <unistd.h> |
30 | #include <fcntl.h> | 35 | #include <fcntl.h> |
31 | #include <signal.h> | 36 | #include <signal.h> |
32 | #include <sys/ioctl.h> | 37 | #include <sys/ioctl.h> |
33 | #include <sys/types.h> | 38 | #include <sys/types.h> |
34 | #include <sys/stat.h> | 39 | #include <sys/stat.h> |
35 | #include <setjmp.h> | 40 | #include <setjmp.h> |
36 | #include <regex.h> | 41 | #include <regex.h> |
37 | #include <qregexp.h> | 42 | #include <qregexp.h> |
38 | #include <assert.h> | 43 | #include <assert.h> |
39 | #include <string.h> | 44 | #include <string.h> |
40 | 45 | ||
41 | #ifdef HAVE_RESOLV_H | 46 | #ifdef HAVE_RESOLV_H |
42 | # include <arpa/nameser.h> | 47 | # include <arpa/nameser.h> |
43 | # include <resolv.h> | 48 | # include <resolv.h> |
44 | #endif | 49 | #endif |
45 | 50 | ||
46 | #ifndef _PATH_RESCONF | 51 | #ifndef _PATH_RESCONF |
47 | #define _PATH_RESCONF "/etc/resolv.conf" | 52 | #define _PATH_RESCONF "/etc/resolv.conf" |
48 | #endif | 53 | #endif |
49 | 54 | ||
50 | #define strlcpy strcpy | 55 | #define strlcpy strcpy |
51 | #include "auth.h" | 56 | #include "auth.h" |
52 | #include "modem.h" | 57 | #include "modem.h" |
53 | #include "pppdata.h" | 58 | #include "pppdata.h" |
54 | #define qError qDebug | 59 | #define qError qDebug |
55 | 60 | ||
56 | 61 | ||
57 | #define MY_ASSERT(x) if (!(x)) { \ | 62 | #define MY_ASSERT(x) if (!(x)) { \ |
58 | ofatal << "ASSERT: \"" << #x << "\" in " << __FILE__ << " (" << __LINE__ << ")\n" << oendl; \ | 63 | ofatal << "ASSERT: \"" << #x << "\" in " << __FILE__ << " (" << __LINE__ << ")\n" << oendl; \ |
59 | exit(1); } | 64 | exit(1); } |
60 | 65 | ||
61 | 66 | ||
62 | static sigjmp_buf jmp_buffer; | 67 | static sigjmp_buf jmp_buffer; |
63 | 68 | ||
64 | //Modem *Modem::modem = 0; | 69 | //Modem *Modem::modem = 0; |
65 | 70 | ||
66 | 71 | ||
67 | const char* pppdPath() { | 72 | const char* pppdPath() { |
68 | // wasting a few bytes | 73 | // wasting a few bytes |
69 | static char buffer[sizeof(PPPDSEARCHPATH)+sizeof(PPPDNAME)]; | 74 | static char buffer[sizeof(PPPDSEARCHPATH)+sizeof(PPPDNAME)]; |
70 | static char *pppdPath = 0L; | 75 | static char *pppdPath = 0L; |
71 | char *p; | 76 | char *p; |
72 | 77 | ||
73 | if(pppdPath == 0L) { | 78 | if(pppdPath == 0L) { |
74 | const char *c = PPPDSEARCHPATH; | 79 | const char *c = PPPDSEARCHPATH; |
75 | while(*c != '\0') { | 80 | while(*c != '\0') { |
76 | while(*c == ':') | 81 | while(*c == ':') |
77 | c++; | 82 | c++; |
78 | p = buffer; | 83 | p = buffer; |
79 | while(*c != '\0' && *c != ':') | 84 | while(*c != '\0' && *c != ':') |
80 | *p++ = *c++; | 85 | *p++ = *c++; |
81 | *p = '\0'; | 86 | *p = '\0'; |
82 | strcat(p, "/"); | 87 | strcat(p, "/"); |
83 | strcat(p, PPPDNAME); | 88 | strcat(p, PPPDNAME); |
84 | if(access(buffer, F_OK) == 0) | 89 | if(access(buffer, F_OK) == 0) |
85 | return (pppdPath = buffer); | 90 | return (pppdPath = buffer); |
86 | } | 91 | } |
87 | } | 92 | } |
88 | 93 | ||
89 | return pppdPath; | 94 | return pppdPath; |
90 | } | 95 | } |
91 | 96 | ||
92 | 97 | ||
93 | Modem::Modem( PPPData* pd ) | 98 | Modem::Modem( PPPData* pd ) |
94 | { | 99 | { |
95 | _pppdata = pd; | 100 | _pppdata = pd; |
96 | modemfd = -1; | 101 | modemfd = -1; |
97 | _pppdExitStatus = -1; | 102 | _pppdExitStatus = -1; |
98 | pppdPid = -1; | 103 | pppdPid = -1; |
99 | sn = m_modemDebug = 0L; | 104 | sn = m_modemDebug = 0L; |
100 | data_mode = false; | 105 | data_mode = false; |
101 | modem_is_locked = false; | 106 | modem_is_locked = false; |
102 | lockfile[0] = '\0'; | 107 | lockfile[0] = '\0'; |
103 | device = "/dev/modem"; | 108 | device = "/dev/modem"; |
104 | } | 109 | } |
105 | 110 | ||
106 | 111 | ||
107 | Modem::~Modem() | 112 | Modem::~Modem() |
108 | { | 113 | { |
109 | } | 114 | } |
110 | 115 | ||
111 | 116 | ||
112 | speed_t Modem::modemspeed() { | 117 | speed_t Modem::modemspeed() { |
113 | // convert the string modem speed int the gpppdata object to a t_speed type | 118 | // convert the string modem speed int the gpppdata object to a t_speed type |
114 | // to set the modem. The constants here should all be ifdef'd because | 119 | // to set the modem. The constants here should all be ifdef'd because |
115 | // other systems may not have them | 120 | // other systems may not have them |
116 | int i = _pppdata->speed().toInt()/100; | 121 | int i = _pppdata->speed().toInt()/100; |
117 | 122 | ||
118 | switch(i) { | 123 | switch(i) { |
119 | case 24: | 124 | case 24: |
120 | return B2400; | 125 | return B2400; |
121 | break; | 126 | break; |
122 | case 96: | 127 | case 96: |
123 | return B9600; | 128 | return B9600; |
124 | break; | 129 | break; |
125 | case 192: | 130 | case 192: |
126 | return B19200; | 131 | return B19200; |
127 | break; | 132 | break; |
128 | case 384: | 133 | case 384: |
129 | return B38400; | 134 | return B38400; |
130 | break; | 135 | break; |
131 | #ifdef B57600 | 136 | #ifdef B57600 |
132 | case 576: | 137 | case 576: |
133 | return B57600; | 138 | return B57600; |
134 | break; | 139 | break; |
135 | #endif | 140 | #endif |
136 | 141 | ||
137 | #ifdef B115200 | 142 | #ifdef B115200 |
138 | case 1152: | 143 | case 1152: |
139 | return B115200; | 144 | return B115200; |
140 | break; | 145 | break; |
141 | #endif | 146 | #endif |
142 | 147 | ||
143 | #ifdef B230400 | 148 | #ifdef B230400 |
144 | case 2304: | 149 | case 2304: |
145 | return B230400; | 150 | return B230400; |
146 | break; | 151 | break; |
147 | #endif | 152 | #endif |
148 | 153 | ||
149 | #ifdef B460800 | 154 | #ifdef B460800 |
150 | case 4608: | 155 | case 4608: |
151 | return B460800; | 156 | return B460800; |
152 | break; | 157 | break; |
153 | #endif | 158 | #endif |
154 | 159 | ||
155 | default: | 160 | default: |
156 | return B38400; | 161 | return B38400; |
157 | break; | 162 | break; |
158 | } | 163 | } |
159 | } | 164 | } |
160 | 165 | ||
161 | bool Modem::opentty() { | 166 | bool Modem::opentty() { |
162 | // int flags; | 167 | // int flags; |
163 | 168 | ||
164 | //begin if((modemfd = Requester::rq->openModem(gpppdata.modemDevice()))<0) { | 169 | //begin if((modemfd = Requester::rq->openModem(gpppdata.modemDevice()))<0) { |
165 | close(modemfd); | 170 | close(modemfd); |
166 | device = _pppdata->modemDevice(); | 171 | device = _pppdata->modemDevice(); |
167 | if ((modemfd = open(device, O_RDWR|O_NDELAY|O_NOCTTY)) == -1) { | 172 | if ((modemfd = open(device, O_RDWR|O_NDELAY|O_NOCTTY)) == -1) { |
168 | odebug << "error opening modem device !" << oendl; | 173 | odebug << "error opening modem device !" << oendl; |
169 | errmsg = QObject::tr("Unable to open modem."); | 174 | errmsg = QObject::tr("Unable to open modem."); |
170 | return false; | 175 | return false; |
171 | } | 176 | } |
172 | //bend if((modemfd = Requester::rq->openModem(gpppdata.modemDevice()))<0) { | 177 | //bend if((modemfd = Requester::rq->openModem(gpppdata.modemDevice()))<0) { |
173 | //} | 178 | //} |
174 | 179 | ||
175 | #if 0 | 180 | #if 0 |
176 | if(_pppdata->UseCDLine()) { | 181 | if(_pppdata->UseCDLine()) { |
177 | if(ioctl(modemfd, TIOCMGET, &flags) == -1) { | 182 | if(ioctl(modemfd, TIOCMGET, &flags) == -1) { |
178 | errmsg = QObject::tr("Unable to detect state of CD line."); | 183 | errmsg = QObject::tr("Unable to detect state of CD line."); |
179 | ::close(modemfd); | 184 | ::close(modemfd); |
180 | modemfd = -1; | 185 | modemfd = -1; |
181 | return false; | 186 | return false; |
182 | } | 187 | } |
183 | if ((flags&TIOCM_CD) == 0) { | 188 | if ((flags&TIOCM_CD) == 0) { |
184 | errmsg = QObject::tr("The modem is not ready."); | 189 | errmsg = QObject::tr("The modem is not ready."); |
185 | ::close(modemfd); | 190 | ::close(modemfd); |
186 | modemfd = -1; | 191 | modemfd = -1; |
187 | return false; | 192 | return false; |
188 | } | 193 | } |
189 | } | 194 | } |
190 | #endif | 195 | #endif |
191 | 196 | ||
192 | tcdrain (modemfd); | 197 | tcdrain (modemfd); |
193 | tcflush (modemfd, TCIOFLUSH); | 198 | tcflush (modemfd, TCIOFLUSH); |
194 | 199 | ||
195 | if(tcgetattr(modemfd, &tty) < 0){ | 200 | if(tcgetattr(modemfd, &tty) < 0){ |
196 | // this helps in some cases | 201 | // this helps in some cases |
197 | tcsendbreak(modemfd, 0); | 202 | tcsendbreak(modemfd, 0); |
198 | sleep(1); | 203 | sleep(1); |
199 | if(tcgetattr(modemfd, &tty) < 0){ | 204 | if(tcgetattr(modemfd, &tty) < 0){ |
200 | errmsg = QObject::tr("The modem is busy."); | 205 | errmsg = QObject::tr("The modem is busy."); |
201 | ::close(modemfd); | 206 | ::close(modemfd); |
202 | modemfd = -1; | 207 | modemfd = -1; |
203 | return false; | 208 | return false; |
204 | } | 209 | } |
205 | } | 210 | } |
206 | 211 | ||
207 | memset(&initial_tty,'\0',sizeof(initial_tty)); | 212 | memset(&initial_tty,'\0',sizeof(initial_tty)); |
208 | 213 | ||
209 | initial_tty = tty; | 214 | initial_tty = tty; |
210 | 215 | ||
211 | tty.c_cc[VMIN] = 0; // nonblocking | 216 | tty.c_cc[VMIN] = 0; // nonblocking |
212 | tty.c_cc[VTIME] = 0; | 217 | tty.c_cc[VTIME] = 0; |
213 | tty.c_oflag = 0; | 218 | tty.c_oflag = 0; |
214 | tty.c_lflag = 0; | 219 | tty.c_lflag = 0; |
215 | 220 | ||
216 | tty.c_cflag &= ~(CSIZE | CSTOPB | PARENB); | 221 | tty.c_cflag &= ~(CSIZE | CSTOPB | PARENB); |
217 | tty.c_cflag |= CS8 | CREAD; | 222 | tty.c_cflag |= CS8 | CREAD; |
218 | tty.c_cflag |= CLOCAL; // ignore modem status lines | 223 | tty.c_cflag |= CLOCAL; // ignore modem status lines |
219 | tty.c_iflag = IGNBRK | IGNPAR /* | ISTRIP */ ; | 224 | tty.c_iflag = IGNBRK | IGNPAR /* | ISTRIP */ ; |
220 | tty.c_lflag &= ~ICANON; // non-canonical mode | 225 | tty.c_lflag &= ~ICANON; // non-canonical mode |
221 | tty.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHOKE); | 226 | tty.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHOKE); |
222 | 227 | ||
223 | 228 | ||
224 | if(_pppdata->flowcontrol() != "None") { | 229 | if(_pppdata->flowcontrol() != "None") { |
225 | if(_pppdata->flowcontrol() == "CRTSCTS") { | 230 | if(_pppdata->flowcontrol() == "CRTSCTS") { |
226 | tty.c_cflag |= CRTSCTS; | 231 | tty.c_cflag |= CRTSCTS; |
227 | } | 232 | } |
228 | else { | 233 | else { |
229 | tty.c_iflag |= IXON | IXOFF; | 234 | tty.c_iflag |= IXON | IXOFF; |
230 | tty.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */ | 235 | tty.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */ |
231 | tty.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */ | 236 | tty.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */ |
232 | } | 237 | } |
233 | } | 238 | } |
234 | else { | 239 | else { |
235 | tty.c_cflag &= ~CRTSCTS; | 240 | tty.c_cflag &= ~CRTSCTS; |
236 | tty.c_iflag &= ~(IXON | IXOFF); | 241 | tty.c_iflag &= ~(IXON | IXOFF); |
237 | } | 242 | } |
238 | 243 | ||
239 | cfsetospeed(&tty, modemspeed()); | 244 | cfsetospeed(&tty, modemspeed()); |
240 | cfsetispeed(&tty, modemspeed()); | 245 | cfsetispeed(&tty, modemspeed()); |
241 | 246 | ||
242 | tcdrain(modemfd); | 247 | tcdrain(modemfd); |
243 | 248 | ||
244 | if(tcsetattr(modemfd, TCSANOW, &tty) < 0){ | 249 | if(tcsetattr(modemfd, TCSANOW, &tty) < 0){ |
245 | errmsg = QObject::tr("The modem is busy."); | 250 | errmsg = QObject::tr("The modem is busy."); |
246 | ::close(modemfd); | 251 | ::close(modemfd); |
247 | modemfd=-1; | 252 | modemfd=-1; |
248 | return false; | 253 | return false; |
249 | } | 254 | } |
250 | 255 | ||
251 | errmsg = QObject::tr("Modem Ready."); | 256 | errmsg = QObject::tr("Modem Ready."); |
252 | return true; | 257 | return true; |
253 | } | 258 | } |
254 | 259 | ||
255 | 260 | ||
256 | bool Modem::closetty() { | 261 | bool Modem::closetty() { |
257 | if(modemfd >=0 ) { | 262 | if(modemfd >=0 ) { |
258 | stop(); | 263 | stop(); |
259 | /* discard data not read or transmitted */ | 264 | /* discard data not read or transmitted */ |
260 | tcflush(modemfd, TCIOFLUSH); | 265 | tcflush(modemfd, TCIOFLUSH); |
261 | 266 | ||
262 | if(tcsetattr(modemfd, TCSANOW, &initial_tty) < 0){ | 267 | if(tcsetattr(modemfd, TCSANOW, &initial_tty) < 0){ |
263 | errmsg = QObject::tr("Can't restore tty settings: tcsetattr()\n"); | 268 | errmsg = QObject::tr("Can't restore tty settings: tcsetattr()\n"); |
264 | ::close(modemfd); | 269 | ::close(modemfd); |
265 | modemfd = -1; | 270 | modemfd = -1; |
266 | return false; | 271 | return false; |
267 | } | 272 | } |
268 | ::close(modemfd); | 273 | ::close(modemfd); |
269 | modemfd = -1; | 274 | modemfd = -1; |
270 | } | 275 | } |
271 | 276 | ||
272 | return true; | 277 | return true; |
273 | } | 278 | } |
274 | 279 | ||
275 | 280 | ||
276 | void Modem::readtty(int) { | 281 | void Modem::readtty(int) { |
277 | char buffer[200]; | 282 | char buffer[200]; |
278 | unsigned char c; | 283 | unsigned char c; |
279 | int len; | 284 | int len; |
280 | 285 | ||
281 | // read data in chunks of up to 200 bytes | 286 | // read data in chunks of up to 200 bytes |
282 | if((len = ::read(modemfd, buffer, 200)) > 0) { | 287 | if((len = ::read(modemfd, buffer, 200)) > 0) { |
283 | // split buffer into single characters for further processing | 288 | // split buffer into single characters for further processing |
284 | for(int i = 0; i < len; i++) { | 289 | for(int i = 0; i < len; i++) { |
285 | c = buffer[i] & 0x7F; | 290 | c = buffer[i] & 0x7F; |
286 | emit charWaiting(c); | 291 | emit charWaiting(c); |
287 | } | 292 | } |
288 | } | 293 | } |
289 | } | 294 | } |
290 | 295 | ||
291 | 296 | ||
292 | void Modem::notify(const QObject *receiver, const char *member) { | 297 | void Modem::notify(const QObject *receiver, const char *member) { |
293 | connect(this, SIGNAL(charWaiting(unsigned char)), receiver, member); | 298 | connect(this, SIGNAL(charWaiting(unsigned char)), receiver, member); |
294 | startNotifier(); | 299 | startNotifier(); |
295 | } | 300 | } |
296 | 301 | ||
297 | 302 | ||
298 | void Modem::stop() { | 303 | void Modem::stop() { |
299 | disconnect(SIGNAL(charWaiting(unsigned char))); | 304 | disconnect(SIGNAL(charWaiting(unsigned char))); |
300 | stopNotifier(); | 305 | stopNotifier(); |
301 | } | 306 | } |
302 | 307 | ||
303 | 308 | ||
304 | void Modem::startNotifier() { | 309 | void Modem::startNotifier() { |
305 | if(modemfd >= 0) { | 310 | if(modemfd >= 0) { |
306 | if(sn == 0) { | 311 | if(sn == 0) { |
307 | sn = new QSocketNotifier(modemfd, QSocketNotifier::Read, this); | 312 | sn = new QSocketNotifier(modemfd, QSocketNotifier::Read, this); |
308 | connect(sn, SIGNAL(activated(int)), SLOT(readtty(int))); | 313 | connect(sn, SIGNAL(activated(int)), SLOT(readtty(int))); |
309 | odebug << "QSocketNotifier started!" << oendl; | 314 | odebug << "QSocketNotifier started!" << oendl; |
310 | } else { | 315 | } else { |
311 | odebug << "QSocketNotifier re-enabled!" << oendl; | 316 | odebug << "QSocketNotifier re-enabled!" << oendl; |
312 | sn->setEnabled(true); | 317 | sn->setEnabled(true); |
313 | } | 318 | } |
314 | } | 319 | } |
315 | } | 320 | } |
316 | 321 | ||
317 | 322 | ||
318 | void Modem::stopNotifier() { | 323 | void Modem::stopNotifier() { |
319 | if(sn != 0) { | 324 | if(sn != 0) { |
320 | sn->setEnabled(false); | 325 | sn->setEnabled(false); |
321 | disconnect(sn); | 326 | disconnect(sn); |
322 | delete sn; | 327 | delete sn; |
323 | sn = 0; | 328 | sn = 0; |
324 | odebug << "QSocketNotifier stopped!" << oendl; | 329 | odebug << "QSocketNotifier stopped!" << oendl; |
325 | } | 330 | } |
326 | } | 331 | } |
327 | 332 | ||
328 | 333 | ||
329 | void Modem::flush() { | 334 | void Modem::flush() { |
330 | char c; | 335 | char c; |
331 | while(read(modemfd, &c, 1) == 1); | 336 | while(read(modemfd, &c, 1) == 1); |
332 | } | 337 | } |
333 | 338 | ||
334 | 339 | ||
335 | bool Modem::writeChar(unsigned char c) { | 340 | bool Modem::writeChar(unsigned char c) { |
336 | int s; | 341 | int s; |
337 | do { | 342 | do { |
338 | s = write(modemfd, &c, 1); | 343 | s = write(modemfd, &c, 1); |
339 | if (s < 0) { | 344 | if (s < 0) { |
340 | oerr << "write() in Modem::writeChar failed" << oendl; | 345 | oerr << "write() in Modem::writeChar failed" << oendl; |
341 | return false; | 346 | return false; |
342 | } | 347 | } |
343 | } while(s == 0); | 348 | } while(s == 0); |
344 | 349 | ||
345 | return true; | 350 | return true; |
346 | } | 351 | } |
347 | 352 | ||
348 | 353 | ||
349 | bool Modem::writeLine(const char *buf) { | 354 | bool Modem::writeLine(const char *buf) { |
350 | int len = strlen(buf); | 355 | int len = strlen(buf); |
351 | char *b = new char[len+2]; | 356 | char *b = new char[len+2]; |
352 | memcpy(b, buf, len); | 357 | memcpy(b, buf, len); |
353 | // different modems seem to need different line terminations | 358 | // different modems seem to need different line terminations |
354 | QString term = _pppdata->enter(); | 359 | QString term = _pppdata->enter(); |
355 | if(term == "LF") | 360 | if(term == "LF") |
356 | b[len++]='\n'; | 361 | b[len++]='\n'; |
357 | else if(term == "CR") | 362 | else if(term == "CR") |
358 | b[len++]='\r'; | 363 | b[len++]='\r'; |
359 | else if(term == "CR/LF") { | 364 | else if(term == "CR/LF") { |
360 | b[len++]='\r'; | 365 | b[len++]='\r'; |
361 | b[len++]='\n'; | 366 | b[len++]='\n'; |
362 | } | 367 | } |
363 | int l = len; | 368 | int l = len; |
364 | while(l) { | 369 | while(l) { |
365 | int wr = write(modemfd, &b[len-l], l); | 370 | int wr = write(modemfd, &b[len-l], l); |
366 | if(wr < 0) { | 371 | if(wr < 0) { |
367 | // TODO do something meaningful with the error code (or ignore it | 372 | // TODO do something meaningful with the error code (or ignore it |
368 | oerr << "write() in Modem::writeLine failed" << oendl; | 373 | oerr << "write() in Modem::writeLine failed" << oendl; |
369 | delete[] b; | 374 | delete[] b; |
370 | return false; | 375 | return false; |
371 | } | 376 | } |
372 | l -= wr; | 377 | l -= wr; |
373 | } | 378 | } |
374 | delete[] b; | 379 | delete[] b; |
375 | return true; | 380 | return true; |
376 | } | 381 | } |
377 | 382 | ||
378 | 383 | ||
379 | bool Modem::hangup() { | 384 | bool Modem::hangup() { |
380 | // this should really get the modem to hang up and go into command mode | 385 | // this should really get the modem to hang up and go into command mode |
381 | // If anyone sees a fault in the following please let me know, since | 386 | // If anyone sees a fault in the following please let me know, since |
382 | // this is probably the most imporant snippet of code in the whole of | 387 | // this is probably the most imporant snippet of code in the whole of |
383 | // kppp. If people complain about kppp being stuck, this piece of code | 388 | // kppp. If people complain about kppp being stuck, this piece of code |
384 | // is most likely the reason. | 389 | // is most likely the reason. |
385 | struct termios temptty; | 390 | struct termios temptty; |
386 | 391 | ||
387 | if(modemfd >= 0) { | 392 | if(modemfd >= 0) { |
388 | 393 | ||
389 | // is this Escape & HangupStr stuff really necessary ? (Harri) | 394 | // is this Escape & HangupStr stuff really necessary ? (Harri) |
390 | 395 | ||
391 | if (data_mode) escape_to_command_mode(); | 396 | if (data_mode) escape_to_command_mode(); |
392 | 397 | ||
393 | // Then hangup command | 398 | // Then hangup command |
394 | writeLine(_pppdata->modemHangupStr().local8Bit()); | 399 | writeLine(_pppdata->modemHangupStr().local8Bit()); |
395 | 400 | ||
396 | usleep(_pppdata->modemInitDelay() * 10000); // 0.01 - 3.0 sec | 401 | usleep(_pppdata->modemInitDelay() * 10000); // 0.01 - 3.0 sec |
397 | 402 | ||
398 | #ifndef DEBUG_WO_DIALING | 403 | #ifndef DEBUG_WO_DIALING |
399 | if (sigsetjmp(jmp_buffer, 1) == 0) { | 404 | if (sigsetjmp(jmp_buffer, 1) == 0) { |
400 | // set alarm in case tcsendbreak() hangs | 405 | // set alarm in case tcsendbreak() hangs |
401 | signal(SIGALRM, alarm_handler); | 406 | signal(SIGALRM, alarm_handler); |
402 | alarm(2); | 407 | alarm(2); |
403 | 408 | ||
404 | tcsendbreak(modemfd, 0); | 409 | tcsendbreak(modemfd, 0); |
405 | 410 | ||
406 | alarm(0); | 411 | alarm(0); |
407 | signal(SIGALRM, SIG_IGN); | 412 | signal(SIGALRM, SIG_IGN); |
408 | } else { | 413 | } else { |
409 | // we reach this point if the alarm handler got called | 414 | // we reach this point if the alarm handler got called |
410 | closetty(); | 415 | closetty(); |
diff --git a/noncore/settings/networksettings/ppp/ppp.pro b/noncore/settings/networksettings/ppp/ppp.pro index 62ca2b5..45fa0ee 100644 --- a/noncore/settings/networksettings/ppp/ppp.pro +++ b/noncore/settings/networksettings/ppp/ppp.pro | |||
@@ -1,17 +1,14 @@ | |||
1 | #TEMPLATE = app | ||
2 | # | ||
3 | TEMPLATE = lib | 1 | TEMPLATE = lib |
4 | #CONFIG += qt plugin warn_on | ||
5 | CONFIG += qt plugin warn_on | 2 | CONFIG += qt plugin warn_on |
6 | DESTDIR = $(OPIEDIR)/plugins/networksettings | 3 | DESTDIR = $(OPIEDIR)/plugins/networksettings |
7 | HEADERS = pppmodule.h modem.h modeminfo.h pppdata.h kpppconfig.h pppdata.h runtests.h general.h modemcmds.h conwindow.h accounts.h connect.h edit.h scriptedit.h pppdargs.h iplined.h pwentry.h pppconfig.h interfaceinformationppp.h interfaceppp.h authwidget.h chooserwidget.h devices.h | 4 | HEADERS = pppmodule.h modem.h modeminfo.h pppdata.h kpppconfig.h pppdata.h runtests.h general.h modemcmds.h conwindow.h accounts.h connect.h edit.h scriptedit.h pppdargs.h iplined.h pwentry.h pppconfig.h interfaceinformationppp.h interfaceppp.h authwidget.h chooserwidget.h devices.h |
8 | SOURCES = pppmodule.cpp modem.cpp modeminfo.cpp pppdata.cpp runtests.cpp general.cpp modemcmds.cpp conwindow.cpp accounts.cpp connect.cpp edit.cpp scriptedit.cpp pppdargs.cpp iplined.cpp pwentry.cpp pppconfig.cpp interfaceinformationppp.cpp interfaceppp.cpp authwidget.cpp chooserwidget.cpp devices.cpp | 5 | SOURCES = pppmodule.cpp modem.cpp modeminfo.cpp pppdata.cpp runtests.cpp general.cpp modemcmds.cpp conwindow.cpp accounts.cpp connect.cpp edit.cpp scriptedit.cpp pppdargs.cpp iplined.cpp pwentry.cpp pppconfig.cpp interfaceinformationppp.cpp interfaceppp.cpp authwidget.cpp chooserwidget.cpp devices.cpp |
9 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/ | 6 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/ |
10 | DEPENDPATH+= $(OPIEDIR)/include | 7 | DEPENDPATH+= $(OPIEDIR)/include |
11 | LIBS += -lqpe -L../interfaces/ -linterfaces | 8 | LIBS += -lqpe -L../interfaces/ -linterfaces |
12 | TARGET = kppp | 9 | TARGET = kppp |
13 | VERSION = 1.0.0 | 10 | VERSION = 1.0.0 |
14 | 11 | ||
15 | 12 | ||
16 | 13 | ||
17 | include ( $(OPIEDIR)/include.pro ) | 14 | include ( $(OPIEDIR)/include.pro ) |
diff --git a/noncore/settings/networksettings/ppp/pppconfig.cpp b/noncore/settings/networksettings/ppp/pppconfig.cpp index a8c99fd..d2a1490 100644 --- a/noncore/settings/networksettings/ppp/pppconfig.cpp +++ b/noncore/settings/networksettings/ppp/pppconfig.cpp | |||
@@ -1,75 +1,79 @@ | |||
1 | |||
2 | #include <qlayout.h> | ||
3 | #include <qmessagebox.h> | ||
4 | #include <qtabwidget.h> | ||
5 | |||
6 | #include "accounts.h" | 1 | #include "accounts.h" |
7 | #include "devices.h" | 2 | #include "devices.h" |
8 | #include "general.h" | 3 | #include "general.h" |
9 | #include "interfaceppp.h" | 4 | #include "interfaceppp.h" |
10 | #include "modem.h" | 5 | #include "modem.h" |
11 | #include "pppconfig.h" | 6 | #include "pppconfig.h" |
12 | #include "pppdata.h" | 7 | #include "pppdata.h" |
13 | #include "runtests.h" | 8 | #include "runtests.h" |
14 | 9 | ||
10 | /* OPIE */ | ||
11 | #include <opie2/odebug.h> | ||
12 | using namespace Opie::Core; | ||
13 | |||
14 | /* QT */ | ||
15 | #include <qlayout.h> | ||
16 | #include <qmessagebox.h> | ||
17 | #include <qtabwidget.h> | ||
18 | |||
15 | PPPConfigWidget::PPPConfigWidget( InterfacePPP* iface, QWidget *parent, | 19 | PPPConfigWidget::PPPConfigWidget( InterfacePPP* iface, QWidget *parent, |
16 | const char *name, | 20 | const char *name, |
17 | bool modal, WFlags fl ) | 21 | bool modal, WFlags fl ) |
18 | : QDialog(parent, name, modal, fl) | 22 | : QDialog(parent, name, modal, fl) |
19 | { | 23 | { |
20 | setCaption(tr("Configure Modem")); | 24 | setCaption(tr("Configure Modem")); |
21 | int result = runTests(); | 25 | int result = runTests(); |
22 | if(result == TEST_CRITICAL){ | 26 | if(result == TEST_CRITICAL){ |
23 | QMessageBox::critical(0, tr("Modem failure"), tr("A critical failure appeard while testing the modem") ); | 27 | QMessageBox::critical(0, tr("Modem failure"), tr("A critical failure appeard while testing the modem") ); |
24 | return; | 28 | return; |
25 | } | 29 | } |
26 | 30 | ||
27 | interface = iface; | 31 | interface = iface; |
28 | odebug << "PPPConfigWidget::PPPConfigWidget" << oendl; | 32 | odebug << "PPPConfigWidget::PPPConfigWidget" << oendl; |
29 | odebug << " interface->getHardwareName >" << interface->getHardwareName().latin1() << "<" << oendl; | 33 | odebug << " interface->getHardwareName >" << interface->getHardwareName().latin1() << "<" << oendl; |
30 | 34 | ||
31 | odebug << " _pppdata->accname >" << interface->data()->accname().latin1() << "<" << oendl; | 35 | odebug << " _pppdata->accname >" << interface->data()->accname().latin1() << "<" << oendl; |
32 | 36 | ||
33 | 37 | ||
34 | QVBoxLayout *layout = new QVBoxLayout( this ); | 38 | QVBoxLayout *layout = new QVBoxLayout( this ); |
35 | layout->setSpacing( 0 ); | 39 | layout->setSpacing( 0 ); |
36 | layout->setMargin( 1 ); | 40 | layout->setMargin( 1 ); |
37 | tabWindow = new QTabWidget( this, "tabWidget" ); | 41 | tabWindow = new QTabWidget( this, "tabWidget" ); |
38 | layout->addWidget( tabWindow ); | 42 | layout->addWidget( tabWindow ); |
39 | 43 | ||
40 | accounts = new AccountWidget( interface->data(), tabWindow, "accounts", Qt::WStyle_ContextHelp ); | 44 | accounts = new AccountWidget( interface->data(), tabWindow, "accounts", Qt::WStyle_ContextHelp ); |
41 | tabWindow->addTab( accounts, tr("&Accounts") ); | 45 | tabWindow->addTab( accounts, tr("&Accounts") ); |
42 | devices = new DevicesWidget( interface, tabWindow, "devices", Qt::WStyle_ContextHelp ); | 46 | devices = new DevicesWidget( interface, tabWindow, "devices", Qt::WStyle_ContextHelp ); |
43 | tabWindow->addTab( devices, tr("&Devices") ); | 47 | tabWindow->addTab( devices, tr("&Devices") ); |
44 | 48 | ||
45 | //OLD: | 49 | //OLD: |
46 | // modem1 = new ModemWidget( interface, tabWindow, "modem1" ); | 50 | // modem1 = new ModemWidget( interface, tabWindow, "modem1" ); |
47 | // tabWindow->addTab( modem1, tr("&Device") ); | 51 | // tabWindow->addTab( modem1, tr("&Device") ); |
48 | // modem2 = new ModemWidget2( interface, tabWindow, "modem2" ); | 52 | // modem2 = new ModemWidget2( interface, tabWindow, "modem2" ); |
49 | // tabWindow->addTab( modem2, tr("&Modem") ); | 53 | // tabWindow->addTab( modem2, tr("&Modem") ); |
50 | 54 | ||
51 | } | 55 | } |
52 | 56 | ||
53 | 57 | ||
54 | PPPConfigWidget::~PPPConfigWidget() | 58 | PPPConfigWidget::~PPPConfigWidget() |
55 | { | 59 | { |
56 | 60 | ||
57 | } | 61 | } |
58 | 62 | ||
59 | void PPPConfigWidget::accept() | 63 | void PPPConfigWidget::accept() |
60 | { | 64 | { |
61 | odebug << "PPPConfigWidget::accept" << oendl; | 65 | odebug << "PPPConfigWidget::accept" << oendl; |
62 | odebug << " _pppdata->accname >" << interface->data()->accname().latin1() << "<" << oendl; | 66 | odebug << " _pppdata->accname >" << interface->data()->accname().latin1() << "<" << oendl; |
63 | odebug << " interface->getHardwareName >" << interface->getHardwareName().latin1() << "<" << oendl; | 67 | odebug << " interface->getHardwareName >" << interface->getHardwareName().latin1() << "<" << oendl; |
64 | interface->setInterfaceName( interface->data()->devname() ); | 68 | interface->setInterfaceName( interface->data()->devname() ); |
65 | interface->setHardwareName( interface->data()->accname() ); | 69 | interface->setHardwareName( interface->data()->accname() ); |
66 | interface->save(); | 70 | interface->save(); |
67 | QDialog::accept(); | 71 | QDialog::accept(); |
68 | } | 72 | } |
69 | 73 | ||
70 | 74 | ||
71 | void PPPConfigWidget::reject() | 75 | void PPPConfigWidget::reject() |
72 | { | 76 | { |
73 | interface->data()->cancel(); | 77 | interface->data()->cancel(); |
74 | QDialog::reject(); | 78 | QDialog::reject(); |
75 | } | 79 | } |
diff --git a/noncore/settings/networksettings/ppp/pppdata.cpp b/noncore/settings/networksettings/ppp/pppdata.cpp index 567ccf8..eb03ef4 100644 --- a/noncore/settings/networksettings/ppp/pppdata.cpp +++ b/noncore/settings/networksettings/ppp/pppdata.cpp | |||
@@ -1,421 +1,423 @@ | |||
1 | /* | 1 | /* |
2 | * kPPP: A pppd front end for the KDE project | 2 | * kPPP: A pppd front end for the KDE project |
3 | * | 3 | * |
4 | * $Id$ | 4 | * $Id$ |
5 | * | 5 | * |
6 | * Copyright (C) 1997 Bernd Johannes Wuebben | 6 | * Copyright (C) 1997 Bernd Johannes Wuebben |
7 | * wuebben@math.cornell.edu | 7 | * wuebben@math.cornell.edu |
8 | * | 8 | * |
9 | * based on EzPPP: | 9 | * based on EzPPP: |
10 | * Copyright (C) 1997 Jay Painter | 10 | * Copyright (C) 1997 Jay Painter |
11 | * | 11 | * |
12 | * This program is free software; you can redistribute it and/or | 12 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU Library General Public | 13 | * modify it under the terms of the GNU Library General Public |
14 | * License as published by the Free Software Foundation; either | 14 | * License as published by the Free Software Foundation; either |
15 | * version 2 of the License, or (at your option) any later version. | 15 | * version 2 of the License, or (at your option) any later version. |
16 | * | 16 | * |
17 | * This program is distributed in the hope that it will be useful, | 17 | * This program is distributed in the hope that it will be useful, |
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | * Library General Public License for more details. | 20 | * Library General Public License for more details. |
21 | * | 21 | * |
22 | * You should have received a copy of the GNU Library General Public | 22 | * You should have received a copy of the GNU Library General Public |
23 | * License along with this program; if not, write to the Free | 23 | * License along with this program; if not, write to the Free |
24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 24 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include "pppdata.h" | 27 | #include "pppdata.h" |
28 | #include "runtests.h" | 28 | #include "runtests.h" |
29 | //#include "devices.h" | 29 | |
30 | //#include <klocale.h> | 30 | /* OPIE */ |
31 | #include <opie2/odebug.h> | ||
31 | #include <qpe/config.h> | 32 | #include <qpe/config.h> |
33 | using namespace Opie::Core; | ||
34 | |||
35 | /* QT */ | ||
32 | #include <qmessagebox.h> | 36 | #include <qmessagebox.h> |
33 | #include <qapplication.h> | 37 | #include <qapplication.h> |
34 | // #include <klocale.h> | 38 | |
35 | // #include <kconfig.h> | 39 | /* STD */ |
36 | // #include <kmessagebox.h> | ||
37 | // #include <kapplication.h> | ||
38 | #include <assert.h> | 40 | #include <assert.h> |
39 | 41 | ||
40 | #define SEPARATOR -sseepp- | 42 | #define SEPARATOR -sseepp- |
41 | #define SEP QString("%1SEPARATOR%1") | 43 | #define SEP QString("%1SEPARATOR%1") |
42 | 44 | ||
43 | PPPData::PPPData() | 45 | PPPData::PPPData() |
44 | : passwd(""), | 46 | : passwd(""), |
45 | _modemName(""), | 47 | _modemName(""), |
46 | highcount(-1), // start out with no entries | 48 | highcount(-1), // start out with no entries |
47 | highcountdev(-1), // start out with no entries | 49 | highcountdev(-1), // start out with no entries |
48 | // caccount(-1), // set the current account index also | 50 | // caccount(-1), // set the current account index also |
49 | suidprocessid(-1), // process ID of setuid child | 51 | suidprocessid(-1), // process ID of setuid child |
50 | pppdisrunning(false), | 52 | pppdisrunning(false), |
51 | pppderror(0) | 53 | pppderror(0) |
52 | { | 54 | { |
53 | highcount = readNumConfig(GENERAL_GRP, NUMACCOUNTS_KEY, 0) - 1; | 55 | highcount = readNumConfig(GENERAL_GRP, NUMACCOUNTS_KEY, 0) - 1; |
54 | highcountdev = readNumConfig(GENERAL_GRP, NUMDEVICES_KEY, 0) - 1; | 56 | highcountdev = readNumConfig(GENERAL_GRP, NUMDEVICES_KEY, 0) - 1; |
55 | Config cfg = config(); | 57 | Config cfg = config(); |
56 | cfg.setGroup(GENERAL_GRP); | 58 | cfg.setGroup(GENERAL_GRP); |
57 | accountList = cfg.readListEntry(ACCOUNT_LIST, ',' ); | 59 | accountList = cfg.readListEntry(ACCOUNT_LIST, ',' ); |
58 | deviceList = cfg.readListEntry(DEVICESNAMES_LIST, ',' ); | 60 | deviceList = cfg.readListEntry(DEVICESNAMES_LIST, ',' ); |
59 | odebug << "PPPData::PPPData has a accountList " << accountList.join("---").latin1() << "" << oendl; | 61 | odebug << "PPPData::PPPData has a accountList " << accountList.join("---").latin1() << "" << oendl; |
60 | odebug << "PPPData::PPPData has a deviceList " << deviceList.join("---").latin1() << "" << oendl; | 62 | odebug << "PPPData::PPPData has a deviceList " << deviceList.join("---").latin1() << "" << oendl; |
61 | 63 | ||
62 | // if (highcount > MAX_ACCOUNTS) | 64 | // if (highcount > MAX_ACCOUNTS) |
63 | // highcount = MAX_ACCOUNTS; | 65 | // highcount = MAX_ACCOUNTS; |
64 | 66 | ||
65 | // if(highcount >= 0 && defaultAccount().isEmpty()) { | 67 | // if(highcount >= 0 && defaultAccount().isEmpty()) { |
66 | // setAccountbyIndex(0); | 68 | // setAccountbyIndex(0); |
67 | // setDefaultAccount(accname()); | 69 | // setDefaultAccount(accname()); |
68 | // } else if(!setAccount(defaultAccount())) | 70 | // } else if(!setAccount(defaultAccount())) |
69 | setDefaultAccount(accname()); | 71 | setDefaultAccount(accname()); |
70 | 72 | ||
71 | // start out with internal debugging disabled | 73 | // start out with internal debugging disabled |
72 | // the user is still free to specify `debug' on his own | 74 | // the user is still free to specify `debug' on his own |
73 | setPPPDebug(false); | 75 | setPPPDebug(false); |
74 | 76 | ||
75 | ::pppdVersion(&pppdVer, &pppdMod, &pppdPatch); | 77 | ::pppdVersion(&pppdVer, &pppdMod, &pppdPatch); |
76 | 78 | ||
77 | } | 79 | } |
78 | 80 | ||
79 | Config PPPData::config() | 81 | Config PPPData::config() |
80 | { | 82 | { |
81 | return Config("NetworkSetupPPP"); | 83 | return Config("NetworkSetupPPP"); |
82 | } | 84 | } |
83 | 85 | ||
84 | // | 86 | // |
85 | // save configuration | 87 | // save configuration |
86 | // | 88 | // |
87 | void PPPData::save() | 89 | void PPPData::save() |
88 | { | 90 | { |
89 | odebug << "PPPData saving data" << oendl; | 91 | odebug << "PPPData saving data" << oendl; |
90 | writeConfig(GENERAL_GRP, NUMACCOUNTS_KEY, count()); | 92 | writeConfig(GENERAL_GRP, NUMACCOUNTS_KEY, count()); |
91 | writeConfig(GENERAL_GRP, NUMDEVICES_KEY, highcountdev + 1); | 93 | writeConfig(GENERAL_GRP, NUMDEVICES_KEY, highcountdev + 1); |
92 | QString key; | 94 | QString key; |
93 | QStringList keys; | 95 | QStringList keys; |
94 | Config cfg = config(); | 96 | Config cfg = config(); |
95 | cfg.setGroup(GENERAL_GRP); | 97 | cfg.setGroup(GENERAL_GRP); |
96 | cfg.writeEntry(ACCOUNT_LIST, accountList, ',' ); | 98 | cfg.writeEntry(ACCOUNT_LIST, accountList, ',' ); |
97 | cfg.writeEntry(DEVICESNAMES_LIST, deviceList, ',' ); | 99 | cfg.writeEntry(DEVICESNAMES_LIST, deviceList, ',' ); |
98 | 100 | ||
99 | for( QMap<QString,QString>::Iterator it = stringEntries.begin(); | 101 | for( QMap<QString,QString>::Iterator it = stringEntries.begin(); |
100 | it != stringEntries.end(); ++it ){ | 102 | it != stringEntries.end(); ++it ){ |
101 | QString val = it.data(); | 103 | QString val = it.data(); |
102 | key = it.key(); | 104 | key = it.key(); |
103 | // odebug << "saving " << key.latin1() << " -> " << val.latin1() << "" << oendl; | 105 | // odebug << "saving " << key.latin1() << " -> " << val.latin1() << "" << oendl; |
104 | keys = QStringList::split( "SEPARATOR", key ); | 106 | keys = QStringList::split( "SEPARATOR", key ); |
105 | //odebug << "group >" << keys[0].latin1() << "< key >" << keys[1].latin1() << "< value >" << val.latin1() << "<" << oendl; | 107 | //odebug << "group >" << keys[0].latin1() << "< key >" << keys[1].latin1() << "< value >" << val.latin1() << "<" << oendl; |
106 | cfg.setGroup(keys[0]); | 108 | cfg.setGroup(keys[0]); |
107 | cfg.writeEntry(keys[1], val); | 109 | cfg.writeEntry(keys[1], val); |
108 | } | 110 | } |
109 | for( QMap<QString,int>::Iterator it = intEntries.begin(); | 111 | for( QMap<QString,int>::Iterator it = intEntries.begin(); |
110 | it != intEntries.end(); ++it ){ | 112 | it != intEntries.end(); ++it ){ |
111 | int val = it.data(); | 113 | int val = it.data(); |
112 | key = it.key(); | 114 | key = it.key(); |
113 | // odebug << "saving " << key.latin1() << " -> " << val << "" << oendl; | 115 | // odebug << "saving " << key.latin1() << " -> " << val << "" << oendl; |
114 | keys = QStringList::split( "SEPARATOR", key ); | 116 | keys = QStringList::split( "SEPARATOR", key ); |
115 | //odebug << "group >" << keys[0].latin1() << "< key >" << keys[1].latin1() << "< val " << val << "" << oendl; | 117 | //odebug << "group >" << keys[0].latin1() << "< key >" << keys[1].latin1() << "< val " << val << "" << oendl; |
116 | cfg.setGroup(keys[0]); | 118 | cfg.setGroup(keys[0]); |
117 | cfg.writeEntry(keys[1], val); | 119 | cfg.writeEntry(keys[1], val); |
118 | } | 120 | } |
119 | for( QMap<QString,QStringList>::Iterator it = listEntries.begin(); | 121 | for( QMap<QString,QStringList>::Iterator it = listEntries.begin(); |
120 | it != listEntries.end(); ++it ){ | 122 | it != listEntries.end(); ++it ){ |
121 | QStringList val = it.data(); | 123 | QStringList val = it.data(); |
122 | key = it.key(); | 124 | key = it.key(); |
123 | QChar sep = sepEntries[key]; | 125 | QChar sep = sepEntries[key]; |
124 | // odebug << "saving " << key.latin1() << " -> " << val.join(sep).latin1() << "" << oendl; | 126 | // odebug << "saving " << key.latin1() << " -> " << val.join(sep).latin1() << "" << oendl; |
125 | keys = QStringList::split( "SEPARATOR", key ); | 127 | keys = QStringList::split( "SEPARATOR", key ); |
126 | cfg.setGroup(keys[0]); | 128 | cfg.setGroup(keys[0]); |
127 | cfg.writeEntry(keys[1], val, sep); | 129 | cfg.writeEntry(keys[1], val, sep); |
128 | } | 130 | } |
129 | } | 131 | } |
130 | 132 | ||
131 | 133 | ||
132 | // | 134 | // |
133 | // cancel changes | 135 | // cancel changes |
134 | // | 136 | // |
135 | void PPPData::cancel() { | 137 | void PPPData::cancel() { |
136 | stringEntries.clear(); | 138 | stringEntries.clear(); |
137 | intEntries.clear(); | 139 | intEntries.clear(); |
138 | listEntries.clear(); | 140 | listEntries.clear(); |
139 | } | 141 | } |
140 | 142 | ||
141 | // functions to read/write date to configuration file | 143 | // functions to read/write date to configuration file |
142 | QString PPPData::readConfig(const QString &group, const QString &key, | 144 | QString PPPData::readConfig(const QString &group, const QString &key, |
143 | const QString &defvalue = "") | 145 | const QString &defvalue = "") |
144 | { | 146 | { |
145 | // odebug << "PPPData::readConfig key >" << key.latin1() << "< group >" << group.latin1() << "<" << oendl; | 147 | // odebug << "PPPData::readConfig key >" << key.latin1() << "< group >" << group.latin1() << "<" << oendl; |
146 | QString idx = SEP.arg(group).arg(key); | 148 | QString idx = SEP.arg(group).arg(key); |
147 | if (stringEntries.find(idx) != stringEntries.end()) | 149 | if (stringEntries.find(idx) != stringEntries.end()) |
148 | return stringEntries[idx]; | 150 | return stringEntries[idx]; |
149 | Config cfg = config(); | 151 | Config cfg = config(); |
150 | cfg.setGroup(group); | 152 | cfg.setGroup(group); |
151 | return cfg.readEntry(key, defvalue); | 153 | return cfg.readEntry(key, defvalue); |
152 | } | 154 | } |
153 | 155 | ||
154 | 156 | ||
155 | int PPPData::readNumConfig(const QString &group, const QString &key, | 157 | int PPPData::readNumConfig(const QString &group, const QString &key, |
156 | int defvalue) | 158 | int defvalue) |
157 | { | 159 | { |
158 | QString idx = SEP.arg(group).arg(key); | 160 | QString idx = SEP.arg(group).arg(key); |
159 | if (intEntries.find(idx) != intEntries.end()) | 161 | if (intEntries.find(idx) != intEntries.end()) |
160 | return intEntries[idx]; | 162 | return intEntries[idx]; |
161 | Config cfg = config(); | 163 | Config cfg = config(); |
162 | cfg.setGroup(group); | 164 | cfg.setGroup(group); |
163 | return cfg.readNumEntry(key, defvalue); | 165 | return cfg.readNumEntry(key, defvalue); |
164 | 166 | ||
165 | // if (config) { | 167 | // if (config) { |
166 | // config->setGroup(group); | 168 | // config->setGroup(group); |
167 | // return config->readNumEntry(key, defvalue); | 169 | // return config->readNumEntry(key, defvalue); |
168 | // } else | 170 | // } else |
169 | // return defvalue; | 171 | // return defvalue; |
170 | 172 | ||
171 | } | 173 | } |
172 | 174 | ||
173 | 175 | ||
174 | bool PPPData::readListConfig(const QString &group, const QString &key, | 176 | bool PPPData::readListConfig(const QString &group, const QString &key, |
175 | QStringList &list, char sep) { | 177 | QStringList &list, char sep) { |
176 | list.clear(); | 178 | list.clear(); |
177 | QString idx = SEP.arg(group).arg(key); | 179 | QString idx = SEP.arg(group).arg(key); |
178 | if (listEntries.find(idx) != listEntries.end()){ | 180 | if (listEntries.find(idx) != listEntries.end()){ |
179 | list = listEntries[idx]; | 181 | list = listEntries[idx]; |
180 | return true; | 182 | return true; |
181 | } | 183 | } |
182 | Config cfg = config(); | 184 | Config cfg = config(); |
183 | cfg.setGroup(group); | 185 | cfg.setGroup(group); |
184 | list = cfg.readListEntry(key, sep); | 186 | list = cfg.readListEntry(key, sep); |
185 | if (list.count() > 0) return true; | 187 | if (list.count() > 0) return true; |
186 | return false; | 188 | return false; |
187 | 189 | ||
188 | // if (config) { | 190 | // if (config) { |
189 | // config->setGroup(group); | 191 | // config->setGroup(group); |
190 | // list = config->readListEntry(key, sep); | 192 | // list = config->readListEntry(key, sep); |
191 | // return true; | 193 | // return true; |
192 | // } else | 194 | // } else |
193 | // return false; | 195 | // return false; |
194 | } | 196 | } |
195 | 197 | ||
196 | 198 | ||
197 | void PPPData::writeConfig(const QString &group, const QString &key, | 199 | void PPPData::writeConfig(const QString &group, const QString &key, |
198 | const QString &value) { | 200 | const QString &value) { |
199 | stringEntries.insert( SEP.arg(group).arg(key), value ); | 201 | stringEntries.insert( SEP.arg(group).arg(key), value ); |
200 | // if (config) { | 202 | // if (config) { |
201 | // config->setGroup(group); | 203 | // config->setGroup(group); |
202 | // config->writeEntry(key, value); | 204 | // config->writeEntry(key, value); |
203 | // } | 205 | // } |
204 | } | 206 | } |
205 | 207 | ||
206 | 208 | ||
207 | void PPPData::writeConfig(const QString &group, const QString &key, int value) | 209 | void PPPData::writeConfig(const QString &group, const QString &key, int value) |
208 | { | 210 | { |
209 | intEntries.insert( SEP.arg(group).arg(key), value ); | 211 | intEntries.insert( SEP.arg(group).arg(key), value ); |
210 | // if (config) { | 212 | // if (config) { |
211 | // config->setGroup(group); | 213 | // config->setGroup(group); |
212 | // config->writeEntry(key, value); | 214 | // config->writeEntry(key, value); |
213 | // } | 215 | // } |
214 | } | 216 | } |
215 | 217 | ||
216 | 218 | ||
217 | void PPPData::writeListConfig(const QString &group, const QString &key, | 219 | void PPPData::writeListConfig(const QString &group, const QString &key, |
218 | QStringList &list, char sep) | 220 | QStringList &list, char sep) |
219 | { | 221 | { |
220 | listEntries.insert( SEP.arg(group).arg(key), list ); | 222 | listEntries.insert( SEP.arg(group).arg(key), list ); |
221 | sepEntries.insert( SEP.arg(group).arg(key), sep ); | 223 | sepEntries.insert( SEP.arg(group).arg(key), sep ); |
222 | // if (config) { | 224 | // if (config) { |
223 | // config->setGroup(group); | 225 | // config->setGroup(group); |
224 | // config->writeEntry(key, list, sep); | 226 | // config->writeEntry(key, list, sep); |
225 | // } | 227 | // } |
226 | } | 228 | } |
227 | 229 | ||
228 | 230 | ||
229 | // | 231 | // |
230 | // functions to set/return general information | 232 | // functions to set/return general information |
231 | // | 233 | // |
232 | QString PPPData::password(){ | 234 | QString PPPData::password(){ |
233 | if ( storePassword() ) return storedPassword(); | 235 | if ( storePassword() ) return storedPassword(); |
234 | else return passwd; | 236 | else return passwd; |
235 | } | 237 | } |
236 | 238 | ||
237 | 239 | ||
238 | void PPPData::setPassword(const QString &pw) { | 240 | void PPPData::setPassword(const QString &pw) { |
239 | passwd = pw; | 241 | passwd = pw; |
240 | } | 242 | } |
241 | 243 | ||
242 | 244 | ||
243 | const QString PPPData::defaultAccount() { | 245 | const QString PPPData::defaultAccount() { |
244 | return readConfig(GENERAL_GRP, DEFAULTACCOUNT_KEY); | 246 | return readConfig(GENERAL_GRP, DEFAULTACCOUNT_KEY); |
245 | } | 247 | } |
246 | 248 | ||
247 | 249 | ||
248 | void PPPData::setDefaultAccount(const QString &n) { | 250 | void PPPData::setDefaultAccount(const QString &n) { |
249 | writeConfig(GENERAL_GRP, DEFAULTACCOUNT_KEY, n); | 251 | writeConfig(GENERAL_GRP, DEFAULTACCOUNT_KEY, n); |
250 | 252 | ||
251 | //now set the current account index to the default account | 253 | //now set the current account index to the default account |
252 | setAccount(defaultAccount()); | 254 | setAccount(defaultAccount()); |
253 | } | 255 | } |
254 | 256 | ||
255 | 257 | ||
256 | bool PPPData::get_show_clock_on_caption() { | 258 | bool PPPData::get_show_clock_on_caption() { |
257 | return (bool) readNumConfig(GENERAL_GRP, SHOWCLOCK_KEY, true); | 259 | return (bool) readNumConfig(GENERAL_GRP, SHOWCLOCK_KEY, true); |
258 | } | 260 | } |
259 | 261 | ||
260 | 262 | ||
261 | void PPPData::set_show_clock_on_caption(bool set) { | 263 | void PPPData::set_show_clock_on_caption(bool set) { |
262 | writeConfig(GENERAL_GRP, SHOWCLOCK_KEY, (int) set); | 264 | writeConfig(GENERAL_GRP, SHOWCLOCK_KEY, (int) set); |
263 | } | 265 | } |
264 | 266 | ||
265 | 267 | ||
266 | bool PPPData::get_xserver_exit_disconnect() { | 268 | bool PPPData::get_xserver_exit_disconnect() { |
267 | return (bool) readNumConfig(GENERAL_GRP, DISCONNECT_KEY, true); | 269 | return (bool) readNumConfig(GENERAL_GRP, DISCONNECT_KEY, true); |
268 | } | 270 | } |
269 | 271 | ||
270 | 272 | ||
271 | void PPPData::setPPPDebug(bool set) { | 273 | void PPPData::setPPPDebug(bool set) { |
272 | writeConfig(GENERAL_GRP, PPP_DEBUG_OPTION, (int)set); | 274 | writeConfig(GENERAL_GRP, PPP_DEBUG_OPTION, (int)set); |
273 | } | 275 | } |
274 | 276 | ||
275 | 277 | ||
276 | bool PPPData::getPPPDebug() { | 278 | bool PPPData::getPPPDebug() { |
277 | return (bool)readNumConfig(GENERAL_GRP, PPP_DEBUG_OPTION, false); | 279 | return (bool)readNumConfig(GENERAL_GRP, PPP_DEBUG_OPTION, false); |
278 | } | 280 | } |
279 | 281 | ||
280 | 282 | ||
281 | void PPPData::set_xserver_exit_disconnect(bool set) { | 283 | void PPPData::set_xserver_exit_disconnect(bool set) { |
282 | writeConfig(GENERAL_GRP, DISCONNECT_KEY, (int) set); | 284 | writeConfig(GENERAL_GRP, DISCONNECT_KEY, (int) set); |
283 | } | 285 | } |
284 | 286 | ||
285 | 287 | ||
286 | bool PPPData::quit_on_disconnect() { | 288 | bool PPPData::quit_on_disconnect() { |
287 | return (bool) readNumConfig(GENERAL_GRP, QUITONDISCONNECT_KEY, false); | 289 | return (bool) readNumConfig(GENERAL_GRP, QUITONDISCONNECT_KEY, false); |
288 | } | 290 | } |
289 | 291 | ||
290 | 292 | ||
291 | void PPPData::set_quit_on_disconnect(bool set) { | 293 | void PPPData::set_quit_on_disconnect(bool set) { |
292 | writeConfig(GENERAL_GRP, QUITONDISCONNECT_KEY, (int) set); | 294 | writeConfig(GENERAL_GRP, QUITONDISCONNECT_KEY, (int) set); |
293 | } | 295 | } |
294 | 296 | ||
295 | 297 | ||
296 | bool PPPData::get_show_log_window() { | 298 | bool PPPData::get_show_log_window() { |
297 | return (bool) readNumConfig (GENERAL_GRP, SHOWLOGWIN_KEY, false); | 299 | return (bool) readNumConfig (GENERAL_GRP, SHOWLOGWIN_KEY, false); |
298 | } | 300 | } |
299 | 301 | ||
300 | 302 | ||
301 | void PPPData::set_show_log_window(bool set) { | 303 | void PPPData::set_show_log_window(bool set) { |
302 | writeConfig(GENERAL_GRP, SHOWLOGWIN_KEY, (int) set); | 304 | writeConfig(GENERAL_GRP, SHOWLOGWIN_KEY, (int) set); |
303 | } | 305 | } |
304 | 306 | ||
305 | 307 | ||
306 | bool PPPData::automatic_redial() { | 308 | bool PPPData::automatic_redial() { |
307 | return (bool) readNumConfig(GENERAL_GRP, AUTOREDIAL_KEY, FALSE); | 309 | return (bool) readNumConfig(GENERAL_GRP, AUTOREDIAL_KEY, FALSE); |
308 | } | 310 | } |
309 | 311 | ||
310 | 312 | ||
311 | void PPPData::set_automatic_redial(bool set) { | 313 | void PPPData::set_automatic_redial(bool set) { |
312 | writeConfig(GENERAL_GRP, AUTOREDIAL_KEY, (int) set); | 314 | writeConfig(GENERAL_GRP, AUTOREDIAL_KEY, (int) set); |
313 | } | 315 | } |
314 | 316 | ||
315 | 317 | ||
316 | // bool PPPData::get_iconify_on_connect() { | 318 | // bool PPPData::get_iconify_on_connect() { |
317 | // return (bool) readNumConfig(GENERAL_GRP, ICONIFY_ON_CONNECT_KEY, TRUE); | 319 | // return (bool) readNumConfig(GENERAL_GRP, ICONIFY_ON_CONNECT_KEY, TRUE); |
318 | // } | 320 | // } |
319 | 321 | ||
320 | 322 | ||
321 | // void PPPData::set_iconify_on_connect(bool set) { | 323 | // void PPPData::set_iconify_on_connect(bool set) { |
322 | // writeConfig(GENERAL_GRP, ICONIFY_ON_CONNECT_KEY, (int) set); | 324 | // writeConfig(GENERAL_GRP, ICONIFY_ON_CONNECT_KEY, (int) set); |
323 | // } | 325 | // } |
324 | 326 | ||
325 | 327 | ||
326 | // bool PPPData::get_dock_into_panel() { | 328 | // bool PPPData::get_dock_into_panel() { |
327 | // return (bool) readNumConfig(GENERAL_GRP, DOCKING_KEY, false); | 329 | // return (bool) readNumConfig(GENERAL_GRP, DOCKING_KEY, false); |
328 | // } | 330 | // } |
329 | 331 | ||
330 | 332 | ||
331 | // void PPPData::set_dock_into_panel(bool set) { | 333 | // void PPPData::set_dock_into_panel(bool set) { |
332 | // writeConfig(GENERAL_GRP, DOCKING_KEY, (int) set); | 334 | // writeConfig(GENERAL_GRP, DOCKING_KEY, (int) set); |
333 | // } | 335 | // } |
334 | 336 | ||
335 | 337 | ||
336 | QString PPPData::pppdVersion() { | 338 | QString PPPData::pppdVersion() { |
337 | return QString("%1.%2.%3").arg(pppdVer).arg(pppdMod).arg(pppdPatch); | 339 | return QString("%1.%2.%3").arg(pppdVer).arg(pppdMod).arg(pppdPatch); |
338 | } | 340 | } |
339 | 341 | ||
340 | bool PPPData::pppdVersionMin(int ver, int mod, int patch) { | 342 | bool PPPData::pppdVersionMin(int ver, int mod, int patch) { |
341 | // check if pppd version fulfills minimum requirement | 343 | // check if pppd version fulfills minimum requirement |
342 | return (pppdVer > ver | 344 | return (pppdVer > ver |
343 | || (pppdVer == ver && pppdMod > mod) | 345 | || (pppdVer == ver && pppdMod > mod) |
344 | || (pppdVer == ver && pppdMod == mod && pppdPatch >= patch)); | 346 | || (pppdVer == ver && pppdMod == mod && pppdPatch >= patch)); |
345 | } | 347 | } |
346 | 348 | ||
347 | int PPPData::pppdTimeout() { | 349 | int PPPData::pppdTimeout() { |
348 | return readNumConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, PPPD_TIMEOUT); | 350 | return readNumConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, PPPD_TIMEOUT); |
349 | } | 351 | } |
350 | 352 | ||
351 | 353 | ||
352 | void PPPData::setpppdTimeout(int n) { | 354 | void PPPData::setpppdTimeout(int n) { |
353 | writeConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, n); | 355 | writeConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, n); |
354 | } | 356 | } |
355 | 357 | ||
356 | 358 | ||
357 | const QString PPPData::modemDevice() { | 359 | const QString PPPData::modemDevice() { |
358 | return readConfig (modemGroup(), MODEMDEV_KEY, "/dev/modem" ); | 360 | return readConfig (modemGroup(), MODEMDEV_KEY, "/dev/modem" ); |
359 | } | 361 | } |
360 | 362 | ||
361 | 363 | ||
362 | // const QString PPPData::modemName() | 364 | // const QString PPPData::modemName() |
363 | // { | 365 | // { |
364 | // return readConfig(modemGroup(), MODEMNAME_KEY); | 366 | // return readConfig(modemGroup(), MODEMNAME_KEY); |
365 | // } | 367 | // } |
366 | 368 | ||
367 | // bool PPPData::setModemName(const QString &n) { | 369 | // bool PPPData::setModemName(const QString &n) { |
368 | // odebug << "Setting modem name to >" << n.latin1() << "<" << oendl; | 370 | // odebug << "Setting modem name to >" << n.latin1() << "<" << oendl; |
369 | // _modemName = n; | 371 | // _modemName = n; |
370 | // writeConfig(cgroup, MODEMNAME_KEY, n); | 372 | // writeConfig(cgroup, MODEMNAME_KEY, n); |
371 | // return true; //FIXME | 373 | // return true; //FIXME |
372 | // } | 374 | // } |
373 | 375 | ||
374 | // bool PPPData::changeModemName(const QString &n) { | 376 | // bool PPPData::changeModemName(const QString &n) { |
375 | // odebug << "Setting modem name to >" << n.latin1() << "<" << oendl; | 377 | // odebug << "Setting modem name to >" << n.latin1() << "<" << oendl; |
376 | // _modemName = n; | 378 | // _modemName = n; |
377 | // writeConfig(modemGroup(), MODEMNAME_KEY, n); | 379 | // writeConfig(modemGroup(), MODEMNAME_KEY, n); |
378 | // return true; //FIXME | 380 | // return true; //FIXME |
379 | // } | 381 | // } |
380 | 382 | ||
381 | bool PPPData::setModemDevice(const QString &n) { | 383 | bool PPPData::setModemDevice(const QString &n) { |
382 | odebug << "Setting modem dev to >" << n.latin1() << "<" << oendl; | 384 | odebug << "Setting modem dev to >" << n.latin1() << "<" << oendl; |
383 | writeConfig(modemGroup(), MODEMDEV_KEY, n); | 385 | writeConfig(modemGroup(), MODEMDEV_KEY, n); |
384 | return true; //FIXME | 386 | return true; //FIXME |
385 | } | 387 | } |
386 | 388 | ||
387 | 389 | ||
388 | const QString PPPData::flowcontrol() { | 390 | const QString PPPData::flowcontrol() { |
389 | return readConfig(modemGroup(), FLOWCONTROL_KEY, "CRTSCTS"); | 391 | return readConfig(modemGroup(), FLOWCONTROL_KEY, "CRTSCTS"); |
390 | } | 392 | } |
391 | 393 | ||
392 | 394 | ||
393 | void PPPData::setFlowcontrol(const QString &n) { | 395 | void PPPData::setFlowcontrol(const QString &n) { |
394 | writeConfig(modemGroup(), FLOWCONTROL_KEY, n); | 396 | writeConfig(modemGroup(), FLOWCONTROL_KEY, n); |
395 | } | 397 | } |
396 | 398 | ||
397 | 399 | ||
398 | const QString PPPData::speed() { | 400 | const QString PPPData::speed() { |
399 | QString s = readConfig(modemGroup(), SPEED_KEY, "57600"); | 401 | QString s = readConfig(modemGroup(), SPEED_KEY, "57600"); |
400 | // undo the damage of a bug in former versions. It left an empty Speed= | 402 | // undo the damage of a bug in former versions. It left an empty Speed= |
401 | // entry in kppprc. kppp did set the serial port to 57600 as default but | 403 | // entry in kppprc. kppp did set the serial port to 57600 as default but |
402 | // pppd wouldn't receive the speed via the command line. | 404 | // pppd wouldn't receive the speed via the command line. |
403 | if(s.toUInt() == 0) | 405 | if(s.toUInt() == 0) |
404 | s = "57600"; | 406 | s = "57600"; |
405 | return s; | 407 | return s; |
406 | } | 408 | } |
407 | 409 | ||
408 | 410 | ||
409 | void PPPData::setSpeed(const QString &n) { | 411 | void PPPData::setSpeed(const QString &n) { |
410 | writeConfig(modemGroup(), SPEED_KEY, n); | 412 | writeConfig(modemGroup(), SPEED_KEY, n); |
411 | } | 413 | } |
412 | 414 | ||
413 | 415 | ||
414 | #if 0 | 416 | #if 0 |
415 | void PPPData::setUseCDLine(const int n) { | 417 | void PPPData::setUseCDLine(const int n) { |
416 | writeConfig(modemGroup(),USECDLINE_KEY,n); | 418 | writeConfig(modemGroup(),USECDLINE_KEY,n); |
417 | } | 419 | } |
418 | 420 | ||
419 | 421 | ||
420 | int PPPData::UseCDLine() { | 422 | int PPPData::UseCDLine() { |
421 | return readNumConfig(modemGroup(),USECDLINE_KEY,0); | 423 | return readNumConfig(modemGroup(),USECDLINE_KEY,0); |
diff --git a/noncore/settings/networksettings/ppp/pppmodule.cpp b/noncore/settings/networksettings/ppp/pppmodule.cpp index 2291e8a..b102a10 100644 --- a/noncore/settings/networksettings/ppp/pppmodule.cpp +++ b/noncore/settings/networksettings/ppp/pppmodule.cpp | |||
@@ -1,283 +1,285 @@ | |||
1 | 1 | ||
2 | #include "modem.h" | 2 | #include "modem.h" |
3 | #include "pppconfig.h" | 3 | #include "pppconfig.h" |
4 | #include "pppmodule.h" | 4 | #include "pppmodule.h" |
5 | #include "pppdata.h" | 5 | #include "pppdata.h" |
6 | #include "interfaceinformationppp.h" | 6 | #include "interfaceinformationppp.h" |
7 | #include "interfaceppp.h" | 7 | #include "interfaceppp.h" |
8 | 8 | ||
9 | /* OPIE */ | 9 | /* OPIE */ |
10 | #include <opie2/odebug.h> | ||
10 | #include <qpe/config.h> | 11 | #include <qpe/config.h> |
11 | #include <qpe/qpeapplication.h> | 12 | #include <qpe/qpeapplication.h> |
13 | using namespace Opie::Core; | ||
12 | 14 | ||
13 | /* QT */ | 15 | /* QT */ |
14 | 16 | ||
15 | /* STD */ | 17 | /* STD */ |
16 | #include <errno.h> | 18 | #include <errno.h> |
17 | #include <signal.h> | 19 | #include <signal.h> |
18 | 20 | ||
19 | // don't polute global namespace | 21 | // don't polute global namespace |
20 | namespace | 22 | namespace |
21 | { | 23 | { |
22 | /* | 24 | /* |
23 | * If network settings is qutting and we've ppp | 25 | * If network settings is qutting and we've ppp |
24 | * devices open we need to save the pid_t the PPData | 26 | * devices open we need to save the pid_t the PPData |
25 | * and the interface number | 27 | * and the interface number |
26 | */ | 28 | */ |
27 | struct Connection | 29 | struct Connection |
28 | { | 30 | { |
29 | pid_t pid; | 31 | pid_t pid; |
30 | QString device; | 32 | QString device; |
31 | QString name; | 33 | QString name; |
32 | }; | 34 | }; |
33 | class InterfaceKeeper | 35 | class InterfaceKeeper |
34 | { | 36 | { |
35 | public: | 37 | public: |
36 | InterfaceKeeper(); | 38 | InterfaceKeeper(); |
37 | ~InterfaceKeeper(); | 39 | ~InterfaceKeeper(); |
38 | 40 | ||
39 | void addInterface( pid_t, const QString& pppDev, const QString& name ); | 41 | void addInterface( pid_t, const QString& pppDev, const QString& name ); |
40 | QMap<QString, Connection> interfaces()const; // will check if still available | 42 | QMap<QString, Connection> interfaces()const; // will check if still available |
41 | private: | 43 | private: |
42 | bool isAvailable( pid_t )const; | 44 | bool isAvailable( pid_t )const; |
43 | QMap<QString, Connection> m_interfaces; | 45 | QMap<QString, Connection> m_interfaces; |
44 | }; | 46 | }; |
45 | } | 47 | } |
46 | 48 | ||
47 | 49 | ||
48 | /** | 50 | /** |
49 | * Constructor, find all of the possible interfaces | 51 | * Constructor, find all of the possible interfaces |
50 | * We also need to restore the state.. it could be that | 52 | * We also need to restore the state.. it could be that |
51 | * an interface was up while closing the application | 53 | * an interface was up while closing the application |
52 | * we need to be able to shut it down... | 54 | * we need to be able to shut it down... |
53 | */ | 55 | */ |
54 | PPPModule::PPPModule() : Module() | 56 | PPPModule::PPPModule() : Module() |
55 | { | 57 | { |
56 | InterfaceKeeper inFace; | 58 | InterfaceKeeper inFace; |
57 | QMap<QString,Connection> running = inFace.interfaces(); | 59 | QMap<QString,Connection> running = inFace.interfaces(); |
58 | QStringList handledInterfaceNames; | 60 | QStringList handledInterfaceNames; |
59 | 61 | ||
60 | QMap<QString,QString> ifaces = PPPData::getConfiguredInterfaces(); | 62 | QMap<QString,QString> ifaces = PPPData::getConfiguredInterfaces(); |
61 | QMap<QString,QString>::Iterator it; | 63 | QMap<QString,QString>::Iterator it; |
62 | InterfacePPP *iface; | 64 | InterfacePPP *iface; |
63 | odebug << "getting interfaces" << oendl; | 65 | odebug << "getting interfaces" << oendl; |
64 | for( it = ifaces.begin(); it != ifaces.end(); ++it ) | 66 | for( it = ifaces.begin(); it != ifaces.end(); ++it ) |
65 | { | 67 | { |
66 | odebug << "ifaces " << it.key().latin1() << " " << it.data().latin1() << "" << oendl; | 68 | odebug << "ifaces " << it.key().latin1() << " " << it.data().latin1() << "" << oendl; |
67 | iface = new InterfacePPP( 0, it.key() ); | 69 | iface = new InterfacePPP( 0, it.key() ); |
68 | iface->setHardwareName( it.data() ); | 70 | iface->setHardwareName( it.data() ); |
69 | list.append( (Interface*)iface ); | 71 | list.append( (Interface*)iface ); |
70 | 72 | ||
71 | // check if (*it) is one of the running ifaces | 73 | // check if (*it) is one of the running ifaces |
72 | if ( running.contains( it.data() ) ) | 74 | if ( running.contains( it.data() ) ) |
73 | { | 75 | { |
74 | odebug << "iface is running " << it.key().latin1() << "" << oendl; | 76 | odebug << "iface is running " << it.key().latin1() << "" << oendl; |
75 | handledInterfaceNames << running[it.data()].device; | 77 | handledInterfaceNames << running[it.data()].device; |
76 | iface->setStatus( true ); | 78 | iface->setStatus( true ); |
77 | iface->setPPPDpid( running[it.data()].pid ); | 79 | iface->setPPPDpid( running[it.data()].pid ); |
78 | iface->modem()->setPPPDevice( running[it.data()].device ); | 80 | iface->modem()->setPPPDevice( running[it.data()].device ); |
79 | iface->refresh(); | 81 | iface->refresh(); |
80 | } | 82 | } |
81 | } | 83 | } |
82 | 84 | ||
83 | setHandledInterfaceNames( handledInterfaceNames ); | 85 | setHandledInterfaceNames( handledInterfaceNames ); |
84 | } | 86 | } |
85 | 87 | ||
86 | /** | 88 | /** |
87 | * Delete any interfaces that we own. | 89 | * Delete any interfaces that we own. |
88 | */ | 90 | */ |
89 | PPPModule::~PPPModule() | 91 | PPPModule::~PPPModule() |
90 | { | 92 | { |
91 | odebug << "PPPModule::~PPPModule() " << oendl; | 93 | odebug << "PPPModule::~PPPModule() " << oendl; |
92 | QMap<QString,QString> ifaces; | 94 | QMap<QString,QString> ifaces; |
93 | InterfaceKeeper keeper; | 95 | InterfaceKeeper keeper; |
94 | Interface *i; | 96 | Interface *i; |
95 | for ( i=list.first(); i != 0; i=list.next() ) | 97 | for ( i=list.first(); i != 0; i=list.next() ) |
96 | { | 98 | { |
97 | /* if online save the state */ | 99 | /* if online save the state */ |
98 | if ( i->getStatus() ) | 100 | if ( i->getStatus() ) |
99 | { | 101 | { |
100 | odebug << "Iface " << i->getHardwareName().latin1() << " is still up" << oendl; | 102 | odebug << "Iface " << i->getHardwareName().latin1() << " is still up" << oendl; |
101 | InterfacePPP* ppp = static_cast<InterfacePPP*>(i); | 103 | InterfacePPP* ppp = static_cast<InterfacePPP*>(i); |
102 | keeper.addInterface( ppp->pppPID(), ppp->pppDev(), ppp->getHardwareName() ); | 104 | keeper.addInterface( ppp->pppPID(), ppp->pppDev(), ppp->getHardwareName() ); |
103 | } | 105 | } |
104 | ifaces.insert( i->getInterfaceName(), i->getHardwareName() ); | 106 | ifaces.insert( i->getInterfaceName(), i->getHardwareName() ); |
105 | delete i; | 107 | delete i; |
106 | } | 108 | } |
107 | PPPData::setConfiguredInterfaces( ifaces ); | 109 | PPPData::setConfiguredInterfaces( ifaces ); |
108 | } | 110 | } |
109 | 111 | ||
110 | /** | 112 | /** |
111 | * Change the current profile | 113 | * Change the current profile |
112 | */ | 114 | */ |
113 | void PPPModule::setProfile(const QString &newProfile) | 115 | void PPPModule::setProfile(const QString &newProfile) |
114 | { | 116 | { |
115 | profile = newProfile; | 117 | profile = newProfile; |
116 | } | 118 | } |
117 | 119 | ||
118 | /** | 120 | /** |
119 | * get the icon name for this device. | 121 | * get the icon name for this device. |
120 | * @param Interface* can be used in determining the icon. | 122 | * @param Interface* can be used in determining the icon. |
121 | * @return QString the icon name (minus .png, .gif etc) | 123 | * @return QString the icon name (minus .png, .gif etc) |
122 | */ | 124 | */ |
123 | QString PPPModule::getPixmapName(Interface* ) | 125 | QString PPPModule::getPixmapName(Interface* ) |
124 | { | 126 | { |
125 | return "ppp"; | 127 | return "ppp"; |
126 | } | 128 | } |
127 | 129 | ||
128 | /** | 130 | /** |
129 | * Check to see if the interface i is owned by this module. | 131 | * Check to see if the interface i is owned by this module. |
130 | * @param Interface* interface to check against | 132 | * @param Interface* interface to check against |
131 | * @return bool true if i is owned by this module, false otherwise. | 133 | * @return bool true if i is owned by this module, false otherwise. |
132 | */ | 134 | */ |
133 | bool PPPModule::isOwner(Interface *i) | 135 | bool PPPModule::isOwner(Interface *i) |
134 | { | 136 | { |
135 | return list.find( i ) != -1; | 137 | return list.find( i ) != -1; |
136 | } | 138 | } |
137 | 139 | ||
138 | /** | 140 | /** |
139 | * Create, and return the WLANConfigure Module | 141 | * Create, and return the WLANConfigure Module |
140 | * @return QWidget* pointer to this modules configure. | 142 | * @return QWidget* pointer to this modules configure. |
141 | */ | 143 | */ |
142 | QWidget *PPPModule::configure(Interface *i) | 144 | QWidget *PPPModule::configure(Interface *i) |
143 | { | 145 | { |
144 | odebug << "return ModemWidget" << oendl; | 146 | odebug << "return ModemWidget" << oendl; |
145 | PPPConfigWidget *pppconfig = new PPPConfigWidget( (InterfacePPP*)i, | 147 | PPPConfigWidget *pppconfig = new PPPConfigWidget( (InterfacePPP*)i, |
146 | 0, "PPPConfig", false, | 148 | 0, "PPPConfig", false, |
147 | (Qt::WDestructiveClose | Qt::WStyle_ContextHelp)); | 149 | (Qt::WDestructiveClose | Qt::WStyle_ContextHelp)); |
148 | return pppconfig; | 150 | return pppconfig; |
149 | } | 151 | } |
150 | 152 | ||
151 | /** | 153 | /** |
152 | * Create, and return the Information Module | 154 | * Create, and return the Information Module |
153 | * @return QWidget* pointer to this modules info. | 155 | * @return QWidget* pointer to this modules info. |
154 | */ | 156 | */ |
155 | QWidget *PPPModule::information(Interface *i) | 157 | QWidget *PPPModule::information(Interface *i) |
156 | { | 158 | { |
157 | // We don't have any advanced pppd information widget yet :-D | 159 | // We don't have any advanced pppd information widget yet :-D |
158 | // TODO ^ | 160 | // TODO ^ |
159 | 161 | ||
160 | return new InterfaceInformationPPP( 0, "InterfaceInformationPPP", i ); | 162 | return new InterfaceInformationPPP( 0, "InterfaceInformationPPP", i ); |
161 | } | 163 | } |
162 | 164 | ||
163 | /** | 165 | /** |
164 | * Get all active (up or down) interfaces | 166 | * Get all active (up or down) interfaces |
165 | * @return QList<Interface> A list of interfaces that exsist that havn't | 167 | * @return QList<Interface> A list of interfaces that exsist that havn't |
166 | * been called by isOwner() | 168 | * been called by isOwner() |
167 | */ | 169 | */ |
168 | QList<Interface> PPPModule::getInterfaces() | 170 | QList<Interface> PPPModule::getInterfaces() |
169 | { | 171 | { |
170 | // List all of the files in the peer directory | 172 | // List all of the files in the peer directory |
171 | odebug << "PPPModule::getInterfaces" << oendl; | 173 | odebug << "PPPModule::getInterfaces" << oendl; |
172 | return list; | 174 | return list; |
173 | } | 175 | } |
174 | 176 | ||
175 | /** | 177 | /** |
176 | * Attempt to add a new interface as defined by name | 178 | * Attempt to add a new interface as defined by name |
177 | * @param name the name of the type of interface that should be created given | 179 | * @param name the name of the type of interface that should be created given |
178 | * by possibleNewInterfaces(); | 180 | * by possibleNewInterfaces(); |
179 | * @return Interface* NULL if it was unable to be created. | 181 | * @return Interface* NULL if it was unable to be created. |
180 | */ | 182 | */ |
181 | Interface *PPPModule::addNewInterface(const QString &newInterface) | 183 | Interface *PPPModule::addNewInterface(const QString &newInterface) |
182 | { | 184 | { |
183 | 185 | ||
184 | InterfacePPP *ifaceppp; | 186 | InterfacePPP *ifaceppp; |
185 | Interface *iface; | 187 | Interface *iface; |
186 | ifaceppp = new InterfacePPP(); | 188 | ifaceppp = new InterfacePPP(); |
187 | PPPConfigWidget imp(ifaceppp, 0, "PPPConfigImp", true); | 189 | PPPConfigWidget imp(ifaceppp, 0, "PPPConfigImp", true); |
188 | 190 | ||
189 | if( QPEApplication::execDialog( &imp ) == QDialog::Accepted ) | 191 | if( QPEApplication::execDialog( &imp ) == QDialog::Accepted ) |
190 | { | 192 | { |
191 | iface = (InterfacePPP*) ifaceppp; | 193 | iface = (InterfacePPP*) ifaceppp; |
192 | iface->setModuleOwner( this ); | 194 | iface->setModuleOwner( this ); |
193 | list.append( iface ); | 195 | list.append( iface ); |
194 | return iface; | 196 | return iface; |
195 | } | 197 | } |
196 | else | 198 | else |
197 | { | 199 | { |
198 | delete ifaceppp; | 200 | delete ifaceppp; |
199 | iface = NULL; | 201 | iface = NULL; |
200 | } | 202 | } |
201 | return iface; | 203 | return iface; |
202 | } | 204 | } |
203 | 205 | ||
204 | /** | 206 | /** |
205 | * Attempts to remove the interface, doesn't delete i | 207 | * Attempts to remove the interface, doesn't delete i |
206 | * @return bool true if successful, false otherwise. | 208 | * @return bool true if successful, false otherwise. |
207 | */ | 209 | */ |
208 | bool PPPModule::remove(Interface *i) | 210 | bool PPPModule::remove(Interface *i) |
209 | { | 211 | { |
210 | return list.remove(i); | 212 | return list.remove(i); |
211 | } | 213 | } |
212 | 214 | ||
213 | void PPPModule::possibleNewInterfaces(QMap<QString, QString> &newIfaces) | 215 | void PPPModule::possibleNewInterfaces(QMap<QString, QString> &newIfaces) |
214 | { | 216 | { |
215 | newIfaces.insert(QObject::tr("PPP") , | 217 | newIfaces.insert(QObject::tr("PPP") , |
216 | QObject::tr("generic ppp device")); | 218 | QObject::tr("generic ppp device")); |
217 | } | 219 | } |
218 | 220 | ||
219 | 221 | ||
220 | 222 | ||
221 | namespace | 223 | namespace |
222 | { | 224 | { |
223 | InterfaceKeeper::InterfaceKeeper( ) | 225 | InterfaceKeeper::InterfaceKeeper( ) |
224 | {} | 226 | {} |
225 | InterfaceKeeper::~InterfaceKeeper() | 227 | InterfaceKeeper::~InterfaceKeeper() |
226 | { | 228 | { |
227 | Config cfg("ppp_plugin_keeper"); | 229 | Config cfg("ppp_plugin_keeper"); |
228 | QStringList lst = cfg.groupList(); | 230 | QStringList lst = cfg.groupList(); |
229 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) | 231 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) |
230 | { | 232 | { |
231 | Connection con; | 233 | Connection con; |
232 | cfg.setGroup( (*it) ); | 234 | cfg.setGroup( (*it) ); |
233 | cfg.clearGroup(); | 235 | cfg.clearGroup(); |
234 | } | 236 | } |
235 | 237 | ||
236 | for (QMap<QString, Connection>::Iterator it = m_interfaces.begin(); it != m_interfaces.end(); ++it ) | 238 | for (QMap<QString, Connection>::Iterator it = m_interfaces.begin(); it != m_interfaces.end(); ++it ) |
237 | { | 239 | { |
238 | Connection con = it.data(); | 240 | Connection con = it.data(); |
239 | cfg.setGroup( con.name ); | 241 | cfg.setGroup( con.name ); |
240 | cfg.writeEntry( "pid", con.pid ); | 242 | cfg.writeEntry( "pid", con.pid ); |
241 | cfg.writeEntry( "device", con.device ); | 243 | cfg.writeEntry( "device", con.device ); |
242 | } | 244 | } |
243 | } | 245 | } |
244 | void InterfaceKeeper::addInterface(pid_t pid, const QString& dev, const QString& name ) | 246 | void InterfaceKeeper::addInterface(pid_t pid, const QString& dev, const QString& name ) |
245 | { | 247 | { |
246 | Connection con; | 248 | Connection con; |
247 | con.pid = pid; | 249 | con.pid = pid; |
248 | con.device = dev; | 250 | con.device = dev; |
249 | con.name = name; | 251 | con.name = name; |
250 | m_interfaces.insert( name, con ); | 252 | m_interfaces.insert( name, con ); |
251 | } | 253 | } |
252 | QMap<QString, Connection> InterfaceKeeper::interfaces()const | 254 | QMap<QString, Connection> InterfaceKeeper::interfaces()const |
253 | { | 255 | { |
254 | Config cfg("ppp_plugin_keeper"); | 256 | Config cfg("ppp_plugin_keeper"); |
255 | QMap<QString, Connection> ifaces; | 257 | QMap<QString, Connection> ifaces; |
256 | QStringList lst = cfg.groupList(); | 258 | QStringList lst = cfg.groupList(); |
257 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) | 259 | for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) |
258 | { | 260 | { |
259 | Connection con; | 261 | Connection con; |
260 | cfg.setGroup( (*it) ); | 262 | cfg.setGroup( (*it) ); |
261 | con.name = (*it); | 263 | con.name = (*it); |
262 | con.pid = cfg.readNumEntry("pid"); | 264 | con.pid = cfg.readNumEntry("pid"); |
263 | con.device = cfg.readEntry("device"); | 265 | con.device = cfg.readEntry("device"); |
264 | odebug << " " << con.name.latin1() << " " << con.device.latin1() << " " << con.pid << "" << oendl; | 266 | odebug << " " << con.name.latin1() << " " << con.device.latin1() << " " << con.pid << "" << oendl; |
265 | 267 | ||
266 | if ( con.pid != -1 && isAvailable( con.pid ) ) | 268 | if ( con.pid != -1 && isAvailable( con.pid ) ) |
267 | ifaces.insert( con.name, con ); | 269 | ifaces.insert( con.name, con ); |
268 | } | 270 | } |
269 | return ifaces; | 271 | return ifaces; |
270 | } | 272 | } |
271 | bool InterfaceKeeper::isAvailable( pid_t p)const | 273 | bool InterfaceKeeper::isAvailable( pid_t p)const |
272 | { | 274 | { |
273 | if (::kill(p, 0 ) == 0 || errno != ESRCH ) | 275 | if (::kill(p, 0 ) == 0 || errno != ESRCH ) |
274 | { | 276 | { |
275 | odebug << "isAvailable " << p << "" << oendl; | 277 | odebug << "isAvailable " << p << "" << oendl; |
276 | return true; | 278 | return true; |
277 | } | 279 | } |
278 | 280 | ||
279 | odebug << "notAvailable " << p << "" << oendl; | 281 | odebug << "notAvailable " << p << "" << oendl; |
280 | return false; | 282 | return false; |
281 | } | 283 | } |
282 | 284 | ||
283 | } | 285 | } |
diff --git a/noncore/settings/networksettings/wlan/config.in b/noncore/settings/networksettings/wlan/config.in index d4661cb..233764e 100644 --- a/noncore/settings/networksettings/wlan/config.in +++ b/noncore/settings/networksettings/wlan/config.in | |||
@@ -1,6 +1,6 @@ | |||
1 | config WLAN | 1 | config WLAN |
2 | boolean "opie-networksettingsplugin-wlan (wireless LAN module)" | 2 | boolean "opie-networksettingsplugin-wlan (wireless LAN module)" |
3 | default "n" if NETWORKSETUP | 3 | default "y" |
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2UI && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES && LIBOPIE2NET | 4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2UI && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES && LIBOPIE2NET |
5 | #comment "opie-networksettingsplugin-wlan needs libopie2ui, libopie2net and networksetup" | 5 | #comment "opie-networksettingsplugin-wlan needs libopie2ui, libopie2net and networksetup" |
6 | #depends !( LIBOPIE2NET && NETWORKSETUP) \ No newline at end of file | 6 | #depends !( LIBOPIE2NET && NETWORKSETUP) |
diff --git a/noncore/settings/networksettings/wlan/infoimp.cpp b/noncore/settings/networksettings/wlan/infoimp.cpp index c558f5e..273bed8 100644 --- a/noncore/settings/networksettings/wlan/infoimp.cpp +++ b/noncore/settings/networksettings/wlan/infoimp.cpp | |||
@@ -1,56 +1,61 @@ | |||
1 | #include "infoimp.h" | 1 | #include "infoimp.h" |
2 | #include "wextensions.h" | 2 | #include "wextensions.h" |
3 | 3 | ||
4 | /* OPIE */ | ||
5 | #include <opie2/odebug.h> | ||
6 | using namespace Opie::Core; | ||
7 | |||
8 | /* QT */ | ||
4 | #include <qtimer.h> | 9 | #include <qtimer.h> |
5 | #include <qprogressbar.h> | 10 | #include <qprogressbar.h> |
6 | #include <qlabel.h> | 11 | #include <qlabel.h> |
7 | 12 | ||
8 | /** | 13 | /** |
9 | * Constructor. If wireless extensions are enabled on device name then | 14 | * Constructor. If wireless extensions are enabled on device name then |
10 | * start a timer that every second will update the information. | 15 | * start a timer that every second will update the information. |
11 | */ | 16 | */ |
12 | WlanInfoImp::WlanInfoImp( QWidget* parent, const char* name, WFlags fl): WlanInfo(parent, name, fl){ | 17 | WlanInfoImp::WlanInfoImp( QWidget* parent, const char* name, WFlags fl): WlanInfo(parent, name, fl){ |
13 | WExtensions *wExtensions = new WExtensions(name); | 18 | WExtensions *wExtensions = new WExtensions(name); |
14 | if(!wExtensions->doesHaveWirelessExtensions()){ | 19 | if(!wExtensions->doesHaveWirelessExtensions()){ |
15 | delete wExtensions; | 20 | delete wExtensions; |
16 | odebug << "WlanInfoImp::No wireless extension" << oendl; | 21 | odebug << "WlanInfoImp::No wireless extension" << oendl; |
17 | return; | 22 | return; |
18 | } | 23 | } |
19 | delete wExtensions; | 24 | delete wExtensions; |
20 | timer = new QTimer( this ); | 25 | timer = new QTimer( this ); |
21 | connect( timer, SIGNAL(timeout()), this, SLOT(update())); | 26 | connect( timer, SIGNAL(timeout()), this, SLOT(update())); |
22 | timer->start( 1000, false ); | 27 | timer->start( 1000, false ); |
23 | } | 28 | } |
24 | 29 | ||
25 | /** | 30 | /** |
26 | * Updates the information about the wireless device. | 31 | * Updates the information about the wireless device. |
27 | */ | 32 | */ |
28 | void WlanInfoImp::update(){ | 33 | void WlanInfoImp::update(){ |
29 | WExtensions *wExtensions = new WExtensions(this->name()); | 34 | WExtensions *wExtensions = new WExtensions(this->name()); |
30 | if(!wExtensions->doesHaveWirelessExtensions()){ | 35 | if(!wExtensions->doesHaveWirelessExtensions()){ |
31 | odebug << "No extension" << oendl; | 36 | odebug << "No extension" << oendl; |
32 | delete wExtensions; | 37 | delete wExtensions; |
33 | timer->stop(); | 38 | timer->stop(); |
34 | return; | 39 | return; |
35 | } | 40 | } |
36 | essidLabel->setText(wExtensions->essid()); | 41 | essidLabel->setText(wExtensions->essid()); |
37 | apLabel->setText(wExtensions->ap()); | 42 | apLabel->setText(wExtensions->ap()); |
38 | stationLabel->setText(wExtensions->station()); | 43 | stationLabel->setText(wExtensions->station()); |
39 | modeLabel->setText(wExtensions->mode()); | 44 | modeLabel->setText(wExtensions->mode()); |
40 | channelLabel->setText(QString("%1").arg(wExtensions->channel())); | 45 | channelLabel->setText(QString("%1").arg(wExtensions->channel())); |
41 | int signal = 0; | 46 | int signal = 0; |
42 | int noise = 0; | 47 | int noise = 0; |
43 | int quality = 0; | 48 | int quality = 0; |
44 | wExtensions->stats(signal, noise, quality); | 49 | wExtensions->stats(signal, noise, quality); |
45 | if(signalProgressBar->progress() != signal) | 50 | if(signalProgressBar->progress() != signal) |
46 | signalProgressBar->setProgress(signal); | 51 | signalProgressBar->setProgress(signal); |
47 | if(noiseProgressBar->progress() != noise) | 52 | if(noiseProgressBar->progress() != noise) |
48 | noiseProgressBar->setProgress(noise); | 53 | noiseProgressBar->setProgress(noise); |
49 | if(qualityProgressBar->progress() != quality) | 54 | if(qualityProgressBar->progress() != quality) |
50 | qualityProgressBar->setProgress(quality); | 55 | qualityProgressBar->setProgress(quality); |
51 | rateLabel->setText(QString("%1 Mb/s").arg(wExtensions->rate())); | 56 | rateLabel->setText(QString("%1 Mb/s").arg(wExtensions->rate())); |
52 | delete wExtensions; | 57 | delete wExtensions; |
53 | } | 58 | } |
54 | 59 | ||
55 | // infoimp.cpp | 60 | // infoimp.cpp |
56 | 61 | ||
diff --git a/noncore/settings/networksettings/wlan/wextensions.cpp b/noncore/settings/networksettings/wlan/wextensions.cpp index 9c64323..fe21f02 100644 --- a/noncore/settings/networksettings/wlan/wextensions.cpp +++ b/noncore/settings/networksettings/wlan/wextensions.cpp | |||
@@ -1,200 +1,207 @@ | |||
1 | #include "wextensions.h" | 1 | #include "wextensions.h" |
2 | 2 | ||
3 | /* OPIE */ | ||
4 | #include <opie2/odebug.h> | ||
5 | using namespace Opie::Core; | ||
6 | |||
7 | /* QT */ | ||
3 | #include <qfile.h> | 8 | #include <qfile.h> |
4 | #include <qtextstream.h> | 9 | #include <qtextstream.h> |
5 | 10 | ||
11 | /* STD */ | ||
6 | #include <arpa/inet.h> | 12 | #include <arpa/inet.h> |
7 | #include <sys/socket.h> | 13 | #include <sys/socket.h> |
8 | #include <sys/ioctl.h> | 14 | #include <sys/ioctl.h> |
9 | |||
10 | #include <math.h> | 15 | #include <math.h> |
11 | 16 | ||
12 | #define PROCNETWIRELESS "/proc/net/wireless" | 17 | #define PROCNETWIRELESS "/proc/net/wireless" |
13 | #define IW_LOWER 0 | 18 | #define IW_LOWER 0 |
14 | #define IW_UPPER 256 | 19 | #define IW_UPPER 256 |
15 | 20 | ||
21 | #warning This is duplicated code. Use libopienet2! | ||
22 | |||
16 | /** | 23 | /** |
17 | * Constructor. Sets hasWirelessExtensions | 24 | * Constructor. Sets hasWirelessExtensions |
18 | */ | 25 | */ |
19 | WExtensions::WExtensions(QString interfaceName): hasWirelessExtensions(false), interface(interfaceName) { | 26 | WExtensions::WExtensions(QString interfaceName): hasWirelessExtensions(false), interface(interfaceName) { |
20 | fd = socket( AF_INET, SOCK_DGRAM, 0 ); | 27 | fd = socket( AF_INET, SOCK_DGRAM, 0 ); |
21 | if(fd == -1) | 28 | if(fd == -1) |
22 | return; | 29 | return; |
23 | 30 | ||
24 | const char* buffer[200]; | 31 | const char* buffer[200]; |
25 | memset( &iwr, 0, sizeof( iwr ) ); | 32 | memset( &iwr, 0, sizeof( iwr ) ); |
26 | iwr.u.essid.pointer = (caddr_t) buffer; | 33 | iwr.u.essid.pointer = (caddr_t) buffer; |
27 | iwr.u.essid.length = IW_ESSID_MAX_SIZE; | 34 | iwr.u.essid.length = IW_ESSID_MAX_SIZE; |
28 | iwr.u.essid.flags = 0; | 35 | iwr.u.essid.flags = 0; |
29 | 36 | ||
30 | // check if it is an IEEE 802.11 standard conform | 37 | // check if it is an IEEE 802.11 standard conform |
31 | // wireless device by sending SIOCGIWESSID | 38 | // wireless device by sending SIOCGIWESSID |
32 | // which also gives back the Extended Service Set ID | 39 | // which also gives back the Extended Service Set ID |
33 | // (see IEEE 802.11 for more information) | 40 | // (see IEEE 802.11 for more information) |
34 | 41 | ||
35 | const char* iname = interface.latin1(); | 42 | const char* iname = interface.latin1(); |
36 | strcpy( iwr.ifr_ifrn.ifrn_name, (const char *)iname ); | 43 | strcpy( iwr.ifr_ifrn.ifrn_name, (const char *)iname ); |
37 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr ) ) | 44 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr ) ) |
38 | hasWirelessExtensions = true; | 45 | hasWirelessExtensions = true; |
39 | } | 46 | } |
40 | 47 | ||
41 | /** | 48 | /** |
42 | * @return QString the station name of the access point. | 49 | * @return QString the station name of the access point. |
43 | */ | 50 | */ |
44 | QString WExtensions::station(){ | 51 | QString WExtensions::station(){ |
45 | if(!hasWirelessExtensions) | 52 | if(!hasWirelessExtensions) |
46 | return QString(); | 53 | return QString(); |
47 | const char* buffer[200]; | 54 | const char* buffer[200]; |
48 | iwr.u.data.pointer = (caddr_t) buffer; | 55 | iwr.u.data.pointer = (caddr_t) buffer; |
49 | iwr.u.data.length = IW_ESSID_MAX_SIZE; | 56 | iwr.u.data.length = IW_ESSID_MAX_SIZE; |
50 | iwr.u.data.flags = 0; | 57 | iwr.u.data.flags = 0; |
51 | if ( 0 == ioctl( fd, SIOCGIWNICKN, &iwr )){ | 58 | if ( 0 == ioctl( fd, SIOCGIWNICKN, &iwr )){ |
52 | iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; | 59 | iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; |
53 | return QString(iwr.u.data.pointer); | 60 | return QString(iwr.u.data.pointer); |
54 | } | 61 | } |
55 | return QString(); | 62 | return QString(); |
56 | } | 63 | } |
57 | 64 | ||
58 | /** | 65 | /** |
59 | * @return QString the essid of the host 802.11 access point. | 66 | * @return QString the essid of the host 802.11 access point. |
60 | */ | 67 | */ |
61 | QString WExtensions::essid(){ | 68 | QString WExtensions::essid(){ |
62 | if(!hasWirelessExtensions) | 69 | if(!hasWirelessExtensions) |
63 | return QString(); | 70 | return QString(); |
64 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ | 71 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ |
65 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length] = '\0'; | 72 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length] = '\0'; |
66 | return QString(iwr.u.essid.pointer); | 73 | return QString(iwr.u.essid.pointer); |
67 | } | 74 | } |
68 | return QString(); | 75 | return QString(); |
69 | } | 76 | } |
70 | 77 | ||
71 | /** | 78 | /** |
72 | * @return QString the mode of interface | 79 | * @return QString the mode of interface |
73 | */ | 80 | */ |
74 | QString WExtensions::mode(){ | 81 | QString WExtensions::mode(){ |
75 | if(!hasWirelessExtensions) | 82 | if(!hasWirelessExtensions) |
76 | return QString(); | 83 | return QString(); |
77 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) | 84 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) |
78 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); | 85 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); |
79 | return QString(); | 86 | return QString(); |
80 | } | 87 | } |
81 | 88 | ||
82 | /** | 89 | /** |
83 | * Get the frequency that the interface is running at. | 90 | * Get the frequency that the interface is running at. |
84 | * @return int the frequency that the interfacae is running at. | 91 | * @return int the frequency that the interfacae is running at. |
85 | */ | 92 | */ |
86 | double WExtensions::frequency(){ | 93 | double WExtensions::frequency(){ |
87 | if(!hasWirelessExtensions) | 94 | if(!hasWirelessExtensions) |
88 | return 0; | 95 | return 0; |
89 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) | 96 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) |
90 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | 97 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); |
91 | return 0; | 98 | return 0; |
92 | } | 99 | } |
93 | 100 | ||
94 | /** | 101 | /** |
95 | * Get the channel that the interface is running at. | 102 | * Get the channel that the interface is running at. |
96 | * @return int the channel that the interfacae is running at. | 103 | * @return int the channel that the interfacae is running at. |
97 | */ | 104 | */ |
98 | int WExtensions::channel(){ | 105 | int WExtensions::channel(){ |
99 | if(!hasWirelessExtensions) | 106 | if(!hasWirelessExtensions) |
100 | return 0; | 107 | return 0; |
101 | if ( 0 != ioctl( fd, SIOCGIWFREQ, &iwr )) | 108 | if ( 0 != ioctl( fd, SIOCGIWFREQ, &iwr )) |
102 | return 0; | 109 | return 0; |
103 | 110 | ||
104 | // http://www.elanix.com/pdf/an137e.pdf | 111 | // http://www.elanix.com/pdf/an137e.pdf |
105 | 112 | ||
106 | double num = (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | 113 | double num = (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); |
107 | double left = 2.401; | 114 | double left = 2.401; |
108 | double right = 2.416; | 115 | double right = 2.416; |
109 | for(int channel = 1; channel<= 15; channel++){ | 116 | for(int channel = 1; channel<= 15; channel++){ |
110 | if( num >= left && num <= right ) | 117 | if( num >= left && num <= right ) |
111 | return channel; | 118 | return channel; |
112 | left += 0.005; | 119 | left += 0.005; |
113 | right += 0.005; | 120 | right += 0.005; |
114 | } | 121 | } |
115 | odebug << QString("Unknown frequency: %1, returning -1 for the channel.").arg(num).latin1() << oendl; | 122 | odebug << QString("Unknown frequency: %1, returning -1 for the channel.").arg(num).latin1() << oendl; |
116 | return -1; | 123 | return -1; |
117 | } | 124 | } |
118 | 125 | ||
119 | /*** | 126 | /*** |
120 | * Get the current rate that the card is transmiting at. | 127 | * Get the current rate that the card is transmiting at. |
121 | * @return double the rate, 0 if error. | 128 | * @return double the rate, 0 if error. |
122 | */ | 129 | */ |
123 | double WExtensions::rate(){ | 130 | double WExtensions::rate(){ |
124 | if(!hasWirelessExtensions) | 131 | if(!hasWirelessExtensions) |
125 | return 0; | 132 | return 0; |
126 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ | 133 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ |
127 | return ((double)iwr.u.bitrate.value)/1000000; | 134 | return ((double)iwr.u.bitrate.value)/1000000; |
128 | } | 135 | } |
129 | return 0; | 136 | return 0; |
130 | } | 137 | } |
131 | 138 | ||
132 | 139 | ||
133 | /** | 140 | /** |
134 | * @return QString the AccessPoint that the interface is connected to. | 141 | * @return QString the AccessPoint that the interface is connected to. |
135 | */ | 142 | */ |
136 | QString WExtensions::ap(){ | 143 | QString WExtensions::ap(){ |
137 | if(!hasWirelessExtensions) | 144 | if(!hasWirelessExtensions) |
138 | return QString(); | 145 | return QString(); |
139 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ | 146 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ |
140 | QString ap; | 147 | QString ap; |
141 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", | 148 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", |
142 | iwr.u.ap_addr.sa_data[0]&0xff, | 149 | iwr.u.ap_addr.sa_data[0]&0xff, |
143 | iwr.u.ap_addr.sa_data[1]&0xff, | 150 | iwr.u.ap_addr.sa_data[1]&0xff, |
144 | iwr.u.ap_addr.sa_data[2]&0xff, | 151 | iwr.u.ap_addr.sa_data[2]&0xff, |
145 | iwr.u.ap_addr.sa_data[3]&0xff, | 152 | iwr.u.ap_addr.sa_data[3]&0xff, |
146 | iwr.u.ap_addr.sa_data[4]&0xff, | 153 | iwr.u.ap_addr.sa_data[4]&0xff, |
147 | iwr.u.ap_addr.sa_data[5]&0xff ); | 154 | iwr.u.ap_addr.sa_data[5]&0xff ); |
148 | return ap; | 155 | return ap; |
149 | } | 156 | } |
150 | else return QString(); | 157 | else return QString(); |
151 | } | 158 | } |
152 | 159 | ||
153 | /** | 160 | /** |
154 | * Get the stats for interfaces | 161 | * Get the stats for interfaces |
155 | * @param signal the signal strength of interface | 162 | * @param signal the signal strength of interface |
156 | * @param noise the noise level of the interface | 163 | * @param noise the noise level of the interface |
157 | * @param quality the quality level of the interface | 164 | * @param quality the quality level of the interface |
158 | * @return bool true if successful | 165 | * @return bool true if successful |
159 | */ | 166 | */ |
160 | bool WExtensions::stats(int &signal, int &noise, int &quality){ | 167 | bool WExtensions::stats(int &signal, int &noise, int &quality){ |
161 | // gather link quality from /proc/net/wireless | 168 | // gather link quality from /proc/net/wireless |
162 | if(!QFile::exists(PROCNETWIRELESS)) | 169 | if(!QFile::exists(PROCNETWIRELESS)) |
163 | return false; | 170 | return false; |
164 | 171 | ||
165 | char c; | 172 | char c; |
166 | QString status; | 173 | QString status; |
167 | QString name; | 174 | QString name; |
168 | 175 | ||
169 | QFile wfile( PROCNETWIRELESS ); | 176 | QFile wfile( PROCNETWIRELESS ); |
170 | if(!wfile.open( IO_ReadOnly )) | 177 | if(!wfile.open( IO_ReadOnly )) |
171 | return false; | 178 | return false; |
172 | 179 | ||
173 | QTextStream wstream( &wfile ); | 180 | QTextStream wstream( &wfile ); |
174 | wstream.readLine(); // skip the first two lines | 181 | wstream.readLine(); // skip the first two lines |
175 | wstream.readLine(); // because they only contain headers | 182 | wstream.readLine(); // because they only contain headers |
176 | while(!wstream.atEnd()){ | 183 | while(!wstream.atEnd()){ |
177 | wstream >> name >> status >> quality >> c >> signal >> c >> noise; | 184 | wstream >> name >> status >> quality >> c >> signal >> c >> noise; |
178 | if(name == QString("%1:").arg(interface)){ | 185 | if(name == QString("%1:").arg(interface)){ |
179 | if ( quality > 92 ) | 186 | if ( quality > 92 ) |
180 | odebug << "WIFIAPPLET: D'oh! Quality " << quality << " > estimated max!\n" << oendl; | 187 | odebug << "WIFIAPPLET: D'oh! Quality " << quality << " > estimated max!\n" << oendl; |
181 | if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) ) | 188 | if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) ) |
182 | odebug << "WIFIAPPLET: Doh! Strength " << signal << " > estimated max!\n" << oendl; | 189 | odebug << "WIFIAPPLET: Doh! Strength " << signal << " > estimated max!\n" << oendl; |
183 | if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) ) | 190 | if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) ) |
184 | odebug << "WIFIAPPLET: Doh! Noise " << noise << " > estimated max!\n" << oendl; | 191 | odebug << "WIFIAPPLET: Doh! Noise " << noise << " > estimated max!\n" << oendl; |
185 | //odebug << QString("q:%1, s:%2, n:%3").arg(quality).arg(signal).arg(noise).latin1() << oendl; | 192 | //odebug << QString("q:%1, s:%2, n:%3").arg(quality).arg(signal).arg(noise).latin1() << oendl; |
186 | signal = ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER; | 193 | signal = ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER; |
187 | noise = ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER; | 194 | noise = ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER; |
188 | quality = ( quality*100 ) / 92; | 195 | quality = ( quality*100 ) / 92; |
189 | return true; | 196 | return true; |
190 | } | 197 | } |
191 | } | 198 | } |
192 | 199 | ||
193 | odebug << "WExtensions::statsCard no longer present." << oendl; | 200 | odebug << "WExtensions::statsCard no longer present." << oendl; |
194 | quality = -1; | 201 | quality = -1; |
195 | signal = IW_LOWER; | 202 | signal = IW_LOWER; |
196 | noise = IW_LOWER; | 203 | noise = IW_LOWER; |
197 | return false; | 204 | return false; |
198 | } | 205 | } |
199 | 206 | ||
200 | // wextensions.cpp | 207 | // wextensions.cpp |
diff --git a/noncore/settings/networksettings/wlan/wlan.pro b/noncore/settings/networksettings/wlan/wlan.pro index 89867ae..c94dc0e 100644 --- a/noncore/settings/networksettings/wlan/wlan.pro +++ b/noncore/settings/networksettings/wlan/wlan.pro | |||
@@ -1,28 +1,25 @@ | |||
1 | # | ||
2 | TEMPLATE = lib | 1 | TEMPLATE = lib |
3 | #TEMPLATE = app | ||
4 | CONFIG += qt plugin warn_on | 2 | CONFIG += qt plugin warn_on |
5 | #CONFIG += qt plugin warn_on | ||
6 | DESTDIR = $(OPIEDIR)/plugins/networksettings | 3 | DESTDIR = $(OPIEDIR)/plugins/networksettings |
7 | HEADERS = infoimp.h wlanmodule.h wextensions.h keyedit.h | 4 | HEADERS = infoimp.h wlanmodule.h wextensions.h keyedit.h |
8 | SOURCES = infoimp.cpp wlanmodule.cpp wextensions.cpp keyedit.cpp | 5 | SOURCES = infoimp.cpp wlanmodule.cpp wextensions.cpp keyedit.cpp |
9 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/ | 6 | INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/ |
10 | DEPENDPATH+= $(OPIEDIR)/include | 7 | DEPENDPATH+= $(OPIEDIR)/include |
11 | LIBS += -lqpe -L../interfaces/ -linterfaces -lopiecore2 -lopienet2 | 8 | LIBS += -lqpe -L../interfaces/ -linterfaces -lopiecore2 -lopienet2 |
12 | INTERFACES= wlan.ui info.ui | 9 | INTERFACES= wlan.ui info.ui |
13 | TARGET = wlan | 10 | TARGET = wlan |
14 | VERSION = 1.0.0 | 11 | VERSION = 1.0.0 |
15 | 12 | ||
16 | #CONFIG += wirelessopts | 13 | #CONFIG += wirelessopts |
17 | 14 | ||
18 | wirelessopts { | 15 | wirelessopts { |
19 | HEADERS+= wlanimp.h | 16 | HEADERS+= wlanimp.h |
20 | SOURCES+= wlanimp.cpp | 17 | SOURCES+= wlanimp.cpp |
21 | } | 18 | } |
22 | 19 | ||
23 | ! wirelessopts { | 20 | ! wirelessopts { |
24 | HEADERS+= wlanimp2.h | 21 | HEADERS+= wlanimp2.h |
25 | SOURCES += wlanimp2.cpp | 22 | SOURCES += wlanimp2.cpp |
26 | } | 23 | } |
27 | 24 | ||
28 | include ( $(OPIEDIR)/include.pro ) | 25 | include ( $(OPIEDIR)/include.pro ) |
diff --git a/noncore/settings/networksettings/wlan/wlanimp2.cpp b/noncore/settings/networksettings/wlan/wlanimp2.cpp index e4aa2f9..4294b12 100644 --- a/noncore/settings/networksettings/wlan/wlanimp2.cpp +++ b/noncore/settings/networksettings/wlan/wlanimp2.cpp | |||
@@ -1,430 +1,432 @@ | |||
1 | #include "wlanimp2.h" | 1 | #include "wlanimp2.h" |
2 | #include "keyedit.h" | 2 | #include "keyedit.h" |
3 | #include "interfacesetupimp.h" | 3 | #include "interfacesetupimp.h" |
4 | |||
5 | #include "../interfaces/interface.h" | 4 | #include "../interfaces/interface.h" |
6 | 5 | ||
7 | #include <assert.h> | 6 | #include <assert.h> |
8 | #include <errno.h> | 7 | #include <errno.h> |
9 | #include <string.h> | 8 | #include <string.h> |
10 | 9 | ||
10 | /* OPIE */ | ||
11 | #include <opie2/odebug.h> | ||
12 | #include <opie2/oprocess.h> | ||
13 | #include <opie2/onetwork.h> | ||
14 | #include <opie2/opcap.h> | ||
15 | #include <qpe/resource.h> | ||
16 | using namespace Opie::Core; | ||
17 | using namespace Opie::Net; | ||
18 | |||
19 | /* QT */ | ||
11 | #include <qapplication.h> | 20 | #include <qapplication.h> |
12 | #include <qfile.h> | 21 | #include <qfile.h> |
13 | #include <qdir.h> | 22 | #include <qdir.h> |
14 | #include <qdialog.h> | 23 | #include <qdialog.h> |
15 | #include <qtextstream.h> | 24 | #include <qtextstream.h> |
16 | #include <qmessagebox.h> | 25 | #include <qmessagebox.h> |
17 | #include <qlineedit.h> | 26 | #include <qlineedit.h> |
18 | #include <qlabel.h> | 27 | #include <qlabel.h> |
19 | #include <qspinbox.h> | 28 | #include <qspinbox.h> |
20 | #include <qradiobutton.h> | 29 | #include <qradiobutton.h> |
21 | #include <qpushbutton.h> | 30 | #include <qpushbutton.h> |
22 | #include <qcheckbox.h> | 31 | #include <qcheckbox.h> |
23 | #include <qtabwidget.h> | 32 | #include <qtabwidget.h> |
24 | #include <qcombobox.h> | 33 | #include <qcombobox.h> |
25 | #include <qlistview.h> | 34 | #include <qlistview.h> |
26 | #include <qvbox.h> | 35 | #include <qvbox.h> |
27 | #include <qprogressbar.h> | 36 | #include <qprogressbar.h> |
28 | 37 | ||
29 | #ifdef QWS | 38 | /* STD */ |
30 | #include <qpe/resource.h> | 39 | #include <assert.h> |
31 | #include <opie2/oprocess.h> | 40 | #include <errno.h> |
32 | #include <opie2/onetwork.h> | 41 | #include <string.h> |
33 | #include <opie2/opcap.h> | ||
34 | #else | ||
35 | #define OProcess KProcess | ||
36 | #include <kprocess.h> | ||
37 | #endif | ||
38 | 42 | ||
39 | #define WIRELESS_OPTS "/etc/pcmcia/wireless.opts" | 43 | #define WIRELESS_OPTS "/etc/pcmcia/wireless.opts" |
40 | #define PREUP "/etc/network/if-pre-up.d/wireless-tools" | 44 | #define PREUP "/etc/network/if-pre-up.d/wireless-tools" |
41 | 45 | ||
42 | /** | 46 | /** |
43 | * Constructor, read in the wireless.opts file for parsing later. | 47 | * Constructor, read in the wireless.opts file for parsing later. |
44 | */ | 48 | */ |
45 | using namespace Opie::Net; | ||
46 | using namespace Opie::Core; | ||
47 | WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), interface(i), currentProfile("*") { | 49 | WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), interface(i), currentProfile("*") { |
48 | interfaces = new Interfaces(); | 50 | interfaces = new Interfaces(); |
49 | interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces); | 51 | interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces); |
50 | tabWidget->insertTab(interfaceSetup, "TCP/IP"); | 52 | tabWidget->insertTab(interfaceSetup, "TCP/IP"); |
51 | 53 | ||
52 | // Check sanity - the existance of the wireless-tools if-pre-up script | 54 | // Check sanity - the existance of the wireless-tools if-pre-up script |
53 | QFile file(QString(PREUP)); | 55 | QFile file(QString(PREUP)); |
54 | if (file.exists()) { | 56 | if (file.exists()) { |
55 | owarn << QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools") << oendl; | 57 | owarn << QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools") << oendl; |
56 | } | 58 | } |
57 | 59 | ||
58 | connect( rescanButton, SIGNAL( clicked() ), this, SLOT( rescanNeighbourhood() ) ); | 60 | connect( rescanButton, SIGNAL( clicked() ), this, SLOT( rescanNeighbourhood() ) ); |
59 | connect( netView, SIGNAL( clicked(QListViewItem*) ), this, SLOT( selectNetwork(QListViewItem*) ) ); | 61 | connect( netView, SIGNAL( clicked(QListViewItem*) ), this, SLOT( selectNetwork(QListViewItem*) ) ); |
60 | netView->setColumnAlignment( col_chn, AlignCenter ); | 62 | netView->setColumnAlignment( col_chn, AlignCenter ); |
61 | netView->setItemMargin( 3 ); | 63 | netView->setItemMargin( 3 ); |
62 | netView->setAllColumnsShowFocus( true ); | 64 | netView->setAllColumnsShowFocus( true ); |
63 | 65 | ||
64 | } | 66 | } |
65 | 67 | ||
66 | WLANImp::~WLANImp() { | 68 | WLANImp::~WLANImp() { |
67 | //FIXME: delete interfaces; | 69 | //FIXME: delete interfaces; |
68 | } | 70 | } |
69 | 71 | ||
70 | /** | 72 | /** |
71 | * Change the profile for both wireless settings and network settings. | 73 | * Change the profile for both wireless settings and network settings. |
72 | */ | 74 | */ |
73 | void WLANImp::setProfile(const QString &profile){ | 75 | void WLANImp::setProfile(const QString &profile){ |
74 | interfaceSetup->setProfile(profile); | 76 | interfaceSetup->setProfile(profile); |
75 | parseOpts(); | 77 | parseOpts(); |
76 | } | 78 | } |
77 | 79 | ||
78 | void WLANImp::parseOpts() { | 80 | void WLANImp::parseOpts() { |
79 | bool error; | 81 | bool error; |
80 | QString opt; | 82 | QString opt; |
81 | 83 | ||
82 | if (! interfaces->isInterfaceSet()) | 84 | if (! interfaces->isInterfaceSet()) |
83 | return; | 85 | return; |
84 | 86 | ||
85 | 87 | ||
86 | opt = interfaces->getInterfaceOption("wireless_essid", error); | 88 | opt = interfaces->getInterfaceOption("wireless_essid", error); |
87 | if(opt == "any" || opt == "off" || opt.isNull()){ | 89 | if(opt == "any" || opt == "off" || opt.isNull()){ |
88 | essid->setEditText("any"); | 90 | essid->setEditText("any"); |
89 | } else { | 91 | } else { |
90 | essid->setEditText(opt); | 92 | essid->setEditText(opt); |
91 | } | 93 | } |
92 | 94 | ||
93 | opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace(); | 95 | opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace(); |
94 | 96 | ||
95 | for ( int i = 0; i < mode->count(); i++) | 97 | for ( int i = 0; i < mode->count(); i++) |
96 | if ( mode->text( i ) == opt ) mode->setCurrentItem( i ); | 98 | if ( mode->text( i ) == opt ) mode->setCurrentItem( i ); |
97 | 99 | ||
98 | opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace(); | 100 | opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace(); |
99 | if (! opt.isNull()) { | 101 | if (! opt.isNull()) { |
100 | specifyAp->setChecked(true); | 102 | specifyAp->setChecked(true); |
101 | macEdit->setText(opt); | 103 | macEdit->setText(opt); |
102 | } | 104 | } |
103 | 105 | ||
104 | opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace(); | 106 | opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace(); |
105 | if (! opt.isNull()) { | 107 | if (! opt.isNull()) { |
106 | specifyChan->setChecked(true); | 108 | specifyChan->setChecked(true); |
107 | networkChannel->setValue(opt.toInt()); | 109 | networkChannel->setValue(opt.toInt()); |
108 | } | 110 | } |
109 | 111 | ||
110 | opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace(); | 112 | opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace(); |
111 | if (opt.isNull()) | 113 | if (opt.isNull()) |
112 | opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace(); | 114 | opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace(); |
113 | parseKeyStr(opt); | 115 | parseKeyStr(opt); |
114 | } | 116 | } |
115 | 117 | ||
116 | void WLANImp::parseKeyStr(QString keystr) { | 118 | void WLANImp::parseKeyStr(QString keystr) { |
117 | int loc = 0; | 119 | int loc = 0; |
118 | int index = 1; | 120 | int index = 1; |
119 | QString key; | 121 | QString key; |
120 | QStringList keys = QStringList::split(QRegExp("\\s+"), keystr); | 122 | QStringList keys = QStringList::split(QRegExp("\\s+"), keystr); |
121 | int enc = -1; // encryption state | 123 | int enc = -1; // encryption state |
122 | 124 | ||
123 | for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) { | 125 | for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) { |
124 | if ((*it).left(3) == "off") { | 126 | if ((*it).left(3) == "off") { |
125 | // encryption disabled | 127 | // encryption disabled |
126 | enc = 0; | 128 | enc = 0; |
127 | } else if ((*it).left(2) == "on") { | 129 | } else if ((*it).left(2) == "on") { |
128 | // encryption enabled | 130 | // encryption enabled |
129 | enc = 1; | 131 | enc = 1; |
130 | } else if ((*it).left(4) == "open") { | 132 | } else if ((*it).left(4) == "open") { |
131 | // open mode, accept non encrypted packets | 133 | // open mode, accept non encrypted packets |
132 | acceptNonEnc->setChecked(true); | 134 | acceptNonEnc->setChecked(true); |
133 | } else if ((*it).left(10) == "restricted") { | 135 | } else if ((*it).left(10) == "restricted") { |
134 | // restricted mode, only accept encrypted packets | 136 | // restricted mode, only accept encrypted packets |
135 | rejectNonEnc->setChecked(true); | 137 | rejectNonEnc->setChecked(true); |
136 | } else if ((*it).left(3) == "key") { | 138 | } else if ((*it).left(3) == "key") { |
137 | // new set of options | 139 | // new set of options |
138 | } else if ((*it).left(1) == "[") { | 140 | } else if ((*it).left(1) == "[") { |
139 | index = (*it).mid(1, 1).toInt(); | 141 | index = (*it).mid(1, 1).toInt(); |
140 | // switch current key to index | 142 | // switch current key to index |
141 | switch (index) { | 143 | switch (index) { |
142 | case 1: | 144 | case 1: |
143 | keyRadio0->setChecked(true); | 145 | keyRadio0->setChecked(true); |
144 | break; | 146 | break; |
145 | case 2: | 147 | case 2: |
146 | keyRadio1->setChecked(true); | 148 | keyRadio1->setChecked(true); |
147 | break; | 149 | break; |
148 | case 3: | 150 | case 3: |
149 | keyRadio2->setChecked(true); | 151 | keyRadio2->setChecked(true); |
150 | break; | 152 | break; |
151 | case 4: | 153 | case 4: |
152 | keyRadio3->setChecked(true); | 154 | keyRadio3->setChecked(true); |
153 | break; | 155 | break; |
154 | } | 156 | } |
155 | } else { | 157 | } else { |
156 | // key | 158 | // key |
157 | key = (*it); | 159 | key = (*it); |
158 | } | 160 | } |
159 | if (! key.isNull()) { | 161 | if (! key.isNull()) { |
160 | if (enc == -1) | 162 | if (enc == -1) |
161 | enc = 1; | 163 | enc = 1; |
162 | QStringList::Iterator next = ++it; | 164 | QStringList::Iterator next = ++it; |
163 | if (it == keys.end()) { | 165 | if (it == keys.end()) { |
164 | break; | 166 | break; |
165 | } | 167 | } |
166 | if ((*(next)).left(1) == "[") { | 168 | if ((*(next)).left(1) == "[") { |
167 | // set key at index | 169 | // set key at index |
168 | index = (*(next)).mid(1, 1).toInt(); | 170 | index = (*(next)).mid(1, 1).toInt(); |
169 | } else { | 171 | } else { |
170 | index = 1; | 172 | index = 1; |
171 | } | 173 | } |
172 | switch (index) { | 174 | switch (index) { |
173 | case 1: | 175 | case 1: |
174 | keyLineEdit0->setText(key); | 176 | keyLineEdit0->setText(key); |
175 | break; | 177 | break; |
176 | case 2: | 178 | case 2: |
177 | keyLineEdit1->setText(key); | 179 | keyLineEdit1->setText(key); |
178 | break; | 180 | break; |
179 | case 3: | 181 | case 3: |
180 | keyLineEdit2->setText(key); | 182 | keyLineEdit2->setText(key); |
181 | break; | 183 | break; |
182 | case 4: | 184 | case 4: |
183 | keyLineEdit3->setText(key); | 185 | keyLineEdit3->setText(key); |
184 | break; | 186 | break; |
185 | } | 187 | } |
186 | key = QString::null; | 188 | key = QString::null; |
187 | } | 189 | } |
188 | } | 190 | } |
189 | if (enc == 1) { | 191 | if (enc == 1) { |
190 | wepEnabled->setChecked(true); | 192 | wepEnabled->setChecked(true); |
191 | } else { | 193 | } else { |
192 | wepEnabled->setChecked(false); | 194 | wepEnabled->setChecked(false); |
193 | } | 195 | } |
194 | } | 196 | } |
195 | 197 | ||
196 | /** | 198 | /** |
197 | * Check to see if the current config is valid | 199 | * Check to see if the current config is valid |
198 | * Save interfaces | 200 | * Save interfaces |
199 | */ | 201 | */ |
200 | void WLANImp::accept() { | 202 | void WLANImp::accept() { |
201 | if (wepEnabled->isChecked()) { | 203 | if (wepEnabled->isChecked()) { |
202 | if ((keyRadio0->isChecked() && keyLineEdit0->text().isEmpty()) || | 204 | if ((keyRadio0->isChecked() && keyLineEdit0->text().isEmpty()) || |
203 | (keyRadio1->isChecked() && keyLineEdit1->text().isEmpty()) || | 205 | (keyRadio1->isChecked() && keyLineEdit1->text().isEmpty()) || |
204 | (keyRadio2->isChecked() && keyLineEdit2->text().isEmpty()) || | 206 | (keyRadio2->isChecked() && keyLineEdit2->text().isEmpty()) || |
205 | (keyRadio3->isChecked() && keyLineEdit3->text().isEmpty())) { | 207 | (keyRadio3->isChecked() && keyLineEdit3->text().isEmpty())) { |
206 | QMessageBox::information(this, "Error", "Please enter a WEP key.", QMessageBox::Ok); | 208 | QMessageBox::information(this, "Error", "Please enter a WEP key.", QMessageBox::Ok); |
207 | return; | 209 | return; |
208 | } | 210 | } |
209 | } | 211 | } |
210 | 212 | ||
211 | if (essid->currentText().isEmpty()) { | 213 | if (essid->currentText().isEmpty()) { |
212 | QMessageBox::information(this, "Error", "Please select/enter an ESSID.", QMessageBox::Ok); | 214 | QMessageBox::information(this, "Error", "Please select/enter an ESSID.", QMessageBox::Ok); |
213 | return; | 215 | return; |
214 | } | 216 | } |
215 | 217 | ||
216 | if (specifyAp->isChecked() && macEdit->text().isEmpty()) { | 218 | if (specifyAp->isChecked() && macEdit->text().isEmpty()) { |
217 | QMessageBox::information(this, "Error", "Please enter the MAC address of the Access Point.", QMessageBox::Ok); | 219 | QMessageBox::information(this, "Error", "Please enter the MAC address of the Access Point.", QMessageBox::Ok); |
218 | return; | 220 | return; |
219 | } | 221 | } |
220 | 222 | ||
221 | // Try to save the interfaces settings. | 223 | // Try to save the interfaces settings. |
222 | writeOpts(); | 224 | writeOpts(); |
223 | 225 | ||
224 | // Close out the dialog | 226 | // Close out the dialog |
225 | // FIXME: QDialog::accept(); | 227 | // FIXME: QDialog::accept(); |
226 | } | 228 | } |
227 | 229 | ||
228 | void WLANImp::writeOpts() { | 230 | void WLANImp::writeOpts() { |
229 | // eh can't really do anything about it other then return. :-D | 231 | // eh can't really do anything about it other then return. :-D |
230 | if(!interfaces->isInterfaceSet()){ | 232 | if(!interfaces->isInterfaceSet()){ |
231 | QMessageBox::warning(0,"Inface not set","should not happen!!!"); | 233 | QMessageBox::warning(0,"Inface not set","should not happen!!!"); |
232 | return; | 234 | return; |
233 | } | 235 | } |
234 | bool error = false; | 236 | bool error = false; |
235 | 237 | ||
236 | odebug << "setting wlan interface " << interfaces->getInterfaceName( error ).latin1() << "" << oendl; | 238 | odebug << "setting wlan interface " << interfaces->getInterfaceName( error ).latin1() << "" << oendl; |
237 | 239 | ||
238 | if (error) QMessageBox::warning(0,"Inface not set","should not happen!!!"); | 240 | if (error) QMessageBox::warning(0,"Inface not set","should not happen!!!"); |
239 | 241 | ||
240 | interfaces->setInterfaceOption(QString("wireless_mode"), mode->currentText()); | 242 | interfaces->setInterfaceOption(QString("wireless_mode"), mode->currentText()); |
241 | interfaces->setInterfaceOption(QString("wireless_essid"), essid->currentText()); | 243 | interfaces->setInterfaceOption(QString("wireless_essid"), essid->currentText()); |
242 | 244 | ||
243 | if (specifyAp->isChecked()) { | 245 | if (specifyAp->isChecked()) { |
244 | interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text()); | 246 | interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text()); |
245 | } else { | 247 | } else { |
246 | interfaces->removeInterfaceOption(QString("wireless_ap")); | 248 | interfaces->removeInterfaceOption(QString("wireless_ap")); |
247 | } | 249 | } |
248 | 250 | ||
249 | if (specifyChan->isChecked()) { | 251 | if (specifyChan->isChecked()) { |
250 | interfaces->setInterfaceOption(QString("wireless_channel"), networkChannel->text()); | 252 | interfaces->setInterfaceOption(QString("wireless_channel"), networkChannel->text()); |
251 | } else { | 253 | } else { |
252 | interfaces->removeInterfaceOption(QString("wireless_channel")); | 254 | interfaces->removeInterfaceOption(QString("wireless_channel")); |
253 | } | 255 | } |
254 | 256 | ||
255 | if (wepEnabled->isChecked()) { | 257 | if (wepEnabled->isChecked()) { |
256 | QStringList keyList; | 258 | QStringList keyList; |
257 | 259 | ||
258 | if (! keyLineEdit0->text().isNull()) { | 260 | if (! keyLineEdit0->text().isNull()) { |
259 | keyList += keyLineEdit0->text(); | 261 | keyList += keyLineEdit0->text(); |
260 | keyList += "[1]"; | 262 | keyList += "[1]"; |
261 | } //else | 263 | } //else |
262 | if (! keyLineEdit1->text().isNull()) { | 264 | if (! keyLineEdit1->text().isNull()) { |
263 | keyList += keyLineEdit1->text(); | 265 | keyList += keyLineEdit1->text(); |
264 | keyList += "[2]"; | 266 | keyList += "[2]"; |
265 | } //else | 267 | } //else |
266 | if (! keyLineEdit2->text().isNull()) { | 268 | if (! keyLineEdit2->text().isNull()) { |
267 | keyList += keyLineEdit2->text(); | 269 | keyList += keyLineEdit2->text(); |
268 | keyList += "[3]"; | 270 | keyList += "[3]"; |
269 | } //else | 271 | } //else |
270 | if (! keyLineEdit3->text().isNull()) { | 272 | if (! keyLineEdit3->text().isNull()) { |
271 | keyList += keyLineEdit3->text(); | 273 | keyList += keyLineEdit3->text(); |
272 | keyList += "[4]"; | 274 | keyList += "[4]"; |
273 | } | 275 | } |
274 | if (acceptNonEnc->isChecked()) { | 276 | if (acceptNonEnc->isChecked()) { |
275 | keyList += "open"; | 277 | keyList += "open"; |
276 | } else { | 278 | } else { |
277 | keyList += "restricted"; | 279 | keyList += "restricted"; |
278 | } | 280 | } |
279 | 281 | ||
280 | keyList += "key"; | 282 | keyList += "key"; |
281 | if (keyRadio0->isChecked()) { | 283 | if (keyRadio0->isChecked()) { |
282 | keyList += "[1]"; | 284 | keyList += "[1]"; |
283 | } else if (keyRadio1->isChecked()) { | 285 | } else if (keyRadio1->isChecked()) { |
284 | keyList += "[2]"; | 286 | keyList += "[2]"; |
285 | } else if (keyRadio2->isChecked()) { | 287 | } else if (keyRadio2->isChecked()) { |
286 | keyList += "[3]"; | 288 | keyList += "[3]"; |
287 | } else if (keyRadio3->isChecked()) { | 289 | } else if (keyRadio3->isChecked()) { |
288 | keyList += "[4]"; | 290 | keyList += "[4]"; |
289 | } | 291 | } |
290 | interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); | 292 | interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); |
291 | } else { | 293 | } else { |
292 | interfaces->removeInterfaceOption(QString("wireless_key")); | 294 | interfaces->removeInterfaceOption(QString("wireless_key")); |
293 | } | 295 | } |
294 | interfaces->removeInterfaceOption(QString("wireless_enc")); | 296 | interfaces->removeInterfaceOption(QString("wireless_enc")); |
295 | 297 | ||
296 | if(!interfaceSetup->saveChanges()) | 298 | if(!interfaceSetup->saveChanges()) |
297 | return; | 299 | return; |
298 | 300 | ||
299 | QDialog::accept(); | 301 | QDialog::accept(); |
300 | } | 302 | } |
301 | 303 | ||
302 | /* | 304 | /* |
303 | * Scan for possible wireless networks around... | 305 | * Scan for possible wireless networks around... |
304 | * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org> | 306 | * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org> |
305 | */ | 307 | */ |
306 | 308 | ||
307 | void WLANImp::rescanNeighbourhood() | 309 | void WLANImp::rescanNeighbourhood() |
308 | { | 310 | { |
309 | QString name = interface->getInterfaceName(); | 311 | QString name = interface->getInterfaceName(); |
310 | odebug << "rescanNeighbourhood via '" << name << "'" << oendl; | 312 | odebug << "rescanNeighbourhood via '" << name << "'" << oendl; |
311 | 313 | ||
312 | OWirelessNetworkInterface* wiface = static_cast<OWirelessNetworkInterface*>( ONetwork::instance()->interface( name ) ); | 314 | OWirelessNetworkInterface* wiface = static_cast<OWirelessNetworkInterface*>( ONetwork::instance()->interface( name ) ); |
313 | assert( wiface ); | 315 | assert( wiface ); |
314 | 316 | ||
315 | // try to guess device type | 317 | // try to guess device type |
316 | QString devicetype; | 318 | QString devicetype; |
317 | QFile m( "/proc/modules" ); | 319 | QFile m( "/proc/modules" ); |
318 | if ( m.open( IO_ReadOnly ) ) | 320 | if ( m.open( IO_ReadOnly ) ) |
319 | { | 321 | { |
320 | QString line; | 322 | QString line; |
321 | QTextStream modules( &m ); | 323 | QTextStream modules( &m ); |
322 | while( !modules.atEnd() && !devicetype ) | 324 | while( !modules.atEnd() && !devicetype ) |
323 | { | 325 | { |
324 | modules >> line; | 326 | modules >> line; |
325 | if ( line.contains( "cisco" ) ) devicetype = "cisco"; | 327 | if ( line.contains( "cisco" ) ) devicetype = "cisco"; |
326 | else if ( line.contains( "hostap" ) ) devicetype = "hostap"; | 328 | else if ( line.contains( "hostap" ) ) devicetype = "hostap"; |
327 | else if ( line.contains( "prism" ) ) devicetype = "wlan-ng"; /* puke */ | 329 | else if ( line.contains( "prism" ) ) devicetype = "wlan-ng"; /* puke */ |
328 | else if ( line.contains( "orinoco" ) ) devicetype = "orinoco"; | 330 | else if ( line.contains( "orinoco" ) ) devicetype = "orinoco"; |
329 | } | 331 | } |
330 | } | 332 | } |
331 | if ( devicetype.isEmpty() ) | 333 | if ( devicetype.isEmpty() ) |
332 | { | 334 | { |
333 | owarn << "rescanNeighbourhood(): couldn't guess device type :(" << oendl; | 335 | owarn << "rescanNeighbourhood(): couldn't guess device type :(" << oendl; |
334 | return; | 336 | return; |
335 | } | 337 | } |
336 | else | 338 | else |
337 | { | 339 | { |
338 | odebug << "rescanNeighbourhood(): device type seems to be '" << devicetype << "'" << oendl; | 340 | odebug << "rescanNeighbourhood(): device type seems to be '" << devicetype << "'" << oendl; |
339 | } | 341 | } |
340 | 342 | ||
341 | // configure interface to receive 802.11 management frames | 343 | // configure interface to receive 802.11 management frames |
342 | 344 | ||
343 | wiface->setUp( true ); | 345 | wiface->setUp( true ); |
344 | wiface->setPromiscuousMode( true ); | 346 | wiface->setPromiscuousMode( true ); |
345 | 347 | ||
346 | if ( devicetype == "cisco" ) wiface->setMonitoring( new OCiscoMonitoringInterface( wiface, false ) ); | 348 | if ( devicetype == "cisco" ) wiface->setMonitoring( new OCiscoMonitoringInterface( wiface, false ) ); |
347 | else if ( devicetype == "hostap" ) wiface->setMonitoring( new OHostAPMonitoringInterface( wiface, false ) ); | 349 | else if ( devicetype == "hostap" ) wiface->setMonitoring( new OHostAPMonitoringInterface( wiface, false ) ); |
348 | else if ( devicetype == "wlan-ng" ) wiface->setMonitoring( new OWlanNGMonitoringInterface( wiface, false ) ); | 350 | else if ( devicetype == "wlan-ng" ) wiface->setMonitoring( new OWlanNGMonitoringInterface( wiface, false ) ); |
349 | else if ( devicetype == "orinoco" ) wiface->setMonitoring( new OOrinocoMonitoringInterface( wiface, false ) ); | 351 | else if ( devicetype == "orinoco" ) wiface->setMonitoring( new OOrinocoMonitoringInterface( wiface, false ) ); |
350 | else | 352 | else |
351 | { | 353 | { |
352 | odebug << "rescanNeighbourhood(): unsupported device type for monitoring :(" << oendl; | 354 | odebug << "rescanNeighbourhood(): unsupported device type for monitoring :(" << oendl; |
353 | return; | 355 | return; |
354 | } | 356 | } |
355 | 357 | ||
356 | wiface->setMode( "monitor" ); | 358 | wiface->setMode( "monitor" ); |
357 | if ( wiface->mode() != "monitor" ) | 359 | if ( wiface->mode() != "monitor" ) |
358 | { | 360 | { |
359 | owarn << "rescanNeighbourhood(): Unable to bring device into monitor mode (" << strerror( errno ) << ")." << oendl; | 361 | owarn << "rescanNeighbourhood(): Unable to bring device into monitor mode (" << strerror( errno ) << ")." << oendl; |
360 | return; | 362 | return; |
361 | } | 363 | } |
362 | 364 | ||
363 | // open a packet capturer | 365 | // open a packet capturer |
364 | OPacketCapturer* cap = new OPacketCapturer(); | 366 | OPacketCapturer* cap = new OPacketCapturer(); |
365 | cap->open( name ); | 367 | cap->open( name ); |
366 | if ( !cap->isOpen() ) | 368 | if ( !cap->isOpen() ) |
367 | { | 369 | { |
368 | owarn << "rescanNeighbourhood(): Unable to open libpcap (" << strerror( errno ) << ")." << oendl; | 370 | owarn << "rescanNeighbourhood(): Unable to open libpcap (" << strerror( errno ) << ")." << oendl; |
369 | return; | 371 | return; |
370 | } | 372 | } |
371 | 373 | ||
372 | // display splash screen | 374 | // display splash screen |
373 | QFrame* splash = new QFrame( this, "splash", false, WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_Customize ); | 375 | QFrame* splash = new QFrame( this, "splash", false, WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_Customize ); |
374 | splash->setLineWidth( 2 ); | 376 | splash->setLineWidth( 2 ); |
375 | splash->setFrameStyle( QFrame::Panel | QFrame::Raised ); | 377 | splash->setFrameStyle( QFrame::Panel | QFrame::Raised ); |
376 | QVBoxLayout* vbox = new QVBoxLayout( splash, 4, 4 ); | 378 | QVBoxLayout* vbox = new QVBoxLayout( splash, 4, 4 ); |
377 | QLabel* lab = new QLabel( "<center><b>Scanning...</b><br>Please Wait...</center>", splash ); | 379 | QLabel* lab = new QLabel( "<center><b>Scanning...</b><br>Please Wait...</center>", splash ); |
378 | QProgressBar* pb = new QProgressBar( wiface->channels(), splash ); | 380 | QProgressBar* pb = new QProgressBar( wiface->channels(), splash ); |
379 | vbox->addWidget( lab ); | 381 | vbox->addWidget( lab ); |
380 | vbox->addWidget( pb ); | 382 | vbox->addWidget( pb ); |
381 | pb->setCenterIndicator( true ); | 383 | pb->setCenterIndicator( true ); |
382 | pb->setFixedHeight( pb->sizeHint().height() ); | 384 | pb->setFixedHeight( pb->sizeHint().height() ); |
383 | QWidget* widgetDesktop = qApp->desktop(); | 385 | QWidget* widgetDesktop = qApp->desktop(); |
384 | int dw = widgetDesktop->width(); | 386 | int dw = widgetDesktop->width(); |
385 | int dh = widgetDesktop->height(); | 387 | int dh = widgetDesktop->height(); |
386 | int pw = vbox->sizeHint().width(); | 388 | int pw = vbox->sizeHint().width(); |
387 | int ph = vbox->sizeHint().height(); | 389 | int ph = vbox->sizeHint().height(); |
388 | splash->setGeometry((dw-pw)/2,(dh-ph)/2,pw,ph); | 390 | splash->setGeometry((dw-pw)/2,(dh-ph)/2,pw,ph); |
389 | splash->show(); | 391 | splash->show(); |
390 | splash->raise(); | 392 | splash->raise(); |
391 | qApp->processEvents(); | 393 | qApp->processEvents(); |
392 | 394 | ||
393 | // set capturer to non-blocking mode | 395 | // set capturer to non-blocking mode |
394 | cap->setBlocking( false ); | 396 | cap->setBlocking( false ); |
395 | 397 | ||
396 | for ( int i = 1; i <= wiface->channels(); ++i ) | 398 | for ( int i = 1; i <= wiface->channels(); ++i ) |
397 | { | 399 | { |
398 | wiface->setChannel( i ); | 400 | wiface->setChannel( i ); |
399 | pb->setProgress( i ); | 401 | pb->setProgress( i ); |
400 | qApp->processEvents(); | 402 | qApp->processEvents(); |
401 | odebug << "rescanNeighbourhood(): listening on channel " << i << "..." << oendl; | 403 | odebug << "rescanNeighbourhood(): listening on channel " << i << "..." << oendl; |
402 | OPacket* p = cap->next( 1000 ); | 404 | OPacket* p = cap->next( 1000 ); |
403 | if ( !p ) | 405 | if ( !p ) |
404 | { | 406 | { |
405 | odebug << "rescanNeighbourhood(): nothing received on channel " << i << "" << oendl; | 407 | odebug << "rescanNeighbourhood(): nothing received on channel " << i << "" << oendl; |
406 | } | 408 | } |
407 | else | 409 | else |
408 | { | 410 | { |
409 | odebug << "rescanNeighbourhood(): TADAA - something came in on channel " << i << "" << oendl; | 411 | odebug << "rescanNeighbourhood(): TADAA - something came in on channel " << i << "" << oendl; |
410 | handlePacket( p ); | 412 | handlePacket( p ); |
411 | } | 413 | } |
412 | } | 414 | } |
413 | 415 | ||
414 | cap->close(); | 416 | cap->close(); |
415 | wiface->setMode( "managed" ); // TODO: use previous mode | 417 | wiface->setMode( "managed" ); // TODO: use previous mode |
416 | wiface->setPromiscuousMode( false ); | 418 | wiface->setPromiscuousMode( false ); |
417 | 419 | ||
418 | splash->hide(); | 420 | splash->hide(); |
419 | delete splash; | 421 | delete splash; |
420 | 422 | ||
421 | } | 423 | } |
422 | 424 | ||
423 | void WLANImp::handlePacket( OPacket* p ) | 425 | void WLANImp::handlePacket( OPacket* p ) |
424 | { | 426 | { |
425 | 427 | ||
426 | // check if we received a beacon frame | 428 | // check if we received a beacon frame |
427 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); | 429 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); |
428 | if ( beacon && beacon->managementType() == "Beacon" ) | 430 | if ( beacon && beacon->managementType() == "Beacon" ) |
429 | { | 431 | { |
430 | 432 | ||
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp index 886af10..ba89fa4 100644 --- a/noncore/settings/networksettings/wlan/wlanmodule.cpp +++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp | |||
@@ -1,255 +1,257 @@ | |||
1 | 1 | ||
2 | #include "wlanmodule.h" | 2 | #include "wlanmodule.h" |
3 | #include "wlanimp2.h" | 3 | #include "wlanimp2.h" |
4 | #include "infoimp.h" | 4 | #include "infoimp.h" |
5 | #include "wextensions.h" | 5 | #include "wextensions.h" |
6 | #include "interfaceinformationimp.h" | 6 | #include "interfaceinformationimp.h" |
7 | 7 | ||
8 | /* OPIE */ | 8 | /* OPIE */ |
9 | #include <opie2/odebug.h> | ||
9 | #include <qpe/qpeapplication.h> | 10 | #include <qpe/qpeapplication.h> |
11 | using namespace Opie::Core; | ||
10 | 12 | ||
11 | /* QT */ | 13 | /* QT */ |
12 | #include <qcheckbox.h> | 14 | #include <qcheckbox.h> |
13 | #include <qcombobox.h> | 15 | #include <qcombobox.h> |
14 | #include <qlabel.h> | 16 | #include <qlabel.h> |
15 | #include <qlineedit.h> | 17 | #include <qlineedit.h> |
16 | #include <qprogressbar.h> | 18 | #include <qprogressbar.h> |
17 | #include <qspinbox.h> | 19 | #include <qspinbox.h> |
18 | #include <qtabwidget.h> | 20 | #include <qtabwidget.h> |
19 | 21 | ||
20 | 22 | ||
21 | /** | 23 | /** |
22 | * Constructor, find all of the possible interfaces | 24 | * Constructor, find all of the possible interfaces |
23 | */ | 25 | */ |
24 | WLANModule::WLANModule() | 26 | WLANModule::WLANModule() |
25 | : Module(), | 27 | : Module(), |
26 | wlanconfigWiget(0) | 28 | wlanconfigWiget(0) |
27 | { | 29 | { |
28 | } | 30 | } |
29 | 31 | ||
30 | /** | 32 | /** |
31 | * Delete any interfaces that we own. | 33 | * Delete any interfaces that we own. |
32 | */ | 34 | */ |
33 | WLANModule::~WLANModule(){ | 35 | WLANModule::~WLANModule(){ |
34 | Interface *i; | 36 | Interface *i; |
35 | for ( i=list.first(); i != 0; i=list.next() ) | 37 | for ( i=list.first(); i != 0; i=list.next() ) |
36 | delete i; | 38 | delete i; |
37 | 39 | ||
38 | } | 40 | } |
39 | 41 | ||
40 | /** | 42 | /** |
41 | * Change the current profile | 43 | * Change the current profile |
42 | */ | 44 | */ |
43 | void WLANModule::setProfile(const QString &newProfile){ | 45 | void WLANModule::setProfile(const QString &newProfile){ |
44 | profile = newProfile; | 46 | profile = newProfile; |
45 | } | 47 | } |
46 | 48 | ||
47 | /** | 49 | /** |
48 | * get the icon name for this device. | 50 | * get the icon name for this device. |
49 | * @param Interface* can be used in determining the icon. | 51 | * @param Interface* can be used in determining the icon. |
50 | * @return QString the icon name (minus .png, .gif etc) | 52 | * @return QString the icon name (minus .png, .gif etc) |
51 | */ | 53 | */ |
52 | QString WLANModule::getPixmapName(Interface* ){ | 54 | QString WLANModule::getPixmapName(Interface* ){ |
53 | return "wlan"; | 55 | return "wlan"; |
54 | } | 56 | } |
55 | 57 | ||
56 | /** | 58 | /** |
57 | * Check to see if the interface i is owned by this module. | 59 | * Check to see if the interface i is owned by this module. |
58 | * @param Interface* interface to check against | 60 | * @param Interface* interface to check against |
59 | * @return bool true if i is owned by this module, false otherwise. | 61 | * @return bool true if i is owned by this module, false otherwise. |
60 | */ | 62 | */ |
61 | bool WLANModule::isOwner(Interface *i){ | 63 | bool WLANModule::isOwner(Interface *i){ |
62 | WExtensions we(i->getInterfaceName()); | 64 | WExtensions we(i->getInterfaceName()); |
63 | if(!we.doesHaveWirelessExtensions()) | 65 | if(!we.doesHaveWirelessExtensions()) |
64 | return false; | 66 | return false; |
65 | 67 | ||
66 | i->setHardwareName("802.11b"); | 68 | i->setHardwareName("802.11b"); |
67 | list.append(i); | 69 | list.append(i); |
68 | return true; | 70 | return true; |
69 | } | 71 | } |
70 | 72 | ||
71 | /** | 73 | /** |
72 | * Create, and return the WLANConfigure Module | 74 | * Create, and return the WLANConfigure Module |
73 | * @return QWidget* pointer to this modules configure. | 75 | * @return QWidget* pointer to this modules configure. |
74 | */ | 76 | */ |
75 | QWidget *WLANModule::configure(Interface *i){ | 77 | QWidget *WLANModule::configure(Interface *i){ |
76 | WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, true, Qt::WDestructiveClose); | 78 | WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, true, Qt::WDestructiveClose); |
77 | wlanconfig->setProfile(profile); | 79 | wlanconfig->setProfile(profile); |
78 | return wlanconfig; | 80 | return wlanconfig; |
79 | } | 81 | } |
80 | 82 | ||
81 | /** | 83 | /** |
82 | * Create, and return the Information Module | 84 | * Create, and return the Information Module |
83 | * @return QWidget* pointer to this modules info. | 85 | * @return QWidget* pointer to this modules info. |
84 | */ | 86 | */ |
85 | QWidget *WLANModule::information(Interface *i){ | 87 | QWidget *WLANModule::information(Interface *i){ |
86 | WExtensions we(i->getInterfaceName()); | 88 | WExtensions we(i->getInterfaceName()); |
87 | if(!we.doesHaveWirelessExtensions()) | 89 | if(!we.doesHaveWirelessExtensions()) |
88 | return NULL; | 90 | return NULL; |
89 | 91 | ||
90 | return getInfo( i ); | 92 | return getInfo( i ); |
91 | } | 93 | } |
92 | 94 | ||
93 | /** | 95 | /** |
94 | * Get all active (up or down) interfaces | 96 | * Get all active (up or down) interfaces |
95 | * @return QList<Interface> A list of interfaces that exsist that havn't | 97 | * @return QList<Interface> A list of interfaces that exsist that havn't |
96 | * been called by isOwner() | 98 | * been called by isOwner() |
97 | */ | 99 | */ |
98 | QList<Interface> WLANModule::getInterfaces(){ | 100 | QList<Interface> WLANModule::getInterfaces(){ |
99 | return list; | 101 | return list; |
100 | } | 102 | } |
101 | 103 | ||
102 | /** | 104 | /** |
103 | * Attempt to add a new interface as defined by name | 105 | * Attempt to add a new interface as defined by name |
104 | * @param name the name of the type of interface that should be created given | 106 | * @param name the name of the type of interface that should be created given |
105 | * by possibleNewInterfaces(); | 107 | * by possibleNewInterfaces(); |
106 | * @return Interface* NULL if it was unable to be created. | 108 | * @return Interface* NULL if it was unable to be created. |
107 | */ | 109 | */ |
108 | Interface *WLANModule::addNewInterface(const QString &){ | 110 | Interface *WLANModule::addNewInterface(const QString &){ |
109 | // We can't add a 802.11 interface, either the hardware will be there | 111 | // We can't add a 802.11 interface, either the hardware will be there |
110 | // or it wont. | 112 | // or it wont. |
111 | return NULL; | 113 | return NULL; |
112 | } | 114 | } |
113 | 115 | ||
114 | /** | 116 | /** |
115 | * Attempts to remove the interface, doesn't delete i | 117 | * Attempts to remove the interface, doesn't delete i |
116 | * @return bool true if successful, false otherwise. | 118 | * @return bool true if successful, false otherwise. |
117 | */ | 119 | */ |
118 | bool WLANModule::remove(Interface*){ | 120 | bool WLANModule::remove(Interface*){ |
119 | // Can't remove a hardware device, you can stop it though. | 121 | // Can't remove a hardware device, you can stop it though. |
120 | return false; | 122 | return false; |
121 | } | 123 | } |
122 | 124 | ||
123 | void WLANModule::receive(const QCString ¶m, const QByteArray &arg) | 125 | void WLANModule::receive(const QCString ¶m, const QByteArray &arg) |
124 | { | 126 | { |
125 | odebug << "WLANModule::receive "+param << oendl; | 127 | odebug << "WLANModule::receive "+param << oendl; |
126 | QStringList params = QStringList::split(",",param); | 128 | QStringList params = QStringList::split(",",param); |
127 | int count = params.count(); | 129 | int count = params.count(); |
128 | odebug << "WLANModule got " << count << " params" << oendl; | 130 | odebug << "WLANModule got " << count << " params" << oendl; |
129 | if (count < 2){ | 131 | if (count < 2){ |
130 | odebug << "Erorr less than 2 parameter" << oendl; | 132 | odebug << "Erorr less than 2 parameter" << oendl; |
131 | odebug << "RETURNING" << oendl; | 133 | odebug << "RETURNING" << oendl; |
132 | return; | 134 | return; |
133 | } | 135 | } |
134 | 136 | ||
135 | QDataStream stream(arg,IO_ReadOnly); | 137 | QDataStream stream(arg,IO_ReadOnly); |
136 | QString interface; | 138 | QString interface; |
137 | QString action; | 139 | QString action; |
138 | int countMsgs = 0; | 140 | int countMsgs = 0; |
139 | stream >> interface; | 141 | stream >> interface; |
140 | odebug << "got count? >" << interface.latin1() << "<" << oendl; | 142 | odebug << "got count? >" << interface.latin1() << "<" << oendl; |
141 | if (interface == "count"){ | 143 | if (interface == "count"){ |
142 | odebug << "got count" << oendl; | 144 | odebug << "got count" << oendl; |
143 | stream >> action; | 145 | stream >> action; |
144 | odebug << "Got count num >" << action.latin1() << "<" << oendl; | 146 | odebug << "Got count num >" << action.latin1() << "<" << oendl; |
145 | countMsgs = action.toInt(); | 147 | countMsgs = action.toInt(); |
146 | } | 148 | } |
147 | 149 | ||
148 | QDialog *toShow; | 150 | QDialog *toShow; |
149 | //while (! stream.atEnd() ){ | 151 | //while (! stream.atEnd() ){ |
150 | for (int i = 0; i < countMsgs; i++){ | 152 | for (int i = 0; i < countMsgs; i++){ |
151 | odebug << "start stream " << i << "/" << countMsgs << "" << oendl; | 153 | odebug << "start stream " << i << "/" << countMsgs << "" << oendl; |
152 | if (stream.atEnd()){ | 154 | if (stream.atEnd()){ |
153 | odebug << "end of stream" << oendl; | 155 | odebug << "end of stream" << oendl; |
154 | return; | 156 | return; |
155 | } | 157 | } |
156 | stream >> interface; | 158 | stream >> interface; |
157 | odebug << "got iface" << oendl; | 159 | odebug << "got iface" << oendl; |
158 | stream >> action; | 160 | stream >> action; |
159 | odebug << "WLANModule got interface " << interface.latin1() << " and acion " << action.latin1() << "" << oendl; | 161 | odebug << "WLANModule got interface " << interface.latin1() << " and acion " << action.latin1() << "" << oendl; |
160 | // find interfaces | 162 | // find interfaces |
161 | Interface *ifa=0; | 163 | Interface *ifa=0; |
162 | for ( Interface *i=list.first(); i != 0; i=list.next() ){ | 164 | for ( Interface *i=list.first(); i != 0; i=list.next() ){ |
163 | if (i->getInterfaceName() == interface){ | 165 | if (i->getInterfaceName() == interface){ |
164 | odebug << "WLANModule found interface " << interface.latin1() << "" << oendl; | 166 | odebug << "WLANModule found interface " << interface.latin1() << "" << oendl; |
165 | ifa = i; | 167 | ifa = i; |
166 | } | 168 | } |
167 | } | 169 | } |
168 | 170 | ||
169 | if (ifa == 0){ | 171 | if (ifa == 0){ |
170 | odebug << "WLANModule Did not find " << interface.latin1() << "" << oendl; | 172 | odebug << "WLANModule Did not find " << interface.latin1() << "" << oendl; |
171 | odebug << "skipping" << oendl; | 173 | odebug << "skipping" << oendl; |
172 | count = 0; | 174 | count = 0; |
173 | } | 175 | } |
174 | 176 | ||
175 | if (count == 2){ | 177 | if (count == 2){ |
176 | // those should call the interface directly | 178 | // those should call the interface directly |
177 | QWidget *info = getInfo( ifa ); | 179 | QWidget *info = getInfo( ifa ); |
178 | QPEApplication::showWidget( info ); | 180 | QPEApplication::showWidget( info ); |
179 | 181 | ||
180 | if ( action.contains("start" ) ){ | 182 | if ( action.contains("start" ) ){ |
181 | ifa->start(); | 183 | ifa->start(); |
182 | } else if ( action.contains("restart" ) ){ | 184 | } else if ( action.contains("restart" ) ){ |
183 | ifa->restart(); | 185 | ifa->restart(); |
184 | } else if ( action.contains("stop" ) ){ | 186 | } else if ( action.contains("stop" ) ){ |
185 | ifa->stop(); | 187 | ifa->stop(); |
186 | }else if ( action.contains("refresh" ) ){ | 188 | }else if ( action.contains("refresh" ) ){ |
187 | ifa->refresh(); | 189 | ifa->refresh(); |
188 | } | 190 | } |
189 | }else if (count == 3){ | 191 | }else if (count == 3){ |
190 | QString value; | 192 | QString value; |
191 | if (!wlanconfigWiget){ | 193 | if (!wlanconfigWiget){ |
192 | //FIXME: what if it got closed meanwhile? | 194 | //FIXME: what if it got closed meanwhile? |
193 | wlanconfigWiget = (WLANImp*) configure(ifa); | 195 | wlanconfigWiget = (WLANImp*) configure(ifa); |
194 | toShow = (QDialog*) wlanconfigWiget; | 196 | toShow = (QDialog*) wlanconfigWiget; |
195 | } | 197 | } |
196 | QPEApplication::showWidget( wlanconfigWiget ); | 198 | QPEApplication::showWidget( wlanconfigWiget ); |
197 | stream >> value; | 199 | stream >> value; |
198 | odebug << "WLANModule (build 4) is setting " << action.latin1() << " of " << interface.latin1() << " to " << value.latin1() << "" << oendl; | 200 | odebug << "WLANModule (build 4) is setting " << action.latin1() << " of " << interface.latin1() << " to " << value.latin1() << "" << oendl; |
199 | if (value.isEmpty()){ | 201 | if (value.isEmpty()){ |
200 | odebug << "value is empty!!!\nreturning" << oendl; | 202 | odebug << "value is empty!!!\nreturning" << oendl; |
201 | return; | 203 | return; |
202 | } | 204 | } |
203 | if ( action.contains("ESSID") ){ | 205 | if ( action.contains("ESSID") ){ |
204 | QComboBox *combo = wlanconfigWiget->essid; | 206 | QComboBox *combo = wlanconfigWiget->essid; |
205 | bool found = false; | 207 | bool found = false; |
206 | for ( int i = 0; i < combo->count(); i++) | 208 | for ( int i = 0; i < combo->count(); i++) |
207 | if ( combo->text( i ) == value ){ | 209 | if ( combo->text( i ) == value ){ |
208 | combo->setCurrentItem( i ); | 210 | combo->setCurrentItem( i ); |
209 | found = true; | 211 | found = true; |
210 | } | 212 | } |
211 | if (!found) combo->insertItem( value, 0 ); | 213 | if (!found) combo->insertItem( value, 0 ); |
212 | }else if ( action.contains("Mode") ){ | 214 | }else if ( action.contains("Mode") ){ |
213 | QComboBox *combo = wlanconfigWiget->mode; | 215 | QComboBox *combo = wlanconfigWiget->mode; |
214 | for ( int i = 0; i < combo->count(); i++) | 216 | for ( int i = 0; i < combo->count(); i++) |
215 | if ( combo->text( i ) == value ){ | 217 | if ( combo->text( i ) == value ){ |
216 | combo->setCurrentItem( i ); | 218 | combo->setCurrentItem( i ); |
217 | } | 219 | } |
218 | 220 | ||
219 | }else if (action.contains("Channel")){ | 221 | }else if (action.contains("Channel")){ |
220 | bool ok; | 222 | bool ok; |
221 | odebug << "converting channel" << oendl; | 223 | odebug << "converting channel" << oendl; |
222 | int chan = value.toInt( &ok ); | 224 | int chan = value.toInt( &ok ); |
223 | if (ok){ | 225 | if (ok){ |
224 | odebug << "ok setting channel" << oendl; | 226 | odebug << "ok setting channel" << oendl; |
225 | wlanconfigWiget->specifyChan->setChecked( true ); | 227 | wlanconfigWiget->specifyChan->setChecked( true ); |
226 | wlanconfigWiget->networkChannel->setValue( chan ); | 228 | wlanconfigWiget->networkChannel->setValue( chan ); |
227 | } | 229 | } |
228 | }else if (action.contains("MacAddr")){ | 230 | }else if (action.contains("MacAddr")){ |
229 | wlanconfigWiget->specifyAp->setChecked( true ); | 231 | wlanconfigWiget->specifyAp->setChecked( true ); |
230 | wlanconfigWiget->macEdit->setText( value ); | 232 | wlanconfigWiget->macEdit->setText( value ); |
231 | }else | 233 | }else |
232 | odebug << "wlan plugin has no clue" << oendl; | 234 | odebug << "wlan plugin has no clue" << oendl; |
233 | } | 235 | } |
234 | odebug << "next stream" << oendl; | 236 | odebug << "next stream" << oendl; |
235 | }// while stream | 237 | }// while stream |
236 | odebug << "end of stream" << oendl; | 238 | odebug << "end of stream" << oendl; |
237 | if (toShow) toShow->exec(); | 239 | if (toShow) toShow->exec(); |
238 | odebug << "returning" << oendl; | 240 | odebug << "returning" << oendl; |
239 | } | 241 | } |
240 | 242 | ||
241 | QWidget *WLANModule::getInfo( Interface *i) | 243 | QWidget *WLANModule::getInfo( Interface *i) |
242 | { | 244 | { |
243 | odebug << "WLANModule::getInfo start" << oendl; | 245 | odebug << "WLANModule::getInfo start" << oendl; |
244 | WlanInfoImp *info = new WlanInfoImp(0, i->getInterfaceName(), Qt::WDestructiveClose); | 246 | WlanInfoImp *info = new WlanInfoImp(0, i->getInterfaceName(), Qt::WDestructiveClose); |
245 | InterfaceInformationImp *information = new InterfaceInformationImp(info->tabWidget, "InterfaceSetupImp", i); | 247 | InterfaceInformationImp *information = new InterfaceInformationImp(info->tabWidget, "InterfaceSetupImp", i); |
246 | info->tabWidget->insertTab(information, "TCP/IP", 0); | 248 | info->tabWidget->insertTab(information, "TCP/IP", 0); |
247 | info->tabWidget->setCurrentPage( 0 ); | 249 | info->tabWidget->setCurrentPage( 0 ); |
248 | info->tabWidget->showPage( information ); | 250 | info->tabWidget->showPage( information ); |
249 | if (info->tabWidget->currentPage() == information ) odebug << "infotab OK" << oendl; | 251 | if (info->tabWidget->currentPage() == information ) odebug << "infotab OK" << oendl; |
250 | else odebug << "infotab NOT OK" << oendl; | 252 | else odebug << "infotab NOT OK" << oendl; |
251 | odebug << "current idx " << info->tabWidget->currentPageIndex() << "" << oendl; | 253 | odebug << "current idx " << info->tabWidget->currentPageIndex() << "" << oendl; |
252 | odebug << "WLANModule::getInfo return" << oendl; | 254 | odebug << "WLANModule::getInfo return" << oendl; |
253 | return info; | 255 | return info; |
254 | } | 256 | } |
255 | 257 | ||