summaryrefslogtreecommitdiff
path: root/src/gui/windows/socialwindow.cpp
diff options
context:
space:
mode:
authorFedja Beader <fedja@protonmail.ch>2024-10-11 23:09:23 +0000
committerFedja Beader <fedja@protonmail.ch>2024-10-11 23:09:23 +0000
commit9c7c7093b94e908efff0798004c2595a8b5c0fcd (patch)
treebecf8282418c64134ac8250d941570ce36e1c511 /src/gui/windows/socialwindow.cpp
parent089532258084660366fdeb11ec5d25b115fe6b0e (diff)
downloadplus-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.cpp34
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)