GH-1217 add simple instance play time tracking

Not reliable in the face of crashes... but what is?
This commit is contained in:
Petr Mrázek
2015-09-22 01:06:45 +02:00
parent b107617112
commit 9ba1cd15e7
13 changed files with 103 additions and 51 deletions

View File

@ -445,16 +445,12 @@ QString LegacyInstance::defaultCustomBaseJar() const
return PathCombine(binDir(), "mcbackup.jar");
}
QString LegacyInstance::getStatusbarDescription()
{
if (flags() & VersionBrokenFlag)
{
return tr("Legacy : %1 (broken)").arg(intendedVersionId());
}
return tr("Legacy : %1").arg(intendedVersionId());
}
QString LegacyInstance::lwjglFolder() const
{
return m_lwjglFolderSetting->get().toString();
}
QString LegacyInstance::typeName() const
{
return tr("Legacy");
}

View File

@ -120,7 +120,7 @@ public:
virtual void cleanupAfterRun() override;
virtual QString getStatusbarDescription() override;
virtual QString typeName() const;
protected:
mutable std::shared_ptr<ModList> jar_mod_list;

View File

@ -305,4 +305,46 @@ QString MinecraftInstance::getLogFileRoot()
return minecraftRoot();
}
QString MinecraftInstance::prettifyTimeDuration(int64_t duration)
{
int seconds = (int) (duration % 60);
duration /= 60;
int minutes = (int) (duration % 60);
duration /= 60;
int hours = (int) (duration % 24);
int days = (int) (duration / 24);
if((hours == 0)&&(days == 0))
{
return tr("%1m %2s").arg(minutes).arg(seconds);
}
if (days == 0)
{
return tr("%1h %2m").arg(hours).arg(minutes);
}
return tr("%1d %2h %3m").arg(days).arg(hours).arg(minutes);
}
QString MinecraftInstance::getStatusbarDescription()
{
QStringList traits;
if (flags() & VersionBrokenFlag)
{
traits.append(tr("broken"));
}
QString description;
description.append(tr("Minecraft %1 (%2)").arg(intendedVersionId()).arg(typeName()));
if(totalTimePlayed() > 0)
{
description.append(tr(", played for %1").arg(prettifyTimeDuration(totalTimePlayed())));
}
/*
if(traits.size())
{
description.append(QString(" (%1)").arg(traits.join(", ")));
}
*/
return description;
}
#include "MinecraftInstance.moc"

View File

@ -55,8 +55,12 @@ public:
virtual QString getLogFileRoot() override;
virtual QString getStatusbarDescription() override;
protected:
QMap<QString, QString> createCensorFilterFromSession(AuthSessionPtr session);
private:
QString prettifyTimeDuration(int64_t duration);
};
typedef std::shared_ptr<MinecraftInstance> MinecraftInstancePtr;

View File

@ -476,24 +476,6 @@ std::shared_ptr<MinecraftProfile> OneSixInstance::getMinecraftProfile() const
return m_version;
}
QString OneSixInstance::getStatusbarDescription()
{
QStringList traits;
if (flags() & VersionBrokenFlag)
{
traits.append(tr("broken"));
}
if (traits.size())
{
return tr("Minecraft %1 (%2)").arg(intendedVersionId()).arg(traits.join(", "));
}
else
{
return tr("Minecraft %1").arg(intendedVersionId());
}
}
QDir OneSixInstance::librariesPath() const
{
return QDir::current().absoluteFilePath("libraries");
@ -590,3 +572,8 @@ std::shared_ptr<OneSixInstance> OneSixInstance::getSharedPtr()
{
return std::dynamic_pointer_cast<OneSixInstance>(BaseInstance::getSharedPtr());
}
QString OneSixInstance::typeName() const
{
return tr("OneSix");
}

View File

@ -79,8 +79,6 @@ public:
/// get the current full version info
std::shared_ptr<MinecraftProfile> getMinecraftProfile() const;
virtual QString getStatusbarDescription() override;
virtual QDir jarmodsPath() const;
virtual QDir librariesPath() const;
virtual QDir versionsPath() const;
@ -92,6 +90,8 @@ public:
std::shared_ptr<OneSixInstance> getSharedPtr();
virtual QString typeName() const;
signals:
void versionReloaded();