#include "serverstatuswidget.h" #include "ui_serverstatuswidget.h" #include #include "constants.h" ServerStatusWidget::ServerStatusWidget(QWidget *parent) : QWidget(parent), ui(new Ui::ServerStatusWidget) { ui->setupUi(this); downloader.targetBytearray = &downloaded_data; downloader.setUrl(QUrl("http://translate.lotros.ru/servers.txt")); connect(&update_timer, &QTimer::timeout, &downloader, &Downloader::start); connect(&downloader, &Downloader::downloadFinished, this, &ServerStatusWidget::updateStatus, Qt::QueuedConnection); emit downloader.start(); update_timer.setInterval(1000 * 60); // 1 minute; update_timer.start(); } ServerStatusWidget::~ServerStatusWidget() { delete ui; } void ServerStatusWidget::updateFontsSizes() { QFont font9pt = QFont(ui->anor->font()); font9pt.setPixelSize(pixels_in_9_pt); QStringList servers_list = {"Anor", "Arkenstone", "Belegaer", "Brandywine", "Bullroarer", "Crickhollow", "Evernight", "Gladden", "Gwaihir", "Ithil", "Landroval", "Laurelin", "Sirannon"}; foreach (QString server_name, servers_list) { QLabel* label = ui->servers_list->findChild(server_name.toLower()); label->setFont(font9pt); } } void ServerStatusWidget::resizeEvent(QResizeEvent *event) { updateFontsSizes(); } void ServerStatusWidget::updateStatus() { QStringList servers = QString(downloaded_data).split("|||"); foreach (QString server, servers) { QStringList data = server.split(":::"); QWidget* widget = findChild(QString(data[0]).toLower()); if (!widget) continue; if (data.size() > 1 && data[1] == "on") widget->setStyleSheet(open_color); else widget->setStyleSheet(closed_color); } downloaded_data = ""; }