//static void LLFloaterDirectory::performQueryOn2(const std::string& name, const std::string& search_text) { if (search_text.empty()) return; // We're done here. LLPanelDirBrowser* panel = sInstance->getChild<LLPanelDirBrowser>(name); panel->getChild<LLUICtrl>("name")->setValue(search_text); panel->performQuery(); }
// static // called from calssifieds, events, groups, land, people, and places void LLPanelDirBrowser::onClickSearchCore(void* userdata) { LLPanelDirBrowser* self = (LLPanelDirBrowser*)userdata; if (!self) return; self->resetSearchStart(); self->performQuery(); LLFloaterDirectory::sOldSearchCount++; }
void LLPanelDirBrowser::onKeystrokeName(LLLineEditor* line, void* data) { LLPanelDirBrowser *self = (LLPanelDirBrowser*)data; if (line->getLength() >= (S32)self->mMinSearchChars) { self->setDefaultBtn( "Search" ); self->childEnable("Search"); } else { self->setDefaultBtn(); self->childDisable("Search"); } }
// static void LLPanelDirBrowser::onCommitList(LLUICtrl* ctrl, void* data) { LLPanelDirBrowser* self = (LLPanelDirBrowser*)data; LLCtrlListInterface *list = self->childGetListInterface("results"); if (!list) return; // Start with everyone invisible if (self->mFloaterDirectory) { self->mFloaterDirectory->hideAllDetailPanels(); } if (FALSE == list->getCanSelect()) { return; } std::string id_str = self->childGetValue("results").asString(); if (id_str.empty()) { return; } LLSD item_id = list->getCurrentID(); S32 type = self->mResultsContents[id_str]["type"]; if (type == EVENT_CODE) { // all but events use the UUID above item_id = self->mResultsContents[id_str]["event_id"]; } //std::string name = self->mResultsContents[id_str]["name"].asString(); self->showDetailPanel(type, item_id); if (type == FOR_SALE_CODE) { std::string land_type = self->mResultsContents[id_str]["landtype"].asString(); if (self->mFloaterDirectory && self->mFloaterDirectory->mPanelPlaceSmallp) { self->mFloaterDirectory->mPanelPlaceSmallp->setLandTypeString(land_type); } } }
// 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) { 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(); } 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; 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 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; }
// static void LLPanelDirBrowser::onClickNext(void* data) { LLPanelDirBrowser* self = (LLPanelDirBrowser*)data; self->nextPage(); }
// static void LLPanelDirBrowser::onClickPrev(void* data) { LLPanelDirBrowser* self = (LLPanelDirBrowser*)data; self->prevPage(); }