[X2Go-Commits] [x2goclient] 01/01: configdialog.cpp: make XQuartz detection algorithm QStringList-based and add MacPorts location.

git-admin at x2go.org git-admin at x2go.org
Fri Mar 13 02:52:35 CET 2015


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

x2go pushed a commit to branch bugfix/osx
in repository x2goclient.

commit 26c86b7ffd9da900b5def2df5b145c9c74d8561f
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Fri Mar 13 02:52:21 2015 +0100

    configdialog.cpp: make XQuartz detection algorithm QStringList-based and add MacPorts location.
---
 debian/changelog     |    2 ++
 src/configdialog.cpp |   66 +++++++++++++++++++++++++++++++++-----------------
 2 files changed, 46 insertions(+), 22 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 069b173..b51ab6a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -237,6 +237,8 @@ x2goclient (4.0.4.0-0x2go1) UNRELEASED; urgency=low
       allow it to come up.
     - onmainwindow.cpp: adapt SSH host key warning message to new usermode
       sshd possibilities.
+    - configdialog.cpp: make XQuartz detection algorithm QStringList-based and
+      add MacPorts location.
 
  -- X2Go Release Manager <git-admin at x2go.org>  Thu, 19 Feb 2015 13:25:28 +0100
 
diff --git a/src/configdialog.cpp b/src/configdialog.cpp
index e0c7861..e4e932a 100644
--- a/src/configdialog.cpp
+++ b/src/configdialog.cpp
@@ -33,6 +33,7 @@
 #include "x2gologdebug.h"
 #include "printwidget.h"
 #include <QTabWidget>
+#include <algorithm>
 #include "x2goclientconfig.h"
 #include "connectionwidget.h"
 #include "settingswidget.h"
@@ -463,34 +464,55 @@ QString ConfigDialog::retMaxXDarwinVersion ( QString v1, QString v2 )
 QString ConfigDialog::findXDarwin ( QString& version, QString path )
 {
     if (path.isEmpty ()) {
-        QString dir1 = "/Applications/Utilities/XQuartz.app";
-        QString ver1 = "0.0.0";
-        if (QFile::exists (dir1 + "/Contents/Info.plist")) {
-            QSettings vst (dir1 + "/Contents/Info.plist",
-                           QSettings::NativeFormat);
-            ver1 = vst.value ("CFBundleShortVersionString",
-                              (QVariant) "0.0.0").toString ();
+        QStringList locations;
+        locations << "/Applications/Utilities/XQuartz.app"
+                  << "/usr/X11/X11.app"
+                  << "/Applications/MacPorts/X11.app";
+
+        QStringList versions;
+
+        QStringList::const_iterator const_it;
+        for (const_it = locations.constBegin (); const_it != locations.constEnd (); ++const_it) {
+            QFile info_plist (*const_it + "/Contents/Info.plist");
+
+            if (info_plist.exists ()) {
+                QSettings settings (info_plist.fileName (), QSettings::NativeFormat);
+                versions << settings.value ("CFBundleShortVersionString", (QVariant) "0.0.0").toString ();
+            }
+            else {
+                versions << QString ("0.0.0");
+            }
         }
 
-        QString dir2 = "/usr/X11/X11.app";
-        QString ver2 = "0.0.0";;
-        if (QFile::exists (dir2 + "/Contents/Info.plist")) {
-            QSettings vst (dir2 + "/Contents/Info.plist",
-                           QSettings::NativeFormat);
-            ver2 = vst.value ("CFBundleShortVersionString",
-                             (QVariant) "0.0.0").toString ();
+        QString max_ver = QString ();
+        std::size_t max_idx = 0;
+        if (locations.size () < 1) {
+            version = QString ("0.0.0");
+            return (QString ());
+        }
+        else if (locations.size () == 1) {
+            max_ver = versions.at (0);
+            max_idx = 0;
         }
-        if ((ver1.compare (ver2) == 0) &&
-            (ver1.compare (QString ("0.0.0")) == 0)) {
-          return (QString ());
+        else {
+            max_ver = versions.at (0);
+            max_idx = 0;
+            for (std::size_t i = 1; i < static_cast<std::size_t> (locations.size ()); ++i) {
+                QString cur_ver = versions.at (i);
+                if (retMaxXDarwinVersion (max_ver, cur_ver).compare (cur_ver) == 0) {
+                    max_ver = cur_ver;
+                    max_idx = i;
+                }
+            }
         }
-        else if (retMaxXDarwinVersion (ver1, ver2) == ver1) {
-            version = ver1;
-            return dir1;
+
+        version = max_ver;
+
+        if (max_ver.compare (QString ("0.0.0")) == 0) {
+            return (QString ());
         }
         else {
-            version = ver2;
-            return dir2;
+            return (locations.at (max_idx));
         }
     }
     else {

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