#include "legacyapplication.h" #include #include #include #include #include #include #include #include "utils.h" #include "widgets/mainwindow.h" #include "models/filesystem.h" #include "models/patchdownloader.h" #include "models/patchinstaller.h" extern Q_CORE_EXPORT int qt_ntfs_permission_lookup; LegacyApplication::LegacyApplication() { qInstallMessageHandler(logMessageHandler); modules_init_timer_.setInterval(1 * 1000); // one second. connect(&modules_init_timer_, &QTimer::timeout, this, &LegacyApplication::InitModules); modules_init_timer_.stop(); } LegacyApplication::~LegacyApplication() { // gui will be deleted automatically on close due to Qt::WA_DeleteOnClose attribute patch_managers_thread_->terminate(); patch_managers_thread_->wait(); delete patch_managers_thread_; } bool LegacyApplication::init() { qt_ntfs_permission_lookup++; qDebug() << "Starting initialisation..."; QCoreApplication::setOrganizationName("LotroLegacy"); QCoreApplication::setOrganizationDomain("translate.lotros.ru"); QCoreApplication::setApplicationName("Legacy_v2"); QSettings::setDefaultFormat(QSettings::IniFormat); QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, QApplication::applicationDirPath()); QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope, QApplication::applicationDirPath()); qDebug() << "Checking if there's another instance of Legacy"; if (!checkSingleAppInstance()) { return false; } qDebug() << "Initialising fonts and resources"; QDir::setCurrent(QApplication::applicationDirPath()); QResource::registerResource(QApplication::applicationDirPath() + "/data01.gtr"); QResource::registerResource(QApplication::applicationDirPath() + "/data02.gtr"); QFontDatabase::addApplicationFont(":/fonts/trpro.ttf"); QFontDatabase::addApplicationFont(":/fonts/CrimsonText.ttf"); QFontDatabase::addApplicationFont(":/fonts/EBGaramond.ttf"); QFontDatabase::addApplicationFont(":/fonts/aniron.ttf"); qDebug() << "Starting Patch managers initialization..."; patch_managers_thread_ = new QThread(); PatchDownloader::instance().moveToThread(patch_managers_thread_); PatchInstaller::instance().moveToThread(patch_managers_thread_); patch_managers_thread_->start(); qDebug() << "Starting GUI initialisation..."; gui = new MainWindow(); qDebug() << "Starting functional modules initialisation..."; InitModules(); qDebug() << "Successfully finished the initialization!!!"; return true; } void LegacyApplication::InitModules() { modules_init_timer_.stop(); AppErrorStatus status = CheckAppPrerequesities(); emit ErrorStatusChanged(status); qDebug() << "NEW ERROR STATUS: " << status; if (status == E_NO_ERRORS) { QMetaObject::invokeMethod(&PatchInstaller::instance(), &PatchInstaller::init, Qt::BlockingQueuedConnection); QMetaObject::invokeMethod(&PatchDownloader::instance(), &PatchDownloader::init, Qt::BlockingQueuedConnection); QMetaObject::invokeMethod(&PatchDownloader::instance(), &PatchDownloader::checkForUpdates, Qt::QueuedConnection); } else if (status == E_NO_SERVER_CONNECTION) { qWarning() << "LegacyApplication: Cannot connect to server - restarting in 1 second!"; modules_init_timer_.start(); } } void LegacyApplication::close() { gui->close(); }