summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/securityplugins/pin/pin.cpp67
-rw-r--r--noncore/securityplugins/pin/pinDialogBase.ui775
2 files changed, 366 insertions, 476 deletions
diff --git a/noncore/securityplugins/pin/pin.cpp b/noncore/securityplugins/pin/pin.cpp
index 2accb9c..f1c52c5 100644
--- a/noncore/securityplugins/pin/pin.cpp
+++ b/noncore/securityplugins/pin/pin.cpp
@@ -1,328 +1,369 @@
1/** 1/**
2 * \note Taken from opie-security and libqpe password.cpp, and modified for Opie multiauth by Clement Seveillac 2 * \note Taken from opie-security and libqpe password.cpp, and modified for Opie multiauth by Clement Seveillac
3 */ 3 */
4/********************************************************************** 4/**********************************************************************
5 ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 5 ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
6 ** 6 **
7 ** This file is part of the Qtopia Environment. 7 ** This file is part of the Qtopia Environment.
8 ** 8 **
9 ** This file may be distributed and/or modified under the terms of the 9 ** This file may be distributed and/or modified under the terms of the
10 ** GNU General Public License version 2 as published by the Free Software 10 ** GNU General Public License version 2 as published by the Free Software
11 ** Foundation and appearing in the file LICENSE.GPL included in the 11 ** Foundation and appearing in the file LICENSE.GPL included in the
12 ** packaging of this file. 12 ** packaging of this file.
13 ** 13 **
14 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 14 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
15 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 15 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 ** 16 **
17 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 17 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
18 ** 18 **
19 ** Contact info@trolltech.com if any conditions of this licensing are 19 ** Contact info@trolltech.com if any conditions of this licensing are
20 ** not clear to you. 20 ** not clear to you.
21 ** 21 **
22 **********************************************************************/ 22 **********************************************************************/
23 23
24#include "pin.h" 24#include "pin.h"
25#include "pinDialogBase.h" 25#include "pinDialogBase.h"
26/* OPIE */ 26/* OPIE */
27#include <opie2/odebug.h> 27#include <opie2/odebug.h>
28#include <opie2/oapplication.h> 28#include <opie2/oapplication.h>
29/* QT */ 29/* QT */
30#include <qpe/config.h> 30#include <qpe/config.h>
31#include <qlabel.h> 31#include <qlabel.h>
32#include <qlineedit.h> 32#include <qlineedit.h>
33#include <qtextview.h> 33#include <qtextview.h>
34#include <qstring.h> 34#include <qstring.h>
35#include <qdialog.h> 35#include <qdialog.h>
36/* UNIX */ 36/* UNIX */
37#include <unistd.h> 37#include <unistd.h>
38#include <stdlib.h> 38#include <stdlib.h>
39#include <time.h> 39#include <time.h>
40 40
41extern "C" char *crypt(const char *key, const char *salt); 41extern "C" char *crypt(const char *key, const char *salt);
42 42
43using Opie::Security::MultiauthConfigWidget; 43using Opie::Security::MultiauthConfigWidget;
44using Opie::Security::MultiauthPluginObject; 44using Opie::Security::MultiauthPluginObject;
45 45
46/// set to TRUE when we press the 'Skip' button 46/// set to TRUE when we press the 'Skip' button
47static bool isSkip = FALSE; 47static bool isSkip = FALSE;
48 48
49/// PIN input graphical widget. 49/// PIN input graphical widget.
50/** 50/**
51 * Inherits the PinDialogBase class defined originally in pinDialogBase.ui interface file. 51 * Inherits the PinDialogBase class defined originally in pinDialogBase.ui interface file.
52 * \sa PinDlg and PinDialog (the class generated from the .ui file) 52 * \sa PinDlg and PinDialog (the class generated from the .ui file)
53 * It comes from the original PIN locking code in Opie : 53 * It comes from the original PIN locking code in Opie :
54 * \sa http://dudu.dyn.2-h.org/opiedoxydoc/library_2password_8cpp-source.html 54 * \sa http://dudu.dyn.2-h.org/opiedoxydoc/library_2password_8cpp-source.html
55 */ 55 */
56class PinDialog : public PinDialogBase 56class PinDialog : public PinDialogBase
57{ 57{
58 Q_OBJECT 58 Q_OBJECT
59 59
60 public: 60 public:
61 PinDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 61 PinDialog( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
62 ~PinDialog(); 62 ~PinDialog();
63 63
64 void clear(); 64 void clear();
65 void setPrompt( const QString& ); 65 void setPrompt( const QString& );
66 66
67signals: 67signals:
68 /// emitted when we press the Enter button 68 /// emitted when we press the Enter button
69 void passwordEntered( const QString& ); 69 void passwordEntered( const QString& );
70 /// emitted when we press the Skip button 70 /// emitted when we press the Skip button
71 void skip(); 71 void skip();
72 72
73 protected: 73 protected:
74 bool eventFilter( QObject*, QEvent* ); 74 bool eventFilter( QObject*, QEvent* );
75 75
76 private: 76 private:
77 void input( QString ); 77 void input( QString );
78 friend class PinPlugin; 78 friend class PinPlugin;
79 QString text; 79 QString text;
80
81 private slots:
82 void slotInput();
83 void slotSkip();
84 void slotOK();
85 void slotBackspace();
80}; 86};
81 87
82 88
83/// Constructs a PinDialog widget, and initializes things 89/// Constructs a PinDialog widget, and initializes things
84PinDialog::PinDialog( QWidget* parent, const char* name, WFlags fl ) 90PinDialog::PinDialog( QWidget* parent, const char* name, WFlags fl )
85 : PinDialogBase( parent, name, fl ) 91 : PinDialogBase( parent, name, fl )
86{ 92{
87 QRect desk = oApp->desktop()->geometry(); 93 QRect desk = oApp->desktop()->geometry();
88 94
89 if ( desk.width() < 220 ) { 95 if ( desk.width() < 220 ) {
90 QFont f( font() ); 96 QFont f( font() );
91 f.setPointSize( 18 ); 97 f.setPointSize( 18 );
92 setFont( f ); 98 setFont( f );
93 f.setPointSize( 12 ); 99 f.setPointSize( 12 );
94 prompt->setFont( f ); 100 prompt->setFont( f );
95 } 101 }
96 102
103 connect ( button_0, SIGNAL( clicked()), SLOT( slotInput()));
104 connect ( button_1, SIGNAL( clicked()), SLOT( slotInput()));
105 connect ( button_2, SIGNAL( clicked()), SLOT( slotInput()));
106 connect ( button_3, SIGNAL( clicked()), SLOT( slotInput()));
107 connect ( button_4, SIGNAL( clicked()), SLOT( slotInput()));
108 connect ( button_5, SIGNAL( clicked()), SLOT( slotInput()));
109 connect ( button_6, SIGNAL( clicked()), SLOT( slotInput()));
110 connect ( button_7, SIGNAL( clicked()), SLOT( slotInput()));
111 connect ( button_8, SIGNAL( clicked()), SLOT( slotInput()));
112 connect ( button_9, SIGNAL( clicked()), SLOT( slotInput()));
113 connect ( button_Skip, SIGNAL( clicked()), SLOT( slotSkip()));
114 connect ( button_OK, SIGNAL( clicked()), SLOT( slotOK()));
115
97 button_0->installEventFilter( this ); 116 button_0->installEventFilter( this );
98 button_1->installEventFilter( this ); 117 button_1->installEventFilter( this );
99 button_2->installEventFilter( this ); 118 button_2->installEventFilter( this );
100 button_3->installEventFilter( this ); 119 button_3->installEventFilter( this );
101 button_4->installEventFilter( this ); 120 button_4->installEventFilter( this );
102 button_5->installEventFilter( this ); 121 button_5->installEventFilter( this );
103 button_6->installEventFilter( this ); 122 button_6->installEventFilter( this );
104 button_7->installEventFilter( this ); 123 button_7->installEventFilter( this );
105 button_8->installEventFilter( this ); 124 button_8->installEventFilter( this );
106 button_9->installEventFilter( this ); 125 button_9->installEventFilter( this );
107 button_Skip->installEventFilter( this ); 126 button_Skip->installEventFilter( this );
108 button_OK->installEventFilter( this ); 127 button_OK->installEventFilter( this );
109 setFocus(); 128 button_OK->setFocus();
110} 129}
111 130
112/// nothing to do 131/// nothing to do
113PinDialog::~PinDialog() 132PinDialog::~PinDialog()
114{ 133{
115 // no need to delete child widgets, Qt does it all for us 134 // no need to delete child widgets, Qt does it all for us
116} 135}
117 136
118/// Record the pressed numbers, and the Skip and Enter commands 137/// Handle keyboard events
119bool PinDialog::eventFilter( QObject*o, QEvent*e ) 138bool PinDialog::eventFilter( QObject*o, QEvent*e )
120{ 139{
121 if ( e->type() == QEvent::MouseButtonRelease ) { 140 if(e->type() == QEvent::KeyPress) {
122 if ( o == button_OK ) { 141 switch(((QKeyEvent *)e)->key()) {
123 emit passwordEntered( text ); 142 case Key_0...Key_9:
124 } 143 input(((QKeyEvent *)e)->text());
125 else if ( o == button_Skip ) { 144 return TRUE;
126 isSkip = TRUE; 145 case Key_Backspace:
127 emit skip(); 146 slotBackspace();
128 } 147 return TRUE;
129 else {
130 QLabel *l = (QLabel*)o;
131 input(l->text());
132 } 148 }
133 } 149 }
134 return FALSE; 150 return FALSE;
135} 151}
136 152
153void PinDialog::slotInput()
154{
155 QPushButton *l = (QPushButton*)sender();
156 input(l->text().stripWhiteSpace());
157}
158
159void PinDialog::slotSkip()
160{
161 isSkip = TRUE;
162 emit skip();
163}
164
165void PinDialog::slotOK()
166{
167 emit passwordEntered( text );
168}
169
170void PinDialog::slotBackspace()
171{
172 if(text.length() > 0) {
173 text.truncate( text.length() - 1 );
174 display->setText( text );
175 }
176}
177
137void PinDialog::input( QString c ) 178void PinDialog::input( QString c )
138{ 179{
139 text += c; 180 text += c;
140 display->setText( text ); 181 display->setText( text );
141} 182}
142 183
143void PinDialog::setPrompt( const QString& s ) 184void PinDialog::setPrompt( const QString& s )
144{ 185{
145 prompt->setText( s ); 186 prompt->setText( s );
146} 187}
147 188
148void PinDialog::clear() 189void PinDialog::clear()
149{ 190{
150 text = ""; 191 text = "";
151 input(""); 192 input("");
152} 193}
153 194
154/// PIN dialog 195/// PIN dialog
155/** 196/**
156 * Dialog containing the PinDialog widget (which asks for a PIN) and interfacing with its I/O. 197 * Dialog containing the PinDialog widget (which asks for a PIN) and interfacing with its I/O.
157 * \sa PinDialog 198 * \sa PinDialog
158 */ 199 */
159class PinDlg : public QDialog 200class PinDlg : public QDialog
160{ 201{
161 public: 202 public:
162 PinDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE ) 203 PinDlg( QWidget *parent, const char * name, bool modal, bool fullscreen = FALSE )
163 : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ), 204 : QDialog( parent, name, modal, fullscreen ? WStyle_NoBorder | WStyle_Customize | WStyle_StaysOnTop : 0 ),
164 modl(modal) 205 modl(modal)
165 { 206 {
166 pinD = new PinDialog( this ); 207 pinD = new PinDialog( this );
167 208
168 if ( fullscreen ) { 209 if ( fullscreen ) {
169 QRect desk = oApp->desktop()->geometry(); 210 QRect desk = oApp->desktop()->geometry();
170 setGeometry( 0, 0, desk.width(), desk.height() ); 211 setGeometry( 0, 0, desk.width(), desk.height() );
171 } 212 }
172 213
173 connect( pinD, SIGNAL(passwordEntered(const QString&)), 214 connect( pinD, SIGNAL(passwordEntered(const QString&)),
174 this, SLOT(accept()) ); 215 this, SLOT(accept()) );
175 connect( pinD, SIGNAL(skip()), this, SLOT(accept()) ); 216 connect( pinD, SIGNAL(skip()), this, SLOT(accept()) );
176 } 217 }
177 218
178 void resizeEvent( QResizeEvent * ) 219 void resizeEvent( QResizeEvent * )
179 { 220 {
180 pinD->resize( size() ); 221 pinD->resize( size() );
181 } 222 }
182 223
183 void reset() 224 void reset()
184 { 225 {
185 pinD->clear(); 226 pinD->clear();
186 } 227 }
187 228
188 /// Slot receiving the Skip or Enter commands, and closing the QDialog 229 /// Slot receiving the Skip or Enter commands, and closing the QDialog
189 void accept() 230 void accept()
190 { 231 {
191 if ( !modl ) 232 if ( !modl )
192 oApp->exit_loop(); 233 oApp->exit_loop();
193 QDialog::accept(); 234 QDialog::accept();
194 } 235 }
195 236
196 PinDialog *pinD; 237 PinDialog *pinD;
197 bool modl; 238 bool modl;
198}; 239};
199 240
200/// generate a fairly random salt and return the PIN hashed by crypt() 241/// generate a fairly random salt and return the PIN hashed by crypt()
201QString PinPlugin::encrypt(const QString& pin) 242QString PinPlugin::encrypt(const QString& pin)
202{ 243{
203 // the salt must begin by "$1$" if we want crypt() to use MD5 244 // the salt must begin by "$1$" if we want crypt() to use MD5
204 char salt[] = "$1$........"; 245 char salt[] = "$1$........";
205 const char *const seedchars = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 246 const char *const seedchars = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
206 // initialize the random generator 247 // initialize the random generator
207 srandom(time(0)); 248 srandom(time(0));
208 int i; 249 int i;
209 for(i = 0; i < 8; i++) 250 for(i = 0; i < 8; i++)
210 { 251 {
211 // initialize the salt with random() 252 // initialize the salt with random()
212 salt[i+3] = seedchars[random() % 64]; 253 salt[i+3] = seedchars[random() % 64];
213 } 254 }
214 return QString::fromLatin1(crypt(pin.latin1(),salt)); 255 return QString::fromLatin1(crypt(pin.latin1(),salt));
215} 256}
216 257
217/// verify a PIN against its crypt() hash 258/// verify a PIN against its crypt() hash
218/** 259/**
219 * \return true if the \a pin matches its \a hash 260 * \return true if the \a pin matches its \a hash
220 */ 261 */
221bool PinPlugin::verify(const QString& pin, const QString& hash) 262bool PinPlugin::verify(const QString& pin, const QString& hash)
222{ 263{
223 // the hash, which contains the salt (8 chars after "$1$"), can be given as the salt 264 // the hash, which contains the salt (8 chars after "$1$"), can be given as the salt
224 return hash.compare( QString::fromLatin1(crypt( pin.latin1(), hash.latin1() )) ) == 0 ? true : false; 265 return hash.compare( QString::fromLatin1(crypt( pin.latin1(), hash.latin1() )) ) == 0 ? true : false;
225} 266}
226 267
227/// Displays a PinDialog and returns the typed in PIN 268/// Displays a PinDialog and returns the typed in PIN
228/** 269/**
229 * The returned value is QString::null if the user cancels the operation, 270 * The returned value is QString::null if the user cancels the operation,
230 * or the empty string if the user enters no password (but confirms the 271 * or the empty string if the user enters no password (but confirms the
231 * dialog). 272 * dialog).
232 */ 273 */
233QString PinPlugin::getPIN( const QString& prompt ) 274QString PinPlugin::getPIN( const QString& prompt )
234{ 275{
235 PinDlg pd(0,0,TRUE); 276 PinDlg pd(0,0,TRUE);
236 pd.pinD->setPrompt( prompt ); 277 pd.pinD->setPrompt( prompt );
237 278
238 pd.showMaximized(); 279 pd.showMaximized();
239 int r = pd.exec(); 280 int r = pd.exec();
240 281
241 if ( r == QDialog::Accepted ) { 282 if ( r == QDialog::Accepted ) {
242 if (pd.pinD->text.isEmpty()) 283 if (pd.pinD->text.isEmpty())
243 return ""; 284 return "";
244 else 285 else
245 return pd.pinD->text; 286 return pd.pinD->text;
246 } 287 }
247 else 288 else
248 return QString::null; 289 return QString::null;
249} 290}
250 291
251/// Displays the PIN dialog and returns a hash of the typed in PIN 292/// Displays the PIN dialog and returns a hash of the typed in PIN
252/** 293/**
253 * \return the hashed ( =one-way encrypted) PIN typed in by the user 294 * \return the hashed ( =one-way encrypted) PIN typed in by the user
254 * \param prompt the prompt to display in the PinDialog 295 * \param prompt the prompt to display in the PinDialog
255 */ 296 */
256QString PinPlugin::getCryptedPIN( const QString& prompt ) 297QString PinPlugin::getCryptedPIN( const QString& prompt )
257{ 298{
258 return encrypt(getPIN(prompt)); 299 return encrypt(getPIN(prompt));
259} 300}
260 301
261/// Displays the PIN dialog, asks 2 times for a new PIN, saves it if entered two times 302/// Displays the PIN dialog, asks 2 times for a new PIN, saves it if entered two times
262/** 303/**
263 * writes nothing if we enter nothing the first time 304 * writes nothing if we enter nothing the first time
264 */ 305 */
265void PinPlugin::changePIN() 306void PinPlugin::changePIN()
266{ 307{
267 QString new1, new2; 308 QString new1, new2;
268 do { 309 do {
269 new1 = getPIN(QObject::tr("Enter new PIN")); 310 new1 = getPIN(QObject::tr("Enter new PIN"));
270 if ( new1.isNull() ) 311 if ( new1.isNull() )
271 return; 312 return;
272 new2 = getPIN(QObject::tr("Re-enter new PIN")); 313 new2 = getPIN(QObject::tr("Re-enter new PIN"));
273 } while (new1 != new2); 314 } while (new1 != new2);
274 315
275 odebug << "writing new PIN hash in Security.conf" << oendl; 316 odebug << "writing new PIN hash in Security.conf" << oendl;
276 Config cfg("Security"); 317 Config cfg("Security");
277 cfg.setGroup("PinPlugin"); 318 cfg.setGroup("PinPlugin");
278 cfg.writeEntry("hashedPIN", encrypt(new1)); 319 cfg.writeEntry("hashedPIN", encrypt(new1));
279} 320}
280 321
281/// Removes the PIN hashed value in the config file 322/// Removes the PIN hashed value in the config file
282void PinPlugin::clearPIN() 323void PinPlugin::clearPIN()
283{ 324{
284 Config cfg("Security"); 325 Config cfg("Security");
285 cfg.setGroup("PinPlugin"); 326 cfg.setGroup("PinPlugin");
286 cfg.removeEntry("hashedPIN"); 327 cfg.removeEntry("hashedPIN");
287} 328}
288 329
289/// Prompt, fullscreen, for the user's PIN and compare it to the stored one. 330/// Prompt, fullscreen, for the user's PIN and compare it to the stored one.
290/** 331/**
291 * \return the result code, as a MultiauthPluginObject::authResult object 332 * \return the result code, as a MultiauthPluginObject::authResult object
292 */ 333 */
293int PinPlugin::authenticate() 334int PinPlugin::authenticate()
294{ 335{
295 // reset skip (if we ran Pin two times in a row, skipping the first time, it must be put to 0 again) 336 // reset skip (if we ran Pin two times in a row, skipping the first time, it must be put to 0 again)
296 isSkip = FALSE; 337 isSkip = FALSE;
297 // fetch value in config 338 // fetch value in config
298 Config cfg("Security"); 339 Config cfg("Security");
299 cfg.setGroup("PinPlugin"); 340 cfg.setGroup("PinPlugin");
300 QString hashedPin = cfg.readEntry("hashedPIN"); 341 QString hashedPin = cfg.readEntry("hashedPIN");
301 if (!hashedPin.isEmpty()) 342 if (!hashedPin.isEmpty())
302 { 343 {
303 // prompt for the PIN in a fullscreen modal dialog 344 // prompt for the PIN in a fullscreen modal dialog
304 PinDlg pd(0,0,TRUE,TRUE); 345 PinDlg pd(0,0,TRUE,TRUE);
305 pd.reset(); 346 pd.reset();
306 pd.exec(); 347 pd.exec();
307 348
308 // analyse the result 349 // analyse the result
309 if (isSkip == TRUE) 350 if (isSkip == TRUE)
310 return MultiauthPluginObject::Skip; 351 return MultiauthPluginObject::Skip;
311 else if (verify(pd.pinD->text, hashedPin)) 352 else if (verify(pd.pinD->text, hashedPin))
312 return MultiauthPluginObject::Success; 353 return MultiauthPluginObject::Success;
313 else 354 else
314 return MultiauthPluginObject::Failure; 355 return MultiauthPluginObject::Failure;
315 } 356 }
316 owarn << "No PIN has been defined! We consider it as a successful authentication though." << oendl; 357 owarn << "No PIN has been defined! We consider it as a successful authentication though." << oendl;
317 return MultiauthPluginObject::Success; 358 return MultiauthPluginObject::Success;
318} 359}
319 360
320/// Standard c'tor 361/// Standard c'tor
321PinPlugin::PinPlugin() : MultiauthPluginObject(), m_pinW(0) { 362PinPlugin::PinPlugin() : MultiauthPluginObject(), m_pinW(0) {
322} 363}
323 364
324/// deletes m_pinW if we need to 365/// deletes m_pinW if we need to
325PinPlugin::~PinPlugin() { 366PinPlugin::~PinPlugin() {
326 if (m_pinW != 0) 367 if (m_pinW != 0)
327 delete m_pinW; 368 delete m_pinW;
328} 369}
diff --git a/noncore/securityplugins/pin/pinDialogBase.ui b/noncore/securityplugins/pin/pinDialogBase.ui
index f84587b..7fde488 100644
--- a/noncore/securityplugins/pin/pinDialogBase.ui
+++ b/noncore/securityplugins/pin/pinDialogBase.ui
@@ -1,1142 +1,991 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>PinDialogBase</class> 2<class>PinDialogBase</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>PinDialogBase</cstring> 7 <cstring>PinDialogBase</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>231</width> 14 <width>257</width>
15 <height>293</height> 15 <height>280</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>font</name> 19 <name>font</name>
20 <font> 20 <font>
21 <pointsize>24</pointsize> 21 <pointsize>24</pointsize>
22 </font> 22 </font>
23 </property> 23 </property>
24 <property stdset="1"> 24 <property stdset="1">
25 <name>caption</name> 25 <name>caption</name>
26 <string>PinDialogBase</string> 26 <string>PinDialogBase</string>
27 </property> 27 </property>
28 <grid> 28 <grid>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
31 <number>11</number> 31 <number>11</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>6</number> 35 <number>6</number>
36 </property> 36 </property>
37 <widget row="3" column="0" > 37 <widget row="4" column="0" >
38 <class>QLabel</class> 38 <class>QPushButton</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>button_4</cstring> 41 <cstring>button_7</cstring>
42 </property> 42 </property>
43 <property stdset="1"> 43 <property stdset="1">
44 <name>sizePolicy</name> 44 <name>sizePolicy</name>
45 <sizepolicy> 45 <sizepolicy>
46 <hsizetype>5</hsizetype> 46 <hsizetype>7</hsizetype>
47 <vsizetype>5</vsizetype> 47 <vsizetype>7</vsizetype>
48 </sizepolicy> 48 </sizepolicy>
49 </property> 49 </property>
50 <property stdset="1"> 50 <property stdset="1">
51 <name>frameShape</name> 51 <name>text</name>
52 <enum>Box</enum> 52 <string>7</string>
53 </property> 53 </property>
54 </widget>
55 <widget row="2" column="0" >
56 <class>QPushButton</class>
54 <property stdset="1"> 57 <property stdset="1">
55 <name>frameShadow</name> 58 <name>name</name>
56 <enum>Raised</enum> 59 <cstring>button_1</cstring>
60 </property>
61 <property stdset="1">
62 <name>sizePolicy</name>
63 <sizepolicy>
64 <hsizetype>7</hsizetype>
65 <vsizetype>7</vsizetype>
66 </sizepolicy>
57 </property> 67 </property>
58 <property stdset="1"> 68 <property stdset="1">
59 <name>text</name> 69 <name>text</name>
60 <string>4</string> 70 <string>1</string>
61 </property> 71 </property>
72 </widget>
73 <widget row="2" column="2" >
74 <class>QPushButton</class>
62 <property stdset="1"> 75 <property stdset="1">
63 <name>alignment</name> 76 <name>name</name>
64 <set>AlignCenter</set> 77 <cstring>button_3</cstring>
65 </property> 78 </property>
66 <property> 79 <property stdset="1">
67 <name>hAlign</name> 80 <name>sizePolicy</name>
81 <sizepolicy>
82 <hsizetype>7</hsizetype>
83 <vsizetype>7</vsizetype>
84 </sizepolicy>
85 </property>
86 <property stdset="1">
87 <name>text</name>
88 <string>3</string>
68 </property> 89 </property>
69 </widget> 90 </widget>
70 <widget row="4" column="0" > 91 <widget row="4" column="2" >
71 <class>QLabel</class> 92 <class>QPushButton</class>
72 <property stdset="1"> 93 <property stdset="1">
73 <name>name</name> 94 <name>name</name>
74 <cstring>button_7</cstring> 95 <cstring>button_9</cstring>
75 </property> 96 </property>
76 <property stdset="1"> 97 <property stdset="1">
77 <name>sizePolicy</name> 98 <name>sizePolicy</name>
78 <sizepolicy> 99 <sizepolicy>
79 <hsizetype>5</hsizetype> 100 <hsizetype>7</hsizetype>
80 <vsizetype>5</vsizetype> 101 <vsizetype>7</vsizetype>
81 </sizepolicy> 102 </sizepolicy>
82 </property> 103 </property>
83 <property stdset="1"> 104 <property stdset="1">
84 <name>frameShape</name> 105 <name>text</name>
85 <enum>Box</enum> 106 <string> 9 </string>
107 </property>
108 </widget>
109 <widget row="3" column="2" >
110 <class>QPushButton</class>
111 <property stdset="1">
112 <name>name</name>
113 <cstring>button_6</cstring>
86 </property> 114 </property>
87 <property stdset="1"> 115 <property stdset="1">
88 <name>frameShadow</name> 116 <name>sizePolicy</name>
89 <enum>Raised</enum> 117 <sizepolicy>
118 <hsizetype>7</hsizetype>
119 <vsizetype>7</vsizetype>
120 </sizepolicy>
90 </property> 121 </property>
91 <property stdset="1"> 122 <property stdset="1">
92 <name>text</name> 123 <name>text</name>
93 <string>7</string> 124 <string>6</string>
94 </property> 125 </property>
126 </widget>
127 <widget row="5" column="0" >
128 <class>QPushButton</class>
95 <property stdset="1"> 129 <property stdset="1">
96 <name>alignment</name> 130 <name>name</name>
97 <set>AlignCenter</set> 131 <cstring>button_0</cstring>
98 </property> 132 </property>
99 <property> 133 <property stdset="1">
100 <name>hAlign</name> 134 <name>sizePolicy</name>
135 <sizepolicy>
136 <hsizetype>7</hsizetype>
137 <vsizetype>7</vsizetype>
138 </sizepolicy>
139 </property>
140 <property stdset="1">
141 <name>text</name>
142 <string> 0 </string>
101 </property> 143 </property>
102 </widget> 144 </widget>
103 <widget row="0" column="0" rowspan="1" colspan="3" > 145 <widget row="0" column="0" rowspan="1" colspan="3" >
104 <class>QLabel</class> 146 <class>QLabel</class>
105 <property stdset="1"> 147 <property stdset="1">
106 <name>name</name> 148 <name>name</name>
107 <cstring>prompt</cstring> 149 <cstring>prompt</cstring>
108 </property> 150 </property>
109 <property stdset="1"> 151 <property stdset="1">
110 <name>font</name> 152 <name>font</name>
111 <font> 153 <font>
112 <pointsize>18</pointsize> 154 <pointsize>18</pointsize>
113 </font> 155 </font>
114 </property> 156 </property>
115 <property stdset="1"> 157 <property stdset="1">
116 <name>text</name> 158 <name>text</name>
117 <string>Enter your PIN</string> 159 <string>Enter your PIN</string>
118 </property> 160 </property>
119 </widget> 161 </widget>
120 <widget row="1" column="0" rowspan="1" colspan="3" > 162 <widget row="1" column="0" rowspan="1" colspan="3" >
121 <class>QLineEdit</class> 163 <class>QLineEdit</class>
122 <property stdset="1"> 164 <property stdset="1">
123 <name>name</name> 165 <name>name</name>
124 <cstring>display</cstring> 166 <cstring>display</cstring>
125 </property> 167 </property>
126 <property stdset="1"> 168 <property stdset="1">
127 <name>enabled</name> 169 <name>enabled</name>
128 <bool>false</bool> 170 <bool>false</bool>
129 </property> 171 </property>
130 <property stdset="1"> 172 <property stdset="1">
131 <name>palette</name> 173 <name>palette</name>
132 <palette> 174 <palette>
133 <active> 175 <active>
134 <color> 176 <color>
135 <red>0</red> 177 <red>0</red>
136 <green>0</green> 178 <green>0</green>
137 <blue>0</blue> 179 <blue>0</blue>
138 </color> 180 </color>
139 <color> 181 <color>
140 <red>228</red> 182 <red>228</red>
141 <green>228</green> 183 <green>228</green>
142 <blue>228</blue> 184 <blue>228</blue>
143 </color> 185 </color>
144 <color> 186 <color>
145 <red>255</red> 187 <red>255</red>
146 <green>255</green> 188 <green>255</green>
147 <blue>255</blue> 189 <blue>255</blue>
148 </color> 190 </color>
149 <color> 191 <color>
150 <red>242</red> 192 <red>242</red>
151 <green>242</green> 193 <green>242</green>
152 <blue>242</blue> 194 <blue>242</blue>
153 </color> 195 </color>
154 <color> 196 <color>
155 <red>78</red> 197 <red>78</red>
156 <green>78</green> 198 <green>78</green>
157 <blue>78</blue> 199 <blue>78</blue>
158 </color> 200 </color>
159 <color> 201 <color>
160 <red>183</red> 202 <red>183</red>
161 <green>183</green> 203 <green>183</green>
162 <blue>183</blue> 204 <blue>183</blue>
163 </color> 205 </color>
164 <color> 206 <color>
165 <red>0</red> 207 <red>0</red>
166 <green>0</green> 208 <green>0</green>
167 <blue>0</blue> 209 <blue>0</blue>
168 </color> 210 </color>
169 <color> 211 <color>
170 <red>255</red> 212 <red>255</red>
171 <green>255</green> 213 <green>255</green>
172 <blue>255</blue> 214 <blue>255</blue>
173 </color> 215 </color>
174 <color> 216 <color>
175 <red>0</red> 217 <red>0</red>
176 <green>0</green> 218 <green>0</green>
177 <blue>0</blue> 219 <blue>0</blue>
178 </color> 220 </color>
179 <color> 221 <color>
180 <red>255</red> 222 <red>255</red>
181 <green>255</green> 223 <green>255</green>
182 <blue>255</blue> 224 <blue>255</blue>
183 </color> 225 </color>
184 <color> 226 <color>
185 <red>220</red> 227 <red>220</red>
186 <green>220</green> 228 <green>220</green>
187 <blue>220</blue> 229 <blue>220</blue>
188 </color> 230 </color>
189 <color> 231 <color>
190 <red>0</red> 232 <red>0</red>
191 <green>0</green> 233 <green>0</green>
192 <blue>0</blue> 234 <blue>0</blue>
193 </color> 235 </color>
194 <color> 236 <color>
195 <red>10</red> 237 <red>10</red>
196 <green>95</green> 238 <green>95</green>
197 <blue>137</blue> 239 <blue>137</blue>
198 </color> 240 </color>
199 <color> 241 <color>
200 <red>255</red> 242 <red>255</red>
201 <green>255</green> 243 <green>255</green>
202 <blue>255</blue> 244 <blue>255</blue>
203 </color> 245 </color>
204 </active> 246 </active>
205 <disabled> 247 <disabled>
206 <color> 248 <color>
207 <red>128</red> 249 <red>128</red>
208 <green>128</green> 250 <green>128</green>
209 <blue>128</blue> 251 <blue>128</blue>
210 </color> 252 </color>
211 <color> 253 <color>
212 <red>228</red> 254 <red>228</red>
213 <green>228</green> 255 <green>228</green>
214 <blue>228</blue> 256 <blue>228</blue>
215 </color> 257 </color>
216 <color> 258 <color>
217 <red>255</red> 259 <red>255</red>
218 <green>255</green> 260 <green>255</green>
219 <blue>255</blue> 261 <blue>255</blue>
220 </color> 262 </color>
221 <color> 263 <color>
222 <red>255</red> 264 <red>255</red>
223 <green>255</green> 265 <green>255</green>
224 <blue>255</blue> 266 <blue>255</blue>
225 </color> 267 </color>
226 <color> 268 <color>
227 <red>114</red> 269 <red>114</red>
228 <green>114</green> 270 <green>114</green>
229 <blue>114</blue> 271 <blue>114</blue>
230 </color> 272 </color>
231 <color> 273 <color>
232 <red>152</red> 274 <red>152</red>
233 <green>152</green> 275 <green>152</green>
234 <blue>152</blue> 276 <blue>152</blue>
235 </color> 277 </color>
236 <color> 278 <color>
237 <red>0</red> 279 <red>0</red>
238 <green>0</green> 280 <green>0</green>
239 <blue>0</blue> 281 <blue>0</blue>
240 </color> 282 </color>
241 <color> 283 <color>
242 <red>255</red> 284 <red>255</red>
243 <green>255</green> 285 <green>255</green>
244 <blue>255</blue> 286 <blue>255</blue>
245 </color> 287 </color>
246 <color> 288 <color>
247 <red>0</red> 289 <red>0</red>
248 <green>0</green> 290 <green>0</green>
249 <blue>0</blue> 291 <blue>0</blue>
250 </color> 292 </color>
251 <color> 293 <color>
252 <red>255</red> 294 <red>255</red>
253 <green>255</green> 295 <green>255</green>
254 <blue>255</blue> 296 <blue>255</blue>
255 </color> 297 </color>
256 <color> 298 <color>
257 <red>220</red> 299 <red>220</red>
258 <green>220</green> 300 <green>220</green>
259 <blue>220</blue> 301 <blue>220</blue>
260 </color> 302 </color>
261 <color> 303 <color>
262 <red>0</red> 304 <red>0</red>
263 <green>0</green> 305 <green>0</green>
264 <blue>0</blue> 306 <blue>0</blue>
265 </color> 307 </color>
266 <color> 308 <color>
267 <red>0</red> 309 <red>0</red>
268 <green>0</green> 310 <green>0</green>
269 <blue>128</blue> 311 <blue>128</blue>
270 </color> 312 </color>
271 <color> 313 <color>
272 <red>255</red> 314 <red>255</red>
273 <green>255</green> 315 <green>255</green>
274 <blue>255</blue> 316 <blue>255</blue>
275 </color> 317 </color>
276 </disabled> 318 </disabled>
277 <inactive> 319 <inactive>
278 <color> 320 <color>
279 <red>0</red> 321 <red>0</red>
280 <green>0</green> 322 <green>0</green>
281 <blue>0</blue> 323 <blue>0</blue>
282 </color> 324 </color>
283 <color> 325 <color>
284 <red>228</red> 326 <red>228</red>
285 <green>228</green> 327 <green>228</green>
286 <blue>228</blue> 328 <blue>228</blue>
287 </color> 329 </color>
288 <color> 330 <color>
289 <red>255</red> 331 <red>255</red>
290 <green>255</green> 332 <green>255</green>
291 <blue>255</blue> 333 <blue>255</blue>
292 </color> 334 </color>
293 <color> 335 <color>
294 <red>242</red> 336 <red>242</red>
295 <green>242</green> 337 <green>242</green>
296 <blue>242</blue> 338 <blue>242</blue>
297 </color> 339 </color>
298 <color> 340 <color>
299 <red>78</red> 341 <red>78</red>
300 <green>78</green> 342 <green>78</green>
301 <blue>78</blue> 343 <blue>78</blue>
302 </color> 344 </color>
303 <color> 345 <color>
304 <red>183</red> 346 <red>183</red>
305 <green>183</green> 347 <green>183</green>
306 <blue>183</blue> 348 <blue>183</blue>
307 </color> 349 </color>
308 <color> 350 <color>
309 <red>0</red> 351 <red>0</red>
310 <green>0</green> 352 <green>0</green>
311 <blue>0</blue> 353 <blue>0</blue>
312 </color> 354 </color>
313 <color> 355 <color>
314 <red>255</red> 356 <red>255</red>
315 <green>255</green> 357 <green>255</green>
316 <blue>255</blue> 358 <blue>255</blue>
317 </color> 359 </color>
318 <color> 360 <color>
319 <red>0</red> 361 <red>0</red>
320 <green>0</green> 362 <green>0</green>
321 <blue>0</blue> 363 <blue>0</blue>
322 </color> 364 </color>
323 <color> 365 <color>
324 <red>255</red> 366 <red>255</red>
325 <green>255</green> 367 <green>255</green>
326 <blue>255</blue> 368 <blue>255</blue>
327 </color> 369 </color>
328 <color> 370 <color>
329 <red>220</red> 371 <red>220</red>
330 <green>220</green> 372 <green>220</green>
331 <blue>220</blue> 373 <blue>220</blue>
332 </color> 374 </color>
333 <color> 375 <color>
334 <red>0</red> 376 <red>0</red>
335 <green>0</green> 377 <green>0</green>
336 <blue>0</blue> 378 <blue>0</blue>
337 </color> 379 </color>
338 <color> 380 <color>
339 <red>10</red> 381 <red>10</red>
340 <green>95</green> 382 <green>95</green>
341 <blue>137</blue> 383 <blue>137</blue>
342 </color> 384 </color>
343 <color> 385 <color>
344 <red>255</red> 386 <red>255</red>
345 <green>255</green> 387 <green>255</green>
346 <blue>255</blue> 388 <blue>255</blue>
347 </color> 389 </color>
348 </inactive> 390 </inactive>
349 </palette> 391 </palette>
350 </property> 392 </property>
351 <property stdset="1"> 393 <property stdset="1">
352 <name>echoMode</name> 394 <name>echoMode</name>
353 <enum>Password</enum> 395 <enum>Password</enum>
354 </property> 396 </property>
355 </widget> 397 </widget>
356 <widget row="2" column="0" >
357 <class>QLabel</class>
358 <property stdset="1">
359 <name>name</name>
360 <cstring>button_1</cstring>
361 </property>
362 <property stdset="1">
363 <name>sizePolicy</name>
364 <sizepolicy>
365 <hsizetype>5</hsizetype>
366 <vsizetype>5</vsizetype>
367 </sizepolicy>
368 </property>
369 <property stdset="1">
370 <name>frameShape</name>
371 <enum>Box</enum>
372 </property>
373 <property stdset="1">
374 <name>frameShadow</name>
375 <enum>Raised</enum>
376 </property>
377 <property stdset="1">
378 <name>text</name>
379 <string>1</string>
380 </property>
381 <property stdset="1">
382 <name>alignment</name>
383 <set>AlignCenter</set>
384 </property>
385 <property>
386 <name>hAlign</name>
387 </property>
388 </widget>
389 <widget row="2" column="1" >
390 <class>QLabel</class>
391 <property stdset="1">
392 <name>name</name>
393 <cstring>button_2</cstring>
394 </property>
395 <property stdset="1">
396 <name>sizePolicy</name>
397 <sizepolicy>
398 <hsizetype>5</hsizetype>
399 <vsizetype>5</vsizetype>
400 </sizepolicy>
401 </property>
402 <property stdset="1">
403 <name>frameShape</name>
404 <enum>Box</enum>
405 </property>
406 <property stdset="1">
407 <name>frameShadow</name>
408 <enum>Raised</enum>
409 </property>
410 <property stdset="1">
411 <name>text</name>
412 <string>2</string>
413 </property>
414 <property stdset="1">
415 <name>alignment</name>
416 <set>AlignCenter</set>
417 </property>
418 <property>
419 <name>hAlign</name>
420 </property>
421 </widget>
422 <widget row="3" column="1" >
423 <class>QLabel</class>
424 <property stdset="1">
425 <name>name</name>
426 <cstring>button_5</cstring>
427 </property>
428 <property stdset="1">
429 <name>sizePolicy</name>
430 <sizepolicy>
431 <hsizetype>5</hsizetype>
432 <vsizetype>5</vsizetype>
433 </sizepolicy>
434 </property>
435 <property stdset="1">
436 <name>frameShape</name>
437 <enum>Box</enum>
438 </property>
439 <property stdset="1">
440 <name>frameShadow</name>
441 <enum>Raised</enum>
442 </property>
443 <property stdset="1">
444 <name>text</name>
445 <string>5</string>
446 </property>
447 <property stdset="1">
448 <name>alignment</name>
449 <set>AlignCenter</set>
450 </property>
451 <property>
452 <name>hAlign</name>
453 </property>
454 </widget>
455 <widget row="3" column="2" >
456 <class>QLabel</class>
457 <property stdset="1">
458 <name>name</name>
459 <cstring>button_6</cstring>
460 </property>
461 <property stdset="1">
462 <name>sizePolicy</name>
463 <sizepolicy>
464 <hsizetype>5</hsizetype>
465 <vsizetype>5</vsizetype>
466 </sizepolicy>
467 </property>
468 <property stdset="1">
469 <name>frameShape</name>
470 <enum>Box</enum>
471 </property>
472 <property stdset="1">
473 <name>frameShadow</name>
474 <enum>Raised</enum>
475 </property>
476 <property stdset="1">
477 <name>text</name>
478 <string>6</string>
479 </property>
480 <property stdset="1">
481 <name>alignment</name>
482 <set>AlignCenter</set>
483 </property>
484 <property>
485 <name>hAlign</name>
486 </property>
487 </widget>
488 <widget row="2" column="2" >
489 <class>QLabel</class>
490 <property stdset="1">
491 <name>name</name>
492 <cstring>button_3</cstring>
493 </property>
494 <property stdset="1">
495 <name>sizePolicy</name>
496 <sizepolicy>
497 <hsizetype>5</hsizetype>
498 <vsizetype>5</vsizetype>
499 </sizepolicy>
500 </property>
501 <property stdset="1">
502 <name>frameShape</name>
503 <enum>Box</enum>
504 </property>
505 <property stdset="1">
506 <name>frameShadow</name>
507 <enum>Raised</enum>
508 </property>
509 <property stdset="1">
510 <name>text</name>
511 <string>3</string>
512 </property>
513 <property stdset="1">
514 <name>alignment</name>
515 <set>AlignCenter</set>
516 </property>
517 <property>
518 <name>hAlign</name>
519 </property>
520 </widget>
521 <widget row="5" column="0" >
522 <class>QLabel</class>
523 <property stdset="1">
524 <name>name</name>
525 <cstring>button_0</cstring>
526 </property>
527 <property stdset="1">
528 <name>sizePolicy</name>
529 <sizepolicy>
530 <hsizetype>5</hsizetype>
531 <vsizetype>5</vsizetype>
532 </sizepolicy>
533 </property>
534 <property stdset="1">
535 <name>frameShape</name>
536 <enum>Box</enum>
537 </property>
538 <property stdset="1">
539 <name>frameShadow</name>
540 <enum>Raised</enum>
541 </property>
542 <property stdset="1">
543 <name>text</name>
544 <string>0</string>
545 </property>
546 <property stdset="1">
547 <name>alignment</name>
548 <set>AlignCenter</set>
549 </property>
550 <property>
551 <name>hAlign</name>
552 </property>
553 <property>
554 <name>layoutMargin</name>
555 </property>
556 <property>
557 <name>layoutSpacing</name>
558 </property>
559 </widget>
560 <widget row="4" column="1" >
561 <class>QLabel</class>
562 <property stdset="1">
563 <name>name</name>
564 <cstring>button_8</cstring>
565 </property>
566 <property stdset="1">
567 <name>sizePolicy</name>
568 <sizepolicy>
569 <hsizetype>5</hsizetype>
570 <vsizetype>5</vsizetype>
571 </sizepolicy>
572 </property>
573 <property stdset="1">
574 <name>frameShape</name>
575 <enum>Box</enum>
576 </property>
577 <property stdset="1">
578 <name>frameShadow</name>
579 <enum>Raised</enum>
580 </property>
581 <property stdset="1">
582 <name>text</name>
583 <string>8</string>
584 </property>
585 <property stdset="1">
586 <name>alignment</name>
587 <set>AlignCenter</set>
588 </property>
589 <property>
590 <name>hAlign</name>
591 </property>
592 </widget>
593 <widget row="4" column="2" >
594 <class>QLabel</class>
595 <property stdset="1">
596 <name>name</name>
597 <cstring>button_9</cstring>
598 </property>
599 <property stdset="1">
600 <name>sizePolicy</name>
601 <sizepolicy>
602 <hsizetype>5</hsizetype>
603 <vsizetype>5</vsizetype>
604 </sizepolicy>
605 </property>
606 <property stdset="1">
607 <name>frameShape</name>
608 <enum>Box</enum>
609 </property>
610 <property stdset="1">
611 <name>frameShadow</name>
612 <enum>Raised</enum>
613 </property>
614 <property stdset="1">
615 <name>text</name>
616 <string>9</string>
617 </property>
618 <property stdset="1">
619 <name>alignment</name>
620 <set>AlignCenter</set>
621 </property>
622 <property>
623 <name>hAlign</name>
624 </property>
625 <property>
626 <name>layoutMargin</name>
627 </property>
628 <property>
629 <name>layoutSpacing</name>
630 </property>
631 </widget>
632 <widget row="5" column="2" > 398 <widget row="5" column="2" >
633 <class>QLabel</class> 399 <class>QPushButton</class>
634 <property stdset="1"> 400 <property stdset="1">
635 <name>name</name> 401 <name>name</name>
636 <cstring>button_OK</cstring> 402 <cstring>button_OK</cstring>
637 </property> 403 </property>
638 <property stdset="1"> 404 <property stdset="1">
639 <name>sizePolicy</name> 405 <name>sizePolicy</name>
640 <sizepolicy> 406 <sizepolicy>
641 <hsizetype>5</hsizetype> 407 <hsizetype>7</hsizetype>
642 <vsizetype>5</vsizetype> 408 <vsizetype>7</vsizetype>
643 </sizepolicy> 409 </sizepolicy>
644 </property> 410 </property>
645 <property stdset="1"> 411 <property stdset="1">
646 <name>palette</name> 412 <name>palette</name>
647 <palette> 413 <palette>
648 <active> 414 <active>
649 <color> 415 <color>
650 <red>0</red> 416 <red>0</red>
651 <green>0</green> 417 <green>0</green>
652 <blue>0</blue> 418 <blue>0</blue>
653 </color> 419 </color>
654 <color> 420 <color>
655 <red>192</red> 421 <red>170</red>
656 <green>192</green> 422 <green>255</green>
657 <blue>192</blue> 423 <blue>0</blue>
658 </color> 424 </color>
659 <color> 425 <color>
660 <red>255</red> 426 <red>212</red>
661 <green>255</green> 427 <green>255</green>
662 <blue>255</blue> 428 <blue>127</blue>
663 </color> 429 </color>
664 <color> 430 <color>
665 <red>223</red> 431 <red>191</red>
666 <green>223</green> 432 <green>255</green>
667 <blue>223</blue> 433 <blue>63</blue>
668 </color> 434 </color>
669 <color> 435 <color>
670 <red>96</red> 436 <red>85</red>
671 <green>96</green> 437 <green>127</green>
672 <blue>96</blue> 438 <blue>0</blue>
673 </color> 439 </color>
674 <color> 440 <color>
675 <red>128</red> 441 <red>113</red>
676 <green>128</green> 442 <green>170</green>
677 <blue>128</blue> 443 <blue>0</blue>
678 </color> 444 </color>
679 <color> 445 <color>
680 <red>0</red> 446 <red>0</red>
681 <green>0</green> 447 <green>0</green>
682 <blue>0</blue> 448 <blue>0</blue>
683 </color> 449 </color>
684 <color> 450 <color>
685 <red>255</red> 451 <red>255</red>
686 <green>255</green> 452 <green>255</green>
687 <blue>255</blue> 453 <blue>255</blue>
688 </color> 454 </color>
689 <color> 455 <color>
690 <red>0</red> 456 <red>0</red>
691 <green>0</green> 457 <green>0</green>
692 <blue>0</blue> 458 <blue>0</blue>
693 </color> 459 </color>
694 <color> 460 <color>
695 <red>255</red> 461 <red>255</red>
696 <green>255</green> 462 <green>255</green>
697 <blue>255</blue> 463 <blue>255</blue>
698 </color> 464 </color>
699 <color> 465 <color>
700 <red>0</red> 466 <red>238</red>
701 <green>170</green> 467 <green>238</green>
702 <blue>0</blue> 468 <blue>230</blue>
703 </color> 469 </color>
704 <color> 470 <color>
705 <red>0</red> 471 <red>0</red>
706 <green>0</green> 472 <green>0</green>
707 <blue>0</blue> 473 <blue>0</blue>
708 </color> 474 </color>
709 <color> 475 <color>
476 <red>255</red>
477 <green>221</green>
478 <blue>118</blue>
479 </color>
480 <color>
710 <red>0</red> 481 <red>0</red>
711 <green>0</green> 482 <green>0</green>
712 <blue>0</blue> 483 <blue>0</blue>
713 </color> 484 </color>
714 <color>
715 <red>255</red>
716 <green>255</green>
717 <blue>255</blue>
718 </color>
719 </active> 485 </active>
720 <disabled> 486 <disabled>
721 <color> 487 <color>
722 <red>128</red> 488 <red>128</red>
723 <green>128</green> 489 <green>128</green>
724 <blue>128</blue> 490 <blue>128</blue>
725 </color> 491 </color>
726 <color> 492 <color>
727 <red>192</red> 493 <red>170</red>
728 <green>192</green> 494 <green>255</green>
729 <blue>192</blue> 495 <blue>0</blue>
730 </color> 496 </color>
731 <color> 497 <color>
732 <red>255</red> 498 <red>212</red>
733 <green>255</green> 499 <green>255</green>
734 <blue>255</blue> 500 <blue>127</blue>
735 </color> 501 </color>
736 <color> 502 <color>
737 <red>220</red> 503 <red>183</red>
738 <green>220</green> 504 <green>255</green>
739 <blue>220</blue> 505 <blue>38</blue>
740 </color> 506 </color>
741 <color> 507 <color>
742 <red>96</red> 508 <red>85</red>
743 <green>96</green> 509 <green>127</green>
744 <blue>96</blue> 510 <blue>0</blue>
745 </color> 511 </color>
746 <color> 512 <color>
747 <red>128</red> 513 <red>113</red>
748 <green>128</green> 514 <green>170</green>
749 <blue>128</blue> 515 <blue>0</blue>
750 </color> 516 </color>
751 <color> 517 <color>
752 <red>0</red> 518 <red>0</red>
753 <green>0</green> 519 <green>0</green>
754 <blue>0</blue> 520 <blue>0</blue>
755 </color> 521 </color>
756 <color> 522 <color>
757 <red>255</red> 523 <red>255</red>
758 <green>255</green> 524 <green>255</green>
759 <blue>255</blue> 525 <blue>255</blue>
760 </color> 526 </color>
761 <color> 527 <color>
762 <red>128</red> 528 <red>128</red>
763 <green>128</green> 529 <green>128</green>
764 <blue>128</blue> 530 <blue>128</blue>
765 </color> 531 </color>
766 <color> 532 <color>
767 <red>255</red> 533 <red>255</red>
768 <green>255</green> 534 <green>255</green>
769 <blue>255</blue> 535 <blue>255</blue>
770 </color> 536 </color>
771 <color> 537 <color>
772 <red>0</red> 538 <red>238</red>
773 <green>170</green> 539 <green>238</green>
774 <blue>0</blue> 540 <blue>230</blue>
775 </color> 541 </color>
776 <color> 542 <color>
777 <red>0</red> 543 <red>0</red>
778 <green>0</green> 544 <green>0</green>
779 <blue>0</blue> 545 <blue>0</blue>
780 </color> 546 </color>
781 <color> 547 <color>
548 <red>255</red>
549 <green>221</green>
550 <blue>118</blue>
551 </color>
552 <color>
782 <red>0</red> 553 <red>0</red>
783 <green>0</green> 554 <green>0</green>
784 <blue>0</blue> 555 <blue>0</blue>
785 </color> 556 </color>
786 <color>
787 <red>255</red>
788 <green>255</green>
789 <blue>255</blue>
790 </color>
791 </disabled> 557 </disabled>
792 <inactive> 558 <inactive>
793 <color> 559 <color>
794 <red>0</red> 560 <red>0</red>
795 <green>0</green> 561 <green>0</green>
796 <blue>0</blue> 562 <blue>0</blue>
797 </color> 563 </color>
798 <color> 564 <color>
799 <red>192</red> 565 <red>170</red>
800 <green>192</green> 566 <green>255</green>
801 <blue>192</blue> 567 <blue>0</blue>
802 </color> 568 </color>
803 <color> 569 <color>
804 <red>255</red> 570 <red>212</red>
805 <green>255</green> 571 <green>255</green>
806 <blue>255</blue> 572 <blue>127</blue>
807 </color> 573 </color>
808 <color> 574 <color>
809 <red>220</red> 575 <red>183</red>
810 <green>220</green> 576 <green>255</green>
811 <blue>220</blue> 577 <blue>38</blue>
812 </color> 578 </color>
813 <color> 579 <color>
814 <red>96</red> 580 <red>85</red>
815 <green>96</green> 581 <green>127</green>
816 <blue>96</blue> 582 <blue>0</blue>
817 </color> 583 </color>
818 <color> 584 <color>
819 <red>128</red> 585 <red>113</red>
820 <green>128</green> 586 <green>170</green>
821 <blue>128</blue> 587 <blue>0</blue>
822 </color> 588 </color>
823 <color> 589 <color>
824 <red>0</red> 590 <red>0</red>
825 <green>0</green> 591 <green>0</green>
826 <blue>0</blue> 592 <blue>0</blue>
827 </color> 593 </color>
828 <color> 594 <color>
829 <red>255</red> 595 <red>255</red>
830 <green>255</green> 596 <green>255</green>
831 <blue>255</blue> 597 <blue>255</blue>
832 </color> 598 </color>
833 <color> 599 <color>
834 <red>0</red> 600 <red>0</red>
835 <green>0</green> 601 <green>0</green>
836 <blue>0</blue> 602 <blue>0</blue>
837 </color> 603 </color>
838 <color> 604 <color>
839 <red>255</red> 605 <red>255</red>
840 <green>255</green> 606 <green>255</green>
841 <blue>255</blue> 607 <blue>255</blue>
842 </color> 608 </color>
843 <color> 609 <color>
844 <red>0</red> 610 <red>238</red>
845 <green>170</green> 611 <green>238</green>
846 <blue>0</blue> 612 <blue>230</blue>
847 </color> 613 </color>
848 <color> 614 <color>
849 <red>0</red> 615 <red>0</red>
850 <green>0</green> 616 <green>0</green>
851 <blue>0</blue> 617 <blue>0</blue>
852 </color> 618 </color>
853 <color> 619 <color>
620 <red>255</red>
621 <green>221</green>
622 <blue>118</blue>
623 </color>
624 <color>
854 <red>0</red> 625 <red>0</red>
855 <green>0</green> 626 <green>0</green>
856 <blue>0</blue> 627 <blue>0</blue>
857 </color> 628 </color>
858 <color>
859 <red>255</red>
860 <green>255</green>
861 <blue>255</blue>
862 </color>
863 </inactive> 629 </inactive>
864 </palette> 630 </palette>
865 </property> 631 </property>
866 <property stdset="1"> 632 <property stdset="1">
867 <name>frameShape</name> 633 <name>text</name>
868 <enum>Box</enum> 634 <string>OK</string>
635 </property>
636 </widget>
637 <widget row="3" column="0" >
638 <class>QPushButton</class>
639 <property stdset="1">
640 <name>name</name>
641 <cstring>button_4</cstring>
869 </property> 642 </property>
870 <property stdset="1"> 643 <property stdset="1">
871 <name>frameShadow</name> 644 <name>sizePolicy</name>
872 <enum>Raised</enum> 645 <sizepolicy>
646 <hsizetype>7</hsizetype>
647 <vsizetype>7</vsizetype>
648 </sizepolicy>
873 </property> 649 </property>
874 <property stdset="1"> 650 <property stdset="1">
875 <name>text</name> 651 <name>text</name>
876 <string>Enter</string> 652 <string>4</string>
877 </property> 653 </property>
654 </widget>
655 <widget row="2" column="1" >
656 <class>QPushButton</class>
878 <property stdset="1"> 657 <property stdset="1">
879 <name>alignment</name> 658 <name>name</name>
880 <set>AlignCenter</set> 659 <cstring>button_2</cstring>
881 </property> 660 </property>
882 <property> 661 <property stdset="1">
883 <name>hAlign</name> 662 <name>sizePolicy</name>
663 <sizepolicy>
664 <hsizetype>7</hsizetype>
665 <vsizetype>7</vsizetype>
666 </sizepolicy>
667 </property>
668 <property stdset="1">
669 <name>text</name>
670 <string>2</string>
671 </property>
672 </widget>
673 <widget row="3" column="1" >
674 <class>QPushButton</class>
675 <property stdset="1">
676 <name>name</name>
677 <cstring>button_5</cstring>
678 </property>
679 <property stdset="1">
680 <name>sizePolicy</name>
681 <sizepolicy>
682 <hsizetype>7</hsizetype>
683 <vsizetype>7</vsizetype>
684 </sizepolicy>
685 </property>
686 <property stdset="1">
687 <name>text</name>
688 <string>5</string>
689 </property>
690 </widget>
691 <widget row="4" column="1" >
692 <class>QPushButton</class>
693 <property stdset="1">
694 <name>name</name>
695 <cstring>button_8</cstring>
696 </property>
697 <property stdset="1">
698 <name>sizePolicy</name>
699 <sizepolicy>
700 <hsizetype>7</hsizetype>
701 <vsizetype>7</vsizetype>
702 </sizepolicy>
703 </property>
704 <property stdset="1">
705 <name>text</name>
706 <string>8</string>
884 </property> 707 </property>
885 </widget> 708 </widget>
886 <widget row="5" column="1" > 709 <widget row="5" column="1" >
887 <class>QLabel</class> 710 <class>QPushButton</class>
888 <property stdset="1"> 711 <property stdset="1">
889 <name>name</name> 712 <name>name</name>
890 <cstring>button_Skip</cstring> 713 <cstring>button_Skip</cstring>
891 </property> 714 </property>
892 <property stdset="1"> 715 <property stdset="1">
893 <name>sizePolicy</name> 716 <name>sizePolicy</name>
894 <sizepolicy> 717 <sizepolicy>
895 <hsizetype>5</hsizetype> 718 <hsizetype>7</hsizetype>
896 <vsizetype>5</vsizetype> 719 <vsizetype>7</vsizetype>
897 </sizepolicy> 720 </sizepolicy>
898 </property> 721 </property>
899 <property stdset="1"> 722 <property stdset="1">
900 <name>palette</name> 723 <name>palette</name>
901 <palette> 724 <palette>
902 <active> 725 <active>
903 <color> 726 <color>
904 <red>0</red> 727 <red>0</red>
905 <green>0</green> 728 <green>0</green>
906 <blue>0</blue> 729 <blue>0</blue>
907 </color> 730 </color>
908 <color> 731 <color>
909 <red>192</red> 732 <red>255</red>
910 <green>192</green> 733 <green>255</green>
911 <blue>192</blue> 734 <blue>127</blue>
912 </color> 735 </color>
913 <color> 736 <color>
914 <red>255</red> 737 <red>255</red>
915 <green>255</green> 738 <green>255</green>
916 <blue>255</blue> 739 <blue>254</blue>
917 </color> 740 </color>
918 <color> 741 <color>
919 <red>223</red> 742 <red>255</red>
920 <green>223</green> 743 <green>255</green>
921 <blue>223</blue> 744 <blue>190</blue>
922 </color> 745 </color>
923 <color> 746 <color>
924 <red>96</red> 747 <red>127</red>
925 <green>96</green> 748 <green>127</green>
926 <blue>96</blue> 749 <blue>63</blue>
927 </color> 750 </color>
928 <color> 751 <color>
929 <red>128</red> 752 <red>170</red>
930 <green>128</green> 753 <green>170</green>
931 <blue>128</blue> 754 <blue>85</blue>
932 </color> 755 </color>
933 <color> 756 <color>
934 <red>0</red> 757 <red>0</red>
935 <green>0</green> 758 <green>0</green>
936 <blue>0</blue> 759 <blue>0</blue>
937 </color> 760 </color>
938 <color> 761 <color>
939 <red>255</red> 762 <red>255</red>
940 <green>255</green> 763 <green>255</green>
941 <blue>255</blue> 764 <blue>255</blue>
942 </color> 765 </color>
943 <color> 766 <color>
944 <red>0</red> 767 <red>0</red>
945 <green>0</green> 768 <green>0</green>
946 <blue>0</blue> 769 <blue>0</blue>
947 </color> 770 </color>
948 <color> 771 <color>
949 <red>255</red> 772 <red>255</red>
950 <green>255</green> 773 <green>255</green>
951 <blue>255</blue> 774 <blue>255</blue>
952 </color> 775 </color>
953 <color> 776 <color>
954 <red>255</red> 777 <red>238</red>
955 <green>255</green> 778 <green>238</green>
956 <blue>127</blue> 779 <blue>230</blue>
957 </color> 780 </color>
958 <color> 781 <color>
959 <red>0</red> 782 <red>0</red>
960 <green>0</green> 783 <green>0</green>
961 <blue>0</blue> 784 <blue>0</blue>
962 </color> 785 </color>
963 <color> 786 <color>
787 <red>255</red>
788 <green>221</green>
789 <blue>118</blue>
790 </color>
791 <color>
964 <red>0</red> 792 <red>0</red>
965 <green>0</green> 793 <green>0</green>
966 <blue>0</blue> 794 <blue>0</blue>
967 </color> 795 </color>
968 <color>
969 <red>255</red>
970 <green>255</green>
971 <blue>255</blue>
972 </color>
973 </active> 796 </active>
974 <disabled> 797 <disabled>
975 <color> 798 <color>
976 <red>128</red> 799 <red>128</red>
977 <green>128</green> 800 <green>128</green>
978 <blue>128</blue> 801 <blue>128</blue>
979 </color> 802 </color>
980 <color> 803 <color>
981 <red>192</red> 804 <red>255</red>
982 <green>192</green> 805 <green>255</green>
983 <blue>192</blue> 806 <blue>127</blue>
984 </color> 807 </color>
985 <color> 808 <color>
986 <red>255</red> 809 <red>255</red>
987 <green>255</green> 810 <green>255</green>
988 <blue>255</blue> 811 <blue>254</blue>
989 </color> 812 </color>
990 <color> 813 <color>
991 <red>220</red> 814 <red>255</red>
992 <green>220</green> 815 <green>255</green>
993 <blue>220</blue> 816 <blue>165</blue>
994 </color> 817 </color>
995 <color> 818 <color>
996 <red>96</red> 819 <red>127</red>
997 <green>96</green> 820 <green>127</green>
998 <blue>96</blue> 821 <blue>63</blue>
999 </color> 822 </color>
1000 <color> 823 <color>
1001 <red>128</red> 824 <red>170</red>
1002 <green>128</green> 825 <green>170</green>
1003 <blue>128</blue> 826 <blue>85</blue>
1004 </color> 827 </color>
1005 <color> 828 <color>
1006 <red>0</red> 829 <red>0</red>
1007 <green>0</green> 830 <green>0</green>
1008 <blue>0</blue> 831 <blue>0</blue>
1009 </color> 832 </color>
1010 <color> 833 <color>
1011 <red>255</red> 834 <red>255</red>
1012 <green>255</green> 835 <green>255</green>
1013 <blue>255</blue> 836 <blue>255</blue>
1014 </color> 837 </color>
1015 <color> 838 <color>
1016 <red>128</red> 839 <red>128</red>
1017 <green>128</green> 840 <green>128</green>
1018 <blue>128</blue> 841 <blue>128</blue>
1019 </color> 842 </color>
1020 <color> 843 <color>
1021 <red>255</red> 844 <red>255</red>
1022 <green>255</green> 845 <green>255</green>
1023 <blue>255</blue> 846 <blue>255</blue>
1024 </color> 847 </color>
1025 <color> 848 <color>
1026 <red>255</red> 849 <red>238</red>
1027 <green>255</green> 850 <green>238</green>
1028 <blue>127</blue> 851 <blue>230</blue>
1029 </color> 852 </color>
1030 <color> 853 <color>
1031 <red>0</red> 854 <red>0</red>
1032 <green>0</green> 855 <green>0</green>
1033 <blue>0</blue> 856 <blue>0</blue>
1034 </color> 857 </color>
1035 <color> 858 <color>
859 <red>255</red>
860 <green>221</green>
861 <blue>118</blue>
862 </color>
863 <color>
1036 <red>0</red> 864 <red>0</red>
1037 <green>0</green> 865 <green>0</green>
1038 <blue>0</blue> 866 <blue>0</blue>
1039 </color> 867 </color>
1040 <color>
1041 <red>255</red>
1042 <green>255</green>
1043 <blue>255</blue>
1044 </color>
1045 </disabled> 868 </disabled>
1046 <inactive> 869 <inactive>
1047 <color> 870 <color>
1048 <red>0</red> 871 <red>0</red>
1049 <green>0</green> 872 <green>0</green>
1050 <blue>0</blue> 873 <blue>0</blue>
1051 </color> 874 </color>
1052 <color> 875 <color>
1053 <red>192</red> 876 <red>255</red>
1054 <green>192</green> 877 <green>255</green>
1055 <blue>192</blue> 878 <blue>127</blue>
1056 </color> 879 </color>
1057 <color> 880 <color>
1058 <red>255</red> 881 <red>255</red>
1059 <green>255</green> 882 <green>255</green>
1060 <blue>255</blue> 883 <blue>254</blue>
1061 </color> 884 </color>
1062 <color> 885 <color>
1063 <red>220</red> 886 <red>255</red>
1064 <green>220</green> 887 <green>255</green>
1065 <blue>220</blue> 888 <blue>165</blue>
1066 </color> 889 </color>
1067 <color> 890 <color>
1068 <red>96</red> 891 <red>127</red>
1069 <green>96</green> 892 <green>127</green>
1070 <blue>96</blue> 893 <blue>63</blue>
1071 </color> 894 </color>
1072 <color> 895 <color>
1073 <red>128</red> 896 <red>170</red>
1074 <green>128</green> 897 <green>170</green>
1075 <blue>128</blue> 898 <blue>85</blue>
1076 </color> 899 </color>
1077 <color> 900 <color>
1078 <red>0</red> 901 <red>0</red>
1079 <green>0</green> 902 <green>0</green>
1080 <blue>0</blue> 903 <blue>0</blue>
1081 </color> 904 </color>
1082 <color> 905 <color>
1083 <red>255</red> 906 <red>255</red>
1084 <green>255</green> 907 <green>255</green>
1085 <blue>255</blue> 908 <blue>255</blue>
1086 </color> 909 </color>
1087 <color> 910 <color>
1088 <red>0</red> 911 <red>0</red>
1089 <green>0</green> 912 <green>0</green>
1090 <blue>0</blue> 913 <blue>0</blue>
1091 </color> 914 </color>
1092 <color> 915 <color>
1093 <red>255</red> 916 <red>255</red>
1094 <green>255</green> 917 <green>255</green>
1095 <blue>255</blue> 918 <blue>255</blue>
1096 </color> 919 </color>
1097 <color> 920 <color>
1098 <red>255</red> 921 <red>238</red>
1099 <green>255</green> 922 <green>238</green>
1100 <blue>127</blue> 923 <blue>230</blue>
1101 </color> 924 </color>
1102 <color> 925 <color>
1103 <red>0</red> 926 <red>0</red>
1104 <green>0</green> 927 <green>0</green>
1105 <blue>0</blue> 928 <blue>0</blue>
1106 </color> 929 </color>
1107 <color> 930 <color>
931 <red>255</red>
932 <green>221</green>
933 <blue>118</blue>
934 </color>
935 <color>
1108 <red>0</red> 936 <red>0</red>
1109 <green>0</green> 937 <green>0</green>
1110 <blue>0</blue> 938 <blue>0</blue>
1111 </color> 939 </color>
1112 <color>
1113 <red>255</red>
1114 <green>255</green>
1115 <blue>255</blue>
1116 </color>
1117 </inactive> 940 </inactive>
1118 </palette> 941 </palette>
1119 </property> 942 </property>
1120 <property stdset="1"> 943 <property stdset="1">
1121 <name>frameShape</name>
1122 <enum>Box</enum>
1123 </property>
1124 <property stdset="1">
1125 <name>frameShadow</name>
1126 <enum>Raised</enum>
1127 </property>
1128 <property stdset="1">
1129 <name>text</name> 944 <name>text</name>
1130 <string>Skip</string> 945 <string>Skip</string>
1131 </property> 946 </property>
1132 <property stdset="1"> 947 <property stdset="1">
1133 <name>alignment</name> 948 <name>autoResize</name>
1134 <set>AlignCenter</set> 949 <bool>false</bool>
1135 </property>
1136 <property>
1137 <name>hAlign</name>
1138 </property> 950 </property>
1139 </widget> 951 </widget>
1140 </grid> 952 </grid>
1141</widget> 953</widget>
954<customwidgets>
955 <customwidget>
956 <class>QWidget</class>
957 <header location="global">qwidget.h</header>
958 <sizehint>
959 <width>-1</width>
960 <height>-1</height>
961 </sizehint>
962 <container>0</container>
963 <sizepolicy>
964 <hordata>5</hordata>
965 <verdata>5</verdata>
966 </sizepolicy>
967 <pixmap>image0</pixmap>
968 </customwidget>
969</customwidgets>
970<images>
971 <image>
972 <name>image0</name>
973 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
974 </image>
975</images>
976<tabstops>
977 <tabstop>display</tabstop>
978 <tabstop>button_1</tabstop>
979 <tabstop>button_2</tabstop>
980 <tabstop>button_3</tabstop>
981 <tabstop>button_4</tabstop>
982 <tabstop>button_5</tabstop>
983 <tabstop>button_6</tabstop>
984 <tabstop>button_7</tabstop>
985 <tabstop>button_8</tabstop>
986 <tabstop>button_9</tabstop>
987 <tabstop>button_0</tabstop>
988 <tabstop>button_Skip</tabstop>
989 <tabstop>button_OK</tabstop>
990</tabstops>
1142</UI> 991</UI>