diff options
Diffstat (limited to 'src/UiGuiSystemInfo.cpp')
| -rwxr-xr-x | src/UiGuiSystemInfo.cpp | 454 | 
1 files changed, 227 insertions, 227 deletions
| diff --git a/src/UiGuiSystemInfo.cpp b/src/UiGuiSystemInfo.cpp index 6763bf8..b83a636 100755 --- a/src/UiGuiSystemInfo.cpp +++ b/src/UiGuiSystemInfo.cpp @@ -1,227 +1,227 @@ -/***************************************************************************
 - *   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 <QString>
 -#include <QSysInfo>
 -#include <QProcess>
 -#include <QFile>
 -
 -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.
 - */
 -QString UiGuiSystemInfo::getOperatingSystem() {
 -    QString operatingSystemString = "";
 -
 -#if defined(Q_WS_WIN)
 -    switch ( QSysInfo::WindowsVersion ) {
 -        case QSysInfo::WV_32s :
 -            operatingSystemString = "Windows 3.1 with Win 32s";
 -            break;
 -        case QSysInfo::WV_95 :
 -            operatingSystemString = "Windows 95";
 -            break;
 -        case QSysInfo::WV_98 :
 -            operatingSystemString = "Windows 98";
 -            break;
 -        case QSysInfo::WV_Me :
 -            operatingSystemString = "Windows Me";
 -            break;
 -        case QSysInfo::WV_NT :
 -            operatingSystemString = "Windows NT (operating system version 4.0)";
 -            break;
 -        case QSysInfo::WV_2000 :
 -            operatingSystemString = "Windows 2000 (operating system version 5.0)";
 -            break;
 -        case QSysInfo::WV_XP :
 -            operatingSystemString = "Windows XP (operating system version 5.1)";
 -            break;
 -        case QSysInfo::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 QSysInfo::WV_VISTA :
 -            operatingSystemString = "Windows Vista, Windows Server 2008 (operating system version 6.0)";
 -            break;
 -        case QSysInfo::WV_WINDOWS7 :
 -            operatingSystemString = "Windows 7 (operating system version 6.1)";
 -            break;
 -        case QSysInfo::WV_CE :
 -            operatingSystemString = "Windows CE";
 -            break;
 -        case QSysInfo::WV_CENET :
 -            operatingSystemString = "Windows CE .NET";
 -            break;
 -        case QSysInfo::WV_CE_5 :
 -            operatingSystemString = "Windows CE 5.x";
 -            break;
 -        case QSysInfo::WV_CE_6 :
 -            operatingSystemString = "Windows CE 6.x";
 -            break;
 -        default :
 -            operatingSystemString = "Unknown Windows operating system.";
 -            break;
 -    }
 -#elif defined(Q_WS_MAC)
 -    switch ( QSysInfo::MacintoshVersion ) {
 -        case QSysInfo::MV_9 :
 -            operatingSystemString = "Mac OS 9 (unsupported)";
 -            break;
 -        case QSysInfo::MV_10_0 :
 -            operatingSystemString = "Mac OS X 10.0 Cheetah (unsupported)";
 -            break;
 -        case QSysInfo::MV_10_1 :
 -            operatingSystemString = "Mac OS X 10.1 Puma (unsupported)";
 -            break;
 -        case QSysInfo::MV_10_2 :
 -            operatingSystemString = "Mac OS X 10.2 Jaguar (unsupported)";
 -            break;
 -        case QSysInfo::MV_10_3 :
 -            operatingSystemString = "Mac OS X 10.3 Panther";
 -            break;
 -        case QSysInfo::MV_10_4 :
 -            operatingSystemString = "Mac OS X 10.4 Tiger";
 -            break;
 -        case QSysInfo::MV_10_5 :
 -            operatingSystemString = "Mac OS X 10.5 Leopard";
 -            break;
 -        case QSysInfo::MV_10_6 :
 -            operatingSystemString = "Mac OS X 10.6 Snow Leopard";
 -            break;
 -        case QSysInfo::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";
 -    QProcess process;
 -
 -    process.start("uname -s");
 -    bool result = process.waitForFinished(1000);
 -    QString os = process.readAllStandardOutput().trimmed();
 -
 -    process.start("uname -r");
 -    result = process.waitForFinished(1000);
 -    QString rev = process.readAllStandardOutput().trimmed();
 -
 -    process.start("uname -m");
 -    result = process.waitForFinished(1000);
 -    QString mach = process.readAllStandardOutput().trimmed();
 -
 -    if ( os == "SunOS" ) {
 -        os = "Solaris";
 -
 -        process.start("uname -p");
 -        result = process.waitForFinished(1000);
 -        QString arch = process.readAllStandardOutput().trimmed();
 -
 -        process.start("uname -v");
 -        result = process.waitForFinished(1000);
 -        QString timestamp = process.readAllStandardOutput().trimmed();
 -
 -        operatingSystemString = os + " " + rev + " (" + arch + " " + timestamp + ")";
 -    }
 -    else if ( os == "AIX" ) {
 -        process.start("oslevel -r");
 -        result = process.waitForFinished(1000);
 -        QString oslevel = process.readAllStandardOutput().trimmed();
 -
 -        operatingSystemString = os + "oslevel " + oslevel;
 -    }
 -    else if ( os == "Linux" ) {
 -        QString dist;
 -        QString pseudoname;
 -        QString kernel = rev;
 -
 -        if ( QFile::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 ( QFile::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 ( QFile::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 ( QFile::exists("/etc/lsb-release") ) {
 -            dist = "Ubuntu";
 -
 -            QString 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();
 -            QString 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 ( QFile::exists("/etc/debian_version") ) {
 -            dist = "Debian";
 -
 -            process.start("cat /etc/debian_version");
 -            result = process.waitForFinished(1000);
 -            dist += process.readAllStandardOutput().trimmed();
 -
 -            rev = "";
 -        }
 -
 -        if ( QFile::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;
 -}
 +/*************************************************************************** + *   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 <tqstring.h> +#include <tqsysinfo.h> +#include <tqprocess.h> +#include <tqfile.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. + */ +QString UiGuiSystemInfo::getOperatingSystem() { +    QString operatingSystemString = ""; + +#if defined(Q_WS_WIN) +    switch ( QSysInfo::WindowsVersion ) { +        case QSysInfo::WV_32s : +            operatingSystemString = "Windows 3.1 with Win 32s"; +            break; +        case QSysInfo::WV_95 : +            operatingSystemString = "Windows 95"; +            break; +        case QSysInfo::WV_98 : +            operatingSystemString = "Windows 98"; +            break; +        case QSysInfo::WV_Me : +            operatingSystemString = "Windows Me"; +            break; +        case QSysInfo::WV_NT : +            operatingSystemString = "Windows NT (operating system version 4.0)"; +            break; +        case QSysInfo::WV_2000 : +            operatingSystemString = "Windows 2000 (operating system version 5.0)"; +            break; +        case QSysInfo::WV_XP : +            operatingSystemString = "Windows XP (operating system version 5.1)"; +            break; +        case QSysInfo::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 QSysInfo::WV_VISTA : +            operatingSystemString = "Windows Vista, Windows Server 2008 (operating system version 6.0)"; +            break; +        case QSysInfo::WV_WINDOWS7 : +            operatingSystemString = "Windows 7 (operating system version 6.1)"; +            break; +        case QSysInfo::WV_CE : +            operatingSystemString = "Windows CE"; +            break; +        case QSysInfo::WV_CENET : +            operatingSystemString = "Windows CE .NET"; +            break; +        case QSysInfo::WV_CE_5 : +            operatingSystemString = "Windows CE 5.x"; +            break; +        case QSysInfo::WV_CE_6 : +            operatingSystemString = "Windows CE 6.x"; +            break; +        default : +            operatingSystemString = "Unknown Windows operating system."; +            break; +    } +#elif defined(Q_WS_MAC) +    switch ( QSysInfo::MacintoshVersion ) { +        case QSysInfo::MV_9 : +            operatingSystemString = "Mac OS 9 (unsupported)"; +            break; +        case QSysInfo::MV_10_0 : +            operatingSystemString = "Mac OS X 10.0 Cheetah (unsupported)"; +            break; +        case QSysInfo::MV_10_1 : +            operatingSystemString = "Mac OS X 10.1 Puma (unsupported)"; +            break; +        case QSysInfo::MV_10_2 : +            operatingSystemString = "Mac OS X 10.2 Jaguar (unsupported)"; +            break; +        case QSysInfo::MV_10_3 : +            operatingSystemString = "Mac OS X 10.3 Panther"; +            break; +        case QSysInfo::MV_10_4 : +            operatingSystemString = "Mac OS X 10.4 Tiger"; +            break; +        case QSysInfo::MV_10_5 : +            operatingSystemString = "Mac OS X 10.5 Leopard"; +            break; +        case QSysInfo::MV_10_6 : +            operatingSystemString = "Mac OS X 10.6 Snow Leopard"; +            break; +        case QSysInfo::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"; +    QProcess process; + +    process.start("uname -s"); +    bool result = process.waitForFinished(1000); +    QString os = process.readAllStandardOutput().trimmed(); + +    process.start("uname -r"); +    result = process.waitForFinished(1000); +    QString rev = process.readAllStandardOutput().trimmed(); + +    process.start("uname -m"); +    result = process.waitForFinished(1000); +    QString mach = process.readAllStandardOutput().trimmed(); + +    if ( os == "SunOS" ) { +        os = "Solaris"; + +        process.start("uname -p"); +        result = process.waitForFinished(1000); +        QString arch = process.readAllStandardOutput().trimmed(); + +        process.start("uname -v"); +        result = process.waitForFinished(1000); +        QString timestamp = process.readAllStandardOutput().trimmed(); + +        operatingSystemString = os + " " + rev + " (" + arch + " " + timestamp + ")"; +    } +    else if ( os == "AIX" ) { +        process.start("oslevel -r"); +        result = process.waitForFinished(1000); +        QString oslevel = process.readAllStandardOutput().trimmed(); + +        operatingSystemString = os + "oslevel " + oslevel; +    } +    else if ( os == "Linux" ) { +        QString dist; +        QString pseudoname; +        QString kernel = rev; + +        if ( QFile::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 ( QFile::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 ( QFile::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 ( QFile::exists("/etc/lsb-release") ) { +            dist = "Ubuntu"; + +            QString 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(); +            QString 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 ( QFile::exists("/etc/debian_version") ) { +            dist = "Debian"; + +            process.start("cat /etc/debian_version"); +            result = process.waitForFinished(1000); +            dist += process.readAllStandardOutput().trimmed(); + +            rev = ""; +        } + +        if ( QFile::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; +} | 
