diff options
| -rw-r--r-- | indra/newview/llchiclet.cpp | 41 | ||||
| -rw-r--r-- | indra/newview/llchiclet.h | 11 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml | 19 | 
3 files changed, 71 insertions, 0 deletions
| diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index f41e326dd0..d533743cfc 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -595,8 +595,49 @@ void LLAdHocChiclet::setCounter(S32 counter)  	setShowNewMessagesIcon(counter);  } +void LLAdHocChiclet::createPopupMenu() +{ +	if(mPopupMenu) +	{ +		llwarns << "Menu already exists" << llendl; +		return; +	} +	if(getSessionId().isNull()) +	{ +		return; +	} + +	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; +	registrar.add("IMChicletMenu.Action", boost::bind(&LLAdHocChiclet::onMenuItemClicked, this, _2)); + +	mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL> +		("menu_imchiclet_adhoc.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +} + +void LLAdHocChiclet::onMenuItemClicked(const LLSD& user_data) +{ +	std::string level = user_data.asString(); +	LLUUID group_id = getSessionId(); + +	if("end" == level) +	{ +		LLGroupActions::endIM(group_id); +	} +} +  BOOL LLAdHocChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)  { +	if(!mPopupMenu) +	{ +		createPopupMenu(); +	} + +	if (mPopupMenu) +	{ +		mPopupMenu->arrangeAndClear(); +		LLMenuGL::showPopup(this, mPopupMenu, x, y); +	} +  	return TRUE;  } diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index 1ea141e6c4..ed4bcbc6ac 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -518,6 +518,17 @@ protected:  	friend class LLUICtrlFactory;  	/** +	 * Creates chiclet popup menu. Will create AdHoc Chat menu  +	 * based on other participant's id. +	 */ +	virtual void createPopupMenu(); + +	/** +	 * Processes clicks on chiclet popup menu. +	 */ +	virtual void onMenuItemClicked(const LLSD& user_data); + +	/**  	 * Displays popup menu.  	 */  	virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); diff --git a/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml new file mode 100644 index 0000000000..eb5e31b57d --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_imchiclet_adhoc.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + height="101" + layout="topleft" + left="100" + mouse_opaque="false" + name="IMChiclet AdHoc Menu" + top="724" + visible="false" + width="128"> +    <menu_item_call +     label="End Session" +     layout="topleft" +     name="End Session"> +        <menu_item_call.on_click +         function="IMChicletMenu.Action" +         parameter="end" /> +    </menu_item_call> +</menu> | 
