Provide singleton class for version information

This commit is contained in:
Leon Richardt 2019-09-16 18:35:51 +02:00
parent b06918eb47
commit 9c59efb985
3 changed files with 91 additions and 0 deletions

View file

@ -88,6 +88,7 @@ SOURCES += \
src/common/NetworkRequest.cpp \
src/common/NetworkResult.cpp \
src/common/UsernameSet.cpp \
src/common/Version.cpp \
src/controllers/accounts/Account.cpp \
src/controllers/accounts/AccountController.cpp \
src/controllers/accounts/AccountModel.cpp \

67
src/common/Version.cpp Normal file
View file

@ -0,0 +1,67 @@
#include "common/Version.hpp"
#include "common/Modes.hpp"
#define UGLYMACROHACK1(s) #s
#define FROM_EXTERNAL_DEFINE(s) UGLYMACROHACK1(s)
namespace chatterino {
Version::Version()
{
// Version
this->version_ = CHATTERINO_VERSION;
// Commit hash
this->commitHash_ =
QString(FROM_EXTERNAL_DEFINE(CHATTERINO_GIT_HASH)).remove('"');
// Date of build
#ifdef CHATTERINO_NIGHTLY_VERSION_STRING
this->dateOfBuild_ =
QString(FROM_EXTERNAL_DEFINE(CHATTERINO_NIGHTLY_VERSION_STRING))
.remove('"');
#endif
// "Full" version string, as displayed in window title
this->fullVersion_ = "Chatterino ";
if (Modes::getInstance().isNightly)
{
this->fullVersion_ += "Nightly ";
}
this->fullVersion_ += this->version_;
if (Modes::getInstance().isNightly)
{
this->fullVersion_ += this->dateOfBuild_;
}
}
const Version &Version::getInstance()
{
static Version instance;
return instance;
}
const QString &Version::getVersion() const
{
return this->version_;
}
const QString &Version::getFullVersion() const
{
return this->fullVersion_;
}
const QString &Version::getCommitHash() const
{
return this->commitHash_;
}
const QString &Version::getDateOfBuild() const
{
return this->dateOfBuild_;
}
} // namespace chatterino

View file

@ -13,3 +13,26 @@
#else
# define CHATTERINO_OS "unknown"
#endif
namespace chatterino {
class Version
{
public:
static const Version &getInstance();
const QString &getVersion() const;
const QString &getCommitHash() const;
const QString &getDateOfBuild() const;
const QString &getFullVersion() const;
private:
Version();
QString version_;
QString commitHash_;
QString dateOfBuild_;
QString fullVersion_;
};
};