196 lines
5.9 KiB
C++
196 lines
5.9 KiB
C++
// SPDX-FileCopyrightText: 2017 - 2022 UnionTech Software Technology Co., Ltd.
|
|
//
|
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
#ifndef DSYSINFO_H
|
|
#define DSYSINFO_H
|
|
|
|
#include <dtkcore_global.h>
|
|
|
|
#include <QLocale>
|
|
|
|
DCORE_BEGIN_NAMESPACE
|
|
|
|
class DSysInfoPrivate;
|
|
class LIBDTKCORESHARED_EXPORT DSysInfo
|
|
{
|
|
Q_GADGET
|
|
public:
|
|
enum ProductType {
|
|
UnknownType = 0,
|
|
Deepin,
|
|
ArchLinux,
|
|
CentOS,
|
|
Debian,
|
|
Fedora,
|
|
LinuxMint,
|
|
Manjaro,
|
|
openSUSE,
|
|
SailfishOS,
|
|
Ubuntu,
|
|
Uos,
|
|
Gentoo,
|
|
NixOS
|
|
};
|
|
|
|
Q_ENUM(ProductType)
|
|
|
|
enum DeepinType {
|
|
UnknownDeepin = 0,
|
|
DeepinDesktop,
|
|
DeepinProfessional,
|
|
DeepinServer,
|
|
DeepinPersonal,
|
|
DeepinMilitary
|
|
};
|
|
|
|
enum LogoType {
|
|
Normal = 0,
|
|
Light,
|
|
Symbolic,
|
|
Transparent
|
|
};
|
|
|
|
enum OrgType {
|
|
Distribution, //!<@~english distribution itself
|
|
Distributor, //!<@~english distributer of the current distribution
|
|
Manufacturer //!<@~english manufacturer of the current distribution or device
|
|
};
|
|
|
|
enum UosType {
|
|
UosTypeUnknown,
|
|
UosDesktop,
|
|
UosServer,
|
|
UosDevice,
|
|
UosSmart,
|
|
|
|
UosTypeCount // must at last
|
|
};
|
|
|
|
enum UosEdition {
|
|
UosEditionUnknown,
|
|
UosProfessional,
|
|
UosHome,
|
|
UosCommunity,
|
|
UosMilitary,
|
|
UosEnterprise,
|
|
UosEnterpriseC,
|
|
UosEuler,
|
|
UosMilitaryS, // for Server
|
|
UosDeviceEdition,
|
|
UosEducation,
|
|
UosDefense,
|
|
|
|
UosEditionCount // must at last
|
|
};
|
|
|
|
enum UosArch {
|
|
UosArchUnknown,
|
|
UosAMD64 = 1 << 0,
|
|
UosARM64 = 1 << 1,
|
|
UosMIPS64 = 1 << 2,
|
|
UosSW64 = 1 << 3
|
|
};
|
|
|
|
//! @~english enum.Arch
|
|
enum Arch {
|
|
ARM64, /*!< @~english arm64 */
|
|
ARM64_BE, /*!< @~english arm64-be */
|
|
ARM, /*!< @~english arm */
|
|
ARM_BE, /*!< @~english arm-be */
|
|
ALPHA, /*!< @~english alpha */
|
|
SW_64, /*!< @~english sw_64 */
|
|
ARC, /*!< @~english arc */
|
|
ARC_BE, /*!< @~english arc-be */
|
|
CRIS, /*!< @~english cris */
|
|
X86_64, /*!< @~english x86-64 */
|
|
X86, /*!< @~english x86 */
|
|
IA64, /*!< @~english ia64 */
|
|
LOONGARCH64,/*!< @~english loongarch64 */
|
|
M68K, /*!< @~english m68k */
|
|
MIPS64_LE, /*!< @~english mips64-le */
|
|
MIPS64, /*!< @~english mips64 */
|
|
MIPS_LE, /*!< @~english mips-le */
|
|
MIPS, /*!< @~english mips */
|
|
NIOS2, /*!< @~english nios2 */
|
|
PARISC64, /*!< @~english parisc64 */
|
|
PARISC, /*!< @~english parisc */
|
|
PPC64_LE, /*!< @~english ppc64-le */
|
|
PPC64, /*!< @~english ppc64 */
|
|
PPC, /*!< @~english ppc */
|
|
PPC_LE, /*!< @~english ppc-le */
|
|
RISCV32, /*!< @~english riscv32 */
|
|
RISCV64, /*!< @~english riscv64 */
|
|
S390X, /*!< @~english s390x */
|
|
S390, /*!< @~english s390 */
|
|
SH64, /*!< @~english sh64 */
|
|
SH, /*!< @~english sh */
|
|
SPARC64, /*!< @~english sparc64 */
|
|
SPARC, /*!< @~english sparc */
|
|
TILEGX, /*!< @~english tilegx */
|
|
|
|
NUM_ARCHES, /*!< @~english number of defined Arch types */
|
|
};
|
|
Q_ENUM(Arch) // Q_GADGET
|
|
|
|
#ifdef Q_OS_LINUX
|
|
static bool isDeepin();
|
|
static bool isDDE();
|
|
static DeepinType deepinType();
|
|
static QString deepinTypeDisplayName(const QLocale &locale = QLocale::system());
|
|
static QString deepinVersion();
|
|
static QString deepinEdition();
|
|
static QString deepinCopyright();
|
|
|
|
// uos version interface
|
|
static UosType uosType();
|
|
static UosEdition uosEditionType();
|
|
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
|
Q_DECL_DEPRECATED_X("Use arch() instead") static UosArch uosArch();
|
|
#endif
|
|
static QString uosProductTypeName(const QLocale &locale = QLocale::system());
|
|
static QString uosSystemName(const QLocale &locale = QLocale::system());
|
|
static QString uosEditionName(const QLocale &locale = QLocale::system());
|
|
|
|
static QString spVersion(); // SP1...SP99
|
|
static QString udpateVersion(); // update1...update9
|
|
static QString majorVersion();
|
|
static QString minorVersion();
|
|
static QString buildVersion(); // xyzs
|
|
#endif
|
|
|
|
#if DTK_VERSION < DTK_VERSION_CHECK(6, 0, 0, 0)
|
|
Q_DECL_DEPRECATED_X("Use distributionInfoPath() instead") static QString deepinDistributionInfoPath();
|
|
Q_DECL_DEPRECATED_X("Use distributionOrgName() instead") static QString deepinDistributorName();
|
|
Q_DECL_DEPRECATED_X("Use distributionOrgWebsite() instead") static QPair<QString, QString> deepinDistributorWebsite();
|
|
Q_DECL_DEPRECATED_X("Use distributionOrgLogo() instead") static QString deepinDistributorLogo(LogoType type = Normal, const QString & fallback = QString());
|
|
#endif
|
|
static QString distributionInfoPath();
|
|
static QString distributionInfoSectionName(OrgType type);
|
|
|
|
static QString distributionOrgName(OrgType type = Distribution, const QLocale &locale = QLocale::system());
|
|
static QPair<QString, QString> distributionOrgWebsite(OrgType type = Distribution);
|
|
static QString distributionOrgLogo(OrgType orgType = Distribution, LogoType type = Normal, const QString & fallback = QString());
|
|
|
|
static QString operatingSystemName();
|
|
static ProductType productType();
|
|
static QString productTypeString();
|
|
static QString productVersion();
|
|
static bool isCommunityEdition();
|
|
|
|
static QString computerName();
|
|
static QString cpuModelName();
|
|
static qint64 memoryInstalledSize();
|
|
static qint64 memoryTotalSize();
|
|
static qint64 systemDiskSize();
|
|
|
|
static QDateTime bootTime();
|
|
static QDateTime shutdownTime();
|
|
static qint64 uptime();
|
|
static Arch arch();
|
|
};
|
|
|
|
DCORE_END_NAMESPACE
|
|
|
|
#endif // DSYSINFO_H
|