123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #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() {
- }
- 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);
- connect(this, &LegacyApplication::SecondsToNextTryToInitChanged, gui, &MainWindow::onSecondsToNextTryToInitChanged);
- qDebug() << "Starting functional modules initialisation...";
- InitModules();
- return true;
- }
- void LegacyApplication::InitModules()
- {
- if (seconds_after_previous_try_to_init_ + 1 < try_to_init_timeout_) {
- seconds_after_previous_try_to_init_++;
- emit SecondsToNextTryToInitChanged(try_to_init_timeout_ - seconds_after_previous_try_to_init_);
- return;
- }
- modules_init_timer_.stop();
- seconds_after_previous_try_to_init_ = 0;
- AppErrorStatus status = CheckAppPrerequesities();
- emit ErrorStatusChanged(status);
- if (status == E_NO_ERRORS) {
- connect(&PatchDownloader::instance(), &PatchDownloader::finished, &PatchInstaller::instance(), &PatchInstaller::startPatchInstallationChain, Qt::QueuedConnection);
- QMetaObject::invokeMethod(&PatchInstaller::instance(), &PatchInstaller::init, Qt::BlockingQueuedConnection);
- QMetaObject::invokeMethod(&PatchDownloader::instance(), &PatchDownloader::init, Qt::BlockingQueuedConnection);
- QMetaObject::invokeMethod(&PatchDownloader::instance(), &PatchDownloader::startPatchDownloaderChain, Qt::QueuedConnection);
- } else {
- qWarning() << "LegacyApplication: Couldnt init functional modules!";
- modules_init_timer_.start();
- }
- }
|