qt: use the same date format in all managers
Some checks failed
Generate Translation Template / Generate Translation Template (push) Has been cancelled
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux-aarch64.sh, gcc, rpcs3/rpcs3-ci-jammy-aarch64:1.6, ubuntu-24.04-arm) (push) Has been cancelled
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux.sh, gcc, rpcs3/rpcs3-ci-jammy:1.6, ubuntu-24.04) (push) Has been cancelled
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1, rpcs3/rpcs3-binaries-linux-arm64, /rpcs3/.ci/build-linux-aarch64.sh, clang, rpcs3/rpcs3-ci-jammy-aarch64:1.6, ubuntu-24.04-arm) (push) Has been cancelled
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (d812f1254a1157c80fd402f94446310560f54e5f, rpcs3/rpcs3-binaries-linux, /rpcs3/.ci/build-linux.sh, clang, rpcs3/rpcs3-ci-jammy:1.6, ubuntu-24.04) (push) Has been cancelled
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (51ae32f468089a8169aaf1567de355ff4a3e0842, rpcs3/rpcs3-binaries-mac, arch -X86_64 .ci/build-mac.sh, Intel) (push) Has been cancelled
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (8e21bdbc40711a3fccd18fbf17b742348b0f4281, rpcs3/rpcs3-binaries-mac-arm64, .ci/build-mac-arm64.sh, Apple Silicon) (push) Has been cancelled
Build RPCS3 / RPCS3 Windows (push) Has been cancelled
Build RPCS3 / RPCS3 Windows Clang (win64, clang, clang64) (push) Has been cancelled
Build RPCS3 / RPCS3 FreeBSD (push) Has been cancelled

This commit is contained in:
Megamouse 2025-09-14 20:03:53 +02:00
parent 0daa6d6fb0
commit 25925f2680
5 changed files with 31 additions and 20 deletions

View file

@ -656,5 +656,22 @@ namespace gui
return QStringLiteral("%0 %1").arg(QString::number((size + 0.) / divisor, 'f', 2)).arg(s_units[byte_unit]); return QStringLiteral("%0 %1").arg(QString::number((size + 0.) / divisor, 'f', 2)).arg(s_units[byte_unit]);
} }
QDateTime datetime(s64 time)
{
QDateTime dateTime;
dateTime.setSecsSinceEpoch(time);
return dateTime;
}
QString format_datetime(const QDateTime& date, const QString& fmt)
{
return date.toString(fmt);
}
QString format_timestamp(s64 time, const QString& fmt)
{
return format_datetime(datetime(time), fmt);
}
} // utils } // utils
} // gui } // gui

View file

@ -157,6 +157,15 @@ namespace gui
// Convert an arbitrary count of bytes to a readable format using global units (KB, MB...) // Convert an arbitrary count of bytes to a readable format using global units (KB, MB...)
QString format_byte_size(usz size); QString format_byte_size(usz size);
// Get a QDateTime from a timestamp
QDateTime datetime(s64 time);
// Convert a QDateTime to a readable string
QString format_datetime(const QDateTime& date, const QString& fmt = "yyyy-MM-dd HH:mm:ss");
// Convert a timestamp to a readable string
QString format_timestamp(s64 time, const QString& fmt = "yyyy-MM-dd HH:mm:ss");
static inline Qt::ColorScheme color_scheme() static inline Qt::ColorScheme color_scheme()
{ {
// use the QGuiApplication's properties to report the default GUI color scheme // use the QGuiApplication's properties to report the default GUI color scheme

View file

@ -32,17 +32,6 @@
LOG_CHANNEL(gui_log, "GUI"); LOG_CHANNEL(gui_log, "GUI");
namespace
{
// Helper converters
QString FormatTimestamp(s64 time)
{
QDateTime dateTime;
dateTime.setSecsSinceEpoch(time);
return dateTime.toString("yyyy-MM-dd HH:mm:ss");
}
}
enum SaveColumns enum SaveColumns
{ {
Icon = 0, Icon = 0,
@ -376,7 +365,7 @@ void save_manager_dialog::UpdateList()
titleItem->setFlags(titleItem->flags() & ~Qt::ItemIsEditable); titleItem->setFlags(titleItem->flags() & ~Qt::ItemIsEditable);
m_list->setItem(i, SaveColumns::Name, titleItem); m_list->setItem(i, SaveColumns::Name, titleItem);
custom_table_widget_item* timeItem = new custom_table_widget_item(FormatTimestamp(entry.mtime)); custom_table_widget_item* timeItem = new custom_table_widget_item(gui::utils::format_timestamp(entry.mtime));
timeItem->setFlags(timeItem->flags() & ~Qt::ItemIsEditable); timeItem->setFlags(timeItem->flags() & ~Qt::ItemIsEditable);
m_list->setItem(i, SaveColumns::Time, timeItem); m_list->setItem(i, SaveColumns::Time, timeItem);
@ -683,7 +672,7 @@ void save_manager_dialog::UpdateDetails()
m_details_title->setText(QString::fromStdString(save.title)); m_details_title->setText(QString::fromStdString(save.title));
m_details_subtitle->setText(QString::fromStdString(save.subtitle)); m_details_subtitle->setText(QString::fromStdString(save.subtitle));
m_details_modified->setText(tr("Last modified: %1").arg(FormatTimestamp(save.mtime))); m_details_modified->setText(tr("Last modified: %1").arg(gui::utils::format_timestamp(save.mtime)));
m_details_details->setText(tr("Details:\n").append(QString::fromStdString(save.details))); m_details_details->setText(tr("Details:\n").append(QString::fromStdString(save.details)));
QString note = tr("Note:\n"); QString note = tr("Note:\n");
const QString dir_name = QString::fromStdString(save.dirName); const QString dir_name = QString::fromStdString(save.dirName);

View file

@ -676,14 +676,12 @@ void savestate_manager_dialog::PopulateSavestateTable()
m_savestate_table->setRowCount(static_cast<int>(savestates.size())); m_savestate_table->setRowCount(static_cast<int>(savestates.size()));
m_savestate_table->setSortingEnabled(false); // Disable sorting before using setItem calls m_savestate_table->setSortingEnabled(false); // Disable sorting before using setItem calls
const QLocale locale{};
for (int i = 0; i < static_cast<int>(savestates.size()); i++) for (int i = 0; i < static_cast<int>(savestates.size()); i++)
{ {
const savestate_data& savestate = savestates[i]; const savestate_data& savestate = savestates[i];
m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::name), new custom_table_widget_item(savestate.name)); m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::name), new custom_table_widget_item(savestate.name));
m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::compatible), new custom_table_widget_item(savestate.is_compatible ? tr("Compatible") : tr("Not compatible"), Qt::UserRole, savestate.is_compatible)); m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::compatible), new custom_table_widget_item(savestate.is_compatible ? tr("Compatible") : tr("Not compatible"), Qt::UserRole, savestate.is_compatible));
m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::date), new custom_table_widget_item(savestate.date.toString(), Qt::UserRole, savestate.date)); m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::date), new custom_table_widget_item(gui::utils::format_datetime(savestate.date), Qt::UserRole, savestate.date));
m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::path), new custom_table_widget_item(savestate.path)); m_savestate_table->setItem(i, static_cast<int>(gui::savestate_list_columns::path), new custom_table_widget_item(savestate.path));
} }

View file

@ -925,7 +925,7 @@ void trophy_manager_dialog::ShowTrophyTableContextMenu(const QPoint& pos)
} }
if (QTableWidgetItem* date_item = m_trophy_table->item(row, static_cast<int>(gui::trophy_list_columns::time_unlocked))) if (QTableWidgetItem* date_item = m_trophy_table->item(row, static_cast<int>(gui::trophy_list_columns::time_unlocked)))
{ {
date_item->setText(tick ? QLocale().toString(TickToDateTime(tick), gui::persistent::last_played_date_with_time_of_day_format) : tr("Unknown")); date_item->setText(tick ? gui::utils::format_datetime(TickToDateTime(tick), gui::persistent::last_played_date_with_time_of_day_format) : tr("Unknown"));
date_item->setData(Qt::UserRole, QVariant::fromValue<qulonglong>(tick)); date_item->setData(Qt::UserRole, QVariant::fromValue<qulonglong>(tick));
} }
}); });
@ -1129,8 +1129,6 @@ void trophy_manager_dialog::PopulateTrophyTable()
QPixmap placeholder(m_icon_height, m_icon_height); QPixmap placeholder(m_icon_height, m_icon_height);
placeholder.fill(Qt::transparent); placeholder.fill(Qt::transparent);
const QLocale locale{};
std::shared_ptr<rXmlNode> trophy_base = data->trop_config.GetRoot(); std::shared_ptr<rXmlNode> trophy_base = data->trop_config.GetRoot();
if (!trophy_base) if (!trophy_base)
{ {
@ -1189,7 +1187,7 @@ void trophy_manager_dialog::PopulateTrophyTable()
// Get timestamp // Get timestamp
const u64 tick = data->trop_usr->GetTrophyTimestamp(trophy_id); const u64 tick = data->trop_usr->GetTrophyTimestamp(trophy_id);
const QString datetime = tick ? locale.toString(TickToDateTime(tick), gui::persistent::last_played_date_with_time_of_day_format) : tr("Unknown"); const QString datetime = tick ? gui::utils::format_datetime(TickToDateTime(tick), gui::persistent::last_played_date_with_time_of_day_format) : tr("Unknown");
const QString unlockstate = data->trop_usr->GetTrophyUnlockState(trophy_id) ? tr("Earned") : tr("Not Earned"); const QString unlockstate = data->trop_usr->GetTrophyUnlockState(trophy_id) ? tr("Earned") : tr("Not Earned");