From a5261a5fa8fad810ecb5c260d92c3e771822bf58 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 20 Feb 2024 23:46:23 +0100 Subject: Convert BOOL to bool in llui --- indra/newview/llpanelgroupbulkban.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'indra/newview/llpanelgroupbulkban.cpp') diff --git a/indra/newview/llpanelgroupbulkban.cpp b/indra/newview/llpanelgroupbulkban.cpp index cf1f0bc32f..c047ffb270 100644 --- a/indra/newview/llpanelgroupbulkban.cpp +++ b/indra/newview/llpanelgroupbulkban.cpp @@ -57,9 +57,9 @@ LLPanelGroupBulkBan::LLPanelGroupBulkBan(const LLUUID& group_id) : LLPanelGroupB buildFromFile( "panel_group_bulk_ban.xml"); } -BOOL LLPanelGroupBulkBan::postBuild() +bool LLPanelGroupBulkBan::postBuild() { - BOOL recurse = TRUE; + constexpr bool recurse = true; mImplementation->mLoadingText = getString("loading"); mImplementation->mGroupName = getChild("group_name_text", recurse); @@ -83,7 +83,7 @@ BOOL LLPanelGroupBulkBan::postBuild() if ( mImplementation->mRemoveButton ) { mImplementation->mRemoveButton->setClickedCallback(LLPanelGroupBulkImpl::callbackClickRemove, mImplementation); - mImplementation->mRemoveButton->setEnabled(FALSE); + mImplementation->mRemoveButton->setEnabled(false); } mImplementation->mOKButton = @@ -91,7 +91,7 @@ BOOL LLPanelGroupBulkBan::postBuild() if ( mImplementation->mOKButton ) { mImplementation->mOKButton->setClickedCallback(LLPanelGroupBulkBan::callbackClickSubmit, this); - mImplementation->mOKButton->setEnabled(FALSE); + mImplementation->mOKButton->setEnabled(false); } button = getChild("cancel_button", recurse); @@ -106,7 +106,7 @@ BOOL LLPanelGroupBulkBan::postBuild() mImplementation->mCannotBanYourself = getString("cant_ban_yourself"); update(); - return TRUE; + return true; } // TODO: Refactor the shitty callback functions with void* -- just use boost::bind to call submit() instead. -- cgit v1.2.3 From 60d3dd98a44230c21803c1606552ee098ed9fa7c Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 21 Feb 2024 21:05:14 +0100 Subject: Convert remaining BOOL to bool --- indra/newview/llpanelgroupbulkban.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview/llpanelgroupbulkban.cpp') diff --git a/indra/newview/llpanelgroupbulkban.cpp b/indra/newview/llpanelgroupbulkban.cpp index c047ffb270..847a895bb8 100644 --- a/indra/newview/llpanelgroupbulkban.cpp +++ b/indra/newview/llpanelgroupbulkban.cpp @@ -66,7 +66,7 @@ bool LLPanelGroupBulkBan::postBuild() mImplementation->mBulkAgentList = getChild("banned_agent_list", recurse); if ( mImplementation->mBulkAgentList ) { - mImplementation->mBulkAgentList->setCommitOnSelectionChange(TRUE); + mImplementation->mBulkAgentList->setCommitOnSelectionChange(true); mImplementation->mBulkAgentList->setCommitCallback(LLPanelGroupBulkImpl::callbackSelect, mImplementation); } @@ -163,12 +163,12 @@ void LLPanelGroupBulkBan::submit() // remove already banned users and yourself from request. std::vector banned_avatar_names; std::vector out_of_limit_names; - bool banning_self = FALSE; + bool banning_self = false; std::vector::iterator conflict = std::find(banned_agent_list.begin(), banned_agent_list.end(), gAgent.getID()); if (conflict != banned_agent_list.end()) { banned_agent_list.erase(conflict); - banning_self = TRUE; + banning_self = true; } if (group_datap) { -- cgit v1.2.3 From e2e37cced861b98de8c1a7c9c0d3a50d2d90e433 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Wed, 22 May 2024 21:25:21 +0200 Subject: Fix line endlings --- indra/newview/llpanelgroupbulkban.cpp | 512 +++++++++++++++++----------------- 1 file changed, 256 insertions(+), 256 deletions(-) (limited to 'indra/newview/llpanelgroupbulkban.cpp') diff --git a/indra/newview/llpanelgroupbulkban.cpp b/indra/newview/llpanelgroupbulkban.cpp index 4972de7f11..3c764887a6 100644 --- a/indra/newview/llpanelgroupbulkban.cpp +++ b/indra/newview/llpanelgroupbulkban.cpp @@ -1,256 +1,256 @@ -/** -* @file llpanelgroupbulkban.cpp -* -* $LicenseInfo:firstyear=2013&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2013, Linden Research, Inc. -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -* -* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -* $/LicenseInfo$ -*/ - -#include "llviewerprecompiledheaders.h" - -#include "llpanelgroupbulkban.h" -#include "llpanelgroupbulk.h" -#include "llpanelgroupbulkimpl.h" - -#include "llagent.h" -#include "llavatarnamecache.h" -#include "llavataractions.h" -#include "llfloateravatarpicker.h" -#include "llbutton.h" -#include "llcallingcard.h" -#include "llcombobox.h" -#include "llgroupactions.h" -#include "llgroupmgr.h" -#include "llnamelistctrl.h" -#include "llnotificationsutil.h" -#include "llscrolllistitem.h" -#include "llslurl.h" -#include "llspinctrl.h" -#include "lltextbox.h" -#include "llviewerobject.h" -#include "llviewerobjectlist.h" -#include "lluictrlfactory.h" -#include "llviewerwindow.h" - -LLPanelGroupBulkBan::LLPanelGroupBulkBan(const LLUUID& group_id) : LLPanelGroupBulk(group_id) -{ - // Pass on construction of this panel to the control factory. - buildFromFile( "panel_group_bulk_ban.xml"); -} - -bool LLPanelGroupBulkBan::postBuild() -{ - constexpr bool recurse = true; - - mImplementation->mLoadingText = getString("loading"); - mImplementation->mGroupName = getChild("group_name_text", recurse); - mImplementation->mBulkAgentList = getChild("banned_agent_list", recurse); - if ( mImplementation->mBulkAgentList ) - { - mImplementation->mBulkAgentList->setCommitOnSelectionChange(true); - mImplementation->mBulkAgentList->setCommitCallback(LLPanelGroupBulkImpl::callbackSelect, mImplementation); - } - - LLButton* button = getChild("add_button", recurse); - if ( button ) - { - // default to opening avatarpicker automatically - // (*impl::callbackClickAdd)((void*)this); - button->setClickedCallback(LLPanelGroupBulkImpl::callbackClickAdd, this); - } - - mImplementation->mRemoveButton = - getChild("remove_button", recurse); - if ( mImplementation->mRemoveButton ) - { - mImplementation->mRemoveButton->setClickedCallback(LLPanelGroupBulkImpl::callbackClickRemove, mImplementation); - mImplementation->mRemoveButton->setEnabled(false); - } - - mImplementation->mOKButton = - getChild("ban_button", recurse); - if ( mImplementation->mOKButton ) - { - mImplementation->mOKButton->setClickedCallback(LLPanelGroupBulkBan::callbackClickSubmit, this); - mImplementation->mOKButton->setEnabled(false); - } - - button = getChild("cancel_button", recurse); - if ( button ) - { - button->setClickedCallback(LLPanelGroupBulkImpl::callbackClickCancel, mImplementation); - } - - mImplementation->mTooManySelected = getString("ban_selection_too_large"); - mImplementation->mBanNotPermitted = getString("ban_not_permitted"); - mImplementation->mBanLimitFail = getString("ban_limit_fail"); - mImplementation->mCannotBanYourself = getString("cant_ban_yourself"); - - update(); - return true; -} - -// TODO: Refactor the shitty callback functions with void* -- just use boost::bind to call submit() instead. -void LLPanelGroupBulkBan::callbackClickSubmit(void* userdata) -{ - LLPanelGroupBulkBan* selfp = (LLPanelGroupBulkBan*)userdata; - - if(selfp) - selfp->submit(); -} - - -void LLPanelGroupBulkBan::submit() -{ - if (!gAgent.hasPowerInGroup(mImplementation->mGroupID, GP_GROUP_BAN_ACCESS)) - { - // Fail! Agent no longer have ban rights. Permissions could have changed after button was pressed. - LLSD msg; - msg["MESSAGE"] = mImplementation->mBanNotPermitted; - LLNotificationsUtil::add("GenericAlert", msg); - (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); - return; - } - LLGroupMgrGroupData * group_datap = LLGroupMgr::getInstance()->getGroupData(mImplementation->mGroupID); - if (group_datap && group_datap->mBanList.size() >= GB_MAX_BANNED_AGENTS) - { - // Fail! Size limit exceeded. List could have updated after button was pressed. - LLSD msg; - msg["MESSAGE"] = mImplementation->mBanLimitFail; - LLNotificationsUtil::add("GenericAlert", msg); - (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); - return; - } - std::vector banned_agent_list; - std::vector agents = mImplementation->mBulkAgentList->getAllData(); - std::vector::iterator iter = agents.begin(); - for(;iter != agents.end(); ++iter) - { - LLScrollListItem* agent = *iter; - banned_agent_list.push_back(agent->getUUID()); - } - - const S32 MAX_BANS_PER_REQUEST = 100; // Max bans per request. 100 to match server cap. - if (banned_agent_list.size() > MAX_BANS_PER_REQUEST) - { - // Fail! - LLSD msg; - msg["MESSAGE"] = mImplementation->mTooManySelected; - LLNotificationsUtil::add("GenericAlert", msg); - (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); - return; - } - - // remove already banned users and yourself from request. - std::vector banned_avatar_names; - std::vector out_of_limit_names; - bool banning_self = false; - std::vector::iterator conflict = std::find(banned_agent_list.begin(), banned_agent_list.end(), gAgent.getID()); - if (conflict != banned_agent_list.end()) - { - banned_agent_list.erase(conflict); - banning_self = true; - } - if (group_datap) - { - for (const auto& [group_ban_agent_id, group_ban_data] : group_datap->mBanList) - { - std::vector::iterator conflict = std::find(banned_agent_list.begin(), banned_agent_list.end(), group_ban_agent_id); - if (conflict != banned_agent_list.end()) - { - LLAvatarName av_name; - LLAvatarNameCache::get(group_ban_agent_id, &av_name); - banned_avatar_names.emplace_back(av_name); - - banned_agent_list.erase(conflict); - if (banned_agent_list.empty()) - { - break; - } - } - } - // this check should always be the last one before we send the request. - // Otherwise we have a possibility of cutting more then we need to. - if (banned_agent_list.size() > GB_MAX_BANNED_AGENTS - group_datap->mBanList.size()) - { - std::vector::iterator exeedes_limit = banned_agent_list.begin() + GB_MAX_BANNED_AGENTS - group_datap->mBanList.size(); - for (std::vector::iterator itor = exeedes_limit ; - itor != banned_agent_list.end(); ++itor) - { - LLAvatarName av_name; - LLAvatarNameCache::get(*itor, &av_name); - out_of_limit_names.push_back(av_name); - } - banned_agent_list.erase(exeedes_limit,banned_agent_list.end()); - } - } - - // sending request and ejecting members - if (banned_agent_list.size() != 0) - { - LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_POST, mImplementation->mGroupID, LLGroupMgr::BAN_CREATE | LLGroupMgr::BAN_UPDATE, banned_agent_list); - LLGroupMgr::getInstance()->sendGroupMemberEjects(mImplementation->mGroupID, banned_agent_list); - } - - // building notification - if (banned_avatar_names.size() > 0 || banning_self || out_of_limit_names.size() > 0) - { - std::string reasons; - if(banned_avatar_names.size() > 0) - { - reasons = "\n " + buildResidentsArgument(banned_avatar_names, "residents_already_banned"); - } - - if(banning_self) - { - reasons += "\n " + mImplementation->mCannotBanYourself; - } - - if(out_of_limit_names.size() > 0) - { - reasons += "\n " + buildResidentsArgument(out_of_limit_names, "ban_limit_reached"); - } - - LLStringUtil::format_map_t msg_args; - msg_args["[REASONS]"] = reasons; - LLSD msg; - if (banned_agent_list.size() == 0) - { - msg["MESSAGE"] = getString("ban_failed", msg_args); - } - else - { - msg["MESSAGE"] = getString("partial_ban", msg_args); - } - LLNotificationsUtil::add("GenericAlert", msg); - } - - //then close - (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); -} - -std::string LLPanelGroupBulkBan::buildResidentsArgument(std::vector avatar_names, const std::string &format) -{ - std::string names_string; - LLAvatarActions::buildResidentsString(avatar_names, names_string); - LLStringUtil::format_map_t args; - args["[RESIDENTS]"] = names_string; - return getString(format, args); -} +/** +* @file llpanelgroupbulkban.cpp +* +* $LicenseInfo:firstyear=2013&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2013, Linden Research, Inc. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; +* version 2.1 of the License only. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +* +* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA +* $/LicenseInfo$ +*/ + +#include "llviewerprecompiledheaders.h" + +#include "llpanelgroupbulkban.h" +#include "llpanelgroupbulk.h" +#include "llpanelgroupbulkimpl.h" + +#include "llagent.h" +#include "llavatarnamecache.h" +#include "llavataractions.h" +#include "llfloateravatarpicker.h" +#include "llbutton.h" +#include "llcallingcard.h" +#include "llcombobox.h" +#include "llgroupactions.h" +#include "llgroupmgr.h" +#include "llnamelistctrl.h" +#include "llnotificationsutil.h" +#include "llscrolllistitem.h" +#include "llslurl.h" +#include "llspinctrl.h" +#include "lltextbox.h" +#include "llviewerobject.h" +#include "llviewerobjectlist.h" +#include "lluictrlfactory.h" +#include "llviewerwindow.h" + +LLPanelGroupBulkBan::LLPanelGroupBulkBan(const LLUUID& group_id) : LLPanelGroupBulk(group_id) +{ + // Pass on construction of this panel to the control factory. + buildFromFile( "panel_group_bulk_ban.xml"); +} + +bool LLPanelGroupBulkBan::postBuild() +{ + constexpr bool recurse = true; + + mImplementation->mLoadingText = getString("loading"); + mImplementation->mGroupName = getChild("group_name_text", recurse); + mImplementation->mBulkAgentList = getChild("banned_agent_list", recurse); + if ( mImplementation->mBulkAgentList ) + { + mImplementation->mBulkAgentList->setCommitOnSelectionChange(true); + mImplementation->mBulkAgentList->setCommitCallback(LLPanelGroupBulkImpl::callbackSelect, mImplementation); + } + + LLButton* button = getChild("add_button", recurse); + if ( button ) + { + // default to opening avatarpicker automatically + // (*impl::callbackClickAdd)((void*)this); + button->setClickedCallback(LLPanelGroupBulkImpl::callbackClickAdd, this); + } + + mImplementation->mRemoveButton = + getChild("remove_button", recurse); + if ( mImplementation->mRemoveButton ) + { + mImplementation->mRemoveButton->setClickedCallback(LLPanelGroupBulkImpl::callbackClickRemove, mImplementation); + mImplementation->mRemoveButton->setEnabled(false); + } + + mImplementation->mOKButton = + getChild("ban_button", recurse); + if ( mImplementation->mOKButton ) + { + mImplementation->mOKButton->setClickedCallback(LLPanelGroupBulkBan::callbackClickSubmit, this); + mImplementation->mOKButton->setEnabled(false); + } + + button = getChild("cancel_button", recurse); + if ( button ) + { + button->setClickedCallback(LLPanelGroupBulkImpl::callbackClickCancel, mImplementation); + } + + mImplementation->mTooManySelected = getString("ban_selection_too_large"); + mImplementation->mBanNotPermitted = getString("ban_not_permitted"); + mImplementation->mBanLimitFail = getString("ban_limit_fail"); + mImplementation->mCannotBanYourself = getString("cant_ban_yourself"); + + update(); + return true; +} + +// TODO: Refactor the shitty callback functions with void* -- just use boost::bind to call submit() instead. +void LLPanelGroupBulkBan::callbackClickSubmit(void* userdata) +{ + LLPanelGroupBulkBan* selfp = (LLPanelGroupBulkBan*)userdata; + + if(selfp) + selfp->submit(); +} + + +void LLPanelGroupBulkBan::submit() +{ + if (!gAgent.hasPowerInGroup(mImplementation->mGroupID, GP_GROUP_BAN_ACCESS)) + { + // Fail! Agent no longer have ban rights. Permissions could have changed after button was pressed. + LLSD msg; + msg["MESSAGE"] = mImplementation->mBanNotPermitted; + LLNotificationsUtil::add("GenericAlert", msg); + (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); + return; + } + LLGroupMgrGroupData * group_datap = LLGroupMgr::getInstance()->getGroupData(mImplementation->mGroupID); + if (group_datap && group_datap->mBanList.size() >= GB_MAX_BANNED_AGENTS) + { + // Fail! Size limit exceeded. List could have updated after button was pressed. + LLSD msg; + msg["MESSAGE"] = mImplementation->mBanLimitFail; + LLNotificationsUtil::add("GenericAlert", msg); + (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); + return; + } + std::vector banned_agent_list; + std::vector agents = mImplementation->mBulkAgentList->getAllData(); + std::vector::iterator iter = agents.begin(); + for(;iter != agents.end(); ++iter) + { + LLScrollListItem* agent = *iter; + banned_agent_list.push_back(agent->getUUID()); + } + + const S32 MAX_BANS_PER_REQUEST = 100; // Max bans per request. 100 to match server cap. + if (banned_agent_list.size() > MAX_BANS_PER_REQUEST) + { + // Fail! + LLSD msg; + msg["MESSAGE"] = mImplementation->mTooManySelected; + LLNotificationsUtil::add("GenericAlert", msg); + (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); + return; + } + + // remove already banned users and yourself from request. + std::vector banned_avatar_names; + std::vector out_of_limit_names; + bool banning_self = false; + std::vector::iterator conflict = std::find(banned_agent_list.begin(), banned_agent_list.end(), gAgent.getID()); + if (conflict != banned_agent_list.end()) + { + banned_agent_list.erase(conflict); + banning_self = true; + } + if (group_datap) + { + for (const auto& [group_ban_agent_id, group_ban_data] : group_datap->mBanList) + { + std::vector::iterator conflict = std::find(banned_agent_list.begin(), banned_agent_list.end(), group_ban_agent_id); + if (conflict != banned_agent_list.end()) + { + LLAvatarName av_name; + LLAvatarNameCache::get(group_ban_agent_id, &av_name); + banned_avatar_names.emplace_back(av_name); + + banned_agent_list.erase(conflict); + if (banned_agent_list.empty()) + { + break; + } + } + } + // this check should always be the last one before we send the request. + // Otherwise we have a possibility of cutting more then we need to. + if (banned_agent_list.size() > GB_MAX_BANNED_AGENTS - group_datap->mBanList.size()) + { + std::vector::iterator exeedes_limit = banned_agent_list.begin() + GB_MAX_BANNED_AGENTS - group_datap->mBanList.size(); + for (std::vector::iterator itor = exeedes_limit ; + itor != banned_agent_list.end(); ++itor) + { + LLAvatarName av_name; + LLAvatarNameCache::get(*itor, &av_name); + out_of_limit_names.push_back(av_name); + } + banned_agent_list.erase(exeedes_limit,banned_agent_list.end()); + } + } + + // sending request and ejecting members + if (banned_agent_list.size() != 0) + { + LLGroupMgr::getInstance()->sendGroupBanRequest(LLGroupMgr::REQUEST_POST, mImplementation->mGroupID, LLGroupMgr::BAN_CREATE | LLGroupMgr::BAN_UPDATE, banned_agent_list); + LLGroupMgr::getInstance()->sendGroupMemberEjects(mImplementation->mGroupID, banned_agent_list); + } + + // building notification + if (banned_avatar_names.size() > 0 || banning_self || out_of_limit_names.size() > 0) + { + std::string reasons; + if(banned_avatar_names.size() > 0) + { + reasons = "\n " + buildResidentsArgument(banned_avatar_names, "residents_already_banned"); + } + + if(banning_self) + { + reasons += "\n " + mImplementation->mCannotBanYourself; + } + + if(out_of_limit_names.size() > 0) + { + reasons += "\n " + buildResidentsArgument(out_of_limit_names, "ban_limit_reached"); + } + + LLStringUtil::format_map_t msg_args; + msg_args["[REASONS]"] = reasons; + LLSD msg; + if (banned_agent_list.size() == 0) + { + msg["MESSAGE"] = getString("ban_failed", msg_args); + } + else + { + msg["MESSAGE"] = getString("partial_ban", msg_args); + } + LLNotificationsUtil::add("GenericAlert", msg); + } + + //then close + (*(mImplementation->mCloseCallback))(mImplementation->mCloseCallbackUserData); +} + +std::string LLPanelGroupBulkBan::buildResidentsArgument(std::vector avatar_names, const std::string &format) +{ + std::string names_string; + LLAvatarActions::buildResidentsString(avatar_names, names_string); + LLStringUtil::format_map_t args; + args["[RESIDENTS]"] = names_string; + return getString(format, args); +} -- cgit v1.2.3