statuswidget.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #include "statuswidget.h"
  2. #include "ui_statuswidget.h"
  3. #include "widgets/mainwindow.h"
  4. #include "models/patchdownloader.h"
  5. #include "models/lotrodatmanager.h"
  6. #include <QDesktopServices>
  7. #include <QUrl>
  8. #include <QDebug>
  9. #include <QMessageBox>
  10. StatusWidget::StatusWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent) :
  11. QWidget(parent), patch_updater(patch_downloader), lotro_manager(lotro_dat_manager), app_settings(settings),
  12. ui(new Ui::StatusWidget)
  13. {
  14. ui->setupUi(this);
  15. connect(ui->announcements_list, &NewsListWidget::newsUpdated, this, &StatusWidget::invokeUpdateFontSize);
  16. connect(ui->server_status_flag, &StatusFlagWidget::flagIdChanged, this, &StatusWidget::changeCentralWidget);
  17. ui->status_widget->hide();
  18. connect(patch_updater, &PatchDownloader::downloadStarted, this, &StatusWidget::onPatchDownloaderStarted, Qt::QueuedConnection);
  19. connect(patch_updater, &PatchDownloader::progressChanged, this, &StatusWidget::onPatchDownloaderProgressChanged, Qt::QueuedConnection);
  20. connect(patch_updater, &PatchDownloader::downloadCompleted, this, &StatusWidget::onPatchDownloaderFinished, Qt::QueuedConnection);
  21. ui->bottom_widget->hide();
  22. ui->tooltip->hide();
  23. connect(ui->weekly_code, &WeeklyCodeWidget::mouseEntered, this, &StatusWidget::showTooltip);
  24. connect(ui->weekly_code, &WeeklyCodeWidget::mouseLeaved, this, &StatusWidget::hideTooltip);
  25. connect(ui->server_status_flag, &StatusFlagWidget::mouseEntered, this, &StatusWidget::showTooltip);
  26. connect(ui->server_status_flag, &StatusFlagWidget::mouseLeaved, this, &StatusWidget::hideTooltip);
  27. connect(ui->announcements_list, &NewsListWidget::mouseEntered, this, &StatusWidget::showTooltip);
  28. connect(ui->announcements_list, &NewsListWidget::mouseLeaved, this, &StatusWidget::hideTooltip);
  29. }
  30. StatusWidget::~StatusWidget()
  31. {
  32. delete ui;
  33. }
  34. void StatusWidget::showTooltip(QString text)
  35. {
  36. ui->tooltip->updateText(text);
  37. ui->tooltip->show();
  38. }
  39. void StatusWidget::hideTooltip()
  40. {
  41. ui->tooltip->hide();
  42. }
  43. void StatusWidget::onPatchDownloaderStarted()
  44. {
  45. qDebug() << "Status widget received DownloadStarted signal!";
  46. ui->bottom_widget->show();
  47. ui->process_label->setText("Загрузка обновлений патчей...");
  48. ui->progressBar->setValue(0);
  49. }
  50. void StatusWidget::onPatchDownloaderFinished()
  51. {
  52. ui->process_label->setText("Загрузка обновлений патчей завершена...");
  53. ui->progressBar->setValue(100);
  54. ui->bottom_widget->hide();
  55. }
  56. void StatusWidget::onPatchDownloaderProgressChanged(quint64 bytesDownloaded, quint64 bytesTotal, QString download_speed_formatted, QString elapsed_time_formatted)
  57. {
  58. ui->bottom_widget->show();
  59. ui->process_label->setText("Загрузка " + download_speed_formatted + ". Загружено "
  60. + Downloader::getSizeFormatted(bytesDownloaded) + " из " + Downloader::getSizeFormatted(bytesTotal)
  61. + " (" + QString::number(bytesDownloaded * 100 / bytesTotal) + "%) ");
  62. //+ "\nОставшееся время: " + elapsed_time_formatted);
  63. ui->progressBar->setValue(bytesDownloaded * 100 / bytesTotal + 5);
  64. }
  65. void StatusWidget::changeCentralWidget()
  66. {
  67. if (ui->announcements_widget->isHidden()) {
  68. ui->announcements_widget->show();
  69. ui->status_widget->hide();
  70. } else {
  71. ui->announcements_widget->hide();
  72. ui->status_widget->show();
  73. }
  74. }
  75. void StatusWidget::invokeUpdateFontSize()
  76. {
  77. MainWindow* window = qobject_cast<MainWindow*>(parentWidget()->parentWidget()->parentWidget());
  78. window->changeFontSizeRecursive(100, this);
  79. }
  80. void StatusWidget::on_site_link_button_clicked()
  81. {
  82. QDesktopServices::openUrl(QUrl("http://translate.lotros.ru/"));
  83. }
  84. void StatusWidget::on_forum_link_button_clicked()
  85. {
  86. QDesktopServices::openUrl(QUrl("http://lotros.ru/"));
  87. }
  88. void StatusWidget::on_guides_link_button_clicked()
  89. {
  90. QDesktopServices::openUrl(QUrl("http://translate.lotros.ru/guides"));
  91. }
  92. void StatusWidget::on_addons_link_button_clicked()
  93. {
  94. QDesktopServices::openUrl(QUrl("http://translate.lotros.ru/mathoms"));
  95. }
  96. void StatusWidget::on_bugreport_link_button_clicked()
  97. {
  98. QDesktopServices::openUrl(QUrl("http://translate.lotros.ru/bugs/add"));
  99. }
  100. void StatusWidget::on_donate_link_button_clicked()
  101. {
  102. QDesktopServices::openUrl(QUrl("http://translate.lotros.ru/donate"));
  103. }
  104. void StatusWidget::on_game_button_clicked()
  105. {
  106. MainWindow* window = qobject_cast<MainWindow*>(parentWidget()->parentWidget()->parentWidget());
  107. window->showChooseVersionDialog();
  108. }