summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/settings/security/security.cpp17
-rw-r--r--core/settings/security/securitybase.ui27
2 files changed, 38 insertions, 6 deletions
diff --git a/core/settings/security/security.cpp b/core/settings/security/security.cpp
index 75a181b..c4726b3 100644
--- a/core/settings/security/security.cpp
+++ b/core/settings/security/security.cpp
@@ -1,307 +1,314 @@
1/********************************************************************** 1/**********************************************************************
2 ** Copyright (C) 2000 Trolltech AS. All rights reserved. 2 ** Copyright (C) 2000 Trolltech AS. All rights reserved.
3 ** 3 **
4 ** This file is part of Qtopia Environment. 4 ** This file is part of Qtopia Environment.
5 ** 5 **
6 ** This file may be distributed and/or modified under the terms of the 6 ** This file may be distributed and/or modified under the terms of the
7 ** GNU General Public License version 2 as published by the Free Software 7 ** GNU General Public License version 2 as published by the Free Software
8 ** Foundation and appearing in the file LICENSE.GPL included in the 8 ** Foundation and appearing in the file LICENSE.GPL included in the
9 ** packaging of this file. 9 ** packaging of this file.
10 ** 10 **
11 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13 ** 13 **
14 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 14 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
15 ** 15 **
16 ** Contact info@trolltech.com if any conditions of this licensing are 16 ** Contact info@trolltech.com if any conditions of this licensing are
17 ** not clear to you. 17 ** not clear to you.
18 ** 18 **
19 **********************************************************************/ 19 **********************************************************************/
20#include "security.h" 20#include "security.h"
21 21
22#include <qpe/qpeapplication.h> 22#include <qpe/qpeapplication.h>
23#include <qpe/config.h> 23#include <qpe/config.h>
24#include <qpe/password.h> 24#include <qpe/password.h>
25#include <qpe/qpedialog.h> 25#include <qpe/qpedialog.h>
26#include <qpe/qcopenvelope_qws.h>
26 27
27#include <qcheckbox.h> 28#include <qcheckbox.h>
28#include <qpushbutton.h> 29#include <qpushbutton.h>
29#include <qcombobox.h> 30#include <qcombobox.h>
30#include <qmessagebox.h> 31#include <qmessagebox.h>
31#include <qfile.h> 32#include <qfile.h>
32#include <qlistview.h> 33#include <qlistview.h>
33#include <qtextstream.h> 34#include <qtextstream.h>
34 35
35 Security::Security( QWidget* parent, const char* name, WFlags fl ) 36 Security::Security( QWidget* parent, const char* name, WFlags fl )
36: SecurityBase( parent, name, TRUE, fl ) 37: SecurityBase( parent, name, TRUE, fl )
37{ 38{
38 valid=FALSE; 39 valid=FALSE;
39 Config cfg("Security"); 40 Config cfg("Security");
40 cfg.setGroup("Passcode"); 41 cfg.setGroup("Passcode");
41 passcode = cfg.readEntry("passcode"); 42 passcode = cfg.readEntry("passcode");
42 passcode_poweron->setChecked(cfg.readBoolEntry("passcode_poweron",FALSE)); 43 passcode_poweron->setChecked(cfg.readBoolEntry("passcode_poweron",FALSE));
43 cfg.setGroup("Sync"); 44 cfg.setGroup("Sync");
44 int auth_peer = cfg.readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24 45 int auth_peer = cfg.readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24
45 int auth_peer_bits = cfg.readNumEntry("auth_peer_bits",24); 46 int auth_peer_bits = cfg.readNumEntry("auth_peer_bits",24);
46 selectNet(auth_peer,auth_peer_bits); 47 selectNet(auth_peer,auth_peer_bits);
47 connect(syncnet, SIGNAL(textChanged(const QString&)), 48 connect(syncnet, SIGNAL(textChanged(const QString&)),
48 this, SLOT(setSyncNet(const QString&))); 49 this, SLOT(setSyncNet(const QString&)));
49 50
50 /* 51 /*
51 cfg.setGroup("Remote"); 52 cfg.setGroup("Remote");
52 if ( telnetAvailable() ) 53 if ( telnetAvailable() )
53 telnet->setChecked(cfg.readEntry("allow_telnet")); 54 telnet->setChecked(cfg.readEntry("allow_telnet"));
54 else 55 else
55 telnet->hide(); 56 telnet->hide();
56 57
57 if ( sshAvailable() ) 58 if ( sshAvailable() )
58 ssh->setChecked(cfg.readEntry("allow_ssh")); 59 ssh->setChecked(cfg.readEntry("allow_ssh"));
59 else 60 else
60 ssh->hide(); 61 ssh->hide();
61 */ 62 */
62 63
63 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf"; 64 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
64 Config loginCfg(configFile,Config::File); 65 Config loginCfg(configFile,Config::File);
65 66
66 loginCfg.setGroup("General"); 67 loginCfg.setGroup("General");
67 autoLoginName=loginCfg.readEntry("AutoLogin",""); 68 autoLoginName=loginCfg.readEntry("AutoLogin","");
68 69
69 if (autoLoginName.stripWhiteSpace().isEmpty()) { 70 if (autoLoginName.stripWhiteSpace().isEmpty()) {
70 autoLogin=false; 71 autoLogin=false;
71 } else { 72 } else {
72 autoLogin=true; 73 autoLogin=true;
73 } 74 }
74 75
76 cfg.setGroup("SyncMode");
77 int mode = cfg.readNumEntry("Mode",2); // Default to Sharp
78 syncModeCombo->setCurrentItem( mode - 1 );
75 79
76 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool))); 80 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool)));
77 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int))); 81 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int)));
78 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode())); 82 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode()));
79 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode())); 83 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode()));
80 84
81 loadUsers(); 85 loadUsers();
82 updateGUI(); 86 updateGUI();
83 87
84 dl = new QPEDialogListener(this); 88 dl = new QPEDialogListener(this);
85 showMaximized(); 89 showMaximized();
86} 90}
87 91
88Security::~Security() 92Security::~Security()
89{ 93{
90} 94}
91 95
92 96
93void Security::updateGUI() 97void Security::updateGUI()
94{ 98{
95 bool empty = passcode.isEmpty(); 99 bool empty = passcode.isEmpty();
96 100
97 changepasscode->setText( empty ? tr("Set passcode" ) 101 changepasscode->setText( empty ? tr("Set passcode" )
98 : tr("Change passcode" ) ); 102 : tr("Change passcode" ) );
99 passcode_poweron->setEnabled( !empty ); 103 passcode_poweron->setEnabled( !empty );
100 clearpasscode->setEnabled( !empty ); 104 clearpasscode->setEnabled( !empty );
101 105
102 autologinToggle->setChecked(autoLogin); 106 autologinToggle->setChecked(autoLogin);
103 userlist->setEnabled(autoLogin); 107 userlist->setEnabled(autoLogin);
104 108
105} 109}
106 110
107 111
108void Security::show() 112void Security::show()
109{ 113{
110 valid=FALSE; 114 valid=FALSE;
111 setEnabled(FALSE); 115 setEnabled(FALSE);
112 SecurityBase::show(); 116 SecurityBase::show();
113 if ( passcode.isEmpty() ) { 117 if ( passcode.isEmpty() ) {
114 // could insist... 118 // could insist...
115 //changePassCode(); 119 //changePassCode();
116 //if ( passcode.isEmpty() ) 120 //if ( passcode.isEmpty() )
117 //reject(); 121 //reject();
118 } else { 122 } else {
119 QString pc = enterPassCode(tr("Enter passcode")); 123 QString pc = enterPassCode(tr("Enter passcode"));
120 if ( pc != passcode ) { 124 if ( pc != passcode ) {
121 QMessageBox::critical(this, tr("Passcode incorrect"), 125 QMessageBox::critical(this, tr("Passcode incorrect"),
122 tr("The passcode entered is incorrect.\nAccess denied")); 126 tr("The passcode entered is incorrect.\nAccess denied"));
123 reject(); 127 reject();
124 return; 128 return;
125 } 129 }
126 } 130 }
127 setEnabled(TRUE); 131 setEnabled(TRUE);
128 valid=TRUE; 132 valid=TRUE;
129} 133}
130 134
131void Security::accept() 135void Security::accept()
132{ 136{
133 applySecurity(); 137 applySecurity();
134 QDialog::accept(); 138 QDialog::accept();
139 QCopEnvelope env("QPE/System", "securityChanged()" );
135} 140}
136 141
137void Security::done(int r) 142void Security::done(int r)
138{ 143{
139 QDialog::done(r); 144 QDialog::done(r);
140 close(); 145 close();
141} 146}
142 147
143void Security::selectNet(int auth_peer,int auth_peer_bits) 148void Security::selectNet(int auth_peer,int auth_peer_bits)
144{ 149{
145 QString sn; 150 QString sn;
146 if ( auth_peer_bits == 0 && auth_peer == 0 ) { 151 if ( auth_peer_bits == 0 && auth_peer == 0 ) {
147 sn = tr("Any"); 152 sn = tr("Any");
148 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) { 153 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) {
149 sn = tr("None"); 154 sn = tr("None");
150 } else { 155 } else {
151 sn = 156 sn =
152 QString::number((auth_peer>>24)&0xff) + "." 157 QString::number((auth_peer>>24)&0xff) + "."
153 + QString::number((auth_peer>>16)&0xff) + "." 158 + QString::number((auth_peer>>16)&0xff) + "."
154 + QString::number((auth_peer>>8)&0xff) + "." 159 + QString::number((auth_peer>>8)&0xff) + "."
155 + QString::number((auth_peer>>0)&0xff) + "/" 160 + QString::number((auth_peer>>0)&0xff) + "/"
156 + QString::number(auth_peer_bits); 161 + QString::number(auth_peer_bits);
157 } 162 }
158 for (int i=0; i<syncnet->count(); i++) { 163 for (int i=0; i<syncnet->count(); i++) {
159 if ( syncnet->text(i).left(sn.length()) == sn ) { 164 if ( syncnet->text(i).left(sn.length()) == sn ) {
160 syncnet->setCurrentItem(i); 165 syncnet->setCurrentItem(i);
161 return; 166 return;
162 } 167 }
163 } 168 }
164 qDebug("No match for \"%s\"",sn.latin1()); 169 qDebug("No match for \"%s\"",sn.latin1());
165} 170}
166 171
167void Security::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits) 172void Security::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits)
168{ 173{
169 auth_peer=0; 174 auth_peer=0;
170 if ( sn == tr("Any") ) { 175 if ( sn == tr("Any") ) {
171 auth_peer = 0; 176 auth_peer = 0;
172 auth_peer_bits = 0; 177 auth_peer_bits = 0;
173 } else if ( sn == tr("None") ) { 178 } else if ( sn == tr("None") ) {
174 auth_peer = 0; 179 auth_peer = 0;
175 auth_peer_bits = 32; 180 auth_peer_bits = 32;
176 } else { 181 } else {
177 int x=0; 182 int x=0;
178 for (int i=0; i<4; i++) { 183 for (int i=0; i<4; i++) {
179 int nx = sn.find(QChar(i==3 ? '/' : '.'),x); 184 int nx = sn.find(QChar(i==3 ? '/' : '.'),x);
180 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt(); 185 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt();
181 x = nx+1; 186 x = nx+1;
182 } 187 }
183 uint n = (uint)sn.find(' ',x)-x; 188 uint n = (uint)sn.find(' ',x)-x;
184 auth_peer_bits = sn.mid(x,n).toInt(); 189 auth_peer_bits = sn.mid(x,n).toInt();
185 } 190 }
186} 191}
187 192
188void Security::loadUsers ( void ) 193void Security::loadUsers ( void )
189{ 194{
190 QFile passwd("/etc/passwd"); 195 QFile passwd("/etc/passwd");
191 if ( passwd.open(IO_ReadOnly) ) { 196 if ( passwd.open(IO_ReadOnly) ) {
192 QTextStream t( &passwd ); 197 QTextStream t( &passwd );
193 QString s; 198 QString s;
194 QStringList account; 199 QStringList account;
195 while ( !t.eof() ) { 200 while ( !t.eof() ) {
196 account = QStringList::split(':',t.readLine()); 201 account = QStringList::split(':',t.readLine());
197 202
198 // Hide disabled accounts 203 // Hide disabled accounts
199 if (*account.at(1)!="*") { 204 if (*account.at(1)!="*") {
200 205
201 userlist->insertItem(*account.at(0)); 206 userlist->insertItem(*account.at(0));
202 // Highlight this item if it is set to autologinToggle 207 // Highlight this item if it is set to autologinToggle
203 if ( *account.at(0) == autoLoginName) 208 if ( *account.at(0) == autoLoginName)
204 userlist->setCurrentItem(userlist->count()-1); 209 userlist->setCurrentItem(userlist->count()-1);
205 } 210 }
206 } 211 }
207 passwd.close(); 212 passwd.close();
208 } 213 }
209 214
210} 215}
211void Security::toggleAutoLogin(bool val) 216void Security::toggleAutoLogin(bool val)
212{ 217{
213 autoLogin=val; 218 autoLogin=val;
214 userlist->setEnabled(val); 219 userlist->setEnabled(val);
215 if (!autoLogin) 220 if (!autoLogin)
216 autoLoginName=userlist->currentText(); 221 autoLoginName=userlist->currentText();
217} 222}
218void Security::setSyncNet(const QString& sn) 223void Security::setSyncNet(const QString& sn)
219{ 224{
220 int auth_peer,auth_peer_bits; 225 int auth_peer,auth_peer_bits;
221 parseNet(sn,auth_peer,auth_peer_bits); 226 parseNet(sn,auth_peer,auth_peer_bits);
222 selectNet(auth_peer,auth_peer_bits); 227 selectNet(auth_peer,auth_peer_bits);
223} 228}
224 229
225void Security::applySecurity() 230void Security::applySecurity()
226{ 231{
227 if ( valid ) { 232 if ( valid ) {
228 Config cfg("Security"); 233 Config cfg("Security");
229 cfg.setGroup("Passcode"); 234 cfg.setGroup("Passcode");
230 cfg.writeEntry("passcode",passcode); 235 cfg.writeEntry("passcode",passcode);
231 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked()); 236 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked());
232 cfg.setGroup("Sync"); 237 cfg.setGroup("Sync");
233 int auth_peer=0; 238 int auth_peer=0;
234 int auth_peer_bits; 239 int auth_peer_bits;
235 QString sn = syncnet->currentText(); 240 QString sn = syncnet->currentText();
236 parseNet(sn,auth_peer,auth_peer_bits); 241 parseNet(sn,auth_peer,auth_peer_bits);
237 cfg.writeEntry("auth_peer",auth_peer); 242 cfg.writeEntry("auth_peer",auth_peer);
238 cfg.writeEntry("auth_peer_bits",auth_peer_bits); 243 cfg.writeEntry("auth_peer_bits",auth_peer_bits);
239 /* 244 /*
240 cfg.setGroup("Remote"); 245 cfg.setGroup("Remote");
241 if ( telnetAvailable() ) 246 if ( telnetAvailable() )
242 cfg.writeEntry("allow_telnet",telnet->isChecked()); 247 cfg.writeEntry("allow_telnet",telnet->isChecked());
243 if ( sshAvailable() ) 248 if ( sshAvailable() )
244 cfg.writeEntry("allow_ssh",ssh->isChecked()); 249 cfg.writeEntry("allow_ssh",ssh->isChecked());
245 // ### write ssh/telnet sys config files 250 // ### write ssh/telnet sys config files
246 */ 251 */
247 252
248 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf"; 253 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
249 Config loginCfg(configFile,Config::File); 254 Config loginCfg(configFile,Config::File);
250 loginCfg.setGroup("General"); 255 loginCfg.setGroup("General");
251 256
252 if (autoLogin) { 257 if (autoLogin) {
253 loginCfg.writeEntry("AutoLogin",autoLoginName); 258 loginCfg.writeEntry("AutoLogin",autoLoginName);
254 } else { 259 } else {
255 loginCfg.removeEntry("AutoLogin"); 260 loginCfg.removeEntry("AutoLogin");
256 } 261 }
257 262
263 cfg.setGroup("SyncMode");
264 cfg.writeEntry("Mode", syncModeCombo->currentItem()+1 );
258 } 265 }
259} 266}
260 267
261void Security::changeLoginName( int idx ) 268void Security::changeLoginName( int idx )
262{ 269{
263 autoLoginName = userlist->text(idx);; 270 autoLoginName = userlist->text(idx);;
264 updateGUI(); 271 updateGUI();
265} 272}
266 273
267void Security::changePassCode() 274void Security::changePassCode()
268{ 275{
269 QString new1; 276 QString new1;
270 QString new2; 277 QString new2;
271 278
272 do { 279 do {
273 new1 = enterPassCode(tr("Enter new passcode")); 280 new1 = enterPassCode(tr("Enter new passcode"));
274 if ( new1.isNull() ) 281 if ( new1.isNull() )
275 return; 282 return;
276 new2 = enterPassCode(tr("Re-enter new passcode")); 283 new2 = enterPassCode(tr("Re-enter new passcode"));
277 if ( new2.isNull() ) 284 if ( new2.isNull() )
278 return; 285 return;
279 } while (new1 != new2); 286 } while (new1 != new2);
280 287
281 passcode = new1; 288 passcode = new1;
282 updateGUI(); 289 updateGUI();
283} 290}
284 291
285void Security::clearPassCode() 292void Security::clearPassCode()
286{ 293{
287 passcode = QString::null; 294 passcode = QString::null;
288 updateGUI(); 295 updateGUI();
289} 296}
290 297
291 298
292QString Security::enterPassCode(const QString& prompt) 299QString Security::enterPassCode(const QString& prompt)
293{ 300{
294 return Password::getPassword(prompt); 301 return Password::getPassword(prompt);
295} 302}
296 303
297bool Security::telnetAvailable() const 304bool Security::telnetAvailable() const
298{ 305{
299 // ### not implemented 306 // ### not implemented
300 return FALSE; 307 return FALSE;
301} 308}
302 309
303bool Security::sshAvailable() const 310bool Security::sshAvailable() const
304{ 311{
305 // ### not implemented 312 // ### not implemented
306 return FALSE; 313 return FALSE;
307} 314}
diff --git a/core/settings/security/securitybase.ui b/core/settings/security/securitybase.ui
index da25f39..73290e5 100644
--- a/core/settings/security/securitybase.ui
+++ b/core/settings/security/securitybase.ui
@@ -1,412 +1,437 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>SecurityBase</class> 2<class>SecurityBase</class>
3<widget> 3<widget>
4 <class>QDialog</class> 4 <class>QDialog</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>SecurityBase</cstring> 7 <cstring>SecurityBase</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>329</width> 14 <width>339</width>
15 <height>483</height> 15 <height>483</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Security Settings</string> 20 <string>Security Settings</string>
21 </property> 21 </property>
22 <property> 22 <property>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property> 25 <property>
26 <name>layoutSpacing</name> 26 <name>layoutSpacing</name>
27 </property> 27 </property>
28 <vbox> 28 <vbox>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
31 <number>0</number> 31 <number>0</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>0</number> 35 <number>0</number>
36 </property> 36 </property>
37 <widget> 37 <widget>
38 <class>QTabWidget</class> 38 <class>QTabWidget</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>TabWidget2</cstring> 41 <cstring>TabWidget2</cstring>
42 </property> 42 </property>
43 <property> 43 <property>
44 <name>layoutMargin</name> 44 <name>layoutMargin</name>
45 </property> 45 </property>
46 <widget> 46 <widget>
47 <class>QWidget</class> 47 <class>QWidget</class>
48 <property stdset="1"> 48 <property stdset="1">
49 <name>name</name> 49 <name>name</name>
50 <cstring>tab</cstring> 50 <cstring>tab</cstring>
51 </property> 51 </property>
52 <attribute> 52 <attribute>
53 <name>title</name> 53 <name>title</name>
54 <string>Passcode</string> 54 <string>Passcode</string>
55 </attribute> 55 </attribute>
56 <vbox> 56 <vbox>
57 <property stdset="1"> 57 <property stdset="1">
58 <name>margin</name> 58 <name>margin</name>
59 <number>6</number> 59 <number>6</number>
60 </property> 60 </property>
61 <property stdset="1"> 61 <property stdset="1">
62 <name>spacing</name> 62 <name>spacing</name>
63 <number>6</number> 63 <number>6</number>
64 </property> 64 </property>
65 <widget> 65 <widget>
66 <class>QGroupBox</class> 66 <class>QGroupBox</class>
67 <property stdset="1"> 67 <property stdset="1">
68 <name>name</name> 68 <name>name</name>
69 <cstring>GroupBox4</cstring> 69 <cstring>GroupBox4</cstring>
70 </property> 70 </property>
71 <property stdset="1"> 71 <property stdset="1">
72 <name>title</name> 72 <name>title</name>
73 <string>Passcode</string> 73 <string>Passcode</string>
74 </property> 74 </property>
75 <vbox> 75 <vbox>
76 <property stdset="1"> 76 <property stdset="1">
77 <name>margin</name> 77 <name>margin</name>
78 <number>11</number> 78 <number>11</number>
79 </property> 79 </property>
80 <property stdset="1"> 80 <property stdset="1">
81 <name>spacing</name> 81 <name>spacing</name>
82 <number>6</number> 82 <number>6</number>
83 </property> 83 </property>
84 <widget> 84 <widget>
85 <class>QLayoutWidget</class> 85 <class>QLayoutWidget</class>
86 <property stdset="1"> 86 <property stdset="1">
87 <name>name</name> 87 <name>name</name>
88 <cstring>Layout1</cstring> 88 <cstring>Layout1</cstring>
89 </property> 89 </property>
90 <property> 90 <property>
91 <name>layoutSpacing</name> 91 <name>layoutSpacing</name>
92 </property> 92 </property>
93 <hbox> 93 <hbox>
94 <property stdset="1"> 94 <property stdset="1">
95 <name>margin</name> 95 <name>margin</name>
96 <number>0</number> 96 <number>0</number>
97 </property> 97 </property>
98 <property stdset="1"> 98 <property stdset="1">
99 <name>spacing</name> 99 <name>spacing</name>
100 <number>-1</number> 100 <number>-1</number>
101 </property> 101 </property>
102 <widget> 102 <widget>
103 <class>QPushButton</class> 103 <class>QPushButton</class>
104 <property stdset="1"> 104 <property stdset="1">
105 <name>name</name> 105 <name>name</name>
106 <cstring>changepasscode</cstring> 106 <cstring>changepasscode</cstring>
107 </property> 107 </property>
108 <property stdset="1"> 108 <property stdset="1">
109 <name>text</name> 109 <name>text</name>
110 <string>Change passcode</string> 110 <string>Change passcode</string>
111 </property> 111 </property>
112 </widget> 112 </widget>
113 <widget> 113 <widget>
114 <class>QPushButton</class> 114 <class>QPushButton</class>
115 <property stdset="1"> 115 <property stdset="1">
116 <name>name</name> 116 <name>name</name>
117 <cstring>clearpasscode</cstring> 117 <cstring>clearpasscode</cstring>
118 </property> 118 </property>
119 <property stdset="1"> 119 <property stdset="1">
120 <name>text</name> 120 <name>text</name>
121 <string>Clear passcode</string> 121 <string>Clear passcode</string>
122 </property> 122 </property>
123 </widget> 123 </widget>
124 </hbox> 124 </hbox>
125 </widget> 125 </widget>
126 <widget> 126 <widget>
127 <class>QCheckBox</class> 127 <class>QCheckBox</class>
128 <property stdset="1"> 128 <property stdset="1">
129 <name>name</name> 129 <name>name</name>
130 <cstring>passcode_poweron</cstring> 130 <cstring>passcode_poweron</cstring>
131 </property> 131 </property>
132 <property stdset="1"> 132 <property stdset="1">
133 <name>text</name> 133 <name>text</name>
134 <string>Require pass code at power-on</string> 134 <string>Require pass code at power-on</string>
135 </property> 135 </property>
136 </widget> 136 </widget>
137 <widget> 137 <widget>
138 <class>QLabel</class> 138 <class>QLabel</class>
139 <property stdset="1"> 139 <property stdset="1">
140 <name>name</name> 140 <name>name</name>
141 <cstring>TextLabel1</cstring> 141 <cstring>TextLabel1</cstring>
142 </property> 142 </property>
143 <property stdset="1"> 143 <property stdset="1">
144 <name>sizePolicy</name> 144 <name>sizePolicy</name>
145 <sizepolicy> 145 <sizepolicy>
146 <hsizetype>5</hsizetype> 146 <hsizetype>5</hsizetype>
147 <vsizetype>7</vsizetype> 147 <vsizetype>7</vsizetype>
148 </sizepolicy> 148 </sizepolicy>
149 </property> 149 </property>
150 <property stdset="1"> 150 <property stdset="1">
151 <name>text</name> 151 <name>text</name>
152 <string>&lt;P&gt;Pass code protection provides a minimal level of protection from casual access to this device.</string> 152 <string>&lt;P&gt;Pass code protection provides a minimal level of protection from casual access to this device.</string>
153 </property> 153 </property>
154 <property stdset="1"> 154 <property stdset="1">
155 <name>textFormat</name> 155 <name>textFormat</name>
156 <enum>RichText</enum> 156 <enum>RichText</enum>
157 </property> 157 </property>
158 <property stdset="1"> 158 <property stdset="1">
159 <name>alignment</name> 159 <name>alignment</name>
160 <set>AlignTop|AlignLeft</set> 160 <set>AlignTop|AlignLeft</set>
161 </property> 161 </property>
162 <property> 162 <property>
163 <name>vAlign</name> 163 <name>vAlign</name>
164 </property> 164 </property>
165 </widget> 165 </widget>
166 </vbox> 166 </vbox>
167 </widget> 167 </widget>
168 <spacer> 168 <spacer>
169 <property> 169 <property>
170 <name>name</name> 170 <name>name</name>
171 <cstring>Spacer3</cstring> 171 <cstring>Spacer3</cstring>
172 </property> 172 </property>
173 <property stdset="1"> 173 <property stdset="1">
174 <name>orientation</name> 174 <name>orientation</name>
175 <enum>Vertical</enum> 175 <enum>Vertical</enum>
176 </property> 176 </property>
177 <property stdset="1"> 177 <property stdset="1">
178 <name>sizeType</name> 178 <name>sizeType</name>
179 <enum>Expanding</enum> 179 <enum>Expanding</enum>
180 </property> 180 </property>
181 <property> 181 <property>
182 <name>sizeHint</name> 182 <name>sizeHint</name>
183 <size> 183 <size>
184 <width>20</width> 184 <width>20</width>
185 <height>20</height> 185 <height>20</height>
186 </size> 186 </size>
187 </property> 187 </property>
188 </spacer> 188 </spacer>
189 </vbox> 189 </vbox>
190 </widget> 190 </widget>
191 <widget> 191 <widget>
192 <class>QWidget</class> 192 <class>QWidget</class>
193 <property stdset="1"> 193 <property stdset="1">
194 <name>name</name> 194 <name>name</name>
195 <cstring>tab</cstring> 195 <cstring>tab</cstring>
196 </property> 196 </property>
197 <attribute> 197 <attribute>
198 <name>title</name> 198 <name>title</name>
199 <string>Login</string> 199 <string>Login</string>
200 </attribute> 200 </attribute>
201 <vbox> 201 <vbox>
202 <property stdset="1"> 202 <property stdset="1">
203 <name>margin</name> 203 <name>margin</name>
204 <number>6</number> 204 <number>6</number>
205 </property> 205 </property>
206 <property stdset="1"> 206 <property stdset="1">
207 <name>spacing</name> 207 <name>spacing</name>
208 <number>6</number> 208 <number>6</number>
209 </property> 209 </property>
210 <widget> 210 <widget>
211 <class>QGroupBox</class> 211 <class>QGroupBox</class>
212 <property stdset="1"> 212 <property stdset="1">
213 <name>name</name> 213 <name>name</name>
214 <cstring>GroupBox3</cstring> 214 <cstring>GroupBox3</cstring>
215 </property> 215 </property>
216 <property stdset="1"> 216 <property stdset="1">
217 <name>title</name> 217 <name>title</name>
218 <string>Login</string> 218 <string>Login</string>
219 </property> 219 </property>
220 <vbox> 220 <vbox>
221 <property stdset="1"> 221 <property stdset="1">
222 <name>margin</name> 222 <name>margin</name>
223 <number>11</number> 223 <number>11</number>
224 </property> 224 </property>
225 <property stdset="1"> 225 <property stdset="1">
226 <name>spacing</name> 226 <name>spacing</name>
227 <number>6</number> 227 <number>6</number>
228 </property> 228 </property>
229 <widget> 229 <widget>
230 <class>QCheckBox</class> 230 <class>QCheckBox</class>
231 <property stdset="1"> 231 <property stdset="1">
232 <name>name</name> 232 <name>name</name>
233 <cstring>autologinToggle</cstring> 233 <cstring>autologinToggle</cstring>
234 </property> 234 </property>
235 <property stdset="1"> 235 <property stdset="1">
236 <name>text</name> 236 <name>text</name>
237 <string>Login Automatically</string> 237 <string>Login Automatically</string>
238 </property> 238 </property>
239 </widget> 239 </widget>
240 <widget> 240 <widget>
241 <class>QComboBox</class> 241 <class>QComboBox</class>
242 <property stdset="1"> 242 <property stdset="1">
243 <name>name</name> 243 <name>name</name>
244 <cstring>userlist</cstring> 244 <cstring>userlist</cstring>
245 </property> 245 </property>
246 </widget> 246 </widget>
247 </vbox> 247 </vbox>
248 </widget> 248 </widget>
249 <spacer> 249 <spacer>
250 <property> 250 <property>
251 <name>name</name> 251 <name>name</name>
252 <cstring>Spacer2</cstring> 252 <cstring>Spacer2</cstring>
253 </property> 253 </property>
254 <property stdset="1"> 254 <property stdset="1">
255 <name>orientation</name> 255 <name>orientation</name>
256 <enum>Vertical</enum> 256 <enum>Vertical</enum>
257 </property> 257 </property>
258 <property stdset="1"> 258 <property stdset="1">
259 <name>sizeType</name> 259 <name>sizeType</name>
260 <enum>Expanding</enum> 260 <enum>Expanding</enum>
261 </property> 261 </property>
262 <property> 262 <property>
263 <name>sizeHint</name> 263 <name>sizeHint</name>
264 <size> 264 <size>
265 <width>20</width> 265 <width>20</width>
266 <height>20</height> 266 <height>20</height>
267 </size> 267 </size>
268 </property> 268 </property>
269 </spacer> 269 </spacer>
270 </vbox> 270 </vbox>
271 </widget> 271 </widget>
272 <widget> 272 <widget>
273 <class>QWidget</class> 273 <class>QWidget</class>
274 <property stdset="1"> 274 <property stdset="1">
275 <name>name</name> 275 <name>name</name>
276 <cstring>tab</cstring> 276 <cstring>tab</cstring>
277 </property> 277 </property>
278 <attribute> 278 <attribute>
279 <name>title</name> 279 <name>title</name>
280 <string>Sync</string> 280 <string>Sync</string>
281 </attribute> 281 </attribute>
282 <vbox> 282 <vbox>
283 <property stdset="1"> 283 <property stdset="1">
284 <name>margin</name> 284 <name>margin</name>
285 <number>6</number> 285 <number>6</number>
286 </property> 286 </property>
287 <property stdset="1"> 287 <property stdset="1">
288 <name>spacing</name> 288 <name>spacing</name>
289 <number>6</number> 289 <number>6</number>
290 </property> 290 </property>
291 <widget> 291 <widget>
292 <class>QGroupBox</class> 292 <class>QGroupBox</class>
293 <property stdset="1"> 293 <property stdset="1">
294 <name>name</name> 294 <name>name</name>
295 <cstring>GroupBox2</cstring> 295 <cstring>GroupBox2</cstring>
296 </property> 296 </property>
297 <property stdset="1"> 297 <property stdset="1">
298 <name>title</name> 298 <name>title</name>
299 <string>Sync</string> 299 <string>Sync</string>
300 </property> 300 </property>
301 <vbox> 301 <vbox>
302 <property stdset="1"> 302 <property stdset="1">
303 <name>margin</name> 303 <name>margin</name>
304 <number>11</number> 304 <number>11</number>
305 </property> 305 </property>
306 <property stdset="1"> 306 <property stdset="1">
307 <name>spacing</name> 307 <name>spacing</name>
308 <number>6</number> 308 <number>6</number>
309 </property> 309 </property>
310 <widget> 310 <widget>
311 <class>QLabel</class> 311 <class>QLabel</class>
312 <property stdset="1"> 312 <property stdset="1">
313 <name>name</name> 313 <name>name</name>
314 <cstring>TextLabel1_2</cstring> 314 <cstring>TextLabel1_2</cstring>
315 </property> 315 </property>
316 <property stdset="1"> 316 <property stdset="1">
317 <name>text</name> 317 <name>text</name>
318 <string>Accept sync from network:</string> 318 <string>Accept sync from network:</string>
319 </property> 319 </property>
320 <property stdset="1"> 320 <property stdset="1">
321 <name>textFormat</name> 321 <name>textFormat</name>
322 <enum>RichText</enum> 322 <enum>RichText</enum>
323 </property> 323 </property>
324 </widget> 324 </widget>
325 <widget> 325 <widget>
326 <class>QComboBox</class> 326 <class>QComboBox</class>
327 <item> 327 <item>
328 <property> 328 <property>
329 <name>text</name> 329 <name>text</name>
330 <string>192.168.129.0/24 (default)</string> 330 <string>192.168.129.0/24 (default)</string>
331 </property> 331 </property>
332 </item> 332 </item>
333 <item> 333 <item>
334 <property> 334 <property>
335 <name>text</name> 335 <name>text</name>
336 <string>192.168.1.0/24</string> 336 <string>192.168.1.0/24</string>
337 </property> 337 </property>
338 </item> 338 </item>
339 <item> 339 <item>
340 <property> 340 <property>
341 <name>text</name> 341 <name>text</name>
342 <string>192.168.0.0/16</string> 342 <string>192.168.0.0/16</string>
343 </property> 343 </property>
344 </item> 344 </item>
345 <item> 345 <item>
346 <property> 346 <property>
347 <name>text</name> 347 <name>text</name>
348 <string>172.16.0.0/12</string> 348 <string>172.16.0.0/12</string>
349 </property> 349 </property>
350 </item> 350 </item>
351 <item> 351 <item>
352 <property> 352 <property>
353 <name>text</name> 353 <name>text</name>
354 <string>10.0.0.0/8</string> 354 <string>10.0.0.0/8</string>
355 </property> 355 </property>
356 </item> 356 </item>
357 <item> 357 <item>
358 <property> 358 <property>
359 <name>text</name> 359 <name>text</name>
360 <string>1.0.0.0/8</string> 360 <string>1.0.0.0/8</string>
361 </property> 361 </property>
362 </item> 362 </item>
363 <item> 363 <item>
364 <property> 364 <property>
365 <name>text</name> 365 <name>text</name>
366 <string>Any</string> 366 <string>Any</string>
367 </property> 367 </property>
368 </item> 368 </item>
369 <item> 369 <item>
370 <property> 370 <property>
371 <name>text</name> 371 <name>text</name>
372 <string>None</string> 372 <string>None</string>
373 </property> 373 </property>
374 </item> 374 </item>
375 <property stdset="1"> 375 <property stdset="1">
376 <name>name</name> 376 <name>name</name>
377 <cstring>syncnet</cstring> 377 <cstring>syncnet</cstring>
378 </property> 378 </property>
379 <property stdset="1"> 379 <property stdset="1">
380 <name>editable</name> 380 <name>editable</name>
381 <bool>true</bool> 381 <bool>true</bool>
382 </property> 382 </property>
383 </widget> 383 </widget>
384 <widget>
385 <class>QComboBox</class>
386 <item>
387 <property>
388 <name>text</name>
389 <string>Qtopia 1.7</string>
390 </property>
391 </item>
392 <item>
393 <property>
394 <name>text</name>
395 <string>Opie 1.0</string>
396 </property>
397 </item>
398 <item>
399 <property>
400 <name>text</name>
401 <string>Both</string>
402 </property>
403 </item>
404 <property stdset="1">
405 <name>name</name>
406 <cstring>syncModeCombo</cstring>
407 </property>
408 </widget>
384 </vbox> 409 </vbox>
385 </widget> 410 </widget>
386 <spacer> 411 <spacer>
387 <property> 412 <property>
388 <name>name</name> 413 <name>name</name>
389 <cstring>Spacer1</cstring> 414 <cstring>Spacer1</cstring>
390 </property> 415 </property>
391 <property stdset="1"> 416 <property stdset="1">
392 <name>orientation</name> 417 <name>orientation</name>
393 <enum>Vertical</enum> 418 <enum>Vertical</enum>
394 </property> 419 </property>
395 <property stdset="1"> 420 <property stdset="1">
396 <name>sizeType</name> 421 <name>sizeType</name>
397 <enum>Expanding</enum> 422 <enum>Expanding</enum>
398 </property> 423 </property>
399 <property> 424 <property>
400 <name>sizeHint</name> 425 <name>sizeHint</name>
401 <size> 426 <size>
402 <width>20</width> 427 <width>20</width>
403 <height>20</height> 428 <height>20</height>
404 </size> 429 </size>
405 </property> 430 </property>
406 </spacer> 431 </spacer>
407 </vbox> 432 </vbox>
408 </widget> 433 </widget>
409 </widget> 434 </widget>
410 </vbox> 435 </vbox>
411</widget> 436</widget>
412</UI> 437</UI>