// Pop the top object off of the queue. // Return TRUE if the queue has started, otherwise FALSE. BOOL LLFloaterBulkPermission::popNext() { // get the head element from the container, and attempt to get its inventory. BOOL rv = FALSE; S32 count = mObjectIDs.count(); if(mCurrentObjectID.isNull() && (count > 0)) { mCurrentObjectID = mObjectIDs.get(0); //llinfos << "mCurrentID: " << mCurrentObjectID << llendl; mObjectIDs.remove(0); LLViewerObject* obj = gObjectList.findObject(mCurrentObjectID); if(obj) { //llinfos << "requesting inv for " << mCurrentObjectID << llendl; LLUUID* id = new LLUUID(mID); registerVOInventoryListener(obj,id); requestVOInventory(); rv = TRUE; } else { llinfos<<"NULL LLViewerObject" <<llendl; } } return rv; }
// returns true if the queue has started, otherwise false. This // method pops the top object off of the queue. BOOL LLFloaterScriptQueue::popNext() { // get the first element off of the container, and attempt to get // the inventory. BOOL rv = FALSE; S32 count = mObjectIDs.count(); if(mCurrentObjectID.isNull() && (count > 0)) { mCurrentObjectID = mObjectIDs.get(0); llinfos << "LLFloaterScriptQueue::popNext() - mCurrentID: " << mCurrentObjectID << llendl; mObjectIDs.remove(0); LLViewerObject* obj = gObjectList.findObject(mCurrentObjectID); if(obj) { llinfos << "LLFloaterScriptQueue::popNext() requesting inv for " << mCurrentObjectID << llendl; LLUUID* id = new LLUUID(mID); registerVOInventoryListener(obj,id); requestVOInventory(); rv = TRUE; } } return rv; }
// returns true if the queue has started, otherwise false. This // method pops the top object off of the queue. BOOL LLFloaterScriptQueue::popNext() { // get the first element off of the container, and attempt to get // the inventory. BOOL rv = FALSE; S32 count = mObjectIDs.size(); if(mCurrentObjectID.isNull() && (count > 0)) { mCurrentObjectID = mObjectIDs.at(0); LL_INFOS() << "LLFloaterScriptQueue::popNext() - mCurrentID: " << mCurrentObjectID << LL_ENDL; mObjectIDs.erase(mObjectIDs.begin()); LLViewerObject* obj = gObjectList.findObject(mCurrentObjectID); if(obj) { LL_INFOS() << "LLFloaterScriptQueue::popNext() requesting inv for " << mCurrentObjectID << LL_ENDL; LLUUID* id = new LLUUID(mID); registerVOInventoryListener(obj,id); requestVOInventory(); rv = TRUE; } } return rv; }
void LLFloaterInspect::refresh() { LLUUID creator_id; std::string creator_name; S32 pos = mObjectList->getScrollPos(); getChildView("button owner")->setEnabled(false); getChildView("button creator")->setEnabled(false); LLUUID selected_uuid; S32 selected_index = mObjectList->getFirstSelectedIndex(); if(selected_index > -1) { LLScrollListItem* first_selected = mObjectList->getFirstSelected(); if (first_selected) { selected_uuid = first_selected->getUUID(); } } mObjectList->operateOnAll(LLScrollListCtrl::OP_DELETE); //List all transient objects, then all linked objects for (LLObjectSelection::valid_iterator iter = mObjectSelection->valid_begin(); iter != mObjectSelection->valid_end(); iter++) { LLSelectNode* obj = *iter; LLSD row; std::string owner_name, creator_name, last_owner_name; if (obj->mCreationDate == 0) { // Don't have valid information from the server, so skip this one continue; } // Singu Note: Diverge from LL and handle datetime column in a sortable manner later on const LLUUID& idOwner = obj->mPermissions->getOwner(); const LLUUID& idCreator = obj->mPermissions->getCreator(); // <edit> const LLUUID& idLastOwner = obj->mPermissions->getLastOwner(); // </edit> LLAvatarName av_name; // Only work with the names if we actually get a result // from the name cache. If not, defer setting the // actual name and set a placeholder. if (LLAvatarNameCache::get(idOwner, &av_name)) { // owner_name = av_name.getNSName(); // [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a bool fRlvFilterOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) || gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMETAGS)) && (idOwner != gAgent.getID()) && (!obj->mPermissions->isGroupOwned()); owner_name = (!fRlvFilterOwner) ? av_name.getNSName() : RlvStrings::getAnonym(av_name); // [/RLVa:KB] } else { owner_name = LLTrans::getString("RetrievingData"); if (mOwnerNameCacheConnection.find(idOwner) == mOwnerNameCacheConnection.end()) mOwnerNameCacheConnection.emplace(idOwner, LLAvatarNameCache::get(idOwner, boost::bind(&LLFloaterInspect::onGetOwnerNameCallback, this, _1))); } // <edit> if (LLAvatarNameCache::get(idLastOwner, &av_name)) { // last_owner_name = av_name.getNSName(); // [RLVa:LF] - Copied from the above creator check Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a LLAvatarNameCache::get(idLastOwner, &av_name); bool fRlvFilterLastOwner = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) || gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMETAGS)) && idLastOwner != gAgent.getID() && (obj->mPermissions->getOwner() == idLastOwner || RlvUtil::isNearbyAgent(idLastOwner)); last_owner_name = (!fRlvFilterLastOwner) ? av_name.getNSName() : RlvStrings::getAnonym(av_name); // [/RLVa:LF] } else { last_owner_name = LLTrans::getString("RetrievingData"); if (mLastOwnerNameCacheConnection.find(idLastOwner) == mLastOwnerNameCacheConnection.end()) mLastOwnerNameCacheConnection.emplace(idLastOwner, LLAvatarNameCache::get(idLastOwner, boost::bind(&LLFloaterInspect::onGetLastOwnerNameCallback, this, _1))); } // </edit> if (LLAvatarNameCache::get(idCreator, &av_name)) { // creator_name = av_name.getNSName(); // [RLVa:KB] - Checked: 2010-11-01 (RLVa-1.2.2a) | Modified: RLVa-1.2.2a const LLUUID& idCreator = obj->mPermissions->getCreator(); LLAvatarNameCache::get(idCreator, &av_name); bool fRlvFilterCreator = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES) || gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMETAGS)) && (idCreator != gAgent.getID()) && ( (obj->mPermissions->getOwner() == idCreator) || (RlvUtil::isNearbyAgent(idCreator)) ); creator_name = (!fRlvFilterCreator) ? av_name.getNSName() : RlvStrings::getAnonym(av_name); // [/RLVa:KB] } else { creator_name = LLTrans::getString("RetrievingData"); if (mCreatorNameCacheConnection.find(idCreator) == mCreatorNameCacheConnection.end()) mCreatorNameCacheConnection.emplace(idCreator, LLAvatarNameCache::get(idCreator, boost::bind(&LLFloaterInspect::onGetCreatorNameCallback, this, _1))); } row["id"] = obj->getObject()->getID(); row["columns"][0]["column"] = "object_name"; row["columns"][0]["type"] = "text"; // make sure we're either at the top of the link chain // or top of the editable chain, for attachments if(!(obj->getObject()->isRoot() || obj->getObject()->isRootEdit())) { row["columns"][0]["value"] = std::string(" ") + obj->mName; } else { row["columns"][0]["value"] = obj->mName; } row["columns"][1]["column"] = "owner_name"; row["columns"][1]["type"] = "text"; row["columns"][1]["value"] = owner_name; // <edit> row["columns"][2]["column"] = "last_owner_name"; row["columns"][2]["type"] = "text"; row["columns"][2]["value"] = last_owner_name; // </edit> row["columns"][3]["column"] = "creator_name"; row["columns"][3]["type"] = "text"; row["columns"][3]["value"] = creator_name; // <edit> row["columns"][4]["column"] = "face_num"; row["columns"][4]["type"] = "text"; row["columns"][4]["value"] = llformat("%d",obj->getObject()->getNumFaces()); row["columns"][5]["column"] = "vertex_num"; row["columns"][5]["type"] = "text"; row["columns"][5]["value"] = llformat("%d",obj->getObject()->getNumVertices()); // inventory silliness S32 scripts,total_inv; std::map<LLUUID,std::pair<U32,U32> >::iterator itr = mInventoryNums.find(obj->getObject()->getID()); if (itr != mInventoryNums.end()) { scripts = itr->second.first; total_inv = itr->second.second; } else { scripts = 0; total_inv = 0; if (std::find(mQueue.begin(),mQueue.end(),obj->getObject()->getID()) == mQueue.end()) { mQueue.push_back(obj->getObject()->getID()); registerVOInventoryListener(obj->getObject(), NULL); requestVOInventory(); } } row["columns"][6]["column"] = "script_num"; row["columns"][6]["type"] = "text"; row["columns"][6]["value"] = llformat("%d",scripts); row["columns"][7]["column"] = "inv_num"; row["columns"][7]["type"] = "text"; row["columns"][7]["value"] = llformat("%d",total_inv); // </edit> row["columns"][8]["column"] = "creation_date"; row["columns"][8]["type"] = "date"; row["columns"][8]["value"] = LLDate(obj->mCreationDate/1000000); static const LLCachedControl<std::string> format("TimestampFormat"); row["columns"][8]["format"] = format; mObjectList->addElement(row, ADD_TOP); } if(selected_index > -1 && mObjectList->getItemIndex(selected_uuid) == selected_index) { mObjectList->selectNthItem(selected_index); } else { mObjectList->selectNthItem(0); } onSelectObject(); mObjectList->setScrollPos(pos); }
void LLFloaterInspect::refresh() { LLUUID creator_id; std::string creator_name; S32 pos = mObjectList->getScrollPos(); childSetEnabled("button owner", false); childSetEnabled("button_last_owner", false); childSetEnabled("button creator", false); LLUUID selected_uuid; S32 selected_index = mObjectList->getFirstSelectedIndex(); if(selected_index > -1) { LLScrollListItem* first_selected = mObjectList->getFirstSelected(); if (first_selected) { selected_uuid = first_selected->getUUID(); } } mObjectList->operateOnAll(LLScrollListCtrl::OP_DELETE); //List all transient objects, then all linked objects for (LLObjectSelection::valid_iterator iter = mObjectSelection->valid_begin(); iter != mObjectSelection->valid_end(); iter++) { LLSelectNode* obj = *iter; LLSD row; char time[MAX_STRING]; std::string owner_name, creator_name, last_owner_name; if (obj->mCreationDate == 0) { // Don't have valid information from the server, so skip this one continue; } time_t timestamp = (time_t) (obj->mCreationDate/1000000); LLStringUtil::copy(time, ctime(×tamp), MAX_STRING); time[24] = '\0'; gCacheName->getFullName(obj->mPermissions->getOwner(), owner_name); gCacheName->getFullName(obj->mPermissions->getCreator(), creator_name); gCacheName->getFullName(obj->mPermissions->getLastOwner(), last_owner_name); row["id"] = obj->getObject()->getID(); row["columns"][0]["column"] = "object_name"; row["columns"][0]["type"] = "text"; // make sure we're either at the top of the link chain // or top of the editable chain, for attachments if (!(obj->getObject()->isRoot() || obj->getObject()->isRootEdit())) { row["columns"][0]["value"] = std::string(" ") + obj->mName; } else { row["columns"][0]["value"] = obj->mName; } S32 i = 1; row["columns"][i]["column"] = "owner_name"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = owner_name; ++i; row["columns"][i]["column"] = "last_owner_name"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = last_owner_name; ++i; row["columns"][i]["column"] = "creator_name"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = creator_name; ++i; row["columns"][i]["column"] = "face_num"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = llformat("%d", obj->getObject()->getNumFaces()); ++i; row["columns"][i]["column"] = "vertex_num"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = llformat("%d", obj->getObject()->getNumVertices()); ++i; // inventory silliness S32 scripts = 0; S32 total_inv = 0; std::map<LLUUID, std::pair<S32, S32> >::iterator itr = mInventoryNums.find(obj->getObject()->getID()); if (itr != mInventoryNums.end()) { scripts = itr->second.first; total_inv = itr->second.second; } else if (std::find(mQueue.begin(), mQueue.end(), obj->getObject()->getID()) == mQueue.end()) { mQueue.push_back(obj->getObject()->getID()); registerVOInventoryListener(obj->getObject(), NULL); requestVOInventory(); } row["columns"][i]["column"] = "script_num"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = llformat("%d", scripts); ++i; row["columns"][i]["column"] = "inv_num"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = llformat("%d", total_inv); ++i; row["columns"][i]["column"] = "creation_date"; row["columns"][i]["type"] = "text"; row["columns"][i]["value"] = time; mObjectList->addElement(row, ADD_TOP); } if (selected_index > -1 && mObjectList->getItemIndex(selected_uuid) == selected_index) { mObjectList->selectNthItem(selected_index); } else { mObjectList->selectNthItem(0); } onSelectObject(this, NULL); mObjectList->setScrollPos(pos); }