summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-04-09 15:00:06 (UTC)
committer mickeyl <mickeyl>2004-04-09 15:00:06 (UTC)
commitfb2f09533c7476a266a877c351007c2706b2da0d (patch) (unidiff)
tree9742d4cb8fd07fd5530c3c29b5f049dcecd46ef4
parent39547839995c9f72ca9216ba5c2127246428ece8 (diff)
downloadopie-fb2f09533c7476a266a877c351007c2706b2da0d.zip
opie-fb2f09533c7476a266a877c351007c2706b2da0d.tar.gz
opie-fb2f09533c7476a266a877c351007c2706b2da0d.tar.bz2
- eliminate cylic dependency
- complete using opie debugging framework - sanitize #include order
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces/config.in4
-rw-r--r--noncore/settings/networksettings/networksettings.pro3
-rw-r--r--noncore/settings/networksettings/ppp/accounts.cpp2
-rw-r--r--noncore/settings/networksettings/ppp/authwidget.cpp16
-rw-r--r--noncore/settings/networksettings/ppp/config.in2
-rw-r--r--noncore/settings/networksettings/ppp/connect.cpp9
-rw-r--r--noncore/settings/networksettings/ppp/devices.cpp2
-rw-r--r--noncore/settings/networksettings/ppp/general.cpp2
-rw-r--r--noncore/settings/networksettings/ppp/interfaceinformationppp.cpp10
-rw-r--r--noncore/settings/networksettings/ppp/interfaceppp.cpp14
-rw-r--r--noncore/settings/networksettings/ppp/modem.cpp5
-rw-r--r--noncore/settings/networksettings/ppp/ppp.pro3
-rw-r--r--noncore/settings/networksettings/ppp/pppconfig.cpp14
-rw-r--r--noncore/settings/networksettings/ppp/pppdata.cpp14
-rw-r--r--noncore/settings/networksettings/ppp/pppmodule.cpp2
-rw-r--r--noncore/settings/networksettings/wlan/config.in4
-rw-r--r--noncore/settings/networksettings/wlan/infoimp.cpp5
-rw-r--r--noncore/settings/networksettings/wlan/wextensions.cpp9
-rw-r--r--noncore/settings/networksettings/wlan/wlan.pro3
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp2.cpp26
-rw-r--r--noncore/settings/networksettings/wlan/wlanmodule.cpp2
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 @@
1CONFIG = qt warn_on quick-app 1CONFIG = qt warn_on quick-app
2HEADERS = mainwindowimp.h addconnectionimp.h defaultmodule.h module.h 2HEADERS = mainwindowimp.h addconnectionimp.h defaultmodule.h module.h
3SOURCES = main.cpp mainwindowimp.cpp addconnectionimp.cpp 3SOURCES = main.cpp mainwindowimp.cpp addconnectionimp.cpp
4INCLUDEPATH += $(OPIEDIR)/include interfaces/ . 4INCLUDEPATH += $(OPIEDIR)/include interfaces/ .
5DEPENDPATH += $(OPIEDIR)/include interfaces/ wlan/ ppp/ 5DEPENDPATH += $(OPIEDIR)/include interfaces/ wlan/ ppp/
6LIBS += -lqpe -L$(OPIEDIR)/plugins/networksettings -Linterfaces/ -linterfaces -lopiecore2 -lopieui2 6LIBS += -lqpe -L$(OPIEDIR)/plugins/networksettings -Linterfaces/ -linterfaces -lopiecore2 -lopieui2
7INTERFACES = mainwindow.ui addconnection.ui 7INTERFACES = mainwindow.ui addconnection.ui
8TARGET = networksettings 8TARGET = networksettings
9 9
10 10
11
12include ( $(OPIEDIR)/include.pro ) 11include ( $(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>
35using 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
50void parseargs(char* buf, char** args); 52void parseargs(char* buf, char** args);
51 53
52 54
53AccountWidget::AccountWidget( PPPData *pd, QWidget *parent, const char *name, WFlags f ) 55AccountWidget::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
85void AccountWidget::slotListBoxSelect(int idx) 87void 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
94void AccountWidget::edit() 96void 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
109void AccountWidget::create() 111void 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
138void AccountWidget::copy() 140void 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
159void AccountWidget::remove() 161void 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
183int AccountWidget::doTab() 185int 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>
8using 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 */
13static const char* const image0_data[] = { 17static 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
35AuthWidget::AuthWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name ) 39AuthWidget::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
121bool AuthWidget::check() 125bool 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
133void AuthWidget::save() 137void 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
143void AuthWidget::authChanged( const QString &authStr ) 147void 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
161void AuthWidget::showUsernamePassword( bool show ) 165void 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
180void AuthWidget::showScriptWindow( bool show ) 184void 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
193void AuthWidget::toggleEchoMode( bool t ) 197void 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>
29using 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
76QString old_hostname; 77QString old_hostname;
77bool modified_hostname; 78bool modified_hostname;
78 79
79 80
80ConnectWidget::ConnectWidget(InterfacePPP *ifp, QWidget *parent, const char *name) 81ConnectWidget::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
168ConnectWidget::~ConnectWidget() { 169ConnectWidget::~ConnectWidget() {
169} 170}
170 171
171 172
172void ConnectWidget::preinit() { 173void 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
180void ConnectWidget::init() { 181void 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
268void ConnectWidget::timerEvent(QTimerEvent *) { 269void 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>
37using 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
53void parseargs(char* buf, char** args); 55void parseargs(char* buf, char** args);
54 56
55DevicesWidget::DevicesWidget( InterfacePPP* ip, QWidget *parent, const char *name, WFlags f ) 57DevicesWidget::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
87void DevicesWidget::slotListBoxSelect(int idx) { 89void 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
94void DevicesWidget::edit() { 96void 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
106void DevicesWidget::create() { 108void 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
130void DevicesWidget::copy() { 132void 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
148void DevicesWidget::remove() { 150void 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
170int DevicesWidget::doTab(){ 172int 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>
37using 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
52ModemWidget::ModemWidget( PPPData *pd, QWidget *parent, const char *name ) 54ModemWidget::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
267ModemWidget::~ModemWidget() 269ModemWidget::~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
331bool ModemWidget::save() 333bool 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
350ModemWidget2::ModemWidget2( PPPData *pd, InterfacePPP *ip, QWidget *parent, 352ModemWidget2::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>
7using 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 */
20InterfaceInformationPPP::InterfaceInformationPPP(QWidget *parent, const char *name, Interface *i, WFlags f) 24InterfaceInformationPPP::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>
8using 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
12InterfacePPP::InterfacePPP(QObject *parent, const char *name, bool status) 16InterfacePPP::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
20PPPData* InterfacePPP::data()const 24PPPData* 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
31Modem* InterfacePPP::modem()const 35Modem* 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
40bool InterfacePPP::refresh() 44bool 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
54void InterfacePPP::start() 58void 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
149void InterfacePPP::stop() 153void 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
160void InterfacePPP::save() 164void InterfacePPP::save()
161{ 165{
162 data()->save(); 166 data()->save();
163 emit updateInterface((Interface*) this); 167 emit updateInterface((Interface*) this);
164} 168}
165QString InterfacePPP::pppDev()const { 169QString InterfacePPP::pppDev()const {
166 return modem()->pppDevice(); 170 return modem()->pppDevice();
167} 171}
168pid_t InterfacePPP::pppPID()const{ 172pid_t InterfacePPP::pppPID()const{
169 return modem()->pppPID(); 173 return modem()->pppPID();
170} 174}
171void InterfacePPP::setPPPDpid( pid_t pid) { 175void 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>
29using 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
62static sigjmp_buf jmp_buffer; 67static sigjmp_buf jmp_buffer;
63 68
64//Modem *Modem::modem = 0; 69//Modem *Modem::modem = 0;
65 70
66 71
67const char* pppdPath() { 72const 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
93Modem::Modem( PPPData* pd ) 98Modem::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
107Modem::~Modem() 112Modem::~Modem()
108{ 113{
109} 114}
110 115
111 116
112speed_t Modem::modemspeed() { 117speed_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
161bool Modem::opentty() { 166bool 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
256bool Modem::closetty() { 261bool 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
276void Modem::readtty(int) { 281void 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
292void Modem::notify(const QObject *receiver, const char *member) { 297void 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
298void Modem::stop() { 303void Modem::stop() {
299 disconnect(SIGNAL(charWaiting(unsigned char))); 304 disconnect(SIGNAL(charWaiting(unsigned char)));
300 stopNotifier(); 305 stopNotifier();
301} 306}
302 307
303 308
304void Modem::startNotifier() { 309void 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
318void Modem::stopNotifier() { 323void 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
329void Modem::flush() { 334void 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
335bool Modem::writeChar(unsigned char c) { 340bool 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
349bool Modem::writeLine(const char *buf) { 354bool 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
379bool Modem::hangup() { 384bool 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#
3TEMPLATE = lib 1TEMPLATE = lib
4#CONFIG += qt plugin warn_on
5 CONFIG += qt plugin warn_on 2 CONFIG += qt plugin warn_on
6DESTDIR = $(OPIEDIR)/plugins/networksettings 3DESTDIR = $(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
11LIBS += -lqpe -L../interfaces/ -linterfaces 8LIBS += -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
17include ( $(OPIEDIR)/include.pro ) 14include ( $(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>
12using namespace Opie::Core;
13
14/* QT */
15#include <qlayout.h>
16#include <qmessagebox.h>
17#include <qtabwidget.h>
18
15PPPConfigWidget::PPPConfigWidget( InterfacePPP* iface, QWidget *parent, 19PPPConfigWidget::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
54PPPConfigWidget::~PPPConfigWidget() 58PPPConfigWidget::~PPPConfigWidget()
55{ 59{
56 60
57} 61}
58 62
59void PPPConfigWidget::accept() 63void 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
71void PPPConfigWidget::reject() 75void 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>
33using 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
43PPPData::PPPData() 45PPPData::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
79Config PPPData::config() 81Config 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//
87void PPPData::save() 89void 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//
135void PPPData::cancel() { 137void 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
142QString PPPData::readConfig(const QString &group, const QString &key, 144QString 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
155int PPPData::readNumConfig(const QString &group, const QString &key, 157int 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
174bool PPPData::readListConfig(const QString &group, const QString &key, 176bool 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
197void PPPData::writeConfig(const QString &group, const QString &key, 199void 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
207void PPPData::writeConfig(const QString &group, const QString &key, int value) 209void 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
217void PPPData::writeListConfig(const QString &group, const QString &key, 219void 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//
232QString PPPData::password(){ 234QString 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
238void PPPData::setPassword(const QString &pw) { 240void PPPData::setPassword(const QString &pw) {
239 passwd = pw; 241 passwd = pw;
240} 242}
241 243
242 244
243const QString PPPData::defaultAccount() { 245const QString PPPData::defaultAccount() {
244 return readConfig(GENERAL_GRP, DEFAULTACCOUNT_KEY); 246 return readConfig(GENERAL_GRP, DEFAULTACCOUNT_KEY);
245} 247}
246 248
247 249
248void PPPData::setDefaultAccount(const QString &n) { 250void 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
256bool PPPData::get_show_clock_on_caption() { 258bool 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
261void PPPData::set_show_clock_on_caption(bool set) { 263void 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
266bool PPPData::get_xserver_exit_disconnect() { 268bool 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
271void PPPData::setPPPDebug(bool set) { 273void 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
276bool PPPData::getPPPDebug() { 278bool 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
281void PPPData::set_xserver_exit_disconnect(bool set) { 283void 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
286bool PPPData::quit_on_disconnect() { 288bool 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
291void PPPData::set_quit_on_disconnect(bool set) { 293void 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
296bool PPPData::get_show_log_window() { 298bool 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
301void PPPData::set_show_log_window(bool set) { 303void 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
306bool PPPData::automatic_redial() { 308bool 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
311void PPPData::set_automatic_redial(bool set) { 313void 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
336QString PPPData::pppdVersion() { 338QString 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
340bool PPPData::pppdVersionMin(int ver, int mod, int patch) { 342bool 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
347int PPPData::pppdTimeout() { 349int 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
352void PPPData::setpppdTimeout(int n) { 354void PPPData::setpppdTimeout(int n) {
353 writeConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, n); 355 writeConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, n);
354} 356}
355 357
356 358
357const QString PPPData::modemDevice() { 359const 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
381bool PPPData::setModemDevice(const QString &n) { 383bool 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
388const QString PPPData::flowcontrol() { 390const QString PPPData::flowcontrol() {
389 return readConfig(modemGroup(), FLOWCONTROL_KEY, "CRTSCTS"); 391 return readConfig(modemGroup(), FLOWCONTROL_KEY, "CRTSCTS");
390} 392}
391 393
392 394
393void PPPData::setFlowcontrol(const QString &n) { 395void PPPData::setFlowcontrol(const QString &n) {
394 writeConfig(modemGroup(), FLOWCONTROL_KEY, n); 396 writeConfig(modemGroup(), FLOWCONTROL_KEY, n);
395} 397}
396 398
397 399
398const QString PPPData::speed() { 400const 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
409void PPPData::setSpeed(const QString &n) { 411void 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
415void PPPData::setUseCDLine(const int n) { 417void PPPData::setUseCDLine(const int n) {
416 writeConfig(modemGroup(),USECDLINE_KEY,n); 418 writeConfig(modemGroup(),USECDLINE_KEY,n);
417} 419}
418 420
419 421
420int PPPData::UseCDLine() { 422int 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>
13using 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
20namespace 22namespace
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 */
54PPPModule::PPPModule() : Module() 56PPPModule::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 */
89PPPModule::~PPPModule() 91PPPModule::~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 */
113void PPPModule::setProfile(const QString &newProfile) 115void 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 */
123QString PPPModule::getPixmapName(Interface* ) 125QString 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 */
133bool PPPModule::isOwner(Interface *i) 135bool 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 */
142QWidget *PPPModule::configure(Interface *i) 144QWidget *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 */
155QWidget *PPPModule::information(Interface *i) 157QWidget *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 */
168QList<Interface> PPPModule::getInterfaces() 170QList<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 */
181Interface *PPPModule::addNewInterface(const QString &newInterface) 183Interface *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 */
208bool PPPModule::remove(Interface *i) 210bool PPPModule::remove(Interface *i)
209{ 211{
210 return list.remove(i); 212 return list.remove(i);
211} 213}
212 214
213void PPPModule::possibleNewInterfaces(QMap<QString, QString> &newIfaces) 215void 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
221namespace 223namespace
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>
6using 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 */
12WlanInfoImp::WlanInfoImp( QWidget* parent, const char* name, WFlags fl): WlanInfo(parent, name, fl){ 17WlanInfoImp::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 */
28void WlanInfoImp::update(){ 33void 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>
5using 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 */
19WExtensions::WExtensions(QString interfaceName): hasWirelessExtensions(false), interface(interfaceName) { 26WExtensions::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 */
44QString WExtensions::station(){ 51QString 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 */
61QString WExtensions::essid(){ 68QString 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 */
74QString WExtensions::mode(){ 81QString 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 */
86double WExtensions::frequency(){ 93double 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 */
98int WExtensions::channel(){ 105int 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 */
123double WExtensions::rate(){ 130double 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 */
136QString WExtensions::ap(){ 143QString 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 */
160bool WExtensions::stats(int &signal, int &noise, int &quality){ 167bool 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#
2TEMPLATE = lib 1TEMPLATE = lib
3#TEMPLATE = app
4CONFIG += qt plugin warn_on 2CONFIG += qt plugin warn_on
5 #CONFIG += qt plugin warn_on
6DESTDIR = $(OPIEDIR)/plugins/networksettings 3DESTDIR = $(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
11LIBS += -lqpe -L../interfaces/ -linterfaces -lopiecore2 -lopienet2 8LIBS += -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
18wirelessopts { 15wirelessopts {
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
28include ( $(OPIEDIR)/include.pro ) 25include ( $(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>
16using namespace Opie::Core;
17using 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 */
45using namespace Opie::Net;
46using namespace Opie::Core;
47WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), interface(i), currentProfile("*") { 49WLANImp::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
66WLANImp::~WLANImp() { 68WLANImp::~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 */
73void WLANImp::setProfile(const QString &profile){ 75void WLANImp::setProfile(const QString &profile){
74 interfaceSetup->setProfile(profile); 76 interfaceSetup->setProfile(profile);
75 parseOpts(); 77 parseOpts();
76} 78}
77 79
78void WLANImp::parseOpts() { 80void 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
116void WLANImp::parseKeyStr(QString keystr) { 118void 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 */
200void WLANImp::accept() { 202void 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
228void WLANImp::writeOpts() { 230void 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
307void WLANImp::rescanNeighbourhood() 309void 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
423void WLANImp::handlePacket( OPacket* p ) 425void 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>
11using 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 */
24WLANModule::WLANModule() 26WLANModule::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 */
33WLANModule::~WLANModule(){ 35WLANModule::~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 */
43void WLANModule::setProfile(const QString &newProfile){ 45void 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 */
52QString WLANModule::getPixmapName(Interface* ){ 54QString 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 */
61bool WLANModule::isOwner(Interface *i){ 63bool 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 */
75QWidget *WLANModule::configure(Interface *i){ 77QWidget *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 */
85QWidget *WLANModule::information(Interface *i){ 87QWidget *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 */
98QList<Interface> WLANModule::getInterfaces(){ 100QList<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 */
108Interface *WLANModule::addNewInterface(const QString &){ 110Interface *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 */
118bool WLANModule::remove(Interface*){ 120bool 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
123void WLANModule::receive(const QCString &param, const QByteArray &arg) 125void WLANModule::receive(const QCString &param, 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
241QWidget *WLANModule::getInfo( Interface *i) 243QWidget *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