summaryrefslogtreecommitdiff
path: root/indra/newview/llblocklist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llblocklist.cpp')
-rw-r--r--indra/newview/llblocklist.cpp626
1 files changed, 313 insertions, 313 deletions
diff --git a/indra/newview/llblocklist.cpp b/indra/newview/llblocklist.cpp
index 1eab2d8e23..31b83cfb57 100644
--- a/indra/newview/llblocklist.cpp
+++ b/indra/newview/llblocklist.cpp
@@ -35,243 +35,243 @@
static LLDefaultChildRegistry::Register<LLBlockList> r("block_list");
-static const LLBlockListNameComparator NAME_COMPARATOR;
-static const LLBlockListNameTypeComparator NAME_TYPE_COMPARATOR;
+static const LLBlockListNameComparator NAME_COMPARATOR;
+static const LLBlockListNameTypeComparator NAME_TYPE_COMPARATOR;
LLBlockList::LLBlockList(const Params& p)
-: LLFlatListViewEx(p),
- mDirty(true),
- mShouldAddAll(true),
- mActionType(NONE),
- mMuteListSize(0)
+: LLFlatListViewEx(p),
+ mDirty(true),
+ mShouldAddAll(true),
+ mActionType(NONE),
+ mMuteListSize(0)
{
- LLMuteList::getInstance()->addObserver(this);
- mMuteListSize = LLMuteList::getInstance()->getMutes().size();
-
- // Set up context menu.
- LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
- LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
-
- registrar.add ("Block.Action", boost::bind(&LLBlockList::onCustomAction, this, _2));
- enable_registrar.add("Block.Enable", boost::bind(&LLBlockList::isActionEnabled, this, _2));
- enable_registrar.add("Block.Check", boost::bind(&LLBlockList::isMenuItemChecked, this, _2));
- enable_registrar.add("Block.Visible", boost::bind(&LLBlockList::isMenuItemVisible, this, _2));
-
- LLToggleableMenu* context_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>(
- "menu_people_blocked_gear.xml",
- gMenuHolder,
- LLViewerMenuHolderGL::child_registry_t::instance());
- if(context_menu)
- {
- mContextMenu = context_menu->getHandle();
- }
+ LLMuteList::getInstance()->addObserver(this);
+ mMuteListSize = LLMuteList::getInstance()->getMutes().size();
+
+ // Set up context menu.
+ LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
+ LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
+
+ registrar.add ("Block.Action", boost::bind(&LLBlockList::onCustomAction, this, _2));
+ enable_registrar.add("Block.Enable", boost::bind(&LLBlockList::isActionEnabled, this, _2));
+ enable_registrar.add("Block.Check", boost::bind(&LLBlockList::isMenuItemChecked, this, _2));
+ enable_registrar.add("Block.Visible", boost::bind(&LLBlockList::isMenuItemVisible, this, _2));
+
+ LLToggleableMenu* context_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>(
+ "menu_people_blocked_gear.xml",
+ gMenuHolder,
+ LLViewerMenuHolderGL::child_registry_t::instance());
+ if(context_menu)
+ {
+ mContextMenu = context_menu->getHandle();
+ }
}
LLBlockList::~LLBlockList()
{
- if (mContextMenu.get())
- {
- mContextMenu.get()->die();
- }
+ if (mContextMenu.get())
+ {
+ mContextMenu.get()->die();
+ }
- LLMuteList::getInstance()->removeObserver(this);
+ LLMuteList::getInstance()->removeObserver(this);
}
void LLBlockList::createList()
{
- std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
- std::vector<LLMute>::const_iterator mute_it = mutes.begin();
+ std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
+ std::vector<LLMute>::const_iterator mute_it = mutes.begin();
- for (; mute_it != mutes.end(); ++mute_it)
- {
- addNewItem(&*mute_it);
- }
+ for (; mute_it != mutes.end(); ++mute_it)
+ {
+ addNewItem(&*mute_it);
+ }
}
BlockListActionType LLBlockList::getCurrentMuteListActionType()
{
- BlockListActionType type = NONE;
- U32 curSize = LLMuteList::getInstance()->getMutes().size();
- if( curSize > mMuteListSize)
- type = ADD;
- else if(curSize < mMuteListSize)
- type = REMOVE;
-
- return type;
+ BlockListActionType type = NONE;
+ U32 curSize = LLMuteList::getInstance()->getMutes().size();
+ if( curSize > mMuteListSize)
+ type = ADD;
+ else if(curSize < mMuteListSize)
+ type = REMOVE;
+
+ return type;
}
void LLBlockList::onChangeDetailed(const LLMute &mute)
{
- mActionType = getCurrentMuteListActionType();
+ mActionType = getCurrentMuteListActionType();
- mCurItemId = mute.mID;
- mCurItemName = mute.mName;
- mCurItemType = mute.mType;
- mCurItemFlags = mute.mFlags;
+ mCurItemId = mute.mID;
+ mCurItemName = mute.mName;
+ mCurItemType = mute.mType;
+ mCurItemFlags = mute.mFlags;
- refresh();
+ refresh();
}
BOOL LLBlockList::handleRightMouseDown(S32 x, S32 y, MASK mask)
{
- BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
+ BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
- LLToggleableMenu* context_menu = mContextMenu.get();
- if (context_menu && size())
- {
- context_menu->buildDrawLabels();
- context_menu->updateParent(LLMenuGL::sMenuContainer);
- LLMenuGL::showPopup(this, context_menu, x, y);
- }
+ LLToggleableMenu* context_menu = mContextMenu.get();
+ if (context_menu && size())
+ {
+ context_menu->buildDrawLabels();
+ context_menu->updateParent(LLMenuGL::sMenuContainer);
+ LLMenuGL::showPopup(this, context_menu, x, y);
+ }
- return handled;
+ return handled;
}
void LLBlockList::removeListItem(const LLMute* mute)
{
- if (mute->mID.notNull())
- {
- removeItemByUUID(mute->mID);
- }
- else
- {
- removeItemByValue(mute->mName);
- }
+ if (mute->mID.notNull())
+ {
+ removeItemByUUID(mute->mID);
+ }
+ else
+ {
+ removeItemByValue(mute->mName);
+ }
}
void LLBlockList::hideListItem(LLBlockedListItem* item, bool show)
{
- item->setVisible(show);
+ item->setVisible(show);
}
void LLBlockList::setNameFilter(const std::string& filter)
{
- std::string filter_upper = filter;
- LLStringUtil::toUpper(filter_upper);
- if (mNameFilter != filter_upper)
- {
- mNameFilter = filter_upper;
- setDirty();
- }
+ std::string filter_upper = filter;
+ LLStringUtil::toUpper(filter_upper);
+ if (mNameFilter != filter_upper)
+ {
+ mNameFilter = filter_upper;
+ setDirty();
+ }
}
void LLBlockList::sortByName()
{
- setComparator(&NAME_COMPARATOR);
- sort();
+ setComparator(&NAME_COMPARATOR);
+ sort();
}
void LLBlockList::sortByType()
{
- setComparator(&NAME_TYPE_COMPARATOR);
- sort();
+ setComparator(&NAME_TYPE_COMPARATOR);
+ sort();
}
void LLBlockList::draw()
{
- if (mDirty)
- {
- refresh();
- }
+ if (mDirty)
+ {
+ refresh();
+ }
- LLFlatListView::draw();
+ LLFlatListView::draw();
}
void LLBlockList::addNewItem(const LLMute* mute)
{
- LLBlockedListItem* item = new LLBlockedListItem(mute);
- if (!mNameFilter.empty())
- {
- item->highlightName(mNameFilter);
- }
- if (item->getUUID().notNull())
- {
- addItem(item, item->getUUID(), ADD_BOTTOM);
- }
- else
- {
- addItem(item, item->getName(), ADD_BOTTOM);
- }
+ LLBlockedListItem* item = new LLBlockedListItem(mute);
+ if (!mNameFilter.empty())
+ {
+ item->highlightName(mNameFilter);
+ }
+ if (item->getUUID().notNull())
+ {
+ addItem(item, item->getUUID(), ADD_BOTTOM);
+ }
+ else
+ {
+ addItem(item, item->getName(), ADD_BOTTOM);
+ }
}
void LLBlockList::refresh()
{
- bool have_filter = !mNameFilter.empty();
-
- // save selection to restore it after list rebuilt
- LLSD selected = getSelectedValue();
- LLSD next_selected;
-
- if(mShouldAddAll) // creating list of blockers
- {
- clear();
- createList();
- mShouldAddAll = false;
- }
- else
- {
- // handle remove/add functionality
- LLMute mute(mCurItemId, mCurItemName, mCurItemType, mCurItemFlags);
- if(mActionType == ADD)
- {
- addNewItem(&mute);
- }
- else if(mActionType == REMOVE)
- {
- if ((mute.mID.notNull() && selected.isUUID() && selected.asUUID() == mute.mID)
- || (mute.mID.isNull() && selected.isString() && selected.asString() == mute.mName))
- {
- // we are going to remove currently selected item, so select next item and save the selection to restore it
- if (!selectNextItemPair(false, true))
- {
- selectNextItemPair(true, true);
- }
- next_selected = getSelectedValue();
- }
- removeListItem(&mute);
- }
- mActionType = NONE;
- }
-
- // handle filter functionality
- if(have_filter || (!have_filter && !mPrevNameFilter.empty()))
- {
- // we should update visibility of our items if previous filter was not empty
- std::vector < LLPanel* > allItems;
- getItems(allItems);
- std::vector < LLPanel* >::iterator it = allItems.begin();
-
- for(; it != allItems.end() ; ++it)
- {
- LLBlockedListItem * curItem = dynamic_cast<LLBlockedListItem *> (*it);
- if(curItem)
- {
- hideListItem(curItem, findInsensitive(curItem->getName(), mNameFilter));
- }
- }
- }
- mPrevNameFilter = mNameFilter;
-
- if (selected.isDefined())
- {
- if (getItemPair(selected))
- {
- // restore previously selected item
- selectItemPair(getItemPair(selected), true);
- }
- else if (next_selected.isDefined() && getItemPair(next_selected))
- {
- // previously selected item was removed, so select next item
- selectItemPair(getItemPair(next_selected), true);
- }
- }
- mMuteListSize = LLMuteList::getInstance()->getMutes().size();
-
- // Sort the list.
- sort();
-
- setDirty(false);
+ bool have_filter = !mNameFilter.empty();
+
+ // save selection to restore it after list rebuilt
+ LLSD selected = getSelectedValue();
+ LLSD next_selected;
+
+ if(mShouldAddAll) // creating list of blockers
+ {
+ clear();
+ createList();
+ mShouldAddAll = false;
+ }
+ else
+ {
+ // handle remove/add functionality
+ LLMute mute(mCurItemId, mCurItemName, mCurItemType, mCurItemFlags);
+ if(mActionType == ADD)
+ {
+ addNewItem(&mute);
+ }
+ else if(mActionType == REMOVE)
+ {
+ if ((mute.mID.notNull() && selected.isUUID() && selected.asUUID() == mute.mID)
+ || (mute.mID.isNull() && selected.isString() && selected.asString() == mute.mName))
+ {
+ // we are going to remove currently selected item, so select next item and save the selection to restore it
+ if (!selectNextItemPair(false, true))
+ {
+ selectNextItemPair(true, true);
+ }
+ next_selected = getSelectedValue();
+ }
+ removeListItem(&mute);
+ }
+ mActionType = NONE;
+ }
+
+ // handle filter functionality
+ if(have_filter || (!have_filter && !mPrevNameFilter.empty()))
+ {
+ // we should update visibility of our items if previous filter was not empty
+ std::vector < LLPanel* > allItems;
+ getItems(allItems);
+ std::vector < LLPanel* >::iterator it = allItems.begin();
+
+ for(; it != allItems.end() ; ++it)
+ {
+ LLBlockedListItem * curItem = dynamic_cast<LLBlockedListItem *> (*it);
+ if(curItem)
+ {
+ hideListItem(curItem, findInsensitive(curItem->getName(), mNameFilter));
+ }
+ }
+ }
+ mPrevNameFilter = mNameFilter;
+
+ if (selected.isDefined())
+ {
+ if (getItemPair(selected))
+ {
+ // restore previously selected item
+ selectItemPair(getItemPair(selected), true);
+ }
+ else if (next_selected.isDefined() && getItemPair(next_selected))
+ {
+ // previously selected item was removed, so select next item
+ selectItemPair(getItemPair(next_selected), true);
+ }
+ }
+ mMuteListSize = LLMuteList::getInstance()->getMutes().size();
+
+ // Sort the list.
+ sort();
+
+ setDirty(false);
}
bool LLBlockList::findInsensitive(std::string haystack, const std::string& needle_upper)
@@ -282,182 +282,182 @@ bool LLBlockList::findInsensitive(std::string haystack, const std::string& needl
LLBlockedListItem* LLBlockList::getBlockedItem() const
{
- LLPanel* panel = LLFlatListView::getSelectedItem();
- LLBlockedListItem* item = dynamic_cast<LLBlockedListItem*>(panel);
- return item;
+ LLPanel* panel = LLFlatListView::getSelectedItem();
+ LLBlockedListItem* item = dynamic_cast<LLBlockedListItem*>(panel);
+ return item;
}
bool LLBlockList::isActionEnabled(const LLSD& userdata)
{
- bool action_enabled = true;
-
- const std::string command_name = userdata.asString();
-
- if ("profile_item" == command_name
- || "block_voice" == command_name
- || "block_text" == command_name
- || "block_particles" == command_name
- || "block_obj_sounds" == command_name)
- {
- LLBlockedListItem* item = getBlockedItem();
- action_enabled = item && (LLMute::AGENT == item->getType());
- }
-
- if ("unblock_item" == command_name)
- {
- action_enabled = getSelectedItem() != NULL;
- }
-
- return action_enabled;
+ bool action_enabled = true;
+
+ const std::string command_name = userdata.asString();
+
+ if ("profile_item" == command_name
+ || "block_voice" == command_name
+ || "block_text" == command_name
+ || "block_particles" == command_name
+ || "block_obj_sounds" == command_name)
+ {
+ LLBlockedListItem* item = getBlockedItem();
+ action_enabled = item && (LLMute::AGENT == item->getType());
+ }
+
+ if ("unblock_item" == command_name)
+ {
+ action_enabled = getSelectedItem() != NULL;
+ }
+
+ return action_enabled;
}
void LLBlockList::onCustomAction(const LLSD& userdata)
{
- if (!isActionEnabled(userdata))
- {
- return;
- }
-
- LLBlockedListItem* item = getBlockedItem();
- const std::string command_name = userdata.asString();
-
- if ("unblock_item" == command_name)
- {
- LLMute mute(item->getUUID(), item->getName());
- LLMuteList::getInstance()->remove(mute);
- }
- else if ("profile_item" == command_name)
- {
- switch(item->getType())
- {
-
- case LLMute::AGENT:
- LLAvatarActions::showProfile(item->getUUID());
- break;
-
- default:
- break;
- }
- }
- else if ("block_voice" == command_name)
- {
- toggleMute(LLMute::flagVoiceChat);
- }
- else if ("block_text" == command_name)
- {
- toggleMute(LLMute::flagTextChat);
- }
- else if ("block_particles" == command_name)
- {
- toggleMute(LLMute::flagParticles);
- }
- else if ("block_obj_sounds" == command_name)
- {
- toggleMute(LLMute::flagObjectSounds);
- }
+ if (!isActionEnabled(userdata))
+ {
+ return;
+ }
+
+ LLBlockedListItem* item = getBlockedItem();
+ const std::string command_name = userdata.asString();
+
+ if ("unblock_item" == command_name)
+ {
+ LLMute mute(item->getUUID(), item->getName());
+ LLMuteList::getInstance()->remove(mute);
+ }
+ else if ("profile_item" == command_name)
+ {
+ switch(item->getType())
+ {
+
+ case LLMute::AGENT:
+ LLAvatarActions::showProfile(item->getUUID());
+ break;
+
+ default:
+ break;
+ }
+ }
+ else if ("block_voice" == command_name)
+ {
+ toggleMute(LLMute::flagVoiceChat);
+ }
+ else if ("block_text" == command_name)
+ {
+ toggleMute(LLMute::flagTextChat);
+ }
+ else if ("block_particles" == command_name)
+ {
+ toggleMute(LLMute::flagParticles);
+ }
+ else if ("block_obj_sounds" == command_name)
+ {
+ toggleMute(LLMute::flagObjectSounds);
+ }
}
bool LLBlockList::isMenuItemChecked(const LLSD& userdata)
{
- LLBlockedListItem* item = getBlockedItem();
- if (!item)
- {
- return false;
- }
-
- const std::string command_name = userdata.asString();
-
- if ("block_voice" == command_name)
- {
- return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagVoiceChat);
- }
- else if ("block_text" == command_name)
- {
- return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagTextChat);
- }
- else if ("block_particles" == command_name)
- {
- return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagParticles);
- }
- else if ("block_obj_sounds" == command_name)
- {
- return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagObjectSounds);
- }
-
- return false;
+ LLBlockedListItem* item = getBlockedItem();
+ if (!item)
+ {
+ return false;
+ }
+
+ const std::string command_name = userdata.asString();
+
+ if ("block_voice" == command_name)
+ {
+ return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagVoiceChat);
+ }
+ else if ("block_text" == command_name)
+ {
+ return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagTextChat);
+ }
+ else if ("block_particles" == command_name)
+ {
+ return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagParticles);
+ }
+ else if ("block_obj_sounds" == command_name)
+ {
+ return LLMuteList::getInstance()->isMuted(item->getUUID(), LLMute::flagObjectSounds);
+ }
+
+ return false;
}
bool LLBlockList::isMenuItemVisible(const LLSD& userdata)
{
- LLBlockedListItem* item = getBlockedItem();
- const std::string command_name = userdata.asString();
-
- if ("block_voice" == command_name
- || "block_text" == command_name
- || "block_particles" == command_name
- || "block_obj_sounds" == command_name)
- {
- return item && (LLMute::AGENT == item->getType());
- }
-
- return false;
+ LLBlockedListItem* item = getBlockedItem();
+ const std::string command_name = userdata.asString();
+
+ if ("block_voice" == command_name
+ || "block_text" == command_name
+ || "block_particles" == command_name
+ || "block_obj_sounds" == command_name)
+ {
+ return item && (LLMute::AGENT == item->getType());
+ }
+
+ return false;
}
void LLBlockList::toggleMute(U32 flags)
{
- LLBlockedListItem* item = getBlockedItem();
- LLMute mute(item->getUUID(), item->getName(), item->getType());
-
- if (!LLMuteList::getInstance()->isMuted(item->getUUID(), flags))
- {
- LLMuteList::getInstance()->add(mute, flags);
- }
- else
- {
- LLMuteList::getInstance()->remove(mute, flags);
- }
+ LLBlockedListItem* item = getBlockedItem();
+ LLMute mute(item->getUUID(), item->getName(), item->getType());
+
+ if (!LLMuteList::getInstance()->isMuted(item->getUUID(), flags))
+ {
+ LLMuteList::getInstance()->add(mute, flags);
+ }
+ else
+ {
+ LLMuteList::getInstance()->remove(mute, flags);
+ }
}
bool LLBlockListItemComparator::compare(const LLPanel* item1, const LLPanel* item2) const
{
- const LLBlockedListItem* blocked_item1 = dynamic_cast<const LLBlockedListItem*>(item1);
- const LLBlockedListItem* blocked_item2 = dynamic_cast<const LLBlockedListItem*>(item2);
+ const LLBlockedListItem* blocked_item1 = dynamic_cast<const LLBlockedListItem*>(item1);
+ const LLBlockedListItem* blocked_item2 = dynamic_cast<const LLBlockedListItem*>(item2);
- if (!blocked_item1 || !blocked_item2)
- {
- LL_ERRS() << "blocked_item1 and blocked_item2 cannot be null" << LL_ENDL;
- return true;
- }
+ if (!blocked_item1 || !blocked_item2)
+ {
+ LL_ERRS() << "blocked_item1 and blocked_item2 cannot be null" << LL_ENDL;
+ return true;
+ }
- return doCompare(blocked_item1, blocked_item2);
+ return doCompare(blocked_item1, blocked_item2);
}
bool LLBlockListNameComparator::doCompare(const LLBlockedListItem* blocked_item1, const LLBlockedListItem* blocked_item2) const
{
- std::string name1 = blocked_item1->getName();
- std::string name2 = blocked_item2->getName();
+ std::string name1 = blocked_item1->getName();
+ std::string name2 = blocked_item2->getName();
- LLStringUtil::toUpper(name1);
- LLStringUtil::toUpper(name2);
+ LLStringUtil::toUpper(name1);
+ LLStringUtil::toUpper(name2);
- return name1 < name2;
+ return name1 < name2;
}
bool LLBlockListNameTypeComparator::doCompare(const LLBlockedListItem* blocked_item1, const LLBlockedListItem* blocked_item2) const
{
- LLMute::EType type1 = blocked_item1->getType();
- LLMute::EType type2 = blocked_item2->getType();
+ LLMute::EType type1 = blocked_item1->getType();
+ LLMute::EType type2 = blocked_item2->getType();
- // if mute type is LLMute::BY_NAME or LLMute::OBJECT it means that this mute is an object
- bool both_mutes_are_objects = (LLMute::OBJECT == type1 || LLMute::BY_NAME == type1) && (LLMute::OBJECT == type2 || LLMute::BY_NAME == type2);
+ // if mute type is LLMute::BY_NAME or LLMute::OBJECT it means that this mute is an object
+ bool both_mutes_are_objects = (LLMute::OBJECT == type1 || LLMute::BY_NAME == type1) && (LLMute::OBJECT == type2 || LLMute::BY_NAME == type2);
- // mute types may be different, but since both LLMute::BY_NAME and LLMute::OBJECT types represent objects
- // it's needed to perform additional checking of both_mutes_are_objects variable
- if (type1 != type2 && !both_mutes_are_objects)
- {
- // objects in block list go first, so return true if mute type is not an avatar
- return LLMute::AGENT != type1;
- }
+ // mute types may be different, but since both LLMute::BY_NAME and LLMute::OBJECT types represent objects
+ // it's needed to perform additional checking of both_mutes_are_objects variable
+ if (type1 != type2 && !both_mutes_are_objects)
+ {
+ // objects in block list go first, so return true if mute type is not an avatar
+ return LLMute::AGENT != type1;
+ }
- return NAME_COMPARATOR.compare(blocked_item1, blocked_item2);
+ return NAME_COMPARATOR.compare(blocked_item1, blocked_item2);
}