main.cpp 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "app.h"
  2. #include <QApplication>
  3. #include <QFile>
  4. #include <QTextCodec>
  5. #include <QLockFile>
  6. #include <QtGlobal>
  7. #include <QtGlobal>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <QThread>
  11. #include <QtConcurrent/QtConcurrentRun>
  12. void myMessageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg)
  13. {
  14. QByteArray localMsg = msg.toUtf8();
  15. const char * format = "[" + QDate::currentDate().toString(Qt::ISODate).toUtf8() + " " + QTime::currentTime().toString(Qt::ISODate).toUtf8() + "]";
  16. switch (type) {
  17. case QtDebugMsg:
  18. fprintf(stderr, "%s DEB: %s\n", format, localMsg.constData());
  19. break;
  20. case QtInfoMsg:
  21. fprintf(stderr, "%s INF: %s\n", format, localMsg.constData());
  22. break;
  23. case QtWarningMsg:
  24. fprintf(stderr, "%s WAR: %s\n", format, localMsg.constData());
  25. break;
  26. case QtCriticalMsg:
  27. fprintf(stderr, "%s CRT: %s\n", format, localMsg.constData());
  28. break;
  29. case QtFatalMsg:
  30. fprintf(stderr, "%s FAT: %s\n", format, localMsg.constData());
  31. abort();
  32. }
  33. }
  34. int main(int argc, char *argv[]){
  35. //if (argc <= 1 || (argc > 1 && std::string(argv[1]) != std::string("-S") && std::string(argv[1]) != "-prelaunched"))
  36. // return 0;
  37. freopen("log.txt", "w", stdout);
  38. freopen("log.txt", "w", stderr);
  39. // if it's later than 25.02.2018 - return. That's for temporary version
  40. long long cur_time = time(0);
  41. if (cur_time >= 1523331670)
  42. return 0;
  43. setbuf(stdout, NULL);
  44. setbuf(stderr, NULL);
  45. setvbuf (stdout, NULL, _IONBF, BUFSIZ);
  46. setvbuf (stderr, NULL, _IONBF, BUFSIZ);/**/
  47. qInstallMessageHandler(myMessageOutput);// вывод логов в файл
  48. QApplication a(argc, argv);
  49. QLockFile lockFile(QDir::temp().absoluteFilePath("rulotro.lock"));
  50. if(!lockFile.tryLock(100)){
  51. QMessageBox msgBox;
  52. msgBox.setIcon(QMessageBox::Warning);
  53. msgBox.setText("Приложение уже запущено.\nРазрешено запускать только один экземпляр приложения.");
  54. msgBox.exec();
  55. return 1;
  56. }
  57. MainWindow w;
  58. App *app = &App::getInstance();
  59. app->logSectionStart("Начинаем работать");
  60. QFile styleF;
  61. QString skin = app->helper->getSkinName();
  62. styleF.setFileName(app->app_folder + "styles/" + skin + "/style.css");
  63. styleF.open(QFile::ReadOnly);
  64. QString qssStr = styleF.readAll();
  65. qApp->setStyleSheet(qssStr);
  66. w.show();
  67. //QFuture<void> future = QtConcurrent::run(w, &MainWindow::doStartPreparations);
  68. auto result = a.exec();
  69. lockFile.unlock();
  70. return result;
  71. }