summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opierdesktop/qtwin.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/noncore/net/opierdesktop/qtwin.cpp b/noncore/net/opierdesktop/qtwin.cpp
index 54a5a03..71ba5a5 100644
--- a/noncore/net/opierdesktop/qtwin.cpp
+++ b/noncore/net/opierdesktop/qtwin.cpp
@@ -1,564 +1,564 @@
1/* 1/*
2 rdesktop: A Remote Desktop Protocol client. 2 rdesktop: A Remote Desktop Protocol client.
3 User interface services - X Window System 3 User interface services - X Window System
4 Copyright (C) Matthew Chapman 1999-2002 4 Copyright (C) Matthew Chapman 1999-2002
5 qt.cpp by Jay Sorg 5 qt.cpp by Jay Sorg
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20*/ 20*/
21 21
22#include "rdesktop.h" 22#include "rdesktop.h"
23#include <qpe/qpeapplication.h> 23#include <qpe/qpeapplication.h>
24#include <qmainwindow.h> 24#include <qmainwindow.h>
25#include <qwidget.h> 25#include <qwidget.h>
26#include <qpainter.h> 26#include <qpainter.h>
27#include <qimage.h> 27#include <qimage.h>
28#include <qsocketnotifier.h> 28#include <qsocketnotifier.h>
29#include <qscrollview.h> 29#include <qscrollview.h>
30#include <qmessagebox.h> 30#include <qmessagebox.h>
31#include <qpushbutton.h> 31#include <qpushbutton.h>
32#include <qlineedit.h> 32#include <qlineedit.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qlabel.h> 34#include <qlabel.h>
35#include <qfile.h> 35#include <qfile.h>
36#include <qcheckbox.h> 36#include <qcheckbox.h>
37#include <qpopupmenu.h> 37#include <qpopupmenu.h>
38#include "qtwin.h" 38#include "qtwin.h"
39#include <stdlib.h> 39#include <stdlib.h>
40 40
41uint32 flags; 41uint32 flags;
42char server[64] = ""; 42char server[64] = "";
43char domain[16] = ""; 43char domain[16] = "";
44char password[16] = ""; 44char password[16] = "";
45char shell[128] = ""; 45char shell[128] = "";
46char directory[32] = ""; 46char directory[32] = "";
47 47
48extern int g_width; 48extern int g_width;
49extern int g_height; 49extern int g_height;
50extern int server_bpp; 50extern int server_bpp;
51extern BOOL fullscreen; 51extern BOOL fullscreen;
52extern char username[]; 52extern char username[];
53int global_sock; 53int global_sock;
54 54
55QSocketNotifier* SocketNotifier; 55QSocketNotifier* SocketNotifier;
56QPEApplication* App; 56QPEApplication* App;
57QMyMainWindow* MW; 57QMyMainWindow* MW;
58QMyScrollView* SV; 58QMyScrollView* SV;
59struct QColorMap 59struct QColorMap
60{ 60{
61 uint32 RGBColors[256]; 61 uint32 RGBColors[256];
62 int NumColors; 62 int NumColors;
63}; 63};
64QColorMap* CM; 64QColorMap* CM;
65uint8* BS; 65uint8* BS;
66int clipx; 66int clipx;
67int clipy; 67int clipy;
68int clipcx; 68int clipcx;
69int clipcy; 69int clipcy;
70 70
71struct bitmap 71struct bitmap
72{ 72{
73 int w; 73 int w;
74 int h; 74 int h;
75 uint8* data; 75 uint8* data;
76}; 76};
77 77
78BOOL owncolmap = False; 78BOOL owncolmap = False;
79 79
80//***************************************************************************** 80//*****************************************************************************
81void CleanString(QString* Item) 81void CleanString(QString* Item)
82{ 82{
83 int i; 83 int i;
84 84
85 i = Item->length() - 1; 85 i = Item->length() - 1;
86 while (i >= 0) 86 while (i >= 0)
87 { 87 {
88 if (Item->at(i) == 10 || Item->at(i) == 13) 88 if (Item->at(i) == 10 || Item->at(i) == 13)
89 Item->remove(i, 1); 89 Item->remove(i, 1);
90 i--; 90 i--;
91 } 91 }
92} 92}
93 93
94//***************************************************************************** 94//*****************************************************************************
95QMyDialog::QMyDialog(QWidget* parent) : QDialog(parent, "Settings", true) 95QMyDialog::QMyDialog(QWidget* parent) : QDialog(parent, "Settings", true)
96{ 96{
97 setCaption( tr( "Configuration" ) ); 97 setCaption( tr( "Configuration" ) );
98 int i, j; 98 int i, j;
99 char* home; 99 char* home;
100 char Text[256]; 100 char Text[256];
101 QString Line; 101 QString Line;
102 QString ItemName; 102 QString ItemName;
103 QString ItemValue; 103 QString ItemValue;
104 104
105 // resize dialog 105 // resize dialog
106 resize(230, 270); 106 resize(230, 270);
107 // main list box 107 // main list box
108 ListBox = new QListBox(this); 108 ListBox = new QListBox(this);
109 ListBox->move(10, 10); 109 ListBox->move(10, 10);
110 ListBox->resize(200, 100); 110 ListBox->resize(200, 100);
111 connect(ListBox, SIGNAL(selectionChanged()), this, SLOT(ListBoxChanged())); 111 connect(ListBox, SIGNAL(selectionChanged()), this, SLOT(ListBoxChanged()));
112 connect(ListBox, SIGNAL(selected(int)), this, SLOT(ListBoxSelected(int))); 112 connect(ListBox, SIGNAL(selected(int)), this, SLOT(ListBoxSelected(int)));
113 // server 113 // server
114 Label1 = new QLabel(this); 114 Label1 = new QLabel(this);
115 Label1->setText("Server Desc"); 115 Label1->setText( tr("Server Desc") );
116 Label1->move(10, 120); 116 Label1->move(10, 120);
117 Label1->resize(100, 20); 117 Label1->resize(100, 20);
118 ServerNameEdit = new QLineEdit(this); 118 ServerNameEdit = new QLineEdit(this);
119 ServerNameEdit->move(75, 120); 119 ServerNameEdit->move(75, 120);
120 ServerNameEdit->resize(100, 20); 120 ServerNameEdit->resize(100, 20);
121 // username 121 // username
122 Label2 = new QLabel(this); 122 Label2 = new QLabel(this);
123 Label2->setText("User Name"); 123 Label2->setText( tr("User Name") );
124 Label2->move(10, 150); 124 Label2->move(10, 150);
125 Label2->resize(100, 20); 125 Label2->resize(100, 20);
126 UserNameEdit = new QLineEdit(this); 126 UserNameEdit = new QLineEdit(this);
127 UserNameEdit->move(75, 150); 127 UserNameEdit->move(75, 150);
128 UserNameEdit->resize(100, 20); 128 UserNameEdit->resize(100, 20);
129 // ip 129 // ip
130 Label3 = new QLabel(this); 130 Label3 = new QLabel(this);
131 Label3->setText("Server IP"); 131 Label3->setText( tr("Server Address") );
132 Label3->move(10, 180); 132 Label3->move(10, 180);
133 Label3->resize(100, 20); 133 Label3->resize(100, 20);
134 IPEdit = new QLineEdit(this); 134 IPEdit = new QLineEdit(this);
135 IPEdit->move(75, 180); 135 IPEdit->move(75, 180);
136 IPEdit->resize(100, 20); 136 IPEdit->resize(100, 20);
137 // width and height 137 // width and height
138 WidthHeightBox = new QComboBox(this); 138 WidthHeightBox = new QComboBox(this);
139 WidthHeightBox->move(10, 210); 139 WidthHeightBox->move(10, 210);
140 WidthHeightBox->resize(100, 20); 140 WidthHeightBox->resize(100, 20);
141 WidthHeightBox->insertItem("240x320"); 141 WidthHeightBox->insertItem("240x320");
142 WidthHeightBox->insertItem("640x480"); 142 WidthHeightBox->insertItem("640x480");
143 WidthHeightBox->insertItem("800x600"); 143 WidthHeightBox->insertItem("800x600");
144 connect(WidthHeightBox, SIGNAL(activated(int)), this, SLOT(ComboChanged(int))); 144 connect(WidthHeightBox, SIGNAL(activated(int)), this, SLOT(ComboChanged(int)));
145 WidthHeightBox->setCurrentItem(1); 145 WidthHeightBox->setCurrentItem(1);
146 WidthEdit = new QLineEdit(this); 146 WidthEdit = new QLineEdit(this);
147 WidthEdit->move(110, 210); 147 WidthEdit->move(110, 210);
148 WidthEdit->resize(30, 20); 148 WidthEdit->resize(30, 20);
149 WidthEdit->setText("800"); 149 WidthEdit->setText("800");
150 HeightEdit = new QLineEdit(this); 150 HeightEdit = new QLineEdit(this);
151 HeightEdit->move(140, 210); 151 HeightEdit->move(140, 210);
152 HeightEdit->resize(30, 20); 152 HeightEdit->resize(30, 20);
153 HeightEdit->setText("600"); 153 HeightEdit->setText("600");
154 // add to list button 154 // add to list button
155 AddButton = new QPushButton(this); 155 AddButton = new QPushButton(this);
156 AddButton->move(180, 120); 156 AddButton->move(180, 120);
157 AddButton->resize(50, 20); 157 AddButton->resize(50, 20);
158 AddButton->setText("Add"); 158 AddButton->setText(tr("Add", "Add Connection"));
159 connect(AddButton, SIGNAL(clicked()), this, SLOT(AddClicked())); 159 connect(AddButton, SIGNAL(clicked()), this, SLOT(AddClicked()));
160 // change list item button 160 // change list item button
161 EditButton = new QPushButton(this); 161 EditButton = new QPushButton(this);
162 EditButton->move(180, 140); 162 EditButton->move(180, 140);
163 EditButton->resize(50, 20); 163 EditButton->resize(50, 20);
164 EditButton->setText("Edit"); 164 EditButton->setText(tr("Edit"));
165 connect(EditButton, SIGNAL(clicked()), this, SLOT(EditClicked())); 165 connect(EditButton, SIGNAL(clicked()), this, SLOT(EditClicked()));
166 // save to file button 166 // save to file button
167 SaveButton = new QPushButton(this); 167 SaveButton = new QPushButton(this);
168 SaveButton->move(180, 160); 168 SaveButton->move(180, 160);
169 SaveButton->resize(50, 20); 169 SaveButton->resize(50, 20);
170 SaveButton->setText("Save"); 170 SaveButton->setText(tr("Save"));
171 connect(SaveButton, SIGNAL(clicked()), this, SLOT(SaveClicked())); 171 connect(SaveButton, SIGNAL(clicked()), this, SLOT(SaveClicked()));
172 // remove an item button 172 // remove an item button
173 RemoveButton = new QPushButton(this); 173 RemoveButton = new QPushButton(this);
174 RemoveButton->move(180, 180); 174 RemoveButton->move(180, 180);
175 RemoveButton->resize(50, 20); 175 RemoveButton->resize(50, 20);
176 RemoveButton->setText("Remove"); 176 RemoveButton->setText(tr("Remove"));
177 connect(RemoveButton, SIGNAL(clicked()), this, SLOT(RemoveClicked())); 177 connect(RemoveButton, SIGNAL(clicked()), this, SLOT(RemoveClicked()));
178 // full screen check box 178 // full screen check box
179 FullScreenCheckBox = new QCheckBox(this, "Full Screen"); 179 FullScreenCheckBox = new QCheckBox(this, "Full Screen");
180 FullScreenCheckBox->setText("Full Screen"); 180 FullScreenCheckBox->setText(tr("Full Screen"));
181 FullScreenCheckBox->move(10, 230); 181 FullScreenCheckBox->move(10, 230);
182 // ok button 182 // ok button
183 183
184 for (i = 0; i < 10; i++) 184 for (i = 0; i < 10; i++)
185 { 185 {
186 ConnectionList[i] = new QMyConnectionItem; 186 ConnectionList[i] = new QMyConnectionItem;
187 ConnectionList[i]->ServerName = ""; 187 ConnectionList[i]->ServerName = "";
188 ConnectionList[i]->UserName = ""; 188 ConnectionList[i]->UserName = "";
189 ConnectionList[i]->ServerIP = ""; 189 ConnectionList[i]->ServerIP = "";
190 ConnectionList[i]->Width = 0; 190 ConnectionList[i]->Width = 0;
191 ConnectionList[i]->Height = 0; 191 ConnectionList[i]->Height = 0;
192 ConnectionList[i]->FullScreen = 0; 192 ConnectionList[i]->FullScreen = 0;
193 } 193 }
194 home = getenv("HOME"); 194 home = getenv("HOME");
195 if (home != NULL) 195 if (home != NULL)
196 { 196 {
197 sprintf(Text, "%s/rdesktop.ini", home); 197 sprintf(Text, "%s/rdesktop.ini", home);
198 QFile* File = new QFile(Text); 198 QFile* File = new QFile(Text);
199 if (File->open(IO_ReadOnly)) 199 if (File->open(IO_ReadOnly))
200 { 200 {
201 i = -1; 201 i = -1;
202 while (!File->atEnd()) 202 while (!File->atEnd())
203 { 203 {
204 File->readLine(Line, 255); 204 File->readLine(Line, 255);
205 j = Line.find("="); 205 j = Line.find("=");
206 if (j > 0) 206 if (j > 0)
207 { 207 {
208 ItemName = Line.mid(0, j); 208 ItemName = Line.mid(0, j);
209 CleanString(&ItemName); 209 CleanString(&ItemName);
210 ItemValue = Line.mid(j + 1); 210 ItemValue = Line.mid(j + 1);
211 CleanString(&ItemValue); 211 CleanString(&ItemValue);
212 if (ItemName == "Server") 212 if (ItemName == "Server")
213 { 213 {
214 i++; 214 i++;
215 ConnectionList[i]->ServerName = ItemValue; 215 ConnectionList[i]->ServerName = ItemValue;
216 ListBox->insertItem(ItemValue); 216 ListBox->insertItem(ItemValue);
217 } 217 }
218 else if (ItemName == "UserName") 218 else if (ItemName == "UserName")
219 ConnectionList[i]->UserName = ItemValue; 219 ConnectionList[i]->UserName = ItemValue;
220 else if (ItemName == "Width") 220 else if (ItemName == "Width")
221 ConnectionList[i]->Width = ItemValue.toInt(); 221 ConnectionList[i]->Width = ItemValue.toInt();
222 else if (ItemName == "Height") 222 else if (ItemName == "Height")
223 ConnectionList[i]->Height = ItemValue.toInt(); 223 ConnectionList[i]->Height = ItemValue.toInt();
224 else if (ItemName == "IP") 224 else if (ItemName == "IP")
225 ConnectionList[i]->ServerIP = ItemValue; 225 ConnectionList[i]->ServerIP = ItemValue;
226 else if (ItemName == "FullScreen") 226 else if (ItemName == "FullScreen")
227 ConnectionList[i]->FullScreen = (ItemValue != "0"); 227 ConnectionList[i]->FullScreen = (ItemValue != "0");
228 } 228 }
229 } 229 }
230 } 230 }
231 delete File; 231 delete File;
232 } 232 }
233} 233}
234 234
235//***************************************************************************** 235//*****************************************************************************
236QMyDialog::~QMyDialog() 236QMyDialog::~QMyDialog()
237{ 237{
238 QMyConnectionItem* Item; 238 QMyConnectionItem* Item;
239 int i; 239 int i;
240 240
241 for (i = 0; i < 10; i++) 241 for (i = 0; i < 10; i++)
242 { 242 {
243 Item = ConnectionList[i]; 243 Item = ConnectionList[i];
244 delete Item; 244 delete Item;
245 } 245 }
246} 246}
247 247
248//***************************************************************************** 248//*****************************************************************************
249void QMyDialog::ComboChanged(int index) 249void QMyDialog::ComboChanged(int index)
250{ 250{
251 if (index == 0) 251 if (index == 0)
252 { 252 {
253 WidthEdit->setText("240"); 253 WidthEdit->setText("240");
254 HeightEdit->setText("320"); 254 HeightEdit->setText("320");
255 } 255 }
256 if (index == 1) 256 if (index == 1)
257 { 257 {
258 WidthEdit->setText("640"); 258 WidthEdit->setText("640");
259 HeightEdit->setText("480"); 259 HeightEdit->setText("480");
260 } 260 }
261 else if (index == 2) 261 else if (index == 2)
262 { 262 {
263 WidthEdit->setText("800"); 263 WidthEdit->setText("800");
264 HeightEdit->setText("600"); 264 HeightEdit->setText("600");
265 } 265 }
266} 266}
267 267
268//***************************************************************************** 268//*****************************************************************************
269void QMyDialog::accept() 269void QMyDialog::accept()
270{ 270{
271 ServerName = ServerNameEdit->text(); 271 ServerName = ServerNameEdit->text();
272 UserName = UserNameEdit->text(); 272 UserName = UserNameEdit->text();
273 Width = WidthEdit->text().toInt(); 273 Width = WidthEdit->text().toInt();
274 Height = HeightEdit->text().toInt(); 274 Height = HeightEdit->text().toInt();
275 ServerIP = IPEdit->text(); 275 ServerIP = IPEdit->text();
276 FullScreen = FullScreenCheckBox->isChecked(); 276 FullScreen = FullScreenCheckBox->isChecked();
277 277
278 QDialog::accept(); 278 QDialog::accept();
279} 279}
280 280
281 281
282//***************************************************************************** 282//*****************************************************************************
283void QMyDialog::AddClicked() 283void QMyDialog::AddClicked()
284{ 284{
285 int i; 285 int i;
286 QMyConnectionItem* Item; 286 QMyConnectionItem* Item;
287 287
288 i = ListBox->count(); 288 i = ListBox->count();
289 if (i < 10) 289 if (i < 10)
290 { 290 {
291 ListBox->insertItem(ServerNameEdit->text()); 291 ListBox->insertItem(ServerNameEdit->text());
292 Item = ConnectionList[i]; 292 Item = ConnectionList[i];
293 Item->ServerName = ServerNameEdit->text(); 293 Item->ServerName = ServerNameEdit->text();
294 Item->UserName = UserNameEdit->text(); 294 Item->UserName = UserNameEdit->text();
295 Item->Width = WidthEdit->text().toInt(); 295 Item->Width = WidthEdit->text().toInt();
296 Item->Height = HeightEdit->text().toInt(); 296 Item->Height = HeightEdit->text().toInt();
297 Item->ServerIP = IPEdit->text(); 297 Item->ServerIP = IPEdit->text();
298 Item->FullScreen = FullScreenCheckBox->isChecked(); 298 Item->FullScreen = FullScreenCheckBox->isChecked();
299 } 299 }
300} 300}
301 301
302//***************************************************************************** 302//*****************************************************************************
303void QMyDialog::EditClicked() 303void QMyDialog::EditClicked()
304{ 304{
305 int i; 305 int i;
306 QMyConnectionItem* Item; 306 QMyConnectionItem* Item;
307 307
308 i = ListBox->currentItem(); 308 i = ListBox->currentItem();
309 if (i >= 0) 309 if (i >= 0)
310 { 310 {
311 Item = ConnectionList[i]; 311 Item = ConnectionList[i];
312 Item->ServerName = ServerNameEdit->text(); 312 Item->ServerName = ServerNameEdit->text();
313 Item->UserName = UserNameEdit->text(); 313 Item->UserName = UserNameEdit->text();
314 Item->Width = WidthEdit->text().toInt(); 314 Item->Width = WidthEdit->text().toInt();
315 Item->Height = HeightEdit->text().toInt(); 315 Item->Height = HeightEdit->text().toInt();
316 Item->ServerIP = IPEdit->text(); 316 Item->ServerIP = IPEdit->text();
317 Item->FullScreen = FullScreenCheckBox->isChecked(); 317 Item->FullScreen = FullScreenCheckBox->isChecked();
318 ListBox->changeItem(ServerNameEdit->text(), i); 318 ListBox->changeItem(ServerNameEdit->text(), i);
319 } 319 }
320} 320}
321 321
322//***************************************************************************** 322//*****************************************************************************
323void WriteString(QFile* File, QString* Line) 323void WriteString(QFile* File, QString* Line)
324{ 324{
325 File->writeBlock((const char*)(*Line), Line->length()); 325 File->writeBlock((const char*)(*Line), Line->length());
326} 326}
327 327
328//***************************************************************************** 328//*****************************************************************************
329void QMyDialog::SaveClicked() 329void QMyDialog::SaveClicked()
330{ 330{
331 int i, j; 331 int i, j;
332 QMyConnectionItem* Item; 332 QMyConnectionItem* Item;
333 QString Line; 333 QString Line;
334 char* home; 334 char* home;
335 char Text[256]; 335 char Text[256];
336 QFile* File; 336 QFile* File;
337 337
338 home = getenv("HOME"); 338 home = getenv("HOME");
339 if (home != NULL) 339 if (home != NULL)
340 { 340 {
341 sprintf(Text, "%s/rdesktop.ini", home); 341 sprintf(Text, "%s/rdesktop.ini", home);
342 File = new QFile(Text); 342 File = new QFile(Text);
343 if (File->open(IO_Truncate | IO_ReadWrite)) 343 if (File->open(IO_Truncate | IO_ReadWrite))
344 { 344 {
345 i = ListBox->count(); 345 i = ListBox->count();
346 for (j = 0; j < i; j++) 346 for (j = 0; j < i; j++)
347 { 347 {
348 Item = ConnectionList[j]; 348 Item = ConnectionList[j];
349 Line = "Server="; 349 Line = "Server=";
350 Line += Item->ServerName; 350 Line += Item->ServerName;
351 Line += (char)10; 351 Line += (char)10;
352 WriteString(File, &Line); 352 WriteString(File, &Line);
353 Line = "UserName="; 353 Line = "UserName=";
354 Line += Item->UserName; 354 Line += Item->UserName;
355 Line += (char)10; 355 Line += (char)10;
356 WriteString(File, &Line); 356 WriteString(File, &Line);
357 Line = "Width="; 357 Line = "Width=";
358 sprintf(Text, "%d", Item->Width); 358 sprintf(Text, "%d", Item->Width);
359 Line += Text; 359 Line += Text;
360 Line += (char)10; 360 Line += (char)10;
361 WriteString(File, &Line); 361 WriteString(File, &Line);
362 Line = "Height="; 362 Line = "Height=";
363 sprintf(Text, "%d", Item->Height); 363 sprintf(Text, "%d", Item->Height);
364 Line += Text; 364 Line += Text;
365 Line += (char)10; 365 Line += (char)10;
366 WriteString(File, &Line); 366 WriteString(File, &Line);
367 Line = "IP="; 367 Line = "IP=";
368 Line += Item->ServerIP; 368 Line += Item->ServerIP;
369 Line += (char)10; 369 Line += (char)10;
370 WriteString(File, &Line); 370 WriteString(File, &Line);
371 Line = "FullScreen="; 371 Line = "FullScreen=";
372 if (Item->FullScreen) 372 if (Item->FullScreen)
373 Line += "1"; 373 Line += "1";
374 else 374 else
375 Line += "0"; 375 Line += "0";
376 Line += (char)10; 376 Line += (char)10;
377 WriteString(File, &Line); 377 WriteString(File, &Line);
378 } 378 }
379 } 379 }
380 File->flush(); 380 File->flush();
381 File->close(); 381 File->close();
382 delete File; 382 delete File;
383 } 383 }
384} 384}
385 385
386//***************************************************************************** 386//*****************************************************************************
387void QMyDialog::RemoveClicked() 387void QMyDialog::RemoveClicked()
388{ 388{
389 int i, j, c; 389 int i, j, c;
390 QMyConnectionItem* Item1; 390 QMyConnectionItem* Item1;
391 QMyConnectionItem* Item2; 391 QMyConnectionItem* Item2;
392 392
393 i = ListBox->currentItem(); 393 i = ListBox->currentItem();
394 if (i >= 0) 394 if (i >= 0)
395 { 395 {
396 c = ListBox->count(); 396 c = ListBox->count();
397 for (j = i; j < c - 1; j++) 397 for (j = i; j < c - 1; j++)
398 { 398 {
399 Item1 = ConnectionList[i]; 399 Item1 = ConnectionList[i];
400 Item2 = ConnectionList[i + 1]; 400 Item2 = ConnectionList[i + 1];
401 Item1->ServerName = Item2->ServerName; 401 Item1->ServerName = Item2->ServerName;
402 Item1->UserName = Item2->UserName; 402 Item1->UserName = Item2->UserName;
403 Item1->Width = Item2->Width; 403 Item1->Width = Item2->Width;
404 Item1->Height = Item2->Height; 404 Item1->Height = Item2->Height;
405 Item1->ServerIP = Item2->ServerIP; 405 Item1->ServerIP = Item2->ServerIP;
406 Item1->FullScreen = Item2->FullScreen; 406 Item1->FullScreen = Item2->FullScreen;
407 } 407 }
408 ListBox->removeItem(i); 408 ListBox->removeItem(i);
409 } 409 }
410} 410}
411 411
412//***************************************************************************** 412//*****************************************************************************
413void QMyDialog::ListBoxChanged() 413void QMyDialog::ListBoxChanged()
414{ 414{
415 int i; 415 int i;
416 QMyConnectionItem* Item; 416 QMyConnectionItem* Item;
417 char Text[100]; 417 char Text[100];
418 418
419 i = ListBox->currentItem(); 419 i = ListBox->currentItem();
420 if (i >= 0 && i < 10) 420 if (i >= 0 && i < 10)
421 { 421 {
422 Item = ConnectionList[i]; 422 Item = ConnectionList[i];
423 ServerNameEdit->setText(Item->ServerName); 423 ServerNameEdit->setText(Item->ServerName);
424 UserNameEdit->setText(Item->UserName); 424 UserNameEdit->setText(Item->UserName);
425 sprintf(Text, "%d", Item->Width); 425 sprintf(Text, "%d", Item->Width);
426 WidthEdit->setText(Text); 426 WidthEdit->setText(Text);
427 sprintf(Text, "%d", Item->Height); 427 sprintf(Text, "%d", Item->Height);
428 HeightEdit->setText(Text); 428 HeightEdit->setText(Text);
429 IPEdit->setText(Item->ServerIP); 429 IPEdit->setText(Item->ServerIP);
430 FullScreenCheckBox->setChecked(Item->FullScreen != 0); 430 FullScreenCheckBox->setChecked(Item->FullScreen != 0);
431 } 431 }
432} 432}
433 433
434//***************************************************************************** 434//*****************************************************************************
435void QMyDialog::ListBoxSelected(int /*index*/) 435void QMyDialog::ListBoxSelected(int /*index*/)
436{ 436{
437} 437}
438 438
439//***************************************************************************** 439//*****************************************************************************
440void GetScanCode(QKeyEvent* e, int* ScanCode, int* code) 440void GetScanCode(QKeyEvent* e, int* ScanCode, int* code)
441{ 441{
442 int key; 442 int key;
443 int mod; 443 int mod;
444 int ascii; 444 int ascii;
445 445
446 key = e->key(); 446 key = e->key();
447 mod = e->state(); 447 mod = e->state();
448 ascii = e->ascii(); 448 ascii = e->ascii();
449 449
450 *ScanCode = 0; 450 *ScanCode = 0;
451 *code = mod; // 8 shift, 16 control, 32 alt 451 *code = mod; // 8 shift, 16 control, 32 alt
452 452
453 switch (key) 453 switch (key)
454 { 454 {
455 case 4096: // esc 455 case 4096: // esc
456 case 4097: // tab 456 case 4097: // tab
457 case 4099: // backspace 457 case 4099: // backspace
458 case 4100: // enter 458 case 4100: // enter
459 case 4101: // enter 459 case 4101: // enter
460 case 4103: // delete 460 case 4103: // delete
461 ascii = 0; 461 ascii = 0;
462 } 462 }
463 463
464 if (ascii == 0) 464 if (ascii == 0)
465 { 465 {
466 switch (key) 466 switch (key)
467 { 467 {
468 case 4096: *ScanCode = 0x01; break; // esc 468 case 4096: *ScanCode = 0x01; break; // esc
469 case 4097: *ScanCode = 0x0f; break; // tab 469 case 4097: *ScanCode = 0x0f; break; // tab
470 case 4099: *ScanCode = 0x0e; break; // backspace 470 case 4099: *ScanCode = 0x0e; break; // backspace
471 case 4100: *ScanCode = 0x1c; break; // enter 471 case 4100: *ScanCode = 0x1c; break; // enter
472 case 4101: *ScanCode = 0x1c; break; // enter 472 case 4101: *ScanCode = 0x1c; break; // enter
473 case 4112: *ScanCode = 0xc7; break; // home 473 case 4112: *ScanCode = 0xc7; break; // home
474 case 4113: *ScanCode = 0xcf; break; // end 474 case 4113: *ScanCode = 0xcf; break; // end
475 case 4102: *ScanCode = 0xd2; break; // insert 475 case 4102: *ScanCode = 0xd2; break; // insert
476 case 4103: *ScanCode = 0xd3; break; // delete 476 case 4103: *ScanCode = 0xd3; break; // delete
477 case 4118: *ScanCode = 0xc9; break; // page up 477 case 4118: *ScanCode = 0xc9; break; // page up
478 case 4119: *ScanCode = 0xd1; break; // page down 478 case 4119: *ScanCode = 0xd1; break; // page down
479 case 4117: *ScanCode = 0xd0; break; // down arrow 479 case 4117: *ScanCode = 0xd0; break; // down arrow
480 case 4115: *ScanCode = 0xc8; break; // up arrow 480 case 4115: *ScanCode = 0xc8; break; // up arrow
481 case 4114: *ScanCode = 0xcb; break; // left arrow 481 case 4114: *ScanCode = 0xcb; break; // left arrow
482 case 4116: *ScanCode = 0xcd; break; // right arrow 482 case 4116: *ScanCode = 0xcd; break; // right arrow
483 case 4128: *ScanCode = 0x2a; break; // shift 483 case 4128: *ScanCode = 0x2a; break; // shift
484 case 4131: *ScanCode = 0x38; break; // alt 484 case 4131: *ScanCode = 0x38; break; // alt
485 case 4129: *ScanCode = 0x1d; break; // ctrl 485 case 4129: *ScanCode = 0x1d; break; // ctrl
486 } 486 }
487 if (*ScanCode != 0) 487 if (*ScanCode != 0)
488 return; 488 return;
489 } 489 }
490 490
491 switch (ascii) 491 switch (ascii)
492 { 492 {
493 // first row 493 // first row
494 case 'q': *ScanCode = 0x10; break; 494 case 'q': *ScanCode = 0x10; break;
495 case 'Q': *ScanCode = 0x10; *code |= 8; break; 495 case 'Q': *ScanCode = 0x10; *code |= 8; break;
496 case '1': *ScanCode = 0x02; break; 496 case '1': *ScanCode = 0x02; break;
497 case 'w': *ScanCode = 0x11; break; 497 case 'w': *ScanCode = 0x11; break;
498 case 'W': *ScanCode = 0x11; *code |= 8; break; 498 case 'W': *ScanCode = 0x11; *code |= 8; break;
499 case '2': *ScanCode = 0x03; break; 499 case '2': *ScanCode = 0x03; break;
500 case 'e': *ScanCode = 0x12; break; 500 case 'e': *ScanCode = 0x12; break;
501 case 'E': *ScanCode = 0x12; *code |= 8; break; 501 case 'E': *ScanCode = 0x12; *code |= 8; break;
502 case '3': *ScanCode = 0x04; break; 502 case '3': *ScanCode = 0x04; break;
503 case 'r': *ScanCode = 0x13; break; 503 case 'r': *ScanCode = 0x13; break;
504 case 'R': *ScanCode = 0x13; *code |= 8; break; 504 case 'R': *ScanCode = 0x13; *code |= 8; break;
505 case '4': *ScanCode = 0x05; break; 505 case '4': *ScanCode = 0x05; break;
506 case 't': *ScanCode = 0x14; break; 506 case 't': *ScanCode = 0x14; break;
507 case 'T': *ScanCode = 0x14; *code |= 8; break; 507 case 'T': *ScanCode = 0x14; *code |= 8; break;
508 case '5': *ScanCode = 0x06; break; 508 case '5': *ScanCode = 0x06; break;
509 case 'y': *ScanCode = 0x15; break; 509 case 'y': *ScanCode = 0x15; break;
510 case 'Y': *ScanCode = 0x15; *code |= 8; break; 510 case 'Y': *ScanCode = 0x15; *code |= 8; break;
511 case '6': *ScanCode = 0x07; break; 511 case '6': *ScanCode = 0x07; break;
512 case 'u': *ScanCode = 0x16; break; 512 case 'u': *ScanCode = 0x16; break;
513 case 'U': *ScanCode = 0x16; *code |= 8; break; 513 case 'U': *ScanCode = 0x16; *code |= 8; break;
514 case '7': *ScanCode = 0x08; break; 514 case '7': *ScanCode = 0x08; break;
515 case 'i': *ScanCode = 0x17; break; 515 case 'i': *ScanCode = 0x17; break;
516 case 'I': *ScanCode = 0x17; *code |= 8; break; 516 case 'I': *ScanCode = 0x17; *code |= 8; break;
517 case '8': *ScanCode = 0x09; break; 517 case '8': *ScanCode = 0x09; break;
518 case 'o': *ScanCode = 0x18; break; 518 case 'o': *ScanCode = 0x18; break;
519 case 'O': *ScanCode = 0x18; *code |= 8; break; 519 case 'O': *ScanCode = 0x18; *code |= 8; break;
520 case '9': *ScanCode = 0x0a; break; 520 case '9': *ScanCode = 0x0a; break;
521 case 'p': *ScanCode = 0x19; break; 521 case 'p': *ScanCode = 0x19; break;
522 case 'P': *ScanCode = 0x19; *code |= 8; break; 522 case 'P': *ScanCode = 0x19; *code |= 8; break;
523 case '0': *ScanCode = 0x0b; break; 523 case '0': *ScanCode = 0x0b; break;
524 // second row 524 // second row
525 case 'a': *ScanCode = 0x1e; break; 525 case 'a': *ScanCode = 0x1e; break;
526 case 'A': *ScanCode = 0x1e; *code |= 8; break; 526 case 'A': *ScanCode = 0x1e; *code |= 8; break;
527 case '!': *ScanCode = 0x02; *code |= 8; break; 527 case '!': *ScanCode = 0x02; *code |= 8; break;
528 case 's': *ScanCode = 0x1f; break; 528 case 's': *ScanCode = 0x1f; break;
529 case 'S': *ScanCode = 0x1f; *code |= 8; break; 529 case 'S': *ScanCode = 0x1f; *code |= 8; break;
530 case '@': *ScanCode = 0x03; *code |= 8; break; 530 case '@': *ScanCode = 0x03; *code |= 8; break;
531 case 'd': *ScanCode = 0x20; break; 531 case 'd': *ScanCode = 0x20; break;
532 case 'D': *ScanCode = 0x20; *code |= 8; break; 532 case 'D': *ScanCode = 0x20; *code |= 8; break;
533 case '#': *ScanCode = 0x04; *code |= 8; break; 533 case '#': *ScanCode = 0x04; *code |= 8; break;
534 case 'f': *ScanCode = 0x21; break; 534 case 'f': *ScanCode = 0x21; break;
535 case 'F': *ScanCode = 0x21; *code |= 8; break; 535 case 'F': *ScanCode = 0x21; *code |= 8; break;
536 case '$': *ScanCode = 0x05; *code |= 8; break; 536 case '$': *ScanCode = 0x05; *code |= 8; break;
537 case 'g': *ScanCode = 0x22; break; 537 case 'g': *ScanCode = 0x22; break;
538 case 'G': *ScanCode = 0x22; *code |= 8; break; 538 case 'G': *ScanCode = 0x22; *code |= 8; break;
539 case '%': *ScanCode = 0x06; *code |= 8; break; 539 case '%': *ScanCode = 0x06; *code |= 8; break;
540 case 'h': *ScanCode = 0x23; break; 540 case 'h': *ScanCode = 0x23; break;
541 case 'H': *ScanCode = 0x23; *code |= 8; break; 541 case 'H': *ScanCode = 0x23; *code |= 8; break;
542 case '_': *ScanCode = 0x0c; *code |= 8; break; 542 case '_': *ScanCode = 0x0c; *code |= 8; break;
543 case 'j': *ScanCode = 0x24; break; 543 case 'j': *ScanCode = 0x24; break;
544 case 'J': *ScanCode = 0x24; *code |= 8; break; 544 case 'J': *ScanCode = 0x24; *code |= 8; break;
545 case '&': *ScanCode = 0x08; *code |= 8; break; 545 case '&': *ScanCode = 0x08; *code |= 8; break;
546 case 'k': *ScanCode = 0x25; break; 546 case 'k': *ScanCode = 0x25; break;
547 case 'K': *ScanCode = 0x25; *code |= 8; break; 547 case 'K': *ScanCode = 0x25; *code |= 8; break;
548 case '*': *ScanCode = 0x09; *code |= 8; break; 548 case '*': *ScanCode = 0x09; *code |= 8; break;
549 case 'l': *ScanCode = 0x26; break; 549 case 'l': *ScanCode = 0x26; break;
550 case 'L': *ScanCode = 0x26; *code |= 8; break; 550 case 'L': *ScanCode = 0x26; *code |= 8; break;
551 case '(': *ScanCode = 0x0a; *code |= 8; break; 551 case '(': *ScanCode = 0x0a; *code |= 8; break;
552// case 8: *ScanCode = 0x0e; break; // backspace 552// case 8: *ScanCode = 0x0e; break; // backspace
553 // third row 553 // third row
554 case 'z': *ScanCode = 0x2c; break; 554 case 'z': *ScanCode = 0x2c; break;
555 case 'Z': *ScanCode = 0x2c; *code |= 8; break; 555 case 'Z': *ScanCode = 0x2c; *code |= 8; break;
556 case 'x': *ScanCode = 0x2d; break; 556 case 'x': *ScanCode = 0x2d; break;
557 case 'X': *ScanCode = 0x2d; *code |= 8; break; 557 case 'X': *ScanCode = 0x2d; *code |= 8; break;
558 case 'c': *ScanCode = 0x2e; break; 558 case 'c': *ScanCode = 0x2e; break;
559 case 'C': *ScanCode = 0x2e; *code |= 8; break; 559 case 'C': *ScanCode = 0x2e; *code |= 8; break;
560 case 'v': *ScanCode = 0x2f; break; 560 case 'v': *ScanCode = 0x2f; break;
561 case 'V': *ScanCode = 0x2f; *code |= 8; break; 561 case 'V': *ScanCode = 0x2f; *code |= 8; break;
562 case 'b': *ScanCode = 0x30; break; 562 case 'b': *ScanCode = 0x30; break;
563 case 'B': *ScanCode = 0x30; *code |= 8; break; 563 case 'B': *ScanCode = 0x30; *code |= 8; break;
564 case '-': *ScanCode = 0x0c; break; 564 case '-': *ScanCode = 0x0c; break;