void LLFloaterVFSExplorer::setEditID(LLUUID edit_id) { LLScrollListCtrl* list = getChild<LLScrollListCtrl>("file_list"); bool found_in_list = (list->getItemIndex(edit_id) != -1); bool found_in_files = false; LLVFSFileSpecifier file; std::map<LLVFSFileSpecifier, LLVFSFileBlock*>::iterator end = sVFSFileMap.end(); for(std::map<LLVFSFileSpecifier, LLVFSFileBlock*>::iterator iter = sVFSFileMap.begin(); iter != end; ++iter) { if((*iter).first.mFileID == edit_id) { found_in_files = true; file = (*iter).first; break; } } if(found_in_files && found_in_list) { mEditID = edit_id; list->selectByID(edit_id); setEditEnabled(true); childSetText("name_edit", file.mFileID.asString()); childSetText("id_edit", file.mFileID.asString()); childSetValue("type_combo", std::string(LLAssetType::lookup(file.mFileType))); } else { mEditID = LLUUID::null; list->deselectAllItems(TRUE); setEditEnabled(false); childSetText("name_edit", std::string("")); childSetText("id_edit", std::string("")); childSetValue("type_combo", std::string("animatn")); } }
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); }
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 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); }