The branch, master has been updated via 4adfcbf0aa5f34283089786032b47727530e5d78 (commit) from 6f97d0f1a8141411f2ac1c171ca2648053302ee1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4adfcbf0aa5f34283089786032b47727530e5d78 Author: Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> Date: Thu Aug 30 18:11:28 2012 +0300 Add settings for direct RDP connection ----------------------------------------------------------------------- Summary of changes: debian/changelog | 7 +- editconnectiondialog.cpp | 190 +++++++++++++++++++++++++--------------------- editconnectiondialog.h | 1 + sessionwidget.cpp | 91 ++++++++++++++++++++--- sessionwidget.h | 11 +++ settingswidget.cpp | 137 ++++++++++++++++++++++++++++++++- settingswidget.h | 19 +++++ 7 files changed, 354 insertions(+), 102 deletions(-) The diff of changes is: diff --git a/debian/changelog b/debian/changelog index 2ef8a6d..753b008 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -x2goclient (3.99.2.3-0~x2go1) UNRELEASED; urgency=low +x2goclient (3.99.2.3-0~x2go2) UNRELEASED; urgency=low [ Mike Gabriel ] * New upstream version (3.99.2.2): @@ -8,7 +8,10 @@ x2goclient (3.99.2.3-0~x2go1) UNRELEASED; urgency=low [ Christoffer Krakou ] - Add Danish translation to x2goclient. - -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Wed, 15 Aug 2012 15:14:05 +0200 + [ Oleksandr Shneyder ] + * Add settings for direct RDP connection + + -- Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> Thu, 30 Aug 2012 18:10:57 +0300 x2goclient (3.99.2.2-0~x2go2) unstable; urgency=low diff --git a/editconnectiondialog.cpp b/editconnectiondialog.cpp index 99b3b25..f50ed85 100644 --- a/editconnectiondialog.cpp +++ b/editconnectiondialog.cpp @@ -24,78 +24,84 @@ EditConnectionDialog::EditConnectionDialog ( QString id, QWidget * par, int ind,Qt::WFlags f ) - : QDialog ( par,f ) + : QDialog ( par,f ) { - QVBoxLayout* ml=new QVBoxLayout ( this ); + QVBoxLayout* ml=new QVBoxLayout ( this ); #ifdef Q_WS_HILDON - ml->setMargin ( 2 ); + ml->setMargin ( 2 ); #endif - fr=new QTabWidget ( this ); - ml->addWidget ( fr ); - ONMainWindow* parent= ( ONMainWindow* ) par; + fr=new QTabWidget ( this ); + ml->addWidget ( fr ); + ONMainWindow* parent= ( ONMainWindow* ) par; - QFont fnt=font(); - if ( parent->retMiniMode() ) + QFont fnt=font(); + if ( parent->retMiniMode() ) #ifdef Q_WS_HILDON - fnt.setPointSize ( 10 ); + fnt.setPointSize ( 10 ); #else - fnt.setPointSize ( 9 ); + fnt.setPointSize ( 9 ); #endif - setFont ( fnt ); - - sessSet=new SessionWidget ( id,parent ); - conSet=new ConnectionWidget ( id,parent ); - otherSet=new SettingsWidget ( id,parent ); - exportDir=new ShareWidget ( id,parent ); - - - fr->addTab ( sessSet,tr ( "&Session" ) ); - fr->addTab ( conSet,tr ( "&Connection" ) ); - fr->addTab ( otherSet,tr ( "&Settings" ) ); - fr->addTab ( exportDir,tr ( "&Shared folders" ) ); - - QPushButton* ok=new QPushButton ( tr ( "&OK" ),this ); - QPushButton* cancel=new QPushButton ( tr ( "&Cancel" ),this ); - QPushButton* def=new QPushButton ( tr ( "Defaults" ),this ); - QHBoxLayout* bLay=new QHBoxLayout(); - bLay->setSpacing ( 5 ); - bLay->addStretch(); - bLay->addWidget ( ok ); - bLay->addWidget ( cancel ); - bLay->addWidget ( def ); - ml->addLayout ( bLay ); + setFont ( fnt ); + + sessSet=new SessionWidget ( id,parent ); + conSet=new ConnectionWidget ( id,parent ); + otherSet=new SettingsWidget ( id,parent ); + exportDir=new ShareWidget ( id,parent ); + + + fr->addTab ( sessSet,tr ( "&Session" ) ); + fr->addTab ( conSet,tr ( "&Connection" ) ); + fr->addTab ( otherSet,tr ( "&Settings" ) ); + fr->addTab ( exportDir,tr ( "&Shared folders" ) ); + + QPushButton* ok=new QPushButton ( tr ( "&OK" ),this ); + QPushButton* cancel=new QPushButton ( tr ( "&Cancel" ),this ); + QPushButton* def=new QPushButton ( tr ( "Defaults" ),this ); + QHBoxLayout* bLay=new QHBoxLayout(); + bLay->setSpacing ( 5 ); + bLay->addStretch(); + bLay->addWidget ( ok ); + bLay->addWidget ( cancel ); + bLay->addWidget ( def ); + ml->addLayout ( bLay ); #ifdef Q_WS_HILDON - bLay->setMargin ( 2 ); + bLay->setMargin ( 2 ); #endif - setSizeGripEnabled ( true ); - setWindowIcon ( QIcon ( parent->iconsPath ( "/32x32/edit.png" ) ) ); - connect ( ok,SIGNAL ( clicked() ),this,SLOT ( accept() ) ); - connect ( cancel,SIGNAL ( clicked() ),this,SLOT ( reject() ) ); - connect ( def,SIGNAL ( clicked() ),this,SLOT ( slot_default() ) ); - connect ( sessSet,SIGNAL ( nameChanged ( const QString & ) ),this, - SLOT ( slot_changeCaption ( const QString& ) ) ); - connect ( this,SIGNAL ( accepted() ),this,SLOT ( slot_accepted() ) ); - - ok->setDefault ( true ); + setSizeGripEnabled ( true ); + setWindowIcon ( QIcon ( parent->iconsPath ( "/32x32/edit.png" ) ) ); + connect ( ok,SIGNAL ( clicked() ),this,SLOT ( accept() ) ); + connect ( cancel,SIGNAL ( clicked() ),this,SLOT ( reject() ) ); + connect ( def,SIGNAL ( clicked() ),this,SLOT ( slot_default() ) ); + connect ( sessSet,SIGNAL ( nameChanged ( const QString & ) ),this, + SLOT ( slot_changeCaption ( const QString& ) ) ); + connect ( this,SIGNAL ( accepted() ),this,SLOT ( slot_accepted() ) ); + connect (sessSet, SIGNAL(directRDP(bool)), this, SLOT(slot_directRDP(bool))); + + connect (sessSet, + SIGNAL(settingsChanged(QString,QString,QString)), otherSet, + SLOT(setServerSettings(QString,QString,QString))); + + ok->setDefault ( true ); #ifdef Q_WS_HILDON - QSize sz=ok->sizeHint(); - sz.setWidth ( ( int ) ( sz.width() /1.5 ) ); - sz.setHeight ( ( int ) ( sz.height() /1.5 ) ); - ok->setFixedSize ( sz ); - sz=cancel->sizeHint(); - sz.setWidth ( ( int ) ( sz.width() ) ); - sz.setHeight ( ( int ) ( sz.height() /1.5 ) ); - cancel->setFixedSize ( sz ); - sz=def->sizeHint(); - sz.setWidth ( ( int ) ( sz.width() ) ); - sz.setHeight ( ( int ) ( sz.height() /1.5 ) ); - def->setFixedSize ( sz ); + QSize sz=ok->sizeHint(); + sz.setWidth ( ( int ) ( sz.width() /1.5 ) ); + sz.setHeight ( ( int ) ( sz.height() /1.5 ) ); + ok->setFixedSize ( sz ); + sz=cancel->sizeHint(); + sz.setWidth ( ( int ) ( sz.width() ) ); + sz.setHeight ( ( int ) ( sz.height() /1.5 ) ); + cancel->setFixedSize ( sz ); + sz=def->sizeHint(); + sz.setWidth ( ( int ) ( sz.width() ) ); + sz.setHeight ( ( int ) ( sz.height() /1.5 ) ); + def->setFixedSize ( sz ); #endif - if ( parent->retMiniMode() ) - setContentsMargins ( 3,3,3,3 ); - fr->setCurrentIndex ( ind ); - slot_changeCaption(sessSet->sessionName()); + if ( parent->retMiniMode() ) + setContentsMargins ( 3,3,3,3 ); + fr->setCurrentIndex ( ind ); + slot_changeCaption(sessSet->sessionName()); + sessSet->slot_rdpDirectClicked(); } @@ -106,43 +112,51 @@ EditConnectionDialog::~EditConnectionDialog() void EditConnectionDialog::slot_changeCaption ( const QString& newName ) { - setWindowTitle ( tr ( "Session preferences - " ) +newName ); + setWindowTitle ( tr ( "Session preferences - " ) +newName ); } void EditConnectionDialog::slot_accepted() { - conSet->saveSettings(); - exportDir->saveSettings(); - otherSet->saveSettings(); - sessSet->saveSettings(); + conSet->saveSettings(); + exportDir->saveSettings(); + otherSet->saveSettings(); + sessSet->saveSettings(); } void EditConnectionDialog::slot_default() { - switch ( fr->currentIndex() ) - { - case 0: - { - sessSet->setDefaults(); - } - break; - case 1: - { - conSet->setDefaults(); - } - break; - case 2: - { - otherSet->setDefaults(); - } - break; - case 3: - { - exportDir->setDefaults(); - } - break; - } + switch ( fr->currentIndex() ) + { + case 0: + { + sessSet->setDefaults(); + } + break; + case 1: + { + conSet->setDefaults(); + } + break; + case 2: + { + otherSet->setDefaults(); + } + break; + case 3: + { + exportDir->setDefaults(); + } + break; + } } +void EditConnectionDialog::slot_directRDP(bool direct) +{ + fr->setTabEnabled(1,!direct); + fr->setTabEnabled(3,!direct); + otherSet->setDirectRdp(direct); +} + + diff --git a/editconnectiondialog.h b/editconnectiondialog.h index 45c524a..ea177db 100644 --- a/editconnectiondialog.h +++ b/editconnectiondialog.h @@ -57,6 +57,7 @@ class EditConnectionDialog : public QDialog void slot_changeCaption ( const QString& newName ); void slot_accepted(); void slot_default(); + void slot_directRDP(bool direct); }; #endif diff --git a/sessionwidget.cpp b/sessionwidget.cpp index 2f66aa2..be73c9b 100644 --- a/sessionwidget.cpp +++ b/sessionwidget.cpp @@ -67,10 +67,14 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, sshPort->setValue ( mainWindow->getDefaultSshPort().toInt() ); sshPort->setMinimum ( 1 ); sshPort->setMaximum ( 999999999 ); + rdpPort=new QSpinBox ( sgb ); + rdpPort->setValue ( mainWindow->getDefaultSshPort().toInt() ); + rdpPort->setMinimum ( 1 ); + rdpPort->setMaximum ( 999999999 ); key=new QLineEdit ( sgb ); #ifndef Q_WS_HILDON - QPushButton* openKey=new QPushButton ( + openKey=new QPushButton ( QIcon ( mainWindow->iconsPath ( "/32x32/file-open.png" ) ), QString::null,sgb ); @@ -86,10 +90,12 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, QVBoxLayout *elLay =new QVBoxLayout(); slLay->addWidget ( new QLabel ( tr ( "Host:" ),sgb ) ); slLay->addWidget ( new QLabel ( tr ( "Login:" ),sgb ) ); - slLay->addWidget ( new QLabel ( tr ( "SSH port:" ),sgb ) ); + lPort=new QLabel ( tr ( "SSH port:" ),sgb ); + slLay->addWidget ( lPort ); elLay->addWidget ( server ); elLay->addWidget ( uname ); elLay->addWidget ( sshPort ); + elLay->addWidget ( rdpPort ); suLay->addLayout ( slLay ); suLay->addLayout ( elLay ); #ifdef Q_WS_HILDON @@ -97,8 +103,8 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, #endif QHBoxLayout *keyLay =new QHBoxLayout(); - keyLay->addWidget ( - new QLabel ( tr ( "Use RSA/DSA key for ssh connection:" ),sgb ) ); + lKey=new QLabel ( tr ( "Use RSA/DSA key for ssh connection:" ),sgb ); + keyLay->addWidget (lKey ); keyLay->addWidget ( key ); keyLay->addWidget ( openKey ); @@ -111,7 +117,7 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, #ifndef Q_WS_HILDON QGroupBox *deskSess=new QGroupBox ( tr ( "&Session type" ),this ); - QHBoxLayout* cmdLay=new QHBoxLayout ( deskSess ); + QGridLayout* cmdLay=new QGridLayout ( deskSess ); #else QFrame* deskSess=this; QHBoxLayout* cmdLay=new QHBoxLayout (); @@ -131,13 +137,14 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, sessBox->addItem ( tr ( "Custom desktop" ) ); sessBox->addItem ( tr ( "Single application" ) ); sessBox->addItem ( tr ( "Published applications" ) ); - cmdLay->addWidget ( sessBox ); + cmdLay->addWidget ( sessBox,0,1,Qt::AlignLeft ); leCmdIp=new QLabel ( tr ( "Command:" ),deskSess ); pbAdvanced=new QPushButton ( tr ( "Advanced options..." ),deskSess ); - cmdLay->addWidget ( leCmdIp ); - cmdLay->addWidget ( cmd ); - cmdLay->addWidget ( cmdCombo ); - cmdLay->addWidget ( pbAdvanced ); + cmdLay->addWidget ( leCmdIp,0,2 ); + cmdLay->setColumnStretch(6,1); + cmdLay->addWidget ( cmd ,0,3); + cmdLay->addWidget ( cmdCombo,0,4 ); + cmdLay->addWidget ( pbAdvanced ,0,5); cmdCombo->setSizePolicy ( QSizePolicy::Expanding, QSizePolicy::Preferred ); cmdCombo->hide(); @@ -153,6 +160,13 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, sessLay->addSpacing ( 15 ); sessLay->addWidget ( sgb ); sessLay->addWidget ( deskSess ); +#ifdef Q_OS_LINUX + cbDirectRDP=new QCheckBox("Direct RDP Connection", deskSess); + cmdLay->addWidget(cbDirectRDP,1,0,1,6); + cbDirectRDP->hide(); + connect(cbDirectRDP,SIGNAL(clicked()), this, SLOT(slot_rdpDirectClicked())); +#endif + #else QVBoxLayout* sHildILay = new QVBoxLayout(); sHildILay->addLayout ( slay ); @@ -181,6 +195,9 @@ SessionWidget::SessionWidget ( QString id, ONMainWindow * mw, SLOT ( slot_changeCmd ( int ) ) ); connect ( sessName,SIGNAL ( textChanged ( const QString & ) ),this, SIGNAL ( nameChanged ( const QString & ) ) ); + connect (server, SIGNAL(textChanged(const QString&)),this, SLOT(slot_emitSettings())); + connect (uname, SIGNAL(textChanged(const QString&)),this, SLOT(slot_emitSettings())); + connect (rdpPort, SIGNAL(valueChanged(int)),this, SLOT(slot_emitSettings())); readConfig(); cbKrbLogin->setChecked(false); cbKrbLogin->setVisible(false); @@ -191,6 +208,33 @@ SessionWidget::~SessionWidget() } +void SessionWidget::slot_rdpDirectClicked() +{ + bool isDirectRDP=cbDirectRDP->isChecked(); + if (cbDirectRDP->isHidden()) + isDirectRDP=false; + pbAdvanced->setVisible(!isDirectRDP); + leCmdIp->setVisible(!isDirectRDP); + cmd->setVisible(!isDirectRDP); + key->setVisible(!isDirectRDP); + cbAutoLogin->setVisible(!isDirectRDP); + lKey->setVisible(!isDirectRDP); + openKey->setVisible(!isDirectRDP); + sshPort->setVisible(!isDirectRDP); + rdpPort->setVisible(isDirectRDP); + if (isDirectRDP) + { + lPort->setText(("RDP port")); + } + else + { + lPort->setText(tr("SSH port")); + } + + emit directRDP(isDirectRDP); + slot_emitSettings(); +} + void SessionWidget::slot_getIcon() { QString path= QFileDialog::getOpenFileName ( @@ -253,6 +297,9 @@ void SessionWidget::slot_changeCmd ( int var ) { leCmdIp->setText ( tr ( "Command:" ) ); pbAdvanced->hide(); + cbDirectRDP->hide(); + leCmdIp->show(); + cmd->show(); if ( var==APPLICATION ) { cmd->hide(); @@ -276,6 +323,7 @@ void SessionWidget::slot_changeCmd ( int var ) leCmdIp->setText ( tr ( "Server:" ) ); pbAdvanced->show(); cmd->setText ( rdpServer ); + cbDirectRDP->show(); } if ( var== XDMCP ) { @@ -289,6 +337,7 @@ void SessionWidget::slot_changeCmd ( int var ) cmd->setText ( "" ); } } + slot_rdpDirectClicked(); } void SessionWidget::slot_rdpOptions() @@ -336,6 +385,10 @@ void SessionWidget::readConfig() sessionId+"/sshport", ( QVariant ) mainWindow->getDefaultSshPort().toInt() ).toInt() ); + rdpPort->setValue ( + st.setting()->value ( + sessionId+"/rdpport",3389 + ).toInt() ); QStringList appNames=st.setting()->value ( sessionId+"/applications" ).toStringList(); @@ -356,6 +409,10 @@ void SessionWidget::readConfig() xdmcpServer=st.setting()->value ( sessionId+"/xdmcpserver", ( QVariant ) "localhost" ).toString(); + cbDirectRDP->setChecked(st.setting()->value ( + sessionId+"/directrdp",false ).toBool()); + + for ( int i=0;i<appNames.count();++i ) { QString app=mainWindow->transAppName ( appNames[i] ); @@ -409,6 +466,8 @@ void SessionWidget::readConfig() cmd->setEnabled ( true ); cmd->setText ( rdpServer ); pbAdvanced->show(); + cbDirectRDP->show(); + slot_rdpDirectClicked(); } else if ( command=="XDMCP" ) { @@ -429,6 +488,7 @@ void SessionWidget::readConfig() sessName->selectAll(); sessName->setFocus(); } + slot_rdpDirectClicked(); } void SessionWidget::setDefaults() @@ -450,6 +510,7 @@ void SessionWidget::setDefaults() icon->setIcon ( QIcon ( sessIcon ) ); sshPort->setValue ( mainWindow->getDefaultSshPort().toInt() ); + rdpPort->setValue (3389); } @@ -468,10 +529,14 @@ void SessionWidget::saveSettings() st.setting()->setValue ( sessionId+"/key", ( QVariant ) key->text() ); + st.setting()->setValue ( sessionId+"/rdpport", + ( QVariant ) rdpPort->value() ); + st.setting()->setValue ( sessionId+"/sshport", ( QVariant ) sshPort->value() ); st.setting()->setValue(sessionId+"/autologin",( QVariant ) cbAutoLogin->isChecked()); st.setting()->setValue(sessionId+"/krblogin",( QVariant ) cbKrbLogin->isChecked()); + st.setting()->setValue(sessionId+"/directrdp",( QVariant ) cbDirectRDP->isChecked()); QString command; bool rootless=false; bool published=false; @@ -538,3 +603,9 @@ QString SessionWidget::sessionName() { return sessName->text(); } + +void SessionWidget::slot_emitSettings() +{ + emit settingsChanged(server->text(), QString::number( rdpPort->value()), uname->text()); +} + diff --git a/sessionwidget.h b/sessionwidget.h index 869d9bb..9ad5c35 100644 --- a/sessionwidget.h +++ b/sessionwidget.h @@ -23,6 +23,7 @@ class QPushButton; class QComboBox; class QLabel; class QCheckBox; +class QGroupBox; class SessionWidget : public ConfigWidget { Q_OBJECT @@ -38,6 +39,9 @@ private slots: void slot_getKey(); void slot_changeCmd ( int var ); void slot_rdpOptions(); +public slots: + void slot_rdpDirectClicked(); + void slot_emitSettings(); private: enum {KDE,GNOME,LXDE,UNITY,RDP,XDMCP,SHADOW,OTHER,APPLICATION,PUBLISHED}; @@ -45,23 +49,30 @@ private: QLineEdit* uname; QLineEdit* server; QSpinBox* sshPort; + QSpinBox* rdpPort; QLineEdit* key; QCheckBox* cbAutoLogin; QCheckBox* cbKrbLogin; + QCheckBox* cbDirectRDP; QString sessIcon; QPushButton* icon; QLineEdit* cmd; QComboBox* cmdCombo; QComboBox* sessBox; QLabel* leCmdIp; + QLabel* lPort; + QLabel* lKey; QPushButton* pbAdvanced; QString rdpOptions; QString rdpServer; QString xdmcpServer; + QPushButton* openKey; private: void readConfig(); signals: void nameChanged ( const QString & ); + void directRDP(bool); + void settingsChanged(const QString &, const QString &, const QString &); }; #endif diff --git a/settingswidget.cpp b/settingswidget.cpp index 1d1a229..5439059 100644 --- a/settingswidget.cpp +++ b/settingswidget.cpp @@ -26,6 +26,7 @@ #include <QTimer> #include <QSplashScreen> #include "x2gologdebug.h" +#include <QGridLayout> SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, QWidget * parent, Qt::WindowFlags f ) @@ -42,8 +43,9 @@ SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, tabSettings->addTab ( sbgr,tr ( "Sound" ) ); #else QGroupBox *dgb=new QGroupBox ( tr ( "&Display" ),this ); - QGroupBox *kgb=new QGroupBox ( tr ( "&Keyboard" ),this ); - QGroupBox *sbgr=new QGroupBox ( tr ( "Sound" ),this ); + kgb=new QGroupBox ( tr ( "&Keyboard" ),this ); + sbgr=new QGroupBox ( tr ( "Sound" ),this ); + rdpBox=new QGroupBox ( tr ( "RDP Client" ),this ); #endif QVBoxLayout *dbLay = new QVBoxLayout ( dgb ); QVBoxLayout *sndLay=new QVBoxLayout ( sbgr ); @@ -61,11 +63,13 @@ SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, custom=new QRadioButton ( tr ( "Window" ),dgb ); #endif display=new QRadioButton ( tr ( "Use whole display" ),dgb ); + maxRes=new QRadioButton ( tr ( "Maximum available" ),dgb ); radio->addButton ( fs ); radio->addButton ( custom ); radio->setExclusive ( true ); radio->addButton(display); + radio->addButton(maxRes); width=new QSpinBox ( dgb ); height=new QSpinBox ( dgb ); cbSetDPI=new QCheckBox ( tr ( "Set display DPI" ),dgb ); @@ -98,6 +102,7 @@ SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, dwLay->addStretch(); dispLay->addWidget(display); + dispLay->addWidget(maxRes); dispLay->addSpacing(15); dispLay->addWidget(lDisplay=new QLabel(tr("&Display:"),dgb)); dispLay->addWidget(displayNumber=new QSpinBox(dgb)); @@ -123,10 +128,12 @@ SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, dbLay->addLayout ( dwLay ); dbLay->addLayout(dispLay); QFrame* dhl=new QFrame ( dgb ); + hLine1=dhl; dhl->setFrameStyle ( QFrame::HLine | QFrame::Sunken ); dbLay->addWidget ( dhl ); dbLay->addLayout ( ddLay ); dhl=new QFrame ( dgb ); + hLine2=dhl; dhl->setFrameStyle ( QFrame::HLine | QFrame::Sunken ); dbLay->addWidget ( dhl ); dbLay->addWidget ( cbXinerama ); @@ -223,6 +230,27 @@ SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, setLay->addWidget ( dgb ); setLay->addWidget ( kgb ); setLay->addWidget ( sbgr ); + setLay->addWidget ( rdpBox ); + + + rRdesktop=new QRadioButton ("rdesktop",rdpBox ); + rRdesktop->setChecked(true); + rXfreeRDP=new QRadioButton ( "xfreerdp",rdpBox); + + QButtonGroup* rClient=new QButtonGroup(rdpBox); + rClient->addButton ( rRdesktop ); + rClient->addButton ( rXfreeRDP ); + rClient->setExclusive ( true ); + QGridLayout *rdpLay=new QGridLayout(rdpBox); + rdpLay->addWidget(rRdesktop,0,0); + rdpLay->addWidget(rXfreeRDP,1,0); + rdpLay->addWidget(new QLabel(tr("Additional parameters:")),2,0); + rdpLay->addWidget(new QLabel(tr("Command line:")),3,0); + cmdLine=new QLineEdit(rdpBox); + cmdLine->setReadOnly(true); + params=new QLineEdit(rdpBox); + rdpLay->addWidget(cmdLine,4,0,1,2); + rdpLay->addWidget(params,2,1); #else setLay->addWidget ( tabSettings ); // cbClientPrint->hide(); @@ -267,6 +295,12 @@ SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, SLOT ( slot_sndStartClicked() ) ); connect ( cbDefSndPort,SIGNAL ( toggled ( bool ) ),this, SLOT ( slot_sndDefPortChecked ( bool ) ) ); + + connect (rClient, SIGNAL(buttonClicked(int)), this, SLOT(updateCmdLine())); + connect (radio, SIGNAL(buttonClicked(int)), this, SLOT(updateCmdLine())); + connect (params, SIGNAL(textChanged(QString)), this, SLOT(updateCmdLine())); + connect (width, SIGNAL(valueChanged(int)), this, SLOT(updateCmdLine())); + connect (height, SIGNAL(valueChanged(int)), this, SLOT(updateCmdLine())); kbd->setChecked ( true ); custom->setChecked ( true ); readConfig(); @@ -277,6 +311,39 @@ SettingsWidget::~SettingsWidget() { } +void SettingsWidget::setDirectRdp(bool direct) +{ + cbClientPrint->setVisible(!direct); + kgb->setVisible(!direct); + sbgr->setVisible(!direct); + cbSetDPI->setVisible(!direct); + cbXinerama->setVisible(!direct); + display->setVisible(!direct); + maxRes->setVisible(direct); + DPI->setVisible(!direct); + lDisplay->setVisible(!direct); + displayNumber->setVisible(!direct); + pbIdentDisp->setVisible(!direct); + hLine1->setVisible(!direct); + hLine2->setVisible(!direct); + rdpBox->setVisible(direct); + if (direct) + { + if (display->isChecked()) + { + display->setChecked(false); + custom->setChecked(true); + } + } + else + { + if (maxRes->isChecked()) + { + maxRes->setChecked(false); + custom->setChecked(true); + } + } +} void SettingsWidget::slot_identDisplays() { @@ -457,6 +524,20 @@ void SettingsWidget::readConfig() displayNumber->setValue(1); } + + maxRes->setChecked(st.setting()->value ( sessionId+"/maxdim", false).toBool()); + + QString client=st.setting()->value ( sessionId+"/rdpclient","rdesktop").toString(); + + if(client=="rdesktop") + rRdesktop->setChecked(true); + else + rXfreeRDP->setChecked(true); + + params->setText(st.setting()->value ( sessionId+"/directrdpsettings","").toString()); + + + cbSetDPI->setChecked ( st.setting()->value ( sessionId+"/setdpi", ( QVariant ) mainWindow->getDefaultSetDPI() ).toBool() ); @@ -575,6 +656,19 @@ void SettingsWidget::saveSettings() ( QVariant ) display->isChecked() ); st.setting()->setValue ( sessionId+"/display", ( QVariant ) displayNumber->value() ); + + st.setting()->setValue ( sessionId+"/maxdim", + ( QVariant ) maxRes->isChecked() ); + + if (rXfreeRDP->isChecked()) + st.setting()->setValue ( sessionId+"/rdpclient", + ( QVariant ) "xfreerdp" ); + else + st.setting()->setValue ( sessionId+"/rdpclient", + ( QVariant ) "rdesktop" ); + st.setting()->setValue ( sessionId+"/directrdpsettings", + ( QVariant ) params->text()); + st.setting()->setValue ( sessionId+"/height", ( QVariant ) height->value() ); st.setting()->setValue ( sessionId+"/dpi", @@ -614,3 +708,42 @@ void SettingsWidget::saveSettings() ( QVariant ) cbClientPrint->isChecked() ); st.setting()->sync(); } + +void SettingsWidget::setServerSettings(QString server, QString port, QString user) +{ + this->server=server; + this->port=port; + this->user=user; + updateCmdLine(); +} + +void SettingsWidget::updateCmdLine() +{ + QString client="xfreerdp"; + QString userOpt; + if (user.length()>0) + { + userOpt=" -u "; + userOpt+=user; + } + if (rRdesktop->isChecked()) + { + client="rdesktop"; + } + + QString grOpt; + + if (fs->isChecked()) + { + grOpt=" -f "; + } + if (maxRes->isChecked()) + { + grOpt=" -g <maxW>x<maxH>"; + } + if (custom->isChecked()) + { + grOpt=" -g "+QString::number(width->value())+"x"+QString::number(height->value()); + } + cmdLine->setText(client +" "+params->text()+ grOpt +userOpt+" -p <"+tr("password")+"> "+ server+":"+port ); +} diff --git a/settingswidget.h b/settingswidget.h index 8c5ebf8..79aae0c 100644 --- a/settingswidget.h +++ b/settingswidget.h @@ -25,6 +25,7 @@ class QSpinBox; class QLabel; class QPushButton; class QMainWindow; +class QGroupBox; class SettingsWidget : public ConfigWidget @@ -36,6 +37,10 @@ public: ~SettingsWidget(); void setDefaults(); void saveSettings(); + void setDirectRdp(bool direct); +public slots: + void setServerSettings(QString server, QString port, QString user); + void updateCmdLine(); private slots: void slot_sndSysSelected ( int system ); void slot_sndToggled ( bool val ); @@ -54,6 +59,7 @@ private: QLineEdit* type; QRadioButton* custom; QRadioButton* display; + QRadioButton* maxRes; QRadioButton* arts; QRadioButton* pulse; QRadioButton* esd; @@ -76,6 +82,19 @@ private: bool multiDisp; QPushButton* pbIdentDisp; QList <QMainWindow*> identWins; + QGroupBox *kgb; + QGroupBox *sbgr; + QGroupBox *rdpBox; + QRadioButton* rRdesktop; + QRadioButton* rXfreeRDP; + QLineEdit* cmdLine; + QLineEdit* params; + QFrame* hLine1; + QFrame* hLine2; + QString server; + QString user; + QString port; + private: void readConfig(); }; hooks/post-receive -- x2goclient.git (X2Go Client) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "x2goclient.git" (X2Go Client).