[X2Go-Commits] [x2goclient] 01/01: Add support for new style command line options of xfreerdp on direct RDP connections.

git-admin at x2go.org git-admin at x2go.org
Wed Aug 12 14:57:22 CEST 2015


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 at 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 at 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


More information about the x2go-commits mailing list