From d1c2c96c31a0879c684e75962df4844b1667d110 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Mon, 17 Oct 2016 21:31:06 +0100 Subject: [PATCH] refs #777 Added classes CApplicationInfo and CApplicationInfoList. --- src/blackmisc/applicationinfo.cpp | 30 ++++++++ src/blackmisc/applicationinfo.h | 105 ++++++++++++++++++++++++++ src/blackmisc/applicationinfolist.cpp | 19 +++++ src/blackmisc/applicationinfolist.h | 43 +++++++++++ src/blackmisc/registermetadata.cpp | 4 + 5 files changed, 201 insertions(+) create mode 100644 src/blackmisc/applicationinfo.cpp create mode 100644 src/blackmisc/applicationinfo.h create mode 100644 src/blackmisc/applicationinfolist.cpp create mode 100644 src/blackmisc/applicationinfolist.h diff --git a/src/blackmisc/applicationinfo.cpp b/src/blackmisc/applicationinfo.cpp new file mode 100644 index 000000000..99ddd19f5 --- /dev/null +++ b/src/blackmisc/applicationinfo.cpp @@ -0,0 +1,30 @@ +/* Copyright (C) 2016 +* swift project Community / Contributors +* +* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level +* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, +* including this file, may be copied, modified, propagated, or distributed except according to the terms +* contained in the LICENSE file. +*/ + +//! \file + +#include "blackmisc/applicationinfo.h" + +namespace BlackMisc +{ + CApplicationInfo::CApplicationInfo() = default; + + CApplicationInfo::CApplicationInfo(Application app, ApplicationMode mode, const QString &exePath, const QString &version, const CProcessInfo &process) : + m_app(app), + m_mode(mode), + m_exePath(exePath), + m_version(version), + m_process(process) + {} + + QString CApplicationInfo::convertToQString(bool i18n) const + { + return QString("{ %1, %2, %3, %4, %5 }").arg(QString::number(m_app), QString::number(m_mode), m_exePath, m_version, m_process.convertToQString(i18n)); + } +} diff --git a/src/blackmisc/applicationinfo.h b/src/blackmisc/applicationinfo.h new file mode 100644 index 000000000..ecfae2eb6 --- /dev/null +++ b/src/blackmisc/applicationinfo.h @@ -0,0 +1,105 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKMISC_APPLICATIONINFO_H +#define BLACKMISC_APPLICATIONINFO_H + +#include "blackmisc/processinfo.h" +#include +#include + +namespace BlackMisc +{ + /*! + * Description of a swift application. + */ + class BLACKMISC_EXPORT CApplicationInfo : public CValueObject + { + public: + //! Enumeration of application roles + enum Application + { + Unknown, + Laucher, + PilotClientCore, + PilotClientGui, + MappingTool, + UnitTest + }; + + //! Flags describing application modes + enum ApplicationModeFlag + { + Developer = 1 << 0, + BetaTest = 1 << 1 + }; + Q_DECLARE_FLAGS(ApplicationMode, ApplicationModeFlag) + + //! Default constructor. + CApplicationInfo(); + + //! Constructor. + CApplicationInfo(Application app, ApplicationMode mode, const QString &exePath, const QString &version, const CProcessInfo &process); + + //! Set application. + void setApplication(Application app) { m_app = static_cast(app); } + + //! Get application. + Application application() const { return static_cast(m_app); } + + //! Set application mode. + void setApplicationMode(ApplicationMode mode) { m_mode = static_cast(mode); } + + //! Get application mode. + ApplicationMode applicationMode() const { return static_cast(m_mode); } + + //! Set executable path. + void setExecutablePath(const QString &exePath) { m_exePath = exePath; } + + //! Get executable path. + const QString &executablePath() const { return m_exePath; } + + //! Set version string. + void setVersionString(const QString &version) { m_version = version; } + + //! Get version string. + const QString &versionString() const { return m_version; } + + //! Set process info. + void setProcessInfo(const CProcessInfo &process) { m_process = process; } + + //! Get process info. + const CProcessInfo &processInfo() const { return m_process; } + + //! \copydoc BlackMisc::Mixin::String::toQString + QString convertToQString(bool i18n = false) const; + + private: + int m_app = static_cast(Unknown); + int m_mode = 0; + QString m_exePath; + QString m_version; + CProcessInfo m_process; + + BLACK_METACLASS( + CApplicationInfo, + BLACK_METAMEMBER(app), + BLACK_METAMEMBER(mode), + BLACK_METAMEMBER(exePath), + BLACK_METAMEMBER(version), + BLACK_METAMEMBER(process) + ); + }; +} + +Q_DECLARE_METATYPE(BlackMisc::CApplicationInfo) + +#endif diff --git a/src/blackmisc/applicationinfolist.cpp b/src/blackmisc/applicationinfolist.cpp new file mode 100644 index 000000000..6dbb197a8 --- /dev/null +++ b/src/blackmisc/applicationinfolist.cpp @@ -0,0 +1,19 @@ +/* Copyright (C) 2016 +* swift project Community / Contributors +* +* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level +* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, +* including this file, may be copied, modified, propagated, or distributed except according to the terms +* contained in the LICENSE file. +*/ + +//! \file + +#include "blackmisc/applicationinfolist.h" + +namespace BlackMisc +{ + CApplicationInfoList::CApplicationInfoList() = default; + + CApplicationInfoList::CApplicationInfoList(const CSequence &other) : CSequence(other) {} +} diff --git a/src/blackmisc/applicationinfolist.h b/src/blackmisc/applicationinfolist.h new file mode 100644 index 000000000..e2b426398 --- /dev/null +++ b/src/blackmisc/applicationinfolist.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2016 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKMISC_APPLICATIONINFOLIST_H +#define BLACKMISC_APPLICATIONINFOLIST_H + +#include "blackmisc/applicationinfo.h" +#include "blackmisc/sequence.h" +#include "blackmisc/collection.h" + +namespace BlackMisc +{ + /*! + * List of swift application descriptions. + */ + class BLACKMISC_EXPORT CApplicationInfoList : + public CSequence, + public Mixin::MetaType + { + public: + BLACKMISC_DECLARE_USING_MIXIN_METATYPE(CApplicationInfoList) + + //! Default constructor. + CApplicationInfoList(); + + //! Construct from base class object. + CApplicationInfoList(const CSequence &other); + }; +} + +Q_DECLARE_METATYPE(BlackMisc::CApplicationInfoList) +Q_DECLARE_METATYPE(BlackMisc::CSequence) +Q_DECLARE_METATYPE(BlackMisc::CCollection) + +#endif diff --git a/src/blackmisc/registermetadata.cpp b/src/blackmisc/registermetadata.cpp index 374f8d0ab..a47c23620 100644 --- a/src/blackmisc/registermetadata.cpp +++ b/src/blackmisc/registermetadata.cpp @@ -8,6 +8,8 @@ */ #include "registermetadata.h" +#include "blackmisc/applicationinfo.h" +#include "blackmisc/applicationinfolist.h" #include "blackmisc/audio/registermetadataaudio.h" #include "blackmisc/aviation/registermetadataaviation.h" #include "blackmisc/country.h" @@ -60,6 +62,8 @@ namespace BlackMisc { initBlackMiscResourcesImpl(); + CApplicationInfo::registerMetadata(); + CApplicationInfoList::registerMetadata(); CCountry::registerMetadata(); CCountryList::registerMetadata(); CIcon::registerMetadata();