From 8b761e4adb65d391cc3fa99b1c43c489cda04676 Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Fri, 2 May 2025 17:53:26 +0200 Subject: [PATCH 1/2] Close punishment dialog when the user leaves Prevents silly moments where the wrong person gets banned/kicked --- src/courtroom.cpp | 2 ++ src/widgets/playerlistwidget.cpp | 8 ++++++++ src/widgets/playerlistwidget.h | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 8402b8e8a..0c33090c9 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -519,6 +519,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app) connect(m_screenslide_timer, &kal::ScreenSlideTimer::finished, this, &Courtroom::post_transition_cleanup); + connect(ui_player_list, &PlayerListWidget::notify, this, [this](const QString &message) { append_server_chatmessage("CLIENT", message, "1");}); + set_widgets(); set_char_select(); diff --git a/src/widgets/playerlistwidget.cpp b/src/widgets/playerlistwidget.cpp index c2c655743..04147b821 100644 --- a/src/widgets/playerlistwidget.cpp +++ b/src/widgets/playerlistwidget.cpp @@ -117,6 +117,7 @@ void PlayerListWidget::onCustomContextMenuRequested(const QPoint &pos) ModeratorDialog *dialog = new ModeratorDialog(id, false, ao_app); dialog->setWindowTitle(tr("Kick %1").arg(name)); connect(this, &PlayerListWidget::destroyed, dialog, &ModeratorDialog::deleteLater); + active_moderator_menu = {id, dialog}; dialog->show(); }); @@ -125,6 +126,7 @@ void PlayerListWidget::onCustomContextMenuRequested(const QPoint &pos) ModeratorDialog *dialog = new ModeratorDialog(id, true, ao_app); dialog->setWindowTitle(tr("Ban %1").arg(name)); connect(this, &PlayerListWidget::destroyed, dialog, &ModeratorDialog::deleteLater); + active_moderator_menu = {id, dialog}; dialog->show(); }); } @@ -143,6 +145,12 @@ void PlayerListWidget::addPlayer(int playerId) void PlayerListWidget::removePlayer(int playerId) { + if (active_moderator_menu.first == playerId && active_moderator_menu.second) + { + delete active_moderator_menu.second; + Q_EMIT notify("Closed Moderation Dialog : User left the server."); + } + delete takeItem(row(m_item_map.take(playerId))); m_player_map.remove(playerId); } diff --git a/src/widgets/playerlistwidget.h b/src/widgets/playerlistwidget.h index 7886e28ae..766c6d53e 100644 --- a/src/widgets/playerlistwidget.h +++ b/src/widgets/playerlistwidget.h @@ -5,11 +5,14 @@ #include #include #include +#include class AOApplication; +class ModeratorDialog; class PlayerListWidget : public QListWidget { + Q_OBJECT public: explicit PlayerListWidget(AOApplication *ao_app, QWidget *parent = nullptr); virtual ~PlayerListWidget(); @@ -24,6 +27,7 @@ class PlayerListWidget : public QListWidget AOApplication *ao_app; QMap m_player_map; QMap m_item_map; + QPair> active_moderator_menu; bool m_is_authenticated = false; void addPlayer(int playerId); @@ -34,6 +38,9 @@ class PlayerListWidget : public QListWidget void filterPlayerList(); +Q_SIGNALS: + void notify(const QString& messasge); + private Q_SLOTS: void onCustomContextMenuRequested(const QPoint &pos); }; From 4c26f995343c2ed4a7efaa0789edc5b6a2377390 Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Fri, 2 May 2025 18:10:24 +0200 Subject: [PATCH 2/2] Fix formatting --- src/courtroom.cpp | 2 +- src/widgets/playerlistwidget.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 0c33090c9..172475de6 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -519,7 +519,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) connect(m_screenslide_timer, &kal::ScreenSlideTimer::finished, this, &Courtroom::post_transition_cleanup); - connect(ui_player_list, &PlayerListWidget::notify, this, [this](const QString &message) { append_server_chatmessage("CLIENT", message, "1");}); + connect(ui_player_list, &PlayerListWidget::notify, this, [this](const QString &message) { append_server_chatmessage("CLIENT", message, "1"); }); set_widgets(); diff --git a/src/widgets/playerlistwidget.h b/src/widgets/playerlistwidget.h index 766c6d53e..6fa929dbb 100644 --- a/src/widgets/playerlistwidget.h +++ b/src/widgets/playerlistwidget.h @@ -39,7 +39,7 @@ class PlayerListWidget : public QListWidget void filterPlayerList(); Q_SIGNALS: - void notify(const QString& messasge); + void notify(const QString &messasge); private Q_SLOTS: void onCustomContextMenuRequested(const QPoint &pos);