diff options
| author | Dmitry Zaporozhan <dzaporozhan@productengine.com> | 2010-01-29 19:40:46 +0200 | 
|---|---|---|
| committer | Dmitry Zaporozhan <dzaporozhan@productengine.com> | 2010-01-29 19:40:46 +0200 | 
| commit | 092f93b0c1084edf68fc0536aa03a3c7b816505b (patch) | |
| tree | 26338e8df952ae8e3b56153ed9c22e9b853c1959 /indra/newview | |
| parent | 4fa3577b04e7a02b549ef8375c658632aecf630f (diff) | |
Fixed normal bug EXT-2124 - [BSI] New notifications of group chat messages do not identify the destination group chat of message.
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/lltoastimpanel.cpp | 88 | ||||
| -rw-r--r-- | indra/newview/lltoastimpanel.h | 6 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_instant_message.xml | 10 | 
3 files changed, 91 insertions, 13 deletions
| diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index 89a58cd736..a436dc0546 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -33,7 +33,10 @@  #include "llviewerprecompiledheaders.h"  #include "lltoastimpanel.h" +#include "llagent.h"  #include "llfloaterreg.h" +#include "llgroupactions.h" +#include "llgroupiconctrl.h"  #include "llnotifications.h"  #include "llinstantmessage.h"  #include "lltooltip.h" @@ -45,11 +48,12 @@ const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT	= 6;  //--------------------------------------------------------------------------  LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notification),  								mAvatarIcon(NULL), mAvatarName(NULL), -								mTime(NULL), mMessage(NULL) +								mTime(NULL), mMessage(NULL), mGroupIcon(NULL)  {  	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml");  	LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); +	mGroupIcon = getChild<LLGroupIconCtrl>("group_icon");  	mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");  	mAvatarName = getChild<LLTextBox>("user_name");  	mTime = getChild<LLTextBox>("time_box"); @@ -86,17 +90,26 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notif  	mAvatarID = p.avatar_id;  	mNotification = p.notification; +	mAvatarIcon->setVisible(FALSE); +	mGroupIcon->setVisible(FALSE); +	sys_msg_icon->setVisible(FALSE); +  	if(p.from == SYSTEM_FROM)  	{ -		mAvatarIcon->setVisible(FALSE);  		sys_msg_icon->setVisible(TRUE);  	}  	else  	{ -		mAvatarIcon->setVisible(TRUE); -		sys_msg_icon->setVisible(FALSE); - -		mAvatarIcon->setValue(p.avatar_id); +		if(LLGroupActions::isInGroup(mSessionID)) +		{ +			mGroupIcon->setVisible(TRUE); +			mGroupIcon->setValue(p.session_id); +		} +		else +		{ +			mAvatarIcon->setVisible(TRUE); +			mAvatarIcon->setValue(p.avatar_id); +		}  	}  	S32 maxLinesCount; @@ -128,11 +141,39 @@ BOOL LLToastIMPanel::handleMouseDown(S32 x, S32 y, MASK mask)  BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)  {  	// It's not our direct child, so parentPointInView() doesn't work. -	LLRect name_rect; -	mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &name_rect, this); -	if (!name_rect.pointInRect(x, y)) -		return LLToastPanel::handleToolTip(x, y, mask); +	LLRect ctrl_rect; + +	mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &ctrl_rect, this); +	if (ctrl_rect.pointInRect(x, y)) +	{ +		spawnNameToolTip(); +		return TRUE; +	} + +	mGroupIcon->localRectToOtherView(mGroupIcon->getLocalRect(), &ctrl_rect, this); +	if(mGroupIcon->getVisible() && ctrl_rect.pointInRect(x, y)) +	{ +		spawnGroupIconToolTip(); +		return TRUE; +	} + +	return LLToastPanel::handleToolTip(x, y, mask); +} + +void LLToastIMPanel::showInspector() +{ +	if(LLGroupActions::isInGroup(mSessionID)) +	{ +		LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID)); +	} +	else +	{ +		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); +	} +} +void LLToastIMPanel::spawnNameToolTip() +{  	// Spawn at right side of the name textbox.  	LLRect sticky_rect = mAvatarName->calcScreenRect();  	S32 icon_x = llmin(sticky_rect.mLeft + mAvatarName->getTextPixelWidth() + 3, sticky_rect.mRight - 16); @@ -149,10 +190,31 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)  	params.sticky_rect(sticky_rect);  	LLToolTipMgr::getInstance()->show(params); -	return TRUE;  } -void LLToastIMPanel::showInspector() +void LLToastIMPanel::spawnGroupIconToolTip()  { -	LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); +	// Spawn at right bottom side of group icon. +	LLRect sticky_rect = mGroupIcon->calcScreenRect(); +	LLCoordGL pos(sticky_rect.mRight, sticky_rect.mBottom); + +	LLGroupData g_data; +	if(!gAgent.getGroupData(mSessionID, g_data)) +	{ +		llwarns << "Error getting group data" << llendl; +	} + +	LLInspector::Params params; +	params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); +	params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this)); +	params.delay_time(0.100f); +	params.image(LLUI::getUIImage("Info_Small")); +	params.message(g_data.mName); +	params.padding(3); +	params.pos(pos); +	params.max_width(300); + +	LLToolTipMgr::getInstance()->show(params);  } + +// EOF diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 154e6dae16..444c0af144 100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h @@ -39,6 +39,7 @@  #include "llbutton.h"  #include "llavatariconctrl.h" +class LLGroupIconCtrl;  class LLToastIMPanel: public LLToastPanel   { @@ -61,12 +62,17 @@ public:  	/*virtual*/ BOOL	handleToolTip(S32 x, S32 y, MASK mask);  private:  	void showInspector(); + +	void spawnNameToolTip(); +	void spawnGroupIconToolTip(); +  	static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT;  	LLNotificationPtr	mNotification;  	LLUUID				mSessionID;  	LLUUID				mAvatarID;  	LLAvatarIconCtrl*	mAvatarIcon; +	LLGroupIconCtrl*	mGroupIcon;  	LLTextBox*			mAvatarName;  	LLTextBox*			mTime;  	LLTextBox*			mMessage; diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 7204e57479..5a1bc32db0 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -35,6 +35,16 @@           name="avatar_icon"           top="3"           width="18" /> +        <group_icon +         follows="right" +         height="18" +         default_icon_name="Generic_Group" +         layout="topleft" +         left="3" +         mouse_opaque="false" +         name="group_icon" +         top="3" +         width="18" />          <!--<icon           follows="right"           height="20" | 
