mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 19:07:01 +02:00
launcher: Add game size column
This commit is contained in:
@@ -218,6 +218,11 @@
|
|||||||
<string>Firmware Version</string>
|
<string>Firmware Version</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Size</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Path</string>
|
<string>Path</string>
|
||||||
|
|||||||
@@ -5,12 +5,15 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QDirIterator>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QFont>
|
#include <QFont>
|
||||||
|
#include <QFutureWatcher>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
|
#include <QLocale>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QStyle>
|
#include <QStyle>
|
||||||
@@ -18,6 +21,7 @@
|
|||||||
#include <QVersionNumber>
|
#include <QVersionNumber>
|
||||||
#include <QWheelEvent>
|
#include <QWheelEvent>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QtConcurrentRun>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
@@ -26,6 +30,7 @@ enum Column {
|
|||||||
SerialColumn,
|
SerialColumn,
|
||||||
GameVersionColumn,
|
GameVersionColumn,
|
||||||
FirmwareVersionColumn,
|
FirmwareVersionColumn,
|
||||||
|
SizeColumn,
|
||||||
PathColumn,
|
PathColumn,
|
||||||
StatusColumn,
|
StatusColumn,
|
||||||
CommentsColumn,
|
CommentsColumn,
|
||||||
@@ -155,6 +160,34 @@ ConfigurationItem::ConfigurationItem(std::unique_ptr<Configuration> info, QTreeW
|
|||||||
|
|
||||||
Update();
|
Update();
|
||||||
SetRunning(false);
|
SetRunning(false);
|
||||||
|
|
||||||
|
setData(SizeColumn, Qt::UserRole, qint64(-1));
|
||||||
|
setText(SizeColumn, QStringLiteral("\u2014"));
|
||||||
|
auto* watcher = new QFutureWatcher<qint64>(this);
|
||||||
|
connect(watcher, &QFutureWatcher<qint64>::finished, this, [this, watcher]() {
|
||||||
|
const auto bytes = watcher->result();
|
||||||
|
setData(SizeColumn, Qt::UserRole, bytes);
|
||||||
|
if (bytes >= 0) {
|
||||||
|
setText(SizeColumn,
|
||||||
|
QLocale().formattedDataSize(bytes, 2, QLocale::DataSizeTraditionalFormat));
|
||||||
|
}
|
||||||
|
watcher->deleteLater();
|
||||||
|
});
|
||||||
|
watcher->setFuture(QtConcurrent::run([path = m_info->basedir]() -> qint64 {
|
||||||
|
if (path.isEmpty() || !QDir(path).exists()) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
qint64 bytes = 0;
|
||||||
|
QDirIterator files(path, QDir::Files | QDir::Hidden | QDir::System | QDir::NoSymLinks,
|
||||||
|
QDirIterator::Subdirectories);
|
||||||
|
while (files.hasNext()) {
|
||||||
|
files.next();
|
||||||
|
if (files.fileInfo().isFile()) {
|
||||||
|
bytes += files.fileInfo().size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bytes;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigurationItem::~ConfigurationItem() = default;
|
ConfigurationItem::~ConfigurationItem() = default;
|
||||||
@@ -193,6 +226,9 @@ bool ConfigurationItem::operator<(const QTreeWidgetItem& other) const {
|
|||||||
const int column = treeWidget() != nullptr ? treeWidget()->sortColumn() : NameColumn;
|
const int column = treeWidget() != nullptr ? treeWidget()->sortColumn() : NameColumn;
|
||||||
switch (column) {
|
switch (column) {
|
||||||
case NameColumn: return GetSortText(*m_info) < GetSortText(*other_item->m_info);
|
case NameColumn: return GetSortText(*m_info) < GetSortText(*other_item->m_info);
|
||||||
|
case SizeColumn:
|
||||||
|
return data(SizeColumn, Qt::UserRole).toLongLong() <
|
||||||
|
other.data(SizeColumn, Qt::UserRole).toLongLong();
|
||||||
case StatusColumn:
|
case StatusColumn:
|
||||||
return GetStatusText(m_info->game_status) <
|
return GetStatusText(m_info->game_status) <
|
||||||
GetStatusText(other_item->m_info->game_status);
|
GetStatusText(other_item->m_info->game_status);
|
||||||
|
|||||||
@@ -61,9 +61,10 @@ constexpr int GAME_NAME_COLUMN = 0;
|
|||||||
constexpr int GAME_SERIAL_COLUMN = 1;
|
constexpr int GAME_SERIAL_COLUMN = 1;
|
||||||
constexpr int GAME_VERSION_COLUMN = 2;
|
constexpr int GAME_VERSION_COLUMN = 2;
|
||||||
constexpr int GAME_FIRMWARE_VERSION_COLUMN = 3;
|
constexpr int GAME_FIRMWARE_VERSION_COLUMN = 3;
|
||||||
constexpr int GAME_PATH_COLUMN = 4;
|
constexpr int GAME_SIZE_COLUMN = 4;
|
||||||
constexpr int GAME_STATUS_COLUMN = 5;
|
constexpr int GAME_PATH_COLUMN = 5;
|
||||||
constexpr int GAME_COMMENT_COLUMN = 6;
|
constexpr int GAME_STATUS_COLUMN = 6;
|
||||||
|
constexpr int GAME_COMMENT_COLUMN = 7;
|
||||||
|
|
||||||
static QString NormalizeGameDirectory(const QString& dir) {
|
static QString NormalizeGameDirectory(const QString& dir) {
|
||||||
const auto trimmed = dir.trimmed();
|
const auto trimmed = dir.trimmed();
|
||||||
@@ -217,6 +218,7 @@ ConfigurationListWidget::ConfigurationListWidget(QWidget* parent)
|
|||||||
m_ui->cfgs_list->setColumnWidth(GAME_SERIAL_COLUMN, 110);
|
m_ui->cfgs_list->setColumnWidth(GAME_SERIAL_COLUMN, 110);
|
||||||
m_ui->cfgs_list->setColumnWidth(GAME_VERSION_COLUMN, 120);
|
m_ui->cfgs_list->setColumnWidth(GAME_VERSION_COLUMN, 120);
|
||||||
m_ui->cfgs_list->setColumnWidth(GAME_FIRMWARE_VERSION_COLUMN, 150);
|
m_ui->cfgs_list->setColumnWidth(GAME_FIRMWARE_VERSION_COLUMN, 150);
|
||||||
|
m_ui->cfgs_list->setColumnWidth(GAME_SIZE_COLUMN, 100);
|
||||||
m_ui->cfgs_list->setColumnWidth(GAME_PATH_COLUMN, 320);
|
m_ui->cfgs_list->setColumnWidth(GAME_PATH_COLUMN, 320);
|
||||||
m_ui->cfgs_list->setColumnWidth(GAME_STATUS_COLUMN, 150);
|
m_ui->cfgs_list->setColumnWidth(GAME_STATUS_COLUMN, 150);
|
||||||
m_ui->cfgs_list->setColumnWidth(GAME_COMMENT_COLUMN, 240);
|
m_ui->cfgs_list->setColumnWidth(GAME_COMMENT_COLUMN, 240);
|
||||||
|
|||||||
Reference in New Issue
Block a user