utils.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * This file contains minor utility functions
  3. */
  4. #ifndef UTILS_H
  5. #define UTILS_H
  6. #include <QNetworkAccessManager>
  7. #include <QNetworkReply>
  8. #include <QEventLoop>
  9. #include <QFile>
  10. #include <QTimer>
  11. #include <QLockFile>
  12. #include <QDir>
  13. #include <QMessageBox>
  14. bool checkInternetConnection(QUrl url) {
  15. QNetworkAccessManager nam;
  16. QNetworkRequest req(url);
  17. QNetworkReply* reply = nam.get(req);
  18. QEventLoop loop;
  19. QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
  20. QTimer request_timeout_timer;
  21. QObject::connect(&request_timeout_timer, &QTimer::timeout, &loop, &QEventLoop::quit);
  22. request_timeout_timer.start(5000); // 5 seconds connection timeout
  23. loop.exec();
  24. return reply->bytesAvailable();
  25. }
  26. void logMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
  27. {
  28. QString message_type;
  29. switch (type) {
  30. case QtDebugMsg:
  31. message_type = "[DEBG]";
  32. break;
  33. case QtInfoMsg:
  34. message_type = "[INFO]";
  35. break;
  36. case QtWarningMsg:
  37. message_type = "[WARN]";
  38. break;
  39. case QtCriticalMsg:
  40. message_type = "[CRIT]";
  41. break;
  42. case QtFatalMsg:
  43. message_type = "[FATL]";
  44. break;
  45. default:
  46. message_type = "[UNKN]";
  47. break;
  48. }
  49. QString filename = context.category;
  50. QString function = context.function;
  51. QString line_number = QString::number(context.line);
  52. QString s = QString("%1: %2 ||| %3:%4 %5\n")
  53. .arg(message_type)
  54. .arg(msg)
  55. .arg(filename)
  56. .arg(line_number)
  57. .arg(function);
  58. #ifdef QT_DEBUG
  59. QFile log_file("legacy_v2.log");
  60. log_file.open(QIODevice::ReadWrite | QIODevice::Append);
  61. QTextStream stream(&log_file);
  62. stream << s;
  63. log_file.close();
  64. #endif
  65. fprintf(stderr, "%s", qUtf8Printable(s));
  66. fflush(stderr);
  67. }
  68. bool checkSingleAppInstance() {
  69. QLockFile lockFile(QDir::temp().absoluteFilePath("rulotro.lock"));
  70. if(!lockFile.tryLock(1)){
  71. qDebug() << "Lock file already exists! Some other application is already running...";
  72. QMessageBox msgBox;
  73. msgBox.setIcon(QMessageBox::Warning);
  74. msgBox.setText("Приложение уже запущено.\nРазрешено запускать только один экземпляр приложения.");
  75. msgBox.exec();
  76. return false;
  77. }
  78. return true;
  79. }
  80. #endif // UTILS_H