diff options
Diffstat (limited to 'src/yuzu/multiplayer/moderation_dialog.cpp')
-rw-r--r-- | src/yuzu/multiplayer/moderation_dialog.cpp | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/src/yuzu/multiplayer/moderation_dialog.cpp b/src/yuzu/multiplayer/moderation_dialog.cpp deleted file mode 100644 index c9b8ed397..000000000 --- a/src/yuzu/multiplayer/moderation_dialog.cpp +++ /dev/null @@ -1,112 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2018 Citra Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#include <QStandardItem> -#include <QStandardItemModel> -#include "network/network.h" -#include "network/room_member.h" -#include "ui_moderation_dialog.h" -#include "yuzu/multiplayer/moderation_dialog.h" - -namespace Column { -enum { - SUBJECT, - TYPE, - COUNT, -}; -} - -ModerationDialog::ModerationDialog(Network::RoomNetwork& room_network_, QWidget* parent) - : QDialog(parent), ui(std::make_unique<Ui::ModerationDialog>()), room_network{room_network_} { - ui->setupUi(this); - - qRegisterMetaType<Network::Room::BanList>(); - - if (auto member = room_network.GetRoomMember().lock()) { - callback_handle_status_message = member->BindOnStatusMessageReceived( - [this](const Network::StatusMessageEntry& status_message) { - emit StatusMessageReceived(status_message); - }); - connect(this, &ModerationDialog::StatusMessageReceived, this, - &ModerationDialog::OnStatusMessageReceived); - callback_handle_ban_list = member->BindOnBanListReceived( - [this](const Network::Room::BanList& ban_list) { emit BanListReceived(ban_list); }); - connect(this, &ModerationDialog::BanListReceived, this, &ModerationDialog::PopulateBanList); - } - - // Initialize the UI - model = new QStandardItemModel(ui->ban_list_view); - model->insertColumns(0, Column::COUNT); - model->setHeaderData(Column::SUBJECT, Qt::Horizontal, tr("Subject")); - model->setHeaderData(Column::TYPE, Qt::Horizontal, tr("Type")); - - ui->ban_list_view->setModel(model); - - // Load the ban list in background - LoadBanList(); - - connect(ui->refresh, &QPushButton::clicked, this, [this] { LoadBanList(); }); - connect(ui->unban, &QPushButton::clicked, this, [this] { - auto index = ui->ban_list_view->currentIndex(); - SendUnbanRequest(model->item(index.row(), 0)->text()); - }); - connect(ui->ban_list_view, &QTreeView::clicked, [this] { ui->unban->setEnabled(true); }); -} - -ModerationDialog::~ModerationDialog() { - if (callback_handle_status_message) { - if (auto room = room_network.GetRoomMember().lock()) { - room->Unbind(callback_handle_status_message); - } - } - - if (callback_handle_ban_list) { - if (auto room = room_network.GetRoomMember().lock()) { - room->Unbind(callback_handle_ban_list); - } - } -} - -void ModerationDialog::LoadBanList() { - if (auto room = room_network.GetRoomMember().lock()) { - ui->refresh->setEnabled(false); - ui->refresh->setText(tr("Refreshing")); - ui->unban->setEnabled(false); - room->RequestBanList(); - } -} - -void ModerationDialog::PopulateBanList(const Network::Room::BanList& ban_list) { - model->removeRows(0, model->rowCount()); - for (const auto& username : ban_list.first) { - QStandardItem* subject_item = new QStandardItem(QString::fromStdString(username)); - QStandardItem* type_item = new QStandardItem(tr("Forum Username")); - model->invisibleRootItem()->appendRow({subject_item, type_item}); - } - for (const auto& ip : ban_list.second) { - QStandardItem* subject_item = new QStandardItem(QString::fromStdString(ip)); - QStandardItem* type_item = new QStandardItem(tr("IP Address")); - model->invisibleRootItem()->appendRow({subject_item, type_item}); - } - for (int i = 0; i < Column::COUNT - 1; ++i) { - ui->ban_list_view->resizeColumnToContents(i); - } - ui->refresh->setEnabled(true); - ui->refresh->setText(tr("Refresh")); - ui->unban->setEnabled(false); -} - -void ModerationDialog::SendUnbanRequest(const QString& subject) { - if (auto room = room_network.GetRoomMember().lock()) { - room->SendModerationRequest(Network::IdModUnban, subject.toStdString()); - } -} - -void ModerationDialog::OnStatusMessageReceived(const Network::StatusMessageEntry& status_message) { - if (status_message.type != Network::IdMemberBanned && - status_message.type != Network::IdAddressUnbanned) - return; - - // Update the ban list for ban/unban - LoadBanList(); -} |