[X2Go-Commits] [x2goclient] 01/01: Central settings for Linux, Mac and Windows.

git-admin at x2go.org git-admin at x2go.org
Mon Dec 14 16:52:54 CET 2015


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goclient.

commit faf5f027de3ebb90c4769d474813f031a4a812eb
Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
Date:   Mon Dec 14 16:52:41 2015 +0100

    Central settings for Linux, Mac and Windows.
---
 debian/changelog     |    1 +
 src/onmainwindow.cpp |   14 +++++++++++-
 src/x2gosettings.cpp |   59 ++++++++++++++++++++++++++++++++++++++++++--------
 3 files changed, 64 insertions(+), 10 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index e5d5338..33cf45d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -26,6 +26,7 @@ x2goclient (4.0.5.1-0x2go1) UNRELEASED; urgency=low
     - Reformat source onmainwindow.cpp.
     - Disable settings editing if a directory with central settings is exists.
     - Format long names on session buttons.
+    - Central settings for Linux, Mac and Windows.
 
   [ Mike Gabriel ]
   * New upstream release (4.0.5.1):
diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp
index 60b37c6..792e0af 100644
--- a/src/onmainwindow.cpp
+++ b/src/onmainwindow.cpp
@@ -228,7 +228,17 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
               SLOT ( slotCheckAgentProcess() ) );
 
 #ifdef CFGCLIENT
-    QStringList args=QCoreApplication::arguments();
+    QStringList args;
+    if(!X2goSettings::centralSettings())
+        args=QCoreApplication::arguments();
+    else
+    {
+        X2goSettings st ( "settings" );
+        QString cmdLine=st.setting()->value ( "commandline", "" ).toString();
+//         x2goErrorf(100)<<"cmd line:"<<cmdLine;
+        args=cmdLine.split(";",QString::SkipEmptyParts);
+        args.push_front(QCoreApplication::arguments()[0]);
+    }
     for ( int i=1; i<args.size(); ++i )
     {
         if ( !parseParameter ( args[i] ) )
@@ -2285,6 +2295,8 @@ void ONMainWindow::slotReadSessions()
 
 void ONMainWindow::slotNewSession()
 {
+    if(X2goSettings::centralSettings())
+        return;
     QString id=QDateTime::currentDateTime().
                toString ( "yyyyMMddhhmmsszzz" );
     EditConnectionDialog dlg (true, id, this );
diff --git a/src/x2gosettings.cpp b/src/x2gosettings.cpp
index d045ae8..4073462 100644
--- a/src/x2gosettings.cpp
+++ b/src/x2gosettings.cpp
@@ -21,6 +21,7 @@
 #include "onmainwindow.h"
 #include <QTemporaryFile>
 #include <QDir>
+#include <QProcessEnvironment>
 
 X2goSettings::X2goSettings(QString fileContent, QSettings::Format format)
 {
@@ -44,14 +45,48 @@ X2goSettings::X2goSettings ( QString group )
         return;
     }
 #ifndef Q_OS_WIN
-    set=new QSettings ( ONMainWindow::getHomeDirectory() +
-                        "/.x2goclient/"+group,
-                        QSettings::NativeFormat );
+    if(!centralSettings())
+    {
+        set=new QSettings ( ONMainWindow::getHomeDirectory() +
+                           "/.x2goclient/"+group,
+                          QSettings::NativeFormat );
+    }
+    else
+    {
+        QString settingPath="/etc/x2goclient/config/"+qgetenv("USER")+"/";
+        QDir d(settingPath);
+        if(!d.exists())
+        {
+            settingPath="/etc/x2goclient/config/All Users/";
+        }
+//         x2goErrorf(99)<<"CFG PATH:"<<settingPath;
+        set=new QSettings ( settingPath+group,
+                          QSettings::NativeFormat );
+    }
 #else
     if ( !ONMainWindow::getPortable() )
     {
-        set=new QSettings ( "Obviously Nice","x2goclient" );
-        set->beginGroup ( group );
+        if(! centralSettings())
+	{
+            set=new QSettings ( "Obviously Nice","x2goclient" );
+            set->beginGroup ( group );
+	}
+	else
+	{
+	    QSettings setroot("HKEY_LOCAL_MACHINE\\SOFTWARE\\x2goclient\\config",QSettings::NativeFormat);
+	    QString setPath="HKEY_LOCAL_MACHINE\\SOFTWARE\\x2goclient\\config\\All Users";
+	    QString uname=getenv("USERNAME");
+            foreach(QString group, setroot.childGroups())
+	    {
+	        if(group==uname)
+		{
+	             setPath="HKEY_LOCAL_MACHINE\\SOFTWARE\\x2goclient\\config\\"+uname;
+		     break;
+		}
+            }
+            set=new QSettings ( setPath, QSettings::NativeFormat);
+            set->beginGroup ( group );
+	}
     }
     else
     {
@@ -74,11 +109,17 @@ X2goSettings::~X2goSettings()
 bool X2goSettings::centralSettings()
 {
 #ifndef Q_OS_WIN
-    QDir d("/etc/x2goclient/settings");
-    x2goDebug<<d.exists();
+    QDir d("/etc/x2goclient/config");
     return d.exists();
 #else
-    return (false);
+    QSettings set("HKEY_LOCAL_MACHINE\\SOFTWARE\\x2goclient",QSettings::NativeFormat);
+    foreach(QString group,set.childGroups())
+    {
+      if(group=="config")
+      {
+	return true;
+      }
+    }
+    return false;
 #endif
 }
-

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