diff --git a/chatterino.pro b/chatterino.pro index a6c29eebd..5bd39fa21 100644 --- a/chatterino.pro +++ b/chatterino.pro @@ -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 \ diff --git a/src/common/Version.cpp b/src/common/Version.cpp new file mode 100644 index 000000000..e6a47ef38 --- /dev/null +++ b/src/common/Version.cpp @@ -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 diff --git a/src/common/Version.hpp b/src/common/Version.hpp index b97a70a54..dd3baa9fa 100644 --- a/src/common/Version.hpp +++ b/src/common/Version.hpp @@ -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_; +}; + +};