Ref T199, some more details (members) in info

This commit is contained in:
Klaus Basan
2017-12-25 13:06:56 +01:00
parent 81ae6464ad
commit 60b90d6582
2 changed files with 67 additions and 8 deletions

View File

@@ -9,17 +9,23 @@
//! \file //! \file
#include "blackconfig/buildconfig.h"
#include "blackmisc/applicationinfo.h" #include "blackmisc/applicationinfo.h"
using namespace BlackConfig;
namespace BlackMisc namespace BlackMisc
{ {
CApplicationInfo::CApplicationInfo() {} CApplicationInfo::CApplicationInfo() {}
CApplicationInfo::CApplicationInfo(Application app, const QString &exePath, const QString &version, const CProcessInfo &process) : CApplicationInfo::CApplicationInfo(Application app) :
m_app(app), m_app(app),
m_exePath(exePath.isEmpty() ? QCoreApplication::applicationDirPath() : exePath), m_wordSize(CBuildConfig::buildWordSize()),
m_version(version), m_exePath(QCoreApplication::applicationDirPath()),
m_process(process) m_version(CBuildConfig::getVersionString()),
m_compileInfo(CBuildConfig::compiledWithInfo()),
m_platform(CBuildConfig::getPlatformString()),
m_process(CProcessInfo::currentProcess())
{ {
if (app == CApplicationInfo::Unknown) if (app == CApplicationInfo::Unknown)
{ {
@@ -39,6 +45,11 @@ namespace BlackMisc
return a == CApplicationInfo::UnitTest; return a == CApplicationInfo::UnitTest;
} }
bool CApplicationInfo::isNull() const
{
return this->application() == Unknown && m_exePath.isNull();
}
QString CApplicationInfo::convertToQString(bool i18n) const QString CApplicationInfo::convertToQString(bool i18n) const
{ {
return QString("{ %1, %2, %3, %4 }").arg(QString::number(m_app), m_exePath, m_version, m_process.convertToQString(i18n)); return QString("{ %1, %2, %3, %4 }").arg(QString::number(m_app), m_exePath, m_version, m_process.convertToQString(i18n));
@@ -68,6 +79,18 @@ namespace BlackMisc
return s; return s;
} }
const CApplicationInfo &CApplicationInfo::autoInfo()
{
static const CApplicationInfo info(CApplicationInfo::Unknown);
return info;
}
const QString &CApplicationInfo::fileName()
{
static const QString fn("appinfo.json");
return fn;
}
CApplicationInfo::Application CApplicationInfo::guessApplication() CApplicationInfo::Application CApplicationInfo::guessApplication()
{ {
const QString a(QCoreApplication::instance()->applicationName().toLower()); const QString a(QCoreApplication::instance()->applicationName().toLower());

View File

@@ -20,6 +20,9 @@ namespace BlackMisc
{ {
/*! /*!
* Description of a swift application. * Description of a swift application.
*
* This is basically a CValueObject compliant version of CBuildConfig combined with CProcessInfo
* so we can store the information as JSON and transfer them via DBus.
*/ */
class BLACKMISC_EXPORT CApplicationInfo : public CValueObject<CApplicationInfo> class BLACKMISC_EXPORT CApplicationInfo : public CValueObject<CApplicationInfo>
{ {
@@ -40,7 +43,7 @@ namespace BlackMisc
CApplicationInfo(); CApplicationInfo();
//! Constructor. //! Constructor.
CApplicationInfo(Application app, const QString &exePath, const QString &version, const CProcessInfo &process); CApplicationInfo(Application app);
//! Set application. //! Set application.
void setApplication(Application app) { m_app = static_cast<int>(app); } void setApplication(Application app) { m_app = static_cast<int>(app); }
@@ -52,19 +55,37 @@ namespace BlackMisc
void setExecutablePath(const QString &exePath) { m_exePath = exePath; } void setExecutablePath(const QString &exePath) { m_exePath = exePath; }
//! Get executable path. //! Get executable path.
const QString &executablePath() const { return m_exePath; } const QString &getExecutablePath() const { return m_exePath; }
//! Set version string. //! Set version string.
void setVersionString(const QString &version) { m_version = version; } void setVersionString(const QString &version) { m_version = version; }
//! Get version string. //! Get version string.
const QString &versionString() const { return m_version; } const QString &getVersionString() const { return m_version; }
//! Set process info. //! Set process info.
void setProcessInfo(const CProcessInfo &process) { m_process = process; } void setProcessInfo(const CProcessInfo &process) { m_process = process; }
//! Get process info. //! Get process info.
const CProcessInfo &processInfo() const { return m_process; } const CProcessInfo &getProcessInfo() const { return m_process; }
//! Set platform.
void setPlatformInfo(const QString &platform) { m_platform = platform; }
//! Get platform.
const QString &getPlatform() const { return m_platform; }
//! Word size
int getWordSize() const { return m_wordSize; }
//! Word size
void setWordSize(int size) { m_wordSize = size; }
//! Compile info
const QString &getCompileInfo() const { return m_compileInfo; }
//! Compile info
void setCompileInfo(const QString &info) { m_compileInfo = info; }
//! Sample or unit test //! Sample or unit test
bool isSampleOrUnitTest() const; bool isSampleOrUnitTest() const;
@@ -72,6 +93,9 @@ namespace BlackMisc
//! Unit test //! Unit test
bool isUnitTest() const; bool isUnitTest() const;
//! Null object
bool isNull() const;
//! \copydoc BlackMisc::Mixin::String::toQString //! \copydoc BlackMisc::Mixin::String::toQString
QString convertToQString(bool i18n = false) const; QString convertToQString(bool i18n = false) const;
@@ -87,10 +111,19 @@ namespace BlackMisc
//! Name of swift core //! Name of swift core
static const QString &swiftCore(); static const QString &swiftCore();
//! Info automatically initalized
static const CApplicationInfo &autoInfo();
//! File name of the application info file
static const QString &fileName();
private: private:
int m_app = static_cast<int>(Unknown); int m_app = static_cast<int>(Unknown);
int m_wordSize;
QString m_exePath; QString m_exePath;
QString m_version; QString m_version;
QString m_compileInfo;
QString m_platform;
CProcessInfo m_process; CProcessInfo m_process;
static Application guessApplication(); static Application guessApplication();
@@ -98,8 +131,11 @@ namespace BlackMisc
BLACK_METACLASS( BLACK_METACLASS(
CApplicationInfo, CApplicationInfo,
BLACK_METAMEMBER(app), BLACK_METAMEMBER(app),
BLACK_METAMEMBER(wordSize),
BLACK_METAMEMBER(exePath), BLACK_METAMEMBER(exePath),
BLACK_METAMEMBER(version), BLACK_METAMEMBER(version),
BLACK_METAMEMBER(compileInfo),
BLACK_METAMEMBER(platform),
BLACK_METAMEMBER(process) BLACK_METAMEMBER(process)
); );
}; };