123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #include "legacyapplication.h"
- #include <QLockFile>
- #include <QDir>
- #include <QMessageBox>
- #include <QResource>
- #include <QFontDatabase>
- #include <QMessageLogContext>
- #include <QApplication>
- #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());
- if (!FileSystem::folderExists("backup")) {
- QDir dir;
- dir.mkdir("backup");
- }
- 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();
- // connect(this, &LegacyApplication::ErrorStatusChanged, gui, &MainWindow::onErrorStatusChanged);
- 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);
- 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();
- }
- }
|