void LLCommonUtils::computeDifference( const uuid_vec_t& vnew, const uuid_vec_t& vcur, uuid_vec_t& vadded, uuid_vec_t& vremoved) { uuid_vec_t vnew_copy(vnew); uuid_vec_t vcur_copy(vcur); std::sort(vnew_copy.begin(), vnew_copy.end()); std::sort(vcur_copy.begin(), vcur_copy.end()); size_t maxsize = llmax(vnew_copy.size(), vcur_copy.size()); vadded.resize(maxsize); vremoved.resize(maxsize); uuid_vec_t::iterator it; // what was removed it = set_difference(vcur_copy.begin(), vcur_copy.end(), vnew_copy.begin(), vnew_copy.end(), vremoved.begin()); vremoved.erase(it, vremoved.end()); // what was added it = set_difference(vnew_copy.begin(), vnew_copy.end(), vcur_copy.begin(), vcur_copy.end(), vadded.begin()); vadded.erase(it, vadded.end()); }
void LLListContextMenu::show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y) { LLContextMenu* menup = mMenuHandle.get(); if (menup) { //preventing parent (menu holder) from deleting already "dead" context menus on exit LLView* parent = menup->getParent(); if (parent) { parent->removeChild(menup); } delete menup; mUUIDs.clear(); } if ( uuids.empty() ) { return; } mUUIDs.resize(uuids.size()); std::copy(uuids.begin(), uuids.end(), mUUIDs.begin()); menup = createMenu(); if (!menup) { llwarns << "Context menu creation failed" << llendl; return; } mMenuHandle = menup->getHandle(); menup->show(x, y); LLMenuGL::showPopup(spawning_view, menup, x, y); }
// static void LLAvatarActions::startAdhocCall(const uuid_vec_t& ids) { if (ids.size() == 0) { return; } // convert vector into LLDynamicArray for addSession LLDynamicArray<LLUUID> id_array; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { id_array.push_back(*it); } // create the new ad hoc voice session const std::string title = LLTrans::getString("conference-title"); LLUUID session_id = gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], id_array, true); if (session_id == LLUUID::null) { return; } gIMMgr->autoStartCallOnStartup(session_id); make_ui_sound("UISndStartIM"); }
// static void LLAvatarActions::removeFriendsDialog(const uuid_vec_t& ids) { if(ids.size() == 0) return; LLSD args; std::string msgType; if(ids.size() == 1) { LLUUID agent_id = ids[0]; LLAvatarName av_name; if(LLAvatarNameCache::get(agent_id, &av_name)) { args["NAME"] = av_name.getNSName(); } msgType = "RemoveFromFriends"; } else { msgType = "RemoveMultipleFromFriends"; } LLSD payload; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { payload["ids"].append(*it); } LLNotificationsUtil::add(msgType, args, payload, &handleRemove); }
// static void LLAvatarActions::removeFriendsDialog(const uuid_vec_t& ids) { if(ids.size() == 0) return; LLSD args; std::string msgType; if(ids.size() == 1) { LLUUID agent_id = ids[0]; std::string first, last; if(gCacheName->getName(agent_id, first, last)) { args["FIRST_NAME"] = first; args["LAST_NAME"] = last; } msgType = "RemoveFromFriends"; } else { msgType = "RemoveMultipleFromFriends"; } LLSD payload; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { payload["ids"].append(*it); } LLNotificationsUtil::add(msgType, args, payload, &handleRemove); }
// static void LLAvatarActions::startAdhocCall(const uuid_vec_t& ids) { if (ids.size() == 0) { return; } for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { // [RLVa:KB] - Checked: 2011-04-11 (RLVa-1.3.0) const LLUUID& idAgent = *it; if (!RlvActions::canStartIM(idAgent)) { make_ui_sound("UISndInvalidOp"); RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTCONF); return; } // [/RLVa:KB] // id_array.push_back(*it); } // create the new ad hoc voice session const std::string title = LLTrans::getString("conference-title"); LLUUID session_id = gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], ids); if (session_id.isNull()) { return; } gIMMgr->autoStartCallOnStartup(session_id); make_ui_sound("UISndStartIM"); }
void LLPanelPlaces::showAddedLandmarkInfo(const uuid_vec_t& items) { for (uuid_vec_t::const_iterator item_iter = items.begin(); item_iter != items.end(); ++item_iter) { const LLUUID& item_id = (*item_iter); if(!highlight_offered_object(item_id)) { continue; } LLInventoryItem* item = gInventory.getItem(item_id); llassert(item); if (item && (LLAssetType::AT_LANDMARK == item->getType()) ) { // Created landmark is passed to Places panel to allow its editing. // If the panel is closed we don't reopen it until created landmark is loaded. if("create_landmark" == getPlaceInfoType() && !getItem()) { setItem(item); } } } }
// static void LLListContextMenu::handleMultiple(functor_t functor, const uuid_vec_t& ids) { uuid_vec_t::const_iterator it; for (it = ids.begin(); it != ids.end(); ++it) { functor(*it); } }
// static bool LLAvatarActions::canOfferTeleport(const uuid_vec_t& ids) { bool result = true; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { if(!canOfferTeleport(*it)) { result = false; break; } } return result; }
LLInventoryFetchComboObserver::LLInventoryFetchComboObserver(const uuid_vec_t& folder_ids, const uuid_vec_t& item_ids) { mFetchDescendents = new LLInventoryFetchDescendentsObserver(folder_ids); uuid_vec_t pruned_item_ids; for (uuid_vec_t::const_iterator item_iter = item_ids.begin(); item_iter != item_ids.end(); ++item_iter) { const LLUUID& item_id = (*item_iter); const LLViewerInventoryItem* item = gInventory.getItem(item_id); if (item && std::find(folder_ids.begin(), folder_ids.end(), item->getParentUUID()) == folder_ids.end()) { continue; } pruned_item_ids.push_back(item_id); } mFetchItems = new LLInventoryFetchItemsObserver(pruned_item_ids); mFetchDescendents = new LLInventoryFetchDescendentsObserver(folder_ids); }
bool LLPanelPeople::isItemsFreeOfFriends(const uuid_vec_t& uuids) { const LLAvatarTracker& av_tracker = LLAvatarTracker::instance(); for ( uuid_vec_t::const_iterator id = uuids.begin(), id_end = uuids.end(); id != id_end; ++id ) { if (av_tracker.isBuddy (*id)) { return false; } } return true; }
// static void LLAvatarActions::startConference(const uuid_vec_t& ids) { // *HACK: Copy into dynamic array LLDynamicArray<LLUUID> id_array; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { id_array.push_back(*it); } const std::string title = LLTrans::getString("conference-title"); LLUUID session_id = gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], id_array); if (session_id != LLUUID::null) { LLIMFloater::show(session_id); } make_ui_sound("UISndStartIM"); }
// static bool LLAvatarActions::canOfferTeleport(const uuid_vec_t& ids) { // We can't send more than 250 lures in a single message, so disable this // button when there are too many id's selected. if(ids.size() > 250) return false; bool result = true; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { if(!canOfferTeleport(*it)) { result = false; break; } } return result; }
void LLPanelFriends::updateFriends(U32 changed_mask) { LLUUID selected_id; LLCtrlListInterface *friends_list = childGetListInterface("friend_list"); if (!friends_list) return; LLCtrlScrollInterface *friends_scroll = childGetScrollInterface("friend_list"); if (!friends_scroll) return; // We kill the selection warning, otherwise we'll spam with warning popups // if the maximum amount of friends are selected mShowMaxSelectWarning = false; const uuid_vec_t selected_friends = mFriendsList->getSelectedIDs(); if(changed_mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE)) { refreshNames(changed_mask); } else if(changed_mask & LLFriendObserver::POWERS) { --mNumRightsChanged; if(mNumRightsChanged > 0) { mPeriod = RIGHTS_CHANGE_TIMEOUT; mEventTimer.start(); mAllowRightsChange = FALSE; } else { tick(); } } if(!selected_friends.empty()) { // only non-null if friends was already found. This may fail, // but we don't really care here, because refreshUI() will // clean up the interface. friends_list->setCurrentByID(selected_id); for(uuid_vec_t::const_iterator itr = selected_friends.begin(); itr != selected_friends.end(); ++itr) { friends_list->setSelectedByValue(*itr, true); } } refreshUI(); mShowMaxSelectWarning = true; }
// static void LLAvatarActions::copyUUIDs(const uuid_vec_t& ids) { std::string ids_string; const std::string& separator = LLTrans::getString("words_separator"); for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { const LLUUID& id = *it; if (id.isNull()) continue; if (!ids_string.empty()) ids_string.append(separator); ids_string.append(id.asString()); } if (!ids_string.empty()) gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(ids_string)); }
// static void LLAvatarActions::startConference(const uuid_vec_t& ids) { for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { // [RLVa:KB] - Checked: 2011-04-11 (RLVa-1.3.0h) | Added: RLVa-1.3.0h const LLUUID& idAgent = *it; if ( (rlv_handler_t::isEnabled()) && (!gRlvHandler.canStartIM(idAgent)) ) { make_ui_sound("UISndInvalidOp"); RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTCONF, LLSD().with("RECIPIENT", LLSLURL("agent", idAgent, "completename").getSLURLString())); return; } // [/RLVa:KB] } static LLCachedControl<bool> tear_off("OtherChatsTornOff"); if (!tear_off) gIMMgr->setFloaterOpen(true); const std::string title = LLTrans::getString("conference-title"); gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], ids); make_ui_sound("UISndStartIM"); }
// static void LLAvatarActions::buildResidentsString(const uuid_vec_t& avatar_uuids, std::string& residents_string) { std::vector<LLAvatarName> avatar_names; uuid_vec_t::const_iterator it = avatar_uuids.begin(); for (; it != avatar_uuids.end(); ++it) { LLAvatarName av_name; if (LLAvatarNameCache::get(*it, &av_name)) { avatar_names.push_back(av_name); } } // We should check whether the vector is not empty to pass the assertion // that avatar_names.size() > 0 in LLAvatarActions::buildResidentsString. if (!avatar_names.empty()) { LLAvatarActions::buildResidentsString(avatar_names, residents_string); } }
// static void LLAvatarActions::startConference(const uuid_vec_t& ids) { for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { // [RLVa:KB] - Checked: 2011-04-11 (RLVa-1.3.0) const LLUUID& idAgent = *it; if (!RlvActions::canStartIM(idAgent)) { make_ui_sound("UISndInvalidOp"); RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTCONF); return; } // [/RLVa:KB] } static LLCachedControl<bool> tear_off("OtherChatsTornOff"); if (!tear_off) gIMMgr->setFloaterOpen(true); const std::string title = LLTrans::getString("conference-title"); gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], ids); make_ui_sound("UISndStartIM"); }
// static void LLViewerAttachMenu::attachObjects(const uuid_vec_t& items, const std::string& joint_name) { LLViewerJointAttachment* attachmentp = NULL; for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); iter != gAgentAvatarp->mAttachmentPoints.end(); ) { LLVOAvatar::attachment_map_t::iterator curiter = iter++; LLViewerJointAttachment* attachment = curiter->second; if (attachment->getName() == joint_name) { attachmentp = attachment; break; } } if (attachmentp == NULL) { return; } for (uuid_vec_t::const_iterator it = items.begin(); it != items.end(); ++it) { const LLUUID &id = *it; LLViewerInventoryItem* item = (LLViewerInventoryItem*)gInventory.getLinkedItem(id); if(item && gInventory.isObjectDescendentOf(id, gInventory.getRootFolderID())) { rez_attachment(item, attachmentp); // don't replace if called from an "Attach To..." menu } else if(item && item->isFinished()) { // must be in library. copy it to our inventory and put it on. LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(attachmentp); copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(), LLUUID::null, std::string(), cb); } } }
// static void LLAvatarActions::startConference(const uuid_vec_t& ids, const LLUUID& floater_id) { // *HACK: Copy into dynamic array std::vector<LLUUID> id_array; id_array.reserve(ids.size()); for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { id_array.push_back(*it); } const std::string title = LLTrans::getString("conference-title"); LLUUID session_id = gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], id_array, false, floater_id); if (session_id == LLUUID::null) { return; } LLFloaterIMContainer::getInstance()->showConversation(session_id); make_ui_sound("UISndStartIM"); }
// Checked: 2010-08-30 (RLVa-1.2.1c) | Modified: RLVa-1.2.1c bool RlvInventory::getPath(const uuid_vec_t& idItems, LLInventoryModel::cat_array_t& folders) const { // Sanity check - can't do anything without a shared root const LLViewerInventoryCategory* pRlvRoot = RlvInventory::instance().getSharedRoot(); if (!pRlvRoot) return false; folders.clear(); for (uuid_vec_t::const_iterator itItem = idItems.begin(); itItem != idItems.end(); ++itItem) { const LLInventoryItem* pItem = gInventory.getItem(*itItem); if ( (pItem) && (gInventory.isObjectDescendentOf(pItem->getUUID(), pRlvRoot->getUUID())) ) { // If the containing folder is a folded folder we need its parent LLViewerInventoryCategory* pFolder = gInventory.getCategory(pItem->getParentUUID()); if (RlvInventory::instance().isFoldedFolder(pFolder, true)) pFolder = gInventory.getCategory(pFolder->getParentUUID()); folders.push_back(pFolder); } } return (folders.count() != 0); }
// static void LLAvatarActions::startAdhocCall(const uuid_vec_t& ids) { if (ids.size() == 0) { return; } // convert vector into LLDynamicArray for addSession LLDynamicArray<LLUUID> id_array; for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) { // [RLVa:KB] - Checked: 2011-04-11 (RLVa-1.3.0h) | Added: RLVa-1.3.0h const LLUUID& idAgent = *it; if ( (rlv_handler_t::isEnabled()) && (!gRlvHandler.canStartIM(idAgent)) ) { make_ui_sound("UISndInvalidOp"); RlvUtil::notifyBlocked(RLV_STRING_BLOCKED_STARTCONF, LLSD().with("RECIPIENT", LLSLURL("agent", idAgent, "completename").getSLURLString())); return; } id_array.push_back(idAgent); // [/RLVa:KB] // id_array.push_back(*it); } // create the new ad hoc voice session const std::string title = LLTrans::getString("conference-title"); LLUUID session_id = gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], id_array); if (session_id.isNull()) { return; } gIMMgr->autoStartCallOnStartup(session_id); make_ui_sound("UISndStartIM"); }
BOOL LLInventoryModelFetchDescendentsResponder::getIsRecursive(const LLUUID& cat_id) const { return (std::find(mRecursiveCatUUIDs.begin(),mRecursiveCatUUIDs.end(), cat_id) != mRecursiveCatUUIDs.end()); }
// static void LLAvatarActions::showProfiles(const uuid_vec_t& ids, bool web) { for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it) showProfile(*it, web); }
void LLPanelFriends::refreshRightsChangeList() { const uuid_vec_t friends = mFriendsList->getSelectedIDs(); S32 num_selected = friends.size(); bool can_offer_teleport = num_selected >= 1; bool selected_friends_online = true; /*LLTextBox* processing_label = getChild<LLTextBox>("process_rights_label"); if(!mAllowRightsChange) { if(processing_label) { processing_label->setVisible(true); // ignore selection for now friends.clear(); num_selected = 0; } } else if(processing_label) { processing_label->setVisible(false); } Making Dummy View -HgB */ const LLRelationship* friend_status = NULL; for(uuid_vec_t::const_iterator itr = friends.begin(); itr != friends.end(); ++itr) { friend_status = LLAvatarTracker::instance().getBuddyInfo(*itr); if (friend_status) { if(!friend_status->isOnline()) { can_offer_teleport = false; selected_friends_online = false; } } else // missing buddy info, don't allow any operations { can_offer_teleport = false; } } //Stuff for the online/total/select counts. getChild<LLTextBox>("s_num")->setValue(llformat("%d", num_selected)); getChild<LLTextBox>("f_num")->setValue(llformat("%d / %d", mNumOnline, mFriendsList->getItemCount())); if (num_selected == 0) // nothing selected { childSetEnabled("im_btn", FALSE); //childSetEnabled("assign_btn", FALSE); childSetEnabled("offer_teleport_btn", FALSE); } else // we have at least one friend selected... { // only allow IMs to groups when everyone in the group is online // to be consistent with context menus in inventory and because otherwise // offline friends would be silently dropped from the session childSetEnabled("im_btn", selected_friends_online || num_selected == 1); //childSetEnabled("assign_btn", num_selected == 1); childSetEnabled("offer_teleport_btn", can_offer_teleport); } }