void LLFloaterExploreAnimations::update() { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("anim_list"); LLUUID selection = list->getSelectedValue().asUUID(); list->clearRows(); // do this differently probably std::list<LLAnimHistoryItem*> history = animHistory[mAvatarID]; std::list<LLAnimHistoryItem*>::iterator iter = history.begin(); std::list<LLAnimHistoryItem*>::iterator end = history.end(); for( ; iter != end; ++iter) { LLAnimHistoryItem* item = (*iter); LLSD element; element["id"] = item->mAssetID; LLSD& name_column = element["columns"][0]; name_column["column"] = "name"; name_column["value"] = item->mAssetID.asString(); LLSD& info_column = element["columns"][1]; info_column["column"] = "info"; if(item->mPlaying) info_column["value"] = "Playing"; else info_column["value"] = llformat("%.1f min ago", (LLTimer::getElapsedSeconds() - item->mTimeStopped) / 60.f); list->addElement(element, ADD_BOTTOM); } list->selectByID(selection); }
//static bool FloaterMediaLists::handleAddDomainCallback(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); if (option == 0) { const std::string domain = LLViewerParcelMedia::extractDomain(response["url"].asString()); if (domain.empty()) { LL_INFOS("MediaFilter") << "No domain specified" << LL_ENDL; return false; } bool whitelist = notification["payload"]["whitelist"].asBoolean(); LLSD newmedia; newmedia["domain"] = domain; newmedia["action"] = (whitelist ? "allow" : "deny"); LLViewerParcelMedia::sMediaFilterList.append(newmedia); LLViewerParcelMedia::saveDomainFilterList(); LLFloater* floater = LLFloaterReg::getInstance("media_lists"); if (floater) { LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>(whitelist ? "whitelist" : "blacklist"); LLSD element; element["columns"][0]["column"] = "list"; element["columns"][0]["value"] = domain; list->addElement(element); list->sortByColumn("list", TRUE); } } return false; }
void lggAutoCorrectFloater::updateNamesList() { namesList->deleteAllItems(); static BOOL *enabledd = rebind_llcontrol<BOOL>("EmeraldEnableAutoCorrect", &gSavedSettings, true); if(!(*enabledd)) { updateItemsList(); return; } static S32 *countAuto= rebind_llcontrol<S32>("EmeraldAutoCorrectCount", &gSavedSettings, true); childSetValue("em_ac_stats",*countAuto); LLSD autoCorrects = LGGAutoCorrect::getInstance()->getAutoCorrects(); LLSD::map_const_iterator loc_it = autoCorrects.beginMap(); LLSD::map_const_iterator loc_end = autoCorrects.endMap(); for ( ; loc_it != loc_end; ++loc_it) { const std::string& listName = (*loc_it).first; LLSD element; element["id"] = listName; LLSD& friend_column = element["columns"][0]; friend_column["column"] = "Entries"; friend_column["value"] = listName; friend_column["font"] = "SANSSERIF"; const LLSD& loc_map = (*loc_it).second; if(loc_map["enabled"].asBoolean()) friend_column["font-style"] = "BOLD"; else friend_column["font-style"] = "NORMAL"; if(namesList) namesList->addElement(element, ADD_BOTTOM); } updateItemsList(); }
// virtual void LLFloaterBump::onOpen(const LLSD& key) { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("bump_list"); if (!list) return; list->deleteAllItems(); if (gMeanCollisionList.empty()) { std::string none_detected = getString("none_detected"); LLSD row; row["columns"][0]["value"] = none_detected; row["columns"][0]["font"] = "SansSerifBold"; list->addElement(row); } else { for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin(); iter != gMeanCollisionList.end(); ++iter) { LLMeanCollisionData *mcd = *iter; add(list, mcd); } } }
void LLFloaterWorldMap::updateSims(bool found_null_sim) { if (mCompletingRegionName == "") { return; } LLScrollListCtrl *list = getChild<LLScrollListCtrl>("search_results"); list->operateOnAll(LLCtrlListInterface::OP_DELETE); S32 name_length = mCompletingRegionName.length(); LLSD match; S32 num_results = 0; std::map<U64, LLSimInfo*>::const_iterator it; for (it = LLWorldMap::getInstance()->getRegionMap().begin(); it != LLWorldMap::getInstance()->getRegionMap().end(); ++it) { LLSimInfo* info = it->second; std::string sim_name_lower = info->getName(); LLStringUtil::toLower(sim_name_lower); if (sim_name_lower.substr(0, name_length) == mCompletingRegionName) { if (sim_name_lower == mCompletingRegionName) { match = info->getName(); } LLSD value; value["id"] = info->getName(); value["columns"][0]["column"] = "sim_name"; value["columns"][0]["value"] = info->getName(); list->addElement(value); num_results++; } } if (found_null_sim) { mCompletingRegionName = ""; } // if match found, highlight it and go if (!match.isUndefined()) { list->selectByValue(match); childSetFocus("search_results"); onCommitSearchResult(); } // if we found nothing, say "none" if (num_results == 0) { list->setCommentText(LLTrans::getString("worldmap_results_none_found")); list->operateOnAll(LLCtrlListInterface::OP_DESELECT); } }
void LLFloaterExploreAnimations::update() { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("anim_list"); LLUUID selection = list->getSelectedValue().asUUID(); list->clearRows(); // do this differently probably std::string fullname; if (gCacheName->getFullName(mAvatarID, fullname)) { setTitle(mTitle + ": " + fullname); } else { setTitle(mTitle + ": INVALID AVATAR (" + mAvatarID.asString() + ")"); } std::list<LLAnimHistoryItem*> history = animHistory[mAvatarID]; std::list<LLAnimHistoryItem*>::iterator iter = history.begin(); std::list<LLAnimHistoryItem*>::iterator end = history.end(); for( ; iter != end; ++iter) { LLAnimHistoryItem* item = (*iter); if (gSavedSettings.getBOOL("PhoenixFilterDefaultAnims") && isLindenDefaultAnim(item->mAssetID.asString().c_str())) { continue; } LLSD element; element["id"] = item->mAssetID; LLSD& name_column = element["columns"][0]; name_column["column"] = "name"; name_column["value"] = item->mAssetID.asString(); LLSD& info_column = element["columns"][1]; info_column["column"] = "info"; if(item->mPlaying) info_column["value"] = "Playing"; else info_column["value"] = llformat("%.1f min ago", (LLTimer::getElapsedSeconds() - item->mTimeStopped) / 60.f); list->addElement(element, ADD_BOTTOM); } list->selectByID(selection); }
void lggAutoCorrectFloater::updateItemsList() { entryList->deleteAllItems(); if((namesList->getAllSelected().size())<=0) { updateListControlsEnabled(FALSE); return; } updateListControlsEnabled(TRUE); std::string listName= namesList->getFirstSelected()->getColumn(0)->getValue().asString(); LLSD listData = LGGAutoCorrect::getInstance()->getAutoCorrectEntries(listName); childSetValue("em_ac_list_enabled",listData["enabled"].asBoolean()); childSetValue("em_ac_list_style",listData["wordStyle"].asBoolean()); childSetValue("em_ac_list_show",listData["announce"].asBoolean()); childSetValue("em_ac_text_name",listName); childSetValue("em_ac_text_author",listData["author"]); childSetValue("em_ac_priority",listData["priority"]); static S32 *countAuto= rebind_llcontrol<S32>("EmeraldAutoCorrectCount", &gSavedSettings, true); childSetValue("em_ac_stats",*countAuto); LLSD autoCorrects = listData["data"]; LLSD::map_const_iterator loc_it = autoCorrects.beginMap(); LLSD::map_const_iterator loc_end = autoCorrects.endMap(); for ( ; loc_it != loc_end; ++loc_it) { const std::string& wrong = (*loc_it).first; const std::string& right = (*loc_it).second; //std::string lentry(wrong+"=>"+right); LLSD element; element["id"] = wrong; LLSD& s_column = element["columns"][0]; s_column["column"] = "Search"; s_column["value"] = wrong; s_column["font"] = "SANSSERIF"; LLSD& r_column = element["columns"][1]; r_column["column"] = "Replace"; r_column["value"] = right; r_column["font"] = "SANSSERIF"; entryList->addElement(element, ADD_BOTTOM); } }
void LLFloaterBlacklist::refresh() { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("file_list"); list->clearRows(); for(std::map<LLUUID,LLSD>::iterator iter = blacklist_entries.begin(); iter != blacklist_entries.end(); ++iter) { if(iter->first.isNull()) continue; LLSD element; std::string agent; gCacheName->getFullName(LLUUID(iter->second["entry_agent"].asString()), agent); element["id"] = iter->first.asString(); { LLSD& column = element["columns"][0]; column["column"] = "asset_id"; column["value"] = iter->first.asString(); } { LLSD& column = element["columns"][1]; column["column"] = "entry_name"; column["value"] = iter->second["entry_name"].asString(); } { LLSD& column = element["columns"][2]; column["column"] = "entry_type"; column["value"] = std::string(LLAssetType::lookupHumanReadable( (LLAssetType::EType)iter->second["entry_type"].asInteger() )); } { LLSD& column = element["columns"][3]; column["column"] = "entry_agent"; column["value"] = agent; } { LLSD& column = element["columns"][4]; column["column"] = "entry_date"; column["value"] = iter->second["entry_date"].asString(); } list->addElement(element, ADD_BOTTOM); } }
void LLFloaterVFSExplorer::refresh() { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("file_list"); list->clearRows(); sVFSFileMap = gVFS->getFileList(); std::map<LLVFSFileSpecifier, LLVFSFileBlock*>::iterator end = sVFSFileMap.end(); for(std::map<LLVFSFileSpecifier, LLVFSFileBlock*>::iterator iter = sVFSFileMap.begin(); iter != end; ++iter) { LLVFSFileSpecifier file_spec = iter->first; LLSD element; element["id"] = file_spec.mFileID; LLSD& name_column = element["columns"][0]; name_column["column"] = "name"; name_column["value"] = file_spec.mFileID.asString(); LLSD& type_column = element["columns"][1]; type_column["column"] = "type"; type_column["value"] = std::string(LLAssetType::lookup(file_spec.mFileType)); list->addElement(element, ADD_BOTTOM); } setEditID(mEditID); }
//static void LLFloaterTeleportHistory::loadFile(const std::string &file_name) { LLFloaterTeleportHistory *pFloaterHistory = LLFloaterTeleportHistory::findInstance(); if(!pFloaterHistory) return; LLScrollListCtrl* pScrollList = pFloaterHistory->mPlacesList; if(!pScrollList) return; std::string temp_str(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + file_name); llifstream file(temp_str); if (file.is_open()) { LL_INFOS() << "Loading "<< file_name << " file at " << temp_str << LL_ENDL; LLSD data; LLSDSerialize::fromXML(data, file); if (data.isUndefined()) { LL_INFOS() << "file missing, ill-formed, " "or simply undefined; not reading the" " file" << LL_ENDL; } else { const S32 max_entries = gSavedSettings.getS32("TeleportHistoryMaxEntries"); const S32 num_entries = llmin(max_entries,(const S32)data.size()); pScrollList->clear(); for(S32 i = 0; i < num_entries; i++) //Lower entry = newer { pScrollList->addElement(data[i], ADD_BOTTOM); } pScrollList->deselectAllItems(TRUE); pFloaterHistory->mID = pScrollList->getItemCount(); pFloaterHistory->setButtonsEnabled(FALSE); } } }
void LLFloaterAttachments::addAttachmentToList(LLUUID objectid, std::string name, std::string desc) { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("attachment_list"); LLSD element; element["id"] = objectid; LLSD& type_column = element["columns"][LIST_TYPE]; type_column["column"] = "type"; type_column["type"] = "icon"; type_column["value"] = "inv_item_object.tga"; LLSD& name_column = element["columns"][LIST_NAME]; name_column["column"] = "name"; name_column["value"] = name; LLSD& desc_column = element["columns"][LIST_DESC]; desc_column["column"] = "desc"; desc_column["value"] = desc; list->addElement(element, ADD_BOTTOM); refreshButtons(); }
// static void LLFloaterBump::show(void *contents) { if (gNoRender) { return; } if (!sInstance) { sInstance = new LLFloaterBump(); } LLScrollListCtrl* list = sInstance->getChild<LLScrollListCtrl>("bump_list"); if (!list) return; list->deleteAllItems(); if (gMeanCollisionList.empty()) { std::string none_detected = sInstance->getString("none_detected"); LLSD row; row["columns"][0]["value"] = none_detected; row["columns"][0]["font"] = "SansSerifBold"; row["columns"][0]["color"] = gColors.getColor("DefaultListText").getValue(); list->addElement(row); } else { for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin(); iter != gMeanCollisionList.end(); ++iter) { LLMeanCollisionData *mcd = *iter; LLFloaterBump::add(list, mcd); } } sInstance->open(); /*Flawfinder: ignore*/ }
// static void LLFloaterBump::show(void *contents) { if (gNoRender) { return; } if (!sInstance) { sInstance = new LLFloaterBump(); } LLScrollListCtrl* list = LLUICtrlFactory::getScrollListByName(sInstance, "bump_list"); if (!list) return; list->deleteAllItems(); if (gMeanCollisionList.isEmpty()) { LLString none_detected = sInstance->childGetText("none_detected"); LLSD row; row["columns"][0]["value"] = none_detected; row["columns"][0]["font"] = "SansSerifBold"; list->addElement(row); } else { for (LLMeanCollisionData* mcd = gMeanCollisionList.getFirstData(); mcd; mcd = gMeanCollisionList.getNextData()) { LLFloaterBump::add(list, mcd); } } sInstance->open(); /*Flawfinder: ignore*/ }
void LLFloaterWorldMap::updateSims(bool found_null_sim) { if (mCompletingRegionName == "") { return; } LLScrollListCtrl *list = getChild<LLScrollListCtrl>("search_results"); list->operateOnAll(LLCtrlListInterface::OP_DELETE); LLSD selected_value = list->getSelectedValue(); S32 name_length = mCompletingRegionName.length(); BOOL match_found = FALSE; S32 num_results = 0; std::map<U64, LLSimInfo*>::const_iterator it; for (it = LLWorldMap::getInstance()->mSimInfoMap.begin(); it != LLWorldMap::getInstance()->mSimInfoMap.end(); ++it) { LLSimInfo* info = (*it).second; std::string sim_name = info->mName; std::string sim_name_lower = sim_name; LLStringUtil::toLower(sim_name_lower); if (sim_name_lower.substr(0, name_length) == mCompletingRegionName) { if (LLWorldMap::getInstance()->mIsTrackingCommit) { if (sim_name_lower == mCompletingRegionName) { selected_value = sim_name; match_found = TRUE; } } LLSD value; value["id"] = sim_name; value["columns"][0]["column"] = "sim_name"; value["columns"][0]["value"] = sim_name; list->addElement(value); num_results++; } } list->selectByValue(selected_value); if (found_null_sim) { mCompletingRegionName = ""; } if (match_found) { mExactMatch = TRUE; childSetFocus("search_results"); onCommitSearchResult(NULL, this); } else if (!mExactMatch && num_results > 0) { list->selectFirstItem(); // select first item by default childSetFocus("search_results"); onCommitSearchResult(NULL, this); } else { list->addCommentText(std::string("None found.")); list->operateOnAll(LLCtrlListInterface::OP_DESELECT); } }
void LLFloaterWorldMap::updateSims(bool found_null_sim) { if (mCompletingRegionName == "") { return; } LLScrollListCtrl *list = getChild<LLScrollListCtrl>("search_results"); list->operateOnAll(LLCtrlListInterface::OP_DELETE); S32 name_length = mCompletingRegionName.length(); LLSD match; S32 num_results = 0; std::vector<std::pair <U64, LLSimInfo*> > sim_info_vec(LLWorldMap::getInstance()->getRegionMap().begin(), LLWorldMap::getInstance()->getRegionMap().end()); std::sort(sim_info_vec.begin(), sim_info_vec.end(), SortRegionNames()); for (std::vector<std::pair <U64, LLSimInfo*> >::const_iterator it = sim_info_vec.begin(); it != sim_info_vec.end(); ++it) { LLSimInfo* info = it->second; std::string sim_name_lower = info->getName(); LLStringUtil::toLower(sim_name_lower); if (sim_name_lower.substr(0, name_length) == mCompletingRegionName) { if (sim_name_lower == mCompletingRegionName) { match = info->getName(); } LLSD value; value["id"] = info->getName(); value["columns"][0]["column"] = "sim_name"; value["columns"][0]["value"] = info->getName(); list->addElement(value); num_results++; } } if (found_null_sim) { mCompletingRegionName = ""; } if (num_results > 0) { // Ansariel: Let's sort the list to make it more user-friendly list->sortByColumn("sim_name", TRUE); // if match found, highlight it and go if (!match.isUndefined()) { list->selectByValue(match); } // else select first found item else { list->selectFirstItem(); } getChild<LLUICtrl>("search_results")->setFocus(TRUE); onCommitSearchResult(); } else { // if we found nothing, say "none" list->setCommentText(LLTrans::getString("worldmap_results_none_found")); list->operateOnAll(LLCtrlListInterface::OP_DESELECT); } }
void LLPanelDirBrowser::processDirLandReply(LLMessageSystem *msg, void**) { LLUUID agent_id; LLUUID query_id; LLUUID parcel_id; std::string name; std::string land_sku; std::string land_type; BOOL auction; BOOL for_sale; S32 sale_price; S32 actual_area; msg->getUUID("AgentData", "AgentID", agent_id); msg->getUUID("QueryData", "QueryID", query_id ); LLPanelDirBrowser* browser; browser = gDirBrowserInstances.getIfThere(query_id); if (!browser) { // data from an old query return; } // Only handled by LLPanelDirLand LLPanelDirLand* self = (LLPanelDirLand*)browser; self->mHaveSearchResults = TRUE; LLScrollListCtrl* list = self->findChild<LLScrollListCtrl>("results"); if (!list) return; if (!list->getCanSelect()) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); self->mResultsContents = LLSD(); } BOOL use_price = gSavedSettings.getBOOL("FindLandPrice"); S32 limit_price = self->childGetValue("priceedit").asInteger(); BOOL use_area = gSavedSettings.getBOOL("FindLandArea"); S32 limit_area = self->childGetValue("areaedit").asInteger(); S32 i; S32 count = msg->getNumberOfBlocks("QueryReplies"); self->mResultsReceived += count; S32 non_auction_count = 0; for (i = 0; i < count; i++) { msg->getUUID( "QueryReplies", "ParcelID", parcel_id, i); msg->getString( "QueryReplies", "Name", name, i); msg->getBOOL( "QueryReplies", "Auction", auction, i); msg->getBOOL( "QueryReplies", "ForSale", for_sale, i); msg->getS32( "QueryReplies", "SalePrice", sale_price, i); msg->getS32( "QueryReplies", "ActualArea", actual_area, i); if ( msg->getSizeFast(_PREHASH_QueryReplies, i, _PREHASH_ProductSKU) > 0 ) { msg->getStringFast( _PREHASH_QueryReplies, _PREHASH_ProductSKU, land_sku, i); llinfos << "Land sku: " << land_sku << llendl; land_type = LLProductInfoRequestManager::instance().getDescriptionForSku(land_sku); } else { land_sku.clear(); land_type = LLTrans::getString("land_type_unknown"); } if (parcel_id.isNull()) continue; if (use_price && (sale_price > limit_price)) continue; if (use_area && (actual_area < limit_area)) continue; LLSD content; S32 type; LLSD row = self->createLandSale(parcel_id, auction, for_sale, name, &type); content["type"] = type; content["name"] = name; content["landtype"] = land_type; std::string buffer = "Auction"; if (!auction) { buffer = llformat("%d", sale_price); non_auction_count++; } row["columns"][3]["column"] = "price"; row["columns"][3]["value"] = buffer; row["columns"][3]["font"] = "SANSSERIF_SMALL"; buffer = llformat("%d", actual_area); row["columns"][4]["column"] = "area"; row["columns"][4]["value"] = buffer; row["columns"][4]["font"] = "SANSSERIF_SMALL"; if (!auction) { F32 price_per_meter; if (actual_area > 0) { price_per_meter = (F32)sale_price / (F32)actual_area; } else { price_per_meter = 0.f; } // Prices are usually L$1 - L$10 / meter buffer = llformat("%.1f", price_per_meter); row["columns"][5]["column"] = "per_meter"; row["columns"][5]["value"] = buffer; row["columns"][5]["font"] = "SANSSERIF_SMALL"; } else { // Auctions start at L$1 per meter row["columns"][5]["column"] = "per_meter"; row["columns"][5]["value"] = "1.0"; row["columns"][5]["font"] = "SANSSERIF_SMALL"; } row["columns"][6]["column"] = "landtype"; row["columns"][6]["value"] = land_type; row["columns"][6]["font"] = "SANSSERIF_SMALL"; list->addElement(row); self->mResultsContents[parcel_id.asString()] = content; } // All auction results are shown on the first page // But they don't count towards the 100 / page limit // So figure out the next button here, when we know how many aren't auctions count = self->showNextButton(non_auction_count); self->updateResultCount(); // Poke the result received timer self->mLastResultTimer.reset(); self->mDidAutoSelect = FALSE; }
// static void LLPanelDirBrowser::processDirGroupsReply(LLMessageSystem* msg, void**) { S32 i; LLUUID query_id; LLUUID group_id; std::string group_name; S32 members; F32 search_order; msg->getUUIDFast(_PREHASH_QueryData,_PREHASH_QueryID, query_id ); LLPanelDirBrowser* self; self = gDirBrowserInstances.getIfThere(query_id); if (!self) { return; } self->mHaveSearchResults = TRUE; LLScrollListCtrl* list = self->findChild<LLScrollListCtrl>("results"); if (!list) return; if (!list->getCanSelect()) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); self->mResultsContents = LLSD(); } S32 rows = msg->getNumberOfBlocksFast(_PREHASH_QueryReplies); self->mResultsReceived += rows; rows = self->showNextButton(rows); for (i = 0; i < rows; i++) { msg->getUUIDFast(_PREHASH_QueryReplies, _PREHASH_GroupID, group_id, i ); msg->getStringFast(_PREHASH_QueryReplies, _PREHASH_GroupName, group_name, i); msg->getS32Fast(_PREHASH_QueryReplies, _PREHASH_Members, members, i ); msg->getF32Fast(_PREHASH_QueryReplies, _PREHASH_SearchOrder, search_order, i ); if (group_id.isNull()) { continue; } LLSD content; content["type"] = GROUP_CODE; content["name"] = group_name; LLSD row; row["id"] = group_id; LLUUID image_id; row["columns"][0]["column"] = "icon"; row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = "icon_group.tga"; row["columns"][1]["column"] = "name"; row["columns"][1]["value"] = group_name; row["columns"][1]["font"] = "SANSSERIF"; row["columns"][2]["column"] = "members"; row["columns"][2]["value"] = members; row["columns"][2]["font"] = "SANSSERIF_SMALL"; row["columns"][3]["column"] = "score"; row["columns"][3]["value"] = search_order; list->addElement(row); self->mResultsContents[group_id.asString()] = content; } list->sortByColumn(self->mCurrentSortColumn, self->mCurrentSortAscending); self->updateResultCount(); // Poke the result received timer self->mLastResultTimer.reset(); self->mDidAutoSelect = FALSE; }
void LLPanelDirBrowser::processDirEventsReply(LLMessageSystem* msg, void**) { LLUUID agent_id; LLUUID query_id; LLUUID owner_id; std::string name; std::string date; BOOL show_pg = gSavedSettings.getBOOL("ShowPGEvents"); BOOL show_mature = gSavedSettings.getBOOL("ShowMatureEvents"); BOOL show_adult = gSavedSettings.getBOOL("ShowAdultEvents"); msg->getUUID("AgentData", "AgentID", agent_id); msg->getUUID("QueryData", "QueryID", query_id ); LLPanelDirBrowser* self; self = gDirBrowserInstances.getIfThere(query_id); if (!self) { return; } if (msg->getNumberOfBlocks("StatusData")) { U32 status; msg->getU32("StatusData", "Status", status); if (status & STATUS_SEARCH_EVENTS_BANNEDWORD) { LLNotificationsUtil::add("SearchWordBanned"); } } self->mHaveSearchResults = TRUE; LLScrollListCtrl* list = self->findChild<LLScrollListCtrl>("results"); if (!list) return; if (!list->getCanSelect()) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); self->mResultsContents = LLSD(); } S32 rows = msg->getNumberOfBlocks("QueryReplies"); self->mResultsReceived += rows; rows = self->showNextButton(rows); for (S32 i = 0; i < rows; i++) { U32 event_id; U32 unix_time; U32 event_flags; msg->getUUID("QueryReplies", "OwnerID", owner_id, i); msg->getString("QueryReplies", "Name", name, i); msg->getU32("QueryReplies", "EventID", event_id, i); // msg->getString("QueryReplies", "Date", date, i); msg->getU32("QueryReplies", "UnixTime", unix_time, i); msg->getU32("QueryReplies", "EventFlags", event_flags, i); // Skip empty events if (owner_id.isNull()) { //RN: should this check event_id instead? llwarns << "skipped event due to owner_id null, event_id " << event_id << llendl; continue; } // skip events that don't match the flags // there's no PG flag, so we make sure neither adult nor mature is set if (((event_flags & (EVENT_FLAG_ADULT | EVENT_FLAG_MATURE)) == EVENT_FLAG_NONE) && !show_pg) { //llwarns << "Skipped pg event because we're not showing pg, event_id " << event_id << llendl; continue; } if ((event_flags & EVENT_FLAG_MATURE) && !show_mature) { //llwarns << "Skipped mature event because we're not showing mature, event_id " << event_id << llendl; continue; } if ((event_flags & EVENT_FLAG_ADULT) && !show_adult) { //llwarns << "Skipped adult event because we're not showing adult, event_id " << event_id << llendl; continue; } LLSD content; content["type"] = EVENT_CODE; content["name"] = name; content["event_id"] = (S32)event_id; LLSD row; row["id"] = llformat("%u", event_id); // Column 0 - event icon LLUUID image_id; if (event_flags == EVENT_FLAG_ADULT) { row["columns"][0]["column"] = "icon"; row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = "icon_event_adult.tga"; } else if (event_flags == EVENT_FLAG_MATURE) { row["columns"][0]["column"] = "icon"; row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = "icon_event_mature.tga"; } else { row["columns"][0]["column"] = "icon"; row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = "icon_event.tga"; } row["columns"][1]["column"] = "name"; row["columns"][1]["value"] = name; row["columns"][1]["font"] = "SANSSERIF"; struct tm* t = utc_to_pacific_time(unix_time, gPacificDaylightTime); std::string format = "%m-%d "; format += gSavedSettings.getString("ShortTimeFormat"); timeStructToFormattedString(t, format, date); row["columns"][2]["column"] = "date"; row["columns"][2]["value"] = date; row["columns"][2]["font"] = "SANSSERIF_SMALL"; row["columns"][3]["column"] = "time"; row["columns"][3]["value"] = llformat("%u", unix_time); row["columns"][3]["font"] = "SANSSERIF_SMALL"; list->addElement(row, ADD_SORTED); std::string id_str = llformat("%u", event_id); self->mResultsContents[id_str] = content; } list->sortByColumn(self->mCurrentSortColumn, self->mCurrentSortAscending); self->updateResultCount(); // Poke the result received timer self->mLastResultTimer.reset(); self->mDidAutoSelect = FALSE; }
void LLPanelDirBrowser::processDirPlacesReply(LLMessageSystem* msg, void**) { LLUUID agent_id; LLUUID query_id; LLUUID parcel_id; std::string name; BOOL is_for_sale; BOOL is_auction; F32 dwell; msg->getUUID("AgentData", "AgentID", agent_id); msg->getUUID("QueryData", "QueryID", query_id ); if (msg->getNumberOfBlocks("StatusData")) { U32 status; msg->getU32("StatusData", "Status", status); if (status & STATUS_SEARCH_PLACES_BANNEDWORD) { LLNotificationsUtil::add("SearchWordBanned"); } } LLPanelDirBrowser* self; self = gDirBrowserInstances.getIfThere(query_id); if (!self) { // data from an old query return; } self->mHaveSearchResults = TRUE; LLScrollListCtrl* list = self->findChild<LLScrollListCtrl>("results"); if (!list) return; if (!list->getCanSelect()) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); self->mResultsContents = LLSD(); } S32 count = msg->getNumberOfBlocks("QueryReplies"); self->mResultsReceived += count; count = self->showNextButton(count); for (S32 i = 0; i < count ; i++) { msg->getUUID("QueryReplies", "ParcelID", parcel_id, i); msg->getString("QueryReplies", "Name", name, i); msg->getBOOL("QueryReplies", "ForSale", is_for_sale, i); msg->getBOOL("QueryReplies", "Auction", is_auction, i); msg->getF32("QueryReplies", "Dwell", dwell, i); if (parcel_id.isNull()) { continue; } LLSD content; S32 type; LLSD row = self->createLandSale(parcel_id, is_auction, is_for_sale, name, &type); content["type"] = type; content["name"] = name; std::string buffer = llformat("%.0f", (F64)dwell); row["columns"][3]["column"] = "dwell"; row["columns"][3]["value"] = buffer; row["columns"][3]["font"] = "SANSSERIF_SMALL"; list->addElement(row); self->mResultsContents[parcel_id.asString()] = content; } list->sortByColumn(self->mCurrentSortColumn, self->mCurrentSortAscending); self->updateResultCount(); // Poke the result received timer self->mLastResultTimer.reset(); self->mDidAutoSelect = FALSE; }
void FloaterGridManager::refreshGrids() { LLScrollListCtrl *grids = FloaterGridManager::getInstance()->getChild<LLScrollListCtrl>("grid_selector"); std::string lastSelectedItem; LLSD element; if (grids->getFirstSelected()) { lastSelectedItem = grids->getFirstSelected()->getValue().asString(); } grids->deleteAllItems(); for (HippoGridManager::GridIterator it = gHippoGridManager->beginGrid(); it != gHippoGridManager->endGrid(); ++it) { std::string grid_nick = it->second->getGridNick(); // There's no reason why empty grids nicks should be in this list, ugh if (!grid_nick.empty() && grid_nick != gHippoGridManager->getCurrentGridNick()) { element["id"] = grid_nick; element["columns"][0]["column"] = "grid"; element["columns"][0]["type"] = "text"; element["columns"][0]["value"] = grid_nick; grids->addElement(element, ADD_BOTTOM); } } // Setting the default needs to be rethought. // Right now, we just use the last-selected grid, // but leaving this as the current behavior for now if (!gHippoGridManager->getCurrentGridNick().empty()) { element["id"] = gHippoGridManager->getCurrentGridNick(); element["columns"][0]["column"] = "grid"; element["columns"][0]["type"] = "text"; element["columns"][0]["font-style"] = "BOLD"; element["columns"][0]["value"] = gHippoGridManager->getCurrentGridNick(); grids->addElement(element, ADD_TOP); } // Reselect the item if we had one selected if (lastSelectedItem.empty()) { grids->selectItemByLabel(gHippoGridManager->getCurrentGridNick()); } else { grids->selectItemByLabel(lastSelectedItem); } // TODO: get rid of all this state junk if ((FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)) { grids->addElement("<new>", ADD_BOTTOM); } //if (selectIndex >= 0) //{ // grids->setCurrentByIndex(selectIndex); //} //else //{ // grids->setLabel(LLStringExplicit("")); // LLComboBox::removeall() does not clear the label //} // FloaterGridManager::getInstance()->childSetTextArg("default_grid", "[DEFAULT]", (defaultGrid != "")? defaultGrid: " "); FloaterGridManager::getInstance()->childSetEnabled("btn_delete", grids->getItemCount() > 0); FloaterGridManager::getInstance()->childSetEnabled("btn_copy", (FloaterGridManager::getInstance()->getState() == NORMAL) && (grids->getItemCount() > 0)); // FloaterGridManager::getInstance()->childSetEnabled("set_default", (FloaterGridManager::getInstance()->getState() == NORMAL) && (grids->getItemCount() > 0)); FloaterGridManager::getInstance()->childSetEnabled("gridnick", (FloaterGridManager::getInstance()->getState() == ADD_NEW) || (FloaterGridManager::getInstance()->getState() == ADD_COPY)); if (FloaterGridManager::getInstance()->getState() == NORMAL) { HippoGridInfo *gridInfo = gHippoGridManager->getGrid(FloaterGridManager::getInstance()->getCurGrid()); if (gridInfo) { FloaterGridManager::getInstance()->childSetText("gridnick", gridInfo->getGridNick()); //FloaterGridManager::getInstance()->childSetText("grid_name", gridInfo->getGridName()); FloaterGridManager::getInstance()->childSetText("loginuri", gridInfo->getLoginUri()); FloaterGridManager::getInstance()->childSetText("loginpage", gridInfo->getLoginPage()); FloaterGridManager::getInstance()->childSetText("helperuri", gridInfo->getHelperUri()); FloaterGridManager::getInstance()->childSetText("website", gridInfo->getWebSite()); FloaterGridManager::getInstance()->childSetText("support", gridInfo->getSupportUrl()); FloaterGridManager::getInstance()->childSetText("register", gridInfo->getRegisterUrl()); FloaterGridManager::getInstance()->childSetText("password", gridInfo->getPasswordUrl()); FloaterGridManager::getInstance()->childSetText("first_name", gridInfo->getFirstName()); FloaterGridManager::getInstance()->childSetText("last_name", gridInfo->getLastName()); if(gridInfo->getAvatarPassword().length() == 32) FloaterGridManager::getInstance()->childSetText("avatar_password", std::string(PASSWORD_FILLER)); else if(gridInfo->getPasswordUrl().empty()) FloaterGridManager::getInstance()->childSetText("avatar_password", std::string("")); if (gridInfo->getPlatform() == HippoGridInfo::PLATFORM_SECONDLIFE) { FloaterGridManager::getInstance()->childSetEnabled("search", false); FloaterGridManager::getInstance()->childSetText("search", LLStringUtil::null); //childSetEnabled("render_compat", false); //childSetValue("render_compat", false); } else { FloaterGridManager::getInstance()->childSetEnabled("search", true); FloaterGridManager::getInstance()->childSetText("search", gridInfo->getSearchUrl()); //childSetEnabled("render_compat", true); //childSetValue("render_compat", gridInfo->isRenderCompat()); } } else { FloaterGridManager::getInstance()->childSetText("gridnick", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("gridname", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("loginuri", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("loginpage", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("helperuri", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("website", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("support", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("register", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("password", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("first_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("last_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("avatar_password", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("search", LLStringUtil::null); } } else if (FloaterGridManager::getInstance()->getState() == ADD_NEW) { llinfos << "mState == ADD_NEW" << llendl; std::string required = "<required>"; FloaterGridManager::getInstance()->childSetText("gridnick", required); FloaterGridManager::getInstance()->childSetText("gridname", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("loginuri", required); FloaterGridManager::getInstance()->childSetText("loginpage", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("helperuri", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("website", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("support", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("register", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("password", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("first_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("last_name", LLStringUtil::null); FloaterGridManager::getInstance()->childSetText("avatar_password", LLStringUtil::null); // childSetEnabled("search", true); FloaterGridManager::getInstance()->childSetText("search", LLStringUtil::null); } else if (FloaterGridManager::getInstance()->getState() == ADD_COPY) { llinfos << "mState == ADD_COPY" << llendl; FloaterGridManager::getInstance()->childSetText("gridnick", LLStringExplicit("<required>")); } else { llwarns << "Illegal state " << FloaterGridManager::getInstance()->getState() << llendl; } return; }
void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content) { LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); if(!list) { return; } S32 number_attachments = content["attachments"].size(); for(int i = 0; i < number_attachments; i++) { std::string humanReadableLocation = ""; if(content["attachments"][i].has("location")) { std::string actualLocation = content["attachments"][i]["location"]; humanReadableLocation = LLTrans::getString(actualLocation.c_str()); } S32 number_objects = content["attachments"][i]["objects"].size(); for(int j = 0; j < number_objects; j++) { LLUUID task_id = content["attachments"][i]["objects"][j]["id"].asUUID(); S32 size = 0; if(content["attachments"][i]["objects"][j]["resources"].has("memory")) { size = content["attachments"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB; } S32 urls = 0; if(content["attachments"][i]["objects"][j]["resources"].has("urls")) { urls = content["attachments"][i]["objects"][j]["resources"]["urls"].asInteger(); } std::string name = content["attachments"][i]["objects"][j]["name"].asString(); LLSD element; element["id"] = task_id; element["columns"][0]["column"] = "size"; element["columns"][0]["value"] = llformat("%d", size); element["columns"][0]["font"] = "SANSSERIF"; element["columns"][1]["column"] = "urls"; element["columns"][1]["value"] = llformat("%d", urls); element["columns"][1]["font"] = "SANSSERIF"; element["columns"][2]["column"] = "name"; element["columns"][2]["value"] = name; element["columns"][2]["font"] = "SANSSERIF"; element["columns"][3]["column"] = "location"; element["columns"][3]["value"] = humanReadableLocation; element["columns"][3]["font"] = "SANSSERIF"; list->addElement(element); } } setAttachmentSummary(content); childSetValue("loading_text", LLSD(std::string(""))); LLButton* btn = getChild<LLButton>("refresh_list_btn"); if(btn) { btn->setEnabled(true); } }
void LLFloaterMessageLog::refreshNetList() { LLScrollListCtrl* scrollp = getChild<LLScrollListCtrl>("net_list"); // Update circuit data of net list items std::vector<LLCircuitData*> circuits = gMessageSystem->mCircuitInfo.getCircuitDataList(); std::vector<LLCircuitData*>::iterator circuits_end = circuits.end(); for(std::vector<LLCircuitData*>::iterator iter = circuits.begin(); iter != circuits_end; ++iter) { LLNetListItem* itemp = findNetListItem((*iter)->getHost()); if(!itemp) { LLUUID id; id.generate(); itemp = new LLNetListItem(id); sNetListItems.push_back(itemp); } itemp->mCircuitData = (*iter); } // Clear circuit data of items whose circuits are gone std::list<LLNetListItem*>::iterator items_end = sNetListItems.end(); for(std::list<LLNetListItem*>::iterator iter = sNetListItems.begin(); iter != items_end; ++iter) { if(std::find(circuits.begin(), circuits.end(), (*iter)->mCircuitData) == circuits.end()) (*iter)->mCircuitData = NULL; } // Remove net list items that are totally useless now for(std::list<LLNetListItem*>::iterator iter = sNetListItems.begin(); iter != sNetListItems.end();) { if((*iter)->mCircuitData == NULL) iter = sNetListItems.erase(iter); else ++iter; } // Update names of net list items items_end = sNetListItems.end(); for(std::list<LLNetListItem*>::iterator iter = sNetListItems.begin(); iter != items_end; ++iter) { LLNetListItem* itemp = (*iter); if(itemp->mAutoName) { if(itemp->mCircuitData) { LLViewerRegion* regionp = LLWorld::getInstance()->getRegion(itemp->mCircuitData->getHost()); if(regionp) { std::string name = regionp->getName(); if(name == "") name = llformat("%s (awaiting region name)", itemp->mCircuitData->getHost().getString().c_str()); itemp->mName = name; itemp->mPreviousRegionName = name; } else { itemp->mName = itemp->mCircuitData->getHost().getString(); if(itemp->mPreviousRegionName != "") itemp->mName.append(llformat(" (was %s)", itemp->mPreviousRegionName.c_str())); } } else { // an item just for an event queue, not handled yet itemp->mName = "Something else"; } } } // Rebuild scroll list from scratch LLUUID selected_id = scrollp->getFirstSelected() ? scrollp->getFirstSelected()->getUUID() : LLUUID::null; S32 scroll_pos = scrollp->getScrollPos(); scrollp->clearRows(); for(std::list<LLNetListItem*>::iterator iter = sNetListItems.begin(); iter != items_end; ++iter) { LLNetListItem* itemp = (*iter); LLSD element; element["id"] = itemp->mID; LLSD& text_column = element["columns"][0]; text_column["column"] = "text"; text_column["value"] = itemp->mName + (itemp->mCircuitData->getHost() == gAgent.getRegionHost() ? " (main)" : ""); for(int i = 0; i < 2; i++) { LLSD& icon_column = element["columns"][i + 1]; icon_column["column"] = llformat("icon%d", i); icon_column["type"] = "icon"; icon_column["value"] = ""; } LLScrollListItem* scroll_itemp = scrollp->addElement(element); BOOL has_live_circuit = itemp->mCircuitData && itemp->mCircuitData->isAlive(); if(has_live_circuit) { LLScrollListIcon* icon = (LLScrollListIcon*)scroll_itemp->getColumn(1); icon->setValue("icon_net_close_circuit.tga"); icon->setClickCallback(boost::bind(&LLFloaterMessageLog::onClickCloseCircuit, itemp)); } else { LLScrollListIcon* icon = (LLScrollListIcon*)scroll_itemp->getColumn(1); icon->setValue("icon_net_close_circuit_gray.tga"); //icon->setClickCallback(NULL); } // Event queue isn't even supported yet... FIXME LLScrollListIcon* icon = (LLScrollListIcon*)scroll_itemp->getColumn(2); icon->setValue("icon_net_close_eventpoll_gray.tga"); //icon->setClickCallback(NULL); } if(selected_id.notNull()) scrollp->selectByID(selected_id); if(scroll_pos < scrollp->getItemCount()) scrollp->setScrollPos(scroll_pos); }
void LLFloaterClothing::buildClothingList() { //llinfos << "buildClothingList" << llendl; LLScrollListCtrl* list = gUICtrlFactory->getScrollListByName(this, "clothing_list"); if (!list) return; list->operateOnAll(LLCtrlListInterface::OP_DELETE); LLInventoryModel::cat_array_t cats; LLInventoryModel::item_array_t items; LLIsClothing is_clothing; gInventory.collectDescendentsIf(gAgent.getInventoryRootID(), cats, items, LLInventoryModel::EXCLUDE_TRASH, is_clothing); S32 count = items.count(); for(S32 i = 0; i < count; ++i) { LLInventoryItem* item = items.get(i); LLSD row; row["id"] = item->getUUID(); BOOL item_is_multi = FALSE; if ( item->getFlags() & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) { item_is_multi = TRUE; } LLUUID image_id = get_item_icon_uuid(item->getType(), item->getInventoryType(), item->getFlags(), item_is_multi); // flags = wearable type row["columns"][0]["column"] = "icon"; row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = image_id; LLString text = item->getName(); LLString style = "NORMAL"; if( gAgent.isWearingItem( item->getUUID() ) ) { text.append(" (worn)"); style = "BOLD"; } row["columns"][1]["column"] = "name"; row["columns"][1]["value"] = text; row["columns"][1]["font"] = "SANSSERIFSMALL"; row["columns"][1]["font-style"] = style; // hidden column for sorting U32 flags = item->getFlags(); // flags = wearable type enum EWearableType wearable_type = (enum EWearableType)flags; const char* wearable_label = LLWearable::typeToTypeLabel(wearable_type); //line->addColumn(wearable_label, FONT, -1); // invisible row["columns"][2]["column"] = "sort"; row["columns"][2]["value"] = wearable_label; list->addElement(row); } if (count > 0) { mAllowSelection = TRUE; } else if (LLInventoryModel::backgroundFetchActive()) { // We're loading list->addCommentText(LOADING_STRING); mAllowSelection = FALSE; } else { // Weird case, we're done loading but have no clothing list->addCommentText("No clothing found."); mAllowSelection = FALSE; } }
void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) { U32 request_flags; U32 total_count; msg->getU32Fast(_PREHASH_RequestData, _PREHASH_RequestFlags, request_flags); msg->getU32Fast(_PREHASH_RequestData, _PREHASH_TotalObjectCount, total_count); msg->getU32Fast(_PREHASH_RequestData, _PREHASH_ReportType, mCurrentMode); LLScrollListCtrl *list = getChild<LLScrollListCtrl>("objects_list"); S32 block_count = msg->getNumberOfBlocks("ReportData"); for (S32 block = 0; block < block_count; ++block) { U32 task_local_id; U32 time_stamp = 0; LLUUID task_id; F32 location_x, location_y, location_z; F32 score; std::string name_buf; std::string owner_buf; F32 mono_score = 0.f; bool have_extended_data = false; S32 public_urls = 0; msg->getU32Fast(_PREHASH_ReportData, _PREHASH_TaskLocalID, task_local_id, block); msg->getUUIDFast(_PREHASH_ReportData, _PREHASH_TaskID, task_id, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_LocationX, location_x, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_LocationY, location_y, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_LocationZ, location_z, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_Score, score, block); msg->getStringFast(_PREHASH_ReportData, _PREHASH_TaskName, name_buf, block); msg->getStringFast(_PREHASH_ReportData, _PREHASH_OwnerName, owner_buf, block); if(msg->has("DataExtended")) { have_extended_data = true; msg->getU32("DataExtended", "TimeStamp", time_stamp, block); msg->getF32("DataExtended", "MonoScore", mono_score, block); msg->getS32(_PREHASH_ReportData,"PublicURLs",public_urls,block); } LLSD element; element["id"] = task_id; element["object_name"] = name_buf; element["owner_name"] = owner_buf; element["columns"][0]["column"] = "score"; element["columns"][0]["value"] = llformat("%0.3f", score); element["columns"][0]["font"] = "SANSSERIF"; element["columns"][1]["column"] = "name"; element["columns"][1]["value"] = name_buf; element["columns"][1]["font"] = "SANSSERIF"; element["columns"][2]["column"] = "owner"; element["columns"][2]["value"] = owner_buf; element["columns"][2]["font"] = "SANSSERIF"; element["columns"][3]["column"] = "location"; element["columns"][3]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); element["columns"][3]["font"] = "SANSSERIF"; element["columns"][4]["column"] = "time"; element["columns"][4]["value"] = formatted_time((time_t)time_stamp); element["columns"][4]["font"] = "SANSSERIF"; if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS && have_extended_data) { element["columns"][5]["column"] = "mono_time"; element["columns"][5]["value"] = llformat("%0.3f", mono_score); element["columns"][5]["font"] = "SANSSERIF"; element["columns"][6]["column"] = "URLs"; element["columns"][6]["value"] = llformat("%d", public_urls); element["columns"][6]["font"] = "SANSSERIF"; } list->addElement(element); mObjectListData.append(element); mObjectListIDs.push_back(task_id); mtotalScore += score; } if (total_count == 0 && list->getItemCount() == 0) { list->addCommentText(getString("none_descriptor")); } else { list->selectFirstItem(); } if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS) { setTitle(getString("top_scripts_title")); list->setColumnLabel("score", getString("scripts_score_label")); list->setColumnLabel("mono_time", getString("scripts_mono_time_label")); LLUIString format = getString("top_scripts_text"); format.setArg("[COUNT]", llformat("%d", total_count)); format.setArg("[TIME]", llformat("%0.1f", mtotalScore)); childSetValue("title_text", LLSD(format)); } else { setTitle(getString("top_colliders_title")); list->setColumnLabel("score", getString("colliders_score_label")); list->setColumnLabel("mono_time", ""); LLUIString format = getString("top_colliders_text"); format.setArg("[COUNT]", llformat("%d", total_count)); childSetValue("title_text", LLSD(format)); } }
// static void LLFloaterMessageLog::conditionalLog(LLFloaterMessageLogItem item) { if(!sBusyApplyingFilter) sInstance->childSetText("log_status_text", llformat("Showing %d messages from %d", sFloaterMessageLogItems.size(), sMessageLogEntries.size())); std::string find_name = item.mName; LLStringUtil::toLower(find_name); if(sMessageLogFilter.mPositiveNames.size()) if(std::find(sMessageLogFilter.mPositiveNames.begin(), sMessageLogFilter.mPositiveNames.end(), find_name) == sMessageLogFilter.mPositiveNames.end()) return; if(std::find(sMessageLogFilter.mNegativeNames.begin(), sMessageLogFilter.mNegativeNames.end(), find_name) != sMessageLogFilter.mNegativeNames.end()) return; sFloaterMessageLogItems.push_back(item); // moved from beginning... BOOL outgoing = item.isOutgoing(); std::string net_name("\?\?\?"); if(item.mType == LLFloaterMessageLogItem::TEMPLATE) { LLHost find_host = outgoing ? item.mToHost : item.mFromHost; net_name = find_host.getIPandPort(); std::list<LLNetListItem*>::iterator end = sNetListItems.end(); for(std::list<LLNetListItem*>::iterator iter = sNetListItems.begin(); iter != end; ++iter) { if((*iter)->mCircuitData->getHost() == find_host) { net_name = (*iter)->mName; break; } } } LLSD element; element["id"] = item.mID; LLSD& sequence_column = element["columns"][0]; sequence_column["column"] = "sequence"; sequence_column["value"] = llformat("%u", item.mSequenceID); LLSD& type_column = element["columns"][1]; type_column["column"] = "type"; type_column["value"] = item.mType == LLFloaterMessageLogItem::TEMPLATE ? "UDP" : "\?\?\?"; LLSD& direction_column = element["columns"][2]; direction_column["column"] = "direction"; direction_column["value"] = outgoing ? "to" : "from"; LLSD& net_column = element["columns"][3]; net_column["column"] = "net"; net_column["value"] = net_name; LLSD& name_column = element["columns"][4]; name_column["column"] = "name"; name_column["value"] = item.mName; /* LLSD& zer_column = element["columns"][5]; zer_column["column"] = "flag_zer"; zer_column["type"] = "icon"; zer_column["value"] = (item.mFlags & LL_ZERO_CODE_FLAG) ? "flag_zer.tga" : ""; LLSD& rel_column = element["columns"][6]; rel_column["column"] = "flag_rel"; rel_column["type"] = "icon"; rel_column["value"] = (item.mFlags & LL_RELIABLE_FLAG) ? "flag_rel.tga" : ""; LLSD& rsd_column = element["columns"][7]; rsd_column["column"] = "flag_rsd"; rsd_column["type"] = "icon"; rsd_column["value"] = (item.mFlags & LL_RESENT_FLAG) ? "flag_rsd.tga" : ""; LLSD& ack_column = element["columns"][8]; ack_column["column"] = "flag_ack"; ack_column["type"] = "icon"; ack_column["value"] = (item.mFlags & LL_ACK_FLAG) ? "flag_ack.tga" : ""; */ LLSD& summary_column = element["columns"][5]; summary_column["column"] = "summary"; summary_column["value"] = item.mSummary; LLScrollListCtrl* scrollp = sInstance->getChild<LLScrollListCtrl>("message_log"); S32 scroll_pos = scrollp->getScrollPos(); scrollp->addElement(element); if(scroll_pos > scrollp->getItemCount() - scrollp->getPageLines() - 4) scrollp->setScrollPos(scrollp->getItemCount()); }
// static BOOL LLFloaterExploreSounds::tick() { //if(childGetValue("pause_chk").asBoolean()) return FALSE; bool show_collision_sounds = childGetValue("collision_chk").asBoolean(); bool show_repeated_assets = childGetValue("repeated_asset_chk").asBoolean(); bool show_avatars = childGetValue("avatars_chk").asBoolean(); bool show_objects = childGetValue("objects_chk").asBoolean(); std::list<LLSoundHistoryItem> history; if(childGetValue("pause_chk").asBoolean()) { history = mLastHistory; } else { std::map<LLUUID, LLSoundHistoryItem>::iterator map_iter = gSoundHistory.begin(); std::map<LLUUID, LLSoundHistoryItem>::iterator map_end = gSoundHistory.end(); for( ; map_iter != map_end; ++map_iter) { history.push_back((*map_iter).second); } LLSoundHistoryItemCompare c; history.sort(c); mLastHistory = history; } LLScrollListCtrl* list = getChild<LLScrollListCtrl>("sound_list"); // Save scroll pos and selection so they can be restored S32 scroll_pos = list->getScrollPos(); LLDynamicArray<LLUUID> selected_ids; std::vector<LLScrollListItem*> selected_items = list->getAllSelected(); std::vector<LLScrollListItem*>::iterator selection_iter = selected_items.begin(); std::vector<LLScrollListItem*>::iterator selection_end = selected_items.end(); for(; selection_iter != selection_end; ++selection_iter) selected_ids.push_back((*selection_iter)->getUUID()); list->clearRows(); std::list<LLUUID> unique_asset_list; std::list<LLSoundHistoryItem>::iterator iter = history.begin(); std::list<LLSoundHistoryItem>::iterator end = history.end(); for( ; iter != end; ++iter) { LLSoundHistoryItem item = (*iter); bool is_avatar = item.mOwnerID == item.mSourceID; if(is_avatar && !show_avatars) continue; bool is_object = !is_avatar; if(is_object && !show_objects) continue; bool is_repeated_asset = std::find(unique_asset_list.begin(), unique_asset_list.end(), item.mAssetID) != unique_asset_list.end(); if(is_repeated_asset && !show_repeated_assets) continue; if(!item.mReviewed) { item.mReviewedCollision = std::find(&collision_sounds[0], &collision_sounds[num_collision_sounds], item.mAssetID) != &collision_sounds[num_collision_sounds]; item.mReviewed = true; } bool is_collision_sound = item.mReviewedCollision; if(is_collision_sound && !show_collision_sounds) continue; unique_asset_list.push_back(item.mAssetID); LLSD element; element["id"] = item.mID; LLSD& playing_column = element["columns"][0]; playing_column["column"] = "playing"; if(item.mPlaying) playing_column["value"] = " Playing"; else playing_column["value"] = llformat("%.1f min ago", (LLTimer::getElapsedSeconds() - item.mTimeStopped) / 60.f); LLSD& type_column = element["columns"][1]; type_column["column"] = "type"; if(item.mType == LLAudioEngine::AUDIO_TYPE_UI) { // this shouldn't happen for now, as UI is forbidden in the log type_column["value"] = "UI"; } else { std::string type; if(is_avatar) { type = "Avatar"; } else { if(item.mIsTrigger) { type = "llTriggerSound"; } else { if(item.mIsLooped) type = "llLoopSound"; else type = "llPlaySound"; } } type_column["value"] = type; } LLSD& owner_column = element["columns"][2]; owner_column["column"] = "owner"; std::string fullname; BOOL is_group; if(gCacheName->getIfThere(item.mOwnerID, fullname, is_group)) { if(is_group) fullname += " (Group)"; owner_column["value"] = fullname; } else owner_column["value"] = item.mOwnerID.asString(); LLSD& sound_column = element["columns"][3]; sound_column["column"] = "sound"; if (item.mOwnerID == gAgent.getID()) sound_column["value"] = item.mAssetID.asString(); else sound_column["value"] = LLUUID::null.asString(); list->addElement(element, ADD_BOTTOM); } list->selectMultiple(selected_ids); list->setScrollPos(scroll_pos); return FALSE; }
void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) { LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); if(!list) { llwarns << "Error getting the scripts_list control" << llendl; return; } S32 number_parcels = content["parcels"].size(); LLStringUtil::format_map_t args_parcels; args_parcels["[PARCELS]"] = llformat ("%d", number_parcels); std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels); childSetValue("parcels_listed", LLSD(msg_parcels)); std::vector<LLUUID> names_requested; // This makes the assumption that all objects will have the same set // of attributes, ie they will all have, or none will have locations // This is a pretty safe assumption as it's reliant on server version. bool has_locations = false; bool has_local_ids = false; for(S32 i = 0; i < number_parcels; i++) { std::string parcel_name = content["parcels"][i]["name"].asString(); LLUUID parcel_id = content["parcels"][i]["id"].asUUID(); S32 number_objects = content["parcels"][i]["objects"].size(); S32 local_id = 0; if(content["parcels"][i].has("local_id")) { // if any locations are found flag that we can use them and turn on the highlight button has_local_ids = true; local_id = content["parcels"][i]["local_id"].asInteger(); } for(S32 j = 0; j < number_objects; j++) { S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB; S32 urls = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger(); std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString(); LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID(); LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID(); F32 location_x = 0.0f; F32 location_y = 0.0f; F32 location_z = 0.0f; if(content["parcels"][i]["objects"][j].has("location")) { // if any locations are found flag that we can use them and turn on the highlight button LLVector3 vec = ll_vector3_from_sd(content["parcels"][i]["objects"][j]["location"]); has_locations = true; location_x = vec.mV[0]; location_y = vec.mV[1]; location_z = vec.mV[2]; } std::string owner_buf; // in the future the server will give us owner names, so see if we're there yet: if(content["parcels"][i]["objects"][j].has("owner_name")) { owner_buf = content["parcels"][i]["objects"][j]["owner_name"].asString(); } // ...and if not use the slightly more painful method of disovery: else { BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf); if(!name_is_cached) { if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end()) { names_requested.push_back(owner_id); gCacheName->get(owner_id, TRUE, boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache, this, _1, _2, _3)); } } } LLSD element; element["id"] = task_id; element["columns"][0]["column"] = "size"; element["columns"][0]["value"] = llformat("%d", size); element["columns"][0]["font"] = "SANSSERIF"; element["columns"][1]["column"] = "urls"; element["columns"][1]["value"] = llformat("%d", urls); element["columns"][1]["font"] = "SANSSERIF"; element["columns"][2]["column"] = "name"; element["columns"][2]["value"] = name_buf; element["columns"][2]["font"] = "SANSSERIF"; element["columns"][3]["column"] = "owner"; element["columns"][3]["value"] = owner_buf; element["columns"][3]["font"] = "SANSSERIF"; element["columns"][4]["column"] = "parcel"; element["columns"][4]["value"] = parcel_name; element["columns"][4]["font"] = "SANSSERIF"; element["columns"][5]["column"] = "location"; if(has_locations) { element["columns"][5]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); } else { element["columns"][5]["value"] = ""; } element["columns"][5]["font"] = "SANSSERIF"; list->addElement(element, ADD_SORTED); element["owner_id"] = owner_id; element["local_id"] = local_id; mObjectListItems.push_back(element); } } if (has_locations) { LLButton* btn = getChild<LLButton>("highlight_btn"); if(btn) { btn->setVisible(true); } } if (has_local_ids) { LLButton* btn = getChild<LLButton>("return_btn"); if(btn) { btn->setVisible(true); } } // save the structure to make object return easier mContent = content; }
// Checked: 2010-03-18 (RLVa-1.2.0) void RlvFloaterLocks::refreshAll() const { LLScrollListCtrl* pLockList = getChild<LLScrollListCtrl>("lock_list"); pLockList->operateOnAll(LLCtrlListInterface::OP_DELETE); if (!isAgentAvatarValid()) return; // // Set-up a row we can just reuse // LLSD sdRow; LLSD& sdColumns = sdRow["columns"]; sdColumns[0]["column"] = "lock_type"; sdColumns[0]["type"] = "text"; sdColumns[1]["column"] = "lock_addrem"; sdColumns[1]["type"] = "text"; sdColumns[2]["column"] = "lock_target"; sdColumns[2]["type"] = "text"; sdColumns[3]["column"] = "lock_origin"; sdColumns[3]["type"] = "text"; // // List attachment locks // sdColumns[0]["value"] = "Attachment"; sdColumns[1]["value"] = "rem"; const RlvAttachmentLocks::rlv_attachobjlock_map_t& attachObjRem = gRlvAttachmentLocks.getAttachObjLocks(); for (RlvAttachmentLocks::rlv_attachobjlock_map_t::const_iterator itAttachObj = attachObjRem.begin(); itAttachObj != attachObjRem.end(); ++itAttachObj) { sdColumns[2]["value"] = rlvGetItemNameFromObjID(itAttachObj->first); sdColumns[3]["value"] = rlvGetItemNameFromObjID(itAttachObj->second); pLockList->addElement(sdRow, ADD_BOTTOM); } // // List attachment point locks // sdColumns[0]["value"] = "Attachment Point"; sdColumns[1]["value"] = "add"; const RlvAttachmentLocks::rlv_attachptlock_map_t& attachPtAdd = gRlvAttachmentLocks.getAttachPtLocks(RLV_LOCK_ADD); for (RlvAttachmentLocks::rlv_attachptlock_map_t::const_iterator itAttachPt = attachPtAdd.begin(); itAttachPt != attachPtAdd.end(); ++itAttachPt) { const LLViewerJointAttachment* pAttachPt = get_if_there(gAgentAvatarp->mAttachmentPoints, itAttachPt->first, static_cast<LLViewerJointAttachment*>(NULL)); sdColumns[2]["value"] = pAttachPt->getName(); sdColumns[3]["value"] = rlvGetItemNameFromObjID(itAttachPt->second); pLockList->addElement(sdRow, ADD_BOTTOM); } sdColumns[1]["value"] = "rem"; const RlvAttachmentLocks::rlv_attachptlock_map_t& attachPtRem = gRlvAttachmentLocks.getAttachPtLocks(RLV_LOCK_REMOVE); for (RlvAttachmentLocks::rlv_attachptlock_map_t::const_iterator itAttachPt = attachPtRem.begin(); itAttachPt != attachPtRem.end(); ++itAttachPt) { const LLViewerJointAttachment* pAttachPt = get_if_there(gAgentAvatarp->mAttachmentPoints, itAttachPt->first, static_cast<LLViewerJointAttachment*>(NULL)); sdColumns[2]["value"] = pAttachPt->getName(); sdColumns[3]["value"] = rlvGetItemNameFromObjID(itAttachPt->second); pLockList->addElement(sdRow, ADD_BOTTOM); } // // List wearable type locks // sdColumns[0]["value"] = "Wearable Type"; sdColumns[1]["value"] = "add"; const RlvWearableLocks::rlv_wearabletypelock_map_t& wearableTypeAdd = gRlvWearableLocks.getWearableTypeLocks(RLV_LOCK_ADD); for (RlvWearableLocks::rlv_wearabletypelock_map_t::const_iterator itWearableType = wearableTypeAdd.begin(); itWearableType != wearableTypeAdd.end(); ++itWearableType) { sdColumns[2]["value"] = LLWearableType::getTypeLabel(itWearableType->first); sdColumns[3]["value"] = rlvGetItemNameFromObjID(itWearableType->second); pLockList->addElement(sdRow, ADD_BOTTOM); } sdColumns[1]["value"] = "rem"; const RlvWearableLocks::rlv_wearabletypelock_map_t& wearableTypeRem = gRlvWearableLocks.getWearableTypeLocks(RLV_LOCK_REMOVE); for (RlvWearableLocks::rlv_wearabletypelock_map_t::const_iterator itWearableType = wearableTypeRem.begin(); itWearableType != wearableTypeRem.end(); ++itWearableType) { sdColumns[2]["value"] = LLWearableType::getTypeName(itWearableType->first); sdColumns[3]["value"] = rlvGetItemNameFromObjID(itWearableType->second); pLockList->addElement(sdRow, ADD_BOTTOM); } // // List "nostrip" (soft) locks // sdColumns[1]["value"] = "nostrip"; sdColumns[3]["value"] = "(Agent)"; LLInventoryModel::cat_array_t folders; LLInventoryModel::item_array_t items; LLFindWearablesEx f(true, true); gInventory.collectDescendentsIf(LLAppearanceMgr::instance().getCOF(), folders, items, FALSE, f); for (LLInventoryModel::item_array_t::const_iterator itItem = items.begin(); itItem != items.end(); ++itItem) { const LLViewerInventoryItem* pItem = *itItem; if (!RlvForceWear::instance().isStrippable(pItem->getUUID())) { sdColumns[0]["value"] = rlvGetItemType(pItem); sdColumns[2]["value"] = rlvGetItemName(pItem); pLockList->addElement(sdRow, ADD_BOTTOM); } } // // List folder locks // { // Folder lock descriptors const RlvFolderLocks::folderlock_list_t& folderLocks = RlvFolderLocks::instance().getFolderLocks(); for (RlvFolderLocks::folderlock_list_t::const_iterator itFolderLock = folderLocks.begin(); itFolderLock != folderLocks.end(); ++itFolderLock) { const RlvFolderLocks::folderlock_descr_t* pLockDescr = *itFolderLock; if (pLockDescr) { sdColumns[0]["value"] = "Folder Descriptor"; sdColumns[1]["value"] = rlvLockMaskToString(pLockDescr->eLockType) + "/" + rlvFolderLockPermissionToString(pLockDescr->eLockPermission) + "/" + rlvFolderLockScopeToString(pLockDescr->eLockScope); sdColumns[2]["value"] = rlvFolderLockSourceToTarget(pLockDescr->lockSource); sdColumns[3]["value"] = rlvGetItemNameFromObjID(pLockDescr->idRlvObj); pLockList->addElement(sdRow, ADD_BOTTOM); } } } { // Folder locked attachments and wearables uuid_vec_t idItems; const uuid_vec_t& folderLockAttachmentsIds = RlvFolderLocks::instance().getAttachmentLookups(); idItems.insert(idItems.end(), folderLockAttachmentsIds.begin(), folderLockAttachmentsIds.end()); const uuid_vec_t& folderLockWearabels = RlvFolderLocks::instance().getWearableLookups(); idItems.insert(idItems.end(), folderLockWearabels.begin(), folderLockWearabels.end()); for (uuid_vec_t::const_iterator itItemId = idItems.begin(); itItemId != idItems.end(); ++itItemId) { const LLViewerInventoryItem* pItem = gInventory.getItem(*itItemId); if (pItem) { sdColumns[0]["value"] = rlvGetItemType(pItem); sdColumns[1]["value"] = rlvLockMaskToString(RLV_LOCK_REMOVE); sdColumns[2]["value"] = rlvGetItemName(pItem); sdColumns[3]["value"] = "<Folder Lock>"; pLockList->addElement(sdRow, ADD_BOTTOM); } } } }
void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data) { U32 request_flags; U32 total_count; msg->getU32Fast(_PREHASH_RequestData, _PREHASH_RequestFlags, request_flags); msg->getU32Fast(_PREHASH_RequestData, _PREHASH_TotalObjectCount, total_count); msg->getU32Fast(_PREHASH_RequestData, _PREHASH_ReportType, mCurrentMode); LLScrollListCtrl *list = getChild<LLScrollListCtrl>("objects_list"); S32 block_count = msg->getNumberOfBlocks("ReportData"); for (S32 block = 0; block < block_count; ++block) { U32 task_local_id; U32 time_stamp = 0; LLUUID task_id; F32 location_x, location_y, location_z; F32 score; std::string name_buf; std::string owner_buf; F32 mono_score = 0.f; bool have_extended_data = false; S32 public_urls = 0; msg->getU32Fast(_PREHASH_ReportData, _PREHASH_TaskLocalID, task_local_id, block); msg->getUUIDFast(_PREHASH_ReportData, _PREHASH_TaskID, task_id, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_LocationX, location_x, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_LocationY, location_y, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_LocationZ, location_z, block); msg->getF32Fast(_PREHASH_ReportData, _PREHASH_Score, score, block); msg->getStringFast(_PREHASH_ReportData, _PREHASH_TaskName, name_buf, block); msg->getStringFast(_PREHASH_ReportData, _PREHASH_OwnerName, owner_buf, block); if(msg->has("DataExtended")) { have_extended_data = true; msg->getU32("DataExtended", "TimeStamp", time_stamp, block); msg->getF32("DataExtended", "MonoScore", mono_score, block); msg->getS32(_PREHASH_ReportData,"PublicURLs",public_urls,block); } LLSD element; element["id"] = task_id; LLSD columns; columns[0]["column"] = "score"; columns[0]["value"] = llformat("%0.3f", score); columns[0]["font"] = "SANSSERIF"; columns[1]["column"] = "name"; columns[1]["value"] = name_buf; columns[1]["font"] = "SANSSERIF"; // Owner names can have trailing spaces sent from server LLStringUtil::trim(owner_buf); if (LLAvatarNameCache::useDisplayNames()) { // ...convert hard-coded name from server to a username // *TODO: Send owner_id from server and look up display name owner_buf = LLCacheName::buildUsername(owner_buf); } else { // ...just strip out legacy "Resident" name owner_buf = LLCacheName::cleanFullName(owner_buf); } columns[2]["column"] = "owner"; columns[2]["value"] = owner_buf; columns[2]["font"] = "SANSSERIF"; columns[3]["column"] = "location"; columns[3]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); columns[3]["font"] = "SANSSERIF"; columns[4]["column"] = "time"; columns[4]["value"] = formatted_time((time_t)time_stamp); columns[4]["font"] = "SANSSERIF"; if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS && have_extended_data) { columns[5]["column"] = "mono_time"; columns[5]["value"] = llformat("%0.3f", mono_score); columns[5]["font"] = "SANSSERIF"; columns[6]["column"] = "URLs"; columns[6]["value"] = llformat("%d", public_urls); columns[6]["font"] = "SANSSERIF"; } element["columns"] = columns; list->addElement(element); mObjectListData.append(element); mObjectListIDs.push_back(task_id); mtotalScore += score; } if (total_count == 0 && list->getItemCount() == 0) { list->setCommentText(getString("none_descriptor")); } else { list->selectFirstItem(); } if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS) { setTitle(getString("top_scripts_title")); list->setColumnLabel("score", getString("scripts_score_label")); list->setColumnLabel("mono_time", getString("scripts_mono_time_label")); LLUIString format = getString("top_scripts_text"); format.setArg("[COUNT]", llformat("%d", total_count)); format.setArg("[TIME]", llformat("%0.1f", mtotalScore)); getChild<LLUICtrl>("title_text")->setValue(LLSD(format)); } else { setTitle(getString("top_colliders_title")); list->setColumnLabel("score", getString("colliders_score_label")); list->setColumnLabel("mono_time", ""); LLUIString format = getString("top_colliders_text"); format.setArg("[COUNT]", llformat("%d", total_count)); getChild<LLUICtrl>("title_text")->setValue(LLSD(format)); } }
void LLPanelDirBrowser::processDirPeopleReply(LLMessageSystem *msg, void**) { LLUUID query_id; std::string first_name; std::string last_name; LLUUID agent_id; msg->getUUIDFast(_PREHASH_QueryData,_PREHASH_QueryID, query_id); LLPanelDirBrowser* self; self = gDirBrowserInstances.getIfThere(query_id); if (!self) { // data from an old query return; } self->mHaveSearchResults = TRUE; LLScrollListCtrl* list = self->findChild<LLScrollListCtrl>("results"); if (!list) return; if (!list->getCanSelect()) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); self->mResultsContents = LLSD(); } S32 rows = msg->getNumberOfBlocksFast(_PREHASH_QueryReplies); self->mResultsReceived += rows; rows = self->showNextButton(rows); for (S32 i = 0; i < rows; i++) { msg->getStringFast(_PREHASH_QueryReplies,_PREHASH_FirstName, first_name, i); msg->getStringFast(_PREHASH_QueryReplies,_PREHASH_LastName, last_name, i); msg->getUUIDFast( _PREHASH_QueryReplies,_PREHASH_AgentID, agent_id, i); // msg->getU8Fast( _PREHASH_QueryReplies,_PREHASH_Online, online, i); // unused // msg->getStringFast(_PREHASH_QueryReplies,_PREHASH_Group, group, i); // msg->getS32Fast( _PREHASH_QueryReplies,_PREHASH_Reputation, reputation, i); if (agent_id.isNull()) { continue; } LLSD content; LLSD row; row["id"] = agent_id; // We don't show online status in the finder anymore, // so just use the 'offline' icon as the generic 'person' icon row["columns"][0]["column"] = "icon"; row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = "icon_avatar_offline.tga"; content["type"] = AVATAR_CODE; std::string fullname = first_name + " " + last_name; row["columns"][1]["column"] = "name"; row["columns"][1]["value"] = fullname; row["columns"][1]["font"] = "SANSSERIF"; content["name"] = fullname; list->addElement(row); self->mResultsContents[agent_id.asString()] = content; } list->sortByColumn(self->mCurrentSortColumn, self->mCurrentSortAscending); self->updateResultCount(); // Poke the result received timer self->mLastResultTimer.reset(); self->mDidAutoSelect = FALSE; }