This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 9dea9204e7c05fc79a03dc960d48483caa93eaa9 Author: Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> Date: Wed Aug 12 14:57:15 2015 +0200 Add support for new style command line options of xfreerdp on direct RDP connections. --- debian/changelog | 2 ++ src/onmainwindow.cpp | 81 +++++++++++++++++++++++++++++++++--------------- src/settingswidget.cpp | 72 ++++++++++++++++++++++++++++++++---------- src/settingswidget.h | 3 +- 4 files changed, 115 insertions(+), 43 deletions(-) diff --git a/debian/changelog b/debian/changelog index fb0049a..9bada0b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,8 @@ x2goclient (4.0.5.1-0x2go1) UNRELEASED; urgency=low [ Oleksandr Shneyder ] * New upstream release (4.0.5.1): - xsettingswidget: compile only on Windows. + - Add support for new style command line options of xfreerdp on direct RDP + connections. -- X2Go Release Manager <git-admin@x2go.org> Tue, 28 Jul 2015 06:05:27 +0200 diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 30b5a10..35faced 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -3142,6 +3142,7 @@ void ONMainWindow::startDirectRDP() X2goSettings st ( "sessions" ); QString sid; + bool freeRDPNew=false; if ( !embedMode ) sid=sessionExplorer->getLastSession()->id(); else @@ -3161,6 +3162,11 @@ void ONMainWindow::startDirectRDP() QString client=st.setting()->value ( sid+"/rdpclient", ( QVariant ) "rdesktop").toString(); + if(client=="xfreerdpnew") + { + client="xfreerdp"; + freeRDPNew=true; + } QString host=st.setting()->value ( sid+"/host", ( QVariant ) "").toString(); QString port=st.setting()->value ( sid+"/rdpport", @@ -3183,43 +3189,68 @@ void ONMainWindow::startDirectRDP() QString userOpt; - if (user.length()>0) - { - userOpt=" -u "; - userOpt+=user+" "; - } - QString passOpt; - if (password.length()>0) - { - passOpt=" -p \""; - passOpt+=password+"\" "; - } - QString grOpt; - - if (fullscreen) + QString proxyCmd; + if(!freeRDPNew) { - grOpt=" -f "; - } - else if (maxRes) - { - QDesktopWidget wd; - grOpt=" -D -g "+QString::number( wd.screenGeometry().width())+"x"+QString::number(wd.screenGeometry().height())+" "; + if (user.length()>0) + { + userOpt=" -u "; + userOpt+=user+" "; + } + if (password.length()>0) + { + passOpt=" -p \""; + passOpt+=password+"\" "; + } + if (fullscreen) + { + grOpt=" -f "; + } + else if (maxRes) + { + QDesktopWidget wd; + grOpt=" -D -g "+QString::number( wd.screenGeometry().width())+"x"+QString::number(wd.screenGeometry().height())+" "; + } + else + { + grOpt=" -g "+QString::number(width)+"x"+QString::number(height); + } + proxyCmd=client +" "+params+ grOpt +userOpt+passOpt + host +":"+port ; } else { - grOpt=" -g "+QString::number(width)+"x"+QString::number(height); + if (user.length()>0) + { + userOpt=" /u:"; + userOpt+=user+" "; + } + if (password.length()>0) + { + passOpt=" /p:\""; + passOpt+=password+"\" "; + } + if (fullscreen) + { + grOpt=" /f "; + } + else if (maxRes) + { + QDesktopWidget wd; + grOpt=" /w:"+QString::number( wd.screenGeometry().width())+" /h:"+QString::number(wd.screenGeometry().height())+" "; + } + else + { + grOpt=" /w:"+QString::number(width)+" /h:"+QString::number(height); + } + proxyCmd= client +" "+params+ grOpt +userOpt+passOpt + "/v:"+host +":"+port ; } - - QString proxyCmd=client +" "+params+ grOpt +userOpt+passOpt + host +":"+port ; nxproxy->start ( proxyCmd ); - resumingSession.display="RDP"; resumingSession.server=host; resumingSession.sessionId=sessionExplorer->getLastSession()->name(); resumingSession.crTime=QDateTime::currentDateTime().toString("dd.MM.yy HH:mm:ss"); - showSessionStatus(); // QTimer::singleShot ( 30000,this,SLOT ( slotRestartProxy() ) ); proxyRunning=true; diff --git a/src/settingswidget.cpp b/src/settingswidget.cpp index e2c8881..09f8c3a 100644 --- a/src/settingswidget.cpp +++ b/src/settingswidget.cpp @@ -205,21 +205,24 @@ SettingsWidget::SettingsWidget ( QString id, ONMainWindow * mw, setLay->addWidget ( rdpBox ); rRdesktop=new QRadioButton ("rdesktop",rdpBox ); rRdesktop->setChecked(true); - rXfreeRDP=new QRadioButton ( "xfreerdp",rdpBox); + rXfreeRDPOld=new QRadioButton ( "xfreerdp (old style options)",rdpBox); + rXfreeRDPNew=new QRadioButton ( "xfreerdp (new style options)",rdpBox); QButtonGroup* rClient=new QButtonGroup(rdpBox); rClient->addButton ( rRdesktop ); - rClient->addButton ( rXfreeRDP ); + rClient->addButton ( rXfreeRDPOld ); + rClient->addButton ( rXfreeRDPNew ); 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); + rdpLay->addWidget(rXfreeRDPOld,1,0); + rdpLay->addWidget(rXfreeRDPNew,2,0); + rdpLay->addWidget(new QLabel(tr("Additional parameters:")),3,0); + rdpLay->addWidget(new QLabel(tr("Command line:")),4,0); cmdLine=new QLineEdit(rdpBox); cmdLine->setReadOnly(true); params=new QLineEdit(rdpBox); rdpLay->addWidget(cmdLine,4,0,1,2); - rdpLay->addWidget(params,2,1); + rdpLay->addWidget(params,3,1); connect (rClient, SIGNAL(buttonClicked(int)), this, SLOT(updateCmdLine())); connect (radio, SIGNAL(buttonClicked(int)), this, SLOT(updateCmdLine())); connect (params, SIGNAL(textChanged(QString)), this, SLOT(updateCmdLine())); @@ -390,8 +393,10 @@ void SettingsWidget::readConfig() QString client=st.setting()->value ( sessionId+"/rdpclient","rdesktop").toString(); if(client=="rdesktop") rRdesktop->setChecked(true); + else if(client=="xfreerdpnew") + rXfreeRDPNew->setChecked(true); else - rXfreeRDP->setChecked(true); + rXfreeRDPOld->setChecked(true); params->setText(st.setting()->value ( sessionId+"/directrdpsettings","").toString()); #endif #endif @@ -514,12 +519,21 @@ void SettingsWidget::saveSettings() st.setting()->setValue ( sessionId+"/maxdim", ( QVariant ) maxRes->isChecked() ); - if (rXfreeRDP->isChecked()) + if (rXfreeRDPOld->isChecked()) + { st.setting()->setValue ( sessionId+"/rdpclient", ( QVariant ) "xfreerdp" ); + } + else if (rXfreeRDPNew->isChecked()) + { + st.setting()->setValue ( sessionId+"/rdpclient", + ( QVariant ) "xfreerdpnew" ); + } else + { st.setting()->setValue ( sessionId+"/rdpclient", ( QVariant ) "rdesktop" ); + } st.setting()->setValue ( sessionId+"/directrdpsettings", ( QVariant ) params->text()); #endif @@ -617,19 +631,43 @@ void SettingsWidget::updateCmdLine() QString grOpt; - if (fs->isChecked()) + if(!rXfreeRDPNew->isChecked()) { - grOpt=" -f "; - } - if (maxRes->isChecked()) - { - grOpt=" -D -g <maxW>x<maxH>"; + if (fs->isChecked()) + { + grOpt=" -f "; + } + if (maxRes->isChecked()) + { + grOpt=" -D -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 ); } - if (custom->isChecked()) + else { - grOpt=" -g "+QString::number(width->value())+"x"+QString::number(height->value()); + if (user.length()>0) + { + userOpt=" /u:"; + userOpt+=user; + } + if (fs->isChecked()) + { + grOpt=" /f "; + } + if (maxRes->isChecked()) + { + grOpt=" /w:<maxW> /h:<maxH>"; + } + if (custom->isChecked()) + { + grOpt=" /w:"+QString::number(width->value())+" /h:"+QString::number(height->value()); + } + cmdLine->setText(client +" "+params->text()+ grOpt +userOpt+" /p:<"+tr("password")+"> /v:"+ server+":"+port ); } - cmdLine->setText(client +" "+params->text()+ grOpt +userOpt+" -p <"+tr("password")+"> "+ server+":"+port ); #endif } #endif diff --git a/src/settingswidget.h b/src/settingswidget.h index e6d10d6..fc8c203 100644 --- a/src/settingswidget.h +++ b/src/settingswidget.h @@ -90,7 +90,8 @@ private: #ifdef Q_OS_LINUX QGroupBox *rdpBox; QRadioButton* rRdesktop; - QRadioButton* rXfreeRDP; + QRadioButton* rXfreeRDPOld; + QRadioButton* rXfreeRDPNew; QLineEdit* cmdLine; QLineEdit* params; QString server; -- Alioth's /srv/git/code.x2go.org/x2goclient.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git