diff options
Diffstat (limited to 'application/widgets/ServerStatus.cpp')
-rw-r--r-- | application/widgets/ServerStatus.cpp | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/application/widgets/ServerStatus.cpp b/application/widgets/ServerStatus.cpp deleted file mode 100644 index 87c34f70..00000000 --- a/application/widgets/ServerStatus.cpp +++ /dev/null @@ -1,179 +0,0 @@ -#include "ServerStatus.h" -#include "LineSeparator.h" -#include "IconLabel.h" -#include "status/StatusChecker.h" -#include <DesktopServices.h> - -#include "MultiMC.h" - -#include <QHBoxLayout> -#include <QFrame> -#include <QLabel> -#include <QMap> -#include <QToolButton> -#include <QAction> - -class ClickableLabel : public QLabel -{ - Q_OBJECT -public: - ClickableLabel(QWidget *parent) : QLabel(parent) - { - setCursor(Qt::PointingHandCursor); - } - - ~ClickableLabel(){}; - -signals: - void clicked(); - -protected: - void mousePressEvent(QMouseEvent *event) - { - emit clicked(); - } -}; - -class ClickableIconLabel : public IconLabel -{ - Q_OBJECT -public: - ClickableIconLabel(QWidget *parent, QIcon icon, QSize size) : IconLabel(parent, icon, size) - { - setCursor(Qt::PointingHandCursor); - } - - ~ClickableIconLabel(){}; - -signals: - void clicked(); - -protected: - void mousePressEvent(QMouseEvent *event) - { - emit clicked(); - } -}; - -ServerStatus::ServerStatus(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) -{ - layout = new QHBoxLayout(this); - layout->setContentsMargins(0, 0, 0, 0); - goodIcon = MMC->getThemedIcon("status-good"); - yellowIcon = MMC->getThemedIcon("status-yellow"); - badIcon = MMC->getThemedIcon("status-bad"); - - addStatus("authserver.mojang.com", tr("Auth")); - addLine(); - addStatus("session.minecraft.net", tr("Session")); - addLine(); - addStatus("textures.minecraft.net", tr("Skins")); - addLine(); - addStatus("api.mojang.com", tr("API")); - - m_statusRefresh = new QToolButton(this); - m_statusRefresh->setCheckable(true); - m_statusRefresh->setToolButtonStyle(Qt::ToolButtonIconOnly); - m_statusRefresh->setIcon(MMC->getThemedIcon("refresh")); - layout->addWidget(m_statusRefresh); - - setLayout(layout); - - // Start status checker - m_statusChecker.reset(new StatusChecker()); - { - auto reloader = m_statusChecker.get(); - connect(reloader, &StatusChecker::statusChanged, this, &ServerStatus::StatusChanged); - connect(reloader, &StatusChecker::statusLoading, this, &ServerStatus::StatusReloading); - connect(m_statusRefresh, &QAbstractButton::clicked, this, &ServerStatus::reloadStatus); - m_statusChecker->startTimer(60000); - reloadStatus(); - } -} - -ServerStatus::~ServerStatus() -{ -} - -void ServerStatus::reloadStatus() -{ - m_statusChecker->reloadStatus(); -} - -void ServerStatus::addLine() -{ - layout->addWidget(new LineSeparator(this, Qt::Vertical)); -} - -void ServerStatus::addStatus(QString key, QString name) -{ - { - auto label = new ClickableIconLabel(this, badIcon, QSize(16, 16)); - label->setToolTip(key); - serverLabels[key] = label; - layout->addWidget(label); - connect(label,SIGNAL(clicked()),SLOT(clicked())); - } - { - auto label = new ClickableLabel(this); - label->setText(name); - label->setToolTip(key); - layout->addWidget(label); - connect(label,SIGNAL(clicked()),SLOT(clicked())); - } -} - -void ServerStatus::clicked() -{ - DesktopServices::openUrl(QUrl("https://github.com/MultiMC/MultiMC5/wiki/Mojang-Services-Status")); -} - -void ServerStatus::setStatus(QString key, int value) -{ - if (!serverLabels.contains(key)) - return; - IconLabel *label = serverLabels[key]; - switch(value) - { - case 0: - label->setIcon(goodIcon); - break; - case 1: - label->setIcon(yellowIcon); - break; - default: - case 2: - label->setIcon(badIcon); - break; - } -} - -void ServerStatus::StatusChanged(const QMap<QString, QString> statusEntries) -{ - auto convertStatus = [&](QString status)->int - { - if (status == "green") - return 0; - else if (status == "yellow") - return 1; - else if (status == "red") - return 2; - return 2; - } - ; - auto iter = statusEntries.begin(); - while (iter != statusEntries.end()) - { - QString key = iter.key(); - auto value = convertStatus(iter.value()); - setStatus(key, value); - iter++; - } -} - -void ServerStatus::StatusReloading(bool is_reloading) -{ - m_statusRefresh->setChecked(is_reloading); -} - -#include "ServerStatus.moc" |