QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
machine_info.h
Go to the documentation of this file.
1/*
2 Copyright 2006-2026 The QElectroTech Team
3 This file is part of QElectroTech.
4
5 QElectroTech is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 QElectroTech is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef MACHINE_INFO_H
19#define MACHINE_INFO_H
20
21#include <QThread>
22#include <QMutex>
23
29{
31 public:
33 {
34 static QMutex mutex;
35 if (!m_instance)
36 {
37 mutex.lock();
38 if (!m_instance) {
39 m_instance = new MachineInfo();
40 }
41 mutex.unlock();
42 }
43
44 return m_instance;
45 }
46
47 static void dropInstance()
48 {
49 static QMutex mutex;
50 if (m_instance) {
51 mutex.lock();
52 delete m_instance;
53 m_instance = nullptr;
54 mutex.unlock();
55 }
56 }
57
58 int32_t i_max_screen_width();
59 int32_t i_max_screen_height();
60 int32_t i_max_available_width();
61 int32_t i_max_available_height();
62 QString compilation_info();
63 void send_info_to_debug();
64
65
66 private:
69 void init_get_cpu_info();
73
74 struct Pc
75 {
76 struct Screen
77 {
78 int32_t count = 0;
79 int32_t width[10] = {};
80 int32_t height[10]= {};
81 int32_t Max_width = 0;
82 int32_t Max_height= 0;
84 struct Built
85 {
86 QString version=
87#ifdef __GNUC__
88#ifdef __APPLE_CC__
89 "CLANG " + QString(__clang_version__);
90#else
91 "GCC " + QString(__VERSION__);
92#endif
93#elif defined(Q_CC_MSVC)
94 "MSVC " + QString(QT_STRINGIFY(_MSC_FULL_VER));
95#endif
96 QString QT=QString(QT_VERSION_STR);
97 QString date=QString(__DATE__);
98 QString time=QString(__TIME__);
99 QString arch=QString(QSysInfo::buildCpuArchitecture());
101 struct CPU
102 {
103 QString info;
104 QString Architecture=QString(
105 QSysInfo::currentCpuArchitecture());
106 int32_t ThreadCount=QThread::idealThreadCount();
108 struct RAM
109 {
110 QString Total;
111 QString Available;
113 struct GPU
114 {
115 QString info;
116 QString RAM;
117
119 struct OS
120 {
121 QString type=QString(QSysInfo::kernelType());
122 QString name=QString(QSysInfo::prettyProductName());
123 QString kernel=QString(QSysInfo::kernelVersion());
126
127
128};
129
130#endif // MACHINE_INFO_H
QString compilation_info()
MachineInfo::compilation_info.
Definition machine_info.cpp:467
int32_t i_max_available_width()
MachineInfo::i_max_available_width.
Definition machine_info.cpp:451
static void dropInstance()
Definition machine_info.h:47
struct MachineInfo::Pc pc
int32_t i_max_screen_height()
MachineInfo::i_max_screen_height.
Definition machine_info.cpp:443
void init_get_cpu_info_macos()
MachineInfo::init_get_cpu_info_macos.
Definition machine_info.cpp:408
void init_get_cpu_info_winnt()
MachineInfo::init_get_cpu_info_winnt.
Definition machine_info.cpp:354
void init_get_Screen_info()
MachineInfo::init_get_Screen_info Finds the largest screen and saves the values.
Definition machine_info.cpp:261
int32_t i_max_screen_width()
MachineInfo::i_max_screen_width.
Definition machine_info.cpp:435
static MachineInfo * instance()
Definition machine_info.h:32
static MachineInfo * m_instance
Definition machine_info.h:30
int32_t i_max_available_height()
MachineInfo::i_max_available_height.
Definition machine_info.cpp:459
void send_info_to_debug()
MachineInfo::send_info_to_debug.
Definition machine_info.cpp:52
void init_get_cpu_info()
MachineInfo::init_get_cpu_info.
Definition machine_info.cpp:283
MachineInfo()
MachineInfo::MachineInfo.
Definition machine_info.cpp:43
void init_get_cpu_info_linux()
MachineInfo::init_get_cpu_info_linux.
Definition machine_info.cpp:298
Definition machine_info.h:85
QString date
Definition machine_info.h:97
QString arch
Definition machine_info.h:99
QString version
Definition machine_info.h:86
QString time
Definition machine_info.h:98
Definition machine_info.h:102
int32_t ThreadCount
Definition machine_info.h:106
QString info
Definition machine_info.h:103
QString Architecture
Definition machine_info.h:104
Definition machine_info.h:114
QString RAM
Definition machine_info.h:116
QString info
Definition machine_info.h:115
Definition machine_info.h:120
QString type
Definition machine_info.h:121
QString kernel
Definition machine_info.h:123
QString name
Definition machine_info.h:122
Definition machine_info.h:109
QString Total
Definition machine_info.h:110
QString Available
Definition machine_info.h:111
Definition machine_info.h:77
int32_t height[10]
Definition machine_info.h:80
int32_t count
Definition machine_info.h:78
int32_t width[10]
Definition machine_info.h:79
int32_t Max_height
Definition machine_info.h:82
int32_t Max_width
Definition machine_info.h:81
Definition machine_info.h:75
struct MachineInfo::Pc::Screen screen
struct MachineInfo::Pc::CPU cpu
struct MachineInfo::Pc::GPU gpu
struct MachineInfo::Pc::RAM ram
struct MachineInfo::Pc::OS os
struct MachineInfo::Pc::Built built