serverstatuswidget.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "serverstatuswidget.h"
  2. #include "ui_serverstatuswidget.h"
  3. #include <QDebug>
  4. #include "constants.h"
  5. ServerStatusWidget::ServerStatusWidget(QWidget *parent) :
  6. QWidget(parent),
  7. ui(new Ui::ServerStatusWidget)
  8. {
  9. ui->setupUi(this);
  10. downloader.targetBytearray = &downloaded_data;
  11. downloader.setUrl(QUrl("http://translate.lotros.ru/servers.txt"));
  12. connect(&update_timer, &QTimer::timeout, &downloader, &Downloader::start);
  13. connect(&downloader, &Downloader::downloadFinished, this, &ServerStatusWidget::updateStatus, Qt::QueuedConnection);
  14. emit downloader.start();
  15. update_timer.setInterval(1000 * 60); // 1 minute;
  16. update_timer.start();
  17. }
  18. ServerStatusWidget::~ServerStatusWidget()
  19. {
  20. delete ui;
  21. }
  22. void ServerStatusWidget::updateFontsSizes()
  23. {
  24. QFont font9pt = QFont(ui->anor->font());
  25. font9pt.setPixelSize(pixels_in_9_pt);
  26. QStringList servers_list = {"Anor",
  27. "Arkenstone",
  28. "Belegaer",
  29. "Brandywine",
  30. "Bullroarer",
  31. "Crickhollow",
  32. "Evernight",
  33. "Gladden",
  34. "Gwaihir",
  35. "Ithil",
  36. "Landroval",
  37. "Laurelin",
  38. "Sirannon"};
  39. foreach (QString server_name, servers_list) {
  40. QLabel* label = ui->servers_list->findChild<QLabel*>(server_name.toLower());
  41. label->setFont(font9pt);
  42. }
  43. }
  44. void ServerStatusWidget::resizeEvent(QResizeEvent *event)
  45. {
  46. updateFontsSizes();
  47. }
  48. void ServerStatusWidget::updateStatus()
  49. {
  50. QStringList servers = QString(downloaded_data).split("|||");
  51. foreach (QString server, servers) {
  52. QStringList data = server.split(":::");
  53. QWidget* widget = findChild<QWidget*>(QString(data[0]).toLower());
  54. if (!widget)
  55. continue;
  56. if (data.size() > 1 && data[1] == "on")
  57. widget->setStyleSheet(open_color);
  58. else
  59. widget->setStyleSheet(closed_color);
  60. }
  61. downloaded_data = "";
  62. }