void FSPanelPrefs::onOpen(const LLSD& key) { if (LLStartUp::getStartupState() == STATE_STARTED) { getChild<LLCheckBoxCtrl>("FSBuildPrefs_EmbedItem")->setEnabled(TRUE); mEmbeddedItem = gSavedPerAccountSettings.getString("FSBuildPrefs_Item"); LLUUID item_id(mEmbeddedItem); if (item_id.isNull()) { getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", getString("EmbeddedItemNotSet")); } else { LLInventoryObject* item = gInventory.getObject(item_id); if (item) { getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", item->getName()); } else { getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", getString("EmbeddedItemNotAvailable")); } } } else { getChild<LLCheckBoxCtrl>("FSBuildPrefs_EmbedItem")->setEnabled(FALSE); getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", getString("EmbeddedItemNotLoggedIn")); } }
void FSPanelPrefs::onDADEmbeddedItem(const LLUUID& item_id) { LLInventoryObject* item = gInventory.getObject(item_id); if (item) { getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", item->getName()); mEmbeddedItem = item_id.asString(); } }
// Generates a string containing the path to the item specified by // item_id. void append_path(const LLUUID& id, std::string& path) { std::string temp; LLInventoryObject* obj = gInventory.getObject(id); LLUUID parent_id; if(obj) parent_id = obj->getParentUUID(); std::string forward_slash("/"); while(obj) { obj = gInventory.getCategory(parent_id); if(obj) { temp.assign(forward_slash + obj->getName() + temp); parent_id = obj->getParentUUID(); } } path.append(temp); }
void LLFloaterBuy::inventoryChanged(LLViewerObject* obj, LLInventoryObject::object_list_t* inv, S32 serial_num, void* data) { if (!obj) { llwarns << "No object in LLFloaterBuy::inventoryChanged" << llendl; return; } if (!inv) { llwarns << "No inventory in LLFloaterBuy::inventoryChanged" << llendl; removeVOInventoryListener(); return; } LLCtrlListInterface *item_list = childGetListInterface("item_list"); if (!item_list) { removeVOInventoryListener(); return; } LLInventoryObject::object_list_t::const_iterator it = inv->begin(); LLInventoryObject::object_list_t::const_iterator end = inv->end(); for ( ; it != end; ++it ) { LLInventoryObject* obj = (LLInventoryObject*)(*it); // Skip folders, so we know we have inventory items only if (obj->getType() == LLAssetType::AT_CATEGORY) continue; // Skip the mysterious blank InventoryObject if (obj->getType() == LLAssetType::AT_NONE) continue; LLInventoryItem* inv_item = (LLInventoryItem*)(obj); // Skip items we can't transfer if (!inv_item->getPermissions().allowTransferTo(gAgent.getID())) continue; // Create the line in the list LLSD row; // Compute icon for this item BOOL item_is_multi = FALSE; if ( inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED || inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS) { item_is_multi = TRUE; } std::string icon_name = LLInventoryIcon::getIconName(inv_item->getType(), inv_item->getInventoryType(), inv_item->getFlags(), item_is_multi); row["columns"][0]["column"] = "icon"; row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = icon_name; // Append the permissions that you will acquire (not the current // permissions). U32 next_owner_mask = inv_item->getPermissions().getMaskNextOwner(); std::string text = obj->getName(); if (!(next_owner_mask & PERM_COPY)) { text.append(LLTrans::getString("no_copy")); } if (!(next_owner_mask & PERM_MODIFY)) { text.append(LLTrans::getString("no_modify")); } if (!(next_owner_mask & PERM_TRANSFER)) { text.append(LLTrans::getString("no_transfer")); } row["columns"][1]["column"] = "text"; row["columns"][1]["value"] = text; row["columns"][1]["font"] = "SANSSERIF"; item_list->addElement(row); } removeVOInventoryListener(); }
void LLInventoryPanel::buildNewViews(const LLUUID& id) { LLMemType mt(LLMemType::MTYPE_INVENTORY_BUILD_NEW_VIEWS); LLFolderViewItem* itemp = NULL; LLInventoryObject* objectp = gInventory.getObject(id); if (objectp) { const LLUUID &parent_id = objectp->getParentUUID(); LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)mFolderRoot->getItemByID(parent_id); if (id == mStartFolderID) { parent_folder = mFolderRoot; } else if ((mStartFolderID != LLUUID::null) && (!gInventory.isObjectDescendentOf(id, mStartFolderID))) { // This item exists outside the inventory's hierarchy, so don't add it. return; } if (objectp->getType() <= LLAssetType::AT_NONE || objectp->getType() >= LLAssetType::AT_COUNT) { llwarns << "LLInventoryPanel::buildNewViews called with invalid objectp->mType : " << ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() << llendl; return; } if ((objectp->getType() == LLAssetType::AT_CATEGORY) && (objectp->getActualType() != LLAssetType::AT_LINK_FOLDER)) { LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(objectp->getType(), objectp->getType(), LLInventoryType::IT_CATEGORY, this, mFolderRoot, objectp->getUUID()); if (new_listener) { LLFolderViewFolder::Params params; params.name = new_listener->getDisplayName(); params.icon = new_listener->getIcon(); params.icon_open = new_listener->getOpenIcon(); if (mShowItemLinkOverlays) // if false, then links show up just like normal items { params.icon_overlay = LLUI::getUIImage("Inv_Link"); } params.root = mFolderRoot; params.listener = new_listener; params.tool_tip = params.name; LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(params); folderp->setItemSortOrder(mFolderRoot->getSortOrder()); itemp = folderp; // Hide the root folder, so we can show the contents of a folder flat // but still have the parent folder present for listener-related operations. if (id == mStartFolderID) { folderp->setHidden(TRUE); } const LLViewerInventoryCategory *cat = dynamic_cast<LLViewerInventoryCategory *>(objectp); if (cat && getIsHiddenFolderType(cat->getPreferredType())) { folderp->setHidden(TRUE); } } } else { // Build new view for item. LLInventoryItem* item = (LLInventoryItem*)objectp; LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(item->getType(), item->getActualType(), item->getInventoryType(), this, mFolderRoot, item->getUUID(), item->getFlags()); if (new_listener) { LLFolderViewItem::Params params; params.name = new_listener->getDisplayName(); params.icon = new_listener->getIcon(); params.icon_open = new_listener->getOpenIcon(); if (mShowItemLinkOverlays) // if false, then links show up just like normal items { params.icon_overlay = LLUI::getUIImage("Inv_Link"); } params.creation_date = new_listener->getCreationDate(); params.root = mFolderRoot; params.listener = new_listener; params.rect = LLRect (0, 0, 0, 0); params.tool_tip = params.name; itemp = LLUICtrlFactory::create<LLFolderViewItem> (params); } } if (itemp) { itemp->addToFolder(parent_folder, mFolderRoot); // Don't add children of hidden folders unless this is the panel's root folder. if (itemp->getHidden() && (id != mStartFolderID)) { return; } } } // If this is a folder, add the children of the folder and recursively add any // child folders. if ((id == mStartFolderID) || (objectp && objectp->getType() == LLAssetType::AT_CATEGORY)) { LLViewerInventoryCategory::cat_array_t* categories; LLViewerInventoryItem::item_array_t* items; mInventory->lockDirectDescendentArrays(id, categories, items); if(categories) { for (LLViewerInventoryCategory::cat_array_t::const_iterator cat_iter = categories->begin(); cat_iter != categories->end(); ++cat_iter) { const LLViewerInventoryCategory* cat = (*cat_iter); buildNewViews(cat->getUUID()); } } if(items) { for (LLViewerInventoryItem::item_array_t::const_iterator item_iter = items->begin(); item_iter != items->end(); ++item_iter) { const LLViewerInventoryItem* item = (*item_iter); buildNewViews(item->getUUID()); } } mInventory->unlockDirectDescendentArrays(id); } }