EXT-6689 : INFRASTRUCTURE : LLInventoryBridge code cleanup
Moved a bunch of local llinventorybridge functions into .cpp. Did a bunch of superficial cleanup of llinventorybridge and related files.meow-7.2.2
parent
2854008e8e
commit
825e4df30d
|
|
@ -70,6 +70,18 @@
|
|||
#include "llwearablelist.h"
|
||||
#include "llpaneloutfitsinventory.h"
|
||||
|
||||
typedef std::pair<LLUUID, LLUUID> two_uuids_t;
|
||||
typedef std::list<two_uuids_t> two_uuids_list_t;
|
||||
|
||||
struct LLMoveInv
|
||||
{
|
||||
LLUUID mObjectID;
|
||||
LLUUID mCategoryID;
|
||||
two_uuids_list_t mMoveList;
|
||||
void (*mCallback)(S32, void*);
|
||||
void* mUserData;
|
||||
};
|
||||
|
||||
using namespace LLOldEvents;
|
||||
|
||||
// Helpers
|
||||
|
|
@ -93,6 +105,7 @@ void remove_inventory_category_from_avatar(LLInventoryCategory* category);
|
|||
void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id);
|
||||
bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv*);
|
||||
bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response);
|
||||
void teleport_via_landmark(const LLUUID& asset_id);
|
||||
|
||||
std::string ICON_NAME[ICON_NAME_COUNT] =
|
||||
{
|
||||
|
|
@ -864,17 +877,6 @@ void LLInvFVBridge::changeCategoryParent(LLInventoryModel* model,
|
|||
model->notifyObservers();
|
||||
}
|
||||
|
||||
|
||||
const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type)
|
||||
{
|
||||
const std::string rv= LLInventoryType::lookup(inv_type);
|
||||
if(rv.empty())
|
||||
{
|
||||
return std::string("<invalid>");
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
||||
LLAssetType::EType actual_asset_type,
|
||||
LLInventoryType::EType inv_type,
|
||||
|
|
@ -889,7 +891,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_TEXTURE:
|
||||
if(!(inv_type == LLInventoryType::IT_TEXTURE || inv_type == LLInventoryType::IT_SNAPSHOT))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLTextureBridge(inventory, root, uuid, inv_type);
|
||||
break;
|
||||
|
|
@ -897,7 +899,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_SOUND:
|
||||
if(!(inv_type == LLInventoryType::IT_SOUND))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLSoundBridge(inventory, root, uuid);
|
||||
break;
|
||||
|
|
@ -905,7 +907,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_LANDMARK:
|
||||
if(!(inv_type == LLInventoryType::IT_LANDMARK))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLLandmarkBridge(inventory, root, uuid, flags);
|
||||
break;
|
||||
|
|
@ -913,7 +915,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_CALLINGCARD:
|
||||
if(!(inv_type == LLInventoryType::IT_CALLINGCARD))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLCallingCardBridge(inventory, root, uuid);
|
||||
break;
|
||||
|
|
@ -921,7 +923,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_SCRIPT:
|
||||
if(!(inv_type == LLInventoryType::IT_LSL))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLScriptBridge(inventory, root, uuid);
|
||||
break;
|
||||
|
|
@ -929,7 +931,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_OBJECT:
|
||||
if(!(inv_type == LLInventoryType::IT_OBJECT || inv_type == LLInventoryType::IT_ATTACHMENT))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLObjectBridge(inventory, root, uuid, inv_type, flags);
|
||||
break;
|
||||
|
|
@ -937,7 +939,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_NOTECARD:
|
||||
if(!(inv_type == LLInventoryType::IT_NOTECARD))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLNotecardBridge(inventory, root, uuid);
|
||||
break;
|
||||
|
|
@ -945,7 +947,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_ANIMATION:
|
||||
if(!(inv_type == LLInventoryType::IT_ANIMATION))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLAnimationBridge(inventory, root, uuid);
|
||||
break;
|
||||
|
|
@ -953,7 +955,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_GESTURE:
|
||||
if(!(inv_type == LLInventoryType::IT_GESTURE))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLGestureBridge(inventory, root, uuid);
|
||||
break;
|
||||
|
|
@ -961,7 +963,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_LSL_TEXT:
|
||||
if(!(inv_type == LLInventoryType::IT_LSL))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLLSLTextBridge(inventory, root, uuid);
|
||||
break;
|
||||
|
|
@ -970,7 +972,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
|
|||
case LLAssetType::AT_BODYPART:
|
||||
if(!(inv_type == LLInventoryType::IT_WEARABLE))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLWearableBridge(inventory, root, uuid, asset_type, inv_type, (EWearableType)flags);
|
||||
break;
|
||||
|
|
@ -4950,291 +4952,6 @@ void LLWearableBridge::removeFromAvatar()
|
|||
}
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
|
||||
const LLUUID& uuid,
|
||||
LLInventoryModel* model)
|
||||
{
|
||||
LLInvFVBridgeAction* action = NULL;
|
||||
switch(asset_type)
|
||||
{
|
||||
case LLAssetType::AT_TEXTURE:
|
||||
action = new LLTextureBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_SOUND:
|
||||
action = new LLSoundBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_LANDMARK:
|
||||
action = new LLLandmarkBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_CALLINGCARD:
|
||||
action = new LLCallingCardBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_OBJECT:
|
||||
action = new LLObjectBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_NOTECARD:
|
||||
action = new LLNotecardBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_ANIMATION:
|
||||
action = new LLAnimationBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_GESTURE:
|
||||
action = new LLGestureBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_LSL_TEXT:
|
||||
action = new LLLSLTextBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_CLOTHING:
|
||||
case LLAssetType::AT_BODYPART:
|
||||
action = new LLWearableBridgeAction(uuid,model);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return action;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
|
||||
const LLUUID& uuid,LLInventoryModel* model)
|
||||
{
|
||||
LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
|
||||
if(action)
|
||||
{
|
||||
action->doIt();
|
||||
delete action;
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
|
||||
{
|
||||
llassert(model);
|
||||
LLViewerInventoryItem* item = model->getItem(uuid);
|
||||
llassert(item);
|
||||
if (item)
|
||||
{
|
||||
LLAssetType::EType asset_type = item->getType();
|
||||
LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
|
||||
if(action)
|
||||
{
|
||||
action->doIt();
|
||||
delete action;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LLViewerInventoryItem* LLInvFVBridgeAction::getItem() const
|
||||
{
|
||||
if(mModel)
|
||||
return (LLViewerInventoryItem*)mModel->getItem(mUUID);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLTextureBridgeAction::doIt()
|
||||
{
|
||||
if (getItem())
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLSoundBridgeAction::doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if(item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
|
||||
// virtual
|
||||
void LLLandmarkBridgeAction::doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if( item )
|
||||
{
|
||||
// Opening (double-clicking) a landmark immediately teleports,
|
||||
// but warns you the first time.
|
||||
LLSD payload;
|
||||
payload["asset_id"] = item->getAssetUUID();
|
||||
|
||||
LLSD args;
|
||||
args["LOCATION"] = item->getName();
|
||||
|
||||
LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
|
||||
// virtual
|
||||
void LLCallingCardBridgeAction::doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if(item && item->getCreatorUUID().notNull())
|
||||
{
|
||||
LLAvatarActions::showProfile(item->getCreatorUUID());
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLNotecardBridgeAction::doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLGestureBridgeAction::doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
|
||||
preview->setFocus(TRUE);
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLAnimationBridgeAction::doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
|
||||
// virtual
|
||||
void LLObjectBridgeAction::doIt()
|
||||
{
|
||||
/*
|
||||
LLFloaterReg::showInstance("properties", mUUID);
|
||||
*/
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
|
||||
// virtual
|
||||
void LLLSLTextBridgeAction::doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
|
||||
BOOL LLWearableBridgeAction::isItemInTrash() const
|
||||
{
|
||||
if(!mModel) return FALSE;
|
||||
const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH);
|
||||
return mModel->isObjectDescendentOf(mUUID, trash_id);
|
||||
}
|
||||
|
||||
BOOL LLWearableBridgeAction::isAgentInventory() const
|
||||
{
|
||||
if(!mModel) return FALSE;
|
||||
if(gInventory.getRootFolderID() == mUUID) return TRUE;
|
||||
return mModel->isObjectDescendentOf(mUUID, gInventory.getRootFolderID());
|
||||
}
|
||||
|
||||
void LLWearableBridgeAction::wearOnAvatar()
|
||||
{
|
||||
// Don't wear anything until initial wearables are loaded, can
|
||||
// destroy clothing items.
|
||||
if (!gAgentWearables.areWearablesLoaded())
|
||||
{
|
||||
LLNotificationsUtil::add("CanNotChangeAppearanceUntilLoaded");
|
||||
return;
|
||||
}
|
||||
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if(item)
|
||||
{
|
||||
if(!isAgentInventory())
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
|
||||
copy_inventory_item(
|
||||
gAgent.getID(),
|
||||
item->getPermissions().getOwner(),
|
||||
item->getUUID(),
|
||||
LLUUID::null,
|
||||
std::string(),
|
||||
cb);
|
||||
}
|
||||
else
|
||||
{
|
||||
wear_inventory_item_on_avatar(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLWearableBridgeAction::doIt()
|
||||
{
|
||||
if(isItemInTrash())
|
||||
{
|
||||
LLNotificationsUtil::add("CannotWearTrash");
|
||||
}
|
||||
else if(isAgentInventory())
|
||||
{
|
||||
if(!get_is_item_worn(mUUID))
|
||||
{
|
||||
wearOnAvatar();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// must be in the inventory library. copy it to our inventory
|
||||
// and put it on right away.
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if(item && item->isComplete())
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
|
||||
copy_inventory_item(
|
||||
gAgent.getID(),
|
||||
item->getPermissions().getOwner(),
|
||||
item->getUUID(),
|
||||
LLUUID::null,
|
||||
std::string(),
|
||||
cb);
|
||||
}
|
||||
else if(item)
|
||||
{
|
||||
// *TODO: We should fetch the item details, and then do
|
||||
// the operation above.
|
||||
LLNotificationsUtil::add("CannotWearInfoNotComplete");
|
||||
}
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
|
||||
// +=================================================+
|
||||
// | LLLinkItemBridge |
|
||||
// +=================================================+
|
||||
|
|
@ -5346,3 +5063,359 @@ const LLUUID &LLLinkFolderBridge::getFolderID() const
|
|||
}
|
||||
return LLUUID::null;
|
||||
}
|
||||
|
||||
/********************************************************************************
|
||||
**
|
||||
** BRIDGE ACTIONS
|
||||
**/
|
||||
|
||||
// static
|
||||
void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
|
||||
const LLUUID& uuid,LLInventoryModel* model)
|
||||
{
|
||||
LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
|
||||
if(action)
|
||||
{
|
||||
action->doIt();
|
||||
delete action;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
|
||||
{
|
||||
llassert(model);
|
||||
LLViewerInventoryItem* item = model->getItem(uuid);
|
||||
llassert(item);
|
||||
if (item)
|
||||
{
|
||||
LLAssetType::EType asset_type = item->getType();
|
||||
LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
|
||||
if(action)
|
||||
{
|
||||
action->doIt();
|
||||
delete action;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LLViewerInventoryItem* LLInvFVBridgeAction::getItem() const
|
||||
{
|
||||
if (mModel)
|
||||
return (LLViewerInventoryItem*)mModel->getItem(mUUID);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
class LLTextureBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
if (getItem())
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLTextureBridgeAction(){}
|
||||
protected:
|
||||
LLTextureBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLSoundBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLSoundBridgeAction(){}
|
||||
protected:
|
||||
LLSoundBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLLandmarkBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
// Opening (double-clicking) a landmark immediately teleports,
|
||||
// but warns you the first time.
|
||||
LLSD payload;
|
||||
payload["asset_id"] = item->getAssetUUID();
|
||||
|
||||
LLSD args;
|
||||
args["LOCATION"] = item->getName();
|
||||
|
||||
LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLLandmarkBridgeAction(){}
|
||||
protected:
|
||||
LLLandmarkBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLCallingCardBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item && item->getCreatorUUID().notNull())
|
||||
{
|
||||
LLAvatarActions::showProfile(item->getCreatorUUID());
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLCallingCardBridgeAction(){}
|
||||
protected:
|
||||
LLCallingCardBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
|
||||
};
|
||||
|
||||
class LLNotecardBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLNotecardBridgeAction(){}
|
||||
protected:
|
||||
LLNotecardBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLGestureBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
|
||||
preview->setFocus(TRUE);
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLGestureBridgeAction(){}
|
||||
protected:
|
||||
LLGestureBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLAnimationBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLAnimationBridgeAction(){}
|
||||
protected:
|
||||
LLAnimationBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLObjectBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
/*
|
||||
LLFloaterReg::showInstance("properties", mUUID);
|
||||
*/
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLObjectBridgeAction(){}
|
||||
protected:
|
||||
LLObjectBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLLSLTextBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if (item)
|
||||
{
|
||||
LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLLSLTextBridgeAction(){}
|
||||
protected:
|
||||
LLLSLTextBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
};
|
||||
|
||||
class LLWearableBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt()
|
||||
{
|
||||
if(isItemInTrash())
|
||||
{
|
||||
LLNotificationsUtil::add("CannotWearTrash");
|
||||
}
|
||||
else if(isAgentInventory())
|
||||
{
|
||||
if(!get_is_item_worn(mUUID))
|
||||
{
|
||||
wearOnAvatar();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// must be in the inventory library. copy it to our inventory
|
||||
// and put it on right away.
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if(item && item->isComplete())
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
|
||||
copy_inventory_item(
|
||||
gAgent.getID(),
|
||||
item->getPermissions().getOwner(),
|
||||
item->getUUID(),
|
||||
LLUUID::null,
|
||||
std::string(),
|
||||
cb);
|
||||
}
|
||||
else if(item)
|
||||
{
|
||||
// *TODO: We should fetch the item details, and then do
|
||||
// the operation above.
|
||||
LLNotificationsUtil::add("CannotWearInfoNotComplete");
|
||||
}
|
||||
}
|
||||
LLInvFVBridgeAction::doIt();
|
||||
}
|
||||
virtual ~LLWearableBridgeAction(){}
|
||||
protected:
|
||||
LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
|
||||
BOOL isItemInTrash() const;
|
||||
// return true if the item is in agent inventory. if false, it
|
||||
// must be lost or in the inventory library.
|
||||
BOOL isAgentInventory() const;
|
||||
void wearOnAvatar();
|
||||
};
|
||||
|
||||
BOOL LLWearableBridgeAction::isItemInTrash() const
|
||||
{
|
||||
if(!mModel) return FALSE;
|
||||
const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH);
|
||||
return mModel->isObjectDescendentOf(mUUID, trash_id);
|
||||
}
|
||||
|
||||
BOOL LLWearableBridgeAction::isAgentInventory() const
|
||||
{
|
||||
if(!mModel) return FALSE;
|
||||
if(gInventory.getRootFolderID() == mUUID) return TRUE;
|
||||
return mModel->isObjectDescendentOf(mUUID, gInventory.getRootFolderID());
|
||||
}
|
||||
|
||||
void LLWearableBridgeAction::wearOnAvatar()
|
||||
{
|
||||
// Don't wear anything until initial wearables are loaded, can
|
||||
// destroy clothing items.
|
||||
if (!gAgentWearables.areWearablesLoaded())
|
||||
{
|
||||
LLNotificationsUtil::add("CanNotChangeAppearanceUntilLoaded");
|
||||
return;
|
||||
}
|
||||
|
||||
LLViewerInventoryItem* item = getItem();
|
||||
if(item)
|
||||
{
|
||||
if(!isAgentInventory())
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
|
||||
copy_inventory_item(
|
||||
gAgent.getID(),
|
||||
item->getPermissions().getOwner(),
|
||||
item->getUUID(),
|
||||
LLUUID::null,
|
||||
std::string(),
|
||||
cb);
|
||||
}
|
||||
else
|
||||
{
|
||||
wear_inventory_item_on_avatar(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
|
||||
const LLUUID& uuid,
|
||||
LLInventoryModel* model)
|
||||
{
|
||||
LLInvFVBridgeAction* action = NULL;
|
||||
switch(asset_type)
|
||||
{
|
||||
case LLAssetType::AT_TEXTURE:
|
||||
action = new LLTextureBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_SOUND:
|
||||
action = new LLSoundBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_LANDMARK:
|
||||
action = new LLLandmarkBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_CALLINGCARD:
|
||||
action = new LLCallingCardBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_OBJECT:
|
||||
action = new LLObjectBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_NOTECARD:
|
||||
action = new LLNotecardBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_ANIMATION:
|
||||
action = new LLAnimationBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_GESTURE:
|
||||
action = new LLGestureBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_LSL_TEXT:
|
||||
action = new LLLSLTextBridgeAction(uuid,model);
|
||||
break;
|
||||
case LLAssetType::AT_CLOTHING:
|
||||
case LLAssetType::AT_BODYPART:
|
||||
action = new LLWearableBridgeAction(uuid,model);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return action;
|
||||
}
|
||||
|
||||
/** Bridge Actions
|
||||
**
|
||||
********************************************************************************/
|
||||
|
|
|
|||
|
|
@ -45,78 +45,12 @@ class LLInventoryPanel;
|
|||
class LLInventoryModel;
|
||||
class LLMenuGL;
|
||||
class LLCallingCardObserver;
|
||||
|
||||
enum EInventoryIcon
|
||||
{
|
||||
TEXTURE_ICON_NAME,
|
||||
SOUND_ICON_NAME,
|
||||
CALLINGCARD_ONLINE_ICON_NAME,
|
||||
CALLINGCARD_OFFLINE_ICON_NAME,
|
||||
LANDMARK_ICON_NAME,
|
||||
LANDMARK_VISITED_ICON_NAME,
|
||||
SCRIPT_ICON_NAME,
|
||||
CLOTHING_ICON_NAME,
|
||||
OBJECT_ICON_NAME,
|
||||
OBJECT_MULTI_ICON_NAME,
|
||||
NOTECARD_ICON_NAME,
|
||||
BODYPART_ICON_NAME,
|
||||
SNAPSHOT_ICON_NAME,
|
||||
|
||||
BODYPART_SHAPE_ICON_NAME,
|
||||
BODYPART_SKIN_ICON_NAME,
|
||||
BODYPART_HAIR_ICON_NAME,
|
||||
BODYPART_EYES_ICON_NAME,
|
||||
CLOTHING_SHIRT_ICON_NAME,
|
||||
CLOTHING_PANTS_ICON_NAME,
|
||||
CLOTHING_SHOES_ICON_NAME,
|
||||
CLOTHING_SOCKS_ICON_NAME,
|
||||
CLOTHING_JACKET_ICON_NAME,
|
||||
CLOTHING_GLOVES_ICON_NAME,
|
||||
CLOTHING_UNDERSHIRT_ICON_NAME,
|
||||
CLOTHING_UNDERPANTS_ICON_NAME,
|
||||
CLOTHING_SKIRT_ICON_NAME,
|
||||
CLOTHING_ALPHA_ICON_NAME,
|
||||
CLOTHING_TATTOO_ICON_NAME,
|
||||
|
||||
ANIMATION_ICON_NAME,
|
||||
GESTURE_ICON_NAME,
|
||||
|
||||
LINKITEM_ICON_NAME,
|
||||
LINKFOLDER_ICON_NAME,
|
||||
|
||||
ICON_NAME_COUNT
|
||||
};
|
||||
|
||||
extern std::string ICON_NAME[ICON_NAME_COUNT];
|
||||
|
||||
typedef std::pair<LLUUID, LLUUID> two_uuids_t;
|
||||
typedef std::list<two_uuids_t> two_uuids_list_t;
|
||||
typedef std::pair<LLUUID, two_uuids_list_t> uuid_move_list_t;
|
||||
|
||||
struct LLMoveInv
|
||||
{
|
||||
LLUUID mObjectID;
|
||||
LLUUID mCategoryID;
|
||||
two_uuids_list_t mMoveList;
|
||||
void (*mCallback)(S32, void*);
|
||||
void* mUserData;
|
||||
};
|
||||
|
||||
struct LLAttachmentRezAction
|
||||
{
|
||||
LLUUID mItemID;
|
||||
S32 mAttachPt;
|
||||
};
|
||||
class LLViewerJointAttachment;
|
||||
|
||||
typedef std::vector<std::string> menuentry_vec_t;
|
||||
|
||||
const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type);
|
||||
void hide_context_entries(LLMenuGL& menu,
|
||||
const menuentry_vec_t &entries_to_show,
|
||||
const menuentry_vec_t &disabled_entries);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLInvFVBridge (& its derived classes)
|
||||
// Class LLInvFVBridge
|
||||
//
|
||||
// Short for Inventory-Folder-View-Bridge. This is an
|
||||
// implementation class to be able to view inventory items.
|
||||
|
|
@ -177,7 +111,7 @@ public:
|
|||
virtual void pasteFromClipboard() {}
|
||||
virtual void pasteLinkFromClipboard() {}
|
||||
void getClipboardEntries(bool show_asset_id, menuentry_vec_t &items,
|
||||
menuentry_vec_t &disabled_items, U32 flags);
|
||||
menuentry_vec_t &disabled_items, U32 flags);
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const;
|
||||
virtual BOOL dragOrDrop(MASK mask, BOOL drop,
|
||||
|
|
@ -227,17 +161,18 @@ protected:
|
|||
const LLUUID mUUID; // item id
|
||||
LLInventoryType::EType mInvType;
|
||||
void purgeItem(LLInventoryModel *model, const LLUUID &uuid);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* This class intended to build Folder View Bridge via LLInvFVBridge::createBridge.
|
||||
* It can be overridden with another way of creation necessary Inventory-Folder-View-Bridge.
|
||||
*/
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLInvFVBridge
|
||||
//
|
||||
// This class intended to build Folder View Bridge via LLInvFVBridge::createBridge.
|
||||
// It can be overridden with another way of creation necessary Inventory-Folder-View-Bridge.
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
class LLInventoryFVBridgeBuilder
|
||||
{
|
||||
public:
|
||||
virtual ~LLInventoryFVBridgeBuilder(){}
|
||||
virtual ~LLInventoryFVBridgeBuilder() {}
|
||||
virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
|
||||
LLAssetType::EType actual_asset_type,
|
||||
LLInventoryType::EType inv_type,
|
||||
|
|
@ -247,6 +182,48 @@ public:
|
|||
U32 flags = 0x00) const;
|
||||
};
|
||||
|
||||
// Used by LLItemBridge::getIcon
|
||||
enum EInventoryIcon
|
||||
{
|
||||
TEXTURE_ICON_NAME,
|
||||
SOUND_ICON_NAME,
|
||||
CALLINGCARD_ONLINE_ICON_NAME,
|
||||
CALLINGCARD_OFFLINE_ICON_NAME,
|
||||
LANDMARK_ICON_NAME,
|
||||
LANDMARK_VISITED_ICON_NAME,
|
||||
SCRIPT_ICON_NAME,
|
||||
CLOTHING_ICON_NAME,
|
||||
OBJECT_ICON_NAME,
|
||||
OBJECT_MULTI_ICON_NAME,
|
||||
NOTECARD_ICON_NAME,
|
||||
BODYPART_ICON_NAME,
|
||||
SNAPSHOT_ICON_NAME,
|
||||
|
||||
BODYPART_SHAPE_ICON_NAME,
|
||||
BODYPART_SKIN_ICON_NAME,
|
||||
BODYPART_HAIR_ICON_NAME,
|
||||
BODYPART_EYES_ICON_NAME,
|
||||
CLOTHING_SHIRT_ICON_NAME,
|
||||
CLOTHING_PANTS_ICON_NAME,
|
||||
CLOTHING_SHOES_ICON_NAME,
|
||||
CLOTHING_SOCKS_ICON_NAME,
|
||||
CLOTHING_JACKET_ICON_NAME,
|
||||
CLOTHING_GLOVES_ICON_NAME,
|
||||
CLOTHING_UNDERSHIRT_ICON_NAME,
|
||||
CLOTHING_UNDERPANTS_ICON_NAME,
|
||||
CLOTHING_SKIRT_ICON_NAME,
|
||||
CLOTHING_ALPHA_ICON_NAME,
|
||||
CLOTHING_TATTOO_ICON_NAME,
|
||||
|
||||
ANIMATION_ICON_NAME,
|
||||
GESTURE_ICON_NAME,
|
||||
|
||||
LINKITEM_ICON_NAME,
|
||||
LINKFOLDER_ICON_NAME,
|
||||
|
||||
ICON_NAME_COUNT
|
||||
};
|
||||
extern std::string ICON_NAME[ICON_NAME_COUNT];
|
||||
|
||||
class LLItemBridge : public LLInvFVBridge
|
||||
{
|
||||
|
|
@ -290,7 +267,6 @@ protected:
|
|||
mutable std::string mDisplayName;
|
||||
};
|
||||
|
||||
|
||||
class LLFolderBridge : public LLInvFVBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
|
|
@ -397,7 +373,6 @@ protected:
|
|||
LLItemBridge(inventory, root, uuid) {}
|
||||
};
|
||||
|
||||
|
||||
class LLTextureBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
|
|
@ -450,7 +425,6 @@ protected:
|
|||
LLFolderView* root,
|
||||
const LLUUID& uuid,
|
||||
U32 flags = 0x00);
|
||||
|
||||
protected:
|
||||
BOOL mVisited;
|
||||
};
|
||||
|
|
@ -465,19 +439,15 @@ public:
|
|||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void openItem();
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
//virtual void renameItem(const std::string& new_name);
|
||||
//virtual BOOL removeItem();
|
||||
virtual BOOL dragOrDrop(MASK mask, BOOL drop,
|
||||
EDragAndDropType cargo_type,
|
||||
void* cargo_data);
|
||||
void refreshFolderViewItem();
|
||||
|
||||
protected:
|
||||
LLCallingCardBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* folder,
|
||||
const LLUUID& uuid );
|
||||
~LLCallingCardBridge();
|
||||
|
||||
protected:
|
||||
LLCallingCardObserver* mObserver;
|
||||
};
|
||||
|
|
@ -489,7 +459,6 @@ class LLNotecardBridge : public LLItemBridge
|
|||
public:
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void openItem();
|
||||
|
||||
protected:
|
||||
LLNotecardBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
|
|
@ -523,7 +492,6 @@ protected:
|
|||
: LLItemBridge(inventory, root, uuid) {}
|
||||
};
|
||||
|
||||
|
||||
class LLAnimationBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
|
|
@ -541,7 +509,6 @@ protected:
|
|||
LLItemBridge(inventory, root, uuid) {}
|
||||
};
|
||||
|
||||
|
||||
class LLObjectBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
|
|
@ -568,14 +535,12 @@ protected:
|
|||
BOOL mIsMultiObject;
|
||||
};
|
||||
|
||||
|
||||
class LLLSLTextBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void openItem();
|
||||
|
||||
protected:
|
||||
LLLSLTextBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
|
|
@ -583,7 +548,6 @@ protected:
|
|||
LLItemBridge(inventory, root, uuid) {}
|
||||
};
|
||||
|
||||
|
||||
class LLWearableBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
|
|
@ -632,45 +596,38 @@ class LLLinkItemBridge : public LLItemBridge
|
|||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual const std::string& getPrefix() { return sPrefix; }
|
||||
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
|
||||
protected:
|
||||
LLLinkItemBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
|
||||
protected:
|
||||
static std::string sPrefix;
|
||||
};
|
||||
|
||||
|
||||
class LLLinkFolderBridge : public LLItemBridge
|
||||
{
|
||||
friend class LLInvFVBridge;
|
||||
public:
|
||||
virtual const std::string& getPrefix() { return sPrefix; }
|
||||
|
||||
virtual LLUIImagePtr getIcon() const;
|
||||
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void gotoItem();
|
||||
|
||||
protected:
|
||||
LLLinkFolderBridge(LLInventoryPanel* inventory,
|
||||
LLFolderView* root,
|
||||
const LLUUID& uuid) :
|
||||
LLItemBridge(inventory, root, uuid) {}
|
||||
const LLUUID &getFolderID() const;
|
||||
|
||||
protected:
|
||||
static std::string sPrefix;
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLInvFVBridgeAction (& its derived classes)
|
||||
// Class LLInvFVBridgeAction
|
||||
//
|
||||
// This is an implementation class to be able to
|
||||
// perform action to view inventory items.
|
||||
|
|
@ -680,7 +637,7 @@ class LLInvFVBridgeAction
|
|||
{
|
||||
public:
|
||||
// This method is a convenience function which creates the correct
|
||||
// type of bridge action based on some basic information
|
||||
// type of bridge action based on some basic information.
|
||||
static LLInvFVBridgeAction* createAction(LLAssetType::EType asset_type,
|
||||
const LLUUID& uuid,
|
||||
LLInventoryModel* model);
|
||||
|
|
@ -689,149 +646,21 @@ public:
|
|||
static void doAction(const LLUUID& uuid, LLInventoryModel* model);
|
||||
|
||||
virtual void doIt() {};
|
||||
virtual ~LLInvFVBridgeAction(){}//need this because of warning on OSX
|
||||
virtual ~LLInvFVBridgeAction() {} // need this because of warning on OSX
|
||||
protected:
|
||||
LLInvFVBridgeAction(const LLUUID& id, LLInventoryModel* model) :
|
||||
mUUID(id), mModel(model) {}
|
||||
LLViewerInventoryItem* getItem() const;
|
||||
protected:
|
||||
const LLUUID& mUUID; // item id
|
||||
const LLUUID& mUUID; // item id
|
||||
LLInventoryModel* mModel;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class LLTextureBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLTextureBridgeAction(){}
|
||||
protected:
|
||||
LLTextureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLSoundBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLSoundBridgeAction(){}
|
||||
protected:
|
||||
LLSoundBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLLandmarkBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLLandmarkBridgeAction(){}
|
||||
protected:
|
||||
LLLandmarkBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLCallingCardBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLCallingCardBridgeAction(){}
|
||||
protected:
|
||||
LLCallingCardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLNotecardBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLNotecardBridgeAction(){}
|
||||
protected:
|
||||
LLNotecardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLGestureBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLGestureBridgeAction(){}
|
||||
protected:
|
||||
LLGestureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLAnimationBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLAnimationBridgeAction(){}
|
||||
protected:
|
||||
LLAnimationBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLObjectBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLObjectBridgeAction(){}
|
||||
protected:
|
||||
LLObjectBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLLSLTextBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt() ;
|
||||
virtual ~LLLSLTextBridgeAction(){}
|
||||
protected:
|
||||
LLLSLTextBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
};
|
||||
|
||||
|
||||
class LLWearableBridgeAction: public LLInvFVBridgeAction
|
||||
{
|
||||
friend class LLInvFVBridgeAction;
|
||||
public:
|
||||
virtual void doIt();
|
||||
virtual ~LLWearableBridgeAction(){}
|
||||
protected:
|
||||
LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
|
||||
|
||||
|
||||
BOOL isItemInTrash() const;
|
||||
// return true if the item is in agent inventory. if false, it
|
||||
// must be lost or in the inventory library.
|
||||
BOOL isAgentInventory() const;
|
||||
|
||||
void wearOnAvatar();
|
||||
|
||||
};
|
||||
|
||||
void wear_inventory_item_on_avatar(LLInventoryItem* item);
|
||||
|
||||
class LLViewerJointAttachment;
|
||||
void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment);
|
||||
void rez_attachment(LLViewerInventoryItem* item,
|
||||
LLViewerJointAttachment* attachment);
|
||||
|
||||
// Move items from an in-world object's "Contents" folder to a specified
|
||||
// folder in agent inventory.
|
||||
|
|
@ -841,13 +670,9 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
|
|||
void (*callback)(S32, void*) = NULL,
|
||||
void* user_data = NULL);
|
||||
|
||||
|
||||
|
||||
void teleport_via_landmark(const LLUUID& asset_id);
|
||||
|
||||
// Utility function to hide all entries except those in the list
|
||||
void hide_context_entries(LLMenuGL& menu,
|
||||
const menuentry_vec_t &entries_to_show,
|
||||
const menuentry_vec_t &disabled_entries);
|
||||
const menuentry_vec_t &entries_to_show,
|
||||
const menuentry_vec_t &disabled_entries);
|
||||
|
||||
#endif // LL_LLINVENTORYBRIDGE_H
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@
|
|||
// and override the () operator to return TRUE if you want to collect
|
||||
// the category or item passed in.
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class LLInventoryCollectFunctor
|
||||
{
|
||||
public:
|
||||
|
|
@ -62,7 +61,6 @@ public:
|
|||
static bool itemTransferCommonlyAllowed(LLInventoryItem* item);
|
||||
};
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLAssetIDMatches
|
||||
//
|
||||
|
|
@ -116,14 +114,12 @@ protected:
|
|||
LLAssetType::EType mType;
|
||||
};
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLIsNotType
|
||||
//
|
||||
// Implementation of a LLInventoryCollectFunctor which returns FALSE if the
|
||||
// type is the type passed in during construction, otherwise false.
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class LLIsNotType : public LLInventoryCollectFunctor
|
||||
{
|
||||
public:
|
||||
|
|
@ -156,7 +152,6 @@ protected:
|
|||
// Simple class that collects calling cards that are not null, and not
|
||||
// the agent. Duplicates are possible.
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class LLBuddyCollector : public LLInventoryCollectFunctor
|
||||
{
|
||||
public:
|
||||
|
|
@ -172,7 +167,6 @@ public:
|
|||
// Simple class that collects calling cards that are not null, and not
|
||||
// the agent. Duplicates are discarded.
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class LLUniqueBuddyCollector : public LLInventoryCollectFunctor
|
||||
{
|
||||
public:
|
||||
|
|
@ -202,13 +196,11 @@ protected:
|
|||
LLUUID mBuddyID;
|
||||
};
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLNameCategoryCollector
|
||||
//
|
||||
// Collects categories based on case-insensitive match of prefix
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class LLNameCategoryCollector : public LLInventoryCollectFunctor
|
||||
{
|
||||
public:
|
||||
|
|
@ -270,7 +262,7 @@ public:
|
|||
virtual void doItem(LLFolderViewItem* item);
|
||||
BOOL wasItemSelected() { return mItemSelected; }
|
||||
protected:
|
||||
BOOL mItemSelected;
|
||||
BOOL mItemSelected;
|
||||
};
|
||||
|
||||
class LLOpenFilteredFolders : public LLFolderViewFunctor
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
|
|||
case LLAssetType::AT_LANDMARK:
|
||||
if(!(inv_type == LLInventoryType::IT_LANDMARK))
|
||||
{
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
|
||||
llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
|
||||
}
|
||||
new_listener = new LLPlacesLandmarkBridge(inv_type, inventory, root, uuid, flags);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue