mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-02-18 04:45:39 +00:00
Use boost::posix_time::ptime internally for times and dates.
This commit is contained in:
parent
7bd34ec62a
commit
7db0100edd
|
@ -74,9 +74,8 @@ void GameData::incTimesPlayed()
|
||||||
|
|
||||||
void GameData::lastPlayedNow()
|
void GameData::lastPlayedNow()
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
boost::posix_time::ptime time = boost::posix_time::second_clock::universal_time();
|
||||||
ss << std::time(nullptr);
|
metadata()->setTime("lastplayed", time);
|
||||||
metadata()->set("lastplayed", ss.str());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaDataList* GameData::metadata()
|
MetaDataList* GameData::metadata()
|
||||||
|
|
|
@ -76,6 +76,11 @@ void MetaDataList::set(const std::string& key, const std::string& value)
|
||||||
mMap[key] = value;
|
mMap[key] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MetaDataList::setTime(const std::string& key, const boost::posix_time::ptime& time)
|
||||||
|
{
|
||||||
|
mMap[key] = boost::posix_time::to_iso_string(time);
|
||||||
|
}
|
||||||
|
|
||||||
const std::string& MetaDataList::get(const std::string& key) const
|
const std::string& MetaDataList::get(const std::string& key) const
|
||||||
{
|
{
|
||||||
return mMap.at(key);
|
return mMap.at(key);
|
||||||
|
@ -91,9 +96,9 @@ float MetaDataList::getFloat(const std::string& key) const
|
||||||
return (float)atof(get(key).c_str());
|
return (float)atof(get(key).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::time_t MetaDataList::getTime(const std::string& key) const
|
boost::posix_time::ptime MetaDataList::getTime(const std::string& key) const
|
||||||
{
|
{
|
||||||
return (std::time_t) atoi(get(key).c_str());
|
return string_to_ptime(get(key), "%Y%m%dT%H%M%S%F%q");
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiComponent* MetaDataList::makeDisplay(Window* window, MetaDataType as)
|
GuiComponent* MetaDataList::makeDisplay(Window* window, MetaDataType as)
|
||||||
|
@ -133,3 +138,14 @@ GuiComponent* MetaDataList::makeEditor(Window* window, MetaDataType as)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//util function
|
||||||
|
boost::posix_time::ptime string_to_ptime(const std::string& str, const std::string& fmt)
|
||||||
|
{
|
||||||
|
std::istringstream ss(str);
|
||||||
|
ss.imbue(std::locale(std::locale::classic(), new boost::posix_time::time_input_facet(fmt))); //std::locale handles deleting the facet
|
||||||
|
boost::posix_time::ptime time;
|
||||||
|
ss >> time;
|
||||||
|
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "GuiComponent.h"
|
#include "GuiComponent.h"
|
||||||
#include <ctime>
|
#include <boost/date_time.hpp>
|
||||||
|
|
||||||
enum MetaDataType
|
enum MetaDataType
|
||||||
{
|
{
|
||||||
|
@ -25,9 +25,11 @@ struct MetaDataDecl
|
||||||
std::string key;
|
std::string key;
|
||||||
MetaDataType type;
|
MetaDataType type;
|
||||||
std::string defaultValue;
|
std::string defaultValue;
|
||||||
bool isStatistic;
|
bool isStatistic; //if true, ignore scraper values for this metadata
|
||||||
};
|
};
|
||||||
|
|
||||||
|
boost::posix_time::ptime string_to_ptime(const std::string& str, const std::string& fmt);
|
||||||
|
|
||||||
class MetaDataList
|
class MetaDataList
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -39,10 +41,12 @@ public:
|
||||||
MetaDataList(const std::vector<MetaDataDecl>& mdd);
|
MetaDataList(const std::vector<MetaDataDecl>& mdd);
|
||||||
|
|
||||||
void set(const std::string& key, const std::string& value);
|
void set(const std::string& key, const std::string& value);
|
||||||
|
void setTime(const std::string& key, const boost::posix_time::ptime& time);
|
||||||
|
|
||||||
const std::string& get(const std::string& key) const;
|
const std::string& get(const std::string& key) const;
|
||||||
int getInt(const std::string& key) const;
|
int getInt(const std::string& key) const;
|
||||||
float getFloat(const std::string& key) const;
|
float getFloat(const std::string& key) const;
|
||||||
std::time_t getTime(const std::string& key) const;
|
boost::posix_time::ptime getTime(const std::string& key) const;
|
||||||
|
|
||||||
static GuiComponent* makeDisplay(Window* window, MetaDataType as);
|
static GuiComponent* makeDisplay(Window* window, MetaDataType as);
|
||||||
static GuiComponent* makeEditor(Window* window, MetaDataType as);
|
static GuiComponent* makeEditor(Window* window, MetaDataType as);
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "../components/AsyncReqComponent.h"
|
#include "../components/AsyncReqComponent.h"
|
||||||
#include "../Log.h"
|
#include "../Log.h"
|
||||||
#include "../pugiXML/pugixml.hpp"
|
#include "../pugiXML/pugixml.hpp"
|
||||||
|
#include "../MetaData.h"
|
||||||
|
|
||||||
std::shared_ptr<HttpReq> GamesDBScraper::makeHttpReq(ScraperSearchParams params)
|
std::shared_ptr<HttpReq> GamesDBScraper::makeHttpReq(ScraperSearchParams params)
|
||||||
{
|
{
|
||||||
|
@ -47,7 +48,10 @@ std::vector<MetaDataList> GamesDBScraper::parseReq(ScraperSearchParams params, s
|
||||||
mdl.push_back(MetaDataList(params.system->getGameMDD()));
|
mdl.push_back(MetaDataList(params.system->getGameMDD()));
|
||||||
mdl.back().set("name", game.child("GameTitle").text().get());
|
mdl.back().set("name", game.child("GameTitle").text().get());
|
||||||
mdl.back().set("desc", game.child("Overview").text().get());
|
mdl.back().set("desc", game.child("Overview").text().get());
|
||||||
mdl.back().set("releasedate", game.child("ReleaseDate").text().get());
|
|
||||||
|
boost::posix_time::ptime rd = string_to_ptime(game.child("ReleaseDate").text().get(), "%m/%d/%Y");
|
||||||
|
mdl.back().setTime("releasedate", rd);
|
||||||
|
|
||||||
pugi::xml_node images = game.child("Images");
|
pugi::xml_node images = game.child("Images");
|
||||||
|
|
||||||
if(images)
|
if(images)
|
||||||
|
|
Loading…
Reference in a new issue