summaryrefslogtreecommitdiffstats
path: root/src/__TODO/UiGuiSystemInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/__TODO/UiGuiSystemInfo.cpp')
-rw-r--r--src/__TODO/UiGuiSystemInfo.cpp317
1 files changed, 317 insertions, 0 deletions
diff --git a/src/__TODO/UiGuiSystemInfo.cpp b/src/__TODO/UiGuiSystemInfo.cpp
new file mode 100644
index 0000000..5456519
--- /dev/null
+++ b/src/__TODO/UiGuiSystemInfo.cpp
@@ -0,0 +1,317 @@
+/***************************************************************************
+ * Copyright (C) 2006-2012 by Thomas Schweitzer *
+ * thomas-schweitzer(at)arcor.de *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License version 2.0 as *
+ * published by the Free Software Foundation. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program in the file LICENSE.GPL; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include "UiGuiSystemInfo.h"
+
+#include <tntqstring.h>
+#include <tqsysinfo.h>
+#include <tntqprocess.h>
+#include <tntqfile.h>
+
+UiGuiSystemInfo::UiGuiSystemInfo()
+{
+}
+
+/*!
+ \brief Returns the operating system UiGUI is currently running on as one string.
+
+ The String contains name and version of the os. E.g. Linux Ubuntu 9.04.
+ */
+TQString UiGuiSystemInfo::getOperatingSystem()
+{
+ TQString operatingSystemString = "";
+
+#if defined (Q_WS_WIN)
+ switch (TQSysInfo::WindowsVersion)
+ {
+ case TQSysInfo::WV_32s:
+ {
+ operatingSystemString = "Windows 3.1 with Win 32s";
+ break;
+ }
+
+ case TQSysInfo::WV_95:
+ {
+ operatingSystemString = "Windows 95";
+ break;
+ }
+
+ case TQSysInfo::WV_98:
+ {
+ operatingSystemString = "Windows 98";
+ break;
+ }
+
+ case TQSysInfo::WV_Me:
+ {
+ operatingSystemString = "Windows Me";
+ break;
+ }
+
+ case TQSysInfo::WV_NT:
+ {
+ operatingSystemString = "Windows NT (operating system version 4.0)";
+ break;
+ }
+
+ case TQSysInfo::WV_2000:
+ {
+ operatingSystemString = "Windows 2000 (operating system version 5.0)";
+ break;
+ }
+
+ case TQSysInfo::WV_XP:
+ {
+ operatingSystemString = "Windows XP (operating system version 5.1)";
+ break;
+ }
+
+ case TQSysInfo::WV_2003:
+ {
+ operatingSystemString =
+ "Windows Server 2003, Windows Server 2003 R2, Windows Home Server, Windows XP Professional x64 Edition (operating system version 5.2)";
+ break;
+ }
+
+ case TQSysInfo::WV_VISTA:
+ {
+ operatingSystemString = "Windows Vista, Windows Server 2008 (operating system version 6.0)";
+ break;
+ }
+
+ case TQSysInfo::WV_WINDOWS7:
+ {
+ operatingSystemString = "Windows 7 (operating system version 6.1)";
+ break;
+ }
+
+ case TQSysInfo::WV_CE:
+ {
+ operatingSystemString = "Windows CE";
+ break;
+ }
+
+ case TQSysInfo::WV_CENET:
+ {
+ operatingSystemString = "Windows CE .NET";
+ break;
+ }
+
+ case TQSysInfo::WV_CE_5:
+ {
+ operatingSystemString = "Windows CE 5.x";
+ break;
+ }
+
+ case TQSysInfo::WV_CE_6:
+ {
+ operatingSystemString = "Windows CE 6.x";
+ break;
+ }
+
+ default:
+ {
+ operatingSystemString = "Unknown Windows operating system.";
+ break;
+ }
+ }
+#elif defined (Q_WS_MAC)
+ switch (TQSysInfo::MacintoshVersion)
+ {
+ case TQSysInfo::MV_9:
+ {
+ operatingSystemString = "Mac OS 9 (unsupported)";
+ break;
+ }
+
+ case TQSysInfo::MV_10_0:
+ {
+ operatingSystemString = "Mac OS X 10.0 Cheetah (unsupported)";
+ break;
+ }
+
+ case TQSysInfo::MV_10_1:
+ {
+ operatingSystemString = "Mac OS X 10.1 Puma (unsupported)";
+ break;
+ }
+
+ case TQSysInfo::MV_10_2:
+ {
+ operatingSystemString = "Mac OS X 10.2 Jaguar (unsupported)";
+ break;
+ }
+
+ case TQSysInfo::MV_10_3:
+ {
+ operatingSystemString = "Mac OS X 10.3 Panther";
+ break;
+ }
+
+ case TQSysInfo::MV_10_4:
+ {
+ operatingSystemString = "Mac OS X 10.4 Tiger";
+ break;
+ }
+
+ case TQSysInfo::MV_10_5:
+ {
+ operatingSystemString = "Mac OS X 10.5 Leopard";
+ break;
+ }
+
+ case TQSysInfo::MV_10_6:
+ {
+ operatingSystemString = "Mac OS X 10.6 Snow Leopard";
+ break;
+ }
+
+ case TQSysInfo::MV_Unknown:
+ {
+ operatingSystemString = "An unknown and currently unsupported platform";
+ break;
+ }
+
+ default:
+ {
+ operatingSystemString = "Unknown Mac operating system.";
+ break;
+ }
+ }
+#else
+ //TODO: Detect Unix, Linux etc. distro as described on
+ // http://www.novell.com/coolsolutions/feature/11251.html
+ operatingSystemString = "Linux";
+ TQProcess process;
+
+ process.start("uname -s");
+ bool result = process.waitForFinished(1000);
+ TQString os = process.readAllStandardOutput().trimmed();
+
+ process.start("uname -r");
+ result = process.waitForFinished(1000);
+ TQString rev = process.readAllStandardOutput().trimmed();
+
+ process.start("uname -m");
+ result = process.waitForFinished(1000);
+ TQString mach = process.readAllStandardOutput().trimmed();
+
+ if (os == "SunOS")
+ {
+ os = "Solaris";
+
+ process.start("uname -p");
+ result = process.waitForFinished(1000);
+ TQString arch = process.readAllStandardOutput().trimmed();
+
+ process.start("uname -v");
+ result = process.waitForFinished(1000);
+ TQString timestamp = process.readAllStandardOutput().trimmed();
+
+ operatingSystemString = os + " " + rev + " (" + arch + " " + timestamp + ")";
+ }
+ else if (os == "AIX")
+ {
+ process.start("oslevel -r");
+ result = process.waitForFinished(1000);
+ TQString oslevel = process.readAllStandardOutput().trimmed();
+
+ operatingSystemString = os + "oslevel " + oslevel;
+ }
+ else if (os == "Linux")
+ {
+ TQString dist;
+ TQString pseudoname;
+ TQString kernel = rev;
+
+ if (TQFile::exists("/etc/redhat-release"))
+ {
+ dist = "RedHat";
+
+ process.start("sh -c \"cat /etc/redhat-release | sed s/.*\\(// | sed s/\\)//\"");
+ result = process.waitForFinished(1000);
+ pseudoname = process.readAllStandardOutput().trimmed();
+
+ process.start("sh -c \"cat /etc/redhat-release | sed s/.*release\\ // | sed s/\\ .*//\"");
+ result = process.waitForFinished(1000);
+ rev = process.readAllStandardOutput().trimmed();
+ }
+ else if (TQFile::exists("/etc/SUSE-release"))
+ {
+ process.start("sh -c \"cat /etc/SUSE-release | tr '\\n' ' '| sed s/VERSION.*//\"");
+ result = process.waitForFinished(1000);
+ dist = process.readAllStandardOutput().trimmed();
+
+ process.start("sh -c \"cat /etc/SUSE-release | tr '\\n' ' ' | sed s/.*=\\ //\"");
+ result = process.waitForFinished(1000);
+ rev = process.readAllStandardOutput().trimmed();
+ }
+ else if (TQFile::exists("/etc/mandrake-release"))
+ {
+ dist = "Mandrake";
+
+ process.start("sh -c \"cat /etc/mandrake-release | sed s/.*\\(// | sed s/\\)//\"");
+ result = process.waitForFinished(1000);
+ pseudoname = process.readAllStandardOutput().trimmed();
+
+ process.start("sh -c \"cat /etc/mandrake-release | sed s/.*release\\ // | sed s/\\ .*//\"");
+ result = process.waitForFinished(1000);
+ rev = process.readAllStandardOutput().trimmed();
+ }
+ else if (TQFile::exists("/etc/lsb-release"))
+ {
+ dist = "Ubuntu";
+
+ TQString processCall =
+ "sh -c \"cat /etc/lsb-release | tr '\\n' ' ' | sed s/.*DISTRIB_RELEASE=// | sed s/\\ .*//\"";
+ process.start(processCall);
+ result = process.waitForFinished(1000);
+ rev = process.readAllStandardOutput().trimmed();
+ TQString errorStr = process.readAllStandardError();
+
+ process.start(
+ "sh -c \"cat /etc/lsb-release | tr '\\n' ' ' | sed s/.*DISTRIB_CODENAME=// | sed s/\\ .*//\"");
+ result = process.waitForFinished(1000);
+ pseudoname = process.readAllStandardOutput().trimmed();
+ }
+ else if (TQFile::exists("/etc/debian_version"))
+ {
+ dist = "Debian";
+
+ process.start("cat /etc/debian_version");
+ result = process.waitForFinished(1000);
+ dist += process.readAllStandardOutput().trimmed();
+
+ rev = "";
+ }
+
+ if (TQFile::exists("/etc/UnitedLinux-release"))
+ {
+ process.start("sh -c \"cat /etc/UnitedLinux-release | tr '\\n' ' ' | sed s/VERSION.*//\"");
+ result = process.waitForFinished(1000);
+ dist += process.readAllStandardOutput().trimmed();
+ }
+
+ operatingSystemString = os + " " + dist + " " + rev + " (" + pseudoname + " " + kernel + " " +
+ mach + ")";
+ }
+#endif
+
+ return operatingSystemString;
+}