This commit is contained in:
Siana Gearz
2013-05-27 08:37:39 +02:00
11 changed files with 139 additions and 80 deletions

View File

@@ -6864,6 +6864,19 @@ This should be as low as possible, but too low may break functionality</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RadarUpdateEnabled</key>
<map>
<key>Comment</key>
<string>When false, pauses the radar until further notice, good for banning someone who just left.</string>
<key>Persist</key>
<integer>0</integer>
<key>HideFromEditor</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>RadarUpdateRate</key>
<map>
<key>Comment</key>

View File

@@ -315,7 +315,7 @@ const LLAvatarListEntry::ACTIVITY_TYPE LLAvatarListEntry::getActivity()
LLFloaterAvatarList::LLFloaterAvatarList() : LLFloater(std::string("radar")),
mTracking(false),
mUpdate(true),
mUpdate("RadarUpdateEnabled"),
mDirtyAvatarSorting(false),
mUpdateRate(gSavedSettings.getU32("RadarUpdateRate") * 3 + 3),
mAvatarList(NULL)
@@ -415,12 +415,12 @@ BOOL LLFloaterAvatarList::postBuild()
getChild<LLRadioGroup>("update_rate")->setSelectedIndex(gSavedSettings.getU32("RadarUpdateRate"));
getChild<LLRadioGroup>("update_rate")->setCommitCallback(boost::bind(&LLFloaterAvatarList::onCommitUpdateRate, this));
getChild<LLCheckboxCtrl>("hide_mark")->setCommitCallback(boost::bind(&LLFloaterAvatarList::assessColumns, this));
getChild<LLCheckboxCtrl>("hide_pos")->setCommitCallback(boost::bind(&LLFloaterAvatarList::assessColumns, this));
getChild<LLCheckboxCtrl>("hide_alt")->setCommitCallback(boost::bind(&LLFloaterAvatarList::assessColumns, this));
getChild<LLCheckboxCtrl>("hide_act")->setCommitCallback(boost::bind(&LLFloaterAvatarList::assessColumns, this));
getChild<LLCheckboxCtrl>("hide_age")->setCommitCallback(boost::bind(&LLFloaterAvatarList::assessColumns, this));
getChild<LLCheckboxCtrl>("hide_time")->setCommitCallback(boost::bind(&LLFloaterAvatarList::assessColumns, this));
gSavedSettings.getControl("RadarColumnMarkHidden")->getSignal()->connect(boost::bind(&LLFloaterAvatarList::assessColumns, this));
gSavedSettings.getControl("RadarColumnPositionHidden")->getSignal()->connect(boost::bind(&LLFloaterAvatarList::assessColumns, this));
gSavedSettings.getControl("RadarColumnAltitudeHidden")->getSignal()->connect(boost::bind(&LLFloaterAvatarList::assessColumns, this));
gSavedSettings.getControl("RadarColumnActivityHidden")->getSignal()->connect(boost::bind(&LLFloaterAvatarList::assessColumns, this));
gSavedSettings.getControl("RadarColumnAgeHidden")->getSignal()->connect(boost::bind(&LLFloaterAvatarList::assessColumns, this));
gSavedSettings.getControl("RadarColumnTimeHidden")->getSignal()->connect(boost::bind(&LLFloaterAvatarList::assessColumns, this));
// Get a pointer to the scroll list from the interface
mAvatarList = getChild<LLScrollListCtrl>("avatar_list");
@@ -438,7 +438,7 @@ BOOL LLFloaterAvatarList::postBuild()
if(gHippoGridManager->getConnectedGrid()->isSecondLife())
childSetVisible("hide_client", false);
else
getChild<LLCheckboxCtrl>("hide_client")->setCommitCallback(boost::bind(&LLFloaterAvatarList::assessColumns, this));
gSavedSettings.getControl("RadarColumnClientHidden")->getSignal()->connect(boost::bind(&LLFloaterAvatarList::assessColumns, this));
return TRUE;
}
@@ -529,17 +529,11 @@ void LLFloaterAvatarList::updateAvatarList()
//llinfos << "radar refresh: updating map" << llendl;
// Check whether updates are enabled
LLCheckboxCtrl* check = getChild<LLCheckboxCtrl>("update_enabled_cb");
if (check && !check->getValue())
if (!mUpdate)
{
mUpdate = FALSE;
refreshTracker();
return;
}
else
{
mUpdate = TRUE;
}
//moved to pipeline to prevent a crash
//gPipeline.forAllVisibleDrawables(updateParticleActivity);
@@ -1248,19 +1242,18 @@ LLAvatarListEntry * LLFloaterAvatarList::getAvatarEntry(LLUUID avatar)
BOOL LLFloaterAvatarList::handleKeyHere(KEY key, MASK mask)
{
LLFloaterAvatarList* self = getInstance();
LLScrollListItem* item = self->mAvatarList->getFirstSelected();
LLScrollListItem* item = mAvatarList->getFirstSelected();
if(item)
{
LLUUID agent_id = item->getUUID();
if (( KEY_RETURN == key ) && (MASK_NONE == mask))
{
self->setFocusAvatar(agent_id);
setFocusAvatar(agent_id);
return TRUE;
}
else if (( KEY_RETURN == key ) && (MASK_CONTROL == mask))
{
LLAvatarListEntry* entry = self->getAvatarEntry(agent_id);
const LLAvatarListEntry* entry = getAvatarEntry(agent_id);
if (entry)
{
// llinfos << "Trying to teleport to " << entry->getName() << " at " << entry->getPosition() << llendl;
@@ -1272,7 +1265,7 @@ BOOL LLFloaterAvatarList::handleKeyHere(KEY key, MASK mask)
if (( KEY_RETURN == key ) && (MASK_SHIFT == mask))
{
uuid_vec_t ids = self->mAvatarList->getSelectedIDs();
uuid_vec_t ids = mAvatarList->getSelectedIDs();
if (ids.size() > 0)
{
if (ids.size() == 1)
@@ -1414,11 +1407,11 @@ void LLFloaterAvatarList::sendKeys()
std::ostringstream ids;
int num_ids = 0;
for (int i = 0; i < regionp->mMapAvatarIDs.count(); i++)
for (int i = 0; i < regionp->mMapAvatarIDs.count(); ++i)
{
const LLUUID &id = regionp->mMapAvatarIDs.get(i);
ids << "," << id.asString();
ids << "," << id;
++num_ids;

View File

@@ -354,7 +354,7 @@ private:
/**
* @brief TRUE when Updating
*/
bool mUpdate;
const LLCachedControl<bool> mUpdate;
/**
* @brief Update rate (if min frames per update)

View File

@@ -3,10 +3,9 @@
* @brief Panel for roles information about a particular group.
*
* $LicenseInfo:firstyear=2006&license=viewergpl$
*
* Second Life Viewer Source Code
* Copyright (c) 2006-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
@@ -35,6 +34,7 @@
#include "llcheckboxctrl.h"
#include "llagent.h"
#include "llavatarnamecache.h"
#include "llbutton.h"
#include "llfloateravatarinfo.h"
#include "llfloatergroupinvite.h"
@@ -1619,11 +1619,60 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)
}
}
void LLPanelGroupMembersSubTab::addMemberToList(LLGroupMemberData* data)
{
if (!data) return;
// Build the donated tier string.
std::ostringstream donated;
donated << data->getContribution() << " sq. m.";
LLSD item_params;
item_params["id"] = data->getID();
item_params["columns"][0]["column"] = "name";
// value is filled in by name list control
item_params["columns"][1]["column"] = "donated";
item_params["columns"][1]["value"] = donated.str();
item_params["columns"][2]["column"] = "online";
item_params["columns"][2]["value"] = data->getOnlineStatus();
item_params["columns"][2]["font"] = "SANSSERIF_SMALL";
mMembersList->addNameItem(item_params);
mHasMatch = TRUE;
}
void LLPanelGroupMembersSubTab::onNameCache(/*const LLUUID& update_id,*/ LLGroupMemberData* member, const LLAvatarName& av_name)
{
/* Singu Note: We don't have a getMemberVersion, yet, don't bother with these
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
if (!gdatap
|| gdatap->getMemberVersion() != update_id
*/
if (!member)
{
return;
}
// trying to avoid unnecessary hash lookups
std::string name;
LLAvatarNameCache::getPNSName(av_name, name); // Singu Note: Diverge from LL Viewer and filter by name displayed
if (matchesSearchFilter(name))
{
addMemberToList(member);
if(!mMembersList->getEnabled())
{
mMembersList->setEnabled(TRUE);
}
}
}
void LLPanelGroupMembersSubTab::updateMembers()
{
mPendingMemberUpdate = FALSE;
lldebugs << "LLPanelGroupMembersSubTab::updateMembers()" << llendl;
// Rebuild the members list.
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
if (!gdatap)
@@ -1640,48 +1689,36 @@ void LLPanelGroupMembersSubTab::updateMembers()
{
return;
}
//cleanup list only for first iteration
if(mMemberProgress == gdatap->mMembers.begin())
{
mMembersList->deleteAllItems();
}
LLGroupMgrGroupData::member_list_t::iterator end = gdatap->mMembers.end();
S32 i = 0;
for( ; mMemberProgress != end && i<UPDATE_MEMBERS_PER_FRAME;
++mMemberProgress, ++i)
for(S32 i = 0; mMemberProgress != end && i<UPDATE_MEMBERS_PER_FRAME; ++mMemberProgress, ++i)
{
if (!mMemberProgress->second)
continue;
// Do filtering on name if it is already in the cache.
bool add_member = true;
// Do filtering on name if it is already in the cache.
// Singu Note: Diverge from LL Viewer and filter by name displayed
std::string fullname;
if (gCacheName->getFullName(mMemberProgress->first, fullname))
if (LLAvatarNameCache::getPNSName(mMemberProgress->first, fullname))
{
if ( !matchesSearchFilter(fullname) )
if (matchesSearchFilter(fullname))
{
add_member = false;
addMemberToList(mMemberProgress->second);
}
}
if (add_member)
else
{
// Build the donated tier string.
std::ostringstream donated;
donated << mMemberProgress->second->getContribution() << " sq. m.";
LLSD row;
row["id"] = (*mMemberProgress).first;
row["columns"][0]["column"] = "name";
// value is filled in by name list control
row["columns"][1]["column"] = "donated";
row["columns"][1]["value"] = donated.str();
row["columns"][2]["column"] = "online";
row["columns"][2]["value"] = mMemberProgress->second->getOnlineStatus();
row["columns"][2]["font"] = "SANSSERIF_SMALL";
mMembersList->addNameItem(row);
mHasMatch = TRUE;
// If name is not cached, onNameCache() should be called when it is cached and add this member to list.
LLAvatarNameCache::get(mMemberProgress->first, boost::bind(&LLPanelGroupMembersSubTab::onNameCache,
this, /*gdatap->getMemberVersion(),*/ mMemberProgress->second, _2));
}
}

View File

@@ -3,10 +3,9 @@
* @brief Panel for roles information about a particular group.
*
* $LicenseInfo:firstyear=2006&license=viewergpl$
*
* Second Life Viewer Source Code
* Copyright (c) 2006-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
@@ -35,6 +34,7 @@
#include "llpanelgroup.h"
class LLAvatarName;
class LLNameListCtrl;
class LLPanelGroupSubTab;
class LLPanelGroupMembersSubTab;
@@ -197,6 +197,9 @@ public:
virtual void draw();
void addMemberToList(LLGroupMemberData* data);
void onNameCache(/*const LLUUID& update_id,*/ LLGroupMemberData* member, const LLAvatarName& av_name);
protected:
typedef std::map<LLUUID, LLRoleMemberChangeType> role_change_data_map_t;
typedef std::map<LLUUID, role_change_data_map_t*> member_role_changes_map_t;

View File

@@ -3693,6 +3693,9 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
chat.mText = from_name;
mesg = mesg.substr(3);
ircstyle = TRUE;
// This block was moved up to allow bubbles with italicized chat
// set CHAT_STYLE_IRC to avoid adding Avatar Name as author of message. See EXT-656
chat.mChatStyle = CHAT_STYLE_IRC;
}
chat.mText += mesg;
@@ -3720,12 +3723,23 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
return;
}
// We have a real utterance now, so can stop showing "..." and proceed.
if (chatter && chatter->isAvatar())
{
LLLocalSpeakerMgr::getInstance()->setSpeakerTyping(from_id, FALSE);
static_cast<LLVOAvatar*>(chatter)->stopTyping();
if (!is_muted && !is_busy)
{
static const LLCachedControl<bool> use_chat_bubbles("UseChatBubbles",false);
visible_in_chat_bubble = use_chat_bubbles;
static_cast<LLVOAvatar*>(chatter)->addChat(chat);
}
}
// Look for IRC-style emotes
if (ircstyle)
{
// set CHAT_STYLE_IRC to avoid adding Avatar Name as author of message. See EXT-656
chat.mChatStyle = CHAT_STYLE_IRC;
// Do nothing, ircstyle is fixed above for chat bubbles
}
else
@@ -3852,20 +3866,6 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
chat.mText = from_name + verb + mesg;
}
// We have a real utterance now, so can stop showing "..." and proceed.
if (chatter && chatter->isAvatar())
{
LLLocalSpeakerMgr::getInstance()->setSpeakerTyping(from_id, FALSE);
((LLVOAvatar*)chatter)->stopTyping();
if (!is_muted && !is_busy)
{
static const LLCachedControl<bool> use_chat_bubbles("UseChatBubbles",false);
visible_in_chat_bubble = use_chat_bubbles;
((LLVOAvatar*)chatter)->addChat(chat);
}
}
if (chatter)
{
chat.mPosAgent = chatter->getPositionAgent();
@@ -5286,7 +5286,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)
if (!avatarp)
{
// no agent by this ID...error?
LL_WARNS("Messaging") << "Received animation state for unknown avatar" << uuid << LL_ENDL;
LL_WARNS("Messaging") << "Received animation state for unknown avatar " << uuid << LL_ENDL;
return;
}

View File

@@ -3318,6 +3318,13 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
{
F32 chat_fade_amt = llclamp((F32)((LLFrameTimer::getElapsedSeconds() - chat_iter->mTime) / CHAT_FADE_TIME), 0.f, 4.f);
LLFontGL::StyleFlags style;
// Singu Note: The following tweak may be a bad idea, though they've asked for actions to be italicized, the chat type for actions becomes irrelevant
// If LLFontGL::StyleFlags wasn't the parameter type, font styles could be combined and underline could be used, but that may be unnatural...
static const LLCachedControl<bool> italicize("LiruItalicizeActions");
if (italicize && chat_iter->mChatStyle == CHAT_STYLE_IRC)
style = LLFontGL::ITALIC;
else
switch(chat_iter->mChatType)
{
case CHAT_TYPE_WHISPER:

View File

@@ -97,7 +97,7 @@ void ScriptCounter::requestInventories()
if (LLViewerObject* object = selectNode->getObject())
requestInventoriesFor(object);
}
cmdline_printchat(LLTrans::getString("ScriptCounting"));
if (!doDelete) cmdline_printchat(LLTrans::getString("ScriptCounting"));
requesting = false;
}
@@ -130,7 +130,8 @@ void ScriptCounter::inventoryChanged(LLViewerObject* obj, LLInventoryObject::obj
{
obj->removeInventoryListener(this);
--inventories;
//llinfos << "Counting scripts in " << obj->getID() << llendl;
//const LLUUID& objid = obj->getID();
//llinfos << "Counting scripts in " << objid << llendl;
if (inv)
{
@@ -144,7 +145,11 @@ void ScriptCounter::inventoryChanged(LLViewerObject* obj, LLInventoryObject::obj
{
const LLUUID& id = asset->getUUID();
if (id.notNull())
{
//llinfos << "Deleting script " << id << " in " << objid << llendl;
obj->removeInventory(id);
--i; // Avoid iteration when removing, everything has shifted
}
}
}
}

View File

@@ -289,7 +289,7 @@
<panel border="true" bottom_delta="-150" follows="left|top|right|bottom" height="255"
label="Options" left="1" mouse_opaque="true"
name="options_tab" width="398">
<check_box height="16" label="Update"
<check_box height="16" label="Update" control_name="RadarUpdateEnabled"
left="10" bottom_delta="-180" name="update_enabled_cb"
width="200" follows="bottom|left"
hidden="false" mouse_opaque="true" font="SansSerifSmall"

View File

@@ -81,7 +81,7 @@
<text bottom_delta="-2" left="170" height="12" name="AvatarPhysicsDetailText">Off</text>
<text bottom="284" left="460" height="12" name="DrawDistanceMeterText1">m</text>
<text bottom="284" left="470" height="12" name="DrawDistanceMeterText2">m</text>
<slider bottom="280" left="215" control_name="RenderFarClip" decimal_digits="0" height="16" increment="32" initial_val="160" label="Draw Distance:" label_width="101" max_val="1024" min_val="64" name="DrawDistance" width="262"/>
<slider bottom="280" left="215" control_name="RenderFarClip" decimal_digits="0" height="16" increment="8" initial_val="160" label="Draw Distance:" label_width="101" max_val="1024" min_val="24" name="DrawDistance" width="262"/>
<slider bottom_delta="-18" control_name="RenderMaxPartCount" decimal_digits="0" height="16" increment="256" initial_val="4096" label="Max. Particle Count:" label_width="101" max_val="8192" min_val="0" name="MaxParticleCount" width="262"/>
<slider bottom_delta="-18" control_name="RenderAvatarMaxVisible" decimal_digits="0" height="16" increment="1" initial_val="35" label="Max. non-impostors:" label_width="101" max_val="50" min_val="1" name="AvatarMaxVisible" width="250"/>
<slider bottom_delta="-18" control_name="RenderGlowResolutionPow" decimal_digits="0" height="16" increment="1" initial_val="8" label="Post Process Quality:" label_width="101" max_val="9" min_val="8" name="RenderPostProcess" show_text="false" width="226"/>

View File

@@ -5,6 +5,7 @@
<panel label="Chat/IM" name="Chat/IM">
<check_box label="Annonce les IMs entrants" name="quickstart_im_check"/>
<check_box label="Ne pas envoyer &#x22;[Machin Truc] is typing..." name="hide_typing_check"/>
<check_box label="N'accepter les IMs que de ses amis" name="InstantMessagesFriendsOnly"/>
<check_box label="Montrer le nom du groupe dans le chat" name="append_group_name_check"/>
<check_box label="Jouer le son typique pour le chat local" name="play_typing_sound_check"/>
<check_box label="Ne pas afficher les notifs. de log dans le chat" name="hide_notifications_in_chat_check"/>