Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ported to Qt6 and fixed small issue to show CPU max speed #458

Open
wants to merge 3 commits into
base: native
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Stacer.pro.*
dist/
build/
cmake-build-*/
#*.AppImage
.vscode
Release/
6 changes: 4 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
project(Stacer)

# Adding features(build cache + faster linkers) and reasonable defaults(Debug build by default)
Expand All @@ -13,12 +13,14 @@ set(PROJECT_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")

# Activating MOC and searching for the Qt5 dependencies
set(CMAKE_AUTOMOC ON)
find_package(Qt5 COMPONENTS Core Gui Widgets Charts Svg Concurrent REQUIRED)
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Network Gui Widgets Charts Svg Concurrent REQUIRED)

# Setting the minimum C++ standard and passing the Qt-specific define
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS YES)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_DEBUG_POSTFIX d)
add_definitions(-DQT_DEPRECATED_WARNINGS)

# Subprojects
Expand Down
2 changes: 1 addition & 1 deletion stacer-core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ add_definitions(-DSTACERCORE_LIBRARY)
find_package(Qt5 COMPONENTS Core Network REQUIRED)

add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_srcs})
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Network)
target_link_libraries(${PROJECT_NAME} Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network)
68 changes: 34 additions & 34 deletions stacer-core/Info/cpu_info.cpp
Original file line number Diff line number Diff line change
@@ -1,59 +1,59 @@
#include "cpu_info.h"
#include "Utils/command_util.h"

#include "command_util.h"
#include <QRegularExpression>

int CpuInfo::getCpuPhysicalCoreCount() const
int CpuInfo::getCpuPhysicalCoreCount()
{
static int count = 0;

if (! count) {
QStringList cpuinfo = FileUtil::readListFromFile(PROC_CPUINFO);

if (! cpuinfo.isEmpty()) {
QSet<QPair<int, int> > physicalCoreSet;
int physical = 0;
int core = 0;
for (int i = 0; i < cpuinfo.size(); ++i) {
const QString& line = cpuinfo[i];
if (line.startsWith("physical id")) {
QStringList fields = line.split(": ");
if (fields.size() > 1)
physical = fields[1].toInt();
}
if (line.startsWith("core id")) {
QStringList fields = line.split(": ");
if (fields.size() > 1)
core = fields[1].toInt();
// We assume core id appears after physical id.
physicalCoreSet.insert(qMakePair(physical, core));
}
}
count = physicalCoreSet.size();
}
QSet<QPair<int, int> > physicalCoreSet;
int physical = 0;
int core = 0;
for (auto & line : cpuinfo) {
if (line.startsWith("physical id")) {
QStringList fields = line.split(": ");
if (fields.size() > 1)
physical = fields[1].toInt();
}
if (line.startsWith("core id")) {
QStringList fields = line.split(": ");
if (fields.size() > 1)
core = fields[1].toInt();
// We assume core id appears after physical id.
physicalCoreSet.insert(qMakePair(physical, core));
}
}
count = physicalCoreSet.size();
}
}

return count;
}

int CpuInfo::getCpuCoreCount() const
int CpuInfo::getCpuCoreCount()
{
static quint8 count = 0;

if (! count) {
QStringList cpuinfo = FileUtil::readListFromFile(PROC_CPUINFO);

if (! cpuinfo.isEmpty())
count = cpuinfo.filter(QRegExp("^processor")).count();
count = cpuinfo.filter(QRegularExpression("^processor")).count();
}

return count;
}

QList<double> CpuInfo::getLoadAvgs() const
QList<double> CpuInfo::getLoadAvgs()
{
QList<double> avgs = {0, 0, 0};

QStringList strListAvgs = FileUtil::readStringFromFile(PROC_LOADAVG).split(QRegExp("\\s+"));
QStringList strListAvgs = FileUtil::readStringFromFile(PROC_LOADAVG).split(QRegularExpression("\\s+"));

if (strListAvgs.count() > 2) {
avgs.clear();
Expand All @@ -65,26 +65,26 @@ QList<double> CpuInfo::getLoadAvgs() const
return avgs;
}

double CpuInfo::getAvgClock() const
double CpuInfo::getAvgClock()
{
const QStringList lines = CommandUtil::exec("bash",{"-c", LSCPU_COMMAND}).split('\n');
const QString clockMHz = lines.filter(QRegExp("^CPU MHz")).first().split(":").last();
const QString clockMHz = lines.filter(QRegularExpression("^CPU MHz")).first().split(":").last();
return clockMHz.toDouble();
}

QList<double> CpuInfo::getClocks() const
QList<double> CpuInfo::getClocks()
{
QStringList lines = FileUtil::readListFromFile(PROC_CPUINFO)
.filter(QRegExp("^cpu MHz"));
.filter(QRegularExpression("^cpu MHz"));

QList<double> clocks;
for(auto line: lines){
for(const auto& line: lines){
clocks.push_back(line.split(":").last().toDouble());
}
return clocks;
}

QList<int> CpuInfo::getCpuPercents() const
QList<int> CpuInfo::getCpuPercents()
{
QList<double> cpuTimes;

Expand Down Expand Up @@ -112,7 +112,7 @@ QList<int> CpuInfo::getCpuPercents() const
- guest_nice: running a niced guest
*/

QRegExp sep("\\s+");
QRegularExpression sep("\\s+");
int count = CpuInfo::getCpuCoreCount() + 1;
for (int i = 0; i < count; ++i)
{
Expand All @@ -130,7 +130,7 @@ QList<int> CpuInfo::getCpuPercents() const
return cpuPercents;
}

int CpuInfo::getCpuPercent(const QList<double> &cpuTimes, const int &processor) const
int CpuInfo::getCpuPercent(const QList<double> &cpuTimes, const int &processor)
{
const int N = getCpuCoreCount()+1;

Expand Down
14 changes: 7 additions & 7 deletions stacer-core/Info/cpu_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
class STACERCORESHARED_EXPORT CpuInfo
{
public:
int getCpuPhysicalCoreCount() const;
int getCpuCoreCount() const;
QList<int> getCpuPercents() const;
QList<double> getLoadAvgs() const;
double getAvgClock() const;
QList<double> getClocks() const;
static int getCpuPhysicalCoreCount() ;
static int getCpuCoreCount();
static QList<int> getCpuPercents() ;
static QList<double> getLoadAvgs();
static double getAvgClock();
static QList<double> getClocks();

private:
int getCpuPercent(const QList<double> &cpuTimes, const int &processor = 0) const;
static int getCpuPercent(const QList<double> &cpuTimes, const int &processor = 0);
};

#endif // CPUINFO_H
18 changes: 14 additions & 4 deletions stacer-core/Info/disk_info.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#include "disk_info.h"

#include <QRegularExpression>
#include <QDebug>

QList<Disk*> DiskInfo::getDisks() const
Expand Down Expand Up @@ -35,7 +37,11 @@ QList<QString> DiskInfo::devices()
if (info.isValid()) set.insert(info.device());
}

#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
return QList<QString>(set.cbegin(), set.cend());
#elif
return set.toList();
#endif
}

DiskInfo::~DiskInfo()
Expand All @@ -50,7 +56,11 @@ QList<QString> DiskInfo::fileSystemTypes()
if (info.isValid()) set.insert(info.fileSystemType());
}

#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
return QList<QString>(set.cbegin(), set.cend());
#elif
return set.toList();
#endif
}

QList<quint64> DiskInfo::getDiskIO() const
Expand All @@ -61,10 +71,10 @@ QList<quint64> DiskInfo::getDiskIO() const
quint64 totalRead = 0;
quint64 totalWrite = 0;

for (const QString diskName : diskNames) {
for (const QString& diskName : diskNames) {
QStringList diskStat = FileUtil::readStringFromFile(QString("/sys/block/%1/stat").arg(diskName))
.trimmed()
.split(QRegExp("\\s+"));
.split(QRegularExpression("\\s+"));

if (diskStat.count() > 7) {
totalRead = totalRead + (diskStat.at(2).toLongLong() * 512);
Expand All @@ -77,11 +87,11 @@ QList<quint64> DiskInfo::getDiskIO() const
return diskReadWrite;
}

QStringList DiskInfo::getDiskNames() const
QStringList DiskInfo::getDiskNames()
{
QDir blocks("/sys/block");
QStringList disks;
for (const QFileInfo entryInfo : blocks.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)) {
for (const QFileInfo& entryInfo : blocks.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)) {
if (QFile::exists(QString("%1/device").arg(entryInfo.absoluteFilePath()))) {
disks.append(entryInfo.baseName());
}
Expand Down
6 changes: 3 additions & 3 deletions stacer-core/Info/disk_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ class STACERCORESHARED_EXPORT DiskInfo
QList<Disk*> getDisks() const;
void updateDiskInfo();
QList<quint64> getDiskIO() const;
QStringList getDiskNames() const;
QList<QString> fileSystemTypes();
QList<QString> devices();
static QStringList getDiskNames();
static QList<QString> fileSystemTypes();
static QList<QString> devices();
~DiskInfo();

private:
Expand Down
6 changes: 4 additions & 2 deletions stacer-core/Info/memory_info.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#include "memory_info.h"

#include <QRegularExpression>
#include <QDebug>

MemoryInfo::MemoryInfo():
Expand All @@ -19,8 +21,8 @@ MemoryInfo::MemoryInfo():
void MemoryInfo::updateMemoryInfo()
{
QStringList lines = FileUtil::readListFromFile(PROC_MEMINFO)
.filter(QRegExp("^MemTotal|^MemFree|^Buffers|^Cached|^SwapTotal|^SwapFree|^Shmem|^SReclaimable"));
QRegExp sep("\\s+");
.filter(QRegularExpression("^MemTotal|^MemFree|^Buffers|^Cached|^SwapTotal|^SwapFree|^Shmem|^SReclaimable"));
QRegularExpression sep("\\s+");

#define getValue(l) lines.at(l).split(sep).at(1).toLong() << 10;
memTotal = getValue(0);
Expand Down
3 changes: 2 additions & 1 deletion stacer-core/Info/process_info.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "process_info.h"

#include <QRegularExpression>
#include <QDebug>

void ProcessInfo::updateProcesses()
Expand All @@ -16,7 +17,7 @@ void ProcessInfo::updateProcesses()
.split(QChar('\n'));

if (! lines.isEmpty()) {
QRegExp sep("\\s+");
QRegularExpression sep("\\s+");
for (const QString &line : lines) {
QStringList procLine = line.trimmed().split(sep);

Expand Down
Loading