legacyapplication.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #include "legacyapplication.h"
  2. #include <QLockFile>
  3. #include <QMessageBox>
  4. #include <QResource>
  5. #include <QFontDatabase>
  6. #include <QMessageLogContext>
  7. #include <QTextStream>
  8. void logMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
  9. {
  10. QString message_type;
  11. switch (type) {
  12. case QtDebugMsg:
  13. message_type = "[DEBG]";
  14. break;
  15. case QtInfoMsg:
  16. message_type = "[INFO]";
  17. break;
  18. case QtWarningMsg:
  19. message_type = "[WARN]";
  20. break;
  21. case QtCriticalMsg:
  22. message_type = "[CRIT]";
  23. break;
  24. case QtFatalMsg:
  25. message_type = "[FATL]";
  26. break;
  27. default:
  28. message_type = "[UNKN]";
  29. break;
  30. }
  31. QString filename = context.category;
  32. QString function = context.function;
  33. QString line_number = QString::number(context.line);
  34. QString s = QString("%1: %2\n")
  35. .arg(message_type)
  36. .arg(msg);
  37. QFile log_file("legacy_v2.log");
  38. log_file.open(QIODevice::ReadWrite | QIODevice::Append);
  39. QTextStream stream(&log_file);
  40. stream << s;
  41. log_file.close();
  42. fprintf(stderr, "%s", qUtf8Printable(s));
  43. fflush(stderr);
  44. }
  45. LegacyApplication::LegacyApplication(int &argc, char **argv)
  46. : QApplication(argc, argv)
  47. , lotro_dat_manager(nullptr)
  48. , lotro_dat_manager_thread(nullptr)
  49. , patch_list(nullptr)
  50. , gui(nullptr)
  51. {
  52. qInstallMessageHandler(logMessageHandler);
  53. }
  54. bool LegacyApplication::init()
  55. {
  56. qDebug() << "Starting initialisation...";
  57. QCoreApplication::setOrganizationName("LotroLegacy");
  58. QCoreApplication::setOrganizationDomain("translate.lotros.ru");
  59. QCoreApplication::setApplicationName("Legacy_v2");
  60. QSettings::setDefaultFormat(QSettings::IniFormat);
  61. QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, QApplication::applicationDirPath());
  62. QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope, QApplication::applicationDirPath());
  63. qDebug() << "Checking if there's another instance of Legacy";
  64. QLockFile lockFile(QDir::temp().absoluteFilePath("rulotro.lock"));
  65. if(!lockFile.tryLock(1)){
  66. qDebug() << "Lock file already exists! Some other application is already running...";
  67. QMessageBox msgBox;
  68. msgBox.setIcon(QMessageBox::Warning);
  69. msgBox.setText("Приложение уже запущено.\nРазрешено запускать только один экземпляр приложения.");
  70. msgBox.exec();
  71. return false;
  72. }
  73. qDebug() << "Initialising fonts and resources";
  74. QDir::setCurrent(QApplication::applicationDirPath());
  75. if (!FileSystem::folderExists("backup")) {
  76. QDir dir;
  77. dir.mkdir("backup");
  78. }
  79. QResource::registerResource(QApplication::applicationDirPath() + "/data01.gtr");
  80. QResource::registerResource(QApplication::applicationDirPath() + "/data02.gtr");
  81. QFontDatabase::addApplicationFont(":/fonts/trpro.ttf");
  82. QFontDatabase::addApplicationFont(":/fonts/CrimsonText.ttf");
  83. QFontDatabase::addApplicationFont(":/fonts/EBGaramond.ttf");
  84. QFontDatabase::addApplicationFont(":/fonts/aniron.ttf");
  85. qDebug() << "Starting Lotro Manager initialization...";
  86. lotro_dat_manager = new LotroDatManager();
  87. lotro_dat_manager_thread = new QThread();
  88. connect(lotro_dat_manager_thread, &QThread::finished, lotro_dat_manager, &LotroDatManager::deleteLater);
  89. lotro_dat_manager->moveToThread(lotro_dat_manager_thread);
  90. lotro_dat_manager_thread->start();
  91. qDebug() << "Starting Patch list initialisation...";
  92. patch_list = new PatchList(lotro_dat_manager);
  93. qDebug() << "Starting GUI initialisation...";
  94. gui = new MainWindow(patch_list);
  95. qDebug() << "Legacy Initialization finished!";
  96. patch_list->startAutoUpdate();
  97. patch_list->initialize();
  98. return true;
  99. }