From abad7f27905b83f36abaed6a1a386cbe47225b65 Mon Sep 17 00:00:00 2001 From: Elad <18193363+elad335@users.noreply.github.com> Date: Mon, 20 Oct 2025 16:19:37 +0300 Subject: [PATCH] SaveState Manager: Format specially close dates --- rpcs3/rpcs3qt/qt_utils.cpp | 17 +++++++++++++++-- rpcs3/rpcs3qt/qt_utils.h | 2 +- rpcs3/rpcs3qt/savestate_manager_dialog.cpp | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/rpcs3/rpcs3qt/qt_utils.cpp b/rpcs3/rpcs3qt/qt_utils.cpp index 5ac9e0207e..fa5e3c250e 100644 --- a/rpcs3/rpcs3qt/qt_utils.cpp +++ b/rpcs3/rpcs3qt/qt_utils.cpp @@ -664,9 +664,22 @@ namespace gui return dateTime; } - QString format_datetime(const QDateTime& date, const QString& fmt) + QString format_datetime(const QDateTime& date, const QString& fmt, bool is_relative, const QString& fmt_relative) { - return date.toString(fmt); + const qint64 exctrated_date = date.date().toJulianDay(); + const qint64 current_date = QDate::currentDate().toJulianDay(); + + if (!is_relative || exctrated_date > current_date || current_date - exctrated_date >= 3) + { + return date.toString(fmt); + } + + if (current_date == exctrated_date) + { + return QString("Today %1").arg(date.toString(fmt_relative)); + } + + return QString("%1 days ago %2").arg(current_date - exctrated_date).arg(date.toString(fmt_relative)); } QString format_timestamp(s64 time, const QString& fmt) diff --git a/rpcs3/rpcs3qt/qt_utils.h b/rpcs3/rpcs3qt/qt_utils.h index 443148c4ff..dc15385923 100644 --- a/rpcs3/rpcs3qt/qt_utils.h +++ b/rpcs3/rpcs3qt/qt_utils.h @@ -161,7 +161,7 @@ namespace gui 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"); + QString format_datetime(const QDateTime& date, const QString& fmt = "yyyy-MM-dd HH:mm:ss", bool is_relative = false, const QString& fmt_relative = "HH:mm:ss"); // Convert a timestamp to a readable string QString format_timestamp(s64 time, const QString& fmt = "yyyy-MM-dd HH:mm:ss"); diff --git a/rpcs3/rpcs3qt/savestate_manager_dialog.cpp b/rpcs3/rpcs3qt/savestate_manager_dialog.cpp index 46b99c34b0..381debab01 100644 --- a/rpcs3/rpcs3qt/savestate_manager_dialog.cpp +++ b/rpcs3/rpcs3qt/savestate_manager_dialog.cpp @@ -686,7 +686,7 @@ void savestate_manager_dialog::PopulateSavestateTable() const savestate_data& savestate = savestates[i]; m_savestate_table->setItem(i, static_cast(gui::savestate_list_columns::name), new custom_table_widget_item(savestate.name)); m_savestate_table->setItem(i, static_cast(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(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(gui::savestate_list_columns::date), new custom_table_widget_item(gui::utils::format_datetime(savestate.date, "yyyy-MM-dd HH:mm", true, "HH:mm"), Qt::UserRole, savestate.date)); m_savestate_table->setItem(i, static_cast(gui::savestate_list_columns::path), new custom_table_widget_item(savestate.path)); }