PATH-245: Adding functionality for returning objects to owner from the characters floater.
parent
dd76005990
commit
e88ed1164a
|
|
@ -356,12 +356,12 @@ void LLFloaterPathfindingCharacters::onTakeCopyCharactersClicked()
|
|||
|
||||
void LLFloaterPathfindingCharacters::onReturnCharactersClicked()
|
||||
{
|
||||
llwarns << "functionality has not yet been implemented to return characters" << llendl;
|
||||
handle_object_return();
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingCharacters::onDeleteCharactersClicked()
|
||||
{
|
||||
handle_object_delete();
|
||||
handle_object_delete();
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingCharacters::onTeleportCharacterToMeClicked()
|
||||
|
|
@ -528,7 +528,7 @@ void LLFloaterPathfindingCharacters::setEnableActionFields(BOOL pEnabled)
|
|||
mShowBeaconCheckBox->setEnabled(pEnabled);
|
||||
mTakeBtn->setEnabled(pEnabled && tools_visible_take_object());
|
||||
mTakeCopyBtn->setEnabled(pEnabled && enable_object_take_copy());
|
||||
mReturnBtn->setEnabled(false && pEnabled);
|
||||
mReturnBtn->setEnabled(pEnabled && enable_object_return());
|
||||
mDeleteBtn->setEnabled(pEnabled && enable_object_delete());
|
||||
mTeleportBtn->setEnabled(pEnabled && (mCharactersScrollList->getNumSelected() == 1));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5010,6 +5010,12 @@ class LLEditDelete : public view_listener_t
|
|||
}
|
||||
};
|
||||
|
||||
bool enable_object_return()
|
||||
{
|
||||
return (!LLSelectMgr::getInstance()->getSelection()->isEmpty() &&
|
||||
(gAgent.isGodlike() || can_derez(DRD_RETURN_TO_OWNER)));
|
||||
}
|
||||
|
||||
bool enable_object_delete()
|
||||
{
|
||||
bool new_value =
|
||||
|
|
@ -5025,6 +5031,49 @@ bool enable_object_delete()
|
|||
return new_value;
|
||||
}
|
||||
|
||||
class LLObjectsReturnPackage
|
||||
{
|
||||
public:
|
||||
LLObjectsReturnPackage() : mObjectSelection(), mReturnableObjects(), mError(), mFirstRegion(NULL) {};
|
||||
~LLObjectsReturnPackage()
|
||||
{
|
||||
mObjectSelection.clear();
|
||||
mReturnableObjects.clear();
|
||||
mError.clear();
|
||||
mFirstRegion = NULL;
|
||||
};
|
||||
|
||||
LLObjectSelectionHandle mObjectSelection;
|
||||
LLDynamicArray<LLViewerObjectPtr> mReturnableObjects;
|
||||
std::string mError;
|
||||
LLViewerRegion *mFirstRegion;
|
||||
};
|
||||
|
||||
static void return_objects(LLObjectsReturnPackage *objectsReturnPackage, const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
if (LLNotificationsUtil::getSelectedOption(notification, response) == 0)
|
||||
{
|
||||
// Ignore category ID for this derez destination.
|
||||
derez_objects(DRD_RETURN_TO_OWNER, LLUUID::null, objectsReturnPackage->mFirstRegion, objectsReturnPackage->mError, &objectsReturnPackage->mReturnableObjects);
|
||||
}
|
||||
|
||||
delete objectsReturnPackage;
|
||||
}
|
||||
|
||||
void handle_object_return()
|
||||
{
|
||||
if (!LLSelectMgr::getInstance()->getSelection()->isEmpty())
|
||||
{
|
||||
LLObjectsReturnPackage *objectsReturnPackage = new LLObjectsReturnPackage();
|
||||
objectsReturnPackage->mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
|
||||
|
||||
// Save selected objects, so that we still know what to return after the confirmation dialog resets selection.
|
||||
get_derezzable_objects(DRD_RETURN_TO_OWNER, objectsReturnPackage->mError, objectsReturnPackage->mFirstRegion, &objectsReturnPackage->mReturnableObjects);
|
||||
|
||||
LLNotificationsUtil::add("ReturnToOwner", LLSD(), LLSD(), boost::bind(&return_objects, objectsReturnPackage, _1, _2));
|
||||
}
|
||||
}
|
||||
|
||||
void handle_object_delete()
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ void handle_object_open();
|
|||
bool visible_take_object();
|
||||
bool tools_visible_take_object();
|
||||
bool enable_object_take_copy();
|
||||
bool enable_object_return();
|
||||
bool enable_object_delete();
|
||||
|
||||
// Buy either contents or object itself
|
||||
|
|
@ -104,6 +105,7 @@ void handle_take();
|
|||
void handle_take_copy();
|
||||
void handle_look_at_selection(const LLSD& param);
|
||||
void handle_zoom_to_object(LLUUID object_id);
|
||||
void handle_object_return();
|
||||
void handle_object_delete();
|
||||
|
||||
void handle_buy_land();
|
||||
|
|
|
|||
Loading…
Reference in New Issue