diff options
| author | maxim_productengine <mnikolenko@productengine.com> | 2019-07-29 17:42:44 +0300 | 
|---|---|---|
| committer | maxim_productengine <mnikolenko@productengine.com> | 2019-07-29 17:42:44 +0300 | 
| commit | a28386b93472f7881b6d75a06f4ecf5fbd456a17 (patch) | |
| tree | e692b6c52dd520535df1ce97b6da7a84bcadb740 | |
| parent | b1b102cf662b9deb00c6231ca335fcf46b86034c (diff) | |
SL-9189 Add ability to rename gesture in Gesture list
| -rw-r--r-- | indra/newview/llfloatergesture.cpp | 53 | ||||
| -rw-r--r-- | indra/newview/llfloatergesture.h | 3 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_gesture_gear.xml | 10 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 23 | 
4 files changed, 89 insertions, 0 deletions
| diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index b840d37c4d..e778e8eb9e 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -41,6 +41,7 @@  #include "llkeyboard.h"  #include "llmenugl.h"  #include "llmultigesture.h" +#include "llnotificationsutil.h"  #include "llpreviewgesture.h"  #include "llscrolllistctrl.h"  #include "lltrans.h" @@ -125,6 +126,7 @@ LLFloaterGesture::LLFloaterGesture(const LLSD& key)  	mCommitCallbackRegistrar.add("Gesture.Action.ShowPreview", boost::bind(&LLFloaterGesture::onClickEdit, this));  	mCommitCallbackRegistrar.add("Gesture.Action.CopyPaste", boost::bind(&LLFloaterGesture::onCopyPasteAction, this, _2));  	mCommitCallbackRegistrar.add("Gesture.Action.SaveToCOF", boost::bind(&LLFloaterGesture::addToCurrentOutFit, this)); +	mCommitCallbackRegistrar.add("Gesture.Action.Rename", boost::bind(&LLFloaterGesture::onRenameSelected, this));  	mEnableCallbackRegistrar.add("Gesture.EnableAction", boost::bind(&LLFloaterGesture::isActionEnabled, this, _2));  } @@ -430,6 +432,19 @@ bool LLFloaterGesture::isActionEnabled(const LLSD& command)  	{  		return	mGestureList->getAllSelected().size() == 1;  	} +	else if ("rename_gesture" == command_name) +	{ +		if (mGestureList->getAllSelected().size() == 1) +		{ +			LLViewerInventoryItem* item = gInventory.getItem(mGestureList->getCurrentID()); + +			if (item && item->getPermissions().allowModifyBy(gAgentID)) +			{ +				return true; +			} +		} +		return false; +	}  	return true;  } @@ -514,6 +529,44 @@ void LLFloaterGesture::onActivateBtnClick()  	}  } +void LLFloaterGesture::onRenameSelected() +{ +	LLViewerInventoryItem* gesture = gInventory.getItem(mGestureList->getCurrentID()); +	if (!gesture) +	{ +		return; +	} + +	LLSD args; +	args["NAME"] = gesture->getName(); + +	LLSD payload; +	payload["gesture_id"] = mGestureList->getCurrentID(); + +	LLNotificationsUtil::add("RenameGesture", args, payload, boost::bind(onGestureRename, _1, _2)); + +} + +void LLFloaterGesture::onGestureRename(const LLSD& notification, const LLSD& response) +{ +	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); +	if (option != 0) return; // canceled + +	std::string new_name = response["new_name"].asString(); +	LLInventoryObject::correctInventoryName(new_name); +	if (!new_name.empty()) +	{ +		LLUUID item_id = notification["payload"]["gesture_id"].asUUID(); +		LLViewerInventoryItem* gesture = gInventory.getItem(item_id); +		if (gesture && (gesture->getName() != new_name)) +		{ +			LLSD updates; +			updates["name"] = new_name; +			update_inventory_item(item_id, updates, NULL); +		} +	} +} +  void LLFloaterGesture::onCopyPasteAction(const LLSD& command)  {  	std::string command_name  = command.asString(); diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h index 8efb3e6461..1d702c6704 100644 --- a/indra/newview/llfloatergesture.h +++ b/indra/newview/llfloatergesture.h @@ -95,6 +95,9 @@ private:  	void onCommitList();  	void onCopyPasteAction(const LLSD& command);  	void onDeleteSelected(); +	void onRenameSelected(); + +	static void onGestureRename(const LLSD& notification, const LLSD& response);  	LLUUID mSelectedID;  	LLUUID mGestureFolderID; diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml index c1458977ca..5cae643e44 100644 --- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml @@ -12,6 +12,16 @@           function="Gesture.Action.ToogleActiveState" />      </menu_item_call>      <menu_item_call +     label="Rename" +     layout="topleft" +     name="rename"> +        <on_click +         function="Gesture.Action.Rename" /> +        <on_enable +         function="Gesture.EnableAction" +         parameter="rename_gesture" /> +    </menu_item_call> +    <menu_item_call       label="Copy"       layout="topleft"       name="copy_gesture"> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 72efb4921a..efc68dbdf3 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3100,6 +3100,29 @@ See https://wiki.secondlife.com/wiki/Adding_Spelling_Dictionaries    <notification     icon="alertmodal.tga" +   label="Rename Gesture" +   name="RenameGesture" +   type="alertmodal"> +    New gesture name: +    <tag>confirm</tag> +    <form name="form"> +      <input name="new_name" type="text" width="300"> +        [NAME] +      </input> +      <button +       default="true" +       index="0" +       name="OK" +       text="OK"/> +      <button +       index="1" +       name="Cancel" +       text="Cancel"/> +    </form> +  </notification> +   +  <notification +   icon="alertmodal.tga"     name="RemoveFromFriends"     type="alertmodal">      <tag>friendship</tag> | 
