1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #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());
- 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();
- }
|