diff options
Diffstat (limited to 'indra/newview/llfriendcard.cpp')
| -rw-r--r-- | indra/newview/llfriendcard.cpp | 57 | 
1 files changed, 49 insertions, 8 deletions
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp index 0be748ace9..e395da7f1e 100644 --- a/indra/newview/llfriendcard.cpp +++ b/indra/newview/llfriendcard.cpp @@ -327,22 +327,63 @@ void LLFriendCardsManager::syncFriendCardsFolders()  /************************************************************************/  /*		Private Methods                                                 */  /************************************************************************/ -const LLUUID& LLFriendCardsManager::findFriendFolderUUIDImpl() const +const LLUUID& LLFriendCardsManager::findFirstCallingCardSubfolder(const LLUUID &parent_id) const  { -	const LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); +    if (parent_id.isNull()) +    { +        return LLUUID::null; +    } -	std::string friendFolderName = get_friend_folder_name(); +    LLInventoryModel::cat_array_t* cats; +    LLInventoryModel::item_array_t* items; +    gInventory.getDirectDescendentsOf(parent_id, cats, items); -	return findChildFolderUUID(callingCardsFolderID, friendFolderName); +    if (!cats || !items || cats->size() == 0) +    { +        // call failed +        return LLUUID::null; +    } + +    if (cats->size() > 1) +    { +        const LLViewerInventoryCategory* friendFolder = gInventory.getCategory(parent_id); +        if (friendFolder) +        { +            LL_WARNS_ONCE() << friendFolder->getName() << " folder contains more than one folder" << LL_ENDL; +        } +    } + +    for (LLInventoryModel::cat_array_t::const_iterator iter = cats->begin(); +        iter != cats->end(); +        ++iter) +    { +        const LLInventoryCategory* category = (*iter); +        if (category->getPreferredType() == LLFolderType::FT_CALLINGCARD) +        { +            return category->getUUID(); +        } +    } + +    return LLUUID::null;  } -const LLUUID& LLFriendCardsManager::findFriendAllSubfolderUUIDImpl() const +// Inventorry -> +//   Calling Cards - > +//     Friends - > (the only expected folder) +//       All (the only expected folder) + +const LLUUID& LLFriendCardsManager::findFriendFolderUUIDImpl() const  { -	LLUUID friendFolderUUID = findFriendFolderUUIDImpl(); +    const LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); + +    return findFirstCallingCardSubfolder(callingCardsFolderID); +} -	std::string friendAllSubfolderName = get_friend_all_subfolder_name(); +const LLUUID& LLFriendCardsManager::findFriendAllSubfolderUUIDImpl() const +{ +    LLUUID friendFolderUUID = findFriendFolderUUIDImpl(); -	return findChildFolderUUID(friendFolderUUID, friendAllSubfolderName); +    return findFirstCallingCardSubfolder(friendFolderUUID);  }  const LLUUID& LLFriendCardsManager::findChildFolderUUID(const LLUUID& parentFolderUUID, const std::string& nonLocalizedName) const  | 
