diff --git a/doomsday/engine/portable/src/updater.cpp b/doomsday/engine/portable/src/updater.cpp index 68a3625a78..4c537f0eba 100644 --- a/doomsday/engine/portable/src/updater.cpp +++ b/doomsday/engine/portable/src/updater.cpp @@ -572,7 +572,7 @@ void Updater_ShowSettings(void) void Updater_PrintLastUpdated(void) { - UpdaterSettings st; - Con_Message("Latest update check was made on %s.\n", - st.lastCheckTime().asText(de::Time::FriendlyFormat).toAscii().constData()); + de::Time when = UpdaterSettings().lastCheckTime(); + Con_Message("Latest update check was made %s.\n", + UpdaterSettings().lastCheckAgo().toAscii().constData()); } diff --git a/doomsday/engine/portable/src/updater/updatersettings.cpp b/doomsday/engine/portable/src/updater/updatersettings.cpp index 144d584fcd..6ef1e02200 100644 --- a/doomsday/engine/portable/src/updater/updatersettings.cpp +++ b/doomsday/engine/portable/src/updater/updatersettings.cpp @@ -147,3 +147,30 @@ de::String UpdaterSettings::defaultDownloadPath() { return QDesktopServices::storageLocation(QDesktopServices::TempLocation); } + +de::String UpdaterSettings::lastCheckAgo() const +{ + de::Time when = lastCheckTime(); + de::Time::Delta delta = when.since(); + + int t; + if(delta < 60.0) + { + t = delta.asMilliSeconds() / 1000; + return de::String("%1 second%2 ago").arg(t).arg(t != 1? "s" : ""); + } + + t = delta.asMinutes(); + if(t <= 60) + { + return de::String("%1 minute%2 ago").arg(t).arg(t != 1? "s" : ""); + } + + t = delta.asHours(); + if(t <= 24) + { + return de::String("%1 hour%2 ago").arg(t).arg(t != 1? "s" : ""); + } + + return de::String("on " + when.asText(de::Time::FriendlyFormat)); +} diff --git a/doomsday/engine/portable/src/updater/updatersettings.h b/doomsday/engine/portable/src/updater/updatersettings.h index 87f955671f..10a6939671 100644 --- a/doomsday/engine/portable/src/updater/updatersettings.h +++ b/doomsday/engine/portable/src/updater/updatersettings.h @@ -62,6 +62,12 @@ class UpdaterSettings de::String downloadPath() const; de::String pathToDeleteAtStartup() const; + /** + * @return Human-readable description of when the latest update + * check was made. + */ + de::String lastCheckAgo() const; + void setFrequency(Frequency freq); void setChannel(Channel channel); void setLastCheckTime(const de::Time& time); diff --git a/doomsday/engine/portable/src/updater/updatersettingsdialog.cpp b/doomsday/engine/portable/src/updater/updatersettingsdialog.cpp index f84d05c8ca..5824618140 100644 --- a/doomsday/engine/portable/src/updater/updatersettingsdialog.cpp +++ b/doomsday/engine/portable/src/updater/updatersettingsdialog.cpp @@ -113,8 +113,8 @@ struct UpdaterSettingsDialog::Instance { UpdaterSettings st; - lastChecked->setText(tr("Last checked on %1.") - .arg(st.lastCheckTime().asText(de::Time::FriendlyFormat))); + lastChecked->setText(tr("Last checked %1.") + .arg(st.lastCheckAgo())); autoCheck->setChecked(!st.onlyCheckManually()); freqList->setEnabled(!st.onlyCheckManually());