From 9f04458bbd327b769733931a1aa07869b598ce49 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Thu, 30 Jul 2020 14:21:20 +0200 Subject: [PATCH] Launching a game inside a folder now also updates the folder's last played timestamp. --- es-app/src/FileData.cpp | 9 +++++++++ es-app/src/MetaData.cpp | 3 ++- es-app/src/views/gamelist/DetailedGameListView.cpp | 4 ++-- es-app/src/views/gamelist/GridGameListView.cpp | 4 ++-- es-app/src/views/gamelist/VideoGameListView.cpp | 4 ++-- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/es-app/src/FileData.cpp b/es-app/src/FileData.cpp index 01b014b08..dcec9e426 100644 --- a/es-app/src/FileData.cpp +++ b/es-app/src/FileData.cpp @@ -720,6 +720,15 @@ void FileData::launchGame(Window* window) // Update last played time. gameToUpdate->metadata.set("lastplayed", Utils::Time::DateTime(Utils::Time::now())); + + // If the parent is a folder and it's not the root of the system, then update its lastplayed + // timestamp to the same time as the game that was just launched. + if (gameToUpdate->getParent()->getType() == FOLDER && gameToUpdate->getParent()->getName() != + gameToUpdate->getSystem()->getFullName()) { + gameToUpdate->getParent()->metadata.set("lastplayed", + gameToUpdate->metadata.get("lastplayed")); + } + CollectionSystemManager::get()->refreshCollectionSystems(gameToUpdate); gameToUpdate->mSystem->onMetaDataSavePoint(); diff --git a/es-app/src/MetaData.cpp b/es-app/src/MetaData.cpp index 56d99e0d7..347540de5 100644 --- a/es-app/src/MetaData.cpp +++ b/es-app/src/MetaData.cpp @@ -45,7 +45,8 @@ MetaDataDecl folderDecls[] = { {"publisher", MD_STRING, "unknown", false, "publisher", "enter game publisher", true}, {"genre", MD_STRING, "unknown", false, "genre", "enter game genre", true}, {"players", MD_INT, "unknown", false, "players", "enter number of players", true}, -{"hidden", MD_BOOL, "false", false, "hidden", "enter hidden off/on", false} +{"hidden", MD_BOOL, "false", false, "hidden", "enter hidden off/on", false}, +{"lastplayed", MD_TIME, "0", true, "last played", "enter last played date", false} }; const std::vector folderMDD(folderDecls, folderDecls + sizeof(folderDecls) / sizeof(folderDecls[0])); diff --git a/es-app/src/views/gamelist/DetailedGameListView.cpp b/es-app/src/views/gamelist/DetailedGameListView.cpp index dcc155e21..c1d67fe36 100644 --- a/es-app/src/views/gamelist/DetailedGameListView.cpp +++ b/es-app/src/views/gamelist/DetailedGameListView.cpp @@ -259,8 +259,8 @@ void DetailedGameListView::updateInfoPanel() mLastPlayed.setValue(file->metadata.get("lastplayed")); mPlayCount.setValue(file->metadata.get("playcount")); } - else { - mLastPlayed.setValue(""); + else if (file->getType() == FOLDER) { + mLastPlayed.setValue(file->metadata.get("lastplayed")); mPlayCount.setValue(""); } diff --git a/es-app/src/views/gamelist/GridGameListView.cpp b/es-app/src/views/gamelist/GridGameListView.cpp index 588ee6f65..45f090961 100644 --- a/es-app/src/views/gamelist/GridGameListView.cpp +++ b/es-app/src/views/gamelist/GridGameListView.cpp @@ -387,8 +387,8 @@ void GridGameListView::updateInfoPanel() mLastPlayed.setValue(file->metadata.get("lastplayed")); mPlayCount.setValue(file->metadata.get("playcount")); } - else { - mLastPlayed.setValue(""); + else if (file->getType() == FOLDER) { + mLastPlayed.setValue(file->metadata.get("lastplayed")); mPlayCount.setValue(""); } diff --git a/es-app/src/views/gamelist/VideoGameListView.cpp b/es-app/src/views/gamelist/VideoGameListView.cpp index 18693c9cc..32e253017 100644 --- a/es-app/src/views/gamelist/VideoGameListView.cpp +++ b/es-app/src/views/gamelist/VideoGameListView.cpp @@ -303,8 +303,8 @@ void VideoGameListView::updateInfoPanel() mLastPlayed.setValue(file->metadata.get("lastplayed")); mPlayCount.setValue(file->metadata.get("playcount")); } - else { - mLastPlayed.setValue(""); + else if (file->getType() == FOLDER) { + mLastPlayed.setValue(file->metadata.get("lastplayed")); mPlayCount.setValue(""); }