Fixed low bug EXT-5124 - Display buddy icons on online/offline alerts
--HG-- branch : product-enginemeow-7.2.2
parent
09ffc1e031
commit
a24eb0a449
|
|
@ -682,17 +682,24 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
|||
}
|
||||
BOOL notify = FALSE;
|
||||
LLSD args;
|
||||
LLSD payload;
|
||||
for(S32 i = 0; i < count; ++i)
|
||||
{
|
||||
msg->getUUIDFast(_PREHASH_AgentBlock, _PREHASH_AgentID, agent_id, i);
|
||||
payload["FROM_ID"] = agent_id;
|
||||
info = getBuddyInfo(agent_id);
|
||||
if(info)
|
||||
{
|
||||
setBuddyOnline(agent_id,online);
|
||||
if(chat_notify)
|
||||
{
|
||||
notify = TRUE;
|
||||
args["NAME_SLURL"] = LLSLURL::buildCommand("agent", agent_id, "about");
|
||||
std::string first, last;
|
||||
if(gCacheName->getName(agent_id, first, last))
|
||||
{
|
||||
notify = TRUE;
|
||||
args["FIRST"] = first;
|
||||
args["LAST"] = last;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -719,13 +726,13 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
|||
notification =
|
||||
LLNotificationsUtil::add("FriendOnline",
|
||||
args,
|
||||
LLSD().with("respond_on_mousedown", TRUE),
|
||||
payload.with("respond_on_mousedown", TRUE),
|
||||
boost::bind(&LLAvatarActions::startIM, agent_id));
|
||||
}
|
||||
else
|
||||
{
|
||||
notification =
|
||||
LLNotificationsUtil::add("FriendOffline", args);
|
||||
LLNotificationsUtil::add("FriendOffline", args, payload);
|
||||
}
|
||||
|
||||
// If there's an open IM session with this agent, send a notification there too.
|
||||
|
|
|
|||
|
|
@ -43,6 +43,37 @@
|
|||
|
||||
using namespace LLNotificationsUI;
|
||||
|
||||
class LLOnalineStatusToast : public LLToastPanel
|
||||
{
|
||||
public:
|
||||
|
||||
struct Params
|
||||
{
|
||||
LLNotificationPtr notification;
|
||||
LLUUID avatar_id;
|
||||
std::string message;
|
||||
|
||||
Params() {}
|
||||
};
|
||||
|
||||
LLOnalineStatusToast(Params& p) : LLToastPanel(p.notification)
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildPanel(this, "panel_online_status.xml");
|
||||
|
||||
childSetValue("avatar_icon", p.avatar_id);
|
||||
childSetValue("message", p.message);
|
||||
|
||||
if (p.notification->getPayload().has("respond_on_mousedown")
|
||||
&& p.notification->getPayload()["respond_on_mousedown"] )
|
||||
{
|
||||
setMouseDownCallback(boost::bind(&LLNotification::respond, p.notification,
|
||||
p.notification->getResponseTemplate()));
|
||||
}
|
||||
|
||||
// set line max count to 2 in case of a very long name
|
||||
snapToMessageHeight(getChild<LLTextBox>("message"), 2);
|
||||
}
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
LLTipHandler::LLTipHandler(e_notification_type type, const LLSD& id)
|
||||
|
|
@ -114,7 +145,19 @@ bool LLTipHandler::processNotification(const LLSD& notify)
|
|||
LLHandlerUtil::spawnIMSession(name, from_id);
|
||||
}
|
||||
|
||||
LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification);
|
||||
LLToastPanel* notify_box = NULL;
|
||||
if("FriendOffline" == notification->getName() || "FriendOnline" == notification->getName())
|
||||
{
|
||||
LLOnalineStatusToast::Params p;
|
||||
p.notification = notification;
|
||||
p.message = notification->getMessage();
|
||||
p.avatar_id = notification->getPayload()["FROM_ID"];
|
||||
notify_box = new LLOnalineStatusToast(p);
|
||||
}
|
||||
else
|
||||
{
|
||||
notify_box = new LLToastNotifyPanel(notification);
|
||||
}
|
||||
|
||||
LLToast::Params p;
|
||||
p.notif_id = notification->getID();
|
||||
|
|
|
|||
|
|
@ -4310,14 +4310,14 @@ Topic: [SUBJECT], Message: [MESSAGE]
|
|||
icon="notifytip.tga"
|
||||
name="FriendOnline"
|
||||
type="notifytip">
|
||||
[NAME_SLURL] is Online
|
||||
[FIRST] [LAST] is Online
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="FriendOffline"
|
||||
type="notifytip">
|
||||
[NAME_SLURL] is Offline
|
||||
[FIRST] [LAST] is Offline
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel
|
||||
background_visible="true"
|
||||
height="152"
|
||||
label="friend_online_status"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="friend_online_status"
|
||||
top="0"
|
||||
width="305">
|
||||
<avatar_icon
|
||||
follows="top|left"
|
||||
height="18"
|
||||
image_name="Generic_Person"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
mouse_opaque="false"
|
||||
name="avatar_icon"
|
||||
top="10"
|
||||
width="18" />
|
||||
<text
|
||||
font="SansSerifSmall"
|
||||
follows="all"
|
||||
height="137"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="message"
|
||||
text_color="white"
|
||||
top="15"
|
||||
use_ellipses="true"
|
||||
value=""
|
||||
width="285"
|
||||
word_wrap="true"
|
||||
max_length="350" />
|
||||
</panel>
|
||||
Loading…
Reference in New Issue