merge from viewer-chui
commit
4833fada10
|
|
@ -898,20 +898,10 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
LLStyle::Params link_params(body_message_params);
|
||||
link_params.overwriteFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
|
||||
|
||||
if (from_me)
|
||||
{ std::string localized_name;
|
||||
bool is_localized = LLTrans::findString(localized_name, "AgentNameSubst");
|
||||
mEditor->appendText((is_localized? localized_name:"(You)") + delimiter,
|
||||
prependNewLineState, link_params);
|
||||
prependNewLineState = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add link to avatar's inspector and delimiter to message.
|
||||
mEditor->appendText(std::string(link_params.link_href) + delimiter,
|
||||
prependNewLineState, link_params);
|
||||
prependNewLineState = false;
|
||||
}
|
||||
mEditor->appendText(std::string(link_params.link_href) + delimiter,
|
||||
prependNewLineState, link_params);
|
||||
prependNewLineState = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -43,14 +43,15 @@ LLFloaterConversationPreview::LLFloaterConversationPreview(const LLSD& session_i
|
|||
mCurrentPage(0),
|
||||
mPageSize(gSavedSettings.getS32("ConversationHistoryPageSize")),
|
||||
mAccountName(session_id[LL_FCP_ACCOUNT_NAME]),
|
||||
mCompleteName(session_id[LL_FCP_COMPLETE_NAME])
|
||||
mCompleteName(session_id[LL_FCP_COMPLETE_NAME]),
|
||||
mMutex(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
BOOL LLFloaterConversationPreview::postBuild()
|
||||
{
|
||||
mChatHistory = getChild<LLChatHistory>("chat_history");
|
||||
LLLoadHistoryThread::setLoadEndSignal(boost::bind(&LLFloaterConversationPreview::SetPages, this, _1, _2));
|
||||
LLLoadHistoryThread::setLoadEndSignal(boost::bind(&LLFloaterConversationPreview::setPages, this, _1, _2));
|
||||
|
||||
const LLConversation* conv = LLConversationLog::instance().getConversation(mSessionID);
|
||||
std::string name;
|
||||
|
|
@ -95,14 +96,15 @@ BOOL LLFloaterConversationPreview::postBuild()
|
|||
return LLFloater::postBuild();
|
||||
}
|
||||
|
||||
void LLFloaterConversationPreview::SetPages(std::list<LLSD>& messages, const std::string& file_name)
|
||||
void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages,const std::string& file_name)
|
||||
{
|
||||
if(file_name == mChatHistoryFileName)
|
||||
{
|
||||
// additional protection to avoid changes of mMessages in setPages()
|
||||
LLMutexLock lock(&mMutex);
|
||||
mMessages = messages;
|
||||
mCurrentPage = (mMessages.size() ? (mMessages.size() - 1) / mPageSize : 0);
|
||||
|
||||
|
||||
mCurrentPage = mMessages.size() / mPageSize;
|
||||
mPageSpinner->setEnabled(true);
|
||||
mPageSpinner->setMaxValue(mCurrentPage+1);
|
||||
mPageSpinner->set(mCurrentPage+1);
|
||||
|
|
@ -110,10 +112,9 @@ void LLFloaterConversationPreview::SetPages(std::list<LLSD>& messages, const std
|
|||
std::string total_page_num = llformat("/ %d", mCurrentPage+1);
|
||||
getChild<LLTextBox>("page_num_label")->setValue(total_page_num);
|
||||
mChatHistoryLoaded = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterConversationPreview::draw()
|
||||
{
|
||||
if(mChatHistoryLoaded)
|
||||
|
|
@ -134,32 +135,21 @@ void LLFloaterConversationPreview::onOpen(const LLSD& key)
|
|||
|
||||
void LLFloaterConversationPreview::showHistory()
|
||||
{
|
||||
if (!mMessages.size())
|
||||
// additional protection to avoid changes of mMessages in setPages()
|
||||
LLMutexLock lock(&mMutex);
|
||||
|
||||
if (!mMessages.size() || mCurrentPage * mPageSize >= mMessages.size())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mChatHistory->clear();
|
||||
|
||||
std::ostringstream message;
|
||||
std::list<LLSD>::const_iterator iter = mMessages.begin();
|
||||
std::advance(iter, mCurrentPage * mPageSize);
|
||||
|
||||
int delta = 0;
|
||||
if (mCurrentPage)
|
||||
for (int msg_num = 0; iter != mMessages.end() && msg_num < mPageSize; ++iter, ++msg_num)
|
||||
{
|
||||
int remainder = mMessages.size() % mPageSize;
|
||||
delta = (remainder == 0) ? 0 : (mPageSize - remainder);
|
||||
}
|
||||
|
||||
std::advance(iter, (mCurrentPage * mPageSize) - delta);
|
||||
|
||||
for (int msg_num = 0; (iter != mMessages.end() && msg_num < mPageSize); ++iter, ++msg_num)
|
||||
{
|
||||
if (iter->size() == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
LLSD msg = *iter;
|
||||
|
||||
LLUUID from_id = LLUUID::null;
|
||||
|
|
@ -203,7 +193,6 @@ void LLFloaterConversationPreview::showHistory()
|
|||
|
||||
mChatHistory->appendMessage(chat,chat_args);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterConversationPreview::onMoreHistoryBtnClick()
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public:
|
|||
virtual ~LLFloaterConversationPreview(){};
|
||||
|
||||
virtual BOOL postBuild();
|
||||
void SetPages(std::list<LLSD>& messages,const std::string& file_name);
|
||||
void setPages(std::list<LLSD>& messages,const std::string& file_name);
|
||||
|
||||
virtual void draw();
|
||||
virtual void onOpen(const LLSD& key);
|
||||
|
|
@ -51,6 +51,7 @@ private:
|
|||
void onMoreHistoryBtnClick();
|
||||
void showHistory();
|
||||
|
||||
LLMutex mMutex;
|
||||
LLSpinCtrl* mPageSpinner;
|
||||
LLChatHistory* mChatHistory;
|
||||
LLUUID mSessionID;
|
||||
|
|
|
|||
|
|
@ -674,13 +674,18 @@ void LLFloaterIMContainer::setVisible(BOOL visible)
|
|||
void LLFloaterIMContainer::getDetachedConversationFloaters(floater_list_t& floaters)
|
||||
{
|
||||
typedef conversations_widgets_map::value_type conv_pair;
|
||||
LLFloaterIMNearbyChat *nearby_chat = LLFloaterReg::findTypedInstance<LLFloaterIMNearbyChat>("nearby_chat");
|
||||
|
||||
BOOST_FOREACH(conv_pair item, mConversationsWidgets)
|
||||
{
|
||||
LLConversationViewSession* widget = dynamic_cast<LLConversationViewSession*>(item.second);
|
||||
if (widget)
|
||||
{
|
||||
LLFloater* session_floater = widget->getSessionFloater();
|
||||
if (session_floater && session_floater->isDetachedAndNotMinimized())
|
||||
|
||||
// Exclude nearby chat from output, as it should be handled separately
|
||||
if (session_floater && session_floater->isDetachedAndNotMinimized()
|
||||
&& session_floater != nearby_chat)
|
||||
{
|
||||
floaters.push_back(session_floater);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2670,7 +2670,8 @@ void LLIMMgr::addMessage(
|
|||
name_is_setted = true;
|
||||
}
|
||||
bool skip_message = false;
|
||||
if (gSavedSettings.getBOOL("VoiceCallsFriendsOnly"))
|
||||
bool from_linden = LLMuteList::getInstance()->isLinden(from);
|
||||
if (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && !from_linden)
|
||||
{
|
||||
// Evaluate if we need to skip this message when that setting is true (default is false)
|
||||
skip_message = (LLAvatarTracker::instance().getBuddyInfo(other_participant_id) == NULL); // Skip non friends...
|
||||
|
|
@ -2716,7 +2717,7 @@ void LLIMMgr::addMessage(
|
|||
|
||||
// Logically it would make more sense to reject the session sooner, in another area of the
|
||||
// code, but the session has to be established inside the server before it can be left.
|
||||
if (LLMuteList::getInstance()->isMuted(other_participant_id) && !LLMuteList::getInstance()->isLinden(from))
|
||||
if (LLMuteList::getInstance()->isMuted(other_participant_id) && !from_linden)
|
||||
{
|
||||
llwarns << "Leaving IM session from initiating muted resident " << from << llendl;
|
||||
if(!gIMMgr->leaveSession(new_session_id))
|
||||
|
|
|
|||
Loading…
Reference in New Issue