diff options
author | Fedja Beader <fedja@protonmail.ch> | 2024-10-11 23:09:23 +0000 |
---|---|---|
committer | Fedja Beader <fedja@protonmail.ch> | 2024-10-11 23:09:23 +0000 |
commit | 9c7c7093b94e908efff0798004c2595a8b5c0fcd (patch) | |
tree | becf8282418c64134ac8250d941570ce36e1c511 /src/gui/windows/socialwindow.cpp | |
parent | 089532258084660366fdeb11ec5d25b115fe6b0e (diff) | |
download | plus-9c7c7093b94e908efff0798004c2595a8b5c0fcd.tar.gz plus-9c7c7093b94e908efff0798004c2595a8b5c0fcd.tar.bz2 plus-9c7c7093b94e908efff0798004c2595a8b5c0fcd.tar.xz plus-9c7c7093b94e908efff0798004c2595a8b5c0fcd.zip |
Add confirmation dialog for leaving guild
Memory may not be freed properly, also code is IMO ugly. See !109 for the other way of implementing this (unrelated). Was done in socialWindow as the join confirmation is already there.
****
mana/plus!110
Diffstat (limited to 'src/gui/windows/socialwindow.cpp')
-rw-r--r-- | src/gui/windows/socialwindow.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/gui/windows/socialwindow.cpp b/src/gui/windows/socialwindow.cpp index c8c96d4cf..14596dc16 100644 --- a/src/gui/windows/socialwindow.cpp +++ b/src/gui/windows/socialwindow.cpp @@ -55,6 +55,7 @@ SocialWindow::SocialWindow() : PlayerRelationsListener(), mGuildInvited(0), mGuildAcceptDialog(nullptr), + mGuildLeaveDialog(nullptr), mGuildCreateDialog(nullptr), mPartyInviter(), mGuilds(), @@ -159,6 +160,13 @@ SocialWindow::~SocialWindow() mGuildInvited = 0; } + if (mGuildLeaveDialog != nullptr) + { + mGuildLeaveDialog->close(); + mGuildLeaveDialog->scheduleDelete(); + mGuildLeaveDialog = nullptr; + } + if (mPartyAcceptDialog != nullptr) { mPartyAcceptDialog->close(); @@ -351,6 +359,19 @@ void SocialWindow::action(const ActionEvent &event) mGuildInvited = 0; mGuildAcceptDialog = nullptr; } + else if (event.getSource() == mGuildLeaveDialog) + { + if (eventId == "yes") + { + if ((guildHandler != nullptr) && (localPlayer != nullptr)) + { + const Guild *const guild = localPlayer->getGuild(); + if (guild != nullptr) + guildHandler->leave(guild->getId()); + } + } + mGuildLeaveDialog = nullptr; + } else if (eventId == "party") { popupMenu->showPartyPopup(); @@ -425,6 +446,19 @@ void SocialWindow::showGuildInvite(const std::string &restrict guildName, mGuildInvited = guildId; } +void SocialWindow::confirmGuildLeave() +{ + CREATEWIDGETV(mGuildLeaveDialog, ConfirmDialog, + // TRANSLATORS: guild invite message + _("Really leave your guild?"), + "", + SOUND_REQUEST, + false, + Modal_false, + this); + mGuildLeaveDialog->addActionListener(this); +} + void SocialWindow::showPartyInvite(const std::string &restrict partyName, const std::string &restrict inviter, const int partyId) |