/*! * * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. * \copyright \n * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n * IN PART OR IN WHOLE, \n * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n * * \file main.cpp * \date 2019/09/30 * \author Behrouz NematiPour * */ /*! * \mainpage UI Software Design Description * \section Detailed Description * This document has been generated by Doxygen.\n * This document describes the detail description of the UI Application Software design.\n * UI Application starts by Application Initialization which happens in \ref main.cpp "Initialization section".\n */ // Qt #include #include #include #include #include #include // Project #include "maintimer.h" #include "caninterface.h" #include "frameinterface.h" #include "messagedispatcher.h" #include "applicationcontroller.h" #include "guicontroller.h" #include "logger.h" #include "usbwatcher.h" #ifdef UNIT_TEST #include TEST_CLASS_INCLUDE QTEST_MAIN(TEST_CLASS_NAME) #else /*! \brief Application Initialization\n * Some part of the application need to be initialized out of any thread. * So is initialized here to be initialized in the main thread. * this section also includes: */ int main(int argc, char *argv[]) { //! - Qt Application initialization and parameters settings // Qt Core Application parameters settings QApplication::setApplicationName(QLatin1String("Denali")); QApplication::setOrganizationName(QLatin1String("Diality Inc.")); //! - Check the required font(s) present and can be loaded QApplication::setFont(QFont("Barlow")); // Qt Core Application Initialization QApplication app(argc, argv); app.thread()->setObjectName("Main Thread"); // Test code for debugging can messages bool _consoleoutFrameInterface = false; bool _consoleoutCanInterface = false; QStringList args = app.arguments(); if (args.length() >= 2) { _consoleoutFrameInterface = args[1] == "1"; } if (args.length() >= 3) { _consoleoutCanInterface = args[2] == "1"; } //! - Setting the application version regarding the Bamboo build number. QString ver_revis = QString("%1").arg(VER_REVIS); if (ver_revis.isEmpty()) { ver_revis = QString("%1").arg(VER_DEVEL); } QCoreApplication::setApplicationVersion(QString("%1.%2.%3") .arg(VER_MAJOR) .arg(VER_MINOR) .arg(ver_revis)); //! - Translation initialization QTranslator translator; bool trLoaded = translator.load(QLocale(), app.applicationName(), QLatin1String("_"), QLatin1String(":/translations")); if (trLoaded) { app.installTranslator(&translator); } //! - Initializing Logger _Logger.init(); LOG_EVENT(QObject::tr("Application Started")); //! - Initializing USB Watcher _USBWatcher.init(); //! - Initializing Main Timer _MainTimer->init(); //! - Initializing CanBus Interface _CanInterface->init(); _CanInterface->enableConsoleOut(_consoleoutCanInterface); //! - Initializing CanBus Message Handler _FrameInterface->init(); //! - Initializing CanBus Message Dispatcher _MessageDispatcher->init(); _MessageDispatcher->enableConsoleOut(_consoleoutFrameInterface); //! - Initializing Application Controller _ApplicationController->init(); QObject::connect(&app, &QApplication::aboutToQuit, []() { emit _ApplicationController->quit(); }); QObject::connect(_ApplicationController, &ApplicationController::quit, &app, [](int retcode) { _CanInterface->quit(); QCoreApplication::exit(retcode); qDebug() << QObject::tr("Application Terminated: %1").arg(retcode); }, Qt::QueuedConnection); ////! - Initializing GUI Controller _GuiController->init(); //! - Initialize the Qml Viewer and starts GUI startGui(); int app_exec = app.exec(); return app_exec; } #endif