Qt: use Localized::GetVerboseTimeByMs

This commit is contained in:
Megamouse 2020-03-22 16:15:14 +01:00
parent 425e032a62
commit 13e166084d
5 changed files with 87 additions and 89 deletions

View file

@ -386,80 +386,6 @@ QString game_list_frame::GetLastPlayedBySerial(const QString& serial)
return m_persistent_settings->GetLastPlayed(serial);
}
QString game_list_frame::GetPlayTimeByMs(int elapsed_ms)
{
if (elapsed_ms <= 0)
{
return "";
}
const qint64 elapsed_seconds = (elapsed_ms / 1000) + ((elapsed_ms % 1000) > 0 ? 1 : 0);
const qint64 hours_played = elapsed_seconds / 3600;
const qint64 minutes_played = (elapsed_seconds % 3600) / 60;
const qint64 seconds_played = (elapsed_seconds % 3600) % 60;
// For anyone who was wondering why there need to be so many cases:
// 1. Using variables won't work for future localization due to varying sentence structure in different languages.
// 2. The provided Qt functionality only works if localization is already enabled
// 3. The provided Qt functionality only works for single variables
if (hours_played <= 0)
{
if (minutes_played <= 0)
{
if (seconds_played == 1)
{
return tr("%0 second").arg(seconds_played);
}
return tr("%0 seconds").arg(seconds_played);
}
if (seconds_played <= 0)
{
if (minutes_played == 1)
{
return tr("%0 minute").arg(minutes_played);
}
return tr("%0 minutes").arg(minutes_played);
}
if (minutes_played == 1 && seconds_played == 1)
{
return tr("%0 minute and %1 second").arg(minutes_played).arg(seconds_played);
}
if (minutes_played == 1)
{
return tr("%0 minute and %1 seconds").arg(minutes_played).arg(seconds_played);
}
if (seconds_played == 1)
{
return tr("%0 minutes and %1 second").arg(minutes_played).arg(seconds_played);
}
return tr("%0 minutes and %1 seconds").arg(minutes_played).arg(seconds_played);
}
if (minutes_played <= 0)
{
if (hours_played == 1)
{
return tr("%0 hour").arg(hours_played);
}
return tr("%0 hours").arg(hours_played);
}
if (hours_played == 1 && minutes_played == 1)
{
return tr("%0 hour and %1 minute").arg(hours_played).arg(minutes_played);
}
if (hours_played == 1)
{
return tr("%0 hour and %1 minutes").arg(hours_played).arg(minutes_played);
}
if (minutes_played == 1)
{
return tr("%0 hours and %1 minute").arg(hours_played).arg(minutes_played);
}
return tr("%0 hours and %1 minutes").arg(hours_played).arg(minutes_played);
}
std::string game_list_frame::GetCacheDirBySerial(const std::string& serial)
{
return fs::get_cache_dir() + "cache/" + serial;
@ -2098,7 +2024,7 @@ void game_list_frame::PopulateGameList()
m_game_list->setItem(row, gui::column_sound, new custom_table_widget_item(GetStringFromU32(game->info.sound_format, localized.sound.format, true)));
m_game_list->setItem(row, gui::column_parental, new custom_table_widget_item(GetStringFromU32(game->info.parental_lvl, localized.parental.level), Qt::UserRole, game->info.parental_lvl));
m_game_list->setItem(row, gui::column_last_play, new custom_table_widget_item(locale.toString(last_played, gui::persistent::last_played_date_format_new), Qt::UserRole, last_played));
m_game_list->setItem(row, gui::column_playtime, new custom_table_widget_item(GetPlayTimeByMs(elapsed_ms), Qt::UserRole, elapsed_ms));
m_game_list->setItem(row, gui::column_playtime, new custom_table_widget_item(localized.GetVerboseTimeByMs(elapsed_ms), Qt::UserRole, elapsed_ms));
m_game_list->setItem(row, gui::column_compat, compat_item);
if (selected_item == game->info.icon_path)