operatingsystem.cpp 2.06 KB
#include "operatingsystem.h"

OperatingSystem::OperatingSystem()
{
    this->nomeOs = this->coletaNomeOs();
    this->idOs = this->coletaIdOs();
}


/*pegarOS
 * @return: int;
 *      retorna um id referente a versão do SO.
 * 48 = Windows XP
 * 128 = Windows Vista
 * 144 = Windows 7
 * 160 = Windows 8
 * 176 = Windows 8.1
 * [enum] = Linux
 */
int OperatingSystem::coletaIdOs(){
#if defined (Q_OS_WIN)
    return QSysInfo::WindowsVersion;
#elif defined (Q_OS_LINUX)

    ConsoleObject console;
    QStringList catOutput = console("cat /etc/*release").split("\n");

    QString line;
    foreach(line, catOutput) {
        if(line.contains("PRETTY_NAME")) {
            if( line.contains("Arch"))
                return LINUX_ARCH;
            else if( line.contains("Debian"))
                return LINUX_DEBIAN;
            else if( line.contains("Ubuntu"))
                return LINUX_UBUNTU;
        }
    }

#else
    return -1;
#endif
}

QString OperatingSystem::coletaNomeOs()
{
#if defined(Q_OS_WIN)
    QStringList params;
    QJsonValue osName;
    params << "Name";
    osName = wmi::wmiSearch("Win32_OperatingSystem", params);
    if (!osName.isNull()){
        QString retorno = osName.toObject()["Name"].toString();
        retorno = retorno.left(retorno.indexOf("|"));
        return retorno;
    }
#elif defined(Q_OS_LINUX)
    ConsoleObject console;
    QStringList catOutput = console("cat /etc/*release").split("\n");

    QString line;
    foreach(line, catOutput) {
        if(line.contains("PRETTY_NAME")) {
            QStringList split = line.split("=");

            QString nomeDistro = split[1].mid(1, split[1].size()-2 );
            return nomeDistro;
        }
    }
#endif
      return "";

}

QJsonObject OperatingSystem::toJsonObject()
{
    QJsonObject json;
    json["idOs"] = QJsonValue::fromVariant(QVariant::fromValue(this->idOs));
    json["nomeOs"] = QJsonValue::fromVariant(this->nomeOs);
//    qDebug() << json;
    return json;
}

QString OperatingSystem::getNomeOs()
{
    return this->nomeOs;
}

int OperatingSystem::getIdOs() const
{
    return this->idOs;
}