// Put a line of chat in all the right places void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) { LLColor4 text_color = get_text_color(chat); BOOL invisible_script_debug_chat = chat.mChatType == CHAT_TYPE_DEBUG_MSG && !gSavedSettings.getBOOL("ScriptErrorsAsChat"); #if LL_LCD_COMPILE // add into LCD displays if (!invisible_script_debug_chat) { if (!from_instant_message) { AddNewChatToLCD(chat.mText); } else { AddNewIMToLCD(chat.mText); } } #endif if (!invisible_script_debug_chat && !chat.mMuted && gConsole && !local_agent) { F32 size = CHAT_MSG_SIZE; if (chat.mSourceType == CHAT_SOURCE_SYSTEM) { text_color = gSavedSettings.getColor("SystemChatColor"); } else if(from_instant_message) { text_color = gSavedSettings.getColor("IMChatColor"); size = INSTANT_MSG_SIZE; } // We display anything if it's not an IM. If it's an IM, check pref... if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatConsole") ) { gConsole->addLine(chat.mText, size, text_color); } } if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) log_chat_text(chat); if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) addChatHistory(chat,false); LLTextParser* highlight = LLTextParser::getInstance(); highlight->triggerAlerts(gAgent.getID(), gAgent.getPositionGlobal(), chat.mText, gViewerWindow->getWindow()); if(!from_instant_message) addChatHistory(chat); }
// static void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) { if ( gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file) { log_chat_text(chat); } LLColor4 color = get_text_color(chat); if (!log_to_file) color = LLColor4::grey; //Recap from log file. if (chat.mChatType == CHAT_TYPE_DEBUG_MSG) { LLFloaterScriptDebug::addScriptLine(chat.mText, chat.mFromName, color, chat.mFromID); if (!gSavedSettings.getBOOL("ScriptErrorsAsChat")) { return; } } // could flash the chat button in the status bar here. JC LLFloaterChat* chat_floater = LLFloaterChat::getInstance(LLSD()); LLViewerTextEditor* history_editor = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor"); LLViewerTextEditor* history_editor_with_mute = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor with mute"); history_editor->setParseHTML(TRUE); history_editor_with_mute->setParseHTML(TRUE); history_editor->setParseHighlights(TRUE); history_editor_with_mute->setParseHighlights(TRUE); if (!chat.mMuted) { add_timestamped_line(history_editor, chat, color); add_timestamped_line(history_editor_with_mute, chat, color); } else { // desaturate muted chat LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); add_timestamped_line(history_editor_with_mute, chat, color); } // add objects as transient speakers that can be muted if (chat.mSourceType == CHAT_SOURCE_OBJECT) { chat_floater->mPanel->setSpeaker(chat.mFromID, chat.mFromName, LLSpeaker::STATUS_NOT_IN_CHANNEL, LLSpeaker::SPEAKER_OBJECT); } // start tab flashing on incoming text from other users (ignoring system text, etc) if (!chat_floater->isInVisibleChain() && chat.mSourceType == CHAT_SOURCE_AGENT) { LLFloaterChatterBox::getInstance()->setFloaterFlashing(chat_floater, TRUE); } }
// Put a line of chat in all the right places void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) { LLColor4 text_color = get_text_color(chat, from_instant_message); BOOL invisible_script_debug_chat = chat.mChatType == CHAT_TYPE_DEBUG_MSG && !gSavedSettings.getBOOL("ScriptErrorsAsChat"); // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) if (rlv_handler_t::isEnabled()) { // TODO-RLVa: we might cast too broad a net by filtering here, needs testing if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) && (!chat.mRlvLocFiltered) && (CHAT_SOURCE_AGENT != chat.mSourceType) ) { LLChat& rlvChat = const_cast<LLChat&>(chat); if (!from_instant_message) RlvUtil::filterLocation(rlvChat.mText); rlvChat.mRlvLocFiltered = TRUE; } if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (!chat.mRlvNamesFiltered) ) { LLChat& rlvChat = const_cast<LLChat&>(chat); if ( (!from_instant_message) && (CHAT_SOURCE_AGENT != chat.mSourceType) ) { // Filter object and system chat (names are filtered elsewhere to save ourselves an gObjectList lookup) RlvUtil::filterNames(rlvChat.mText); } rlvChat.mRlvNamesFiltered = TRUE; } } // [/RLVa:KB] if (!invisible_script_debug_chat && !chat.mMuted && gConsole && !local_agent) { // We display anything if it's not an IM. If it's an IM, check pref... if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatConsole") ) { gConsole->addConsoleLine(chat.mText, text_color); } } if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) log_chat_text(chat); if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) addChatHistory(chat,false); triggerAlerts(chat.mText); if(!from_instant_message) addChatHistory(chat); }
// Put a line of chat in all the right places void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) { LLColor4 text_color = get_text_color(chat); BOOL invisible_script_debug_chat = chat.mChatType == CHAT_TYPE_DEBUG_MSG && !gSavedSettings.getBOOL("ScriptErrorsAsChat"); if (!invisible_script_debug_chat && !chat.mMuted && gConsole && !local_agent) { if (chat.mSourceType == CHAT_SOURCE_SYSTEM) { text_color = gSavedSettings.getColor("SystemChatColor"); } else if(from_instant_message) { text_color = gSavedSettings.getColor("IMChatColor"); } // We display anything if it's not an IM. If it's an IM, check pref... if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatConsole") ) { gConsole->addConsoleLine(chat.mText, text_color); } } if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) log_chat_text(chat); if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) addChatHistory(chat,false); triggerAlerts(chat.mText); if(!from_instant_message) addChatHistory(chat); }
// Put a line of chat in all the right places void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) { LLColor4 text_color = get_text_color(chat); BOOL invisible_script_debug_chat = chat.mChatType == CHAT_TYPE_DEBUG_MSG && !gSavedSettings.getBOOL("ScriptErrorsAsChat"); // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) if (rlv_handler_t::isEnabled()) { // TODO-RLVa: we might cast too broad a net by filtering here, needs testing if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) && (!chat.mRlvLocFiltered) && (CHAT_SOURCE_AGENT != chat.mSourceType) ) { LLChat& rlvChat = const_cast<LLChat&>(chat); if (!from_instant_message) gRlvHandler.filterLocation(rlvChat.mText); rlvChat.mRlvLocFiltered = TRUE; } if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (!chat.mRlvNamesFiltered) ) { LLChat& rlvChat = const_cast<LLChat&>(chat); if ( (!from_instant_message) && (CHAT_SOURCE_AGENT != chat.mSourceType) ) { // Filter object and system chat (names are filtered elsewhere to save ourselves an gObjectList lookup) gRlvHandler.filterNames(rlvChat.mText); } rlvChat.mRlvNamesFiltered = TRUE; } } // [/RLVa:KB] #if LL_LCD_COMPILE // add into LCD displays if (!invisible_script_debug_chat) { if (!from_instant_message) { AddNewChatToLCD(chat.mText); } else { AddNewIMToLCD(chat.mText); } } #endif if (!invisible_script_debug_chat && !chat.mMuted && gConsole && !local_agent) { F32 size = CHAT_MSG_SIZE; if (chat.mSourceType == CHAT_SOURCE_SYSTEM) { text_color = gSavedSettings.getColor("SystemChatColor"); } else if(from_instant_message) { text_color = gSavedSettings.getColor("IMChatColor"); size = INSTANT_MSG_SIZE; } // We display anything if it's not an IM. If it's an IM, check pref... if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatConsole") ) { gConsole->addLine(chat.mText, size, text_color); } } if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) log_chat_text(chat); if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) addChatHistory(chat,false); LLTextParser* highlight = LLTextParser::getInstance(); highlight->triggerAlerts(gAgent.getID(), gAgent.getPositionGlobal(), chat.mText, gViewerWindow->getWindow()); if(!from_instant_message) addChatHistory(chat); }
// static void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) { // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) if (rlv_handler_t::isEnabled()) { // TODO-RLVa: we might cast too broad a net by filtering here, needs testing if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) && (!chat.mRlvLocFiltered) && (CHAT_SOURCE_AGENT != chat.mSourceType) ) { LLChat& rlvChat = const_cast<LLChat&>(chat); gRlvHandler.filterLocation(rlvChat.mText); rlvChat.mRlvLocFiltered = TRUE; } if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (!chat.mRlvNamesFiltered) ) { // NOTE: this will also filter inventory accepted/declined text in the chat history LLChat& rlvChat = const_cast<LLChat&>(chat); if (CHAT_SOURCE_AGENT != chat.mSourceType) { // Filter object and system chat (names are filtered elsewhere to save ourselves an gObjectList lookup) gRlvHandler.filterNames(rlvChat.mText); } rlvChat.mRlvNamesFiltered = TRUE; } } // [/RLVa:KB] if ( gSavedPerAccountSettings.getBOOL("LogChat") && log_to_file) { log_chat_text(chat); } LLColor4 color = get_text_color(chat); if (!log_to_file) color = LLColor4::grey; //Recap from log file. if (chat.mChatType == CHAT_TYPE_DEBUG_MSG) { LLFloaterScriptDebug::addScriptLine(chat.mText, chat.mFromName, color, chat.mFromID); if (!gSavedSettings.getBOOL("ScriptErrorsAsChat")) { return; } } // could flash the chat button in the status bar here. JC LLFloaterChat* chat_floater = LLFloaterChat::getInstance(LLSD()); LLViewerTextEditor* history_editor = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor"); LLViewerTextEditor* history_editor_with_mute = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor with mute"); history_editor->setParseHTML(TRUE); history_editor_with_mute->setParseHTML(TRUE); history_editor->setParseHighlights(TRUE); history_editor_with_mute->setParseHighlights(TRUE); if (!chat.mMuted) { add_timestamped_line(history_editor, chat, color); add_timestamped_line(history_editor_with_mute, chat, color); } else { // desaturate muted chat LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f); add_timestamped_line(history_editor_with_mute, chat, color); } // add objects as transient speakers that can be muted if (chat.mSourceType == CHAT_SOURCE_OBJECT) { chat_floater->mPanel->setSpeaker(chat.mFromID, chat.mFromName, LLSpeaker::STATUS_NOT_IN_CHANNEL, LLSpeaker::SPEAKER_OBJECT); } // start tab flashing on incoming text from other users (ignoring system text, etc) if (!chat_floater->isInVisibleChain() && chat.mSourceType == CHAT_SOURCE_AGENT) { LLFloaterChatterBox::getInstance()->setFloaterFlashing(chat_floater, TRUE); } }
// Put a line of chat in all the right places void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) { LLColor4 text_color = get_text_color(chat, from_instant_message); BOOL invisible_script_debug_chat = chat.mChatType == CHAT_TYPE_DEBUG_MSG && !gSavedSettings.getBOOL("ScriptErrorsAsChat"); // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) if (rlv_handler_t::isEnabled()) { // TODO-RLVa: we might cast too broad a net by filtering here, needs testing if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) && (!chat.mRlvLocFiltered) && (CHAT_SOURCE_AGENT != chat.mSourceType) ) { LLChat& rlvChat = const_cast<LLChat&>(chat); if (!from_instant_message) RlvUtil::filterLocation(rlvChat.mText); rlvChat.mRlvLocFiltered = TRUE; } if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (!chat.mRlvNamesFiltered) ) { LLChat& rlvChat = const_cast<LLChat&>(chat); if ( (!from_instant_message) && (CHAT_SOURCE_AGENT != chat.mSourceType) ) { // Filter object and system chat (names are filtered elsewhere to save ourselves an gObjectList lookup) RlvUtil::filterNames(rlvChat.mText); } rlvChat.mRlvNamesFiltered = TRUE; } } // [/RLVa:KB] if (!invisible_script_debug_chat && !chat.mMuted && gConsole && !local_agent) { // We display anything if it's not an IM. If it's an IM, check pref... if ( !from_instant_message || gSavedSettings.getBOOL("IMInChatConsole") ) { // Replace registered urls in the console so it looks right. std::string chit(chat.mText), // Read through this chat; // Add parts to this LLUrlMatch match; while (!chit.empty() && LLUrlRegistry::instance().findUrl(chit, match)) { const auto start(match.getStart()), length(match.getEnd()+1-start); if (start > 0) chat += chit.substr(0, start); // Add up to the start of the match chat += match.getLabel() + match.getQuery(); // Add the label and the query chit.erase(0, start+length); // remove the url match and all before it } if (!chit.empty()) chat += chit; // Add any leftovers gConsole->addConsoleLine(chat, text_color); } } if(from_instant_message && gSavedPerAccountSettings.getBOOL("LogChatIM")) log_chat_text(chat); if(from_instant_message && gSavedSettings.getBOOL("IMInChatHistory")) addChatHistory(chat,false); triggerAlerts(chat.mText); if(!from_instant_message) addChatHistory(chat); }