Address Issue 91: Estate ban button added to radar
Shift-Enter in radar now starts an IM with people selected. Also, it seems Dark used black for texts and should... so... let's reverse that change.
This commit is contained in:
@@ -319,11 +319,6 @@ BOOL LLFloaterAvatarList::postBuild()
|
|||||||
mTracking = FALSE;
|
mTracking = FALSE;
|
||||||
mUpdate = TRUE;
|
mUpdate = TRUE;
|
||||||
|
|
||||||
// Hide them until some other way is found
|
|
||||||
// Users may not expect to find a Ban feature on the Eject button
|
|
||||||
// Perhaps turn it into a FlyOutButton?
|
|
||||||
childSetVisible("estate_ban_btn", false);
|
|
||||||
|
|
||||||
// Set callbacks
|
// Set callbacks
|
||||||
childSetAction("profile_btn", onClickProfile, this);
|
childSetAction("profile_btn", onClickProfile, this);
|
||||||
childSetAction("im_btn", onClickIM, this);
|
childSetAction("im_btn", onClickIM, this);
|
||||||
@@ -344,6 +339,7 @@ BOOL LLFloaterAvatarList::postBuild()
|
|||||||
childSetAction("ar_btn", onClickAR, this);
|
childSetAction("ar_btn", onClickAR, this);
|
||||||
childSetAction("teleport_btn", onClickTeleport, this);
|
childSetAction("teleport_btn", onClickTeleport, this);
|
||||||
childSetAction("estate_eject_btn", onClickEjectFromEstate, this);
|
childSetAction("estate_eject_btn", onClickEjectFromEstate, this);
|
||||||
|
childSetAction("estate_ban_btn", onClickBanFromEstate, this);
|
||||||
|
|
||||||
childSetAction("send_keys_btn", onClickSendKeys, this);
|
childSetAction("send_keys_btn", onClickSendKeys, this);
|
||||||
|
|
||||||
@@ -1111,6 +1107,36 @@ BOOL LLFloaterAvatarList::handleKeyHere(KEY key, MASK mask)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (( KEY_RETURN == key ) && (MASK_SHIFT == mask))
|
||||||
|
{
|
||||||
|
LLDynamicArray<LLUUID> ids = self->mAvatarList->getSelectedIDs();
|
||||||
|
if (ids.size() > 0)
|
||||||
|
{
|
||||||
|
if (ids.size() == 1)
|
||||||
|
{
|
||||||
|
// Single avatar
|
||||||
|
LLUUID agent_id = ids[0];
|
||||||
|
|
||||||
|
// [Ansariel: Display name support]
|
||||||
|
LLAvatarName avatar_name;
|
||||||
|
if (LLAvatarNameCache::get(agent_id, &avatar_name))
|
||||||
|
{
|
||||||
|
gIMMgr->setFloaterOpen(TRUE);
|
||||||
|
gIMMgr->addSession(LLCacheName::cleanFullName(avatar_name.getLegacyName()),IM_NOTHING_SPECIAL,agent_id);
|
||||||
|
}
|
||||||
|
// [Ansariel: Display name support]
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Group IM
|
||||||
|
LLUUID session_id;
|
||||||
|
session_id.generate();
|
||||||
|
gIMMgr->setFloaterOpen(TRUE);
|
||||||
|
gIMMgr->addSession("Avatars Conference", IM_SESSION_CONFERENCE_START, ids[0], ids);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return LLPanel::handleKeyHere(key, mask);
|
return LLPanel::handleKeyHere(key, mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1499,6 +1525,7 @@ static void cmd_eject(const LLUUID& avatar, const std::string& name) { sen
|
|||||||
static void cmd_ban(const LLUUID& avatar, const std::string& name) { send_eject(avatar, true); }
|
static void cmd_ban(const LLUUID& avatar, const std::string& name) { send_eject(avatar, true); }
|
||||||
static void cmd_profile(const LLUUID& avatar, const std::string& name) { LLFloaterAvatarInfo::showFromDirectory(avatar); }
|
static void cmd_profile(const LLUUID& avatar, const std::string& name) { LLFloaterAvatarInfo::showFromDirectory(avatar); }
|
||||||
static void cmd_estate_eject(const LLUUID& avatar, const std::string& name){ send_estate_message("teleporthomeuser", avatar); }
|
static void cmd_estate_eject(const LLUUID& avatar, const std::string& name){ send_estate_message("teleporthomeuser", avatar); }
|
||||||
|
static void cmd_estate_ban(const LLUUID &avatar, const std::string &name) { LLPanelEstateInfo::sendEstateAccessDelta(ESTATE_ACCESS_BANNED_AGENT_ADD | ESTATE_ACCESS_ALLOWED_AGENT_REMOVE | ESTATE_ACCESS_NO_REPLY, avatar); }
|
||||||
|
|
||||||
void LLFloaterAvatarList::doCommand(void (*func)(const LLUUID& avatar, const std::string& name))
|
void LLFloaterAvatarList::doCommand(void (*func)(const LLUUID& avatar, const std::string& name))
|
||||||
{
|
{
|
||||||
@@ -1594,6 +1621,18 @@ void LLFloaterAvatarList::callbackEjectFromEstate(const LLSD& notification, cons
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
void LLFloaterAvatarList::callbackBanFromEstate(const LLSD& notification, const LLSD& response)
|
||||||
|
{
|
||||||
|
S32 option = LLNotification::getSelectedOption(notification, response);
|
||||||
|
|
||||||
|
if (option == 0)
|
||||||
|
{
|
||||||
|
getInstance()->doCommand(cmd_estate_eject); //Eject first, just in case.
|
||||||
|
getInstance()->doCommand(cmd_estate_ban);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLFloaterAvatarList::callbackIdle(void* userdata)
|
void LLFloaterAvatarList::callbackIdle(void* userdata)
|
||||||
{
|
{
|
||||||
@@ -1663,6 +1702,15 @@ void LLFloaterAvatarList::onClickEjectFromEstate(void* userdata)
|
|||||||
LLNotificationsUtil::add("EstateKickUser", args, payload, callbackEjectFromEstate);
|
LLNotificationsUtil::add("EstateKickUser", args, payload, callbackEjectFromEstate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
void LLFloaterAvatarList::onClickBanFromEstate(void* userdata)
|
||||||
|
{
|
||||||
|
LLSD args;
|
||||||
|
LLSD payload;
|
||||||
|
args["EVIL_USER"] = ((LLFloaterAvatarList*)userdata)->getSelectedNames();
|
||||||
|
LLNotificationsUtil::add("EstateBanUser", args, payload, callbackBanFromEstate);
|
||||||
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLFloaterAvatarList::onClickAR(void* userdata)
|
void LLFloaterAvatarList::onClickAR(void* userdata)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -282,11 +282,13 @@ private:
|
|||||||
static void onClickAR(void *userdata);
|
static void onClickAR(void *userdata);
|
||||||
static void onClickTeleport(void *userdata);
|
static void onClickTeleport(void *userdata);
|
||||||
static void onClickEjectFromEstate(void *userdata);
|
static void onClickEjectFromEstate(void *userdata);
|
||||||
|
static void onClickBanFromEstate(void *userdata);
|
||||||
|
|
||||||
static void callbackFreeze(const LLSD& notification, const LLSD& response);
|
static void callbackFreeze(const LLSD& notification, const LLSD& response);
|
||||||
static void callbackEject(const LLSD& notification, const LLSD& response);
|
static void callbackEject(const LLSD& notification, const LLSD& response);
|
||||||
static void callbackAR(void *userdata);
|
static void callbackAR(void *userdata);
|
||||||
static void callbackEjectFromEstate(const LLSD& notification, const LLSD& response);
|
static void callbackEjectFromEstate(const LLSD& notification, const LLSD& response);
|
||||||
|
static void callbackBanFromEstate(const LLSD& notification, const LLSD& response);
|
||||||
|
|
||||||
static void onSelectName(LLUICtrl*, void *userdata);
|
static void onSelectName(LLUICtrl*, void *userdata);
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,6 @@
|
|||||||
<ScrollHighlightedColor value="183, 184, 188, 128"/> <!-- Hover color -->
|
<ScrollHighlightedColor value="183, 184, 188, 128"/> <!-- Hover color -->
|
||||||
<ScrollbarThumbColor value="100, 100, 100, 255"/>
|
<ScrollbarThumbColor value="100, 100, 100, 255"/>
|
||||||
<ScrollbarTrackColor value="153, 154, 158, 255"/>
|
<ScrollbarTrackColor value="153, 154, 158, 255"/>
|
||||||
<DefaultListText value="255, 255, 255, 255"/> <!-- We are replacing all the hardcoded black text with this color so we can make skins with white text on dark background -->
|
|
||||||
|
|
||||||
<!-- MENUS -->
|
<!-- MENUS -->
|
||||||
<MenuBarBgColor value="62, 62, 62, 255"/>
|
<MenuBarBgColor value="62, 62, 62, 255"/>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
<button
|
<button
|
||||||
name="im_btn"
|
name="im_btn"
|
||||||
label="IM"
|
label="IM"
|
||||||
tool_tip="Open Instant Message session"
|
tool_tip="Open Instant Message session (Shift-Enter)"
|
||||||
left="10"
|
left="10"
|
||||||
bottom_delta="-22"
|
bottom_delta="-22"
|
||||||
width="80"
|
width="80"
|
||||||
@@ -267,6 +267,18 @@
|
|||||||
font="SansSerifSmall"
|
font="SansSerifSmall"
|
||||||
follows="bottom|left"
|
follows="bottom|left"
|
||||||
/>
|
/>
|
||||||
|
<!-- Lowest row -->
|
||||||
|
<button
|
||||||
|
name="estate_ban_btn"
|
||||||
|
label="Eject And Ban From Estate"
|
||||||
|
tool_tip="Eject and Ban this avatar from the estate"
|
||||||
|
left="10"
|
||||||
|
bottom_delta="-24"
|
||||||
|
width="260"
|
||||||
|
height="20"
|
||||||
|
font="SansSerifSmall"
|
||||||
|
follows="bottom|left"
|
||||||
|
/>
|
||||||
</panel>
|
</panel>
|
||||||
|
|
||||||
<panel border="true" bottom_delta="-150" follows="left|top|right|bottom" height="255"
|
<panel border="true" bottom_delta="-150" follows="left|top|right|bottom" height="255"
|
||||||
|
|||||||
@@ -3545,6 +3545,18 @@ Kick [EVIL_USER] from this estate?
|
|||||||
yestext="OK"/>
|
yestext="OK"/>
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
|
<notification
|
||||||
|
icon="alert.tga"
|
||||||
|
label="Confirm Kick and Ban"
|
||||||
|
name="EstateBanUser"
|
||||||
|
type="alert">
|
||||||
|
Kick and Ban [EVIL_USER] from this estate?
|
||||||
|
<usetemplate
|
||||||
|
name="okcancelbuttons"
|
||||||
|
notext="Cancel"
|
||||||
|
yestext="OK"/>
|
||||||
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
icon="alertmodal.tga"
|
icon="alertmodal.tga"
|
||||||
name="EstateChangeCovenant"
|
name="EstateChangeCovenant"
|
||||||
|
|||||||
Reference in New Issue
Block a user