summaryrefslogtreecommitdiff
path: root/packages/qtnx
diff options
context:
space:
mode:
authorwoglinde <heinold@inf.fu-berlin.de>2008-11-27 22:54:56 +0100
committerwoglinde <heinold@inf.fu-berlin.de>2008-11-27 22:54:56 +0100
commitbdab38d2b59ee861339a3d166b48bab6a8cfe0f9 (patch)
tree3eb8615575b73852efe50305659422ee4a6094e2 /packages/qtnx
parentb1ae267e2b6beb5e60ded3a23c20788c94054db1 (diff)
qtnx: add my latets patches from the n810 work
* add patch for keychoose dialog * integrate the stuff from the dodnx fork including the nxssh-proxy support * add patch for choosing the keyboard * add patch for delete session files * bump PR * add patch for detecting ssh dns errors
Diffstat (limited to 'packages/qtnx')
-rw-r--r--packages/qtnx/files/dodnx.patch1919
-rw-r--r--packages/qtnx/files/keychooser.patch126
-rw-r--r--packages/qtnx/files/keymap.patch283
-rw-r--r--packages/qtnx/files/pro.patch2
-rw-r--r--packages/qtnx/files/scroll.patch3
-rw-r--r--packages/qtnx/files/sessionfiles.patch1187
-rw-r--r--packages/qtnx/files/ssh_dnserror.patch51
-rw-r--r--packages/qtnx/qtnx.inc7
8 files changed, 3572 insertions, 6 deletions
diff --git a/packages/qtnx/files/dodnx.patch b/packages/qtnx/files/dodnx.patch
new file mode 100644
index 0000000000..6c2a7e5888
--- /dev/null
+++ b/packages/qtnx/files/dodnx.patch
@@ -0,0 +1,1919 @@
+Index: qtnx-0.9/keyboards
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ qtnx-0.9/keyboards 2008-10-14 10:43:03.000000000 +0200
+@@ -0,0 +1,86 @@
++al,0x041C,Albanian
++ar,0x0001,Arabic
++am,,Armenian
++az,,Azerbaijani
++bg,0x0402,Bulgarian
++by,0x0423,Belarusian
++be,,Belgian
++ben,,Bengali
++bs,,Bosnian
++mm,,Burmese
++hr,0x041A,Croatian
++hr_US,,Croatian (US)
++cz,0x0405,Czech
++cz_qwerty,,Czech (QWERTY)
++dk,0x0406,Danish
++nl,0x0413,Dutch (Netherlands)
++dvorak,,Dvorak
++us,0x0009,English
++en_US,0x0409,English (United States)
++gb,0x0809,English (United Kingdom)
++ca,0x1009,English (Canada)
++ee,0x0425,Estonian
++fi,0x040B,Finnish
++fr,0x040C,French (France)
++fr_latin9,,French (Alternative)
++ca_enhanced,0x0C0C,French (Canada)
++ge_la,,Georgian (latin)
++ge_ru,,Georgian (russian)
++de,0x0407,German (Germany)
++el,0x0408,Greek
++guj,,Gujarati
++gur,,Gurmukhi
++dev,0x0439,Hindi
++hu,0x040E,Hungarian
++hu_US,,Hungarian (US)
++hu_qwerty,,Hungarian (qwerty)
++is,0x040F,Icelandic
++iu,,Inuktitut
++ir,,Iranian
++ie,,Irish
++il,,Israeli
++il_phonetic,,Israeli (phonetic)
++it,0x0410,Italian (Italy)
++jp,0x0411,Japanese
++kan,,Kannada
++ko,0x0412,Korean
++la,,Latin America
++lv,0x0426,Latvian
++lt,0x0427,Lithuanian
++lt_std,,Lithuanian azerty standard
++mk,0x042F,FYRO Macedonian
++ml,0x043E,Malay (Malaysia)
++mt_US,,Maltese (US layout)
++ogham,,Ogham
++oriya,,Oriya
++no,0x0814,Norwegian
++pl,0x0415,Polish
++pl2,,Polish (qwertz)
++br,0x0416,Portuguese (Brazil)
++pt,0x0816,Portuguese (Portugal)
++ro,0x0418,Romanian
++ru,0x0419,Russian
++ru_yawerty,,Russian (cyrillic phonetic)
++se_FI,,Northern Saami (Finland)
++se_NO,,Northern Saami (Norway)
++se_SE,,Northern Saami (Sweden)
++sr,0x081A,Serbian
++sk,0x041B,Slovak
++si,0x0424,Slovenian
++es,0x040A,Spanish (Traditional Sort)
++se,0x041D,Swedish
++fr_CH,0x100c,Swiss French
++de_CH,0x0807,Swiss German
++syr,,Syriac
++tj,,Tajik
++tml,,Tamil
++tel,,Telugu
++th,0x041E,Thai
++th_tis,0x041E,Thai (TIS-820.2538)
++th_pat,,Thai (Pattachote)
++tr,0x041F,Turkish
++ua,0x0422,Ukrainian
++vn,0x042A,Vietnamese
++yu,,Yugoslavian
++fo,0x0438,Faroese
++nl-be,0x0813,Dutch (Belgian)
+Index: qtnx-0.9/qtnxsettings.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxsettings.cpp 2008-10-14 10:43:02.000000000 +0200
++++ qtnx-0.9/qtnxsettings.cpp 2008-10-14 14:02:04.000000000 +0200
+@@ -45,6 +45,8 @@
+ connect(ui_sd.imageCompressionType, SIGNAL(currentIndexChanged(QString)), this, SLOT(compressionChanged(QString)));
+ connect(ui_sd.keyboard, SIGNAL(currentIndexChanged(QString)), this, SLOT(keyboardChanged(QString)));
+ connect(ui_sd.defaultKey, SIGNAL(stateChanged(int)), this, SLOT(keyChanged(int)));
++ connect(ui_sd.useProxy, SIGNAL(stateChanged(int)), this, SLOT(proxyChanged(int)));
++ connect(ui_sd.proxyAuthenticated, SIGNAL(stateChanged(int)), this, SLOT(proxyAuthChanged(int)));
+ connect(ui_sd.applyButton, SIGNAL(pressed()), this, SLOT(applyPressed()));
+ connect(ui_sd.okButton, SIGNAL(pressed()), this, SLOT(okPressed()));
+ connect(ui_sd.cancelButton, SIGNAL(pressed()), this, SLOT(cancelPressed()));
+@@ -58,6 +60,14 @@
+ void QtNXSettings::parseFile()
+ {
+ if (!fileName.isEmpty()) {
++
++ config.useProxy = false;
++ config.proxyHost = "";
++ config.proxyPort = 8080;
++ config.proxyAuthenticated = false;
++ config.proxyPass = "";
++ config.proxyUser = "";
++
+ NXParseXML handler;
+ handler.setData(&config);
+
+@@ -145,6 +155,24 @@
+ }
+ }
+
++ if (config.useProxy == true) {
++ ui_sd.useProxy->setChecked(true);
++ ui_sd.proxyHost->setEnabled(true);
++ ui_sd.proxyPort->setEnabled(true);
++ ui_sd.proxyAuthenticated->setEnabled(true);
++ }
++
++ if (config.proxyAuthenticated == true) {
++ ui_sd.proxyAuthenticated->setChecked(true);
++ ui_sd.proxyUser->setEnabled(true);
++ ui_sd.proxyPass->setEnabled(true);
++ }
++
++ ui_sd.proxyHost->setText(QString::fromStdString(config.proxyHost));
++ ui_sd.proxyPort->setValue(config.proxyPort);
++ ui_sd.proxyUser->setText(QString::fromStdString(config.proxyUser));
++ ui_sd.proxyPass->setText(QString::fromStdString(config.proxyPass));
++
+ ui_sd.encryption->setChecked(config.encryption);
+ ui_sd.memoryCache->setValue(config.cache);
+ ui_sd.diskCache->setValue(config.images);
+@@ -199,6 +227,30 @@
+ ui_sd.setAuthKeyButton->setEnabled(true);
+ }
+
++void QtNXSettings::proxyChanged(int state)
++{
++ if (state == Qt::Checked) {
++ ui_sd.proxyHost->setEnabled(true);
++ ui_sd.proxyPort->setEnabled(true);
++ ui_sd.proxyAuthenticated->setEnabled(true);
++ } else {
++ ui_sd.proxyHost->setEnabled(false);
++ ui_sd.proxyPort->setEnabled(false);
++ ui_sd.proxyAuthenticated->setEnabled(false);
++ }
++}
++
++void QtNXSettings::proxyAuthChanged(int state)
++{
++ if (state == Qt::Checked) {
++ ui_sd.proxyUser->setEnabled(true);
++ ui_sd.proxyPass->setEnabled(true);
++ } else {
++ ui_sd.proxyUser->setEnabled(false);
++ ui_sd.proxyPass->setEnabled(false);
++ }
++}
++
+ void QtNXSettings::cancelPressed()
+ {
+ close();
+@@ -315,6 +367,25 @@
+ else
+ config.render = false;
+
++ if (ui_sd.useProxy->checkState() == Qt::Checked) {
++ config.useProxy = true;
++
++ if (ui_sd.proxyAuthenticated->checkState() == Qt::Checked)
++ {
++ config.proxyAuthenticated = true;
++ } else
++ {
++ config.proxyAuthenticated = false;
++ }
++ config.proxyHost = ui_sd.proxyHost->text().toStdString();
++ config.proxyPort = ui_sd.proxyPort->value();
++ config.proxyUser = ui_sd.proxyUser->text().toStdString();
++ config.proxyPass = ui_sd.proxyPass->text().toStdString();
++ } else
++ {
++ config.useProxy = false;
++ }
++
+ NXWriteXML writeData;
+ writeData.setSessionData(config);
+ writeData.write(QDir::homePath() + "/.qtnx/" + ui_sd.sessionName->text() + ".nxml");
+Index: qtnx-0.9/qtnxsettings.h
+===================================================================
+--- qtnx-0.9.orig/qtnxsettings.h 2008-10-14 10:43:02.000000000 +0200
++++ qtnx-0.9/qtnxsettings.h 2008-10-14 10:43:03.000000000 +0200
+@@ -34,13 +34,15 @@
+ QtNXSettings(QString);
+ ~QtNXSettings();
+ void parseFile();
+- public slots:
+- void resolutionChanged(QString);
++ public slots:
++ void resolutionChanged(QString);
+ void compressionChanged(QString);
+ void platformChanged(QString);
+ void keyboardChanged(QString);
+ void typeChanged(QString);
+ void keyChanged(int);
++ void proxyAuthChanged(int);
++ void proxyChanged(int);
+ void applyPressed();
+ void cancelPressed();
+ void okPressed();
+@@ -48,7 +50,7 @@
+ void authKeyPressed();
+ void keyDialogAccept();
+ void keyDialogReject();
+-signals:
++ signals:
+ void closing(QString);
+ private:
+ Ui::SettingsDialog ui_sd;
+Index: qtnx-0.9/qtnxwindow.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.cpp 2008-10-14 10:43:02.000000000 +0200
++++ qtnx-0.9/qtnxwindow.cpp 2008-10-14 14:02:04.000000000 +0200
+@@ -28,6 +28,10 @@
+ #include <CoreFoundation/CFBundle.h>
+ #endif
+
++#ifdef Q_CYGWIN_WIN
++ #include <Windows.h>
++#endif
++
+ using namespace nxcl;
+ using namespace std;
+
+@@ -125,16 +129,72 @@
+
+ #ifdef Q_CYGWIN_WIN
+ QString filePath = qApp->applicationDirPath();
++ QString tempPath = filePath;
+
+ // On Windows QtNX will ship with the NX system components in NX/ relative to the
+ // QtNX binary
+ filePath.append("/NX");
+ setenv("NX_SYSTEM", filePath.toStdString().c_str(), 1);
+ filePath.append("/bin");
++ tempPath.append("/NX/tmp/");
++ setenv("NX_TEMP", tempPath.toStdString().c_str(), 1);
++ setenv("TEMP", tempPath.toStdString().c_str(), 1);
+ m_NXClient->setCustomPath(filePath.toStdString());
+ #endif
++
++#ifdef Q_WS_X11
++ binaryPath = qApp->applicationDirPath();
++ QString libPath = binaryPath;
++
++ binaryPath.append("/bin");
++
++ m_NXClient->setCustomPath(binaryPath.toStdString());
++
++ libPath.append("/lib:");
++ libPath.append(getenv("LD_LIBRARY_PATH"));
++
++ cout << libPath.toStdString() << endl;
++ setenv("LD_LIBRARY_PATH", libPath.toStdString().c_str(), 1);
++#endif
++
+ }
+
++QString QtNXWindow::keyboardLayout()
++{
++#ifdef Q_CYGWIN_WIN
++ HKL dwlayout = GetKeyboardLayout(0);
++
++ WORD layout = LOWORD(dwlayout);
++
++ // On Windows QtNX will ship with the keyboards file in NX/ relative to the
++ // QtNX binary
++ QString filePath = qApp->applicationDirPath();
++ filePath.append("/NX/keyboards");
++
++ QFile keymaps(filePath);
++
++ bool ok;
++
++ if (keymaps.open(QIODevice::ReadOnly)) {
++ QTextStream stream(&keymaps);
++ QString line;
++
++ while (!stream.atEnd()) {
++ line = stream.readLine();
++
++ if (line.startsWith("#"))
++ continue;
++
++ if (line.section(",", 1, 1).toInt(&ok, 16) == (int)layout)
++ return line.section(",", 0, 0);
++ }
++ keymaps.close();
++ }
++#endif
++ return "defkeymap";
++}
++
++
+ void QtNXWindow::setupUI()
+ {
+ logWindow = new QDialog(0);
+@@ -259,6 +319,21 @@
+
+ setDefaultData();
+
++ if (config.useProxy) {
++ string proxyUsername("");
++ string proxyPassword("");
++
++ if (config.proxyAuthenticated) {
++ proxyUsername = config.proxyUser;
++ proxyPassword = config.proxyPass;
++ }
++
++ m_NXClient->setProxy(config.proxyHost,
++ proxyUsername,
++ proxyPassword,
++ config.proxyPort);
++ }
++
+ if (ui_lg.link->currentText() == tr("Modem"))
+ session.linkType = "modem";
+ else if (ui_lg.link->currentText() == tr("ISDN"))
+@@ -425,6 +500,8 @@
+
+ ui_lg.session->setCurrentIndex(
+ ui_lg.session->findText(sessionName));
++
++ parseXML();
+ }
+
+ void QtNXWindow::resumeNewPressed()
+@@ -482,16 +559,16 @@
+
+ switch (id) {
+ case NXCL_PROCESS_STARTED:
+- handleStatus(tr("Process started"));
++ handleStatus(tr("Starting login process"));
+ break;
+ case NXCL_PROCESS_EXITED:
+- handleStatus(tr("Process exited"));
++ handleStatus(tr(""));
+ break;
+ case NXCL_AUTH_FAILED:
+ handleStatus(tr("Invalid authentication key"));
+ break;
+ case NXCL_AUTHENTICATING:
+- handleStatus(tr("Authenticating client"));
++ handleStatus(tr("Authenticating"));
+ break;
+ case NXCL_LOGIN_FAILED:
+ handleStatus(tr("Invalid username or password"));
+@@ -501,7 +578,7 @@
+ handleStatus(tr("Host key verification failed"));
+ break;
+ case NXCL_INVOKE_PROXY:
+- handleStatus(tr("Starting NX proxy"));
++ handleStatus(tr("Loading remote desktop"));
+ break;
+ case NXCL_STARTING:
+ handleStatus(tr("Starting session"));
+@@ -510,10 +587,10 @@
+ handleStatus(tr("Finished connecting"));
+ break;
+ case NXCL_ALIVE:
+- handleStatus(tr("NX session active"));
++ handleStatus(tr("Session running"));
+ break;
+ case NXCL_PROCESS_ERROR:
+- handleStatus(tr("Process error"));
++ handleStatus(tr("An error occurred running a helper program"));
+ break;
+ default:
+ break;
+Index: qtnx-0.9/nxparsexml.cpp
+===================================================================
+--- qtnx-0.9.orig/nxparsexml.cpp 2008-10-14 10:11:40.000000000 +0200
++++ qtnx-0.9/nxparsexml.cpp 2008-10-14 14:02:04.000000000 +0200
+@@ -133,6 +133,36 @@
+ sessionData->fullscreen = false;
+ }
+
++ if (attributes.value("key") == "Use Proxy") {
++ if (attributes.value("value") == "True")
++ sessionData->useProxy = true;
++ else
++ sessionData->useProxy = false;
++ }
++
++ if (attributes.value("key") == "Proxy Host") {
++ sessionData->proxyHost = attributes.value("value").toStdString();
++ }
++
++ if (attributes.value("key") == "Proxy Port") {
++ sessionData->proxyPort = attributes.value("value").toInt();
++ }
++
++ if (attributes.value("key") == "Use Proxy Authentication") {
++ if (attributes.value("value") == "True")
++ sessionData->proxyAuthenticated = true;
++ else
++ sessionData->proxyAuthenticated = false;
++ }
++
++ if (attributes.value("key") == "Proxy Username") {
++ sessionData->proxyUser = attributes.value("value").toStdString();
++ }
++
++ if (attributes.value("key") == "Proxy Password") {
++ sessionData->proxyPass = attributes.value("value").toStdString();
++ }
++
+ return true;
+ }
+
+Index: qtnx-0.9/nxwritexml.cpp
+===================================================================
+--- qtnx-0.9.orig/nxwritexml.cpp 2008-10-14 10:11:40.000000000 +0200
++++ qtnx-0.9/nxwritexml.cpp 2008-10-14 14:02:04.000000000 +0200
+@@ -130,6 +130,36 @@
+ xml << "<option key=\"Use SSL Tunnelling\" value=\"False\">" <<
+ "</option>\n";
+
++ if (sessionData.useProxy == true)
++ xml << "<option key=\"Use Proxy\" value=\"True\">" <<
++ "</option>\n";
++ else
++ xml << "<option key=\"Use Proxy\" value=\"False\">" <<
++ "</option>\n";
++
++ xml << "<option key=\"Proxy Host\" value=\"" <<
++ escape(QString::fromStdString(sessionData.proxyHost)) <<
++ "\"></option>\n";
++
++ xml << "<option key=\"Proxy Port\" value=\"" <<
++ escape(QString::number(sessionData.proxyPort)) <<
++ "\"></option>\n";
++
++ if (sessionData.proxyAuthenticated == true)
++ xml << "<option key=\"Use Proxy Authentication\" value=\"True\">" <<
++ "</option>\n";
++ else
++ xml << "<option key=\"Use Proxy Authentication\" value=\"False\">" <<
++ "</option>\n";
++
++ xml << "<option key=\"Proxy Username\" value=\"" <<
++ escape(QString::fromStdString(sessionData.proxyUser)) <<
++ "\"></option>\n";
++
++ xml << "<option key=\"Proxy Password\" value=\"" <<
++ escape(QString::fromStdString(sessionData.proxyPass)) <<
++ "\"></option>\n";
++
+ if (sessionData.fullscreen == true)
+ xml << "<option key=\"Enable Fullscreen Desktop\" value=\"True\">" <<
+ "</option>\n";
+Index: qtnx-0.9/qtnxwindow.h
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.h 2008-10-14 10:11:40.000000000 +0200
++++ qtnx-0.9/qtnxwindow.h 2008-10-14 10:43:03.000000000 +0200
+@@ -126,11 +126,13 @@
+
+ // Decided to split up the code
+ void setupUI();
++ void parseXML();
+ void setDefaultData();
+ void initialiseClient();
+- void parseXML();
+ void reinitialiseClient();
+
++ QString keyboardLayout();
++
+ int getWidth();
+ int getHeight();
+ int getDepth();
+@@ -160,4 +162,5 @@
+
+ QString binaryPath;
+ };
++
+ #endif
+Index: qtnx-0.9/settingsdialog.ui
+===================================================================
+--- qtnx-0.9.orig/settingsdialog.ui 2008-10-14 10:43:02.000000000 +0200
++++ qtnx-0.9/settingsdialog.ui 2008-10-14 14:02:04.000000000 +0200
+@@ -5,8 +5,8 @@
+ <rect>
+ <x>0</x>
+ <y>0</y>
+- <width>480</width>
+- <height>543</height>
++ <width>454</width>
++ <height>559</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+@@ -15,13 +15,7 @@
+ <property name="modal" >
+ <bool>true</bool>
+ </property>
+- <layout class="QVBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>9</number>
+- </property>
++ <layout class="QVBoxLayout" name="verticalLayout_3" >
+ <item>
+ <widget class="QScrollArea" name="scrollArea" >
+ <property name="widgetResizable" >
+@@ -32,13 +26,25 @@
+ <rect>
+ <x>0</x>
+ <y>0</y>
+- <width>458</width>
+- <height>521</height>
++ <width>432</width>
++ <height>501</height>
+ </rect>
+ </property>
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
+ <layout class="QVBoxLayout" name="verticalLayout" >
+ <item>
+ <widget class="QTabWidget" name="layoutTabs" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Expanding" hsizetype="Maximum" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
+ <property name="currentIndex" >
+ <number>0</number>
+ </property>
+@@ -46,548 +52,564 @@
+ <attribute name="title" >
+ <string>Basic</string>
+ </attribute>
+- <layout class="QVBoxLayout" name="_2" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QGroupBox" name="generalGroup" >
++ <property name="geometry" >
++ <rect>
++ <x>9</x>
++ <y>9</y>
++ <width>391</width>
++ <height>72</height>
++ </rect>
+ </property>
+- <property name="margin" >
+- <number>9</number>
++ <property name="title" >
++ <string>General</string>
+ </property>
+- <item>
+- <widget class="QGroupBox" name="generalGroup" >
+- <property name="title" >
+- <string>General</string>
+- </property>
+- <layout class="QVBoxLayout" name="_3" >
++ <layout class="QVBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>9</number>
++ </property>
++ <item>
++ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+- <number>9</number>
++ <number>0</number>
+ </property>
+ <item>
+- <layout class="QHBoxLayout" name="_4" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QLabel" name="sessionNameLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="text" >
++ <string>Session Name:</string>
+ </property>
+- <item>
+- <widget class="QLabel" name="sessionNameLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Session Name:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLineEdit" name="sessionName" />
+- </item>
+- </layout>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="sessionName" />
+ </item>
+ </layout>
+- </widget>
+- </item>
+- <item>
+- <widget class="QGroupBox" name="serverGroup" >
+- <property name="title" >
+- <string>Server</string>
+- </property>
+- <layout class="QVBoxLayout" name="_5" >
++ </item>
++ </layout>
++ </widget>
++ <widget class="QGroupBox" name="serverGroup" >
++ <property name="geometry" >
++ <rect>
++ <x>9</x>
++ <y>87</y>
++ <width>391</width>
++ <height>106</height>
++ </rect>
++ </property>
++ <property name="title" >
++ <string>Server</string>
++ </property>
++ <layout class="QVBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>9</number>
++ </property>
++ <item>
++ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+- <number>9</number>
++ <number>0</number>
+ </property>
+ <item>
+- <layout class="QHBoxLayout" name="_6" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QLabel" name="hostnameLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="text" >
++ <string>Hostname:</string>
+ </property>
+- <item>
+- <widget class="QLabel" name="hostnameLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Hostname:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLineEdit" name="hostname" />
+- </item>
+- <item>
+- <widget class="QLabel" name="portLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Port:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QSpinBox" name="port" >
+- <property name="minimum" >
+- <number>1</number>
+- </property>
+- <property name="maximum" >
+- <number>65535</number>
+- </property>
+- <property name="value" >
+- <number>22</number>
+- </property>
+- </widget>
+- </item>
+- </layout>
++ </widget>
+ </item>
+ <item>
+- <layout class="QHBoxLayout" name="_7" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QLineEdit" name="hostname" />
++ </item>
++ <item>
++ <widget class="QLabel" name="portLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="text" >
++ <string>Port:</string>
+ </property>
+- <item>
+- <widget class="QCheckBox" name="defaultKey" >
+- <property name="text" >
+- <string>Use default key</string>
+- </property>
+- <property name="checked" >
+- <bool>true</bool>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QPushButton" name="setAuthKeyButton" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="text" >
+- <string>&amp;Set Authentication Key...</string>
+- </property>
+- </widget>
+- </item>
+- </layout>
++ </widget>
++ </item>
++ <item>
++ <widget class="QSpinBox" name="port" >
++ <property name="minimum" >
++ <number>1</number>
++ </property>
++ <property name="maximum" >
++ <number>65535</number>
++ </property>
++ <property name="value" >
++ <number>22</number>
++ </property>
++ </widget>
+ </item>
+ </layout>
+- </widget>
+- </item>
+- <item>
+- <widget class="QGroupBox" name="desktopGroup" >
+- <property name="title" >
+- <string>Desktop</string>
+- </property>
+- <layout class="QVBoxLayout" name="_8" >
++ </item>
++ <item>
++ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+- <number>9</number>
++ <number>0</number>
+ </property>
+ <item>
+- <layout class="QHBoxLayout" name="_9" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QCheckBox" name="defaultKey" >
++ <property name="text" >
++ <string>Use default key</string>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="checked" >
++ <bool>true</bool>
+ </property>
+- <item>
+- <widget class="QLabel" name="platformLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Platform:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="platform" >
+- <item>
+- <property name="text" >
+- <string>UNIX</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>Windows</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>VNC Proxy</string>
+- </property>
+- </item>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLabel" name="typeLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Type:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="type" >
+- <item>
+- <property name="text" >
+- <string>KDE</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>GNOME</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>CDE</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>XDM</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>Custom</string>
+- </property>
+- </item>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLabel" name="linkLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Link:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="link" >
+- <item>
+- <property name="text" >
+- <string>Modem</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>ISDN</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>ADSL</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>WAN</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>LAN</string>
+- </property>
+- </item>
+- </widget>
+- </item>
+- </layout>
++ </widget>
+ </item>
+ <item>
+- <layout class="QHBoxLayout" name="_10" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QPushButton" name="setAuthKeyButton" >
++ <property name="enabled" >
++ <bool>false</bool>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="text" >
++ <string>&amp;Set Authentication Key...</string>
+ </property>
+- <item>
+- <spacer>
+- <property name="orientation" >
+- <enum>Qt::Horizontal</enum>
+- </property>
+- <property name="sizeHint" stdset="0" >
+- <size>
+- <width>173</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- </item>
+- <item>
+- <widget class="QPushButton" name="desktopSettingButton" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="text" >
+- <string>&amp;Settings...</string>
+- </property>
+- </widget>
+- </item>
+- </layout>
++ </widget>
+ </item>
+ </layout>
+- </widget>
+- </item>
+- <item>
+- <widget class="QGroupBox" name="groupBox" >
+- <property name="title" >
+- <string>Geometry</string>
+- </property>
+- <layout class="QVBoxLayout" name="_11" >
++ </item>
++ </layout>
++ </widget>
++ <widget class="QGroupBox" name="desktopGroup" >
++ <property name="geometry" >
++ <rect>
++ <x>9</x>
++ <y>199</y>
++ <width>391</width>
++ <height>105</height>
++ </rect>
++ </property>
++ <property name="title" >
++ <string>Desktop</string>
++ </property>
++ <layout class="QVBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>9</number>
++ </property>
++ <item>
++ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+- <number>9</number>
++ <number>0</number>
+ </property>
+ <item>
+- <layout class="QHBoxLayout" name="_12" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QLabel" name="platformLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="text" >
++ <string>Platform:</string>
+ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="platform" >
+ <item>
+- <widget class="QLabel" name="resolutionLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Resolution:</string>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>UNIX</string>
++ </property>
+ </item>
+ <item>
+- <widget class="QComboBox" name="resolution" >
+- <item>
+- <property name="text" >
+- <string>640x480</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>800x600</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>1024x768</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>Fullscreen</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>Custom</string>
+- </property>
+- </item>
+- </widget>
++ <property name="text" >
++ <string>Windows</string>
++ </property>
+ </item>
+ <item>
+- <widget class="QLabel" name="compressionLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Compression:</string>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>VNC Proxy</string>
++ </property>
+ </item>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="typeLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Type:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="type" >
+ <item>
+- <widget class="QComboBox" name="imageCompressionType" >
+- <item>
+- <property name="text" >
+- <string>PNG</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>JPEG</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>Raw X11</string>
+- </property>
+- </item>
+- </widget>
++ <property name="text" >
++ <string>KDE</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>GNOME</string>
++ </property>
+ </item>
+- </layout>
++ <item>
++ <property name="text" >
++ <string>CDE</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>XDM</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Custom</string>
++ </property>
++ </item>
++ </widget>
+ </item>
+ <item>
+- <layout class="QHBoxLayout" name="_13" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QLabel" name="linkLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="text" >
++ <string>Link:</string>
+ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="link" >
+ <item>
+- <widget class="QLabel" name="qualityLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>JPEG Quality:</string>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>Modem</string>
++ </property>
+ </item>
+ <item>
+- <widget class="QSlider" name="imageQualityLevel" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="minimum" >
+- <number>1</number>
+- </property>
+- <property name="maximum" >
+- <number>9</number>
+- </property>
+- <property name="pageStep" >
+- <number>9</number>
+- </property>
+- <property name="value" >
+- <number>6</number>
+- </property>
+- <property name="orientation" >
+- <enum>Qt::Horizontal</enum>
+- </property>
+- <property name="tickPosition" >
+- <enum>QSlider::TicksBelow</enum>
+- </property>
+- <property name="tickInterval" >
+- <number>1</number>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>ISDN</string>
++ </property>
+ </item>
+- </layout>
++ <item>
++ <property name="text" >
++ <string>ADSL</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>WAN</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>LAN</string>
++ </property>
++ </item>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>0</number>
++ </property>
++ <item>
++ <spacer>
++ <property name="orientation" >
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeHint" stdset="0" >
++ <size>
++ <width>173</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
+ </item>
+ <item>
+- <layout class="QHBoxLayout" name="_14" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QPushButton" name="desktopSettingButton" >
++ <property name="enabled" >
++ <bool>false</bool>
+ </property>
+- <property name="margin" >
+- <number>0</number>
++ <property name="text" >
++ <string>&amp;Settings...</string>
+ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </widget>
++ <widget class="QGroupBox" name="groupBox" >
++ <property name="geometry" >
++ <rect>
++ <x>9</x>
++ <y>310</y>
++ <width>391</width>
++ <height>133</height>
++ </rect>
++ </property>
++ <property name="title" >
++ <string>Geometry</string>
++ </property>
++ <layout class="QVBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>9</number>
++ </property>
++ <item>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QLabel" name="resolutionLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Resolution:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="resolution" >
+ <item>
+- <widget class="QCheckBox" name="render" >
+- <property name="text" >
+- <string>Use RENDER Extension</string>
+- </property>
+- <property name="checked" >
+- <bool>true</bool>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>640x480</string>
++ </property>
+ </item>
+ <item>
+- <widget class="QLabel" name="widthLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Width:</string>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>800x600</string>
++ </property>
+ </item>
+ <item>
+- <widget class="QSpinBox" name="width" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="maximum" >
+- <number>9999</number>
+- </property>
+- <property name="value" >
+- <number>800</number>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>1024x768</string>
++ </property>
+ </item>
+ <item>
+- <widget class="QLabel" name="heightLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Height:</string>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>Fullscreen</string>
++ </property>
+ </item>
+ <item>
+- <widget class="QSpinBox" name="height" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="maximum" >
+- <number>9999</number>
+- </property>
+- <property name="value" >
+- <number>600</number>
+- </property>
+- </widget>
++ <property name="text" >
++ <string>Custom</string>
++ </property>
+ </item>
+- </layout>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="compressionLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Compression:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="imageCompressionType" >
++ <item>
++ <property name="text" >
++ <string>PNG</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>JPEG</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Raw X11</string>
++ </property>
++ </item>
++ </widget>
+ </item>
+ </layout>
+- </widget>
+- </item>
+- </layout>
++ </item>
++ <item>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QLabel" name="qualityLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>JPEG Quality:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QSlider" name="imageQualityLevel" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="minimum" >
++ <number>1</number>
++ </property>
++ <property name="maximum" >
++ <number>9</number>
++ </property>
++ <property name="pageStep" >
++ <number>9</number>
++ </property>
++ <property name="value" >
++ <number>6</number>
++ </property>
++ <property name="orientation" >
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="tickPosition" >
++ <enum>QSlider::TicksBelow</enum>
++ </property>
++ <property name="tickInterval" >
++ <number>1</number>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QCheckBox" name="render" >
++ <property name="text" >
++ <string>Use RENDER Extension</string>
++ </property>
++ <property name="checked" >
++ <bool>true</bool>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="widthLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Width:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QSpinBox" name="width" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="maximum" >
++ <number>9999</number>
++ </property>
++ <property name="value" >
++ <number>800</number>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="heightLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Height:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QSpinBox" name="height" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="maximum" >
++ <number>9999</number>
++ </property>
++ <property name="value" >
++ <number>600</number>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </widget>
+ </widget>
+ <widget class="QWidget" name="advancedTab" >
+ <attribute name="title" >
+@@ -599,22 +621,24 @@
+ <property name="title" >
+ <string>Network</string>
+ </property>
+- <widget class="QCheckBox" name="encryption" >
+- <property name="geometry" >
+- <rect>
+- <x>11</x>
+- <y>28</y>
+- <width>396</width>
+- <height>22</height>
+- </rect>
+- </property>
+- <property name="text" >
+- <string>Use SSH Tunneling</string>
++ <layout class="QVBoxLayout" name="_2" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="checked" >
+- <bool>true</bool>
++ <property name="margin" >
++ <number>9</number>
+ </property>
+- </widget>
++ <item>
++ <widget class="QCheckBox" name="encryption" >
++ <property name="text" >
++ <string>Use SSH Tunneling</string>
++ </property>
++ <property name="checked" >
++ <bool>true</bool>
++ </property>
++ </widget>
++ </item>
++ </layout>
+ </widget>
+ </item>
+ <item>
+@@ -622,7 +646,7 @@
+ <property name="title" >
+ <string>Cache</string>
+ </property>
+- <layout class="QVBoxLayout" name="_17" >
++ <layout class="QVBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+@@ -630,7 +654,7 @@
+ <number>9</number>
+ </property>
+ <item>
+- <layout class="QHBoxLayout" name="_18" >
++ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+@@ -703,13 +727,13 @@
+ </widget>
+ </item>
+ <item>
+- <widget class="QGroupBox" name="groupBox_2" >
++ <widget class="QGroupBox" name="keyboardGroup" >
+ <property name="title" >
+ <string>Keyboard</string>
+ </property>
+- <layout class="QHBoxLayout" name="horizontalLayout" >
++ <layout class="QHBoxLayout" >
+ <item>
+- <layout class="QHBoxLayout" name="_21" >
++ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+@@ -746,7 +770,7 @@
+ </layout>
+ </item>
+ <item>
+- <layout class="QHBoxLayout" name="_22" >
++ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+@@ -789,7 +813,7 @@
+ </layout>
+ </item>
+ <item>
+- <spacer name="horizontalSpacer" >
++ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+@@ -805,7 +829,126 @@
+ </widget>
+ </item>
+ <item>
+- <spacer>
++ <widget class="QGroupBox" name="proxyGroup" >
++ <property name="title" >
++ <string>Proxy Settings</string>
++ </property>
++ <layout class="QHBoxLayout" >
++ <item>
++ <layout class="QVBoxLayout" >
++ <item>
++ <widget class="QCheckBox" name="useProxy" >
++ <property name="text" >
++ <string>Use proxy to connect</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <layout class="QHBoxLayout" >
++ <item>
++ <widget class="QLabel" name="label_4" >
++ <property name="text" >
++ <string>Hostname:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="proxyHost" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QHBoxLayout" >
++ <item>
++ <widget class="QLabel" name="label_3" >
++ <property name="text" >
++ <string>Port:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QSpinBox" name="proxyPort" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="maximum" >
++ <number>32768</number>
++ </property>
++ <property name="value" >
++ <number>8080</number>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QVBoxLayout" >
++ <item>
++ <widget class="QCheckBox" name="proxyAuthenticated" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="text" >
++ <string>Proxy requires authentication</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <layout class="QHBoxLayout" >
++ <item>
++ <layout class="QVBoxLayout" >
++ <item>
++ <widget class="QLabel" name="label" >
++ <property name="text" >
++ <string>Username:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="label_2" >
++ <property name="text" >
++ <string>Password:</string>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QVBoxLayout" >
++ <item>
++ <widget class="QLineEdit" name="proxyUser" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="proxyPass" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="echoMode" >
++ <enum>QLineEdit::Password</enum>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </item>
++ </layout>
++ </widget>
++ </item>
++ <item>
++ <spacer name="verticalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+@@ -821,63 +964,60 @@
+ </widget>
+ </widget>
+ </item>
+- <item>
+- <layout class="QHBoxLayout" name="bottomLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>0</number>
+- </property>
+- <item>
+- <widget class="QPushButton" name="cancelButton" >
+- <property name="text" >
+- <string>&amp;Cancel</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <spacer name="spacer" >
+- <property name="orientation" >
+- <enum>Qt::Horizontal</enum>
+- </property>
+- <property name="sizeHint" stdset="0" >
+- <size>
+- <width>40</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+- </item>
+- <item>
+- <widget class="QPushButton" name="okButton" >
+- <property name="text" >
+- <string>&amp;OK</string>
+- </property>
+- <property name="autoDefault" >
+- <bool>false</bool>
+- </property>
+- <property name="default" >
+- <bool>true</bool>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QPushButton" name="applyButton" >
+- <property name="text" >
+- <string>&amp;Apply</string>
+- </property>
+- <property name="autoDefault" >
+- <bool>false</bool>
+- </property>
+- </widget>
+- </item>
+- </layout>
+- </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
++ <item>
++ <layout class="QHBoxLayout" name="horizontalLayout" >
++ <property name="sizeConstraint" >
++ <enum>QLayout::SetMinimumSize</enum>
++ </property>
++ <item>
++ <widget class="QPushButton" name="cancelButton" >
++ <property name="text" >
++ <string>&amp;Cancel</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <spacer>
++ <property name="orientation" >
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeHint" stdset="0" >
++ <size>
++ <width>40</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ <item>
++ <widget class="QPushButton" name="okButton" >
++ <property name="text" >
++ <string>&amp;OK</string>
++ </property>
++ <property name="autoDefault" >
++ <bool>false</bool>
++ </property>
++ <property name="default" >
++ <bool>true</bool>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QPushButton" name="applyButton" >
++ <property name="text" >
++ <string>&amp;Apply</string>
++ </property>
++ <property name="autoDefault" >
++ <bool>false</bool>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </item>
+ </layout>
+ </widget>
+ <resources/>
diff --git a/packages/qtnx/files/keychooser.patch b/packages/qtnx/files/keychooser.patch
new file mode 100644
index 0000000000..5fed725c87
--- /dev/null
+++ b/packages/qtnx/files/keychooser.patch
@@ -0,0 +1,126 @@
+Index: qtnx-0.9/qtnxwindow.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.cpp 2008-10-14 10:43:03.000000000 +0200
++++ qtnx-0.9/qtnxwindow.cpp 2008-10-14 10:43:03.000000000 +0200
+@@ -304,6 +304,7 @@
+ void QtNXWindow::startConnect()
+ {
+ string key = "";
++ string publicKey = "/usr/share/qtnx/id.key";
+
+ if (ui_lg.session->currentText() == tr("Create new session")) {
+ QMessageBox::critical(this, tr("Unconfigured"),
+@@ -345,11 +346,14 @@
+ else if (ui_lg.link->currentText() == tr("LAN"))
+ session.linkType = "lan";
+
+- if (!config.key.empty()) {
+- key = config.key;
++ if (!config.publicKey.empty()) {
++ publicKey = config.publicKey;
+ session.key = "supplied";
+ } else
++ {
+ session.key = "default";
++ publicKey = "/usr/share/qtnx/id.key";
++ }
+
+ if (config.sessionType == "unix-application")
+ session.customCommand = config.customCommand;
+@@ -365,13 +369,12 @@
+
+ m_NXClient->setDepth(getDepth());
+
+- QString keyPath = "/usr/share/qtnx/id.key";
+
+ #ifdef Q_WS_MAC
+- keyPath = binaryPath + "/id.key";
++ publicKey = binaryPath + "/id.key";
+ #endif
+
+- m_NXClient->invokeNXSSH(keyPath.toStdString(), config.serverHost, config.encryption, "",
++ m_NXClient->invokeNXSSH(publicKey, config.serverHost, config.encryption, "",
+ config.serverPort);
+
+ processProbe->start(30);
+Index: qtnx-0.9/qtnxsettings.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxsettings.cpp 2008-10-14 10:43:03.000000000 +0200
++++ qtnx-0.9/qtnxsettings.cpp 2008-10-14 10:43:03.000000000 +0200
+@@ -17,6 +17,7 @@
+
+ #include <QFile>
+ #include <QDir>
++#include <QFileDialog>
+
+ #include "qtnxsettings.h"
+
+@@ -82,7 +83,7 @@
+ ui_sd.hostname->setText(QString::fromStdString(config.serverHost));
+ ui_sd.port->setValue(config.serverPort);
+
+- if (config.key.empty())
++ if (config.publicKey.empty())
+ ui_sd.defaultKey->setChecked(true);
+ else {
+ ui_sd.defaultKey->setChecked(false);
+@@ -221,7 +222,7 @@
+ void QtNXSettings::keyChanged(int state)
+ {
+ if (state == Qt::Checked) {
+- config.key = "";
++ config.publicKey = "";
+ ui_sd.setAuthKeyButton->setEnabled(false);
+ } else
+ ui_sd.setAuthKeyButton->setEnabled(true);
+@@ -265,15 +266,11 @@
+
+ void QtNXSettings::authKeyPressed()
+ {
+- keyDialog = 0;
+- delete keyDialog;
+- keyDialog = new QDialog(this);
+- ui_kd.setupUi(keyDialog);
+- keyDialog->show();
+- QTextDocument *doc_key = new QTextDocument(QString::fromStdString(config.key));
+- ui_kd.key->setDocument(doc_key);
+-
+- connect(keyDialog, SIGNAL(accepted()), this, SLOT(keyDialogAccept()));
++ QString publicKey = QFileDialog::getOpenFileName(this,
++ tr("Open File"),
++ ".qtnx",
++ tr("Keyfiles (*.key )"));
++ config.publicKey = publicKey.toStdString();
+ }
+
+ void QtNXSettings::keyDialogAccept()
+Index: qtnx-0.9/nxwritexml.cpp
+===================================================================
+--- qtnx-0.9.orig/nxwritexml.cpp 2008-10-14 10:43:03.000000000 +0200
++++ qtnx-0.9/nxwritexml.cpp 2008-10-14 10:43:03.000000000 +0200
+@@ -123,6 +123,10 @@
+ escape(QString::fromStdString(sessionData.key)) <<
+ "\"></option>\n";
+
++ xml << "<option key=\"Public Authentication Key\" value=\"" <<
++ escape(QString::fromStdString(sessionData.publicKey)) <<
++ "\"></option>\n";
++
+ if (sessionData.encryption == true)
+ xml << "<option key=\"Use SSL Tunnelling\" value=\"True\">" <<
+ "</option>\n";
+Index: qtnx-0.9/nxparsexml.cpp
+===================================================================
+--- qtnx-0.9.orig/nxparsexml.cpp 2008-10-14 10:43:03.000000000 +0200
++++ qtnx-0.9/nxparsexml.cpp 2008-10-14 10:43:03.000000000 +0200
+@@ -119,6 +119,10 @@
+ sessionData->key = attributes.value("value").toStdString();
+ }
+
++ if (attributes.value("key") == "Public Authentication Key") {
++ sessionData->publicKey = attributes.value("value").toStdString();
++ }
++
+ if (attributes.value("key") == "Use SSL Tunnelling") {
+ if (attributes.value("value") == "True")
+ sessionData->encryption = true;
diff --git a/packages/qtnx/files/keymap.patch b/packages/qtnx/files/keymap.patch
new file mode 100644
index 0000000000..ed37a23774
--- /dev/null
+++ b/packages/qtnx/files/keymap.patch
@@ -0,0 +1,283 @@
+Index: qtnx-0.9/qtnxwindow.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.cpp 2008-10-13 14:35:29.000000000 +0200
++++ qtnx-0.9/qtnxwindow.cpp 2008-10-13 14:35:33.000000000 +0200
+@@ -315,8 +315,8 @@
+ session.imageCompressionMethod = config.imageCompressionMethod;
+ session.imageCompressionLevel = config.imageCompressionLevel;
+ session.geometry = config.geometry;
+- session.keyboard = "defkeymap";
+- session.kbtype = "pc102/defkeymap";
++ session.keyboard = config.keyboard;
++ session.kbtype = config.kbtype;
+ session.media = config.media;
+ session.agentServer = config.agentServer;
+ session.agentUser = config.agentUser;
+Index: qtnx-0.9/settingsdialog.ui
+===================================================================
+--- qtnx-0.9.orig/settingsdialog.ui 2008-10-13 14:35:32.000000000 +0200
++++ qtnx-0.9/settingsdialog.ui 2008-10-13 14:35:33.000000000 +0200
+@@ -43,14 +43,6 @@
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="basicTab" >
+- <property name="geometry" >
+- <rect>
+- <x>0</x>
+- <y>0</y>
+- <width>436</width>
+- <height>439</height>
+- </rect>
+- </property>
+ <attribute name="title" >
+ <string>Basic</string>
+ </attribute>
+@@ -598,47 +590,31 @@
+ </layout>
+ </widget>
+ <widget class="QWidget" name="advancedTab" >
+- <property name="geometry" >
+- <rect>
+- <x>0</x>
+- <y>0</y>
+- <width>624</width>
+- <height>496</height>
+- </rect>
+- </property>
+ <attribute name="title" >
+ <string>Advanced</string>
+ </attribute>
+- <layout class="QVBoxLayout" name="_15" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>9</number>
+- </property>
++ <layout class="QVBoxLayout" name="verticalLayout_2" >
+ <item>
+ <widget class="QGroupBox" name="networkGroup" >
+ <property name="title" >
+ <string>Network</string>
+ </property>
+- <layout class="QVBoxLayout" name="_16" >
+- <property name="spacing" >
+- <number>6</number>
++ <widget class="QCheckBox" name="encryption" >
++ <property name="geometry" >
++ <rect>
++ <x>11</x>
++ <y>28</y>
++ <width>396</width>
++ <height>22</height>
++ </rect>
+ </property>
+- <property name="margin" >
+- <number>9</number>
++ <property name="text" >
++ <string>Use SSH Tunneling</string>
+ </property>
+- <item>
+- <widget class="QCheckBox" name="encryption" >
+- <property name="text" >
+- <string>Use SSH Tunneling</string>
+- </property>
+- <property name="checked" >
+- <bool>true</bool>
+- </property>
+- </widget>
+- </item>
+- </layout>
++ <property name="checked" >
++ <bool>true</bool>
++ </property>
++ </widget>
+ </widget>
+ </item>
+ <item>
+@@ -727,6 +703,108 @@
+ </widget>
+ </item>
+ <item>
++ <widget class="QGroupBox" name="groupBox_2" >
++ <property name="title" >
++ <string>Keyboard</string>
++ </property>
++ <layout class="QHBoxLayout" name="horizontalLayout" >
++ <item>
++ <layout class="QHBoxLayout" name="_21" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QLabel" name="keyboardLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Type:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="keyboard" >
++ <item>
++ <property name="text" >
++ <string>Standard</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Nokia N810</string>
++ </property>
++ </item>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <layout class="QHBoxLayout" name="_22" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>0</number>
++ </property>
++ <item>
++ <widget class="QLabel" name="languageLabel" >
++ <property name="enabled" >
++ <bool>true</bool>
++ </property>
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Language:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="language" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <item>
++ <property name="text" >
++ <string>de</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>us</string>
++ </property>
++ </item>
++ </widget>
++ </item>
++ </layout>
++ </item>
++ <item>
++ <spacer name="horizontalSpacer" >
++ <property name="orientation" >
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeHint" stdset="0" >
++ <size>
++ <width>40</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ </layout>
++ </widget>
++ </item>
++ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+Index: qtnx-0.9/qtnxsettings.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxsettings.cpp 2008-10-13 14:07:34.000000000 +0200
++++ qtnx-0.9/qtnxsettings.cpp 2008-10-13 14:36:44.000000000 +0200
+@@ -43,6 +43,7 @@
+
+ connect(ui_sd.resolution, SIGNAL(currentIndexChanged(QString)), this, SLOT(resolutionChanged(QString)));
+ connect(ui_sd.imageCompressionType, SIGNAL(currentIndexChanged(QString)), this, SLOT(compressionChanged(QString)));
++ connect(ui_sd.keyboard, SIGNAL(currentIndexChanged(QString)), this, SLOT(keyboardChanged(QString)));
+ connect(ui_sd.defaultKey, SIGNAL(stateChanged(int)), this, SLOT(keyChanged(int)));
+ connect(ui_sd.applyButton, SIGNAL(pressed()), this, SLOT(applyPressed()));
+ connect(ui_sd.okButton, SIGNAL(pressed()), this, SLOT(okPressed()));
+@@ -78,6 +79,16 @@
+ ui_sd.setAuthKeyButton->setEnabled(true);
+ }
+
++ if (config.keyboard == "defkeymap")
++ {
++ ui_sd.keyboard->setCurrentIndex(ui_sd.keyboard->findText(tr("Standard")));
++ } else if (QString(config.keyboard.data()).contains("nokiarx44"))
++ {
++ ui_sd.keyboard->setCurrentIndex(ui_sd.keyboard->findText(tr("Nokia N810")));
++ ui_sd.language->setCurrentIndex(ui_sd.language->findText(QString(config.keyboard.data()).right(2)));
++ ui_sd.language->setEnabled(true);
++ }
++
+ if (config.sessionType == "unix-kde") {
+ ui_sd.platform->setCurrentIndex(ui_sd.platform->findText(tr("UNIX")));
+ ui_sd.type->setCurrentIndex(ui_sd.type->findText(tr("KDE")));
+@@ -162,6 +173,15 @@
+ }
+ }
+
++void QtNXSettings::keyboardChanged(QString text)
++{
++ if (text == tr("Nokia N810")) {
++ ui_sd.language->setEnabled(true);
++ } else {
++ ui_sd.language->setEnabled(false);
++ }
++}
++
+ void QtNXSettings::platformChanged(QString text)
+ {
+ }
+@@ -230,8 +250,17 @@
+ config.serverPort = ui_sd.port->value();
+
+ // TODO: Add keyboard selection support
+- config.keyboard = "defkeymap";
+- config.kbtype = "pc102/defkeymap";
++
++ if (ui_sd.keyboard->currentText() == tr("Standard"))
++ {
++ config.keyboard = "defkeymap";
++ config.kbtype = "pc102/defkeymap";
++ } else if (ui_sd.keyboard->currentText() == tr("Nokia N810"))
++ {
++ config.keyboard =
++ "nokiarx44/" + ui_sd.language->currentText().toStdString();
++ config.kbtype = config.keyboard;
++ }
+
+ if (ui_sd.platform->currentText() == tr("UNIX")) {
+ if (ui_sd.type->currentText() == tr("KDE"))
+Index: qtnx-0.9/qtnxsettings.h
+===================================================================
+--- qtnx-0.9.orig/qtnxsettings.h 2008-10-13 14:07:34.000000000 +0200
++++ qtnx-0.9/qtnxsettings.h 2008-10-13 14:35:33.000000000 +0200
+@@ -38,6 +38,7 @@
+ void resolutionChanged(QString);
+ void compressionChanged(QString);
+ void platformChanged(QString);
++ void keyboardChanged(QString);
+ void typeChanged(QString);
+ void keyChanged(int);
+ void applyPressed();
diff --git a/packages/qtnx/files/pro.patch b/packages/qtnx/files/pro.patch
index 2e1b10ca3a..c11f39d540 100644
--- a/packages/qtnx/files/pro.patch
+++ b/packages/qtnx/files/pro.patch
@@ -1,5 +1,3 @@
-patch by Henning Heinold
-
Index: qtnx-0.9/qtnx.pro
===================================================================
--- qtnx-0.9.orig/qtnx.pro 2008-09-04 11:42:19.000000000 +0200
diff --git a/packages/qtnx/files/scroll.patch b/packages/qtnx/files/scroll.patch
index 107c7177c6..9fe4ab5957 100644
--- a/packages/qtnx/files/scroll.patch
+++ b/packages/qtnx/files/scroll.patch
@@ -1,6 +1,3 @@
-patch by Henning Heinold, so the configure-widget is
-scrollable
-
Index: qtnx-0.9/settingsdialog.ui
===================================================================
--- qtnx-0.9.orig/settingsdialog.ui 2008-09-03 21:32:51.716503112 +0200
diff --git a/packages/qtnx/files/sessionfiles.patch b/packages/qtnx/files/sessionfiles.patch
new file mode 100644
index 0000000000..f39e29dab5
--- /dev/null
+++ b/packages/qtnx/files/sessionfiles.patch
@@ -0,0 +1,1187 @@
+Index: qtnx-0.9/settingsdialog.ui
+===================================================================
+--- qtnx-0.9.orig/settingsdialog.ui 2008-10-15 14:31:27.000000000 +0200
++++ qtnx-0.9/settingsdialog.ui 2008-10-15 14:31:27.000000000 +0200
+@@ -5,8 +5,8 @@
+ <rect>
+ <x>0</x>
+ <y>0</y>
+- <width>454</width>
+- <height>559</height>
++ <width>480</width>
++ <height>570</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+@@ -26,8 +26,8 @@
+ <rect>
+ <x>0</x>
+ <y>0</y>
+- <width>432</width>
+- <height>501</height>
++ <width>443</width>
++ <height>512</height>
+ </rect>
+ </property>
+ <property name="sizePolicy" >
+@@ -52,570 +52,548 @@
+ <attribute name="title" >
+ <string>Basic</string>
+ </attribute>
+- <widget class="QGroupBox" name="generalGroup" >
+- <property name="geometry" >
+- <rect>
+- <x>9</x>
+- <y>9</y>
+- <width>391</width>
+- <height>72</height>
+- </rect>
+- </property>
+- <property name="title" >
+- <string>General</string>
+- </property>
+- <layout class="QVBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>9</number>
+- </property>
+- <item>
+- <layout class="QHBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>0</number>
+- </property>
+- <item>
+- <widget class="QLabel" name="sessionNameLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Session Name:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLineEdit" name="sessionName" />
+- </item>
+- </layout>
+- </item>
+- </layout>
+- </widget>
+- <widget class="QGroupBox" name="serverGroup" >
+- <property name="geometry" >
+- <rect>
+- <x>9</x>
+- <y>87</y>
+- <width>391</width>
+- <height>106</height>
+- </rect>
+- </property>
+- <property name="title" >
+- <string>Server</string>
+- </property>
+- <layout class="QVBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>9</number>
+- </property>
+- <item>
+- <layout class="QHBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>0</number>
+- </property>
+- <item>
+- <widget class="QLabel" name="hostnameLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Hostname:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLineEdit" name="hostname" />
+- </item>
+- <item>
+- <widget class="QLabel" name="portLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Port:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QSpinBox" name="port" >
+- <property name="minimum" >
+- <number>1</number>
+- </property>
+- <property name="maximum" >
+- <number>65535</number>
+- </property>
+- <property name="value" >
+- <number>22</number>
+- </property>
+- </widget>
+- </item>
+- </layout>
+- </item>
+- <item>
+- <layout class="QHBoxLayout" >
++ <layout class="QVBoxLayout" name="verticalLayout_2" >
++ <item>
++ <widget class="QGroupBox" name="generalGroup" >
++ <property name="title" >
++ <string>General</string>
++ </property>
++ <layout class="QVBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+- <number>0</number>
++ <number>9</number>
+ </property>
+ <item>
+- <widget class="QCheckBox" name="defaultKey" >
+- <property name="text" >
+- <string>Use default key</string>
+- </property>
+- <property name="checked" >
+- <bool>true</bool>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QPushButton" name="setAuthKeyButton" >
+- <property name="enabled" >
+- <bool>false</bool>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="text" >
+- <string>&amp;Set Authentication Key...</string>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
++ <item>
++ <widget class="QLabel" name="sessionNameLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Session Name:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="sessionName" />
++ </item>
++ </layout>
+ </item>
+ </layout>
+- </item>
+- </layout>
+- </widget>
+- <widget class="QGroupBox" name="desktopGroup" >
+- <property name="geometry" >
+- <rect>
+- <x>9</x>
+- <y>199</y>
+- <width>391</width>
+- <height>105</height>
+- </rect>
+- </property>
+- <property name="title" >
+- <string>Desktop</string>
+- </property>
+- <layout class="QVBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>9</number>
+- </property>
+- <item>
+- <layout class="QHBoxLayout" >
++ </widget>
++ </item>
++ <item>
++ <widget class="QGroupBox" name="serverGroup" >
++ <property name="title" >
++ <string>Server</string>
++ </property>
++ <layout class="QVBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+- <number>0</number>
++ <number>9</number>
+ </property>
+ <item>
+- <widget class="QLabel" name="platformLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="text" >
+- <string>Platform:</string>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="platform" >
+ <item>
+- <property name="text" >
+- <string>UNIX</string>
+- </property>
++ <widget class="QLabel" name="hostnameLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Hostname:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLineEdit" name="hostname" />
+ </item>
+ <item>
+- <property name="text" >
+- <string>Windows</string>
+- </property>
++ <widget class="QLabel" name="portLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Port:</string>
++ </property>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>VNC Proxy</string>
+- </property>
++ <widget class="QSpinBox" name="port" >
++ <property name="minimum" >
++ <number>1</number>
++ </property>
++ <property name="maximum" >
++ <number>65535</number>
++ </property>
++ <property name="value" >
++ <number>22</number>
++ </property>
++ </widget>
+ </item>
+- </widget>
++ </layout>
+ </item>
+ <item>
+- <widget class="QLabel" name="typeLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="text" >
+- <string>Type:</string>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="type" >
+- <item>
+- <property name="text" >
+- <string>KDE</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>GNOME</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>CDE</string>
+- </property>
+- </item>
+ <item>
+- <property name="text" >
+- <string>XDM</string>
+- </property>
++ <widget class="QCheckBox" name="defaultKey" >
++ <property name="text" >
++ <string>Use default key</string>
++ </property>
++ <property name="checked" >
++ <bool>true</bool>
++ </property>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>Custom</string>
+- </property>
++ <widget class="QPushButton" name="setAuthKeyButton" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="text" >
++ <string>&amp;Set Authentication Key...</string>
++ </property>
++ </widget>
+ </item>
+- </widget>
++ </layout>
+ </item>
++ </layout>
++ </widget>
++ </item>
++ <item>
++ <widget class="QGroupBox" name="desktopGroup" >
++ <property name="title" >
++ <string>Desktop</string>
++ </property>
++ <layout class="QVBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>9</number>
++ </property>
+ <item>
+- <widget class="QLabel" name="linkLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="text" >
+- <string>Link:</string>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="link" >
+ <item>
+- <property name="text" >
+- <string>Modem</string>
+- </property>
++ <widget class="QLabel" name="platformLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Platform:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QComboBox" name="platform" >
++ <item>
++ <property name="text" >
++ <string>UNIX</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Windows</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>VNC Proxy</string>
++ </property>
++ </item>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>ISDN</string>
+- </property>
++ <widget class="QLabel" name="typeLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Type:</string>
++ </property>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>ADSL</string>
+- </property>
++ <widget class="QComboBox" name="type" >
++ <item>
++ <property name="text" >
++ <string>KDE</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>GNOME</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>CDE</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>XDM</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Custom</string>
++ </property>
++ </item>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>WAN</string>
+- </property>
++ <widget class="QLabel" name="linkLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Link:</string>
++ </property>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>LAN</string>
+- </property>
++ <widget class="QComboBox" name="link" >
++ <item>
++ <property name="text" >
++ <string>Modem</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>ISDN</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>ADSL</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>WAN</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>LAN</string>
++ </property>
++ </item>
++ </widget>
+ </item>
+- </widget>
+- </item>
+- </layout>
+- </item>
+- <item>
+- <layout class="QHBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>0</number>
+- </property>
+- <item>
+- <spacer>
+- <property name="orientation" >
+- <enum>Qt::Horizontal</enum>
+- </property>
+- <property name="sizeHint" stdset="0" >
+- <size>
+- <width>173</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
++ </layout>
+ </item>
+ <item>
+- <widget class="QPushButton" name="desktopSettingButton" >
+- <property name="enabled" >
+- <bool>false</bool>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="text" >
+- <string>&amp;Settings...</string>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
++ <item>
++ <spacer>
++ <property name="orientation" >
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="sizeHint" stdset="0" >
++ <size>
++ <width>173</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </item>
++ <item>
++ <widget class="QPushButton" name="desktopSettingButton" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="text" >
++ <string>&amp;Settings...</string>
++ </property>
++ </widget>
++ </item>
++ </layout>
+ </item>
+ </layout>
+- </item>
+- </layout>
+- </widget>
+- <widget class="QGroupBox" name="groupBox" >
+- <property name="geometry" >
+- <rect>
+- <x>9</x>
+- <y>310</y>
+- <width>391</width>
+- <height>133</height>
+- </rect>
+- </property>
+- <property name="title" >
+- <string>Geometry</string>
+- </property>
+- <layout class="QVBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>9</number>
+- </property>
+- <item>
+- <layout class="QHBoxLayout" >
++ </widget>
++ </item>
++ <item>
++ <widget class="QGroupBox" name="groupBox" >
++ <property name="title" >
++ <string>Geometry</string>
++ </property>
++ <layout class="QVBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+- <number>0</number>
++ <number>9</number>
+ </property>
+ <item>
+- <widget class="QLabel" name="resolutionLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="text" >
+- <string>Resolution:</string>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="resolution" >
+ <item>
+- <property name="text" >
+- <string>640x480</string>
+- </property>
+- </item>
+- <item>
+- <property name="text" >
+- <string>800x600</string>
+- </property>
++ <widget class="QLabel" name="resolutionLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Resolution:</string>
++ </property>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>1024x768</string>
+- </property>
++ <widget class="QComboBox" name="resolution" >
++ <item>
++ <property name="text" >
++ <string>640x480</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>800x600</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>1024x768</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Fullscreen</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Custom</string>
++ </property>
++ </item>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>Fullscreen</string>
+- </property>
++ <widget class="QLabel" name="compressionLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Compression:</string>
++ </property>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>Custom</string>
+- </property>
++ <widget class="QComboBox" name="imageCompressionType" >
++ <item>
++ <property name="text" >
++ <string>PNG</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>JPEG</string>
++ </property>
++ </item>
++ <item>
++ <property name="text" >
++ <string>Raw X11</string>
++ </property>
++ </item>
++ </widget>
+ </item>
+- </widget>
++ </layout>
+ </item>
+ <item>
+- <widget class="QLabel" name="compressionLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
++ <number>6</number>
+ </property>
+- <property name="text" >
+- <string>Compression:</string>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QComboBox" name="imageCompressionType" >
+- <item>
+- <property name="text" >
+- <string>PNG</string>
+- </property>
+- </item>
+ <item>
+- <property name="text" >
+- <string>JPEG</string>
+- </property>
++ <widget class="QLabel" name="qualityLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>JPEG Quality:</string>
++ </property>
++ </widget>
+ </item>
+ <item>
+- <property name="text" >
+- <string>Raw X11</string>
+- </property>
++ <widget class="QSlider" name="imageQualityLevel" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="minimum" >
++ <number>1</number>
++ </property>
++ <property name="maximum" >
++ <number>9</number>
++ </property>
++ <property name="pageStep" >
++ <number>9</number>
++ </property>
++ <property name="value" >
++ <number>6</number>
++ </property>
++ <property name="orientation" >
++ <enum>Qt::Horizontal</enum>
++ </property>
++ <property name="tickPosition" >
++ <enum>QSlider::TicksBelow</enum>
++ </property>
++ <property name="tickInterval" >
++ <number>1</number>
++ </property>
++ </widget>
+ </item>
+- </widget>
+- </item>
+- </layout>
+- </item>
+- <item>
+- <layout class="QHBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>0</number>
+- </property>
+- <item>
+- <widget class="QLabel" name="qualityLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>JPEG Quality:</string>
+- </property>
+- </widget>
++ </layout>
+ </item>
+ <item>
+- <widget class="QSlider" name="imageQualityLevel" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="minimum" >
+- <number>1</number>
+- </property>
+- <property name="maximum" >
+- <number>9</number>
+- </property>
+- <property name="pageStep" >
+- <number>9</number>
+- </property>
+- <property name="value" >
++ <layout class="QHBoxLayout" >
++ <property name="spacing" >
+ <number>6</number>
+ </property>
+- <property name="orientation" >
+- <enum>Qt::Horizontal</enum>
+- </property>
+- <property name="tickPosition" >
+- <enum>QSlider::TicksBelow</enum>
+- </property>
+- <property name="tickInterval" >
+- <number>1</number>
+- </property>
+- </widget>
+- </item>
+- </layout>
+- </item>
+- <item>
+- <layout class="QHBoxLayout" >
+- <property name="spacing" >
+- <number>6</number>
+- </property>
+- <property name="margin" >
+- <number>0</number>
+- </property>
+- <item>
+- <widget class="QCheckBox" name="render" >
+- <property name="text" >
+- <string>Use RENDER Extension</string>
+- </property>
+- <property name="checked" >
+- <bool>true</bool>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLabel" name="widthLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Width:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QSpinBox" name="width" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="maximum" >
+- <number>9999</number>
+- </property>
+- <property name="value" >
+- <number>800</number>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QLabel" name="heightLabel" >
+- <property name="sizePolicy" >
+- <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="text" >
+- <string>Height:</string>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <widget class="QSpinBox" name="height" >
+- <property name="enabled" >
+- <bool>false</bool>
+- </property>
+- <property name="maximum" >
+- <number>9999</number>
+- </property>
+- <property name="value" >
+- <number>600</number>
++ <property name="margin" >
++ <number>0</number>
+ </property>
+- </widget>
++ <item>
++ <widget class="QCheckBox" name="render" >
++ <property name="text" >
++ <string>Use RENDER Extension</string>
++ </property>
++ <property name="checked" >
++ <bool>true</bool>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="widthLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Width:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QSpinBox" name="width" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="maximum" >
++ <number>9999</number>
++ </property>
++ <property name="value" >
++ <number>800</number>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QLabel" name="heightLabel" >
++ <property name="sizePolicy" >
++ <sizepolicy vsizetype="Preferred" hsizetype="Fixed" >
++ <horstretch>0</horstretch>
++ <verstretch>0</verstretch>
++ </sizepolicy>
++ </property>
++ <property name="text" >
++ <string>Height:</string>
++ </property>
++ </widget>
++ </item>
++ <item>
++ <widget class="QSpinBox" name="height" >
++ <property name="enabled" >
++ <bool>false</bool>
++ </property>
++ <property name="maximum" >
++ <number>9999</number>
++ </property>
++ <property name="value" >
++ <number>600</number>
++ </property>
++ </widget>
++ </item>
++ </layout>
+ </item>
+ </layout>
+- </item>
+- </layout>
+- </widget>
++ </widget>
++ </item>
++ </layout>
+ </widget>
+ <widget class="QWidget" name="advancedTab" >
+ <attribute name="title" >
+ <string>Advanced</string>
+ </attribute>
+- <layout class="QVBoxLayout" name="verticalLayout_2" >
++ <layout class="QVBoxLayout" name="verticalLayout_4" >
+ <item>
+ <widget class="QGroupBox" name="networkGroup" >
+ <property name="title" >
+@@ -948,17 +926,29 @@
+ </widget>
+ </item>
+ <item>
+- <spacer name="verticalSpacer" >
+- <property name="orientation" >
+- <enum>Qt::Vertical</enum>
+- </property>
+- <property name="sizeHint" stdset="0" >
+- <size>
+- <width>20</width>
+- <height>40</height>
+- </size>
++ <widget class="QGroupBox" name="logFilesGroup" >
++ <property name="title" >
++ <string>Sessionfiles</string>
+ </property>
+- </spacer>
++ <layout class="QVBoxLayout" name="_3" >
++ <property name="spacing" >
++ <number>6</number>
++ </property>
++ <property name="margin" >
++ <number>9</number>
++ </property>
++ <item>
++ <widget class="QCheckBox" name="delSessionfiles" >
++ <property name="text" >
++ <string>Delete Sessionfiles</string>
++ </property>
++ <property name="checked" >
++ <bool>true</bool>
++ </property>
++ </widget>
++ </item>
++ </layout>
++ </widget>
+ </item>
+ </layout>
+ </widget>
+Index: qtnx-0.9/nxparsexml.cpp
+===================================================================
+--- qtnx-0.9.orig/nxparsexml.cpp 2008-10-15 14:31:27.000000000 +0200
++++ qtnx-0.9/nxparsexml.cpp 2008-10-15 14:31:27.000000000 +0200
+@@ -167,6 +167,13 @@
+ sessionData->proxyPass = attributes.value("value").toStdString();
+ }
+
++ if (attributes.value("key") == "Delete Sessionfiles") {
++ if (attributes.value("value") == "True")
++ sessionData->delSessionfiles = true;
++ else
++ sessionData->delSessionfiles = false;
++ }
++
+ return true;
+ }
+
+Index: qtnx-0.9/nxwritexml.cpp
+===================================================================
+--- qtnx-0.9.orig/nxwritexml.cpp 2008-10-15 14:31:27.000000000 +0200
++++ qtnx-0.9/nxwritexml.cpp 2008-10-15 14:31:27.000000000 +0200
+@@ -171,6 +171,14 @@
+ xml << "<option key=\"Enable Fullscreen Desktop\" value=\"False\">" <<
+ "</option>\n";
+
++ if (sessionData.delSessionfiles == true)
++ xml << "<option key=\"Delete Sessionfiles\" value=\"True\">" <<
++ "</option>\n";
++ else
++ xml << "<option key=\"Delete Sessionfiles\" value=\"False\">" <<
++ "</option>\n";
++
++
+ xml << "</NXClientLibSettings>\n";
+
+ file.close();
+Index: qtnx-0.9/qtnxsettings.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxsettings.cpp 2008-10-15 14:31:27.000000000 +0200
++++ qtnx-0.9/qtnxsettings.cpp 2008-10-15 14:31:27.000000000 +0200
+@@ -175,6 +175,7 @@
+ ui_sd.proxyPass->setText(QString::fromStdString(config.proxyPass));
+
+ ui_sd.encryption->setChecked(config.encryption);
++ ui_sd.delSessionfiles->setChecked(config.delSessionfiles);
+ ui_sd.memoryCache->setValue(config.cache);
+ ui_sd.diskCache->setValue(config.images);
+
+@@ -356,6 +357,11 @@
+ else
+ config.encryption = false;
+
++ if (ui_sd.delSessionfiles->checkState() == Qt::Checked)
++ config.delSessionfiles = true;
++ else
++ config.delSessionfiles = false;
++
+ config.cache = ui_sd.memoryCache->value();
+ config.images = ui_sd.diskCache->value();
+
+Index: qtnx-0.9/qtnxwindow.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.cpp 2008-10-15 14:31:27.000000000 +0200
++++ qtnx-0.9/qtnxwindow.cpp 2008-10-15 15:31:26.000000000 +0200
+@@ -86,6 +86,13 @@
+ connect(&callback, SIGNAL(atCapacity()), this, SLOT(handleAtCapacity()));
+
+ connect(&callback, SIGNAL(connectedSuccessfully()), this, SLOT(quit()));
++
++ if (config.delSessionfiles)
++ {
++ cout << "delete Session files" << endl;
++ statusBar->showMessage("delete Sessionfiles");
++ NXClientLib::deleteAllSessionfiles();
++ }
+ }
+
+ void QtNXWindow::updateLinkType(QString sessionName)
+Index: qtnx-0.9/qtnxwindow.h
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.h 2008-10-15 14:31:27.000000000 +0200
++++ qtnx-0.9/qtnxwindow.h 2008-10-15 14:31:27.000000000 +0200
+@@ -24,8 +24,10 @@
+ #include <QStatusBar>
+ #include <QTimer>
+
+-#include "nxclientlib.h"
+-#include "nxdata.h"
++#include <nxclientlib.h>
++#include <nxdata.h>
++
++
+ #include "nxparsexml.h"
+
+ #include "qtnxsessions.h"
diff --git a/packages/qtnx/files/ssh_dnserror.patch b/packages/qtnx/files/ssh_dnserror.patch
new file mode 100644
index 0000000000..b4072c7aca
--- /dev/null
+++ b/packages/qtnx/files/ssh_dnserror.patch
@@ -0,0 +1,51 @@
+Index: qtnx-0.9/qtnxwindow.cpp
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.cpp 2008-11-05 18:53:29.000000000 +0100
++++ qtnx-0.9/qtnxwindow.cpp 2008-11-05 18:54:39.000000000 +0100
+@@ -271,6 +271,15 @@
+ reinitialiseClient();
+ }
+
++void QtNXWindow::dnsFailed()
++{
++ QMessageBox::critical(this, tr("DNS Lookup Failure"),
++ tr("Are you really connected to the network?"), QMessageBox::Ok, QMessageBox::NoButton,
++ QMessageBox::NoButton);
++
++ reinitialiseClient();
++}
++
+ void QtNXWindow::handleAtCapacity()
+ {
+ QMessageBox::critical(this, tr("Server at capacity"),
+@@ -381,6 +390,7 @@
+ publicKey = binaryPath + "/id.key";
+ #endif
+
++ cout << "invoke backend" << endl;
+ m_NXClient->invokeNXSSH(publicKey, config.serverHost, config.encryption, "",
+ config.serverPort);
+
+@@ -602,6 +612,10 @@
+ case NXCL_PROCESS_ERROR:
+ handleStatus(tr("An error occurred running a helper program"));
+ break;
++ case NXCL_DNS_ERROR:
++ handleStatus(tr("DNS error occurred"));
++ dnsFailed();
++ break;
+ default:
+ break;
+ }
+Index: qtnx-0.9/qtnxwindow.h
+===================================================================
+--- qtnx-0.9.orig/qtnxwindow.h 2008-11-05 18:53:29.000000000 +0100
++++ qtnx-0.9/qtnxwindow.h 2008-11-05 18:53:29.000000000 +0100
+@@ -122,6 +122,7 @@
+ void resumeResumePressed(QString);
+ void sshContinue(QString);
+ void failedLogin();
++ void dnsFailed();
+ void showLogWindow();
+ void quit();
+ private:
diff --git a/packages/qtnx/qtnx.inc b/packages/qtnx/qtnx.inc
index b20339001e..8380d2b685 100644
--- a/packages/qtnx/qtnx.inc
+++ b/packages/qtnx/qtnx.inc
@@ -2,7 +2,7 @@ DESCRIPTION = "This a the freesource nx client, build with qt"
HOMEPAGE = "http://freenx.berlios.de/"
SECTION = "libs"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
DEPENDS = "libnxcl"
@@ -10,6 +10,11 @@ SRC_URI = "http://download.berlios.de/freenx/freenx-client-${PV}.tar.bz2 \
file://pro.patch;patch=1 \
file://id-path.patch;patch=1 \
file://scroll.patch;patch=1 \
+ file://keymap.patch;patch=1 \
+ file://dodnx.patch;patch=1 \
+ file://keychooser.patch;patch=1 \
+ file://sessionfiles.patch;patch=1 \
+ file://ssh_dnserror.patch;patch=1 \
"
S = "${WORKDIR}/freenx-client-${PV}/qtnx"