diff --git a/src/app/main.cpp b/src/app/main.cpp index e5862b2c..2ab3cd10 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -56,7 +56,10 @@ int main(int argc, char *argv[]) setupApp(argc, argv); init(); - std::shared_ptr app = Application::create( version ); + std::shared_ptr app = Application::create(version); + + std::shared_ptr checker = LicenseChecker::getInstance(); + checker->setApp(app.get()); if (commandLineParser.startedWithLicense()) { @@ -64,8 +67,13 @@ int main(int argc, char *argv[]) return 0; } + if (!checker->isCurrentLicenseValid()) // this works because the user cannot enter a license string while running the app in headless more. + { + LOG_WARNING("Your current Coati license seems to be invalid. Please update your license info."); + return 0; + } + commandLineParser.projectLoad(); - // todo: set app of license checker. return qtApp.exec(); } else @@ -82,11 +90,10 @@ int main(int argc, char *argv[]) QtViewFactory viewFactory; QtNetworkFactory networkFactory; - std::shared_ptr checker = LicenseChecker::getInstance(); - utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".otf"); std::shared_ptr app = Application::create(version, &viewFactory, &networkFactory); + std::shared_ptr checker = LicenseChecker::getInstance(); checker->setApp(app.get()); commandLineParser.projectLoad(); diff --git a/src/lib/LicenseChecker.cpp b/src/lib/LicenseChecker.cpp index a14f030e..86bfba48 100644 --- a/src/lib/LicenseChecker.cpp +++ b/src/lib/LicenseChecker.cpp @@ -33,42 +33,7 @@ void LicenseChecker::setApp(Application* app) m_app = app; } -LicenseChecker::LicenseChecker() - : m_app(nullptr) - , m_forcedLicenseEntering(false) -{ -} - -void LicenseChecker::handleMessage(MessageDispatchWhenLicenseValid* message) -{ - if (m_app != nullptr && !checkLicenseString()) - { - m_pendingMessage = message->content; - - if (!m_forcedLicenseEntering) - { - m_app->forceEnterLicense(); - m_forcedLicenseEntering = true; - } - } - else - { - message->content->dispatch(); - } -} - -void LicenseChecker::handleMessage(MessageEnteredLicense* message) -{ - m_forcedLicenseEntering = false; - - if (m_pendingMessage) - { - m_pendingMessage->dispatch(); - m_pendingMessage.reset(); - } -} - -bool LicenseChecker::checkLicenseString() +bool LicenseChecker::isCurrentLicenseValid() { MessageStatus("preparing...", false, true).dispatch(); @@ -114,4 +79,39 @@ bool LicenseChecker::checkLicenseString() return valid; } +LicenseChecker::LicenseChecker() + : m_app(nullptr) + , m_forcedLicenseEntering(false) +{ +} + +void LicenseChecker::handleMessage(MessageDispatchWhenLicenseValid* message) +{ + if (m_app != nullptr && !isCurrentLicenseValid()) + { + m_pendingMessage = message->content; + + if (!m_forcedLicenseEntering) + { + m_app->forceEnterLicense(); + m_forcedLicenseEntering = true; + } + } + else + { + message->content->dispatch(); + } +} + +void LicenseChecker::handleMessage(MessageEnteredLicense* message) +{ + m_forcedLicenseEntering = false; + + if (m_pendingMessage) + { + m_pendingMessage->dispatch(); + m_pendingMessage.reset(); + } +} + std::shared_ptr LicenseChecker::s_instance; diff --git a/src/lib/LicenseChecker.h b/src/lib/LicenseChecker.h index b7c4a2db..9c93fb5d 100644 --- a/src/lib/LicenseChecker.h +++ b/src/lib/LicenseChecker.h @@ -19,6 +19,8 @@ public: void setApp(Application* app); + bool isCurrentLicenseValid(); + private: LicenseChecker(); LicenseChecker(const LicenseChecker&) = delete; @@ -26,7 +28,6 @@ private: void handleMessage(MessageDispatchWhenLicenseValid* message); void handleMessage(MessageEnteredLicense* message); - bool checkLicenseString(); static std::shared_ptr s_instance;