summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelblockedlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelblockedlist.cpp')
-rw-r--r--indra/newview/llpanelblockedlist.cpp652
1 files changed, 326 insertions, 326 deletions
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 1b481dde7d..6608b8169d 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -1,326 +1,326 @@
-/**
- * @file llpanelblockedlist.cpp
- * @brief Container for blocked Residents & Objects list
- *
- * $LicenseInfo:firstyear=2001&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 "llpanelblockedlist.h"
-
-// library include
-#include "llavatarname.h"
-#include "llfiltereditor.h"
-#include "llfloater.h"
-#include "llfloaterreg.h"
-#include "llnotificationsutil.h"
-#include "llscrolllistctrl.h"
-#include "llmenubutton.h"
-
-// project include
-#include "llavatarlistitem.h"
-#include "llblocklist.h"
-#include "llblockedlistitem.h"
-#include "llfloateravatarpicker.h"
-#include "llfloatersidepanelcontainer.h"
-#include "llinventorylistitem.h"
-#include "llinventorymodel.h"
-#include "llsidetraypanelcontainer.h"
-#include "llviewercontrol.h"
-
-static LLPanelInjector<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray");
-
-//
-// Constants
-//
-const std::string BLOCKED_PARAM_NAME = "blocked_to_select";
-
-//-----------------------------------------------------------------------------
-// LLPanelBlockedList()
-//-----------------------------------------------------------------------------
-
-LLPanelBlockedList::LLPanelBlockedList()
-: LLPanel()
-{
- mCommitCallbackRegistrar.add("Block.Action", boost::bind(&LLPanelBlockedList::onCustomAction, this, _2));
- mEnableCallbackRegistrar.add("Block.Check", boost::bind(&LLPanelBlockedList::isActionChecked, this, _2));
-}
-
-void LLPanelBlockedList::removePicker()
-{
- if(mPicker.get())
- {
- mPicker.get()->closeFloater();
- }
-}
-
-bool LLPanelBlockedList::postBuild()
-{
- mBlockedList = getChild<LLBlockList>("blocked");
- mBlockedList->setCommitOnSelectionChange(true);
- this->setVisibleCallback(boost::bind(&LLPanelBlockedList::removePicker, this));
-
- switch (gSavedSettings.getU32("BlockPeopleSortOrder"))
- {
- case E_SORT_BY_NAME:
- mBlockedList->sortByName();
- break;
-
- case E_SORT_BY_TYPE:
- mBlockedList->sortByType();
- break;
- default:
- LL_WARNS() << "Unrecognized sort order for blocked list" << LL_ENDL;
- break;
- }
-
- // Use the context menu of the Block list for the Block tab gear menu.
- LLToggleableMenu* blocked_gear_menu = mBlockedList->getContextMenu();
- if (blocked_gear_menu)
- {
- getChild<LLMenuButton>("blocked_gear_btn")->setMenu(blocked_gear_menu, LLMenuButton::MP_BOTTOM_LEFT);
- }
-
- getChild<LLButton>("unblock_btn")->setCommitCallback(boost::bind(&LLPanelBlockedList::unblockItem, this));
- getChild<LLFilterEditor>("blocked_filter_input")->setCommitCallback(boost::bind(&LLPanelBlockedList::onFilterEdit, this, _2));
-
- return LLPanel::postBuild();
-}
-
-void LLPanelBlockedList::draw()
-{
- updateButtons();
- LLPanel::draw();
-}
-
-void LLPanelBlockedList::onOpen(const LLSD& key)
-{
- if (key.has(BLOCKED_PARAM_NAME) && key[BLOCKED_PARAM_NAME].asUUID().notNull())
- {
- selectBlocked(key[BLOCKED_PARAM_NAME].asUUID());
- }
-}
-
-void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
-{
- mBlockedList->resetSelection();
- mBlockedList->selectItemByUUID(mute_id);
-}
-
-void LLPanelBlockedList::showPanelAndSelect(const LLUUID& idToSelect)
-{
- LLFloaterSidePanelContainer::showPanel("people", "panel_people",
- LLSD().with("people_panel_tab_name", "blocked_panel").with(BLOCKED_PARAM_NAME, idToSelect));
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-// Private Section
-//////////////////////////////////////////////////////////////////////////
-void LLPanelBlockedList::updateButtons()
-{
- bool hasSelected = NULL != mBlockedList->getSelectedItem();
- getChildView("unblock_btn")->setEnabled(hasSelected);
- getChildView("blocked_gear_btn")->setEnabled(hasSelected);
-
- getChild<LLUICtrl>("block_limit")->setTextArg("[COUNT]", llformat("%d", mBlockedList->getMuteListSize()));
- getChild<LLUICtrl>("block_limit")->setTextArg("[LIMIT]", llformat("%d", gSavedSettings.getS32("MuteListLimit")));
-}
-
-void LLPanelBlockedList::unblockItem()
-{
- LLBlockedListItem* item = mBlockedList->getBlockedItem();
- if (item)
- {
- LLMute mute(item->getUUID(), item->getName());
- LLMuteList::instance().remove(mute);
- }
-}
-
-void LLPanelBlockedList::onCustomAction(const LLSD& userdata)
-{
- const std::string command_name = userdata.asString();
-
- if ("block_obj_by_name" == command_name)
- {
- blockObjectByName();
- }
- else if ("block_res_by_name" == command_name)
- {
- blockResidentByName();
- }
- else if ("sort_by_name" == command_name)
- {
- mBlockedList->sortByName();
- gSavedSettings.setU32("BlockPeopleSortOrder", E_SORT_BY_NAME);
- }
- else if ("sort_by_type" == command_name)
- {
- mBlockedList->sortByType();
- gSavedSettings.setU32("BlockPeopleSortOrder", E_SORT_BY_TYPE);
- }
-}
-
-bool LLPanelBlockedList::isActionChecked(const LLSD& userdata)
-{
- std::string item = userdata.asString();
- U32 sort_order = gSavedSettings.getU32("BlockPeopleSortOrder");
-
- if ("sort_by_name" == item)
- {
- return E_SORT_BY_NAME == sort_order;
- }
- else if ("sort_by_type" == item)
- {
- return E_SORT_BY_TYPE == sort_order;
- }
-
- return false;
-}
-
-void LLPanelBlockedList::blockResidentByName()
-{
- const bool allow_multiple = false;
- const bool close_on_select = true;
-
- LLView * button = findChild<LLButton>("plus_btn", true);
- LLFloater* root_floater = gFloaterView->getParentFloater(this);
- LLFloaterAvatarPicker * picker = LLFloaterAvatarPicker::show(boost::bind(&LLPanelBlockedList::callbackBlockPicked, this, _1, _2),
- allow_multiple, close_on_select, false, root_floater->getName(), button);
-
- if (root_floater)
- {
- root_floater->addDependentFloater(picker);
- }
-
- mPicker = picker->getHandle();
-}
-
-void LLPanelBlockedList::blockObjectByName()
-{
- LLFloaterGetBlockedObjectName::show(&LLPanelBlockedList::callbackBlockByName);
-}
-
-void LLPanelBlockedList::onFilterEdit(const std::string& search_string)
-{
- std::string filter = search_string;
- LLStringUtil::trimHead(filter);
-
- mBlockedList->setNameFilter(filter);
-}
-
-void LLPanelBlockedList::callbackBlockPicked(const uuid_vec_t& ids, const std::vector<LLAvatarName> names)
-{
- if (names.empty() || ids.empty()) return;
- LLMute mute(ids[0], names[0].getUserName(), LLMute::AGENT);
- LLMuteList::getInstance()->add(mute);
- showPanelAndSelect(mute.mID);
-}
-
-//static
-void LLPanelBlockedList::callbackBlockByName(const std::string& text)
-{
- if (text.empty()) return;
-
- LLMute mute(LLUUID::null, text, LLMute::BY_NAME);
- bool success = LLMuteList::getInstance()->add(mute);
- if (!success)
- {
- LLNotificationsUtil::add("MuteByNameFailed");
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-// LLFloaterGetBlockedObjectName
-//////////////////////////////////////////////////////////////////////////
-
-// Constructor/Destructor
-LLFloaterGetBlockedObjectName::LLFloaterGetBlockedObjectName(const LLSD& key)
-: LLFloater(key)
-, mGetObjectNameCallback(NULL)
-{
-}
-
-// Destroys the object
-LLFloaterGetBlockedObjectName::~LLFloaterGetBlockedObjectName()
-{
- gFocusMgr.releaseFocusIfNeeded( this );
-}
-
-bool LLFloaterGetBlockedObjectName::postBuild()
-{
- getChild<LLButton>("OK")-> setCommitCallback(boost::bind(&LLFloaterGetBlockedObjectName::applyBlocking, this));
- getChild<LLButton>("Cancel")-> setCommitCallback(boost::bind(&LLFloaterGetBlockedObjectName::cancelBlocking, this));
- center();
-
- return LLFloater::postBuild();
-}
-
-bool LLFloaterGetBlockedObjectName::handleKeyHere(KEY key, MASK mask)
-{
- if (key == KEY_RETURN && mask == MASK_NONE)
- {
- applyBlocking();
- return true;
- }
- else if (key == KEY_ESCAPE && mask == MASK_NONE)
- {
- cancelBlocking();
- return true;
- }
-
- return LLFloater::handleKeyHere(key, mask);
-}
-
-// static
-LLFloaterGetBlockedObjectName* LLFloaterGetBlockedObjectName::show(get_object_name_callback_t callback)
-{
- LLFloaterGetBlockedObjectName* floater = LLFloaterReg::showTypedInstance<LLFloaterGetBlockedObjectName>("mute_object_by_name");
-
- floater->mGetObjectNameCallback = callback;
-
- // *TODO: mantipov: should LLFloaterGetBlockedObjectName be closed when panel is closed?
- // old Floater dependency is not enable in panel
- // addDependentFloater(floater);
-
- return floater;
-}
-
-//////////////////////////////////////////////////////////////////////////
-// Private Section
-void LLFloaterGetBlockedObjectName::applyBlocking()
-{
- if (mGetObjectNameCallback)
- {
- const std::string& text = getChild<LLUICtrl>("object_name")->getValue().asString();
- mGetObjectNameCallback(text);
- }
- closeFloater();
-}
-
-void LLFloaterGetBlockedObjectName::cancelBlocking()
-{
- closeFloater();
-}
-
-//EOF
+/**
+ * @file llpanelblockedlist.cpp
+ * @brief Container for blocked Residents & Objects list
+ *
+ * $LicenseInfo:firstyear=2001&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 "llpanelblockedlist.h"
+
+// library include
+#include "llavatarname.h"
+#include "llfiltereditor.h"
+#include "llfloater.h"
+#include "llfloaterreg.h"
+#include "llnotificationsutil.h"
+#include "llscrolllistctrl.h"
+#include "llmenubutton.h"
+
+// project include
+#include "llavatarlistitem.h"
+#include "llblocklist.h"
+#include "llblockedlistitem.h"
+#include "llfloateravatarpicker.h"
+#include "llfloatersidepanelcontainer.h"
+#include "llinventorylistitem.h"
+#include "llinventorymodel.h"
+#include "llsidetraypanelcontainer.h"
+#include "llviewercontrol.h"
+
+static LLPanelInjector<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray");
+
+//
+// Constants
+//
+const std::string BLOCKED_PARAM_NAME = "blocked_to_select";
+
+//-----------------------------------------------------------------------------
+// LLPanelBlockedList()
+//-----------------------------------------------------------------------------
+
+LLPanelBlockedList::LLPanelBlockedList()
+: LLPanel()
+{
+ mCommitCallbackRegistrar.add("Block.Action", boost::bind(&LLPanelBlockedList::onCustomAction, this, _2));
+ mEnableCallbackRegistrar.add("Block.Check", boost::bind(&LLPanelBlockedList::isActionChecked, this, _2));
+}
+
+void LLPanelBlockedList::removePicker()
+{
+ if(mPicker.get())
+ {
+ mPicker.get()->closeFloater();
+ }
+}
+
+bool LLPanelBlockedList::postBuild()
+{
+ mBlockedList = getChild<LLBlockList>("blocked");
+ mBlockedList->setCommitOnSelectionChange(true);
+ this->setVisibleCallback(boost::bind(&LLPanelBlockedList::removePicker, this));
+
+ switch (gSavedSettings.getU32("BlockPeopleSortOrder"))
+ {
+ case E_SORT_BY_NAME:
+ mBlockedList->sortByName();
+ break;
+
+ case E_SORT_BY_TYPE:
+ mBlockedList->sortByType();
+ break;
+ default:
+ LL_WARNS() << "Unrecognized sort order for blocked list" << LL_ENDL;
+ break;
+ }
+
+ // Use the context menu of the Block list for the Block tab gear menu.
+ LLToggleableMenu* blocked_gear_menu = mBlockedList->getContextMenu();
+ if (blocked_gear_menu)
+ {
+ getChild<LLMenuButton>("blocked_gear_btn")->setMenu(blocked_gear_menu, LLMenuButton::MP_BOTTOM_LEFT);
+ }
+
+ getChild<LLButton>("unblock_btn")->setCommitCallback(boost::bind(&LLPanelBlockedList::unblockItem, this));
+ getChild<LLFilterEditor>("blocked_filter_input")->setCommitCallback(boost::bind(&LLPanelBlockedList::onFilterEdit, this, _2));
+
+ return LLPanel::postBuild();
+}
+
+void LLPanelBlockedList::draw()
+{
+ updateButtons();
+ LLPanel::draw();
+}
+
+void LLPanelBlockedList::onOpen(const LLSD& key)
+{
+ if (key.has(BLOCKED_PARAM_NAME) && key[BLOCKED_PARAM_NAME].asUUID().notNull())
+ {
+ selectBlocked(key[BLOCKED_PARAM_NAME].asUUID());
+ }
+}
+
+void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
+{
+ mBlockedList->resetSelection();
+ mBlockedList->selectItemByUUID(mute_id);
+}
+
+void LLPanelBlockedList::showPanelAndSelect(const LLUUID& idToSelect)
+{
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people",
+ LLSD().with("people_panel_tab_name", "blocked_panel").with(BLOCKED_PARAM_NAME, idToSelect));
+}
+
+
+//////////////////////////////////////////////////////////////////////////
+// Private Section
+//////////////////////////////////////////////////////////////////////////
+void LLPanelBlockedList::updateButtons()
+{
+ bool hasSelected = NULL != mBlockedList->getSelectedItem();
+ getChildView("unblock_btn")->setEnabled(hasSelected);
+ getChildView("blocked_gear_btn")->setEnabled(hasSelected);
+
+ getChild<LLUICtrl>("block_limit")->setTextArg("[COUNT]", llformat("%d", mBlockedList->getMuteListSize()));
+ getChild<LLUICtrl>("block_limit")->setTextArg("[LIMIT]", llformat("%d", gSavedSettings.getS32("MuteListLimit")));
+}
+
+void LLPanelBlockedList::unblockItem()
+{
+ LLBlockedListItem* item = mBlockedList->getBlockedItem();
+ if (item)
+ {
+ LLMute mute(item->getUUID(), item->getName());
+ LLMuteList::instance().remove(mute);
+ }
+}
+
+void LLPanelBlockedList::onCustomAction(const LLSD& userdata)
+{
+ const std::string command_name = userdata.asString();
+
+ if ("block_obj_by_name" == command_name)
+ {
+ blockObjectByName();
+ }
+ else if ("block_res_by_name" == command_name)
+ {
+ blockResidentByName();
+ }
+ else if ("sort_by_name" == command_name)
+ {
+ mBlockedList->sortByName();
+ gSavedSettings.setU32("BlockPeopleSortOrder", E_SORT_BY_NAME);
+ }
+ else if ("sort_by_type" == command_name)
+ {
+ mBlockedList->sortByType();
+ gSavedSettings.setU32("BlockPeopleSortOrder", E_SORT_BY_TYPE);
+ }
+}
+
+bool LLPanelBlockedList::isActionChecked(const LLSD& userdata)
+{
+ std::string item = userdata.asString();
+ U32 sort_order = gSavedSettings.getU32("BlockPeopleSortOrder");
+
+ if ("sort_by_name" == item)
+ {
+ return E_SORT_BY_NAME == sort_order;
+ }
+ else if ("sort_by_type" == item)
+ {
+ return E_SORT_BY_TYPE == sort_order;
+ }
+
+ return false;
+}
+
+void LLPanelBlockedList::blockResidentByName()
+{
+ const bool allow_multiple = false;
+ const bool close_on_select = true;
+
+ LLView * button = findChild<LLButton>("plus_btn", true);
+ LLFloater* root_floater = gFloaterView->getParentFloater(this);
+ LLFloaterAvatarPicker * picker = LLFloaterAvatarPicker::show(boost::bind(&LLPanelBlockedList::callbackBlockPicked, this, _1, _2),
+ allow_multiple, close_on_select, false, root_floater->getName(), button);
+
+ if (root_floater)
+ {
+ root_floater->addDependentFloater(picker);
+ }
+
+ mPicker = picker->getHandle();
+}
+
+void LLPanelBlockedList::blockObjectByName()
+{
+ LLFloaterGetBlockedObjectName::show(&LLPanelBlockedList::callbackBlockByName);
+}
+
+void LLPanelBlockedList::onFilterEdit(const std::string& search_string)
+{
+ std::string filter = search_string;
+ LLStringUtil::trimHead(filter);
+
+ mBlockedList->setNameFilter(filter);
+}
+
+void LLPanelBlockedList::callbackBlockPicked(const uuid_vec_t& ids, const std::vector<LLAvatarName> names)
+{
+ if (names.empty() || ids.empty()) return;
+ LLMute mute(ids[0], names[0].getUserName(), LLMute::AGENT);
+ LLMuteList::getInstance()->add(mute);
+ showPanelAndSelect(mute.mID);
+}
+
+//static
+void LLPanelBlockedList::callbackBlockByName(const std::string& text)
+{
+ if (text.empty()) return;
+
+ LLMute mute(LLUUID::null, text, LLMute::BY_NAME);
+ bool success = LLMuteList::getInstance()->add(mute);
+ if (!success)
+ {
+ LLNotificationsUtil::add("MuteByNameFailed");
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////
+// LLFloaterGetBlockedObjectName
+//////////////////////////////////////////////////////////////////////////
+
+// Constructor/Destructor
+LLFloaterGetBlockedObjectName::LLFloaterGetBlockedObjectName(const LLSD& key)
+: LLFloater(key)
+, mGetObjectNameCallback(NULL)
+{
+}
+
+// Destroys the object
+LLFloaterGetBlockedObjectName::~LLFloaterGetBlockedObjectName()
+{
+ gFocusMgr.releaseFocusIfNeeded( this );
+}
+
+bool LLFloaterGetBlockedObjectName::postBuild()
+{
+ getChild<LLButton>("OK")-> setCommitCallback(boost::bind(&LLFloaterGetBlockedObjectName::applyBlocking, this));
+ getChild<LLButton>("Cancel")-> setCommitCallback(boost::bind(&LLFloaterGetBlockedObjectName::cancelBlocking, this));
+ center();
+
+ return LLFloater::postBuild();
+}
+
+bool LLFloaterGetBlockedObjectName::handleKeyHere(KEY key, MASK mask)
+{
+ if (key == KEY_RETURN && mask == MASK_NONE)
+ {
+ applyBlocking();
+ return true;
+ }
+ else if (key == KEY_ESCAPE && mask == MASK_NONE)
+ {
+ cancelBlocking();
+ return true;
+ }
+
+ return LLFloater::handleKeyHere(key, mask);
+}
+
+// static
+LLFloaterGetBlockedObjectName* LLFloaterGetBlockedObjectName::show(get_object_name_callback_t callback)
+{
+ LLFloaterGetBlockedObjectName* floater = LLFloaterReg::showTypedInstance<LLFloaterGetBlockedObjectName>("mute_object_by_name");
+
+ floater->mGetObjectNameCallback = callback;
+
+ // *TODO: mantipov: should LLFloaterGetBlockedObjectName be closed when panel is closed?
+ // old Floater dependency is not enable in panel
+ // addDependentFloater(floater);
+
+ return floater;
+}
+
+//////////////////////////////////////////////////////////////////////////
+// Private Section
+void LLFloaterGetBlockedObjectName::applyBlocking()
+{
+ if (mGetObjectNameCallback)
+ {
+ const std::string& text = getChild<LLUICtrl>("object_name")->getValue().asString();
+ mGetObjectNameCallback(text);
+ }
+ closeFloater();
+}
+
+void LLFloaterGetBlockedObjectName::cancelBlocking()
+{
+ closeFloater();
+}
+
+//EOF