Update and Sync Mutelist with upstream alchemy
Satisfies the feature request for mute toggle to display mute status Adds dynamic mute/unmute option to P2P IM dropdown. Translators should look into the changes made in this commit for: floater_chat_history.xml, floater_instant_message.xml, floater_instant_message_concisebuttons.xml panel_avatar.xml has been taken care of for spanish and french, although they should be looked into more closely by the translators. Cleanup and Sync in related places~ Removal of old static callbacks. Moves God Names logic into LFSimFeatureHandler Adds a custom function LLMuteList::hasMute() for quickly checking if a mute is in the internal set.
This commit is contained in:
@@ -952,10 +952,8 @@ P(regionResponder);
|
|||||||
P(remoteParcelRequestResponder);
|
P(remoteParcelRequestResponder);
|
||||||
P(requestAgentUpdateAppearance);
|
P(requestAgentUpdateAppearance);
|
||||||
P(responderIgnore);
|
P(responderIgnore);
|
||||||
P(sessionInviteResponder);
|
|
||||||
P(setDisplayNameResponder);
|
P(setDisplayNameResponder);
|
||||||
P2(simulatorFeaturesReceived, transfer_22s_connect_10s);
|
P2(simulatorFeaturesReceived, transfer_22s_connect_10s);
|
||||||
P(startConferenceChatResponder);
|
|
||||||
P2(startGroupVoteResponder, transfer_300s);
|
P2(startGroupVoteResponder, transfer_300s);
|
||||||
P(translationReceiver);
|
P(translationReceiver);
|
||||||
P(uploadModelPremissionsResponder);
|
P(uploadModelPremissionsResponder);
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include "llagent.h"
|
#include "llagent.h"
|
||||||
#include "llviewerregion.h"
|
#include "llviewerregion.h"
|
||||||
|
#include "llmutelist.h"
|
||||||
#include "hippogridmanager.h"
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
LFSimFeatureHandler::LFSimFeatureHandler()
|
LFSimFeatureHandler::LFSimFeatureHandler()
|
||||||
@@ -33,6 +34,7 @@ LFSimFeatureHandler::LFSimFeatureHandler()
|
|||||||
{
|
{
|
||||||
if (!gHippoGridManager->getCurrentGrid()->isSecondLife()) // Remove this line if we ever handle SecondLife sim features
|
if (!gHippoGridManager->getCurrentGrid()->isSecondLife()) // Remove this line if we ever handle SecondLife sim features
|
||||||
gAgent.addRegionChangedCallback(boost::bind(&LFSimFeatureHandler::handleRegionChange, this));
|
gAgent.addRegionChangedCallback(boost::bind(&LFSimFeatureHandler::handleRegionChange, this));
|
||||||
|
LLMuteList::instance().mGodLastNames.insert("Linden");
|
||||||
}
|
}
|
||||||
|
|
||||||
ExportPolicy LFSimFeatureHandler::exportPolicy() const
|
ExportPolicy LFSimFeatureHandler::exportPolicy() const
|
||||||
@@ -108,5 +110,33 @@ void LFSimFeatureHandler::setSupportedFeatures()
|
|||||||
mShoutRange.reset();
|
mShoutRange.reset();
|
||||||
mWhisperRange.reset();
|
mWhisperRange.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LLMuteList& mute_list(LLMuteList::instance());
|
||||||
|
mute_list.mGodLastNames.clear();
|
||||||
|
mute_list.mGodFullNames.clear();
|
||||||
|
|
||||||
|
if (info.has("god_names"))
|
||||||
|
{
|
||||||
|
const LLSD& god_names(info["god_names"]);
|
||||||
|
if (god_names.has("last_names"))
|
||||||
|
{
|
||||||
|
const LLSD& last_names(god_names["last_names"]);
|
||||||
|
|
||||||
|
for (LLSD::array_const_iterator it = last_names.beginArray(); it != last_names.endArray(); ++it)
|
||||||
|
mute_list.mGodLastNames.insert((*it).asString());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (god_names.has("full_names"))
|
||||||
|
{
|
||||||
|
const LLSD& full_names(god_names["full_names"]);
|
||||||
|
|
||||||
|
for (LLSD::array_const_iterator it = full_names.beginArray(); it != full_names.endArray(); ++it)
|
||||||
|
mute_list.mGodFullNames.insert((*it).asString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mute_list.mGodLastNames.insert("Linden");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,7 @@
|
|||||||
//
|
//
|
||||||
LLColor4 agent_chat_color(const LLUUID& id, const std::string&, bool local_chat = true);
|
LLColor4 agent_chat_color(const LLUUID& id, const std::string&, bool local_chat = true);
|
||||||
LLColor4 get_text_color(const LLChat& chat, bool from_im = false);
|
LLColor4 get_text_color(const LLChat& chat, bool from_im = false);
|
||||||
|
void show_log_browser(const std::string&, const std::string&);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Member Functions
|
// Member Functions
|
||||||
@@ -89,12 +90,10 @@ LLFloaterChat::LLFloaterChat(const LLSD& seed)
|
|||||||
// do not automatically open singleton floaters (as result of getInstance())
|
// do not automatically open singleton floaters (as result of getInstance())
|
||||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_chat_history.xml", &getFactoryMap(), /*no_open =*/false);
|
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_chat_history.xml", &getFactoryMap(), /*no_open =*/false);
|
||||||
|
|
||||||
childSetCommitCallback("show mutes",onClickToggleShowMute,this); //show mutes
|
LLTextEditor* history_editor_with_mute = getChild<LLTextEditor>("Chat History Editor with mute");
|
||||||
//childSetCommitCallback("translate chat",onClickToggleTranslateChat,this);
|
getChild<LLUICtrl>("show mutes")->setCommitCallback(boost::bind(&LLFloaterChat::onClickToggleShowMute, this, _2, getChild<LLTextEditor>("Chat History Editor"), history_editor_with_mute));
|
||||||
//childSetValue("translate chat", gSavedSettings.getBOOL("TranslateChat"));
|
history_editor_with_mute->setVisible(false);
|
||||||
childSetVisible("Chat History Editor with mute",FALSE);
|
getChild<LLUICtrl>("chat_history_open")->setCommitCallback(boost::bind(show_log_browser, "chat", "chat"));
|
||||||
childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this);
|
|
||||||
childSetAction("chat_history_open", onClickChatHistoryOpen, this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LLFloaterChat::~LLFloaterChat()
|
LLFloaterChat::~LLFloaterChat()
|
||||||
@@ -104,16 +103,7 @@ LLFloaterChat::~LLFloaterChat()
|
|||||||
|
|
||||||
void LLFloaterChat::draw()
|
void LLFloaterChat::draw()
|
||||||
{
|
{
|
||||||
// enable say and shout only when text available
|
mChatPanel->refresh();
|
||||||
|
|
||||||
mToggleActiveSpeakersBtn->setValue(mPanel->getVisible());
|
|
||||||
|
|
||||||
LLChatBar* chat_barp = mChatPanel;
|
|
||||||
if (chat_barp)
|
|
||||||
{
|
|
||||||
chat_barp->refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
mPanel->refreshSpeakers();
|
mPanel->refreshSpeakers();
|
||||||
LLFloater::draw();
|
LLFloater::draw();
|
||||||
}
|
}
|
||||||
@@ -122,22 +112,12 @@ BOOL LLFloaterChat::postBuild()
|
|||||||
{
|
{
|
||||||
mPanel = getChild<LLParticipantList>("active_speakers_panel");
|
mPanel = getChild<LLParticipantList>("active_speakers_panel");
|
||||||
|
|
||||||
LLChatBar* chat_barp = getChild<LLChatBar>("chat_panel", TRUE);
|
getChild<LLUICtrl>("toggle_active_speakers_btn")->setCommitCallback(boost::bind(&LLFloaterChat::onClickToggleActiveSpeakers, this, _2));
|
||||||
if (chat_barp)
|
|
||||||
{
|
|
||||||
chat_barp->setGestureCombo(getChild<LLComboBox>( "Gesture"));
|
|
||||||
}
|
|
||||||
|
|
||||||
mToggleActiveSpeakersBtn.connect(this,"toggle_active_speakers_btn");
|
|
||||||
mChatPanel.connect(this,"chat_panel");
|
mChatPanel.connect(this,"chat_panel");
|
||||||
|
mChatPanel->setGestureCombo(getChild<LLComboBox>( "Gesture"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLFloaterChat::onOpen()
|
|
||||||
{
|
|
||||||
gSavedSettings.setBOOL("ShowChatHistory", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// public virtual
|
// public virtual
|
||||||
void LLFloaterChat::onClose(bool app_quitting)
|
void LLFloaterChat::onClose(bool app_quitting)
|
||||||
{
|
{
|
||||||
@@ -169,8 +149,7 @@ void LLFloaterChat::onFocusReceived()
|
|||||||
if (getVisible() && chat_editor->getVisible())
|
if (getVisible() && chat_editor->getVisible())
|
||||||
{
|
{
|
||||||
gFocusMgr.setKeyboardFocus(chat_editor);
|
gFocusMgr.setKeyboardFocus(chat_editor);
|
||||||
|
chat_editor->setFocus(true);
|
||||||
chat_editor->setFocus(TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LLFloater::onFocusReceived();
|
LLFloater::onFocusReceived();
|
||||||
@@ -213,10 +192,15 @@ void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4&
|
|||||||
chat.mURL = llformat("secondlife:///app/agent/%s/about",chat.mFromID.asString().c_str());
|
chat.mURL = llformat("secondlife:///app/agent/%s/about",chat.mFromID.asString().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(chat.mSourceType == CHAT_SOURCE_OBJECT && !chat.mFromName.length())
|
if(chat.mSourceType == CHAT_SOURCE_OBJECT)
|
||||||
{
|
{
|
||||||
chat.mFromName = LLTrans::getString("Unnamed");
|
LLStringUtil::trim(chat.mFromName);
|
||||||
line = chat.mFromName + line;
|
if (!chat.mFromName.length())
|
||||||
|
{
|
||||||
|
chat.mFromName = LLTrans::getString("Unnamed");
|
||||||
|
line = chat.mFromName + line;
|
||||||
|
}
|
||||||
|
llassert_always(!chat.mURL.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
static const LLCachedControl<bool> italicize("LiruItalicizeActions");
|
static const LLCachedControl<bool> italicize("LiruItalicizeActions");
|
||||||
@@ -227,7 +211,7 @@ void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4&
|
|||||||
{
|
{
|
||||||
std::string start_line = line.substr(0, chat.mFromName.length() + 1);
|
std::string start_line = line.substr(0, chat.mFromName.length() + 1);
|
||||||
line = line.substr(chat.mFromName.length() + 1);
|
line = line.substr(chat.mFromName.length() + 1);
|
||||||
LLStyleSP sourceStyle = LLStyleMap::instance().lookup(chat.mFromID,chat.mURL);
|
LLStyleSP sourceStyle = LLStyleMap::instance().lookup(chat.mFromID, chat.mURL);
|
||||||
sourceStyle->mItalic = is_irc;
|
sourceStyle->mItalic = is_irc;
|
||||||
edit->appendStyledText(start_line, false, prepend_newline, sourceStyle);
|
edit->appendStyledText(start_line, false, prepend_newline, sourceStyle);
|
||||||
prepend_newline = false;
|
prepend_newline = false;
|
||||||
@@ -240,13 +224,13 @@ void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4&
|
|||||||
|
|
||||||
void log_chat_text(const LLChat& chat)
|
void log_chat_text(const LLChat& chat)
|
||||||
{
|
{
|
||||||
std::string histstr;
|
std::string histstr;
|
||||||
if (gSavedPerAccountSettings.getBOOL("LogChatTimestamp"))
|
if (gSavedPerAccountSettings.getBOOL("LogChatTimestamp"))
|
||||||
histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + chat.mText;
|
histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + chat.mText;
|
||||||
else
|
else
|
||||||
histstr = chat.mText;
|
histstr = chat.mText;
|
||||||
|
|
||||||
LLLogChat::saveHistory(std::string("chat"),histstr);
|
LLLogChat::saveHistory(std::string("chat"), histstr);
|
||||||
}
|
}
|
||||||
// static
|
// static
|
||||||
void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
|
void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
|
||||||
@@ -275,7 +259,7 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
|
|||||||
}
|
}
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
|
|
||||||
if ( gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file)
|
if (gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file)
|
||||||
{
|
{
|
||||||
log_chat_text(chat);
|
log_chat_text(chat);
|
||||||
}
|
}
|
||||||
@@ -298,8 +282,8 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
|
|||||||
|
|
||||||
// could flash the chat button in the status bar here. JC
|
// could flash the chat button in the status bar here. JC
|
||||||
LLFloaterChat* chat_floater = LLFloaterChat::getInstance(LLSD());
|
LLFloaterChat* chat_floater = LLFloaterChat::getInstance(LLSD());
|
||||||
LLViewerTextEditor* history_editor = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor");
|
LLViewerTextEditor* history_editor = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor");
|
||||||
LLViewerTextEditor* history_editor_with_mute = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor with mute");
|
LLViewerTextEditor* history_editor_with_mute = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor with mute");
|
||||||
|
|
||||||
history_editor->setParseHTML(TRUE);
|
history_editor->setParseHTML(TRUE);
|
||||||
history_editor_with_mute->setParseHTML(TRUE);
|
history_editor_with_mute->setParseHTML(TRUE);
|
||||||
@@ -347,72 +331,12 @@ void LLFloaterChat::setHistoryCursorAndScrollToEnd()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//static
|
|
||||||
void LLFloaterChat::onClickMute(void *data)
|
|
||||||
{
|
|
||||||
LLFloaterChat* self = (LLFloaterChat*)data;
|
|
||||||
|
|
||||||
LLComboBox* chatter_combo = self->getChild<LLComboBox>("chatter combobox");
|
|
||||||
|
|
||||||
const std::string& name = chatter_combo->getSimple();
|
|
||||||
LLUUID id = chatter_combo->getCurrentID();
|
|
||||||
|
|
||||||
if (name.empty()) return;
|
|
||||||
|
|
||||||
LLMute mute(id);
|
|
||||||
mute.setFromDisplayName(name);
|
|
||||||
LLMuteList::getInstance()->add(mute);
|
|
||||||
|
|
||||||
LLFloaterMute::showInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)
|
void LLFloaterChat::onClickToggleShowMute(bool show_mute, LLTextEditor* history_editor, LLTextEditor* history_editor_with_mute)
|
||||||
{
|
{
|
||||||
LLFloaterChat* floater = (LLFloaterChat*)data;
|
history_editor->setVisible(!show_mute);
|
||||||
|
history_editor_with_mute->setVisible(show_mute);
|
||||||
|
(show_mute ? history_editor_with_mute : history_editor)->setCursorAndScrollToEnd();
|
||||||
//LLCheckBoxCtrl*
|
|
||||||
BOOL show_mute = floater->getChild<LLCheckBoxCtrl>("show mutes")->get();
|
|
||||||
LLViewerTextEditor* history_editor = floater->getChild<LLViewerTextEditor>("Chat History Editor");
|
|
||||||
LLViewerTextEditor* history_editor_with_mute = floater->getChild<LLViewerTextEditor>("Chat History Editor with mute");
|
|
||||||
|
|
||||||
if (!history_editor || !history_editor_with_mute)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//BOOL show_mute = floater->mShowMuteCheckBox->get();
|
|
||||||
if (show_mute)
|
|
||||||
{
|
|
||||||
history_editor->setVisible(FALSE);
|
|
||||||
history_editor_with_mute->setVisible(TRUE);
|
|
||||||
history_editor_with_mute->setCursorAndScrollToEnd();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
history_editor->setVisible(TRUE);
|
|
||||||
history_editor_with_mute->setVisible(FALSE);
|
|
||||||
history_editor->setCursorAndScrollToEnd();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the "TranslateChat" pref after "translate chat" checkbox is toggled in
|
|
||||||
// the "Local Chat" floater.
|
|
||||||
//static
|
|
||||||
void LLFloaterChat::onClickToggleTranslateChat(LLUICtrl* caller, void *data)
|
|
||||||
{
|
|
||||||
LLFloaterChat* floater = (LLFloaterChat*)data;
|
|
||||||
|
|
||||||
BOOL translate_chat = floater->getChild<LLCheckBoxCtrl>("translate chat")->get();
|
|
||||||
gSavedSettings.setBOOL("TranslateChat", translate_chat);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the "translate chat" checkbox after the "TranslateChat" pref is set in
|
|
||||||
// some other place (e.g. prefs dialog).
|
|
||||||
//static
|
|
||||||
void LLFloaterChat::updateSettings()
|
|
||||||
{
|
|
||||||
BOOL translate_chat = gSavedSettings.getBOOL("TranslateChat");
|
|
||||||
LLFloaterChat::getInstance(LLSD())->getChild<LLCheckBoxCtrl>("translate chat")->set(translate_chat);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put a line of chat in all the right places
|
// Put a line of chat in all the right places
|
||||||
@@ -596,24 +520,24 @@ LLColor4 get_text_color(const LLChat& chat, bool from_im)
|
|||||||
//static
|
//static
|
||||||
void LLFloaterChat::loadHistory()
|
void LLFloaterChat::loadHistory()
|
||||||
{
|
{
|
||||||
LLLogChat::loadHistory(std::string("chat"), &chatFromLogFile, (void *)LLFloaterChat::getInstance(LLSD()));
|
LLLogChat::loadHistory("chat", &chatFromLogFile, (void*)LLFloaterChat::getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void LLFloaterChat::chatFromLogFile(LLLogChat::ELogLineType type , std::string line, void* userdata)
|
void LLFloaterChat::chatFromLogFile(LLLogChat::ELogLineType type, std::string line, void* userdata)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case LLLogChat::LOG_EMPTY:
|
case LLLogChat::LOG_EMPTY:
|
||||||
|
if (gSavedPerAccountSettings.getBOOL("LogChat"))
|
||||||
|
addChatHistory(static_cast<LLFloaterChat*>(userdata)->getString("IM_logging_string"), false);
|
||||||
|
break;
|
||||||
case LLLogChat::LOG_END:
|
case LLLogChat::LOG_END:
|
||||||
// *TODO: nice message from XML file here
|
if (gSavedPerAccountSettings.getBOOL("LogChat"))
|
||||||
|
addChatHistory(static_cast<LLFloaterChat*>(userdata)->getString("IM_end_log_string"), false);
|
||||||
break;
|
break;
|
||||||
case LLLogChat::LOG_LINE:
|
case LLLogChat::LOG_LINE:
|
||||||
{
|
addChatHistory(line, FALSE);
|
||||||
LLChat chat;
|
|
||||||
chat.mText = line;
|
|
||||||
addChatHistory(chat, FALSE);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// nothing
|
// nothing
|
||||||
@@ -630,29 +554,18 @@ void* LLFloaterChat::createSpeakersPanel(void* data)
|
|||||||
//static
|
//static
|
||||||
void* LLFloaterChat::createChatPanel(void* data)
|
void* LLFloaterChat::createChatPanel(void* data)
|
||||||
{
|
{
|
||||||
LLChatBar* chatp = new LLChatBar();
|
return new LLChatBar;
|
||||||
return chatp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
void LLFloaterChat::onClickToggleActiveSpeakers(void* userdata)
|
void LLFloaterChat::onClickToggleActiveSpeakers(const LLSD& val)
|
||||||
{
|
{
|
||||||
LLFloaterChat* self = (LLFloaterChat*)userdata;
|
|
||||||
|
|
||||||
// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e)
|
// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e)
|
||||||
self->childSetVisible("active_speakers_panel",
|
mPanel->setVisible(val && !gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
|
||||||
(!self->childIsVisible("active_speakers_panel")) && (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) );
|
|
||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
//self->childSetVisible("active_speakers_panel", !self->childIsVisible("active_speakers_panel"));
|
//mPanel->setVisible(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_log_browser(const std::string& name = "chat", const std::string& id = "chat");
|
|
||||||
|
|
||||||
// static
|
|
||||||
void LLFloaterChat::onClickChatHistoryOpen(void* userdata)
|
|
||||||
{
|
|
||||||
show_log_browser();
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
//static
|
||||||
bool LLFloaterChat::visible(LLFloater* instance, const LLSD& key)
|
bool LLFloaterChat::visible(LLFloater* instance, const LLSD& key)
|
||||||
|
|||||||
@@ -40,17 +40,9 @@
|
|||||||
|
|
||||||
#include "llfloater.h"
|
#include "llfloater.h"
|
||||||
#include "lllogchat.h"
|
#include "lllogchat.h"
|
||||||
class LLButton;
|
|
||||||
class LLChat;
|
class LLChat;
|
||||||
class LLComboBox;
|
|
||||||
class LLLineEditor;
|
|
||||||
class LLViewerTextEditor;
|
|
||||||
class LLMessageSystem;
|
|
||||||
class LLUUID;
|
|
||||||
class LLCheckBoxCtrl;
|
|
||||||
class LLParticipantList;
|
|
||||||
class LLLogChat;
|
|
||||||
class LLChatBar;
|
class LLChatBar;
|
||||||
|
class LLParticipantList;
|
||||||
|
|
||||||
class LLFloaterChat
|
class LLFloaterChat
|
||||||
: public LLFloater, public LLUISingleton<LLFloaterChat, LLFloaterChat>
|
: public LLFloater, public LLUISingleton<LLFloaterChat, LLFloaterChat>
|
||||||
@@ -61,13 +53,11 @@ public:
|
|||||||
|
|
||||||
virtual void draw();
|
virtual void draw();
|
||||||
virtual BOOL postBuild();
|
virtual BOOL postBuild();
|
||||||
virtual void onOpen();
|
|
||||||
virtual void onClose(bool app_quitting);
|
virtual void onClose(bool app_quitting);
|
||||||
virtual void onFocusReceived();
|
virtual void onFocusReceived();
|
||||||
virtual void handleVisibilityChange(BOOL cur_visibility);
|
virtual void handleVisibilityChange(BOOL cur_visibility);
|
||||||
virtual void setMinimized(BOOL);
|
virtual void setMinimized(BOOL);
|
||||||
void updateConsoleVisibility();
|
void updateConsoleVisibility();
|
||||||
void updateSettings();
|
|
||||||
|
|
||||||
static void setHistoryCursorAndScrollToEnd();
|
static void setHistoryCursorAndScrollToEnd();
|
||||||
|
|
||||||
@@ -80,12 +70,9 @@ public:
|
|||||||
|
|
||||||
static void triggerAlerts(const std::string& text);
|
static void triggerAlerts(const std::string& text);
|
||||||
|
|
||||||
static void onClickMute(void *data);
|
void onClickToggleShowMute(bool show_mute, class LLTextEditor* history_editor, LLTextEditor* history_editor_with_mute);
|
||||||
static void onClickToggleShowMute(LLUICtrl* caller, void *data);
|
void onClickToggleActiveSpeakers(const LLSD& val);
|
||||||
static void onClickToggleTranslateChat(LLUICtrl* caller, void *data);
|
static void chatFromLogFile(LLLogChat::ELogLineType type, std::string line, void* userdata);
|
||||||
static void onClickToggleActiveSpeakers(void* userdata);
|
|
||||||
static void onClickChatHistoryOpen(void* userdata);
|
|
||||||
static void chatFromLogFile(LLLogChat::ELogLineType type,std::string line, void* userdata);
|
|
||||||
static void loadHistory();
|
static void loadHistory();
|
||||||
static void* createSpeakersPanel(void* data);
|
static void* createSpeakersPanel(void* data);
|
||||||
static void* createChatPanel(void* data);
|
static void* createChatPanel(void* data);
|
||||||
@@ -100,7 +87,6 @@ public:
|
|||||||
|
|
||||||
BOOL focusFirstItem(BOOL prefer_text_fields = FALSE, BOOL focus_flash = TRUE );
|
BOOL focusFirstItem(BOOL prefer_text_fields = FALSE, BOOL focus_flash = TRUE );
|
||||||
|
|
||||||
CachedUICtrl<LLButton> mToggleActiveSpeakersBtn;
|
|
||||||
CachedUICtrl<LLChatBar> mChatPanel;
|
CachedUICtrl<LLChatBar> mChatPanel;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,6 @@
|
|||||||
// [/RLVa:KB]
|
// [/RLVa:KB]
|
||||||
|
|
||||||
class AIHTTPTimeoutPolicy;
|
class AIHTTPTimeoutPolicy;
|
||||||
extern AIHTTPTimeoutPolicy startConferenceChatResponder_timeout;
|
|
||||||
extern AIHTTPTimeoutPolicy sessionInviteResponder_timeout;
|
extern AIHTTPTimeoutPolicy sessionInviteResponder_timeout;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -172,7 +171,7 @@ public:
|
|||||||
mAgents = agents_to_invite;
|
mAgents = agents_to_invite;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*virtual*/ void httpFailure(void)
|
/*virtual*/ void httpFailure()
|
||||||
{
|
{
|
||||||
//try an "old school" way.
|
//try an "old school" way.
|
||||||
if ( mStatus == 400 )
|
if ( mStatus == 400 )
|
||||||
@@ -191,9 +190,7 @@ public:
|
|||||||
//and it is not worth the effort switching over all
|
//and it is not worth the effort switching over all
|
||||||
//the possible different language translations
|
//the possible different language translations
|
||||||
}
|
}
|
||||||
|
/*virtual*/ char const* getName() const { return "LLStartConferenceChatResponder"; }
|
||||||
/*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return startConferenceChatResponder_timeout; }
|
|
||||||
/*virtual*/ char const* getName(void) const { return "LLStartConferenceChatResponder"; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LLUUID mTempSessionID;
|
LLUUID mTempSessionID;
|
||||||
@@ -347,6 +344,7 @@ LLFloaterIMPanel::LLFloaterIMPanel(
|
|||||||
case IM_SESSION_P2P_INVITE:
|
case IM_SESSION_P2P_INVITE:
|
||||||
mVoiceChannel = new LLVoiceChannelP2P(mSessionUUID, mLogLabel, mOtherParticipantUUID);
|
mVoiceChannel = new LLVoiceChannelP2P(mSessionUUID, mLogLabel, mOtherParticipantUUID);
|
||||||
LLAvatarTracker::instance().addParticularFriendObserver(mOtherParticipantUUID, this);
|
LLAvatarTracker::instance().addParticularFriendObserver(mOtherParticipantUUID, this);
|
||||||
|
LLMuteList::instance().addObserver(this);
|
||||||
mDing = gSavedSettings.getBOOL("LiruNewMessageSoundIMsOn");
|
mDing = gSavedSettings.getBOOL("LiruNewMessageSoundIMsOn");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -418,6 +416,7 @@ void LLFloaterIMPanel::onAvatarNameLookup(const LLAvatarName& avatar_name)
|
|||||||
LLFloaterIMPanel::~LLFloaterIMPanel()
|
LLFloaterIMPanel::~LLFloaterIMPanel()
|
||||||
{
|
{
|
||||||
LLAvatarTracker::instance().removeParticularFriendObserver(mOtherParticipantUUID, this);
|
LLAvatarTracker::instance().removeParticularFriendObserver(mOtherParticipantUUID, this);
|
||||||
|
LLMuteList::instance().removeObserver(this);
|
||||||
|
|
||||||
delete mSpeakers;
|
delete mSpeakers;
|
||||||
mSpeakers = NULL;
|
mSpeakers = NULL;
|
||||||
@@ -463,6 +462,13 @@ void LLFloaterIMPanel::changed(U32 mask)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// virtual
|
||||||
|
void LLFloaterIMPanel::onChangeDetailed(const LLMute& mute)
|
||||||
|
{
|
||||||
|
if (mute.mID == mOtherParticipantUUID)
|
||||||
|
rebuildDynamics(getChild<LLComboBox>("instant_message_flyout"));
|
||||||
|
}
|
||||||
|
|
||||||
// virtual
|
// virtual
|
||||||
BOOL LLFloaterIMPanel::postBuild()
|
BOOL LLFloaterIMPanel::postBuild()
|
||||||
{
|
{
|
||||||
@@ -638,20 +644,14 @@ void LLFloaterIMPanel::draw()
|
|||||||
class LLSessionInviteResponder : public LLHTTPClient::ResponderIgnoreBody
|
class LLSessionInviteResponder : public LLHTTPClient::ResponderIgnoreBody
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LLSessionInviteResponder(const LLUUID& session_id)
|
LLSessionInviteResponder(const LLUUID& session_id) : mSessionID(session_id) {}
|
||||||
{
|
|
||||||
mSessionID = session_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*virtual*/ void httpFailure(void)
|
/*virtual*/ void httpFailure()
|
||||||
{
|
{
|
||||||
llwarns << "Error inviting all agents to session [status:"
|
llwarns << "Error inviting all agents to session [status:" << mStatus << "]: " << mReason << llendl;
|
||||||
<< mStatus << "]: " << mReason << llendl;
|
|
||||||
//throw something back to the viewer here?
|
//throw something back to the viewer here?
|
||||||
}
|
}
|
||||||
|
/*virtual*/ char const* getName() const { return "LLSessionInviteResponder"; }
|
||||||
/*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return sessionInviteResponder_timeout; }
|
|
||||||
/*virtual*/ char const* getName(void) const { return "LLSessionInviteResponder"; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LLUUID mSessionID;
|
LLUUID mSessionID;
|
||||||
@@ -960,7 +960,7 @@ void LLFloaterIMPanel::removeDynamics(LLComboBox* flyout)
|
|||||||
flyout->remove(mDing ? getString("ding on") : getString("ding off"));
|
flyout->remove(mDing ? getString("ding on") : getString("ding off"));
|
||||||
flyout->remove(mRPMode ? getString("rp mode on") : getString("rp mode off"));
|
flyout->remove(mRPMode ? getString("rp mode on") : getString("rp mode off"));
|
||||||
flyout->remove(LLAvatarActions::isFriend(mOtherParticipantUUID) ? getString("remove friend") : getString("add friend"));
|
flyout->remove(LLAvatarActions::isFriend(mOtherParticipantUUID) ? getString("remove friend") : getString("add friend"));
|
||||||
//flyout->remove(LLAvatarActions::isBlocked(mOtherParticipantUUID) ? getString("unmute") : getString("mute"));
|
flyout->remove(LLAvatarActions::isBlocked(mOtherParticipantUUID) ? getString("unmute") : getString("mute"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLFloaterIMPanel::addDynamics(LLComboBox* flyout)
|
void LLFloaterIMPanel::addDynamics(LLComboBox* flyout)
|
||||||
@@ -968,7 +968,7 @@ void LLFloaterIMPanel::addDynamics(LLComboBox* flyout)
|
|||||||
flyout->add(mDing ? getString("ding on") : getString("ding off"), 6);
|
flyout->add(mDing ? getString("ding on") : getString("ding off"), 6);
|
||||||
flyout->add(mRPMode ? getString("rp mode on") : getString("rp mode off"), 7);
|
flyout->add(mRPMode ? getString("rp mode on") : getString("rp mode off"), 7);
|
||||||
flyout->add(LLAvatarActions::isFriend(mOtherParticipantUUID) ? getString("remove friend") : getString("add friend"), 8);
|
flyout->add(LLAvatarActions::isFriend(mOtherParticipantUUID) ? getString("remove friend") : getString("add friend"), 8);
|
||||||
//flyout->add(LLAvatarActions::isBlocked(mOtherParticipantUUID) ? getString("unmute") : getString("mute"), 9);
|
flyout->add(LLAvatarActions::isBlocked(mOtherParticipantUUID) ? getString("unmute") : getString("mute"), 9);
|
||||||
}
|
}
|
||||||
|
|
||||||
void copy_profile_uri(const LLUUID& id, bool group = false);
|
void copy_profile_uri(const LLUUID& id, bool group = false);
|
||||||
@@ -997,7 +997,7 @@ void LLFloaterIMPanel::onFlyoutCommit(LLComboBox* flyout, const LLSD& value)
|
|||||||
if (option == 6) mDing = !mDing;
|
if (option == 6) mDing = !mDing;
|
||||||
else if (option == 7) mRPMode = !mRPMode;
|
else if (option == 7) mRPMode = !mRPMode;
|
||||||
else if (option == 8) LLAvatarActions::isFriend(mOtherParticipantUUID) ? LLAvatarActions::removeFriendDialog(mOtherParticipantUUID) : LLAvatarActions::requestFriendshipDialog(mOtherParticipantUUID);
|
else if (option == 8) LLAvatarActions::isFriend(mOtherParticipantUUID) ? LLAvatarActions::removeFriendDialog(mOtherParticipantUUID) : LLAvatarActions::requestFriendshipDialog(mOtherParticipantUUID);
|
||||||
//else if (option == 9) LLAvatarActions::toggleBlock(mOtherParticipantUUID);
|
else if (option == 9) LLAvatarActions::toggleBlock(mOtherParticipantUUID);
|
||||||
|
|
||||||
// Last add them back
|
// Last add them back
|
||||||
addDynamics(flyout);
|
addDynamics(flyout);
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "llcallingcard.h"
|
#include "llcallingcard.h"
|
||||||
#include "llfloater.h"
|
#include "llfloater.h"
|
||||||
#include "lllogchat.h"
|
#include "lllogchat.h"
|
||||||
|
#include "llmutelist.h"
|
||||||
|
|
||||||
class LLAvatarName;
|
class LLAvatarName;
|
||||||
class LLIMSpeakerMgr;
|
class LLIMSpeakerMgr;
|
||||||
@@ -46,7 +47,7 @@ class LLParticipantList;
|
|||||||
class LLViewerTextEditor;
|
class LLViewerTextEditor;
|
||||||
class LLVoiceChannel;
|
class LLVoiceChannel;
|
||||||
|
|
||||||
class LLFloaterIMPanel : public LLFloater, public LLFriendObserver
|
class LLFloaterIMPanel : public LLFloater, public LLFriendObserver, public LLMuteListObserver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -65,6 +66,8 @@ public:
|
|||||||
void onAvatarNameLookup(const LLAvatarName& avatar_name);
|
void onAvatarNameLookup(const LLAvatarName& avatar_name);
|
||||||
|
|
||||||
/*virtual*/ void changed(U32 mask); // From LLFriendObserver, check friend status
|
/*virtual*/ void changed(U32 mask); // From LLFriendObserver, check friend status
|
||||||
|
/*virtual*/ void onChange() {}
|
||||||
|
/*virtual*/ void onChangeDetailed(const LLMute& mute); // From LLMuteListObserver, check for mute status changes for OtherParticipant
|
||||||
/*virtual*/ BOOL postBuild();
|
/*virtual*/ BOOL postBuild();
|
||||||
|
|
||||||
// Check typing timeout timer.
|
// Check typing timeout timer.
|
||||||
|
|||||||
@@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
#include "llmutelist.h"
|
#include "llmutelist.h"
|
||||||
|
|
||||||
|
#include "pipeline.h"
|
||||||
|
|
||||||
#include <boost/tokenizer.hpp>
|
#include <boost/tokenizer.hpp>
|
||||||
|
|
||||||
#include "lldispatcher.h"
|
#include "lldispatcher.h"
|
||||||
@@ -62,9 +64,8 @@
|
|||||||
#include "llimpanel.h"
|
#include "llimpanel.h"
|
||||||
#include "llimview.h"
|
#include "llimview.h"
|
||||||
#include "llnotifications.h"
|
#include "llnotifications.h"
|
||||||
#include "lluistring.h"
|
|
||||||
#include "llviewerobject.h"
|
|
||||||
#include "llviewerobjectlist.h"
|
#include "llviewerobjectlist.h"
|
||||||
|
#include "lltrans.h"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
@@ -105,12 +106,6 @@ static LLDispatchEmptyMuteList sDispatchEmptyMuteList;
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// LLMute()
|
// LLMute()
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
const char BY_NAME_SUFFIX[] = " (by name)";
|
|
||||||
const char AGENT_SUFFIX[] = " (resident)";
|
|
||||||
const char OBJECT_SUFFIX[] = " (object)";
|
|
||||||
const char GROUP_SUFFIX[] = " (group)";
|
|
||||||
const char EXTERNAL_SUFFIX[] = " (avaline)";
|
|
||||||
|
|
||||||
|
|
||||||
LLMute::LLMute(const LLUUID& id, const std::string& name, EType type, U32 flags)
|
LLMute::LLMute(const LLUUID& id, const std::string& name, EType type, U32 flags)
|
||||||
: mID(id),
|
: mID(id),
|
||||||
@@ -136,79 +131,29 @@ LLMute::LLMute(const LLUUID& id, const std::string& name, EType type, U32 flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string LLMute::getDisplayName() const
|
std::string LLMute::getDisplayType() const
|
||||||
{
|
{
|
||||||
std::string name_with_suffix = mName;
|
|
||||||
switch (mType)
|
switch (mType)
|
||||||
{
|
{
|
||||||
case BY_NAME:
|
case BY_NAME:
|
||||||
default:
|
default:
|
||||||
name_with_suffix += BY_NAME_SUFFIX;
|
return LLTrans::getString("MuteByName");
|
||||||
break;
|
break;
|
||||||
case AGENT:
|
case AGENT:
|
||||||
name_with_suffix += AGENT_SUFFIX;
|
return LLTrans::getString("MuteAgent");
|
||||||
break;
|
break;
|
||||||
case OBJECT:
|
case OBJECT:
|
||||||
name_with_suffix += OBJECT_SUFFIX;
|
return LLTrans::getString("MuteObject");
|
||||||
break;
|
break;
|
||||||
case GROUP:
|
case GROUP:
|
||||||
name_with_suffix += GROUP_SUFFIX;
|
return LLTrans::getString("MuteGroup");
|
||||||
break;
|
break;
|
||||||
case EXTERNAL:
|
case EXTERNAL:
|
||||||
name_with_suffix += EXTERNAL_SUFFIX;
|
return LLTrans::getString("MuteExternal");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return name_with_suffix;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLMute::setFromDisplayName(const std::string& display_name)
|
|
||||||
{
|
|
||||||
size_t pos = 0;
|
|
||||||
mName = display_name;
|
|
||||||
|
|
||||||
pos = mName.rfind(GROUP_SUFFIX);
|
|
||||||
if (pos != std::string::npos)
|
|
||||||
{
|
|
||||||
mName.erase(pos);
|
|
||||||
mType = GROUP;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos = mName.rfind(OBJECT_SUFFIX);
|
|
||||||
if (pos != std::string::npos)
|
|
||||||
{
|
|
||||||
mName.erase(pos);
|
|
||||||
mType = OBJECT;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos = mName.rfind(AGENT_SUFFIX);
|
|
||||||
if (pos != std::string::npos)
|
|
||||||
{
|
|
||||||
mName.erase(pos);
|
|
||||||
mType = AGENT;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos = mName.rfind(BY_NAME_SUFFIX);
|
|
||||||
if (pos != std::string::npos)
|
|
||||||
{
|
|
||||||
mName.erase(pos);
|
|
||||||
mType = BY_NAME;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos = mName.rfind(EXTERNAL_SUFFIX);
|
|
||||||
if (pos != std::string::npos)
|
|
||||||
{
|
|
||||||
mName.erase(pos);
|
|
||||||
mType = EXTERNAL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
llwarns << "Unable to set mute from display name " << display_name << llendl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
LLMuteList* LLMuteList::getInstance()
|
LLMuteList* LLMuteList::getInstance()
|
||||||
@@ -232,9 +177,6 @@ LLMuteList::LLMuteList() :
|
|||||||
mIsLoaded(FALSE)
|
mIsLoaded(FALSE)
|
||||||
{
|
{
|
||||||
gGenericDispatcher.addHandler("emptymutelist", &sDispatchEmptyMuteList);
|
gGenericDispatcher.addHandler("emptymutelist", &sDispatchEmptyMuteList);
|
||||||
|
|
||||||
checkNewRegion();
|
|
||||||
gAgent.addRegionChangedCallback(boost::bind(&LLMuteList::checkNewRegion, this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -327,6 +269,7 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
|
|||||||
llinfos << "Muting by name " << mute.mName << llendl;
|
llinfos << "Muting by name " << mute.mName << llendl;
|
||||||
updateAdd(mute);
|
updateAdd(mute);
|
||||||
notifyObservers();
|
notifyObservers();
|
||||||
|
notifyObserversDetailed(mute);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -375,6 +318,7 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
|
|||||||
llinfos << "Muting " << localmute.mName << " id " << localmute.mID << " flags " << localmute.mFlags << llendl;
|
llinfos << "Muting " << localmute.mName << " id " << localmute.mID << " flags " << localmute.mFlags << llendl;
|
||||||
updateAdd(localmute);
|
updateAdd(localmute);
|
||||||
notifyObservers();
|
notifyObservers();
|
||||||
|
notifyObserversDetailed(localmute);
|
||||||
if(!(localmute.mFlags & LLMute::flagParticles))
|
if(!(localmute.mFlags & LLMute::flagParticles))
|
||||||
{
|
{
|
||||||
//Kill all particle systems owned by muted task
|
//Kill all particle systems owned by muted task
|
||||||
@@ -472,19 +416,23 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Must be after erase.
|
// Must be after erase.
|
||||||
|
notifyObserversDetailed(localmute);
|
||||||
setLoaded(); // why is this here? -MG
|
setLoaded(); // why is this here? -MG
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Clean up any legacy mutes
|
|
||||||
string_set_t::iterator legacy_it = mLegacyMutes.find(mute.mName);
|
|
||||||
if (legacy_it != mLegacyMutes.end())
|
|
||||||
{
|
{
|
||||||
// Database representation of legacy mute is UUID null.
|
// Clean up any legacy mutes
|
||||||
LLMute mute(LLUUID::null, *legacy_it, LLMute::BY_NAME);
|
string_set_t::iterator legacy_it = mLegacyMutes.find(mute.mName);
|
||||||
updateRemove(mute);
|
if (legacy_it != mLegacyMutes.end())
|
||||||
mLegacyMutes.erase(legacy_it);
|
{
|
||||||
// Must be after erase.
|
// Database representation of legacy mute is UUID null.
|
||||||
setLoaded(); // why is this here? -MG
|
LLMute mute(LLUUID::null, *legacy_it, LLMute::BY_NAME);
|
||||||
|
updateRemove(mute);
|
||||||
|
mLegacyMutes.erase(legacy_it);
|
||||||
|
// Must be after erase.
|
||||||
|
notifyObserversDetailed(mute);
|
||||||
|
setLoaded(); // why is this here? -MG
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return found;
|
return found;
|
||||||
@@ -537,15 +485,13 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& full_na
|
|||||||
|
|
||||||
if (reason == LLMuteList::AR_IM)
|
if (reason == LLMuteList::AR_IM)
|
||||||
{
|
{
|
||||||
LLFloaterIMPanel *timp = gIMMgr->findFloaterBySession(agent_id);
|
if (LLFloaterIMPanel* timp = gIMMgr->findFloaterBySession(agent_id))
|
||||||
if (timp)
|
|
||||||
{
|
{
|
||||||
timp->addHistoryLine(message);
|
timp->addHistoryLine(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LLChat auto_chat(message);
|
LLFloaterChat::addChat(message, FALSE, FALSE);
|
||||||
LLFloaterChat::addChat(auto_chat, FALSE, FALSE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -701,14 +647,10 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c
|
|||||||
LLViewerObject* mute_object = get_object_to_mute_from_id(id);
|
LLViewerObject* mute_object = get_object_to_mute_from_id(id);
|
||||||
LLUUID id_to_check = (mute_object) ? mute_object->getID() : id;
|
LLUUID id_to_check = (mute_object) ? mute_object->getID() : id;
|
||||||
|
|
||||||
|
if (id_to_check == gAgentID) return false; // Can't mute self.
|
||||||
|
|
||||||
// don't need name or type for lookup
|
// don't need name or type for lookup
|
||||||
LLMute mute(id_to_check);
|
LLMute mute(id_to_check);
|
||||||
// Can't mute self.
|
|
||||||
if (mute.mID == gAgent.getID() && !mute_object)
|
|
||||||
{
|
|
||||||
getInstance()->remove(mute);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
mute_set_t::const_iterator mute_it = mMutes.find(mute);
|
mute_set_t::const_iterator mute_it = mMutes.find(mute);
|
||||||
if (mute_it != mMutes.end())
|
if (mute_it != mMutes.end())
|
||||||
{
|
{
|
||||||
@@ -721,7 +663,8 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c
|
|||||||
}
|
}
|
||||||
|
|
||||||
// empty names can't be legacy-muted
|
// empty names can't be legacy-muted
|
||||||
if (name.empty()) return FALSE;
|
bool avatar = mute_object && mute_object->isAvatar();
|
||||||
|
if (name.empty() || avatar) return FALSE;
|
||||||
|
|
||||||
// Look in legacy pile
|
// Look in legacy pile
|
||||||
string_set_t::const_iterator legacy_it = mLegacyMutes.find(name);
|
string_set_t::const_iterator legacy_it = mLegacyMutes.find(name);
|
||||||
@@ -849,52 +792,15 @@ void LLMuteList::notifyObservers()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLMuteList::checkNewRegion()
|
void LLMuteList::notifyObserversDetailed(const LLMute& mute)
|
||||||
{
|
{
|
||||||
LLViewerRegion* regionp = gAgent.getRegion();
|
for (observer_set_t::iterator it = mObservers.begin();
|
||||||
if (!regionp) return;
|
it != mObservers.end();
|
||||||
|
)
|
||||||
if (regionp->getFeaturesReceived())
|
|
||||||
{
|
{
|
||||||
parseSimulatorFeatures();
|
LLMuteListObserver* observer = *it;
|
||||||
}
|
observer->onChangeDetailed(mute);
|
||||||
else
|
// In case onChange() deleted an entry.
|
||||||
{
|
it = mObservers.upper_bound(observer);
|
||||||
regionp->setFeaturesReceivedCallback(boost::bind(&LLMuteList::parseSimulatorFeatures, this));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void LLMuteList::parseSimulatorFeatures()
|
|
||||||
{
|
|
||||||
LLViewerRegion* regionp = gAgent.getRegion();
|
|
||||||
if (!regionp) return;
|
|
||||||
|
|
||||||
LLSD info;
|
|
||||||
regionp->getSimulatorFeatures(info);
|
|
||||||
|
|
||||||
mGodLastNames.clear();
|
|
||||||
mGodFullNames.clear();
|
|
||||||
|
|
||||||
if (info.has("god_names"))
|
|
||||||
{
|
|
||||||
if (info["god_names"].has("last_names"))
|
|
||||||
{
|
|
||||||
LLSD godNames = info["god_names"]["last_names"];
|
|
||||||
|
|
||||||
for (LLSD::array_iterator godNames_it = godNames.beginArray(); godNames_it != godNames.endArray(); ++godNames_it)
|
|
||||||
mGodLastNames.insert((*godNames_it).asString());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (info["god_names"].has("full_names"))
|
|
||||||
{
|
|
||||||
LLSD godNames = info["god_names"]["full_names"];
|
|
||||||
|
|
||||||
for (LLSD::array_iterator godNames_it = godNames.beginArray(); godNames_it != godNames.endArray(); ++godNames_it)
|
|
||||||
mGodFullNames.insert((*godNames_it).asString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else // Just use Linden
|
|
||||||
{
|
|
||||||
mGodLastNames.insert("Linden");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,18 +64,12 @@ public:
|
|||||||
|
|
||||||
LLMute(const LLUUID& id, const std::string& name = std::string(), EType type = BY_NAME, U32 flags = 0);
|
LLMute(const LLUUID& id, const std::string& name = std::string(), EType type = BY_NAME, U32 flags = 0);
|
||||||
|
|
||||||
// Returns name + suffix based on type
|
// Returns localized type name of muted item
|
||||||
// For example: "James Tester (resident)"
|
std::string getDisplayType() const;
|
||||||
std::string getDisplayName() const;
|
|
||||||
|
|
||||||
// Converts a UI name into just the agent or object name
|
|
||||||
// For example: "James Tester (resident)" sets the name to "James Tester"
|
|
||||||
// and the type to AGENT.
|
|
||||||
void setFromDisplayName(const std::string& display_name);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LLUUID mID; // agent or object id
|
LLUUID mID; // agent or object id
|
||||||
std::string mName; // agent or object name
|
std::string mName; // agent or object name, does not store last name "Resident"
|
||||||
EType mType; // needed for UI display of existing mutes
|
EType mType; // needed for UI display of existing mutes
|
||||||
U32 mFlags; // flags pertaining to this mute entry
|
U32 mFlags; // flags pertaining to this mute entry
|
||||||
};
|
};
|
||||||
@@ -119,6 +113,9 @@ public:
|
|||||||
BOOL isLinden(const std::string& name) const;
|
BOOL isLinden(const std::string& name) const;
|
||||||
bool isLinden(const LLUUID& id) const;
|
bool isLinden(const LLUUID& id) const;
|
||||||
|
|
||||||
|
// <singu/> Quick way to check if LLMute is in the set
|
||||||
|
bool hasMute(const LLMute& mute) const { return mMutes.find(mute) != mMutes.end(); }
|
||||||
|
|
||||||
BOOL isLoaded() const { return mIsLoaded; }
|
BOOL isLoaded() const { return mIsLoaded; }
|
||||||
|
|
||||||
std::vector<LLMute> getMutes() const;
|
std::vector<LLMute> getMutes() const;
|
||||||
@@ -135,6 +132,7 @@ private:
|
|||||||
|
|
||||||
void setLoaded();
|
void setLoaded();
|
||||||
void notifyObservers();
|
void notifyObservers();
|
||||||
|
void notifyObserversDetailed(const LLMute &mute);
|
||||||
|
|
||||||
void updateAdd(const LLMute& mute);
|
void updateAdd(const LLMute& mute);
|
||||||
void updateRemove(const LLMute& mute);
|
void updateRemove(const LLMute& mute);
|
||||||
@@ -145,9 +143,6 @@ private:
|
|||||||
|
|
||||||
static void onFileMuteList(void** user_data, S32 code, LLExtStat ext_status);
|
static void onFileMuteList(void** user_data, S32 code, LLExtStat ext_status);
|
||||||
|
|
||||||
void checkNewRegion();
|
|
||||||
void parseSimulatorFeatures();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct compare_by_name
|
struct compare_by_name
|
||||||
{
|
{
|
||||||
@@ -182,6 +177,7 @@ private:
|
|||||||
|
|
||||||
friend class LLDispatchEmptyMuteList;
|
friend class LLDispatchEmptyMuteList;
|
||||||
|
|
||||||
|
friend class LFSimFeatureHandler;
|
||||||
std::set<std::string> mGodLastNames;
|
std::set<std::string> mGodLastNames;
|
||||||
std::set<std::string> mGodFullNames;
|
std::set<std::string> mGodFullNames;
|
||||||
};
|
};
|
||||||
@@ -191,6 +187,7 @@ class LLMuteListObserver
|
|||||||
public:
|
public:
|
||||||
virtual ~LLMuteListObserver() { }
|
virtual ~LLMuteListObserver() { }
|
||||||
virtual void onChange() = 0;
|
virtual void onChange() = 0;
|
||||||
|
virtual void onChangeDetailed(const LLMute& ) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,11 @@ void LLPanelAvatarTab::setAvatarID(const LLUUID& avatar_id)
|
|||||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarID, this);
|
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarID, this);
|
||||||
mAvatarID = avatar_id;
|
mAvatarID = avatar_id;
|
||||||
if (mAvatarID.notNull())
|
if (mAvatarID.notNull())
|
||||||
|
{
|
||||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(mAvatarID, this);
|
LLAvatarPropertiesProcessor::getInstance()->addObserver(mAvatarID, this);
|
||||||
|
if (LLUICtrl* ctrl = findChild<LLUICtrl>("Mute"))
|
||||||
|
ctrl->setValue(LLMuteList::instance().isMuted(mAvatarID));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -130,11 +134,13 @@ LLPanelAvatarSecondLife::LLPanelAvatarSecondLife(const std::string& name,
|
|||||||
: LLPanelAvatarTab(name, rect, panel_avatar),
|
: LLPanelAvatarTab(name, rect, panel_avatar),
|
||||||
mPartnerID()
|
mPartnerID()
|
||||||
{
|
{
|
||||||
|
LLMuteList::instance().addObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
LLPanelAvatarSecondLife::~LLPanelAvatarSecondLife()
|
LLPanelAvatarSecondLife::~LLPanelAvatarSecondLife()
|
||||||
{
|
{
|
||||||
mCacheConnection.disconnect();
|
mCacheConnection.disconnect();
|
||||||
|
LLMuteList::instance().removeObserver(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLPanelAvatarSecondLife::refresh()
|
void LLPanelAvatarSecondLife::refresh()
|
||||||
@@ -278,6 +284,12 @@ void LLPanelAvatarSecondLife::processProperties(void* data, EAvatarProcessorType
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPanelAvatarSecondLife::onChangeDetailed(const LLMute& mute)
|
||||||
|
{
|
||||||
|
if (mute.mID != mAvatarID) return;
|
||||||
|
getChild<LLUICtrl>("Mute")->setValue(LLMuteList::instance().hasMute(mute));
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// enableControls()
|
// enableControls()
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
#include "lluuid.h"
|
#include "lluuid.h"
|
||||||
#include "llmediactrl.h"
|
#include "llmediactrl.h"
|
||||||
#include "llavatarpropertiesprocessor.h"
|
#include "llavatarpropertiesprocessor.h"
|
||||||
|
#include "llmutelist.h"
|
||||||
|
|
||||||
class LLAvatarName;
|
class LLAvatarName;
|
||||||
class LLCheckBoxCtrl;
|
class LLCheckBoxCtrl;
|
||||||
@@ -99,6 +100,7 @@ public:
|
|||||||
|
|
||||||
class LLPanelAvatarSecondLife
|
class LLPanelAvatarSecondLife
|
||||||
: public LLPanelAvatarTab
|
: public LLPanelAvatarTab
|
||||||
|
, public LLMuteListObserver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LLPanelAvatarSecondLife(const std::string& name, const LLRect &rect, LLPanelAvatar* panel_avatar );
|
LLPanelAvatarSecondLife(const std::string& name, const LLRect &rect, LLPanelAvatar* panel_avatar );
|
||||||
@@ -108,6 +110,8 @@ public:
|
|||||||
/*virtual*/ void refresh();
|
/*virtual*/ void refresh();
|
||||||
|
|
||||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||||
|
/*virtual*/ void onChange() {}
|
||||||
|
/*virtual*/ void onChangeDetailed(const LLMute& mute);
|
||||||
|
|
||||||
void onClickImage();
|
void onClickImage();
|
||||||
void onClickFriends();
|
void onClickFriends();
|
||||||
|
|||||||
@@ -77,7 +77,6 @@
|
|||||||
#include "llworldmapview.h"
|
#include "llworldmapview.h"
|
||||||
#include "llnetmap.h"
|
#include "llnetmap.h"
|
||||||
#include "llrender.h"
|
#include "llrender.h"
|
||||||
#include "llfloaterchat.h"
|
|
||||||
#include "aistatemachine.h"
|
#include "aistatemachine.h"
|
||||||
#include "aithreadsafe.h"
|
#include "aithreadsafe.h"
|
||||||
#include "lldrawpoolbump.h"
|
#include "lldrawpoolbump.h"
|
||||||
@@ -585,18 +584,6 @@ bool handleVelocityInterpolate(const LLSD& newvalue)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool handleTranslateChatPrefsChanged(const LLSD& newvalue)
|
|
||||||
{
|
|
||||||
LLFloaterChat* floaterp = LLFloaterChat::getInstance();
|
|
||||||
|
|
||||||
if(floaterp)
|
|
||||||
{
|
|
||||||
// update "translate chat" pref in "Local Chat" floater
|
|
||||||
floaterp->updateSettings();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool handleCloudSettingsChanged(const LLSD& newvalue)
|
bool handleCloudSettingsChanged(const LLSD& newvalue)
|
||||||
{
|
{
|
||||||
bool bCloudsEnabled = gSavedSettings.getBOOL("CloudsEnabled");
|
bool bCloudsEnabled = gSavedSettings.getBOOL("CloudsEnabled");
|
||||||
@@ -795,7 +782,6 @@ void settings_setup_listeners()
|
|||||||
gSavedSettings.getControl("AudioLevelMic")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
|
gSavedSettings.getControl("AudioLevelMic")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
|
||||||
gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
|
gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
|
||||||
gSavedSettings.getControl("VelocityInterpolate")->getSignal()->connect(boost::bind(&handleVelocityInterpolate, _2));
|
gSavedSettings.getControl("VelocityInterpolate")->getSignal()->connect(boost::bind(&handleVelocityInterpolate, _2));
|
||||||
gSavedSettings.getControl("TranslateChat")->getSignal()->connect(boost::bind(&handleTranslateChatPrefsChanged, _2));
|
|
||||||
gSavedSettings.getControl("StateMachineMaxTime")->getSignal()->connect(boost::bind(&handleStateMachineMaxTimeChanged, _2));
|
gSavedSettings.getControl("StateMachineMaxTime")->getSignal()->connect(boost::bind(&handleStateMachineMaxTimeChanged, _2));
|
||||||
|
|
||||||
gSavedSettings.getControl("CloudsEnabled")->getSignal()->connect(boost::bind(&handleCloudSettingsChanged, _2));
|
gSavedSettings.getControl("CloudsEnabled")->getSignal()->connect(boost::bind(&handleCloudSettingsChanged, _2));
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
<floater bottom="27" can_close="true" can_drag_on_left="false" can_minimize="false" can_resize="true" can_tear_off="true" enabled="true" height="175" left="15"
|
<floater bottom="27" can_close="true" can_drag_on_left="false" can_minimize="false" can_resize="true" can_tear_off="true" enabled="true" height="175" left="15"
|
||||||
min_height="100" min_width="425" name="chat floater" rect_control="FloaterChatRect" title="Local Chat" width="435">
|
min_height="100" min_width="425" name="chat floater" control_name="ShowChatHistory" rect_control="FloaterChatRect" title="Local Chat" width="435">
|
||||||
<string name="ringing">Connecting to in-world Voice Chat...</string>
|
<string name="ringing">Connecting to in-world Voice Chat...</string>
|
||||||
<string name="connected">Connected</string>
|
<string name="connected">Connected</string>
|
||||||
<string name="unavailable">Voice not available at your current location</string>
|
<string name="unavailable">Voice not available at your current location</string>
|
||||||
<string name="hang_up">Disconnected from in-world Voice Chat</string>
|
<string name="hang_up">Disconnected from in-world Voice Chat</string>
|
||||||
<string name="voice_icon">icn_voice-localchat.tga</string>
|
<string name="voice_icon">icn_voice-localchat.tga</string>
|
||||||
<string name="IM_logging_string">-- Instant message logging enabled --</string>
|
<string name="IM_logging_string">-- Logging Enabled --</string>
|
||||||
<string name="IM_end_log_string">-- End of Log --</string>
|
<string name="IM_end_log_string">-- End of Log --</string>
|
||||||
<layout_stack border="false" bottom="0" follows="left|top|right|bottom" height="160" left="0" orientation="horizontal" width="430" name="panels">
|
<layout_stack border="false" bottom="0" follows="left|top|right|bottom" height="160" left="0" orientation="horizontal" width="430" name="panels">
|
||||||
<layout_panel border="false" bottom="0" height="160" left="0" min_width="275" name="im_contents_panel" width="305">
|
<layout_panel border="false" bottom="0" height="160" left="0" min_width="275" name="im_contents_panel" width="305">
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
<combo_item name="Gestures">Gestures</combo_item>
|
<combo_item name="Gestures">Gestures</combo_item>
|
||||||
</combo_box>
|
</combo_box>
|
||||||
<check_box bottom_delta="-2" enabled="true" follows="left|top" font="SansSerifSmall" height="20" initial_value="false" label="Show Muted Text" left_delta="124" name="show mutes" width="116"/>
|
<check_box bottom_delta="-2" enabled="true" follows="left|top" font="SansSerifSmall" height="20" initial_value="false" label="Show Muted Text" left_delta="124" name="show mutes" width="116"/>
|
||||||
<!--check_box bottom_delta="-15" enabled="true" follows="left|top" font="SansSerifSmall" height="20" initial_value="false" label="Translate Chat (powered by Google)" name="translate chat" width="100"/-->
|
<!--check_box bottom_delta="-15" enabled="true" follows="left|top" font="SansSerifSmall" height="20" initial_value="false" label="Translate Chat (powered by Google)" name="translate chat" width="100" control_name="TranslateChat"/-->
|
||||||
<button bottom_delta="2" left_delta="120" follows="left|top" font="SansSerifSmall" height="20" width="100" label="Open History" name="chat_history_open" tool_tip="Click here to open chat history in external editor."/>
|
<button bottom_delta="2" left_delta="120" follows="left|top" font="SansSerifSmall" height="20" width="100" label="Open History" name="chat_history_open" tool_tip="Click here to open chat history in external editor."/>
|
||||||
<button bottom_delta="0" follows="right|top" height="20" label="< <" label_selected="> >" left="272" name="toggle_active_speakers_btn" right="305" tool_tip="Click here to show a list of active participants in this IM session." width="80"/>
|
<button bottom_delta="0" follows="right|top" height="20" label="< <" label_selected="> >" left="272" name="toggle_active_speakers_btn" right="305" tool_tip="Click here to show a list of active participants in this IM session." width="80"/>
|
||||||
<text_editor type="string" length="1" bg_readonly_color="ChatHistoryBgColor" bg_writeable_color="ChatHistoryBgColor" bottom="0" enabled="false" follows="left|top|right|bottom" font="SansSerif" height="107" left="5" max_length="2147483647" name="Chat History Editor" text_color="ChatHistoryTextColor" track_bottom="true" text_readonly_color="ChatHistoryTextColor" width="300" word_wrap="true"/>
|
<text_editor type="string" length="1" bg_readonly_color="ChatHistoryBgColor" bg_writeable_color="ChatHistoryBgColor" bottom="0" enabled="false" follows="left|top|right|bottom" font="SansSerif" height="107" left="5" max_length="2147483647" name="Chat History Editor" text_color="ChatHistoryTextColor" track_bottom="true" text_readonly_color="ChatHistoryTextColor" width="300" word_wrap="true"/>
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
<string name="rp mode off" value="RP Mode (Off)"/>
|
<string name="rp mode off" value="RP Mode (Off)"/>
|
||||||
<string name="add friend" value="Add Friend"/>
|
<string name="add friend" value="Add Friend"/>
|
||||||
<string name="remove friend" value="Remove Friend"/>
|
<string name="remove friend" value="Remove Friend"/>
|
||||||
<!--string name="mute" value="Mute"/>
|
<string name="mute" value="Mute"/>
|
||||||
<string name="unmute" value="Unmute"/-->
|
<string name="unmute" value="Unmute"/>
|
||||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="81" width="50" name="tp_btn" label="TP"/>
|
<button bottom_delta="0" follows="left|top" height="20" left_delta="81" width="50" name="tp_btn" label="TP"/>
|
||||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="pay_btn" label="Pay"/>
|
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="pay_btn" label="Pay"/>
|
||||||
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="history_btn" label="Log"/>
|
<button bottom_delta="0" follows="left|top" height="20" left_delta="50" width="50" name="history_btn" label="Log"/>
|
||||||
|
|||||||
@@ -26,8 +26,8 @@
|
|||||||
<string name="rp mode off" value="RP Mode (Off)"/>
|
<string name="rp mode off" value="RP Mode (Off)"/>
|
||||||
<string name="add friend" value="Add Friend"/>
|
<string name="add friend" value="Add Friend"/>
|
||||||
<string name="remove friend" value="Remove Friend"/>
|
<string name="remove friend" value="Remove Friend"/>
|
||||||
<!--string name="mute" value="Mute"/>
|
<string name="mute" value="Mute"/>
|
||||||
<string name="unmute" value="Unmute"/-->
|
<string name="unmute" value="Unmute"/>
|
||||||
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="81" name="start_call_btn" width="60"/>
|
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-start.tga" image_overlay_alignment="left" label="Call" left_delta="81" name="start_call_btn" width="60"/>
|
||||||
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" scale_image="true" label="End" name="end_call_btn" width="24"/>
|
<button bottom="-20" follows="right|top" height="20" image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" scale_image="true" label="End" name="end_call_btn" width="24"/>
|
||||||
<panel mouse_opaque="false" border="false" bottom="-20" follows="right|top" height="20" left_delta="16" name="speaker_controls" width="60">
|
<panel mouse_opaque="false" border="false" bottom="-20" follows="right|top" height="20" left_delta="16" name="speaker_controls" width="60">
|
||||||
|
|||||||
@@ -156,7 +156,7 @@
|
|||||||
label="Instant Message..." label_selected="Instant Message..."
|
label="Instant Message..." label_selected="Instant Message..."
|
||||||
left_delta="71" mouse_opaque="true" name="Instant Message..."
|
left_delta="71" mouse_opaque="true" name="Instant Message..."
|
||||||
tool_tip="Instant Message (IM)" width="140" />
|
tool_tip="Instant Message (IM)" width="140" />
|
||||||
<button bottom="-470" font="SansSerifSmall" halign="center" height="20" label="(Un)Mute"
|
<button bottom="-470" font="SansSerifSmall" halign="center" height="20" label="Mute" label_selected="Unmute" toggle="true"
|
||||||
left_delta="141" mouse_opaque="true" name="Mute"
|
left_delta="141" mouse_opaque="true" name="Mute"
|
||||||
width="60" />
|
width="60" />
|
||||||
<button bottom="-470" font="SansSerif" halign="center" height="20" label="Invite to Group"
|
<button bottom="-470" font="SansSerif" halign="center" height="20" label="Invite to Group"
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<button label="Añadir como Amigo" label_selected="Añadir como Amigo" name="Add Friend..." left_delta="129" />
|
<button label="Añadir como Amigo" label_selected="Añadir como Amigo" name="Add Friend..." left_delta="129" />
|
||||||
<button label="Pagar..." label_selected="Pagar..." name="Pay..." left="10"/>
|
<button label="Pagar..." label_selected="Pagar..." name="Pay..." left="10"/>
|
||||||
<button label="Mensaje Instantáneo" label_selected="Mensaje Instantáneo" name="Instant Message..." tool_tip="Mensaje Instantáneo (IM)" left_delta="75"/>
|
<button label="Mensaje Instantáneo" label_selected="Mensaje Instantáneo" name="Instant Message..." tool_tip="Mensaje Instantáneo (IM)" left_delta="75"/>
|
||||||
<button label="(No) Ignorar" label_selected="Ignorar" name="Mute" left_delta="143" width="69"/>
|
<button label="Ignorar" label_selected="No Ignorar" name="Mute" left_delta="143" width="69"/>
|
||||||
<button label="Invitar al Grupo" label_selected="Invitar al Grupo" name="GroupInvite_Button" left_delta="74" width="110"/>
|
<button label="Invitar al Grupo" label_selected="Invitar al Grupo" name="GroupInvite_Button" left_delta="74" width="110"/>
|
||||||
</panel>
|
</panel>
|
||||||
<!-- =========================== -->
|
<!-- =========================== -->
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ objets :
|
|||||||
<button label="Devenir amis" label_selected="Devenir amis" name="Add Friend..." left_delta="167"/>
|
<button label="Devenir amis" label_selected="Devenir amis" name="Add Friend..." left_delta="167"/>
|
||||||
<button label="Payer" label_selected="Payer" name="Pay..."/>
|
<button label="Payer" label_selected="Payer" name="Pay..."/>
|
||||||
<button label="IM" label_selected="IM" left_delta="80" name="Instant Message..." tool_tip="Message instantané (IM)" width="70"/>
|
<button label="IM" label_selected="IM" left_delta="80" name="Instant Message..." tool_tip="Message instantané (IM)" width="70"/>
|
||||||
<button label="Mute/Ignorer" label_selected="Mute" left_delta="85" name="Mute" tool_tip="ATTENTION VOUS ALLEZ MUTER LA PERSONNE" width="110"/>
|
<button label="Mute/Ignorer" label_selected="UnMuter" left_delta="85" name="Mute" tool_tip="ATTENTION VOUS ALLEZ MUTER LA PERSONNE" width="110"/>
|
||||||
<button label="Invit. Groupe" label_selected="Invit. Groupe" left_delta="120" name="GroupInvite_Button" width="130"/>
|
<button label="Invit. Groupe" label_selected="Invit. Groupe" left_delta="120" name="GroupInvite_Button" width="130"/>
|
||||||
|
|
||||||
</panel>
|
</panel>
|
||||||
|
|||||||
Reference in New Issue
Block a user