diff options
Diffstat (limited to 'src/UiGuiSystemInfo.cpp')
-rw-r--r--[-rwxr-xr-x] | src/UiGuiSystemInfo.cpp | 470 |
1 files changed, 280 insertions, 190 deletions
diff --git a/src/UiGuiSystemInfo.cpp b/src/UiGuiSystemInfo.cpp index ac72ce1..5456519 100755..100644 --- a/src/UiGuiSystemInfo.cpp +++ b/src/UiGuiSystemInfo.cpp @@ -24,204 +24,294 @@ #include <tntqprocess.h> #include <tntqfile.h> -UiGuiSystemInfo::UiGuiSystemInfo() { +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; - } +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 + ")"; - } + //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; + return operatingSystemString; } |