void LLPanelRequestTools::refresh() { std::string buffer = childGetValue("destination"); LLCtrlListInterface *list = childGetListInterface("destination"); if (!list) return; list->operateOnAll(LLCtrlListInterface::OP_DELETE); list->addSimpleElement(SELECTION); list->addSimpleElement(AGENT_REGION); for (LLWorld::region_list_t::iterator iter = LLWorld::getInstance()->mActiveRegionList.begin(); iter != LLWorld::getInstance()->mActiveRegionList.end(); ++iter) { LLViewerRegion* regionp = *iter; std::string name = regionp->getName(); if (!name.empty()) { list->addSimpleElement(name); } } if(!buffer.empty()) { list->selectByValue(buffer); } else { list->selectByValue(SELECTION); } }
void LLPanelRequestTools::refresh() { std::string buffer = childGetValue("destination"); LLCtrlListInterface *list = childGetListInterface("destination"); if (!list) return; list->operateOnAll(LLCtrlListInterface::OP_DELETE); list->addSimpleElement(SELECTION); list->addSimpleElement(AGENT_REGION); for (LLWorld::region_list_t::iterator iter = gWorldp->mActiveRegionList.begin(); iter != gWorldp->mActiveRegionList.end(); ++iter) { LLViewerRegion* regionp = *iter; LLString name = regionp->getName(); //MK if (RRenabled && gAgent.mRRInterface.mContainsShowloc) { name = "(Hidden)"; } //mk if (!name.empty()) { list->addSimpleElement(name); } } if(!buffer.empty()) { list->selectByValue(buffer); } else { list->selectByValue(SELECTION); } }
void LLFloaterWorldMap::clearLocationSelection(BOOL clear_ui) { LLCtrlListInterface *list = childGetListInterface("search_results"); if (list) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } LLWorldMap::getInstance()->cancelTracking(); mCompletingRegionName = ""; }
// Checked: 2010-04-18 (RLVa-1.1.3b) | Modified: RLVa-1.2.0e void RlvFloaterBehaviour::refreshAll() { LLCtrlListInterface* pBhvrList = childGetListInterface("behaviour_list"); if (!pBhvrList) return; pBhvrList->operateOnAll(LLCtrlListInterface::OP_DELETE); if (!gAgentAvatarp) return; // // Set-up a row we can just reuse // LLSD sdRow; LLSD& sdColumns = sdRow["columns"]; sdColumns[0]["column"] = "behaviour"; sdColumns[0]["type"] = "text"; sdColumns[1]["column"] = "name"; sdColumns[1]["type"] = "text"; // // List behaviours // const RlvHandler::rlv_object_map_t* pRlvObjects = gRlvHandler.getObjectMap(); for (RlvHandler::rlv_object_map_t::const_iterator itObj = pRlvObjects->begin(), endObj = pRlvObjects->end(); itObj != endObj; ++itObj) { sdColumns[1]["value"] = rlvGetItemNameFromObjID(itObj->first); const rlv_command_list_t* pCommands = itObj->second.getCommandList(); for (rlv_command_list_t::const_iterator itCmd = pCommands->begin(), endCmd = pCommands->end(); itCmd != endCmd; ++itCmd) { std::string strBhvr = itCmd->asString(); LLUUID idOption(itCmd->getOption()); if (idOption.notNull()) { std::string strLookup; if ( (gCacheName->getFullName(idOption, strLookup)) || (gCacheName->getGroupName(idOption, strLookup)) ) { if (strLookup.find("???") == std::string::npos) strBhvr.assign(itCmd->getBehaviour()).append(":").append(strLookup); } else if (m_PendingLookup.end() == m_PendingLookup.find(idOption)) { m_PendingLookup[idOption] = gCacheName->get(idOption, false, boost::bind(&RlvFloaterBehaviour::onAvatarNameLookup,this,_1)); } } sdColumns[0]["value"] = strBhvr; pBhvrList->addElement(sdRow, ADD_BOTTOM); } } }
void LLPanelScriptLimitsAttachment::clearList() { LLCtrlListInterface *list = childGetListInterface("scripts_list"); if (list) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting"); childSetValue("loading_text", LLSD(msg_waiting)); }
void LLFloaterTopObjects::clearList() { LLCtrlListInterface *list = childGetListInterface("objects_list"); if (list) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } mObjectListData.clear(); mObjectListIDs.clear(); mtotalScore = 0.f; }
void LLPanelScriptLimitsRegionMemory::clearList() { LLCtrlListInterface *list = childGetListInterface("scripts_list"); if (list) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } mGotParcelMemoryUsed = false; mGotParcelMemoryMax = false; mGotParcelURLsUsed = false; mGotParcelURLsMax = false; std::string msg_empty_string(""); getChild<LLUICtrl>("memory_used")->setValue(LLSD(msg_empty_string)); getChild<LLUICtrl>("urls_used")->setValue(LLSD(msg_empty_string)); getChild<LLUICtrl>("parcels_listed")->setValue(LLSD(msg_empty_string)); mObjectListItems.clear(); }
void LLPanelScriptLimitsRegionMemory::clearList() { LLCtrlListInterface *list = childGetListInterface("scripts_list"); if (list) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } mGotParcelMemoryUsed = false; mGotParcelMemoryMax = false; mGotParcelURLsUsed = false; mGotParcelURLsMax = false; LLStringUtil::format_map_t args_parcel_memory; std::string msg_empty_string(""); childSetValue("memory_used", LLSD(msg_empty_string)); childSetValue("urls_used", LLSD(msg_empty_string)); childSetValue("parcels_listed", LLSD(msg_empty_string)); mObjectListItems.clear(); }
void LLFloaterWorldMap::clearLocationSelection(BOOL clear_ui) { LLCtrlListInterface *list = childGetListInterface("search_results"); if (list) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } if (!childHasKeyboardFocus("spin x")) { childSetValue("spin x", SIM_COORD_DEFAULT); } if (!childHasKeyboardFocus("spin y")) { childSetValue("spin y", SIM_COORD_DEFAULT); } if (!childHasKeyboardFocus("spin z")) { childSetValue("spin z", 0); } LLWorldMap::getInstance()->mIsTrackingCommit = FALSE; mCompletingRegionName = ""; mExactMatch = FALSE; }
// Checked: 2011-05-23 (RLVa-1.3.1c) | Modified: RLVa-1.3.1c void RlvFloaterBehaviours::refreshAll() { LLCtrlListInterface* pBhvrList = childGetListInterface("behaviour_list"); LLCtrlListInterface* pExceptList = childGetListInterface("exception_list"); if ( (!pBhvrList) || (!pExceptList) ) return; pBhvrList->operateOnAll(LLCtrlListInterface::OP_DELETE); pExceptList->operateOnAll(LLCtrlListInterface::OP_DELETE); if (!isAgentAvatarValid()) return; // // Set-up a row we can just reuse // LLSD sdBhvrRow; LLSD& sdBhvrColumns = sdBhvrRow["columns"]; sdBhvrColumns[0] = LLSD().with("column", "behaviour").with("type", "text"); sdBhvrColumns[1] = LLSD().with("column", "issuer").with("type", "text"); LLSD sdExceptRow; LLSD& sdExceptColumns = sdExceptRow["columns"]; sdExceptColumns[0] = LLSD().with("column", "behaviour").with("type", "text"); sdExceptColumns[1] = LLSD().with("column", "option").with("type", "text"); sdExceptColumns[2] = LLSD().with("column", "issuer").with("type", "text"); // // List behaviours // const RlvHandler::rlv_object_map_t* pObjects = gRlvHandler.getObjectMap(); for (RlvHandler::rlv_object_map_t::const_iterator itObj = pObjects->begin(), endObj = pObjects->end(); itObj != endObj; ++itObj) { const std::string strIssuer = rlvGetItemNameFromObjID(itObj->first); const rlv_command_list_t* pCommands = itObj->second.getCommandList(); for (rlv_command_list_t::const_iterator itCmd = pCommands->begin(), endCmd = pCommands->end(); itCmd != endCmd; ++itCmd) { std::string strOption; LLUUID idOption; if ( (itCmd->hasOption()) && (idOption.set(itCmd->getOption(), FALSE)) && (idOption.notNull()) ) { LLAvatarName avName; if (gObjectList.findObject(idOption)) { strOption = rlvGetItemNameFromObjID(idOption, true); } else if (LLAvatarNameCache::get(idOption, &avName)) { strOption = (!avName.getAccountName().empty()) ? avName.getAccountName() : avName.getDisplayName(); } else if (!gCacheName->getGroupName(idOption, strOption)) { if (m_PendingLookup.end() == std::find(m_PendingLookup.begin(), m_PendingLookup.end(), idOption)) { LLAvatarNameCache::get(idOption, boost::bind(&RlvFloaterBehaviours::onAvatarNameLookup, this, _1, _2)); m_PendingLookup.push_back(idOption); } strOption = itCmd->getOption(); } } if ( (itCmd->hasOption()) && (rlvGetShowException(itCmd->getBehaviourType())) ) { // List under the "Exception" tab sdExceptRow["enabled"] = gRlvHandler.isException(itCmd->getBehaviourType(), idOption); sdExceptColumns[0]["value"] = itCmd->getBehaviour(); sdExceptColumns[1]["value"] = strOption; sdExceptColumns[2]["value"] = strIssuer; pExceptList->addElement(sdExceptRow, ADD_BOTTOM); } else { // List under the "Restrictions" tab sdBhvrRow["enabled"] = (RLV_RET_SUCCESS == itCmd->getReturnType()); sdBhvrColumns[0]["value"] = (strOption.empty()) ? itCmd->asString() : itCmd->getBehaviour() + ":" + strOption; sdBhvrColumns[1]["value"] = strIssuer; pBhvrList->addElement(sdBhvrRow, ADD_BOTTOM); } } } }
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; LLCtrlListInterface *list = self->childGetListInterface("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; }
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) { LLNotifications::instance().add("SearchWordBanned"); } } LLPanelDirBrowser* self; self = gDirBrowserInstances.getIfThere(query_id); if (!self) { // data from an old query return; } self->mHaveSearchResults = TRUE; LLCtrlListInterface *list = self->childGetListInterface("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"] = "SANSSERIFSMALL"; 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 LLFloaterGesture::buildGestureList() { LLCtrlListInterface *list = childGetListInterface("gesture_list"); if (!list) return; list->operateOnAll(LLCtrlListInterface::OP_DELETE); LLGestureManager::item_map_t::iterator it; for (it = gGestureManager.mActive.begin(); it != gGestureManager.mActive.end(); ++it) { const LLUUID& item_id = (*it).first; LLMultiGesture* gesture = (*it).second; // Note: Can have NULL item if inventory hasn't arrived yet. std::string item_name = "Loading..."; LLInventoryItem* item = gInventory.getItem(item_id); if (item) { item_name = item->getName(); } std::string font_style = "NORMAL"; // If gesture is playing, bold it LLSD element; element["id"] = item_id; if (gesture) { if (gesture->mPlaying) { font_style = "BOLD"; } element["columns"][0]["column"] = "trigger"; element["columns"][0]["value"] = gesture->mTrigger; element["columns"][0]["font"] = "SANSSERIF"; element["columns"][0]["font-style"] = font_style; std::string key_string = LLKeyboard::stringFromKey(gesture->mKey); std::string buffer; { if (gesture->mKey == KEY_NONE) { buffer = "---"; key_string = "~~~"; // alphabetize to end } else { if (gesture->mMask & MASK_CONTROL) buffer.append("Ctrl-"); if (gesture->mMask & MASK_ALT) buffer.append("Alt-"); if (gesture->mMask & MASK_SHIFT) buffer.append("Shift-"); if ((gesture->mMask & (MASK_CONTROL|MASK_ALT|MASK_SHIFT)) && (key_string[0] == '-' || key_string[0] == '=')) { buffer.append(" "); } buffer.append(key_string); } } element["columns"][1]["column"] = "shortcut"; element["columns"][1]["value"] = buffer; element["columns"][1]["font"] = "SANSSERIF"; element["columns"][1]["font-style"] = font_style; // hidden column for sorting element["columns"][2]["column"] = "key"; element["columns"][2]["value"] = key_string; element["columns"][2]["font"] = "SANSSERIF"; element["columns"][2]["font-style"] = font_style; // Only add "playing" if we've got the name, less confusing. JC if (item && gesture->mPlaying) { item_name += " (Playing)"; } element["columns"][3]["column"] = "name"; element["columns"][3]["value"] = item_name; element["columns"][3]["font"] = "SANSSERIF"; element["columns"][3]["font-style"] = font_style; } else { element["columns"][0]["column"] = "trigger"; element["columns"][0]["value"] = ""; element["columns"][0]["font"] = "SANSSERIF"; element["columns"][0]["font-style"] = font_style; element["columns"][0]["column"] = "trigger"; element["columns"][0]["value"] = "---"; element["columns"][0]["font"] = "SANSSERIF"; element["columns"][0]["font-style"] = font_style; element["columns"][2]["column"] = "key"; element["columns"][2]["value"] = "~~~"; element["columns"][2]["font"] = "SANSSERIF"; element["columns"][2]["font-style"] = font_style; element["columns"][3]["column"] = "name"; element["columns"][3]["value"] = item_name; element["columns"][3]["font"] = "SANSSERIF"; element["columns"][3]["font-style"] = font_style; } list->addElement(element, ADD_BOTTOM); } }
void RlvFloaterBehaviour::refreshAll() { LLVOAvatar* pAvatar = gAgent.getAvatarObject(); LLCtrlListInterface* pList = childGetListInterface("behaviour_list"); const rlv_object_map_t* pRlvObjects = gRlvHandler.getObjectMap(); if ( (!pAvatar) || (!pList) || (!pRlvObjects) ) return; pList->operateOnAll(LLCtrlListInterface::OP_DELETE); for (rlv_object_map_t::const_iterator itObj = pRlvObjects->begin(), endObj = pRlvObjects->end(); itObj != endObj; ++itObj) { std::string strName = itObj->first.asString(); LLViewerInventoryItem* pItem = NULL; LLViewerObject* pObj = gObjectList.findObject(itObj->first); if (pObj) { LLViewerJointAttachment* pAttachPt = get_if_there(pAvatar->mAttachmentPoints, gRlvHandler.getAttachPointIndex(pObj), (LLViewerJointAttachment*)NULL); if (pAttachPt) { pItem = gInventory.getItem(pAttachPt->getItemID()); } } if (pItem) strName = pItem->getName(); const rlv_command_list_t* pCommands = itObj->second.getCommandList(); for (rlv_command_list_t::const_iterator itCmd = pCommands->begin(), endCmd = pCommands->end(); itCmd != endCmd; ++itCmd) { std::string strBhvr = itCmd->asString(); LLUUID uuid(itCmd->getOption()); if (uuid.notNull()) { std::string strLookup; if ( (gCacheName->getFullName(uuid, strLookup)) || (gCacheName->getGroupName(uuid, strLookup)) ) { if (strLookup.find("???") == std::string::npos) strBhvr.assign(itCmd->getBehaviour()).append(":").append(strLookup); } else if (m_PendingLookup.end() == std::find(m_PendingLookup.begin(), m_PendingLookup.end(), uuid)) { gCacheName->get(uuid, FALSE, onAvatarNameLookup, this); m_PendingLookup.push_back(uuid); } } LLSD element; // Restriction column element["columns"][0]["column"] = "behaviour"; element["columns"][0]["value"] = strBhvr; element["columns"][0]["font"] = "SANSSERIF"; element["columns"][0]["font-style"] = "NORMAL"; // Object Name column element["columns"][1]["column"] = "name"; element["columns"][1]["value"] = strName; element["columns"][1]["font"] = "SANSSERIF"; element["columns"][1]["font-style"] = "NORMAL"; pList->addElement(element, ADD_BOTTOM); } } }
// static void LLFloaterLandHoldings::processPlacesReply(LLMessageSystem* msg, void**) { LLFloaterLandHoldings* self = sInstance; // Is this packet from an old, closed window? if (!self) { return; } LLCtrlListInterface *list = self->childGetListInterface("parcel list"); if (!list) return; // If this is the first packet, clear out the "loading..." indicator if (!self->mFirstPacketReceived) { self->mFirstPacketReceived = TRUE; list->operateOnAll(LLCtrlSelectionInterface::OP_DELETE); } LLUUID owner_id; std::string name; std::string desc; S32 actual_area; S32 billable_area; U8 flags; F32 global_x; F32 global_y; std::string sim_name; std::string land_sku; std::string land_type; S32 i; S32 count = msg->getNumberOfBlocks("QueryData"); for (i = 0; i < count; i++) { msg->getUUID("QueryData", "OwnerID", owner_id, i); msg->getString("QueryData", "Name", name, i); msg->getString("QueryData", "Desc", desc, i); msg->getS32("QueryData", "ActualArea", actual_area, i); msg->getS32("QueryData", "BillableArea", billable_area, i); msg->getU8("QueryData", "Flags", flags, i); msg->getF32("QueryData", "GlobalX", global_x, i); msg->getF32("QueryData", "GlobalY", global_y, i); msg->getString("QueryData", "SimName", sim_name, i); if ( msg->getSizeFast(_PREHASH_QueryData, i, _PREHASH_ProductSKU) > 0 ) { msg->getStringFast( _PREHASH_QueryData, _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"); } self->mActualArea += actual_area; self->mBillableArea += billable_area; S32 region_x = llround(global_x) % REGION_WIDTH_UNITS; S32 region_y = llround(global_y) % REGION_WIDTH_UNITS; std::string location; location = llformat("%s (%d, %d)", sim_name.c_str(), region_x, region_y); std::string area; if(billable_area == actual_area) { area = llformat("%d", billable_area); } else { area = llformat("%d / %d", billable_area, actual_area); } std::string hidden; hidden = llformat("%f %f", global_x, global_y); LLSD element; element["columns"][0]["column"] = "name"; element["columns"][0]["value"] = name; element["columns"][0]["font"] = "SANSSERIF"; element["columns"][1]["column"] = "location"; element["columns"][1]["value"] = location; element["columns"][1]["font"] = "SANSSERIF"; element["columns"][2]["column"] = "area"; element["columns"][2]["value"] = area; element["columns"][2]["font"] = "SANSSERIF"; element["columns"][3]["column"] = "type"; element["columns"][3]["value"] = land_type; element["columns"][3]["font"] = "SANSSERIF"; // hidden is always last column element["columns"][4]["column"] = "hidden"; element["columns"][4]["value"] = hidden; list->addElement(element); } self->refreshAggregates(); }
void LLFloaterClothing::buildClothingList() { //llinfos << "buildClothingList" << llendl; LLCtrlListInterface *list = childGetListInterface("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->addSimpleElement(LOADING_STRING); mAllowSelection = FALSE; } else { // Weird case, we're done loading but have no clothing list->addSimpleElement("No clothing found."); mAllowSelection = FALSE; } }
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; LLCtrlListInterface *list = self->childGetListInterface("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"] = "SANSSERIFSMALL"; buffer = llformat("%d", actual_area); row["columns"][4]["column"] = "area"; row["columns"][4]["value"] = buffer; row["columns"][4]["font"] = "SANSSERIFSMALL"; 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"] = "SANSSERIFSMALL"; } else { // Auctions start at L$1 per meter row["columns"][5]["column"] = "per_meter"; row["columns"][5]["value"] = "1.0"; row["columns"][5]["font"] = "SANSSERIFSMALL"; } row["columns"][6]["column"] = "landtype"; row["columns"][6]["value"] = land_type; row["columns"][6]["font"] = "SANSSERIFSMALL"; 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::processDirClassifiedReply(LLMessageSystem* msg, void**) { S32 i; S32 num_new_rows; LLUUID agent_id; LLUUID query_id; msg->getUUID("AgentData", "AgentID", agent_id); if (agent_id != gAgent.getID()) { llwarns << "Message for wrong agent " << agent_id << " in processDirClassifiedReply" << llendl; return; } msg->getUUID("QueryData", "QueryID", query_id); LLPanelDirBrowser* self = gDirBrowserInstances.getIfThere(query_id); if (!self) { return; } if (msg->getNumberOfBlocks("StatusData")) { U32 status; msg->getU32("StatusData", "Status", status); if (status & STATUS_SEARCH_CLASSIFIEDS_BANNEDWORD) { LLNotifications::instance().add("SearchWordBanned"); } } self->mHaveSearchResults = TRUE; LLCtrlListInterface *list = self->childGetListInterface("results"); if (!list) return; if (!list->getCanSelect()) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); self->mResultsContents = LLSD(); } num_new_rows = msg->getNumberOfBlocksFast(_PREHASH_QueryReplies); self->mResultsReceived += num_new_rows; num_new_rows = self->showNextButton(num_new_rows); for (i = 0; i < num_new_rows; i++) { LLUUID classified_id; std::string name; U32 creation_date = 0; // unix timestamp U32 expiration_date = 0; // future use S32 price_for_listing = 0; msg->getUUID("QueryReplies", "ClassifiedID", classified_id, i); msg->getString("QueryReplies", "Name", name, i); msg->getU32("QueryReplies","CreationDate",creation_date,i); msg->getU32("QueryReplies","ExpirationDate",expiration_date,i); msg->getS32("QueryReplies","PriceForListing",price_for_listing,i); if ( classified_id.notNull() ) { self->addClassified(list, classified_id, name, creation_date, price_for_listing); LLSD content; content["type"] = CLASSIFIED_CODE; content["name"] = name; self->mResultsContents[classified_id.asString()] = content; } } // The server does the initial sort, by price paid per listing and date. JC 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; LLCtrlListInterface *list = self->childGetListInterface("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"] = "SANSSERIFSMALL"; 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) { LLNotifications::instance().add("SearchWordBanned"); } } self->mHaveSearchResults = TRUE; LLCtrlListInterface *list = self->childGetListInterface("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"; row["columns"][2]["column"] = "date"; row["columns"][2]["value"] = date; row["columns"][2]["font"] = "SANSSERIFSMALL"; row["columns"][3]["column"] = "time"; row["columns"][3]["value"] = llformat("%u", unix_time); row["columns"][3]["font"] = "SANSSERIFSMALL"; 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; }