merge from viewer-chui

master
maksymsproductengine 2013-09-05 03:39:49 +03:00
commit 4833fada10
5 changed files with 28 additions and 42 deletions

View File

@ -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
{

View File

@ -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()

View File

@ -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;

View File

@ -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);
}

View File

@ -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))