diff --git a/src/blackcore/application.cpp b/src/blackcore/application.cpp index f976171c3..ecc6f1d9a 100644 --- a/src/blackcore/application.cpp +++ b/src/blackcore/application.cpp @@ -102,7 +102,8 @@ namespace BlackCore CApplication::CApplication(const QString &applicationName, CApplicationInfo::Application application, bool init) : m_accessManager(new QNetworkAccessManager(this)), - m_application(application), m_cookieManager( {}, this), m_applicationName(applicationName), m_coreFacadeConfig(CCoreFacadeConfig::allEmpty()) + m_applicationInfo(application, QCoreApplication::applicationDirPath(), CBuildConfig::getVersionString(), CProcessInfo::currentProcess()), + m_cookieManager( {}, this), m_applicationName(applicationName), m_coreFacadeConfig(CCoreFacadeConfig::allEmpty()) { Q_ASSERT_X(!sApp, Q_FUNC_INFO, "already initialized"); Q_ASSERT_X(QCoreApplication::instance(), Q_FUNC_INFO, "no application object"); @@ -266,21 +267,7 @@ namespace BlackCore m_singleApplication = singleApplication; } - CApplicationInfo::Application CApplication::getSwiftApplication() const - { - if (m_application != CApplicationInfo::Unknown) { return m_application; } - // if not set, guess - BLACK_VERIFY_X(false, Q_FUNC_INFO, "Missing application"); - const QString a(QCoreApplication::instance()->applicationName().toLower()); - if (a.contains("core")) { return CApplicationInfo::PilotClientCore; } - if (a.contains("launcher")) { return CApplicationInfo::Laucher; } - if (a.contains("gui")) { return CApplicationInfo::PilotClientGui; } - if (a.contains("test")) { return CApplicationInfo::UnitTest; } - if (a.contains("sample")) { return CApplicationInfo::Sample; } - if (a.contains("data") || a.contains("mapping")) { return CApplicationInfo::MappingTool; } - return CApplicationInfo::Unknown; - } QString CApplication::getExecutableForApplication(CApplicationInfo::Application application) const { diff --git a/src/blackcore/application.h b/src/blackcore/application.h index f92836eca..397b7df54 100644 --- a/src/blackcore/application.h +++ b/src/blackcore/application.h @@ -136,7 +136,7 @@ namespace BlackCore void setSingleApplication(bool singleApplication); //! swift application running - BlackMisc::CApplicationInfo::Application getSwiftApplication() const; + BlackMisc::CApplicationInfo::Application getSwiftApplication() const { return m_applicationInfo.application(); } //! Executable names for the given applications QString getExecutableForApplication(BlackMisc::CApplicationInfo::Application application) const; @@ -590,7 +590,7 @@ namespace BlackCore std::function requestOrPostMethod); QNetworkAccessManager *m_accessManager = nullptr; //!< single network access manager - BlackMisc::CApplicationInfo::Application m_application = BlackMisc::CApplicationInfo::Unknown; //!< Application if specified + BlackMisc::CApplicationInfo m_applicationInfo; //!< Application if specified QScopedPointer m_coreFacade; //!< core facade if any QScopedPointer m_setupReader; //!< setup reader QScopedPointer m_webDataServices; //!< web data services diff --git a/src/blackmisc/applicationinfo.cpp b/src/blackmisc/applicationinfo.cpp index 4586c23d9..54d914732 100644 --- a/src/blackmisc/applicationinfo.cpp +++ b/src/blackmisc/applicationinfo.cpp @@ -17,10 +17,15 @@ namespace BlackMisc CApplicationInfo::CApplicationInfo(Application app, const QString &exePath, const QString &version, const CProcessInfo &process) : m_app(app), - m_exePath(exePath), + m_exePath(exePath.isEmpty() ? QCoreApplication::applicationDirPath() : exePath), m_version(version), m_process(process) - {} + { + if (app == CApplicationInfo::Unknown) + { + m_app = guessApplication(); + } + } bool CApplicationInfo::isSampleOrUnitTest() const { @@ -62,4 +67,16 @@ namespace BlackMisc static const QString s("swift core"); return s; } + + CApplicationInfo::Application CApplicationInfo::guessApplication() + { + const QString a(QCoreApplication::instance()->applicationName().toLower()); + if (a.contains("test")) { return CApplicationInfo::UnitTest; } // names like testcore + if (a.contains("sample")) { return CApplicationInfo::Sample; } + if (a.contains("core")) { return CApplicationInfo::PilotClientCore; } + if (a.contains("launcher")) { return CApplicationInfo::Laucher; } + if (a.contains("gui")) { return CApplicationInfo::PilotClientGui; } + if (a.contains("data") || a.contains("mapping")) { return CApplicationInfo::MappingTool; } + return CApplicationInfo::Unknown; + } } diff --git a/src/blackmisc/applicationinfo.h b/src/blackmisc/applicationinfo.h index 722903c5f..22349680c 100644 --- a/src/blackmisc/applicationinfo.h +++ b/src/blackmisc/applicationinfo.h @@ -93,6 +93,8 @@ namespace BlackMisc QString m_version; CProcessInfo m_process; + static Application guessApplication(); + BLACK_METACLASS( CApplicationInfo, BLACK_METAMEMBER(app), diff --git a/tests/blackcore/main.cpp b/tests/blackcore/main.cpp index 0715dbc68..0af96b61b 100644 --- a/tests/blackcore/main.cpp +++ b/tests/blackcore/main.cpp @@ -19,6 +19,7 @@ #include #include +using namespace BlackMisc; using namespace BlackCore; using namespace BlackCoreTest; @@ -27,7 +28,7 @@ int main(int argc, char *argv[]) { QCoreApplication qa(argc, argv); Q_UNUSED(qa); - CApplication a; + CApplication a(CApplicationInfo::UnitTest); a.addVatlibOptions(); const bool setup = a.parseAndSynchronizeSetup(); if (!setup) { qWarning() << "No setup loaded"; }