summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/opie-login/loginwindow.ui1
-rw-r--r--core/opie-login/loginwindowimpl.cpp43
-rw-r--r--core/opie-login/loginwindowimpl.h2
3 files changed, 45 insertions, 1 deletions
diff --git a/core/opie-login/loginwindow.ui b/core/opie-login/loginwindow.ui
index 5a35c8d..245e942 100644
--- a/core/opie-login/loginwindow.ui
+++ b/core/opie-login/loginwindow.ui
@@ -1,418 +1,417 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>LoginWindow</class> 2<class>LoginWindow</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>LoginWindow</cstring> 7 <cstring>LoginWindow</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>460</width> 14 <width>460</width>
15 <height>341</height> 15 <height>341</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>Login</string> 20 <string>Login</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>QLayoutWidget</class> 38 <class>QLayoutWidget</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>Layout7</cstring> 41 <cstring>Layout7</cstring>
42 </property> 42 </property>
43 <property> 43 <property>
44 <name>layoutMargin</name> 44 <name>layoutMargin</name>
45 </property> 45 </property>
46 <property> 46 <property>
47 <name>layoutSpacing</name> 47 <name>layoutSpacing</name>
48 </property> 48 </property>
49 <vbox> 49 <vbox>
50 <property stdset="1"> 50 <property stdset="1">
51 <name>margin</name> 51 <name>margin</name>
52 <number>4</number> 52 <number>4</number>
53 </property> 53 </property>
54 <property stdset="1"> 54 <property stdset="1">
55 <name>spacing</name> 55 <name>spacing</name>
56 <number>4</number> 56 <number>4</number>
57 </property> 57 </property>
58 <widget> 58 <widget>
59 <class>QLabel</class> 59 <class>QLabel</class>
60 <property stdset="1"> 60 <property stdset="1">
61 <name>name</name> 61 <name>name</name>
62 <cstring>m_caption</cstring> 62 <cstring>m_caption</cstring>
63 </property> 63 </property>
64 <property stdset="1"> 64 <property stdset="1">
65 <name>sizePolicy</name> 65 <name>sizePolicy</name>
66 <sizepolicy> 66 <sizepolicy>
67 <hsizetype>5</hsizetype> 67 <hsizetype>5</hsizetype>
68 <vsizetype>5</vsizetype> 68 <vsizetype>5</vsizetype>
69 </sizepolicy> 69 </sizepolicy>
70 </property> 70 </property>
71 <property stdset="1"> 71 <property stdset="1">
72 <name>font</name> 72 <name>font</name>
73 <font> 73 <font>
74 <family>helvetica</family> 74 <family>helvetica</family>
75 <pointsize>18</pointsize> 75 <pointsize>18</pointsize>
76 <bold>1</bold> 76 <bold>1</bold>
77 <underline>1</underline>
78 </font> 77 </font>
79 </property> 78 </property>
80 <property stdset="1"> 79 <property stdset="1">
81 <name>autoMask</name> 80 <name>autoMask</name>
82 <bool>true</bool> 81 <bool>true</bool>
83 </property> 82 </property>
84 <property stdset="1"> 83 <property stdset="1">
85 <name>backgroundOrigin</name> 84 <name>backgroundOrigin</name>
86 <enum>ParentOrigin</enum> 85 <enum>ParentOrigin</enum>
87 </property> 86 </property>
88 <property stdset="1"> 87 <property stdset="1">
89 <name>margin</name> 88 <name>margin</name>
90 <number>1</number> 89 <number>1</number>
91 </property> 90 </property>
92 <property stdset="1"> 91 <property stdset="1">
93 <name>text</name> 92 <name>text</name>
94 <string>&lt;center&gt;Welcome to OPIE&lt;/center&gt;</string> 93 <string>&lt;center&gt;Welcome to OPIE&lt;/center&gt;</string>
95 </property> 94 </property>
96 </widget> 95 </widget>
97 <widget> 96 <widget>
98 <class>QLayoutWidget</class> 97 <class>QLayoutWidget</class>
99 <property stdset="1"> 98 <property stdset="1">
100 <name>name</name> 99 <name>name</name>
101 <cstring>Layout6</cstring> 100 <cstring>Layout6</cstring>
102 </property> 101 </property>
103 <property> 102 <property>
104 <name>layoutSpacing</name> 103 <name>layoutSpacing</name>
105 </property> 104 </property>
106 <grid> 105 <grid>
107 <property stdset="1"> 106 <property stdset="1">
108 <name>margin</name> 107 <name>margin</name>
109 <number>0</number> 108 <number>0</number>
110 </property> 109 </property>
111 <property stdset="1"> 110 <property stdset="1">
112 <name>spacing</name> 111 <name>spacing</name>
113 <number>4</number> 112 <number>4</number>
114 </property> 113 </property>
115 <widget row="0" column="1" > 114 <widget row="0" column="1" >
116 <class>QComboBox</class> 115 <class>QComboBox</class>
117 <property stdset="1"> 116 <property stdset="1">
118 <name>name</name> 117 <name>name</name>
119 <cstring>m_user</cstring> 118 <cstring>m_user</cstring>
120 </property> 119 </property>
121 <property stdset="1"> 120 <property stdset="1">
122 <name>autoMask</name> 121 <name>autoMask</name>
123 <bool>true</bool> 122 <bool>true</bool>
124 </property> 123 </property>
125 <property stdset="1"> 124 <property stdset="1">
126 <name>editable</name> 125 <name>editable</name>
127 <bool>true</bool> 126 <bool>true</bool>
128 </property> 127 </property>
129 <property stdset="1"> 128 <property stdset="1">
130 <name>autoCompletion</name> 129 <name>autoCompletion</name>
131 <bool>true</bool> 130 <bool>true</bool>
132 </property> 131 </property>
133 </widget> 132 </widget>
134 <widget row="0" column="0" > 133 <widget row="0" column="0" >
135 <class>QLabel</class> 134 <class>QLabel</class>
136 <property stdset="1"> 135 <property stdset="1">
137 <name>name</name> 136 <name>name</name>
138 <cstring>TextLabel1</cstring> 137 <cstring>TextLabel1</cstring>
139 </property> 138 </property>
140 <property stdset="1"> 139 <property stdset="1">
141 <name>autoMask</name> 140 <name>autoMask</name>
142 <bool>true</bool> 141 <bool>true</bool>
143 </property> 142 </property>
144 <property stdset="1"> 143 <property stdset="1">
145 <name>backgroundOrigin</name> 144 <name>backgroundOrigin</name>
146 <enum>ParentOrigin</enum> 145 <enum>ParentOrigin</enum>
147 </property> 146 </property>
148 <property stdset="1"> 147 <property stdset="1">
149 <name>text</name> 148 <name>text</name>
150 <string>User</string> 149 <string>User</string>
151 </property> 150 </property>
152 </widget> 151 </widget>
153 <widget row="1" column="1" > 152 <widget row="1" column="1" >
154 <class>QLayoutWidget</class> 153 <class>QLayoutWidget</class>
155 <property stdset="1"> 154 <property stdset="1">
156 <name>name</name> 155 <name>name</name>
157 <cstring>Layout5</cstring> 156 <cstring>Layout5</cstring>
158 </property> 157 </property>
159 <property> 158 <property>
160 <name>layoutSpacing</name> 159 <name>layoutSpacing</name>
161 </property> 160 </property>
162 <hbox> 161 <hbox>
163 <property stdset="1"> 162 <property stdset="1">
164 <name>margin</name> 163 <name>margin</name>
165 <number>0</number> 164 <number>0</number>
166 </property> 165 </property>
167 <property stdset="1"> 166 <property stdset="1">
168 <name>spacing</name> 167 <name>spacing</name>
169 <number>4</number> 168 <number>4</number>
170 </property> 169 </property>
171 <widget> 170 <widget>
172 <class>QLineEdit</class> 171 <class>QLineEdit</class>
173 <property stdset="1"> 172 <property stdset="1">
174 <name>name</name> 173 <name>name</name>
175 <cstring>m_password</cstring> 174 <cstring>m_password</cstring>
176 </property> 175 </property>
177 <property stdset="1"> 176 <property stdset="1">
178 <name>autoMask</name> 177 <name>autoMask</name>
179 <bool>true</bool> 178 <bool>true</bool>
180 </property> 179 </property>
181 <property stdset="1"> 180 <property stdset="1">
182 <name>echoMode</name> 181 <name>echoMode</name>
183 <enum>Password</enum> 182 <enum>Password</enum>
184 </property> 183 </property>
185 </widget> 184 </widget>
186 <widget> 185 <widget>
187 <class>QToolButton</class> 186 <class>QToolButton</class>
188 <property stdset="1"> 187 <property stdset="1">
189 <name>name</name> 188 <name>name</name>
190 <cstring>ToolButton3</cstring> 189 <cstring>ToolButton3</cstring>
191 </property> 190 </property>
192 <property stdset="1"> 191 <property stdset="1">
193 <name>text</name> 192 <name>text</name>
194 <string></string> 193 <string></string>
195 </property> 194 </property>
196 <property stdset="1"> 195 <property stdset="1">
197 <name>pixmap</name> 196 <name>pixmap</name>
198 <pixmap>image0</pixmap> 197 <pixmap>image0</pixmap>
199 </property> 198 </property>
200 <property stdset="1"> 199 <property stdset="1">
201 <name>toggleButton</name> 200 <name>toggleButton</name>
202 <bool>true</bool> 201 <bool>true</bool>
203 </property> 202 </property>
204 <property stdset="1"> 203 <property stdset="1">
205 <name>toggleButton</name> 204 <name>toggleButton</name>
206 <bool>true</bool> 205 <bool>true</bool>
207 </property> 206 </property>
208 </widget> 207 </widget>
209 <widget> 208 <widget>
210 <class>QToolButton</class> 209 <class>QToolButton</class>
211 <property stdset="1"> 210 <property stdset="1">
212 <name>name</name> 211 <name>name</name>
213 <cstring>ToolButton1</cstring> 212 <cstring>ToolButton1</cstring>
214 </property> 213 </property>
215 <property stdset="1"> 214 <property stdset="1">
216 <name>text</name> 215 <name>text</name>
217 <string></string> 216 <string></string>
218 </property> 217 </property>
219 <property stdset="1"> 218 <property stdset="1">
220 <name>pixmap</name> 219 <name>pixmap</name>
221 <pixmap>image1</pixmap> 220 <pixmap>image1</pixmap>
222 </property> 221 </property>
223 </widget> 222 </widget>
224 </hbox> 223 </hbox>
225 </widget> 224 </widget>
226 <widget row="1" column="0" > 225 <widget row="1" column="0" >
227 <class>QLabel</class> 226 <class>QLabel</class>
228 <property stdset="1"> 227 <property stdset="1">
229 <name>name</name> 228 <name>name</name>
230 <cstring>TextLabel2</cstring> 229 <cstring>TextLabel2</cstring>
231 </property> 230 </property>
232 <property stdset="1"> 231 <property stdset="1">
233 <name>autoMask</name> 232 <name>autoMask</name>
234 <bool>true</bool> 233 <bool>true</bool>
235 </property> 234 </property>
236 <property stdset="1"> 235 <property stdset="1">
237 <name>backgroundOrigin</name> 236 <name>backgroundOrigin</name>
238 <enum>ParentOrigin</enum> 237 <enum>ParentOrigin</enum>
239 </property> 238 </property>
240 <property stdset="1"> 239 <property stdset="1">
241 <name>text</name> 240 <name>text</name>
242 <string>Password</string> 241 <string>Password</string>
243 </property> 242 </property>
244 </widget> 243 </widget>
245 </grid> 244 </grid>
246 </widget> 245 </widget>
247 <widget> 246 <widget>
248 <class>Line</class> 247 <class>Line</class>
249 <property stdset="1"> 248 <property stdset="1">
250 <name>name</name> 249 <name>name</name>
251 <cstring>Line1</cstring> 250 <cstring>Line1</cstring>
252 </property> 251 </property>
253 <property stdset="1"> 252 <property stdset="1">
254 <name>orientation</name> 253 <name>orientation</name>
255 <enum>Horizontal</enum> 254 <enum>Horizontal</enum>
256 </property> 255 </property>
257 </widget> 256 </widget>
258 <widget> 257 <widget>
259 <class>QLayoutWidget</class> 258 <class>QLayoutWidget</class>
260 <property stdset="1"> 259 <property stdset="1">
261 <name>name</name> 260 <name>name</name>
262 <cstring>Layout3</cstring> 261 <cstring>Layout3</cstring>
263 </property> 262 </property>
264 <property> 263 <property>
265 <name>layoutSpacing</name> 264 <name>layoutSpacing</name>
266 </property> 265 </property>
267 <hbox> 266 <hbox>
268 <property stdset="1"> 267 <property stdset="1">
269 <name>margin</name> 268 <name>margin</name>
270 <number>0</number> 269 <number>0</number>
271 </property> 270 </property>
272 <property stdset="1"> 271 <property stdset="1">
273 <name>spacing</name> 272 <name>spacing</name>
274 <number>4</number> 273 <number>4</number>
275 </property> 274 </property>
276 <widget> 275 <widget>
277 <class>QPushButton</class> 276 <class>QPushButton</class>
278 <property stdset="1"> 277 <property stdset="1">
279 <name>name</name> 278 <name>name</name>
280 <cstring>m_login</cstring> 279 <cstring>m_login</cstring>
281 </property> 280 </property>
282 <property stdset="1"> 281 <property stdset="1">
283 <name>autoMask</name> 282 <name>autoMask</name>
284 <bool>true</bool> 283 <bool>true</bool>
285 </property> 284 </property>
286 <property stdset="1"> 285 <property stdset="1">
287 <name>text</name> 286 <name>text</name>
288 <string>Login</string> 287 <string>Login</string>
289 </property> 288 </property>
290 </widget> 289 </widget>
291 <widget> 290 <widget>
292 <class>QPushButton</class> 291 <class>QPushButton</class>
293 <property stdset="1"> 292 <property stdset="1">
294 <name>name</name> 293 <name>name</name>
295 <cstring>m_suspend</cstring> 294 <cstring>m_suspend</cstring>
296 </property> 295 </property>
297 <property stdset="1"> 296 <property stdset="1">
298 <name>autoMask</name> 297 <name>autoMask</name>
299 <bool>true</bool> 298 <bool>true</bool>
300 </property> 299 </property>
301 <property stdset="1"> 300 <property stdset="1">
302 <name>text</name> 301 <name>text</name>
303 <string>Suspend</string> 302 <string>Suspend</string>
304 </property> 303 </property>
305 </widget> 304 </widget>
306 <widget> 305 <widget>
307 <class>QPushButton</class> 306 <class>QPushButton</class>
308 <property stdset="1"> 307 <property stdset="1">
309 <name>name</name> 308 <name>name</name>
310 <cstring>m_menu</cstring> 309 <cstring>m_menu</cstring>
311 </property> 310 </property>
312 <property stdset="1"> 311 <property stdset="1">
313 <name>autoMask</name> 312 <name>autoMask</name>
314 <bool>true</bool> 313 <bool>true</bool>
315 </property> 314 </property>
316 <property stdset="1"> 315 <property stdset="1">
317 <name>text</name> 316 <name>text</name>
318 <string>Menu</string> 317 <string>Menu</string>
319 </property> 318 </property>
320 </widget> 319 </widget>
321 </hbox> 320 </hbox>
322 </widget> 321 </widget>
323 <spacer> 322 <spacer>
324 <property> 323 <property>
325 <name>name</name> 324 <name>name</name>
326 <cstring>Spacer1</cstring> 325 <cstring>Spacer1</cstring>
327 </property> 326 </property>
328 <property stdset="1"> 327 <property stdset="1">
329 <name>orientation</name> 328 <name>orientation</name>
330 <enum>Vertical</enum> 329 <enum>Vertical</enum>
331 </property> 330 </property>
332 <property stdset="1"> 331 <property stdset="1">
333 <name>sizeType</name> 332 <name>sizeType</name>
334 <enum>Expanding</enum> 333 <enum>Expanding</enum>
335 </property> 334 </property>
336 <property> 335 <property>
337 <name>sizeHint</name> 336 <name>sizeHint</name>
338 <size> 337 <size>
339 <width>20</width> 338 <width>20</width>
340 <height>20</height> 339 <height>20</height>
341 </size> 340 </size>
342 </property> 341 </property>
343 </spacer> 342 </spacer>
344 </vbox> 343 </vbox>
345 </widget> 344 </widget>
346 <widget> 345 <widget>
347 <class>QFrame</class> 346 <class>QFrame</class>
348 <property stdset="1"> 347 <property stdset="1">
349 <name>name</name> 348 <name>name</name>
350 <cstring>m_taskbar</cstring> 349 <cstring>m_taskbar</cstring>
351 </property> 350 </property>
352 <property stdset="1"> 351 <property stdset="1">
353 <name>frameShape</name> 352 <name>frameShape</name>
354 <enum>NoFrame</enum> 353 <enum>NoFrame</enum>
355 </property> 354 </property>
356 <property stdset="1"> 355 <property stdset="1">
357 <name>frameShadow</name> 356 <name>frameShadow</name>
358 <enum>Raised</enum> 357 <enum>Raised</enum>
359 </property> 358 </property>
360 <property stdset="1"> 359 <property stdset="1">
361 <name>margin</name> 360 <name>margin</name>
362 <number>0</number> 361 <number>0</number>
363 </property> 362 </property>
364 </widget> 363 </widget>
365 </vbox> 364 </vbox>
366</widget> 365</widget>
367<images> 366<images>
368 <image> 367 <image>
369 <name>image0</name> 368 <name>image0</name>
370 <data format="XPM.GZ" length="394">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022230543251d2e253d856405bffcbc54105b19c856360003b0141a808a2983b03284848a298304c108240e15033141045829580cac07ac4e590f5d0c22a4876caf32d45898797a48044caf32c22948e629c39d0457a78ce60f65b8f104ec50d6c366af1e865eb4b0aab5e602008bcd444d</data> 369 <data format="XPM.GZ" length="394">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022230543251d2e253d856405bffcbc54105b19c856360003b0141a808a2983b03284848a298304c108240e15033141045829580cac07ac4e590f5d0c22a4876caf32d45898797a48044caf32c22948e629c39d0457a78ce60f65b8f104ec50d6c366af1e865eb4b0aab5e602008bcd444d</data>
371 </image> 370 </image>
372 <image> 371 <image>
373 <name>image1</name> 372 <name>image1</name>
374 <data format="XPM.GZ" length="341">789c558fcd0a02310c84ef7d8ad0b915c9bae84d7c04c5a3201e4275d1c32ab8eb41c477b73fa96e43a1f30d4d266d1ced771b728d194619af9efc451ee44ecfbe7f1d8eebb7b1ed92c259506b67c63279dade6fe7a81134e6a9224ac4ae2bc85565075004901c8820731069a648b490effc26eac4a25dcc195373c94231b87a8349fabf894b7a3d27a76af8cf01eb0e534757d70da1bf8a933f2bf30509e84b68</data> 373 <data format="XPM.GZ" length="341">789c558fcd0a02310c84ef7d8ad0b915c9bae84d7c04c5a3201e4275d1c32ab8eb41c477b73fa96e43a1f30d4d266d1ced771b728d194619af9efc451ee44ecfbe7f1d8eebb7b1ed92c259506b67c63279dade6fe7a81134e6a9224ac4ae2bc85565075004901c8820731069a648b490effc26eac4a25dcc195373c94231b87a8349fabf894b7a3d27a76af8cf01eb0e534757d70da1bf8a933f2bf30509e84b68</data>
375 </image> 374 </image>
376</images> 375</images>
377<connections> 376<connections>
378 <connection> 377 <connection>
379 <sender>ToolButton1</sender> 378 <sender>ToolButton1</sender>
380 <signal>clicked()</signal> 379 <signal>clicked()</signal>
381 <receiver>m_password</receiver> 380 <receiver>m_password</receiver>
382 <slot>clear()</slot> 381 <slot>clear()</slot>
383 </connection> 382 </connection>
384 <connection> 383 <connection>
385 <sender>ToolButton3</sender> 384 <sender>ToolButton3</sender>
386 <signal>toggled(bool)</signal> 385 <signal>toggled(bool)</signal>
387 <receiver>LoginWindow</receiver> 386 <receiver>LoginWindow</receiver>
388 <slot>toggleEchoMode(bool)</slot> 387 <slot>toggleEchoMode(bool)</slot>
389 </connection> 388 </connection>
390 <connection> 389 <connection>
391 <sender>m_suspend</sender> 390 <sender>m_suspend</sender>
392 <signal>clicked()</signal> 391 <signal>clicked()</signal>
393 <receiver>LoginWindow</receiver> 392 <receiver>LoginWindow</receiver>
394 <slot>suspend()</slot> 393 <slot>suspend()</slot>
395 </connection> 394 </connection>
396 <connection> 395 <connection>
397 <sender>m_password</sender> 396 <sender>m_password</sender>
398 <signal>returnPressed()</signal> 397 <signal>returnPressed()</signal>
399 <receiver>m_login</receiver> 398 <receiver>m_login</receiver>
400 <slot>animateClick()</slot> 399 <slot>animateClick()</slot>
401 </connection> 400 </connection>
402 <connection> 401 <connection>
403 <sender>m_login</sender> 402 <sender>m_login</sender>
404 <signal>clicked()</signal> 403 <signal>clicked()</signal>
405 <receiver>LoginWindow</receiver> 404 <receiver>LoginWindow</receiver>
406 <slot>login()</slot> 405 <slot>login()</slot>
407 </connection> 406 </connection>
408 <connection> 407 <connection>
409 <sender>m_user</sender> 408 <sender>m_user</sender>
410 <signal>activated(int)</signal> 409 <signal>activated(int)</signal>
411 <receiver>m_password</receiver> 410 <receiver>m_password</receiver>
412 <slot>setFocus()</slot> 411 <slot>setFocus()</slot>
413 </connection> 412 </connection>
414 <slot access="public">login()</slot> 413 <slot access="public">login()</slot>
415 <slot access="public">suspend()</slot> 414 <slot access="public">suspend()</slot>
416 <slot access="public">toggleEchoMode(bool)</slot> 415 <slot access="public">toggleEchoMode(bool)</slot>
417</connections> 416</connections>
418</UI> 417</UI>
diff --git a/core/opie-login/loginwindowimpl.cpp b/core/opie-login/loginwindowimpl.cpp
index fe2906a..577cb41 100644
--- a/core/opie-login/loginwindowimpl.cpp
+++ b/core/opie-login/loginwindowimpl.cpp
@@ -1,204 +1,247 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> 3             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This file is free software; you can 5 _;:,     .>    :=|. This file is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU General Public 7:`=1 )Y*s>-.--   : the terms of the GNU General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This file is distributed in the hope that 12    .i_,=:_.      -<s. This file is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
17..}^=.=       =       ; Public License for more details. 17..}^=.=       =       ; Public License for more details.
18++=   -.     .`     .: 18++=   -.     .`     .:
19 :     =  ...= . :.=- You should have received a copy of the GNU 19 :     =  ...= . :.=- You should have received a copy of the GNU
20 -.   .:....=;==+<; General Public License along with this file; 20 -.   .:....=;==+<; General Public License along with this file;
21  -_. . .   )=.  = see the file COPYING. If not, write to the 21  -_. . .   )=.  = see the file COPYING. If not, write to the
22    --        :-=` Free Software Foundation, Inc., 22    --        :-=` Free Software Foundation, Inc.,
23 59 Temple Place - Suite 330, 23 59 Temple Place - Suite 330,
24 Boston, MA 02111-1307, USA. 24 Boston, MA 02111-1307, USA.
25 25
26*/ 26*/
27 27
28#include <qapplication.h> 28#include <qapplication.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30#include <qlayout.h> 30#include <qlayout.h>
31#include <qframe.h> 31#include <qframe.h>
32#include <qlineedit.h> 32#include <qlineedit.h>
33#include <qtimer.h> 33#include <qtimer.h>
34#include <qcombobox.h> 34#include <qcombobox.h>
35#include <qpixmap.h> 35#include <qpixmap.h>
36#include <qlabel.h> 36#include <qlabel.h>
37#include <qpopupmenu.h> 37#include <qpopupmenu.h>
38#include <qmessagebox.h> 38#include <qmessagebox.h>
39#include <qimage.h> 39#include <qimage.h>
40#if QT_VERSION < 300
41#include <qgfx_qws.h>
42#endif
43#include <qwindowsystem_qws.h>
40 44
41#include <qpe/resource.h> 45#include <qpe/resource.h>
42#include <qpe/qcopenvelope_qws.h> 46#include <qpe/qcopenvelope_qws.h>
43#include <qpe/config.h> 47#include <qpe/config.h>
44 48
45#include <opie/odevice.h> 49#include <opie/odevice.h>
46 50
47#include <stdio.h> 51#include <stdio.h>
48#include <stdlib.h> 52#include <stdlib.h>
49 53
50#include "loginwindowimpl.h" 54#include "loginwindowimpl.h"
51#include "loginapplication.h" 55#include "loginapplication.h"
52#include "inputmethods.h" 56#include "inputmethods.h"
53 57
54using namespace Opie; 58using namespace Opie;
55 59
56 60
57LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_Customize | WStyle_NoBorder | WDestructiveClose ) 61LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_Customize | WStyle_NoBorder | WDestructiveClose )
58{ 62{
59 QPopupMenu *pop = new QPopupMenu ( this ); 63 QPopupMenu *pop = new QPopupMenu ( this );
60 pop-> insertItem ( tr( "Restart" ), this, SLOT( restart ( ))); 64 pop-> insertItem ( tr( "Restart" ), this, SLOT( restart ( )));
61 pop-> insertItem ( tr( "Quit" ), this, SLOT( quit ( ))); 65 pop-> insertItem ( tr( "Quit" ), this, SLOT( quit ( )));
62 m_menu-> setPopup ( pop ); 66 m_menu-> setPopup ( pop );
63 67
68 QCopChannel *channel = new QCopChannel ( "QPE/TaskBar", this );
69 connect ( channel, SIGNAL( received ( const QCString &, const QByteArray & )), this, SLOT( receive ( const QCString &, const QByteArray & )));
70
64 QHBoxLayout *lay = new QHBoxLayout ( m_taskbar, 4, 4 ); 71 QHBoxLayout *lay = new QHBoxLayout ( m_taskbar, 4, 4 );
65 m_input = new InputMethods ( m_taskbar ); 72 m_input = new InputMethods ( m_taskbar );
73 connect ( m_input, SIGNAL( inputToggled ( bool )), this, SLOT( calcMaxWindowRect ( )));
66 lay-> addWidget ( m_input ); 74 lay-> addWidget ( m_input );
67 lay-> addStretch ( 10 ); 75 lay-> addStretch ( 10 );
68 76
69 setActiveWindow ( ); 77 setActiveWindow ( );
70 m_password-> setFocus ( ); 78 m_password-> setFocus ( );
71 79
72 m_user-> insertStringList ( lApp-> allUsers ( )); 80 m_user-> insertStringList ( lApp-> allUsers ( ));
73 81
74 QTimer::singleShot ( 0, this, SLOT( showIM ( ))); 82 QTimer::singleShot ( 0, this, SLOT( showIM ( )));
75 83
76 QString opiedir = ::getenv ( "OPIEDIR" ); 84 QString opiedir = ::getenv ( "OPIEDIR" );
77 QPixmap bgpix ( opiedir + "/pics/launcher/opie-background.jpg" ); 85 QPixmap bgpix ( opiedir + "/pics/launcher/opie-background.jpg" );
78 86
79 if ( !bgpix. isNull ( )) 87 if ( !bgpix. isNull ( ))
80 setBackgroundPixmap ( bgpix ); 88 setBackgroundPixmap ( bgpix );
81 89
82 m_caption-> setText ( m_caption-> text ( ) + tr( "<center>%1 %2</center>" ). arg ( ODevice::inst ( )-> systemString ( )). arg ( ODevice::inst ( )-> systemVersionString ( ))); 90 m_caption-> setText ( m_caption-> text ( ) + tr( "<center>%1 %2</center>" ). arg ( ODevice::inst ( )-> systemString ( )). arg ( ODevice::inst ( )-> systemVersionString ( )));
83 91
84 Config cfg ( "opie-login" ); 92 Config cfg ( "opie-login" );
85 cfg. setGroup ( "General" ); 93 cfg. setGroup ( "General" );
86 QString last = cfg. readEntry ( "LastLogin" ); 94 QString last = cfg. readEntry ( "LastLogin" );
87 95
88 if ( !last. isEmpty ( )) 96 if ( !last. isEmpty ( ))
89 m_user-> setEditText ( last ); 97 m_user-> setEditText ( last );
98
99 calcMaxWindowRect ( );
90} 100}
91 101
92LoginWindowImpl::~LoginWindowImpl ( ) 102LoginWindowImpl::~LoginWindowImpl ( )
93{ 103{
94} 104}
95 105
106
107void LoginWindowImpl::receive ( const QCString &msg, const QByteArray &data )
108{
109 QDataStream stream ( data, IO_ReadOnly );
110
111 if ( msg == "hideInputMethod()" )
112 m_input-> hideInputMethod ( );
113 else if ( msg == "showInputMethod()" )
114 m_input-> showInputMethod ( );
115 else if ( msg == "reloadInputMethods()" )
116 m_input-> loadInputMethods ( );
117}
118
119void LoginWindowImpl::calcMaxWindowRect ( )
120{
121#ifdef Q_WS_QWS
122 QRect wr;
123 int displayWidth = qApp-> desktop ( )-> width ( );
124 QRect ir = m_input-> inputRect ( );
125 if ( ir.isValid() )
126 wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 );
127 else
128 wr.setCoords( 0, 0, displayWidth-1, m_taskbar->y()-1 );
129
130#if QT_VERSION < 300
131 wr = qt_screen-> mapToDevice ( wr, QSize ( qt_screen-> width ( ), qt_screen-> height ( )));
132#endif
133
134 QWSServer::setMaxWindowRect( wr );
135#endif
136}
137
138
96void LoginWindowImpl::keyPressEvent ( QKeyEvent *e ) 139void LoginWindowImpl::keyPressEvent ( QKeyEvent *e )
97{ 140{
98 switch ( e-> key ( )) { 141 switch ( e-> key ( )) {
99 case HardKey_Suspend: suspend ( ); 142 case HardKey_Suspend: suspend ( );
100 break; 143 break;
101 case HardKey_Backlight: backlight ( ); 144 case HardKey_Backlight: backlight ( );
102 break; 145 break;
103 default: e-> ignore ( ); 146 default: e-> ignore ( );
104 break; 147 break;
105 } 148 }
106 LoginWindow::keyPressEvent ( e ); 149 LoginWindow::keyPressEvent ( e );
107} 150}
108 151
109 152
110void LoginWindowImpl::toggleEchoMode ( bool t ) 153void LoginWindowImpl::toggleEchoMode ( bool t )
111{ 154{
112 m_password-> setEchoMode ( t ? QLineEdit::Normal : QLineEdit::Password ); 155 m_password-> setEchoMode ( t ? QLineEdit::Normal : QLineEdit::Password );
113} 156}
114 157
115void LoginWindowImpl::showIM ( ) 158void LoginWindowImpl::showIM ( )
116{ 159{
117 m_input-> showInputMethod ( ); 160 m_input-> showInputMethod ( );
118} 161}
119 162
120void LoginWindowImpl::restart ( ) 163void LoginWindowImpl::restart ( )
121{ 164{
122 qApp-> quit ( ); 165 qApp-> quit ( );
123} 166}
124 167
125void LoginWindowImpl::quit ( ) 168void LoginWindowImpl::quit ( )
126{ 169{
127 lApp-> quitToConsole ( ); 170 lApp-> quitToConsole ( );
128} 171}
129 172
130void LoginWindowImpl::suspend ( ) 173void LoginWindowImpl::suspend ( )
131{ 174{
132 ODevice::inst ( )-> suspend ( ); 175 ODevice::inst ( )-> suspend ( );
133 176
134 QCopEnvelope e("QPE/System", "setBacklight(int)"); 177 QCopEnvelope e("QPE/System", "setBacklight(int)");
135 e << -3; // Force on 178 e << -3; // Force on
136} 179}
137 180
138void LoginWindowImpl::backlight ( ) 181void LoginWindowImpl::backlight ( )
139{ 182{
140 QCopEnvelope e("QPE/System", "setBacklight(int)"); 183 QCopEnvelope e("QPE/System", "setBacklight(int)");
141 e << -2; // toggle 184 e << -2; // toggle
142} 185}
143 186
144class WaitLogo : public QLabel { 187class WaitLogo : public QLabel {
145public: 188public:
146 WaitLogo ( ) : QLabel ( 0, "wait hack!", WStyle_Customize | WStyle_NoBorder | WStyle_Tool ) 189 WaitLogo ( ) : QLabel ( 0, "wait hack!", WStyle_Customize | WStyle_NoBorder | WStyle_Tool )
147 { 190 {
148 QImage img = Resource::loadImage ( "launcher/new_wait" ); 191 QImage img = Resource::loadImage ( "launcher/new_wait" );
149 QPixmap pix; 192 QPixmap pix;
150 pix. convertFromImage ( img ); 193 pix. convertFromImage ( img );
151 setPixmap ( pix ); 194 setPixmap ( pix );
152 setAlignment ( AlignCenter ); 195 setAlignment ( AlignCenter );
153 move ( 0, 0 ); 196 move ( 0, 0 );
154 resize ( qApp-> desktop ( )-> width ( ), qApp-> desktop ( )-> height ( )); 197 resize ( qApp-> desktop ( )-> width ( ), qApp-> desktop ( )-> height ( ));
155 198
156 m_visible = false; 199 m_visible = false;
157 show ( ); 200 show ( );
158 } 201 }
159 202
160 virtual void showEvent ( QShowEvent *e ) 203 virtual void showEvent ( QShowEvent *e )
161 { 204 {
162 QLabel::showEvent ( e ); 205 QLabel::showEvent ( e );
163 m_visible = true; 206 m_visible = true;
164 } 207 }
165 208
166 virtual void paintEvent ( QPaintEvent *e ) 209 virtual void paintEvent ( QPaintEvent *e )
167 { 210 {
168 QLabel::paintEvent ( e ); 211 QLabel::paintEvent ( e );
169 if ( m_visible ) 212 if ( m_visible )
170 qApp-> quit ( ); 213 qApp-> quit ( );
171 } 214 }
172 215
173private: 216private:
174 bool m_visible; 217 bool m_visible;
175}; 218};
176 219
177void LoginWindowImpl::login ( ) 220void LoginWindowImpl::login ( )
178{ 221{
179 const char *user = ::strdup ( m_user-> currentText ( ). local8Bit ( )); 222 const char *user = ::strdup ( m_user-> currentText ( ). local8Bit ( ));
180 const char *pass = ::strdup ( m_password-> text ( ). local8Bit ( )); 223 const char *pass = ::strdup ( m_password-> text ( ). local8Bit ( ));
181 224
182 if ( !user || !user [0] ) 225 if ( !user || !user [0] )
183 return; 226 return;
184 if ( !pass ) 227 if ( !pass )
185 pass = ""; 228 pass = "";
186 229
187 if ( lApp-> checkPassword ( user, pass )) { 230 if ( lApp-> checkPassword ( user, pass )) {
188 Config cfg ( "opie-login" ); 231 Config cfg ( "opie-login" );
189 cfg. setGroup ( "General" ); 232 cfg. setGroup ( "General" );
190 cfg. writeEntry ( "LastLogin", user ); 233 cfg. writeEntry ( "LastLogin", user );
191 cfg. write ( ); 234 cfg. write ( );
192 235
193 lApp-> setLoginAs ( user ); 236 lApp-> setLoginAs ( user );
194 237
195 // Draw a big wait icon, the image can be altered in later revisions 238 // Draw a big wait icon, the image can be altered in later revisions
196 m_input-> hideInputMethod ( ); 239 m_input-> hideInputMethod ( );
197 new WaitLogo ( ); 240 new WaitLogo ( );
198 // WaitLogo::showEvent() calls qApp-> quit() 241 // WaitLogo::showEvent() calls qApp-> quit()
199 } 242 }
200 else { 243 else {
201 QMessageBox::warning ( this, tr( "Wrong password" ), tr( "The given password is incorrect." )); 244 QMessageBox::warning ( this, tr( "Wrong password" ), tr( "The given password is incorrect." ));
202 m_password-> clear ( ); 245 m_password-> clear ( );
203 } 246 }
204} 247}
diff --git a/core/opie-login/loginwindowimpl.h b/core/opie-login/loginwindowimpl.h
index e769b03..df8dbbb 100644
--- a/core/opie-login/loginwindowimpl.h
+++ b/core/opie-login/loginwindowimpl.h
@@ -1,61 +1,63 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> 3             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This file is free software; you can 5 _;:,     .>    :=|. This file is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU General Public 7:`=1 )Y*s>-.--   : the terms of the GNU General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This file is distributed in the hope that 12    .i_,=:_.      -<s. This file is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
17..}^=.=       =       ; Public License for more details. 17..}^=.=       =       ; Public License for more details.
18++=   -.     .`     .: 18++=   -.     .`     .:
19 :     =  ...= . :.=- You should have received a copy of the GNU 19 :     =  ...= . :.=- You should have received a copy of the GNU
20 -.   .:....=;==+<; General Public License along with this file; 20 -.   .:....=;==+<; General Public License along with this file;
21  -_. . .   )=.  = see the file COPYING. If not, write to the 21  -_. . .   )=.  = see the file COPYING. If not, write to the
22    --        :-=` Free Software Foundation, Inc., 22    --        :-=` Free Software Foundation, Inc.,
23 59 Temple Place - Suite 330, 23 59 Temple Place - Suite 330,
24 Boston, MA 02111-1307, USA. 24 Boston, MA 02111-1307, USA.
25 25
26*/ 26*/
27 27
28#ifndef __OPIE_LOGINWINDOW_IMPL_H__ 28#ifndef __OPIE_LOGINWINDOW_IMPL_H__
29#define __OPIE_LOGINWINDOW_IMPL_H__ 29#define __OPIE_LOGINWINDOW_IMPL_H__
30 30
31#include "loginwindow.h" 31#include "loginwindow.h"
32 32
33class InputMethods; 33class InputMethods;
34 34
35class LoginWindowImpl : public LoginWindow { 35class LoginWindowImpl : public LoginWindow {
36 Q_OBJECT 36 Q_OBJECT
37 37
38public: 38public:
39 LoginWindowImpl ( ); 39 LoginWindowImpl ( );
40 virtual ~LoginWindowImpl ( ); 40 virtual ~LoginWindowImpl ( );
41 41
42protected slots: 42protected slots:
43 void restart ( ); 43 void restart ( );
44 void quit ( ); 44 void quit ( );
45 void showIM ( ); 45 void showIM ( );
46 void suspend ( ); 46 void suspend ( );
47 void backlight ( ); 47 void backlight ( );
48 void login ( ); 48 void login ( );
49 void toggleEchoMode ( bool ); 49 void toggleEchoMode ( bool );
50 void calcMaxWindowRect ( );
51 void receive ( const QCString &, const QByteArray & );
50 52
51protected: 53protected:
52 virtual void keyPressEvent ( QKeyEvent *e ); 54 virtual void keyPressEvent ( QKeyEvent *e );
53 55
54 QStringList getAllUsers ( ); 56 QStringList getAllUsers ( );
55 bool changeIdentity ( const char *user ); 57 bool changeIdentity ( const char *user );
56 58
57private: 59private:
58 InputMethods *m_input; 60 InputMethods *m_input;
59}; 61};
60 62
61#endif 63#endif