#pragma once #include #include #include class SysInfo : public QObject { public: struct HyperionSysInfo { QString kernelType; QString kernelVersion; QString architecture; QString wordSize; QString productType; QString productVersion; QString prettyName; QString hostName; QString domainName; }; ~SysInfo(); static HyperionSysInfo get(); private: SysInfo(); static SysInfo* _instance; HyperionSysInfo _sysinfo; struct QUnixOSVersion { QString productType; QString productVersion; QString prettyName; }; QString machineHostName(); QString currentCpuArchitecture(); QString kernelType(); QString kernelVersion(); bool findUnixOsVersion(QUnixOSVersion &v); QByteArray getEtcFileFirstLine(const char *fileName); bool readEtcRedHatRelease(QUnixOSVersion &v); bool readEtcDebianVersion(QUnixOSVersion &v); bool readEtcOsRelease(SysInfo::QUnixOSVersion &v); bool readEtcFile(SysInfo::QUnixOSVersion &v, const char *filename, const QByteArray &idKey, const QByteArray &versionKey, const QByteArray &prettyNameKey); QByteArray getEtcFileContent(const char *filename); QString unquote(const char *begin, const char *end); bool readEtcLsbRelease(SysInfo::QUnixOSVersion &v); };