diff options
author | Ansariel <ansariel.hiller@phoenixviewer.com> | 2024-05-22 19:04:52 +0200 |
---|---|---|
committer | Ansariel <ansariel.hiller@phoenixviewer.com> | 2024-05-22 19:04:52 +0200 |
commit | 1b67dd855c41f5a0cda7ec2a68d98071986ca703 (patch) | |
tree | ab243607f74f78200787bba5b9b88f07ef1b966f /indra/newview/llfloaterbump.cpp | |
parent | 6d6eabca44d08d5b97bfe3e941d2b9687c2246ea (diff) | |
parent | e1623bb276f83a43ce7a197e388720c05bdefe61 (diff) |
Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-A
# Conflicts:
# autobuild.xml
# indra/cmake/CMakeLists.txt
# indra/cmake/GoogleMock.cmake
# indra/llaudio/llaudioengine_fmodstudio.cpp
# indra/llaudio/llaudioengine_fmodstudio.h
# indra/llaudio/lllistener_fmodstudio.cpp
# indra/llaudio/lllistener_fmodstudio.h
# indra/llaudio/llstreamingaudio_fmodstudio.cpp
# indra/llaudio/llstreamingaudio_fmodstudio.h
# indra/llcharacter/llmultigesture.cpp
# indra/llcharacter/llmultigesture.h
# indra/llimage/llimage.cpp
# indra/llimage/llimagepng.cpp
# indra/llimage/llimageworker.cpp
# indra/llimage/tests/llimageworker_test.cpp
# indra/llmessage/tests/llmockhttpclient.h
# indra/llprimitive/llgltfmaterial.h
# indra/llrender/llfontfreetype.cpp
# indra/llui/llcombobox.cpp
# indra/llui/llfolderview.cpp
# indra/llui/llfolderviewmodel.h
# indra/llui/lllineeditor.cpp
# indra/llui/lllineeditor.h
# indra/llui/lltextbase.cpp
# indra/llui/lltextbase.h
# indra/llui/lltexteditor.cpp
# indra/llui/lltextvalidate.cpp
# indra/llui/lltextvalidate.h
# indra/llui/lluictrl.h
# indra/llui/llview.cpp
# indra/llwindow/llwindowmacosx.cpp
# indra/newview/app_settings/settings.xml
# indra/newview/llappearancemgr.cpp
# indra/newview/llappearancemgr.h
# indra/newview/llavatarpropertiesprocessor.cpp
# indra/newview/llavatarpropertiesprocessor.h
# indra/newview/llbreadcrumbview.cpp
# indra/newview/llbreadcrumbview.h
# indra/newview/llbreastmotion.cpp
# indra/newview/llbreastmotion.h
# indra/newview/llconversationmodel.h
# indra/newview/lldensityctrl.cpp
# indra/newview/lldensityctrl.h
# indra/newview/llface.inl
# indra/newview/llfloatereditsky.cpp
# indra/newview/llfloatereditwater.cpp
# indra/newview/llfloateremojipicker.h
# indra/newview/llfloaterimsessiontab.cpp
# indra/newview/llfloaterprofiletexture.cpp
# indra/newview/llfloaterprofiletexture.h
# indra/newview/llgesturemgr.cpp
# indra/newview/llgesturemgr.h
# indra/newview/llimpanel.cpp
# indra/newview/llimpanel.h
# indra/newview/llinventorybridge.cpp
# indra/newview/llinventorybridge.h
# indra/newview/llinventoryclipboard.cpp
# indra/newview/llinventoryclipboard.h
# indra/newview/llinventoryfunctions.cpp
# indra/newview/llinventoryfunctions.h
# indra/newview/llinventorygallery.cpp
# indra/newview/lllistbrowser.cpp
# indra/newview/lllistbrowser.h
# indra/newview/llpanelobjectinventory.cpp
# indra/newview/llpanelprofile.cpp
# indra/newview/llpanelprofile.h
# indra/newview/llpreviewgesture.cpp
# indra/newview/llsavedsettingsglue.cpp
# indra/newview/llsavedsettingsglue.h
# indra/newview/lltooldraganddrop.cpp
# indra/newview/llurllineeditorctrl.cpp
# indra/newview/llvectorperfoptions.cpp
# indra/newview/llvectorperfoptions.h
# indra/newview/llviewerparceloverlay.cpp
# indra/newview/llviewertexlayer.cpp
# indra/newview/llviewertexturelist.cpp
# indra/newview/macmain.h
# indra/test/test.cpp
Diffstat (limited to 'indra/newview/llfloaterbump.cpp')
-rw-r--r-- | indra/newview/llfloaterbump.cpp | 548 |
1 files changed, 274 insertions, 274 deletions
diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index 707557d23d..f3c1b1eea5 100644 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -1,274 +1,274 @@ -/** - * @file llfloaterbump.cpp - * @brief Floater showing recent bumps, hits with objects, pushes, etc. - * @author Cory Ondrejka, James Cook - * - * $LicenseInfo:firstyear=2003&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, 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 "llsd.h" -#include "mean_collision_data.h" - -#include "llavataractions.h" -#include "llfloaterbump.h" -#include "llfloaterreg.h" -#include "llfloaterreporter.h" -#include "llmutelist.h" -#include "llpanelblockedlist.h" -#include "llscrolllistctrl.h" -#include "lltrans.h" -#include "lluictrlfactory.h" -#include "llviewermessage.h" -#include "llviewermenu.h" -#include "llviewerobjectlist.h" - -///---------------------------------------------------------------------------- -/// Class LLFloaterBump -///---------------------------------------------------------------------------- - -// Default constructor -LLFloaterBump::LLFloaterBump(const LLSD& key) -: LLFloater(key) -{ - mCommitCallbackRegistrar.add("Avatar.SendIM", boost::bind(&LLFloaterBump::startIM, this)); - mCommitCallbackRegistrar.add("Avatar.ReportAbuse", boost::bind(&LLFloaterBump::reportAbuse, this)); - mCommitCallbackRegistrar.add("ShowAgentProfile", boost::bind(&LLFloaterBump::showProfile, this)); - mCommitCallbackRegistrar.add("Avatar.InviteToGroup", boost::bind(&LLFloaterBump::inviteToGroup, this)); - mCommitCallbackRegistrar.add("Avatar.Call", boost::bind(&LLFloaterBump::startCall, this)); - mEnableCallbackRegistrar.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall)); - mCommitCallbackRegistrar.add("Avatar.AddFriend", boost::bind(&LLFloaterBump::addFriend, this)); - mEnableCallbackRegistrar.add("Avatar.EnableAddFriend", boost::bind(&LLFloaterBump::enableAddFriend, this)); - mCommitCallbackRegistrar.add("Avatar.Mute", boost::bind(&LLFloaterBump::muteAvatar, this)); - mEnableCallbackRegistrar.add("Avatar.EnableMute", boost::bind(&LLFloaterBump::enableMute, this)); - mCommitCallbackRegistrar.add("PayObject", boost::bind(&LLFloaterBump::payAvatar, this)); - mCommitCallbackRegistrar.add("Tools.LookAtSelection", boost::bind(&LLFloaterBump::zoomInAvatar, this)); -} - - -// Destroys the object -LLFloaterBump::~LLFloaterBump() -{ - auto menu = mPopupMenuHandle.get(); - if (menu) - { - menu->die(); - mPopupMenuHandle.markDead(); - } -} - -bool LLFloaterBump::postBuild() -{ - mList = getChild<LLScrollListCtrl>("bump_list"); - mList->setAllowMultipleSelection(false); - mList->setRightMouseDownCallback(boost::bind(&LLFloaterBump::onScrollListRightClicked, this, _1, _2, _3)); - - LLContextMenu* menu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_avatar_other.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); - if (menu) - { - mPopupMenuHandle = menu->getHandle(); - menu->setItemVisible(std::string("Normal"), false); - menu->setItemVisible(std::string("Always use impostor"), false); - menu->setItemVisible(std::string("Never use impostor"), false); - menu->setItemVisible(std::string("Impostor seperator"), false); - } - - return true; -} -// virtual -void LLFloaterBump::onOpen(const LLSD& key) -{ - if (gMeanCollisionList.empty()) - { - mNames.clear(); - mList->deleteAllItems(); - - std::string none_detected = getString("none_detected"); - LLSD row; - row["columns"][0]["value"] = none_detected; - row["columns"][0]["font"] = "SansSerifBold"; - mList->addElement(row); - } - else - { - populateCollisionList(); - } -} - -void LLFloaterBump::populateCollisionList() -{ - mNames.clear(); - mList->deleteAllItems(); - - for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin(); - iter != gMeanCollisionList.end(); ++iter) - { - LLMeanCollisionData *mcd = *iter; - add(mList, mcd); - } -} - -void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd) -{ - if (mcd->mFullName.empty() || list->getItemCount() >= 20) - { - return; - } - - std::string timeStr = getString ("timeStr"); - LLSD substitution; - - substitution["datetime"] = (S32) mcd->mTime; - LLStringUtil::format (timeStr, substitution); - - std::string action; - switch(mcd->mType) - { - case MEAN_BUMP: - action = "bump"; - break; - case MEAN_LLPUSHOBJECT: - action = "llpushobject"; - break; - case MEAN_SELECTED_OBJECT_COLLIDE: - action = "selected_object_collide"; - break; - case MEAN_SCRIPTED_OBJECT_COLLIDE: - action = "scripted_object_collide"; - break; - case MEAN_PHYSICAL_OBJECT_COLLIDE: - action = "physical_object_collide"; - break; - default: - LL_INFOS() << "LLFloaterBump::add unknown mean collision type " - << mcd->mType << LL_ENDL; - return; - } - - // All above action strings are in XML file - LLUIString text = getString(action); - text.setArg("[TIME]", timeStr); - text.setArg("[NAME]", mcd->mFullName); - - LLSD row; - row["id"] = mcd->mPerp; - row["columns"][0]["value"] = text; - row["columns"][0]["font"] = "SansSerifBold"; - list->addElement(row); - - - mNames[mcd->mPerp] = mcd->mFullName; -} - - -void LLFloaterBump::onScrollListRightClicked(LLUICtrl* ctrl, S32 x, S32 y) -{ - if (!gMeanCollisionList.empty()) - { - LLScrollListItem* item = mList->hitItem(x, y); - auto menu = mPopupMenuHandle.get(); - if (item && menu) - { - mItemUUID = item->getUUID(); - menu->buildDrawLabels(); - menu->updateParent(LLMenuGL::sMenuContainer); - - std::string mute_msg = (LLMuteList::getInstance()->isMuted(mItemUUID, mNames[mItemUUID])) ? "UnmuteAvatar" : "MuteAvatar"; - menu->getChild<LLUICtrl>("Avatar Mute")->setValue(LLTrans::getString(mute_msg)); - menu->setItemEnabled(std::string("Zoom In"), bool(gObjectList.findObject(mItemUUID))); - - menu->show(x, y); - LLMenuGL::showPopup(ctrl, menu, x, y); - } - } -} - - -void LLFloaterBump::startIM() -{ - LLAvatarActions::startIM(mItemUUID); -} - -void LLFloaterBump::startCall() -{ - LLAvatarActions::startCall(mItemUUID); -} - -void LLFloaterBump::reportAbuse() -{ - LLFloaterReporter::showFromAvatar(mItemUUID, "av_name"); -} - -void LLFloaterBump::showProfile() -{ - LLAvatarActions::showProfile(mItemUUID); -} - -void LLFloaterBump::addFriend() -{ - LLAvatarActions::requestFriendshipDialog(mItemUUID); -} - -bool LLFloaterBump::enableAddFriend() -{ - return !LLAvatarActions::isFriend(mItemUUID); -} - -void LLFloaterBump::muteAvatar() -{ - LLMute mute(mItemUUID, mNames[mItemUUID], LLMute::AGENT); - if (LLMuteList::getInstance()->isMuted(mute.mID)) - { - LLMuteList::getInstance()->remove(mute); - } - else - { - LLMuteList::getInstance()->add(mute); - LLPanelBlockedList::showPanelAndSelect(mute.mID); - } -} - -void LLFloaterBump::payAvatar() -{ - LLAvatarActions::pay(mItemUUID); -} - -void LLFloaterBump::zoomInAvatar() -{ - handle_zoom_to_object(mItemUUID); -} - -bool LLFloaterBump::enableMute() -{ - return LLAvatarActions::canBlock(mItemUUID); -} - -void LLFloaterBump::inviteToGroup() -{ - LLAvatarActions::inviteToGroup(mItemUUID); -} - -LLFloaterBump* LLFloaterBump::getInstance() -{ - return LLFloaterReg::getTypedInstance<LLFloaterBump>("bumps"); -} +/**
+ * @file llfloaterbump.cpp
+ * @brief Floater showing recent bumps, hits with objects, pushes, etc.
+ * @author Cory Ondrejka, James Cook
+ *
+ * $LicenseInfo:firstyear=2003&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, 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 "llsd.h"
+#include "mean_collision_data.h"
+
+#include "llavataractions.h"
+#include "llfloaterbump.h"
+#include "llfloaterreg.h"
+#include "llfloaterreporter.h"
+#include "llmutelist.h"
+#include "llpanelblockedlist.h"
+#include "llscrolllistctrl.h"
+#include "lltrans.h"
+#include "lluictrlfactory.h"
+#include "llviewermessage.h"
+#include "llviewermenu.h"
+#include "llviewerobjectlist.h"
+
+///----------------------------------------------------------------------------
+/// Class LLFloaterBump
+///----------------------------------------------------------------------------
+
+// Default constructor
+LLFloaterBump::LLFloaterBump(const LLSD& key)
+: LLFloater(key)
+{
+ mCommitCallbackRegistrar.add("Avatar.SendIM", boost::bind(&LLFloaterBump::startIM, this));
+ mCommitCallbackRegistrar.add("Avatar.ReportAbuse", boost::bind(&LLFloaterBump::reportAbuse, this));
+ mCommitCallbackRegistrar.add("ShowAgentProfile", boost::bind(&LLFloaterBump::showProfile, this));
+ mCommitCallbackRegistrar.add("Avatar.InviteToGroup", boost::bind(&LLFloaterBump::inviteToGroup, this));
+ mCommitCallbackRegistrar.add("Avatar.Call", boost::bind(&LLFloaterBump::startCall, this));
+ mEnableCallbackRegistrar.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall));
+ mCommitCallbackRegistrar.add("Avatar.AddFriend", boost::bind(&LLFloaterBump::addFriend, this));
+ mEnableCallbackRegistrar.add("Avatar.EnableAddFriend", boost::bind(&LLFloaterBump::enableAddFriend, this));
+ mCommitCallbackRegistrar.add("Avatar.Mute", boost::bind(&LLFloaterBump::muteAvatar, this));
+ mEnableCallbackRegistrar.add("Avatar.EnableMute", boost::bind(&LLFloaterBump::enableMute, this));
+ mCommitCallbackRegistrar.add("PayObject", boost::bind(&LLFloaterBump::payAvatar, this));
+ mCommitCallbackRegistrar.add("Tools.LookAtSelection", boost::bind(&LLFloaterBump::zoomInAvatar, this));
+}
+
+
+// Destroys the object
+LLFloaterBump::~LLFloaterBump()
+{
+ auto menu = mPopupMenuHandle.get();
+ if (menu)
+ {
+ menu->die();
+ mPopupMenuHandle.markDead();
+ }
+}
+
+bool LLFloaterBump::postBuild()
+{
+ mList = getChild<LLScrollListCtrl>("bump_list");
+ mList->setAllowMultipleSelection(false);
+ mList->setRightMouseDownCallback(boost::bind(&LLFloaterBump::onScrollListRightClicked, this, _1, _2, _3));
+
+ LLContextMenu* menu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_avatar_other.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
+ if (menu)
+ {
+ mPopupMenuHandle = menu->getHandle();
+ menu->setItemVisible(std::string("Normal"), false);
+ menu->setItemVisible(std::string("Always use impostor"), false);
+ menu->setItemVisible(std::string("Never use impostor"), false);
+ menu->setItemVisible(std::string("Impostor seperator"), false);
+ }
+
+ return true;
+}
+// virtual
+void LLFloaterBump::onOpen(const LLSD& key)
+{
+ if (gMeanCollisionList.empty())
+ {
+ mNames.clear();
+ mList->deleteAllItems();
+
+ std::string none_detected = getString("none_detected");
+ LLSD row;
+ row["columns"][0]["value"] = none_detected;
+ row["columns"][0]["font"] = "SansSerifBold";
+ mList->addElement(row);
+ }
+ else
+ {
+ populateCollisionList();
+ }
+}
+
+void LLFloaterBump::populateCollisionList()
+{
+ mNames.clear();
+ mList->deleteAllItems();
+
+ for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
+ iter != gMeanCollisionList.end(); ++iter)
+ {
+ LLMeanCollisionData *mcd = *iter;
+ add(mList, mcd);
+ }
+}
+
+void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd)
+{
+ if (mcd->mFullName.empty() || list->getItemCount() >= 20)
+ {
+ return;
+ }
+
+ std::string timeStr = getString ("timeStr");
+ LLSD substitution;
+
+ substitution["datetime"] = (S32) mcd->mTime;
+ LLStringUtil::format (timeStr, substitution);
+
+ std::string action;
+ switch(mcd->mType)
+ {
+ case MEAN_BUMP:
+ action = "bump";
+ break;
+ case MEAN_LLPUSHOBJECT:
+ action = "llpushobject";
+ break;
+ case MEAN_SELECTED_OBJECT_COLLIDE:
+ action = "selected_object_collide";
+ break;
+ case MEAN_SCRIPTED_OBJECT_COLLIDE:
+ action = "scripted_object_collide";
+ break;
+ case MEAN_PHYSICAL_OBJECT_COLLIDE:
+ action = "physical_object_collide";
+ break;
+ default:
+ LL_INFOS() << "LLFloaterBump::add unknown mean collision type "
+ << mcd->mType << LL_ENDL;
+ return;
+ }
+
+ // All above action strings are in XML file
+ LLUIString text = getString(action);
+ text.setArg("[TIME]", timeStr);
+ text.setArg("[NAME]", mcd->mFullName);
+
+ LLSD row;
+ row["id"] = mcd->mPerp;
+ row["columns"][0]["value"] = text;
+ row["columns"][0]["font"] = "SansSerifBold";
+ list->addElement(row);
+
+
+ mNames[mcd->mPerp] = mcd->mFullName;
+}
+
+
+void LLFloaterBump::onScrollListRightClicked(LLUICtrl* ctrl, S32 x, S32 y)
+{
+ if (!gMeanCollisionList.empty())
+ {
+ LLScrollListItem* item = mList->hitItem(x, y);
+ auto menu = mPopupMenuHandle.get();
+ if (item && menu)
+ {
+ mItemUUID = item->getUUID();
+ menu->buildDrawLabels();
+ menu->updateParent(LLMenuGL::sMenuContainer);
+
+ std::string mute_msg = (LLMuteList::getInstance()->isMuted(mItemUUID, mNames[mItemUUID])) ? "UnmuteAvatar" : "MuteAvatar";
+ menu->getChild<LLUICtrl>("Avatar Mute")->setValue(LLTrans::getString(mute_msg));
+ menu->setItemEnabled(std::string("Zoom In"), bool(gObjectList.findObject(mItemUUID)));
+
+ menu->show(x, y);
+ LLMenuGL::showPopup(ctrl, menu, x, y);
+ }
+ }
+}
+
+
+void LLFloaterBump::startIM()
+{
+ LLAvatarActions::startIM(mItemUUID);
+}
+
+void LLFloaterBump::startCall()
+{
+ LLAvatarActions::startCall(mItemUUID);
+}
+
+void LLFloaterBump::reportAbuse()
+{
+ LLFloaterReporter::showFromAvatar(mItemUUID, "av_name");
+}
+
+void LLFloaterBump::showProfile()
+{
+ LLAvatarActions::showProfile(mItemUUID);
+}
+
+void LLFloaterBump::addFriend()
+{
+ LLAvatarActions::requestFriendshipDialog(mItemUUID);
+}
+
+bool LLFloaterBump::enableAddFriend()
+{
+ return !LLAvatarActions::isFriend(mItemUUID);
+}
+
+void LLFloaterBump::muteAvatar()
+{
+ LLMute mute(mItemUUID, mNames[mItemUUID], LLMute::AGENT);
+ if (LLMuteList::getInstance()->isMuted(mute.mID))
+ {
+ LLMuteList::getInstance()->remove(mute);
+ }
+ else
+ {
+ LLMuteList::getInstance()->add(mute);
+ LLPanelBlockedList::showPanelAndSelect(mute.mID);
+ }
+}
+
+void LLFloaterBump::payAvatar()
+{
+ LLAvatarActions::pay(mItemUUID);
+}
+
+void LLFloaterBump::zoomInAvatar()
+{
+ handle_zoom_to_object(mItemUUID);
+}
+
+bool LLFloaterBump::enableMute()
+{
+ return LLAvatarActions::canBlock(mItemUUID);
+}
+
+void LLFloaterBump::inviteToGroup()
+{
+ LLAvatarActions::inviteToGroup(mItemUUID);
+}
+
+LLFloaterBump* LLFloaterBump::getInstance()
+{
+ return LLFloaterReg::getTypedInstance<LLFloaterBump>("bumps");
+}
|