// public void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) { //llinfos << "LLNameListCtrl::refresh " << id << " '" << first << " " // << last << "'" << llendl; std::string fullname; if (!is_group) { fullname = first + " " + last; } else { fullname = first; } // TODO: scan items for that ID, fix if necessary item_list::iterator iter; for (iter = getItemList().begin(); iter != getItemList().end(); iter++) { LLScrollListItem* item = *iter; if (item->getUUID() == id) { LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { cell->setValue(fullname); } } } dirtyColumns(); }
//static LLScrollListCell* LLScrollListCell::create(LLScrollListCell::Params cell_p) { LLScrollListCell* cell = NULL; if (cell_p.type() == "icon") { cell = new LLScrollListIcon(cell_p); } else if (cell_p.type() == "checkbox") { cell = new LLScrollListCheck(cell_p); } else if (cell_p.type() == "date") { if (!cell_p.color.isProvided()) cell_p.color = LLUI::sColorsGroup->getColor("DefaultListText"); cell = new LLScrollListDate(cell_p); } else // default is "text" { if (!cell_p.color.isProvided()) cell_p.color = LLUI::sColorsGroup->getColor("DefaultListText"); cell = new LLScrollListText(cell_p); } if (cell_p.value.isProvided()) { cell->setValue(cell_p.value); } return cell; }
void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name, std::string suffix, LLHandle<LLNameListItem> item) { avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(agent_id); if (it != mAvatarNameCacheConnections.end()) { if (it->second.connected()) { it->second.disconnect(); } mAvatarNameCacheConnections.erase(it); } std::string name; if (mShortNames) name = av_name.getDisplayName(); else name = av_name.getCompleteName(); // Append optional suffix. if (!suffix.empty()) { name.append(suffix); } LLNameListItem* list_item = item.get(); if (list_item && list_item->getUUID() == agent_id) { LLScrollListCell* cell = list_item->getColumn(mNameColumnIndex); if (cell) { cell->setValue(name); setNeedsSort(); } } ////////////////////////////////////////////////////////////////////////// // BAKER - FIX NameListCtrl //if (mPendingLookupsRemaining <= 0) { // We might get into a state where mPendingLookupsRemaining might // go negative. So just reset it right now and figure out if it's // possible later :) //mPendingLookupsRemaining = 0; mNameListCompleteSignal(true); } //else { // mPendingLookupsRemaining--; } ////////////////////////////////////////////////////////////////////////// dirtyColumns(); }
void LLFloaterPathfindingObjects::handleObjectNameResponse(const LLPathfindingObject *pObject) { llassert(pObject != NULL); const std::string uuid = pObject->getUUID().asString(); scroll_list_item_map::iterator scrollListItemIter = mMissingNameObjectsScrollListItems.find(uuid); if (scrollListItemIter != mMissingNameObjectsScrollListItems.end()) { LLScrollListItem *scrollListItem = scrollListItemIter->second; llassert(scrollListItem != NULL); LLScrollListCell *scrollListCell = scrollListItem->getColumn(getOwnerNameColumnIndex()); LLSD ownerName = getOwnerName(pObject); scrollListCell->setValue(ownerName); mMissingNameObjectsScrollListItems.erase(scrollListItemIter); } }
void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name, LLHandle<LLScrollListItem> item) { std::string name; if (mShortNames) name = av_name.mDisplayName; else name = av_name.getCompleteName(); LLScrollListItem* list_item = item.get(); if (list_item && list_item->getUUID() == agent_id) { LLScrollListCell* cell = list_item->getColumn(mNameColumnIndex); if (cell) { cell->setValue(name); setNeedsSort(); } } dirtyColumns(); }
void LLPanelNearByMedia::updateListItem(LLScrollListItem* item, const std::string &item_name, const std::string &item_tooltip, S32 proximity, bool is_disabled, bool has_media, bool is_time_based_and_playing, LLPanelNearByMedia::MediaClass media_class, const std::string &debug_str) { LLScrollListCell* cell = item->getColumn(PROXIMITY_COLUMN); if(cell) { // since we are forced to sort by text, encode sort order as string std::string proximity_string = STRINGIZE(proximity); std::string old_proximity_string = cell->getValue().asString(); if(proximity_string != old_proximity_string) { cell->setValue(proximity_string); mMediaList->setNeedsSort(true); } } cell = item->getColumn(CHECKBOX_COLUMN); if(cell) { cell->setValue(!is_disabled); } cell = item->getColumn(VISIBILITY_COLUMN); if(cell) { S32 old_visibility = cell->getValue(); // *HACK ALERT: force ordering of Media before Audio before the rest of the list S32 new_visibility = item->getUUID() == PARCEL_MEDIA_LIST_ITEM_UUID ? 3 : item->getUUID() == PARCEL_AUDIO_LIST_ITEM_UUID ? 2 : (has_media) ? 1 : ((is_disabled) ? 0 : -1); cell->setValue(STRINGIZE(new_visibility)); if (new_visibility != old_visibility) { mMediaList->setNeedsSort(true); } } cell = item->getColumn(NAME_COLUMN); if(cell) { std::string name = item_name; std::string old_name = cell->getValue().asString(); if (has_media) { name += " " + mPlayingString; } if (name != old_name) { cell->setValue(name); } cell->setToolTip(item_tooltip); // *TODO: Make these font styles/colors configurable via XUI U8 font_style = LLFontGL::NORMAL; LLColor4 cell_color = LLUI::sColorsGroup->getColor("DefaultListText"); // Only colorize by class in debug if (mDebugInfoVisible) { switch (media_class) { case MEDIA_CLASS_FOCUSED: cell_color = LLColor4::yellow; break; case MEDIA_CLASS_ON_OTHERS: cell_color = LLColor4::red; break; case MEDIA_CLASS_OUTSIDE_PARCEL: cell_color = LLColor4::orange; break; case MEDIA_CLASS_WITHIN_PARCEL: default: break; } } if (is_disabled) { if (mDebugInfoVisible) { font_style |= LLFontGL::ITALIC; cell_color = LLUI::sColorsGroup->getColor("DefaultListText"); } else { // Dim it if it is disabled cell_color.setAlpha(0.25); } } // Dim it if it isn't "showing" else if (!has_media) { cell_color.setAlpha(0.25); } // Bold it if it is time-based media and it is playing else if (is_time_based_and_playing) { if (mDebugInfoVisible) font_style |= LLFontGL::BOLD; } cell->setColor(cell_color); LLScrollListText *text_cell = dynamic_cast<LLScrollListText*> (cell); if (text_cell) { text_cell->setFontStyle(font_style); } } cell = item->getColumn(CLASS_COLUMN); if(cell) { // TODO: clean this up! cell->setValue(STRINGIZE(media_class)); } if(mDebugInfoVisible) { cell = item->getColumn(DEBUG_COLUMN); if(cell) { cell->setValue(debug_str); } } }
LLScrollListItem* LLNameListCtrl::addNameItemRow( const LLNameListCtrl::NameItem& name_item, EAddPosition pos, const std::string& suffix) { LLUUID id = name_item.value().asUUID(); LLNameListItem* item = NULL; // Store item type so that we can invoke the proper inspector. // *TODO Vadim: Is there a more proper way of storing additional item data? { LLNameListCtrl::NameItem item_p(name_item); item_p.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); item = new LLNameListItem(item_p); LLScrollListCtrl::addRow(item, item_p, pos); } if (!item) return NULL; // use supplied name by default std::string fullname = name_item.name; switch(name_item.target) { case GROUP: gCacheName->getGroupName(id, fullname); // fullname will be "nobody" if group not found break; case SPECIAL: // just use supplied name break; case INDIVIDUAL: { LLAvatarName av_name; if (id.isNull()) { fullname = LLTrans::getString("AvatarNameNobody"); } else if (LLAvatarNameCache::get(id, &av_name)) { if (mShortNames) fullname = av_name.mDisplayName; else fullname = av_name.getCompleteName(); } else { // ...schedule a callback // LLAvatarNameCache::get(id, // boost::bind(&LLNameListCtrl::onAvatarNameCache, // this, _1, _2)); // [SL:KB] - Patch: UI-GroupPanel | Checked: 2011-05-30 (Catznip-2.6.0a) | Added: Catznip-2.6.0a LLAvatarNameCache::get(id, boost::bind(&LLNameListItem::onAvatarNameCache, item, mNameColumnIndex, mShortNames, _1, _2)); // [/SL:KB] } break; } default: break; } // Append optional suffix. if (!suffix.empty()) { fullname.append(suffix); } LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { cell->setValue(fullname); } dirtyColumns(); // this column is resizable LLScrollListColumn* columnp = getColumn(mNameColumnIndex); if (columnp && columnp->mHeader) { columnp->mHeader->setHasResizableElement(TRUE); } return item; }
LLScrollListItem* LLNameListCtrl::addNameItemRow( const LLNameListCtrl::NameItem& name_item, EAddPosition pos, std::string& suffix) { LLUUID id = name_item.value().asUUID(); LLNameListItem* item = NULL; // Store item type so that we can invoke the proper inspector. // *TODO Vadim: Is there a more proper way of storing additional item data? { LLNameListCtrl::NameItem item_p(name_item); item_p.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); item = new LLNameListItem(item_p); LLScrollListCtrl::addRow(item, item_p, pos); } if (!item) return NULL; // use supplied name by default std::string fullname = name_item.name; switch(name_item.target) { case GROUP: gCacheName->getGroupName(id, fullname); // fullname will be "nobody" if group not found break; case SPECIAL: // just use supplied name break; case INDIVIDUAL: { std::string name; if (gCacheName->getFullName(id, name)) { fullname = name; } break; } default: break; } // Append optional suffix. if (!suffix.empty()) { fullname.append(suffix); } LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { cell->setValue(fullname); } dirtyColumns(); // this column is resizable LLScrollListColumn* columnp = getColumn(mNameColumnIndex); if (columnp && columnp->mHeader) { columnp->mHeader->setHasResizableElement(TRUE); } return item; }
LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLSD& value, EAddPosition pos, void* userdata) { LLScrollListItem* item = LLScrollListCtrl::addElement(value, pos, userdata); if (!item) return NULL; LLUUID id = item->getUUID(); // use supplied name by default std::string fullname = value["name"].asString(); switch(value["target"].asInteger()) { case GROUP: gCacheName->getGroupName(id, fullname); // fullname will be "nobody" if group not found break; case SPECIAL: // just use supplied name break; case INDIVIDUAL: { LLAvatarName av_name; if (id.isNull()) { fullname = LLTrans::getString("AvatarNameNobody"); } else if (LLAvatarNameCache::get(id, &av_name)) { if (mShortNames) fullname = av_name.mDisplayName; else fullname = av_name.getCompleteName(); } else { fullname = " ( " + LLTrans::getString("LoadingData") + " ) "; // ...schedule a callback LLAvatarNameCache::get(id, boost::bind(&LLNameListCtrl::onAvatarNameCache, this, _1, _2, item->getHandle())); } break; } default: break; } // Append optional suffix. std::string suffix = value["suffix"]; if(!suffix.empty()) { fullname.append(suffix); } LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell && !fullname.empty() && cell->getValue().asString().empty()) { cell->setValue(fullname); } dirtyColumns(); // this column is resizable LLScrollListColumn* columnp = getColumn(mNameColumnIndex); if (columnp && columnp->mHeader) { columnp->mHeader->setHasResizableElement(TRUE); } return item; }
LLScrollListItem* LLNameListCtrl::addNameItemRow( const LLNameListCtrl::NameItem& name_item, EAddPosition pos, const std::string& suffix, const std::string& prefix) { LLUUID id = name_item.value().asUUID(); LLNameListItem* item = new LLNameListItem(name_item,name_item.target() == GROUP, name_item.target() == EXPERIENCE); if (!item) return NULL; LLScrollListCtrl::addRow(item, name_item, pos); // use supplied name by default std::string fullname = name_item.name; switch(name_item.target) { case GROUP: gCacheName->getGroupName(id, fullname); // fullname will be "nobody" if group not found break; case SPECIAL: // just use supplied name break; case INDIVIDUAL: { LLAvatarName av_name; if (id.isNull()) { fullname = LLTrans::getString("AvatarNameNobody"); } else if (LLAvatarNameCache::get(id, &av_name)) { if (mShortNames) fullname = av_name.getDisplayName(); else fullname = av_name.getCompleteName(); } else { // ...schedule a callback avatar_name_cache_connection_map_t::iterator it = mAvatarNameCacheConnections.find(id); if (it != mAvatarNameCacheConnections.end()) { if (it->second.connected()) { it->second.disconnect(); } mAvatarNameCacheConnections.erase(it); } mAvatarNameCacheConnections[id] = LLAvatarNameCache::get(id,boost::bind(&LLNameListCtrl::onAvatarNameCache,this, _1, _2, suffix, item->getHandle())); if(mPendingLookupsRemaining <= 0) { // BAKER TODO: // We might get into a state where mPendingLookupsRemaining might // go negative. So just reset it right now and figure out if it's // possible later :) mPendingLookupsRemaining = 0; mNameListCompleteSignal(false); } mPendingLookupsRemaining++; } break; } case EXPERIENCE: // just use supplied name default: break; } // Append optional suffix. if (!suffix.empty()) { fullname.append(suffix); } LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { cell->setValue(prefix + fullname); } dirtyColumns(); // this column is resizable LLScrollListColumn* columnp = getColumn(mNameColumnIndex); if (columnp && columnp->mHeader) { columnp->mHeader->setHasResizableElement(TRUE); } return item; }