CHUI preparation phase 1: Move FS-specific communication parts into a separate domain and out of the way for CHUI merge to reduce conflicts

* LLChatHistory moved to FSChatHistory
* LLFloaterNearbyChat moved to FSFloaterNearbyChat
* LLIMFloater moved to FSFloaterIM
* LLIMFloaterContainer moved to FSFloaterIMContainer
* LLNearbyChatbarListener moved to FSNearbyChatbarListener
* LLNearbyChatControl moved to FSNearbyChatControl
* LLNearbyChatHub moved to FSNearbyChatHub
* floater_im_container.xml moved to floater_fs_im_container.xml
* floater_im_session.xml moved to floater_fs_im_session.xml
* floater_nearby_chat.xml moved to floater_fs_nearby_chat.xml
* widget chat_history.xml moved to fs_chat_history
* widget nearby_chat_control.xml moved to fs_nearby_chat_control.xml
Ansariel 2013-02-28 18:57:38 +01:00
parent 1d6f7491d6
commit 63ef2950e9
112 changed files with 7112 additions and 232 deletions

View File

@ -120,12 +120,16 @@ set(viewer_SOURCE_FILES
exopostprocess.cpp
floatermedialists.cpp
fsareasearch.cpp
fschathistory.cpp
fscommon.cpp
fsconsoleutils.cpp
fscontactsfloater.cpp
fsdata.cpp
fsfloaterblocklist.cpp
fsfloatergroup.cpp
fsfloaterim.cpp
fsfloaterimcontainer.cpp
fsfloaternearbychat.cpp
fsfloaterplacedetails.cpp
fsfloaterprofile.cpp
fsfloatersearch.cpp
@ -138,6 +142,9 @@ set(viewer_SOURCE_FILES
fslslbridgerequest.cpp
fslslpreproc.cpp
fsmoneytracker.cpp
fsnearbychatbarlistener.cpp
fsnearbychatcontrol.cpp
fsnearbychathub.cpp
fsnearbychatvoicemonitor.cpp
fspanelclassified.cpp
fspanelprefs.cpp
@ -417,9 +424,7 @@ set(viewer_SOURCE_FILES
llnameeditor.cpp
llnamelistctrl.cpp
llnavigationbar.cpp
llnearbychatcontrol.cpp
llnearbychathandler.cpp
llnearbychathub.cpp
llnearbychatbarlistener.cpp
llnetmap.cpp
llnotificationalerthandler.cpp
@ -768,12 +773,16 @@ set(viewer_HEADER_FILES
exopostprocess.h
floatermedialists.h
fsareasearch.h
fschathistory.h
fscommon.h
fsconsoleutils.h
fscontactsfloater.h
fsdata.h
fsfloaterblocklist.h
fsfloatergroup.h
fsfloaterim.h
fsfloaterimcontainer.h
fsfloaternearbychat.h
fsfloaterplacedetails.h
fsfloaterprofile.h
fsfloatersearch.h
@ -787,6 +796,9 @@ set(viewer_HEADER_FILES
fslslbridgerequest.h
fslslpreproc.h
fsmoneytracker.h
fsnearbychatbarlistener.h
fsnearbychatcontrol.h
fsnearbychathub.h
fsnearbychatvoicemonitor.h
fspanelclassified.h
fspanelprefs.h
@ -1068,9 +1080,7 @@ set(viewer_HEADER_FILES
llnameeditor.h
llnamelistctrl.h
llnavigationbar.h
llnearbychatcontrol.h
llnearbychathandler.h
llnearbychathub.h
llnearbychatbarlistener.h
llnetmap.h
llnotificationhandler.h

View File

@ -50,9 +50,9 @@
label_ref="Command_Chat_Label"
tooltip_ref="Command_Chat_Tooltip"
execute_function="Floater.Toggle"
execute_parameters="im_container"
execute_parameters="fs_im_container"
is_running_function="Floater.IsOpen"
is_running_parameters="im_container"
is_running_parameters="fs_im_container"
/>
<command name="compass"
available_in_toybox="false"

View File

@ -39,7 +39,10 @@
#include "llagentcamera.h"
#include "llavatarlist.h"
#include "llcalc.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
#include "llfloaterreg.h"
#include "llfloatersidepanelcontainer.h"
#include "llinventorymodel.h"
@ -851,7 +854,10 @@ bool cmd_line_chat(std::string revised_text, EChatType type, bool from_gesture)
else if (command == std::string(sFSCmdLineClearChat))
{
LLFloaterNearbyChat* chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD());
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD());
FSFloaterNearbyChat* chat = LLFloaterReg::getTypedInstance<FSFloaterNearbyChat>("fs_nearby_chat", LLSD());
// </FS:Ansariel> [FS communication UI]
if (chat)
{
chat->clearChatHistory();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,167 @@
/**
* @file llchathistory.h
* @brief LLTextEditor base class
*
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: llchathistory.h
#ifndef FS_CHATHISTORY_H
#define FS_CHATHISTORY_H
#include "lltexteditor.h"
#include "lltextbox.h"
#include "llviewerchat.h"
#include "llavatarname.h"
class LLLineEditor; // <FS_Zi> FIRE-8602: Typing in chat history focuses chat input line
//Chat log widget allowing addition of a message as a widget
// class LLChatHistory : public LLUICtrl // <FS:Zi> FIRE-8600: TAB out of chat history
class FSChatHistory : public LLTextEditor // <FS:Zi> FIRE-8600: TAB out of chat history
{
public:
struct Params : public LLInitParam::Block<Params, LLTextEditor::Params>
{
//Message header filename
Optional<std::string> message_header;
//Message separator filename
Optional<std::string> message_separator;
//Text left padding from the scroll rect
Optional<S32> left_text_pad;
//Text right padding from the scroll rect
Optional<S32> right_text_pad;
//Widget left padding from the scroll rect
Optional<S32> left_widget_pad;
//Widget right padding from the scroll rect
Optional<S32> right_widget_pad;
//Separator top padding
Optional<S32> top_separator_pad;
//Separator bottom padding
Optional<S32> bottom_separator_pad;
//Header top padding
Optional<S32> top_header_pad;
//Header bottom padding
Optional<S32> bottom_header_pad;
// Optional<LLTextBox::Params> more_chat_text; // <FS:Zi> FIRE-8600: TAB out of chat history
Params()
: message_header("message_header"),
message_separator("message_separator"),
left_text_pad("left_text_pad"),
right_text_pad("right_text_pad"),
left_widget_pad("left_widget_pad"),
right_widget_pad("right_widget_pad"),
top_separator_pad("top_separator_pad"),
bottom_separator_pad("bottom_separator_pad"),
top_header_pad("top_header_pad"),
bottom_header_pad("bottom_header_pad") // <FS:Zi> FIRE-8600: TAB out of chat history
// more_chat_text("more_chat_text") // <FS:Zi> FIRE-8600: TAB out of chat history
{}
};
protected:
FSChatHistory(const Params&);
friend class LLUICtrlFactory;
// /*virtual*/ void draw(); // <FS:Zi> FIRE-8600: TAB out of chat history
/**
* Redefinition of LLTextEditor::updateTextRect() to considerate text
* left/right padding params.
*/
//virtual void updateTextRect();
/**
* Builds a message separator.
* @return pointer to LLView separator object.
*/
LLView* getSeparator();
/**
* Builds a message header.
* @return pointer to LLView header object.
*/
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
LLView* getHeader(const LLChat& chat,const LLStyle::Params& style_params, const LLSD& args);
// void onClickMoreText(); // <FS:Zi> FIRE-8600: TAB out of chat history
public:
~FSChatHistory();
void initFromParams(const Params&);
/**
* Appends a widget message.
* If last user appended message, concurs with current user,
* separator is added before the message, otherwise header is added.
* The args LLSD contains:
* - use_plain_text_chat_history (bool) - whether to add message as plain text.
* - owner_id (LLUUID) - the owner ID for object chat
* @param chat - base chat message.
* @param args - additional arguments
* @param input_append_params - font style.
*/
void appendMessage(const LLChat& chat, const LLSD &args = LLSD(), const LLStyle::Params& input_append_params = LLStyle::Params());
/*virtual*/ void clear();
private:
std::string mLastFromName;
LLUUID mLastFromID;
LLDate mLastMessageTime;
bool mIsLastMessageFromLog;
//std::string mLastMessageTimeStr;
std::string mMessageHeaderFilename;
std::string mMessageSeparatorFilename;
S32 mLeftTextPad;
S32 mRightTextPad;
S32 mLeftWidgetPad;
S32 mRightWidgetPad;
S32 mTopSeparatorPad;
S32 mBottomSeparatorPad;
S32 mTopHeaderPad;
S32 mBottomHeaderPad;
std::string mDisplayName;
std::string mDisplayName_Username;
// <FS:Zi> FIRE-8600: TAB out of chat history
// class LLLayoutPanel* mMoreChatPanel;
// LLTextBox* mMoreChatText;
// LLTextEditor* mEditor;
// typedef std::set<std::string> unread_chat_source_t;
// unread_chat_source_t mUnreadChatSources;
// </FS:Zi>
// <FS_Zi> FIRE-8602: Typing in chat history focuses chat input line
public:
virtual BOOL handleUnicodeCharHere(llwchar uni_char);
LLLineEditor* mChatInputLine;
// </FS:Zi>
};
#endif // FS_CHATHISTORY_H

View File

@ -92,7 +92,7 @@ bool FSConsoleUtils::ProcessChatMessage(const LLChat& chat_msg, const LLSD &args
LLColor4 chatcolor;
LLViewerChat::getChatColor(chat_msg, chatcolor);
gConsole->addConsoleLine(consoleChat, chatcolor);
gConsole->setVisible(!LLFloaterReg::instanceVisible("nearby_chat", LLSD()));
gConsole->setVisible(!LLFloaterReg::instanceVisible("fs_nearby_chat", LLSD()));
}
else
{
@ -115,7 +115,7 @@ bool FSConsoleUtils::ProcessChatMessage(const LLChat& chat_msg, const LLSD &args
LLColor4 chatcolor;
LLViewerChat::getChatColor(chat_msg, chatcolor);
gConsole->addConsoleLine(consoleChat, chatcolor);
gConsole->setVisible(!LLFloaterReg::instanceVisible("nearby_chat", LLSD()));
gConsole->setVisible(!LLFloaterReg::instanceVisible("fs_nearby_chat", LLSD()));
}
return true;
@ -171,7 +171,7 @@ void FSConsoleUtils::onProcessChatAvatarNameLookup(const LLUUID& agent_id, const
LLColor4 chatcolor;
LLViewerChat::getChatColor(chat_msg, chatcolor);
gConsole->addConsoleLine(consoleChat, chatcolor);
gConsole->setVisible(!LLFloaterReg::instanceVisible("nearby_chat", LLSD()));
gConsole->setVisible(!LLFloaterReg::instanceVisible("fs_nearby_chat", LLSD()));
}
//static
@ -268,5 +268,5 @@ void FSConsoleUtils::onProccessInstantMessageNameLookup(const LLUUID& agent_id,
}
gConsole->addConsoleLine("IM: " + senderName + delimiter + message, textColor);
gConsole->setVisible(!LLFloaterReg::instanceVisible("nearby_chat", LLSD()));
gConsole->setVisible(!LLFloaterReg::instanceVisible("fs_nearby_chat", LLSD()));
}

View File

@ -44,7 +44,10 @@
#include "llfriendcard.h"
#include "llgroupactions.h"
#include "llgrouplist.h"
#include "llimfloatercontainer.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloatercontainer.h"
#include "fsfloaterimcontainer.h"
// </FS:Ansariel> [FS communication UI]
#include "llnotificationsutil.h"
#include "llfloatersidepanelcontainer.h"
#include "llstartup.h"
@ -184,7 +187,10 @@ void FSFloaterContacts::updateGroupButtons()
void FSFloaterContacts::onOpen(const LLSD& key)
{
LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* floater_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
if (gSavedSettings.getBOOL("ContactsTornOff"))
{
// first set the tear-off host to the conversations container
@ -220,7 +226,10 @@ void FSFloaterContacts::openTab(const std::string& name)
if (visible)
{
LLIMFloaterContainer* floater_container = (LLIMFloaterContainer *) getHost();
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = (LLIMFloaterContainer *) getHost();
FSFloaterIMContainer* floater_container = (FSFloaterIMContainer *) getHost();
// </FS:Ansariel> [FS communication UI]
if (floater_container)
{
floater_container->setVisible(TRUE);

File diff suppressed because it is too large Load Diff

225
indra/newview/fsfloaterim.h Normal file
View File

@ -0,0 +1,225 @@
/**
* @file llimfloater.h
* @brief LLIMFloater class definition
*
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: llimfloater.h
#ifndef FS_FLOATERIM_H
#define FS_FLOATERIM_H
#include "llinstantmessage.h"
#include "lllogchat.h"
#include "lltooldraganddrop.h"
#include "lltransientdockablefloater.h"
#include "llvoicechannel.h"
class LLAvatarName;
class LLButton; // support sysinfo button -Zi
class LLLineEditor;
class LLPanelChatControlPanel;
class FSChatHistory;
class LLInventoryItem;
class LLInventoryCategory;
/**
* Individual IM window that appears at the bottom of the screen,
* optionally "docked" to the bottom tray.
*/
class FSFloaterIM : public LLTransientDockableFloater, LLVoiceClientStatusObserver, LLFriendObserver
{
LOG_CLASS(FSFloaterIM);
public:
FSFloaterIM(const LLUUID& session_id);
virtual ~FSFloaterIM();
// LLView overrides
/*virtual*/ BOOL postBuild();
/*virtual*/ void setVisible(BOOL visible);
/*virtual*/ BOOL getVisible();
// Check typing timeout timer.
/*virtual*/ void draw();
// LLFloater overrides
/*virtual*/ void onClose(bool app_quitting);
/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
// Make IM conversion visible and update the message history
static FSFloaterIM* show(const LLUUID& session_id);
// Toggle panel specified by session_id
// Returns true iff panel became visible
static bool toggle(const LLUUID& session_id);
static FSFloaterIM* findInstance(const LLUUID& session_id);
static FSFloaterIM* getInstance(const LLUUID& session_id);
void sessionInitReplyReceived(const LLUUID& im_session_id);
// get new messages from LLIMModel
void updateMessages();
void reloadMessages();
static void onSendMsg( LLUICtrl*, void*);
void sendMsg();
// callback for LLIMModel on new messages
// route to specific floater if it is visible
static void newIMCallback(const LLSD& data);
//AO: Callbacks for voice handling formerly in llPanelImControlPanel
void onCallButtonClicked();
void onEndCallButtonClicked();
void onOpenVoiceControlsClicked();
void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state);
void onChange(EStatusType status, const std::string &channelURI, bool proximal);
void updateButtons(bool is_call_started);
void updateCallButton();
void changed(U32 mask);
// ## Zi: overridden to fix the IM focus bug - FIRE-3989 etc.
BOOL focusFirstItem(BOOL prefer_text_fields = FALSE, BOOL focus_flash = TRUE );
// called when docked floater's position has been set by chiclet
void setPositioned(bool b) { mPositioned = b; };
void onVisibilityChange(const LLSD& new_visibility);
void processIMTyping(const LLIMInfo* im_info, BOOL typing);
void processAgentListUpdates(const LLSD& body);
void processSessionUpdate(const LLSD& session_update);
void updateChatHistoryStyle();
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
BOOL drop, EDragAndDropType cargo_type,
void *cargo_data, EAcceptance *accept,
std::string& tooltip_msg);
/**
* Returns true if chat is displayed in multi tabbed floater
* false if chat is displayed in multiple windows
*/
static bool isChatMultiTab();
static void initIMFloater();
//used as a callback on receiving new IM message
static void sRemoveTypingIndicator(const LLSD& data);
static void onIMChicletCreated(const LLUUID& session_id);
virtual LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::IM; }
// <FS:Ansariel> FIRE-3248: Disable add friend button on IM floater if friendship request accepted
void setEnableAddFriendButton(BOOL enabled);
protected:
/* virtual */
void onClickCloseBtn();
// support sysinfo button -Zi
void onSysinfoButtonVisibilityChanged(const LLSD& yes);
LLButton* mSysinfoButton;
// support sysinfo button -Zi
BOOL enableViewerVersionCallback(const LLSD& notification,const LLSD& response); // <FS:Zi> Viewer version popup
private:
// process focus events to set a currently active session
/* virtual */ void onFocusLost();
/* virtual */ void onFocusReceived();
// Update the window title, input field help text, etc.
void updateSessionName(const std::string& ui_title, const std::string& ui_label);
// For display name lookups for IM window titles
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
BOOL dropCallingCard(LLInventoryItem* item, BOOL drop);
BOOL dropCategory(LLInventoryCategory* category, BOOL drop);
BOOL isInviteAllowed() const;
BOOL inviteToSession(const uuid_vec_t& agent_ids);
static void onInputEditorFocusReceived( LLFocusableElement* caller, void* userdata );
static void onInputEditorFocusLost(LLFocusableElement* caller, void* userdata);
static void onInputEditorKeystroke(LLLineEditor* caller, void* userdata);
// AO, originally from llpaneChatControlPanel trees
void onViewProfileButtonClicked();
void onAddFriendButtonClicked();
void onShareButtonClicked();
void onTeleportButtonClicked();
void onPayButtonClicked();
void onGroupInfoButtonClicked();
void onHistoryButtonClicked();
// support sysinfo button -Zi
void onSysinfoButtonClicked();
BOOL onSendSysinfo(const LLSD& notification,const LLSD& response);
// support sysinfo button -Zi
// connection to voice channel state change signal
boost::signals2::connection mVoiceChannelStateChangeConnection;
void setTyping(bool typing);
void onSlide();
static void* createPanelIMControl(void* userdata);
static void* createPanelGroupControl(void* userdata);
static void* createPanelAdHocControl(void* userdata);
// Add the "User is typing..." indicator.
void addTypingIndicator(const LLIMInfo* im_info);
// Remove the "User is typing..." indicator.
void removeTypingIndicator(const LLIMInfo* im_info = NULL);
static void closeHiddenIMToasts();
static void confirmLeaveCallCallback(const LLSD& notification, const LLSD& response);
LLPanelChatControlPanel* mControlPanel;
LLUUID mSessionID;
S32 mLastMessageIndex;
EInstantMessage mDialog;
LLUUID mOtherParticipantUUID;
FSChatHistory* mChatHistory;
LLLineEditor* mInputEditor;
bool mPositioned;
std::string mSavedTitle;
LLUIString mTypingStart;
bool mMeTyping;
bool mOtherTyping;
bool mShouldSendTypingState;
LLFrameTimer mTypingTimer;
LLFrameTimer mTypingTimeoutTimer;
bool mSessionInitialized;
LLSD mQueuedMsgsForInit;
};
#endif // FS_FLOATERIM_H

View File

@ -0,0 +1,290 @@
/**
* @file fsfloaterimcontainer.cpp
* @brief Multifloater containing active IM sessions in separate tab container tabs
*
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: llimfloatercontainer.cpp
#include "llviewerprecompiledheaders.h"
#include "fsfloaterimcontainer.h"
#include "llfloaterreg.h"
#include "llimview.h"
#include "llavatariconctrl.h"
#include "llgroupiconctrl.h"
#include "llagent.h"
#include "lltransientfloatermgr.h"
#include "fsfloaternearbychat.h"
#include "fscontactsfloater.h"
#include "llfloater.h"
#include "llviewercontrol.h"
//
// FSFloaterIMContainer
//
FSFloaterIMContainer::FSFloaterIMContainer(const LLSD& seed)
: LLMultiFloater(seed)
{
mAutoResize = FALSE;
LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, this);
}
FSFloaterIMContainer::~FSFloaterIMContainer()
{
mNewMessageConnection.disconnect();
LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this);
}
BOOL FSFloaterIMContainer::postBuild()
{
if (!gSavedSettings.getBOOL("ContactsTornOff"))
{
addFloater(FSFloaterContacts::getInstance(), TRUE);
}
mNewMessageConnection = LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&FSFloaterIMContainer::onNewMessageReceived, this, _1));
// Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button
// mTabContainer will be initialized in LLMultiFloater::addChild()
return TRUE;
}
void FSFloaterIMContainer::onOpen(const LLSD& key)
{
LLMultiFloater::onOpen(key);
// If we're using multitabs, and we open up for the first time
// Add localchat by default if it's not already on the screen somewhere else. -AO
// But only if it hasnt been already so we can reopen it to the same tab -KC
// Improved handling to leave most of the work to the LL tear-off code -Zi
LLFloater* floater = FSFloaterNearbyChat::getInstance();
if (! LLFloater::isVisible(floater) && (floater->getHost() != this))
{
if (gSavedSettings.getBOOL("ChatHistoryTornOff"))
{
// first set the tear-off host to this floater
floater->setHost(this);
// clear the tear-off host right after, the "last host used" will still stick
floater->setHost(NULL);
// reparent to floater view
gFloaterView->addChild(floater);
}
else
{
LLMultiFloater::showFloater(floater);
}
}
/*
if (key.isDefined())
{
LLIMFloater* im_floater = LLIMFloater::findInstance(key.asUUID());
if (im_floater)
{
im_floater->openFloater();
}
}
*/
}
void FSFloaterIMContainer::addFloater(LLFloater* floaterp,
BOOL select_added_floater,
LLTabContainer::eInsertionPoint insertion_point)
{
if(!floaterp) return;
// already here
if (floaterp->getHost() == this)
{
openFloater(floaterp->getKey());
return;
}
if (floaterp->getName() == "imcontacts" || floaterp->getName() == "nearby_chat")
{
S32 num_locked_tabs = mTabContainer->getNumLockedTabs();
mTabContainer->unlockTabs();
// add contacts window as first tab
if (floaterp->getName() == "imcontacts")
{
LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::START);
gSavedSettings.setBOOL("ContactsTornOff", FALSE);
}
else
{
// add chat history as second tab if contact window is present, first tab otherwise
if (getChildView("imcontacts"))
{
// assuming contacts window is first tab, select it
mTabContainer->selectFirstTab();
// and add ourselves after
LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::RIGHT_OF_CURRENT);
}
else
{
LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::START);
}
gSavedSettings.setBOOL("ChatHistoryTornOff", FALSE);
}
// make sure first two tabs are now locked
mTabContainer->lockTabs(num_locked_tabs + 1);
floaterp->setCanClose(FALSE);
return;
}
// [SL:KB] - Patch: Chat-NearbyChatBar | Checked: 2011-11-17 (Catznip-3.2.0a) | Added: Catznip-3.2.0a
LLUUID session_id = floaterp->getKey();
if (session_id.isNull())
{
// Re-insert the nearby chat floater at the start
insertion_point = LLTabContainer::START;
}
// [/SL:KB]
LLMultiFloater::addFloater(floaterp, select_added_floater, insertion_point);
// LLUUID session_id = floaterp->getKey();
LLIconCtrl* icon = 0;
// [SL:KB] - Patch: Chat-NearbyChatBar | Checked: 2011-11-17 (Catznip-3.2.0a) | Added: Catznip-3.2.0a
if (session_id.isNull())
{
// Don't allow the nearby chat tab to be drag-rearranged
mTabContainer->lockTabs(1);
// Add an icon for the nearby chat floater
LLIconCtrl::Params icon_params;
icon_params.image = LLUI::getUIImage("Command_Chat_Icon");
icon = LLUICtrlFactory::instance().create<LLIconCtrl>(icon_params);
}
else if (gAgent.isInGroup(session_id, TRUE))
// [/SL:KB]
// if(gAgent.isInGroup(session_id, TRUE))
{
LLGroupIconCtrl::Params icon_params;
icon_params.group_id = session_id;
icon = LLUICtrlFactory::instance().create<LLGroupIconCtrl>(icon_params);
mSessions[session_id] = floaterp;
floaterp->mCloseSignal.connect(boost::bind(&FSFloaterIMContainer::onCloseFloater, this, session_id));
}
else
{
LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id);
LLAvatarIconCtrl::Params icon_params;
icon_params.avatar_id = avatar_id;
icon = LLUICtrlFactory::instance().create<LLAvatarIconCtrl>(icon_params);
mSessions[session_id] = floaterp;
floaterp->mCloseSignal.connect(boost::bind(&FSFloaterIMContainer::onCloseFloater, this, session_id));
}
mTabContainer->setTabImage(floaterp, icon);
}
// [SL:KB] - Patch: Chat-NearbyChatBar | Checked: 2011-12-11 (Catznip-3.2.0d) | Added: Catznip-3.2.0d
void FSFloaterIMContainer::removeFloater(LLFloater* floaterp)
{
// <FS:ND> old code from FS
if (floaterp->getName() == "nearby_chat")
{
// only my friends floater now locked
mTabContainer->lockTabs(mTabContainer->getNumLockedTabs() - 1);
gSavedSettings.setBOOL("ChatHistoryTornOff", TRUE);
floaterp->setCanClose(TRUE);
}
else if (floaterp->getName() == "imcontacts")
{
// only chat floater now locked
mTabContainer->lockTabs(mTabContainer->getNumLockedTabs() - 1);
gSavedSettings.setBOOL("ContactsTornOff", TRUE);
floaterp->setCanClose(TRUE);
}
// </FS:ND>
LLUUID idSession = floaterp->getKey();
if (idSession.isNull())
{
mTabContainer->unlockTabs();
}
LLMultiFloater::removeFloater(floaterp);
}
// [/SL:KB]
void FSFloaterIMContainer::onCloseFloater(LLUUID& id)
{
mSessions.erase(id);
setFocus(TRUE);
}
void FSFloaterIMContainer::onNewMessageReceived(const LLSD& data)
{
LLUUID session_id = data["session_id"].asUUID();
LLFloater* floaterp = get_ptr_in_map(mSessions, session_id);
LLFloater* current_floater = LLMultiFloater::getActiveFloater();
// KC: Don't flash tab on friend status changes per setting
if (floaterp && current_floater && floaterp != current_floater
&& (gSavedSettings.getBOOL("FSIMChatFlashOnFriendStatusChange") || data["from_id"].asUUID() != LLUUID::null))
{
if(LLMultiFloater::isFloaterFlashing(floaterp))
LLMultiFloater::setFloaterFlashing(floaterp, FALSE);
LLMultiFloater::setFloaterFlashing(floaterp, TRUE);
}
}
FSFloaterIMContainer* FSFloaterIMContainer::findInstance()
{
return LLFloaterReg::findTypedInstance<FSFloaterIMContainer>("fs_im_container");
}
FSFloaterIMContainer* FSFloaterIMContainer::getInstance()
{
return LLFloaterReg::getTypedInstance<FSFloaterIMContainer>("fs_im_container");
}
void FSFloaterIMContainer::setMinimized(BOOL b)
{
if (isMinimized() == b) return;
LLMultiFloater::setMinimized(b);
// Hide minimized floater (see EXT-5315)
setVisible(!b);
if (isMinimized()) return;
if (getActiveFloater())
{
getActiveFloater()->setVisible(TRUE);
}
}
// EOF

View File

@ -0,0 +1,76 @@
/**
* @file fsfloaterimcontainer.h
* @brief Multifloater containing active IM sessions in separate tab container tabs
*
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: llimfloatercontainer.h
#ifndef FS_FLOATERIMCONTAINER_H
#define FS_FLOATERIMCONTAINER_H
#include <map>
#include <vector>
#include "llfloater.h"
#include "llmultifloater.h"
#include "llavatarpropertiesprocessor.h"
#include "llgroupmgr.h"
class LLTabContainer;
class FSFloaterIMContainer : public LLMultiFloater
{
public:
FSFloaterIMContainer(const LLSD& seed);
virtual ~FSFloaterIMContainer();
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
void onCloseFloater(LLUUID& id);
/*virtual*/ void addFloater(LLFloater* floaterp,
BOOL select_added_floater,
LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
// [SL:KB] - Patch: Chat-NearbyChatBar | Checked: 2011-12-11 (Catznip-3.2.0d) | Added: Catznip-3.2.0d
/*virtual*/ void removeFloater(LLFloater* floaterp);
// [/SL:KB]
static LLFloater* getCurrentVoiceFloater();
static FSFloaterIMContainer* findInstance();
static FSFloaterIMContainer* getInstance();
virtual void setMinimized(BOOL b);
void onNewMessageReceived(const LLSD& data); // public so nearbychat can call it directly. TODO: handle via callback. -AO
private:
typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
avatarID_panel_map_t mSessions;
boost::signals2::connection mNewMessageConnection;
};
#endif // FS_FLOATERIMCONTAINER_H

View File

@ -0,0 +1,651 @@
/**
* @file fsfloaternearbychat.cpp
* @brief Nearby chat history scrolling panel implementation
*
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
* Copyright (C) 2012, Zi Ree @ Second Life
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: FSFloaterNearbyChat.cpp
#include "llviewerprecompiledheaders.h"
#include "fsfloaternearbychat.h"
#include "llviewercontrol.h"
#include "llviewerwindow.h"
#include "llrootview.h"
//#include "llchatitemscontainerctrl.h"
#include "lliconctrl.h"
#include "llspinctrl.h"
#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
#include "lllogchat.h"
#include "llresizebar.h"
#include "llresizehandle.h"
#include "llmenugl.h"
#include "llviewermenu.h"//for gMenuHolder
#include "llnearbychathandler.h"
// #include "llnearbychatbar.h" // <FS:Zi> Remove floating chat bar
#include "fsnearbychathub.h"
#include "llchannelmanager.h"
#include "llagent.h" // gAgent
#include "fschathistory.h"
#include "llstylemap.h"
#include "llavatarnamecache.h"
#include "lldraghandle.h"
// #include "llnearbychatbar.h" // <FS:Zi> Remove floating chat bar
#include "llfloaterreg.h"
#include "lltrans.h"
// IM
#include "llbutton.h"
#include "lllayoutstack.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloatercontainer.h"
//#include "llimfloater.h"
#include "fsfloaterim.h"
#include "fsfloaterimcontainer.h"
// </FS:Ansariel> [FS communication UI]
#include "lllineeditor.h"
//AO - includes for textentry
#include "rlvhandler.h"
#include "llcommandhandler.h"
#include "llkeyboard.h"
#include "llgesturemgr.h"
#include "llmultigesture.h"
#include "llconsole.h"
// <FS:Zi> Moved nearby chat functionality here for now
#include "chatbar_as_cmdline.h"
#include "llanimationstates.h" // ANIM_AGENT_WHISPER, ANIM_AGENT_TALK, ANIM_AGENT_SHOUT
#include "llviewerstats.h"
// </FS:Zi>
static const S32 RESIZE_BAR_THICKNESS = 3;
// ## Zi // static LLRegisterPanelClassWrapper<LLNearbyChat> t_panel_nearby_chat("panel_nearby_chat");
FSFloaterNearbyChat::FSFloaterNearbyChat(const LLSD& key)
: LLDockableFloater(NULL, false, false, key)
,mChatHistory(NULL)
,mInputEditor(NULL)
// <FS:Ansariel> Optional muted chat history
,mChatHistoryMuted(NULL)
{
}
FSFloaterNearbyChat::~FSFloaterNearbyChat()
{
}
void FSFloaterNearbyChat::updateFSUseNearbyChatConsole(const LLSD &data)
{
FSUseNearbyChatConsole = data.asBoolean();
if (FSUseNearbyChatConsole)
{
LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
if(chat_channel)
{
chat_channel->removeToastsFromChannel();
}
gConsole->setVisible(!getVisible());
}
else
{
gConsole->setVisible(FALSE);
}
}
BOOL FSFloaterNearbyChat::postBuild()
{
//menu
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
enable_registrar.add("NearbyChat.Check", boost::bind(&FSFloaterNearbyChat::onNearbyChatCheckContextMenuItem, this, _2));
registrar.add("NearbyChat.Action", boost::bind(&FSFloaterNearbyChat::onNearbyChatContextMenuItemClicked, this, _2));
LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_nearby_chat.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
if(menu)
mPopupMenuHandle = menu->getHandle();
gSavedSettings.declareS32("nearbychat_showicons_and_names",2,"NearByChat header settings",true);
mInputEditor = getChild<LLLineEditor>("chat_box");
mInputEditor->setEnabled(TRUE);
gSavedSettings.getControl("FSNearbyChatbar")->getCommitSignal()->connect(boost::bind(&FSFloaterNearbyChat::onChatBarVisibilityChanged, this));
gSavedSettings.getControl("FSShowChatChannel")->getCommitSignal()->connect(boost::bind(&FSFloaterNearbyChat::onChatChannelVisibilityChanged, this));
onChatBarVisibilityChanged();
onChatChannelVisibilityChanged();
// extra icon controls -AO
LLButton* transl = getChild<LLButton>("translate_btn");
transl->setVisible(true);
childSetCommitCallback("chat_history_btn",onHistoryButtonClicked,this);
mChatHistory = getChild<FSChatHistory>("chat_history");
// <FS:Ansariel> Optional muted chat history
mChatHistoryMuted = getChild<FSChatHistory>("chat_history_muted");
// <vertical tab docking> -AO
if(isChatMultiTab())
{
LLButton* slide_left = getChild<LLButton>("slide_left_btn");
slide_left->setVisible(false);
LLButton* slide_right = getChild<LLButton>("slide_right_btn");
slide_right->setVisible(false);
FSUseNearbyChatConsole = gSavedSettings.getBOOL("FSUseNearbyChatConsole");
gSavedSettings.getControl("FSUseNearbyChatConsole")->getSignal()->connect(boost::bind(&FSFloaterNearbyChat::updateFSUseNearbyChatConsole, this, _2));
return LLDockableFloater::postBuild();
}
if(!LLDockableFloater::postBuild())
return false;
return true;
}
std::string appendTime()
{
time_t utc_time;
utc_time = time_corrected();
std::string timeStr ="["+ LLTrans::getString("TimeHour")+"]:["
+LLTrans::getString("TimeMin")+"]";
if (gSavedSettings.getBOOL("FSSecondsinChatTimestamps"))
{
timeStr += ":["
+LLTrans::getString("TimeSec")+"]";
}
LLSD substitution;
substitution["datetime"] = (S32) utc_time;
LLStringUtil::format (timeStr, substitution);
return timeStr;
}
void FSFloaterNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
{
LLChat& tmp_chat = const_cast<LLChat&>(chat);
bool use_plain_text_chat_history = gSavedSettings.getBOOL("PlainTextChatHistory");
bool hide_timestamps_nearby_chat = gSavedSettings.getBOOL("FSHideTimestampsNearbyChat");
// [FIRE-1641 : SJ]: Option to hide timestamps in nearby chat - only add Timestamp when hide_timestamps_nearby_chat is not TRUE
if (!hide_timestamps_nearby_chat)
{
if(tmp_chat.mTimeStr.empty())
tmp_chat.mTimeStr = appendTime();
}
// <FS:Ansariel> Optional muted chat history
tmp_chat.mFromName = chat.mFromName;
LLSD chat_args = args;
chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history;
chat_args["hide_timestamps_nearby_chat"] = hide_timestamps_nearby_chat;
mChatHistoryMuted->appendMessage(chat, chat_args);
// </FS:Ansariel> Optional muted chat history
if (!chat.mMuted)
{
// <FS:Ansariel> Optional muted chat history
//tmp_chat.mFromName = chat.mFromName;
//LLSD chat_args = args;
//chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history;
//chat_args["hide_timestamps_nearby_chat"] = hide_timestamps_nearby_chat;
// <(FS:Ansariel> Optional muted chat history
mChatHistory->appendMessage(chat, chat_args);
}
if(archive)
{
mMessageArchive.push_back(chat);
if(mMessageArchive.size()>200)
mMessageArchive.erase(mMessageArchive.begin());
}
// <FS:Ansariel> Optional muted chat history
//if (args["do_not_log"].asBoolean())
if (args["do_not_log"].asBoolean() || chat.mMuted)
// </FS:Ansariel> Optional muted chat history
{
return;
}
// AO: IF tab mode active, flash our tab
if(isChatMultiTab())
{
LLMultiFloater* hostp = getHost();
// KC: Don't flash tab on system messages
if (!isInVisibleChain() && hostp
&& (chat.mSourceType == CHAT_SOURCE_AGENT || chat.mSourceType == CHAT_SOURCE_OBJECT))
{
hostp->setFloaterFlashing(this, TRUE);
}
}
if (gSavedPerAccountSettings.getBOOL("LogNearbyChat"))
{
std::string from_name = chat.mFromName;
if (chat.mSourceType == CHAT_SOURCE_AGENT)
{
// if the chat is coming from an agent, log the complete name
LLAvatarName av_name;
LLAvatarNameCache::get(chat.mFromID, &av_name);
if (!av_name.mIsDisplayNameDefault)
{
from_name = av_name.getCompleteName();
}
// Ansariel: Handle IMs in nearby chat
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
//if (gSavedSettings.getBOOL("FSShowIMInChatHistory") && chat.mChatType == CHAT_TYPE_IM)
if (gSavedSettings.getBOOL("FSShowIMInChatHistory") && (chat.mChatType == CHAT_TYPE_IM || chat.mChatType == CHAT_TYPE_IM_GROUP))
{
if (gSavedSettings.getBOOL("FSLogIMInChatHistory"))
{
//from_name = "IM: " + from_name;
if(chat.mChatType == CHAT_TYPE_IM_GROUP && chat.mFromNameGroup != "")
{
from_name = "IM: " + chat.mFromNameGroup + from_name;
}
else
{
from_name = "IM: " + from_name;
}
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
}
else return;
}
}
LLLogChat::saveHistory("chat", from_name, chat.mFromID, chat.mText);
}
}
// virtual
BOOL FSFloaterNearbyChat::focusFirstItem(BOOL prefer_text_fields, BOOL focus_flash)
{
mInputEditor->setFocus(TRUE);
onTabInto();
if(focus_flash)
{
gFocusMgr.triggerFocusFlash();
}
return TRUE;
}
void FSFloaterNearbyChat::onNearbySpeakers()
{
LLSD param;
param["people_panel_tab_name"] = "nearby_panel";
LLFloaterSidePanelContainer::showPanel("people", "panel_people", param);
}
// static
void FSFloaterNearbyChat::onHistoryButtonClicked(LLUICtrl* ctrl, void* userdata)
{
gViewerWindow->getWindow()->openFile(LLLogChat::makeLogFileName("chat"));
}
void FSFloaterNearbyChat::onNearbyChatContextMenuItemClicked(const LLSD& userdata)
{
}
bool FSFloaterNearbyChat::onNearbyChatCheckContextMenuItem(const LLSD& userdata)
{
std::string str = userdata.asString();
if(str == "nearby_people")
onNearbySpeakers();
return false;
}
void FSFloaterNearbyChat::onChatBarVisibilityChanged()
{
getChild<LLLayoutPanel>("chat_bar_visibility_panel")->setVisible(gSavedSettings.getBOOL("FSNearbyChatbar"));
}
void FSFloaterNearbyChat::onChatChannelVisibilityChanged()
{
getChild<LLLayoutPanel>("channel_spinner_visibility_panel")->setVisible(gSavedSettings.getBOOL("FSShowChatChannel"));
}
void FSFloaterNearbyChat::openFloater(const LLSD& key)
{
// We override this to put nearbychat in the IM floater. -AO
if(isChatMultiTab())
{
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* floater_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
// only show the floater container if we are actually attached -Zi
if (floater_container && !gSavedSettings.getBOOL("ChatHistoryTornOff"))
{
floater_container->showFloater(this, LLTabContainer::START);
}
setVisible(TRUE);
LLFloater::openFloater(key);
}
}
void FSFloaterNearbyChat::removeScreenChat()
{
LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
if(chat_channel)
{
chat_channel->removeToastsFromChannel();
}
}
void FSFloaterNearbyChat::setVisible(BOOL visible)
{
if(visible)
{
removeScreenChat();
}
LLDockableFloater::setVisible(visible);
// <Ansariel> Support for chat console
static LLCachedControl<bool> chatHistoryTornOff(gSavedSettings, "ChatHistoryTornOff");
if (FSUseNearbyChatConsole)
{
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* floater_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
if (floater_container && !chatHistoryTornOff && !floater_container->getVisible())
{
// In case the nearby chat is docked into the IM floater and the
// IM floater is invisible, always show the console.
gConsole->setVisible(TRUE);
}
else
{
// In case the nearby chat is undocked OR docked and the IM floater
// is visible, show console only if nearby chat is not visible.
gConsole->setVisible(!getVisible());
}
}
// </Ansariel> Support for chat console
}
void FSFloaterNearbyChat::onFocusReceived()
{
// <FS:Ansariel> Give focus to input textbox
mInputEditor->setFocus(TRUE);
}
void FSFloaterNearbyChat::onOpen(const LLSD& key )
{
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* floater_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
if (floater_container)
{
if (gSavedSettings.getBOOL("ChatHistoryTornOff"))
{
// first set the tear-off host to this floater
setHost(floater_container);
// clear the tear-off host right after, the "last host used" will still stick
setHost(NULL);
// reparent the floater to the main view
gFloaterView->addChild(this);
}
else
{
floater_container->addFloater(this, FALSE);
}
}
// We override this to put nearbychat in the IM floater. -AO
if(isChatMultiTab() && ! isVisible(this))
{
// only show the floater container if we are actually attached -Zi
if (floater_container && !gSavedSettings.getBOOL("ChatHistoryTornOff"))
{
// make sure to show our parent floater, too
floater_container->setVisible(TRUE);
floater_container->showFloater(this, LLTabContainer::START);
}
setVisible(TRUE);
}
LLDockableFloater::onOpen(key);
}
void FSFloaterNearbyChat::setRect (const LLRect &rect)
{
LLDockableFloater::setRect(rect);
}
void FSFloaterNearbyChat::getAllowedRect(LLRect& rect)
{
rect = gViewerWindow->getWorldViewRectScaled();
}
// exported here for "clrchat" command line -Zi
void FSFloaterNearbyChat::clearChatHistory()
{
mChatHistory->clear();
// <FS:Ansariel> Optional muted chat history
mChatHistoryMuted->clear();
}
void FSFloaterNearbyChat::updateChatHistoryStyle()
{
clearChatHistory();
LLSD do_not_log;
do_not_log["do_not_log"] = true;
for(std::vector<LLChat>::iterator it = mMessageArchive.begin();it!=mMessageArchive.end();++it)
{
// Update the messages without re-writing them to a log file.
addMessage(*it,false, do_not_log);
}
}
//static
void FSFloaterNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
{
FSFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<FSFloaterNearbyChat>("fs_nearby_chat", LLSD());
if(nearby_chat)
nearby_chat->updateChatHistoryStyle();
}
bool isWordsName(const std::string& name)
{
// checking to see if it's display name plus username in parentheses
S32 open_paren = name.find(" (", 0);
S32 close_paren = name.find(')', 0);
if (open_paren != std::string::npos &&
close_paren == name.length()-1)
{
return true;
}
else
{
//checking for a single space
S32 pos = name.find(' ', 0);
return std::string::npos != pos && name.rfind(' ', name.length()) == pos && 0 != pos && name.length()-1 != pos;
}
}
void FSFloaterNearbyChat::loadHistory()
{
LLSD do_not_log;
do_not_log["do_not_log"] = true;
std::list<LLSD> history;
LLLogChat::loadAllHistory("chat", history);
std::list<LLSD>::const_iterator it = history.begin();
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
typedef enum e_im_type
{
IM_TYPE_NONE = 0,
IM_TYPE_NORMAL,
IM_TYPE_GROUP
} EIMType;
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
while (it != history.end())
{
EIMType im_type = IM_TYPE_NONE; // FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
const LLSD& msg = *it;
std::string from = msg[IM_FROM];
std::string fromGroup = ""; // FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
LLUUID from_id;
if (msg[IM_FROM_ID].isDefined())
{
from_id = msg[IM_FROM_ID].asUUID();
}
else
{
// Ansariel: Strip IM prefix so we can properly
// retrieve the UUID in case we got a
// saved IM in nearby chat history.
std::string im_prefix = "IM: ";
size_t im_prefix_found = from.find(im_prefix);
if (im_prefix_found != std::string::npos)
{
from = from.substr(im_prefix.length());
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
//im_type = true;
size_t group_im_prefix_start = from.find("[");
size_t group_im_prefix_end = from.find("] ");
if((group_im_prefix_start != std::string::npos) && (group_im_prefix_end != std::string::npos))
{
fromGroup = from.substr(group_im_prefix_start,group_im_prefix_end+2);
from = from.substr(fromGroup.length());
im_type = IM_TYPE_GROUP;
}
else
{
im_type = IM_TYPE_NORMAL;
}
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
}
std::string legacy_name = gCacheName->buildLegacyName(from);
gCacheName->getUUID(legacy_name, from_id);
}
LLChat chat;
chat.mFromName = from;
chat.mFromID = from_id;
chat.mText = msg[IM_TEXT].asString();
chat.mTimeStr = msg[IM_TIME].asString();
chat.mChatStyle = CHAT_STYLE_HISTORY;
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
//if (im_type) chat.mChatType = CHAT_TYPE_IM;
if (im_type == IM_TYPE_NORMAL)
{
chat.mChatType = CHAT_TYPE_IM;
}
else if(im_type == IM_TYPE_GROUP)
{
chat.mChatType = CHAT_TYPE_IM_GROUP;
chat.mFromNameGroup = fromGroup;
}
// FS:LO FIRE-5230 - Chat Console Improvement: Replacing the "IM" in front of group chat messages with the actual group name
chat.mSourceType = CHAT_SOURCE_AGENT;
if (from_id.isNull() && SYSTEM_FROM == from)
{
chat.mSourceType = CHAT_SOURCE_SYSTEM;
}
else if (from_id.isNull())
{
chat.mSourceType = isWordsName(from) ? CHAT_SOURCE_UNKNOWN : CHAT_SOURCE_OBJECT;
}
addMessage(chat, true, do_not_log);
it++;
}
}
//static
FSFloaterNearbyChat* FSFloaterNearbyChat::getInstance()
{
return LLFloaterReg::getTypedInstance<FSFloaterNearbyChat>("fs_nearby_chat", LLSD());
}
bool FSFloaterNearbyChat::isChatMultiTab()
{
// Restart is required in order to change chat window type.
static bool is_single_window = gSavedSettings.getS32("ChatWindow") == 1;
return is_single_window;
}
BOOL FSFloaterNearbyChat::getVisible()
{
if(isChatMultiTab())
{
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* im_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
// Treat inactive floater as invisible.
bool is_active = im_container->getActiveFloater() == this;
//torn off floater is always inactive
if (!is_active && getHost() != im_container)
{
return LLDockableFloater::getVisible();
}
// getVisible() returns TRUE when Tabbed IM window is minimized.
return is_active && !im_container->isMinimized() && im_container->getVisible();
}
else
{
return LLDockableFloater::getVisible();
}
}

View File

@ -0,0 +1,117 @@
/**
* @file fsfloaternearbychat.h
* @brief Nearby chat history scrolling panel implementation
*
* $LicenseInfo:firstyear=2004&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
* Copyright (C) 2012, Zi Ree @ Second Life
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: llfloaternearbychat.h
#ifndef FS_FLOATERNEARBYCHAT_H
#define FS_FLOATERNEARBYCHAT_H
#include "lldockablefloater.h"
#include "llscrollbar.h"
#include "llviewerchat.h"
class LLResizeBar;
class FSChatHistory;
// <FS:Zi> Nearby chat bar class
// class LLLineEditor;
#include "lllineeditor.h"
#include "llsingleton.h"
// </FS:Zi>
class FSFloaterNearbyChat: public LLDockableFloater
{
public:
FSFloaterNearbyChat(const LLSD& key);
~FSFloaterNearbyChat();
BOOL postBuild ();
/** @param archive true - to save a message to the chat history log */
void addMessage (const LLChat& message,bool archive = true, const LLSD &args = LLSD());
void onNearbyChatContextMenuItemClicked(const LLSD& userdata);
bool onNearbyChatCheckContextMenuItem(const LLSD& userdata);
void onChatBarVisibilityChanged();
void onChatChannelVisibilityChanged();
// This doesn't seem to apply anymore? It makes the chat and spin box colors
// appear wrong when focused and unfocused, so disable this. -Zi
#if 0
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
virtual void draw();
// focus overrides
/*virtual*/ void onFocusLost();
#endif
/*virtual*/ void onFocusReceived();
/*virtual*/ void onOpen (const LLSD& key);
/*virtual*/ void setVisible(BOOL visible);
void openFloater(const LLSD& key);
virtual void setRect (const LLRect &rect);
void clearChatHistory();
virtual void updateChatHistoryStyle();
static void processChatHistoryStyleUpdate(const LLSD& newvalue);
void loadHistory();
static FSFloaterNearbyChat* getInstance();
void removeScreenChat();
static bool isChatMultiTab();
BOOL getVisible();
static void onHistoryButtonClicked(LLUICtrl* ctrl, void* userdata);
// overridden to fix the multitab focus bug -Zi
BOOL focusFirstItem(BOOL prefer_text_fields = FALSE, BOOL focus_flash = TRUE );
void updateFSUseNearbyChatConsole(const LLSD &data);
private:
void getAllowedRect (LLRect& rect);
void onNearbySpeakers ();
private:
LLHandle<LLView> mPopupMenuHandle;
FSChatHistory* mChatHistory;
// <FS:Ansariel> Optional muted chat history
FSChatHistory* mChatHistoryMuted;
std::vector<LLChat> mMessageArchive;
LLLineEditor* mInputEditor;
BOOL FSUseNearbyChatConsole;
};
#endif // FS_FLOATERNEARBYCHAT_H

View File

@ -24,7 +24,6 @@
#include "fsmoneytracker.h"
#include "llfloaterreg.h"
#include "llviewercontrol.h"
#include "llchathistory.h"
#include "lllineeditor.h"
#include "llnotificationmanager.h"
#include "lltrans.h"
@ -44,7 +43,10 @@ FSMoneyTracker::~FSMoneyTracker()
BOOL FSMoneyTracker::postBuild()
{
mTransactionHistory = getChild<LLChatHistory>("money_chat_history");
// <FS:Ansariel> [FS communication UI]
//mTransactionHistory = getChild<LLChatHistory>("money_chat_history");
mTransactionHistory = getChild<FSChatHistory>("money_chat_history");
// </FS:Ansariel> [FS communication UI]
mTransactionHistory->clear();
// Button Actions

View File

@ -25,7 +25,10 @@
#include "llfloater.h"
#include "llsingleton.h"
#include "llchathistory.h"
// <FS:Ansariel> [FS communication UI]
//#include "llchathistory.h"
#include "fschathistory.h"
// </FS:Ansariel> [FS communication UI]
#include "lllineeditor.h"
#include "llchat.h"
#include <string.h>
@ -45,7 +48,10 @@ public:
private:
void clear();
std::string appendTime();
LLChatHistory* mTransactionHistory;
// <FS:Ansariel> [FS communication UI]
//LLChatHistory* mTransactionHistory;
FSChatHistory* mTransactionHistory;
// </FS:Ansariel> [FS communication UI]
};
#endif // FS_MONEYTRACKER_H

View File

@ -0,0 +1,116 @@
/**
* @file fsnearbychatbarlistener.cpp
* @author Dave Simmons
* @date 2011-03-15
* @brief Implementation for FSNearbyChatBarListener.
*
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2011, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: llnearbychatbarlistener.cpp
#include "llviewerprecompiledheaders.h"
#include "fsnearbychatbarlistener.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychatbar.h"
#include "fsnearbychathub.h"
// </FS:Zi>
#include "llagent.h"
#include "llchat.h"
#include "llviewercontrol.h"
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBarListener::LLNearbyChatBarListener(LLNearbyChatBar & chatbar)
// : LLEventAPI("LLChatBar",
// "LLChatBar listener to (e.g.) sendChat, etc."),
// mChatbar(chatbar)
FSNearbyChatBarListener::FSNearbyChatBarListener()
: LLEventAPI("LLChatBar",
"LLChatBar listener to (e.g.) sendChat, etc.")
// </FS:Zi>
{
add("sendChat",
"Send chat to the simulator:\n"
"[\"message\"] chat message text [required]\n"
"[\"channel\"] chat channel number [default = 0]\n"
"[\"type\"] chat type \"whisper\", \"normal\", \"shout\" [default = \"normal\"]",
&FSNearbyChatBarListener::sendChat);
}
// "sendChat" command
void FSNearbyChatBarListener::sendChat(LLSD const & chat_data) const
{
// Extract the data
std::string chat_text = chat_data["message"].asString();
S32 channel = 0;
if (chat_data.has("channel"))
{
channel = chat_data["channel"].asInteger();
if (channel < 0 || channel >= CHAT_CHANNEL_DEBUG)
{ // Use 0 up to (but not including) CHAT_CHANNEL_DEBUG
channel = 0;
}
}
EChatType type_o_chat = CHAT_TYPE_NORMAL;
if (chat_data.has("type"))
{
std::string type_string = chat_data["type"].asString();
if (type_string == "whisper")
{
type_o_chat = CHAT_TYPE_WHISPER;
}
else if (type_string == "shout")
{
type_o_chat = CHAT_TYPE_SHOUT;
}
}
// Have to prepend /42 style channel numbers
std::string chat_to_send;
if (channel == 0)
{
chat_to_send = chat_text;
}
else
{
chat_to_send += "/";
chat_to_send += chat_data["channel"].asString();
chat_to_send += " ";
chat_to_send += chat_text;
}
// Send it as if it was typed in
// <FS:Zi> Remove floating chat bar
// mChatbar.sendChatFromViewer(chat_to_send, type_o_chat, (BOOL)(channel == 0));
// <FS:Ansariel> [FS communication UI]
//LLNearbyChat::instance().sendChatFromViewer(chat_to_send, type_o_chat, ((BOOL)(channel == 0)) && gSavedSettings.getBOOL("FSPlayChatAnimation"));
FSNearbyChat::instance().sendChatFromViewer(chat_to_send, type_o_chat, ((BOOL)(channel == 0)) && gSavedSettings.getBOOL("FSPlayChatAnimation"));
// </FS:Ansariel> [FS communication UI]
// <FS:Zi>
}

View File

@ -0,0 +1,55 @@
/**
* @file fsnearbychatbarlistener.h
* @author Dave Simmons
* @date 2011-03-15
* @brief Class definition for FSNearbyChatBarListener.
*
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2011, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// Original file: llnearbychatbarlistener.h
#ifndef FS_NEARBYCHATBARLISTENER_H
#define FS_NEARBYCHATBARLISTENER_H
#include "lleventapi.h"
class LLSD;
// class LLNearbyChatBar; // <FS:Zi> Remove floating chat bar
class FSNearbyChatBarListener : public LLEventAPI
{
public:
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBarListener(LLNearbyChatBar & chatbar);
FSNearbyChatBarListener();
// </FS:Zi>
private:
void sendChat(LLSD const & chat_data) const;
// LLNearbyChatBar & mChatbar;
};
#endif // FS_NEARBYCHATBARLISTENER_H

View File

@ -1,5 +1,5 @@
/**
* @file llnearbychatcontrol.cpp
* @file fsnearbychatcontrol.cpp
* @brief Nearby chat input control implementation
*
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
@ -27,9 +27,12 @@
#include "llviewerprecompiledheaders.h"
#include "llnearbychatcontrol.h"
#include "llnearbychathub.h"
#include "llfloaternearbychat.h"
#include "fsnearbychatcontrol.h"
#include "fsnearbychathub.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
// #include "llviewercontrol.h"
// #include "llviewerwindow.h"
// #include "llrootview.h"
@ -86,7 +89,7 @@
// #include "llviewerstats.h"
// </FS:Zi>
static LLDefaultChildRegistry::Register<LLNearbyChatControl> r("nearby_chat_control");
static LLDefaultChildRegistry::Register<FSNearbyChatControl> r("fs_nearby_chat_control");
struct LLChatTypeTrigger {
std::string name;
@ -98,12 +101,12 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
{ "/shout" , CHAT_TYPE_SHOUT}
};
LLNearbyChatControl::LLNearbyChatControl(const LLNearbyChatControl::Params& p) :
FSNearbyChatControl::FSNearbyChatControl(const FSNearbyChatControl::Params& p) :
LLLineEditor(p)
{
setAutoreplaceCallback(boost::bind(&LLAutoReplace::autoreplaceCallback, LLAutoReplace::getInstance(), _1, _2));
setKeystrokeCallback(onKeystroke,this);
LLNearbyChat::instance().registerChatBar(this);
FSNearbyChat::instance().registerChatBar(this);
setEnableLineHistory(TRUE);
setIgnoreArrowKeys( FALSE );
@ -115,14 +118,14 @@ LLNearbyChatControl::LLNearbyChatControl(const LLNearbyChatControl::Params& p) :
setFont(LLViewerChat::getChatFont());
// Register for font change notifications
LLViewerChat::setFontChangedCallback(boost::bind(&LLNearbyChatControl::setFont, this, _1));
LLViewerChat::setFontChangedCallback(boost::bind(&FSNearbyChatControl::setFont, this, _1));
}
LLNearbyChatControl::~LLNearbyChatControl()
FSNearbyChatControl::~FSNearbyChatControl()
{
}
void LLNearbyChatControl::onKeystroke(LLLineEditor* caller,void* userdata)
void FSNearbyChatControl::onKeystroke(LLLineEditor* caller,void* userdata)
{
LLWString raw_text = caller->getWText();
@ -142,7 +145,10 @@ void LLNearbyChatControl::onKeystroke(LLLineEditor* caller,void* userdata)
if (gSavedSettings.getBOOL("FSNearbyChatbar") &&
gSavedSettings.getBOOL("FSShowChatChannel"))
{
channel = (S32)(LLFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
// <FS:Ansariel> [FS communication UI]
//channel = (S32)(LLFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
channel = (S32)(FSFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
// </FS:Ansariel> [FS communication UI]
}
// -Zi
@ -195,7 +201,7 @@ void LLNearbyChatControl::onKeystroke(LLLineEditor* caller,void* userdata)
}
}
BOOL LLNearbyChatControl::matchChatTypeTrigger(const std::string& in_str, std::string* out_str)
BOOL FSNearbyChatControl::matchChatTypeTrigger(const std::string& in_str, std::string* out_str)
{
U32 in_len = in_str.length();
S32 cnt = sizeof(sChatTypeTriggers) / sizeof(*sChatTypeTriggers);
@ -219,25 +225,25 @@ BOOL LLNearbyChatControl::matchChatTypeTrigger(const std::string& in_str, std::s
}
// send our focus status to the LLNearbyChat hub
void LLNearbyChatControl::onFocusReceived()
void FSNearbyChatControl::onFocusReceived()
{
LLNearbyChat::instance().setFocusedInputEditor(this,TRUE);
FSNearbyChat::instance().setFocusedInputEditor(this,TRUE);
LLLineEditor::onFocusReceived();
}
void LLNearbyChatControl::onFocusLost()
void FSNearbyChatControl::onFocusLost()
{
LLNearbyChat::instance().setFocusedInputEditor(this,FALSE);
FSNearbyChat::instance().setFocusedInputEditor(this,FALSE);
LLLineEditor::onFocusLost();
}
void LLNearbyChatControl::setFocus(BOOL focus)
void FSNearbyChatControl::setFocus(BOOL focus)
{
LLNearbyChat::instance().setFocusedInputEditor(this,focus);
FSNearbyChat::instance().setFocusedInputEditor(this,focus);
LLLineEditor::setFocus(focus);
}
void LLNearbyChatControl::autohide()
void FSNearbyChatControl::autohide()
{
if(getName()=="default_chat_bar")
{
@ -248,13 +254,13 @@ void LLNearbyChatControl::autohide()
if(gAgentCamera.cameraMouselook() || gSavedSettings.getBOOL("AutohideChatBar"))
{
LLNearbyChat::instance().showDefaultChatBar(FALSE);
FSNearbyChat::instance().showDefaultChatBar(FALSE);
}
}
}
// handle ESC key here
BOOL LLNearbyChatControl::handleKeyHere(KEY key, MASK mask )
BOOL FSNearbyChatControl::handleKeyHere(KEY key, MASK mask )
{
BOOL handled = FALSE;
EChatType type = CHAT_TYPE_NORMAL;
@ -301,7 +307,7 @@ BOOL LLNearbyChatControl::handleKeyHere(KEY key, MASK mask )
LLLineEditor::onCommit();
// send chat to nearby chat hub
LLNearbyChat::instance().sendChat(getConvertedText(),type);
FSNearbyChat::instance().sendChat(getConvertedText(),type);
setText(LLStringExplicit(""));
autohide();

View File

@ -1,5 +1,5 @@
/**
* @file llnearbychatcontrol.h
* @file fsnearbychatcontrol.h
* @brief Nearby chat input control implementation
*
* $LicenseInfo:firstyear=2004&license=viewerlgpl$
@ -25,19 +25,19 @@
* $/LicenseInfo$
*/
#ifndef LL_LLNEARBYCHATCONTROL_H
#define LL_LLNEARBYCHATCONTROL_H
#ifndef FS_NEARBYCHATCONTROL_H
#define FS_NEARBYCHATCONTROL_H
#include "llchat.h"
#include "lllineeditor.h"
class LLNearbyChatControl : public LLLineEditor
class FSNearbyChatControl : public LLLineEditor
{
public:
struct Params : public LLInitParam::Block<Params, LLLineEditor::Params> {};
LLNearbyChatControl(const Params& p);
~LLNearbyChatControl();
FSNearbyChatControl(const Params& p);
~FSNearbyChatControl();
virtual void onFocusReceived();
virtual void onFocusLost();
@ -55,4 +55,4 @@ private:
void autohide();
};
#endif
#endif // FS_NEARBYCHATCONTROL_H

View File

@ -1,5 +1,5 @@
/**
* @file llnearbychat.cpp
* @file fsnearbychat.cpp
* @brief @brief Nearby chat central class for handling multiple chat input controls
*
* $LicenseInfo:firstyear=2009&license=viewerlgpl$
@ -27,9 +27,12 @@
#include "llviewerprecompiledheaders.h"
#include "llnearbychathub.h"
#include "llnearbychatcontrol.h"
#include "llfloaternearbychat.h"
#include "fsnearbychathub.h"
#include "fsnearbychatcontrol.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
#include "llviewercontrol.h"
#include "llviewerwindow.h"
@ -76,20 +79,20 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
{ "/shout" , CHAT_TYPE_SHOUT}
};
S32 LLNearbyChat::sLastSpecialChatChannel = 0;
S32 FSNearbyChat::sLastSpecialChatChannel = 0;
LLNearbyChat::LLNearbyChat() :
FSNearbyChat::FSNearbyChat() :
mDefaultChatBar(NULL),
mFocusedInputEditor(NULL)
{
gSavedSettings.getControl("MainChatbarVisible")->getSignal()->connect(boost::bind(&LLNearbyChat::onDefaultChatBarButtonClicked, this));
gSavedSettings.getControl("MainChatbarVisible")->getSignal()->connect(boost::bind(&FSNearbyChat::onDefaultChatBarButtonClicked, this));
}
LLNearbyChat::~LLNearbyChat()
FSNearbyChat::~FSNearbyChat()
{
}
void LLNearbyChat::onDefaultChatBarButtonClicked()
void FSNearbyChat::onDefaultChatBarButtonClicked()
{
showDefaultChatBar(gSavedSettings.getBOOL("MainChatbarVisible"));
}
@ -246,12 +249,12 @@ void really_send_chat_from_viewer(std::string utf8_out_text, EChatType type, S32
}
//</FS:TS> FIRE-787
void LLNearbyChat::sendChatFromViewer(const std::string& utf8text, EChatType type, BOOL animate)
void FSNearbyChat::sendChatFromViewer(const std::string& utf8text, EChatType type, BOOL animate)
{
sendChatFromViewer(utf8str_to_wstring(utf8text), type, animate);
}
void LLNearbyChat::sendChatFromViewer(const LLWString& wtext, EChatType type, BOOL animate)
void FSNearbyChat::sendChatFromViewer(const LLWString& wtext, EChatType type, BOOL animate)
{
// Look for "/20 foo" channel chats.
S32 channel = 0;
@ -262,7 +265,10 @@ void LLNearbyChat::sendChatFromViewer(const LLWString& wtext, EChatType type, BO
gSavedSettings.getBOOL("FSShowChatChannel") &&
(channel == 0))
{
channel = (S32)(LLFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
// <FS:Ansariel> [FS communication UI]
//channel = (S32)(LLFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
channel = (S32)(FSFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
// </FS:Ansariel> [FS communication UI]
}
std::string utf8_out_text = wstring_to_utf8str(out_text);
std::string utf8_text = wstring_to_utf8str(wtext);
@ -323,7 +329,7 @@ void LLNearbyChat::sendChatFromViewer(const LLWString& wtext, EChatType type, BO
send_chat_from_viewer(utf8_out_text, type, channel);
}
EChatType LLNearbyChat::processChatTypeTriggers(EChatType type, std::string &str)
EChatType FSNearbyChat::processChatTypeTriggers(EChatType type, std::string &str)
{
U32 length = str.length();
S32 cnt = sizeof(sChatTypeTriggers) / sizeof(*sChatTypeTriggers);
@ -357,7 +363,7 @@ EChatType LLNearbyChat::processChatTypeTriggers(EChatType type, std::string &str
// If input of the form "/20foo" or "/20 foo", returns "foo" and channel 20.
// Otherwise returns input and channel 0.
LLWString LLNearbyChat::stripChannelNumber(const LLWString &mesg, S32* channel)
LLWString FSNearbyChat::stripChannelNumber(const LLWString &mesg, S32* channel)
{
if (mesg[0] == '/'
&& mesg[1] == '/')
@ -410,7 +416,7 @@ LLWString LLNearbyChat::stripChannelNumber(const LLWString &mesg, S32* channel)
}
}
void LLNearbyChat::sendChat(LLWString text,EChatType type)
void FSNearbyChat::sendChat(LLWString text,EChatType type)
{
LLWStringUtil::trim(text);
@ -432,7 +438,10 @@ void LLNearbyChat::sendChat(LLWString text,EChatType type)
gSavedSettings.getBOOL("FSShowChatChannel") &&
(channel == 0))
{
channel = (S32)(LLFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
// <FS:Ansariel> [FS communication UI]
//channel = (S32)(LLFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
channel = (S32)(FSFloaterNearbyChat::getInstance()->getChild<LLSpinCtrl>("ChatChannel")->get());
// </FS:Ansariel> [FS communication UI]
}
std::string utf8text = wstring_to_utf8str(text);
@ -473,7 +482,7 @@ void LLNearbyChat::sendChat(LLWString text,EChatType type)
}
// all chat bars call this function and we keep the first or one that's seen as the default
void LLNearbyChat::registerChatBar(LLNearbyChatControl* chatBar)
void FSNearbyChat::registerChatBar(FSNearbyChatControl* chatBar)
{
// TODO: make this a Param option "is_default"
if(!mDefaultChatBar || chatBar->getName()=="default_chat_bar")
@ -483,7 +492,7 @@ void LLNearbyChat::registerChatBar(LLNearbyChatControl* chatBar)
}
// unhide the default nearby chat bar on request (pressing Enter or a letter key)
void LLNearbyChat::showDefaultChatBar(BOOL visible,const char* text) const
void FSNearbyChat::showDefaultChatBar(BOOL visible,const char* text) const
{
if(!mDefaultChatBar)
return;
@ -506,7 +515,7 @@ void LLNearbyChat::showDefaultChatBar(BOOL visible,const char* text) const
}
// We want to know which nearby chat editor (if any) currently has focus
void LLNearbyChat::setFocusedInputEditor(LLNearbyChatControl* inputEditor,BOOL focus)
void FSNearbyChat::setFocusedInputEditor(FSNearbyChatControl* inputEditor,BOOL focus)
{
if(focus)
mFocusedInputEditor=inputEditor;
@ -519,7 +528,7 @@ void LLNearbyChat::setFocusedInputEditor(LLNearbyChatControl* inputEditor,BOOL f
// for the "arrow key moves avatar when chat is empty" hack in llviewerwindow.cpp
// and the hide chat bar feature in mouselook in llagent.cpp
BOOL LLNearbyChat::defaultChatBarIsIdle() const
BOOL FSNearbyChat::defaultChatBarIsIdle() const
{
if(mFocusedInputEditor && mFocusedInputEditor->getName()=="default_chat_bar")
return mFocusedInputEditor->getText().empty();
@ -529,7 +538,7 @@ BOOL LLNearbyChat::defaultChatBarIsIdle() const
}
// for the "arrow key moves avatar when chat is empty" hack in llviewerwindow.cpp
BOOL LLNearbyChat::defaultChatBarHasFocus() const
BOOL FSNearbyChat::defaultChatBarHasFocus() const
{
if(mFocusedInputEditor && mFocusedInputEditor->getName()=="default_chat_bar")
return TRUE;

View File

@ -25,31 +25,31 @@
* $/LicenseInfo$
*/
#ifndef LL_LLNEARBYCHAT_H
#define LL_LLNEARBYCHAT_H
#ifndef FS_NEARBYCHAT_H
#define FS_NEARBYCHAT_H
#include "llsingleton.h"
#include "llviewerchat.h"
class LLNearbyChatControl;
class FSNearbyChatControl;
class LLNearbyChat : public LLSingleton<LLNearbyChat>
class FSNearbyChat : public LLSingleton<FSNearbyChat>
{
friend class LLSingleton<LLNearbyChat>;
friend class LLSingleton<FSNearbyChat>;
private:
LLNearbyChat();
~LLNearbyChat();
FSNearbyChat();
~FSNearbyChat();
void sendMsg();
static S32 sLastSpecialChatChannel;
LLNearbyChatControl* mDefaultChatBar;
FSNearbyChatControl* mDefaultChatBar;
void onDefaultChatBarButtonClicked();
public:
void registerChatBar(LLNearbyChatControl* chatBar);
void registerChatBar(FSNearbyChatControl* chatBar);
// set the contents of the chat bar to "text" if it was empty, otherwise just show it
void showDefaultChatBar(BOOL visible,const char* text=0) const;
@ -60,12 +60,12 @@ public:
void sendChatFromViewer(const std::string& utf8text, EChatType type, BOOL animate);
void sendChatFromViewer(const LLWString& wtext, EChatType type, BOOL animate);
void setFocusedInputEditor(LLNearbyChatControl* inputEditor,BOOL focus);
void setFocusedInputEditor(FSNearbyChatControl* inputEditor,BOOL focus);
BOOL defaultChatBarIsIdle() const;
BOOL defaultChatBarHasFocus() const;
LLNearbyChatControl* mFocusedInputEditor;
FSNearbyChatControl* mFocusedInputEditor;
};
#endif
#endif // FS_NEARBYCHAT_H

View File

@ -33,7 +33,7 @@ FSNearbyChatVoiceControl::Params::Params() :
{}
FSNearbyChatVoiceControl::FSNearbyChatVoiceControl(const FSNearbyChatVoiceControl::Params& p) :
LLNearbyChatControl(p),
FSNearbyChatControl(p),
mVoiceMonitor(NULL),
mOriginalTextpadLeft(p.text_pad_left),
mOriginalTextpadRight(p.text_pad_right),
@ -70,5 +70,5 @@ void FSNearbyChatVoiceControl::draw()
mVoiceMonitor->setVisible(FALSE);
}
}
LLNearbyChatControl::draw();
FSNearbyChatControl::draw();
}

View File

@ -23,16 +23,16 @@
#ifndef FS_NEARBYCHATVOICEMONITOR_H
#define FS_NEARBYCHATVOICEMONITOR_H
#include "llnearbychatcontrol.h"
#include "fsnearbychatcontrol.h"
#include "lloutputmonitorctrl.h"
class LLUICtrlFactory;
class FSNearbyChatVoiceControl : public LLNearbyChatControl
class FSNearbyChatVoiceControl : public FSNearbyChatControl
{
public:
struct Params : public LLInitParam::Block<Params, LLNearbyChatControl::Params>
struct Params : public LLInitParam::Block<Params, FSNearbyChatControl::Params>
{
Optional<S32> voice_monitor_padding;
Optional<NearbyVoiceMonitor::Params> nearby_voice_monitor;

View File

@ -57,7 +57,7 @@
#include "llnavigationbar.h" // to show/hide navigation bar when changing mouse look state
// <FS:Zi> Remove floating chat bar
//#include "llnearbychatbar.h"
#include "llnearbychathub.h"
#include "fsnearbychathub.h"
// </FS:Zi>
#include "llspeakers.h"
// [/SL:KB]
@ -2195,7 +2195,7 @@ void LLAgent::startTyping()
}
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar::getInstance()->sendChatFromViewer("", CHAT_TYPE_START, FALSE);
LLNearbyChat::instance().sendChatFromViewer("", CHAT_TYPE_START, FALSE);
FSNearbyChat::instance().sendChatFromViewer("", CHAT_TYPE_START, FALSE);
// </FS:Zi>
}
@ -2210,7 +2210,7 @@ void LLAgent::stopTyping()
sendAnimationRequest(ANIM_AGENT_TYPE, ANIM_REQUEST_STOP);
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar::getInstance()->sendChatFromViewer("", CHAT_TYPE_STOP, FALSE);
LLNearbyChat::instance().sendChatFromViewer("", CHAT_TYPE_STOP, FALSE);
FSNearbyChat::instance().sendChatFromViewer("", CHAT_TYPE_STOP, FALSE);
// </FS:Zi>
}
}
@ -2277,7 +2277,7 @@ void LLAgent::endAnimationUpdateUI()
// <FS:Zi> Unhide chat bar, unless autohide is enabled
gSavedSettings.setBOOL("MouseLookEnabled",FALSE);
if(!gSavedSettings.getBOOL("AutohideChatBar"))
LLNearbyChat::instance().showDefaultChatBar(TRUE);
FSNearbyChat::instance().showDefaultChatBar(TRUE);
// </FS:Zi>
gToolBarView->setToolBarsVisible(true);
@ -2437,8 +2437,8 @@ void LLAgent::endAnimationUpdateUI()
// <FS:Zi> Hide chat bar in mouselook mode, unless there is text in it
gSavedSettings.setBOOL("MouseLookEnabled",TRUE);
if(LLNearbyChat::instance().defaultChatBarIsIdle())
LLNearbyChat::instance().showDefaultChatBar(FALSE);
if(FSNearbyChat::instance().defaultChatBarIsIdle())
FSNearbyChat::instance().showDefaultChatBar(FALSE);
// </FS:Zi>
// clear out camera lag effect

View File

@ -68,7 +68,10 @@
#include "llviewerobjectlist.h"
#include "llviewermessage.h" // for handle_lure
#include "llviewerregion.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "lltrans.h"
#include "llcallingcard.h"
#include "llslurl.h" // IDEVO
@ -200,7 +203,10 @@ static void on_avatar_name_cache_start_im(const LLUUID& agent_id,
LLUUID session_id = gIMMgr->addSession(name, IM_NOTHING_SPECIAL, agent_id);
if (session_id != LLUUID::null)
{
LLIMFloater::show(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater::show(session_id);
FSFloaterIM::show(session_id);
// </FS:Ansariel> [FS communication UI]
}
make_ui_sound("UISndStartIM");
}
@ -361,7 +367,10 @@ void LLAvatarActions::startConference(const uuid_vec_t& ids)
LLUUID session_id = gIMMgr->addSession(title, IM_SESSION_CONFERENCE_START, ids[0], id_array);
if (session_id != LLUUID::null)
{
LLIMFloater::show(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater::show(session_id);
FSFloaterIM::show(session_id);
// </FS:Ansariel> [FS communication UI]
}
make_ui_sound("UISndStartIM");
}

View File

@ -38,7 +38,10 @@
#include "llavatariconctrl.h"
#include "llavatarlist.h"
#include "lldraghandle.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "llimview.h"
#include "llfloaterreg.h"
#include "llparticipantlist.h"
@ -318,7 +321,10 @@ void LLCallFloater::updateSession()
voice_channel &&
LLVoiceChannel::STATE_CONNECTED == voice_channel->getState())
{
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
bool show_me = !(im_floater && im_floater->getVisible());
if (show_me)
{

View File

@ -64,11 +64,17 @@
#include "lggcontactsets.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llfloaterreg.h"
#include "llnotificationmanager.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// <FS:Ansariel>
///----------------------------------------------------------------------------
/// Local function declarations, constants, enums, and typedefs
@ -889,7 +895,10 @@ static void on_avatar_name_cache_notify(const LLUUID& agent_id,
args["type"] = LLNotificationsUI::NT_NEARBYCHAT;
if (history_only)
{
LLFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD());
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD());
FSFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<FSFloaterNearbyChat>("fs_nearby_chat", LLSD());
// </FS:Ansariel> [FS communication UI]
nearby_chat->addMessage(chat, true, LLSD());
}
else
@ -916,7 +925,10 @@ void LLAvatarTracker::formFriendship(const LLUUID& id)
// <FS:Ansariel> FIRE-3248: Disable add friend button on IM floater if friendship request accepted
LLUUID im_session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, id);
LLIMFloater* im_floater = LLIMFloater::findInstance(im_session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(im_session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(im_session_id);
// </FS:Ansariel> [FS communication UI]
if (im_floater)
{
im_floater->setEnableAddFriendButton(FALSE);
@ -942,7 +954,10 @@ void LLAvatarTracker::processTerminateFriendship(LLMessageSystem* msg, void**)
// <FS:Ansariel> FIRE-3248: Disable add friend button on IM floater if friendship request accepted
LLUUID im_session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, id);
LLIMFloater* im_floater = LLIMFloater::findInstance(im_session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(im_session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(im_session_id);
// </FS:Ansariel> [FS communication UI]
if (im_floater)
{
im_floater->setEnableAddFriendButton(TRUE);

View File

@ -26,6 +26,8 @@
#include "llviewerprecompiledheaders.h"
#if 0
#include "llchathistory.h"
#include "llavatarnamecache.h"
@ -1553,3 +1555,5 @@ BOOL LLChatHistory::handleUnicodeCharHere(llwchar uni_char)
return LLTextEditor::handleUnicodeCharHere(uni_char);
}
// </FS:Zi>
#endif

View File

@ -24,6 +24,8 @@
* $/LicenseInfo$
*/
#if 0
#ifndef LLCHATHISTORY_H_
#define LLCHATHISTORY_H_
@ -163,3 +165,5 @@ class LLChatHistory : public LLTextEditor // <FS:Zi> FIRE-8600: TAB out of chat
// </FS:Zi>
};
#endif /* LLCHATHISTORY_H_ */
#endif

View File

@ -46,7 +46,10 @@
#include "rlvhandler.h"
// [/RLVa:KB]
#include "llfloaternearbychat.h" // <FS:Zi> Remove floating chat bar
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h" // <FS:Zi> Remove floating chat bar
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
static const S32 msg_left_offset = 10;
static const S32 msg_right_offset = 10;
@ -339,14 +342,20 @@ BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
{
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar::getInstance()->showHistory();
LLFloaterNearbyChat::getInstance()->setVisible(TRUE);
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat::getInstance()->setVisible(TRUE);
FSFloaterNearbyChat::getInstance()->setVisible(TRUE);
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
// <FS:Ansariel> If nearby chat history is docked, we also need
// to open the container floater (FIRE-6265)
if (!gSavedSettings.getBOOL("ChatHistoryTornOff"))
{
LLFloaterReg::showInstance("im_container");
// <FS:Ansariel> [FS communication UI]
//LLFloaterReg::showInstance("im_container");
LLFloaterReg::showInstance("fs_im_container");
// </FS:Ansariel> [FS communication UI]
}
// </FS:Ansariel>
return FALSE;
@ -355,14 +364,20 @@ BOOL LLNearbyChatToastPanel::handleMouseUp (S32 x, S32 y, MASK mask)
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar::getInstance()->showHistory();
LLFloaterNearbyChat::getInstance()->setVisible(TRUE);
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat::getInstance()->setVisible(TRUE);
FSFloaterNearbyChat::getInstance()->setVisible(TRUE);
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
// <FS:Ansariel> If nearby chat history is docked, we also need
// to open the container floater (FIRE-6265)
if (!gSavedSettings.getBOOL("ChatHistoryTornOff"))
{
LLFloaterReg::showInstance("im_container");
// <FS:Ansariel> [FS communication UI]
//LLFloaterReg::showInstance("im_container");
LLFloaterReg::showInstance("fs_im_container");
// </FS:Ansariel> [FS communication UI]
}
// </FS:Ansariel>
return LLPanel::handleMouseUp(x,y,mask);

View File

@ -33,7 +33,10 @@
#include "lleventtimer.h"
#include "llgroupactions.h"
#include "lliconctrl.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "llimview.h"
#include "llfloaterreg.h"
#include "lllocalcliprect.h"
@ -311,8 +314,12 @@ void LLIMWellChiclet::messageCountChanged(const LLSD& session_data)
const LLUUID& session_id = session_data["session_id"];
const S32 counter = LLChicletBar::getInstance()->getTotalUnreadIMCount();
const bool im_not_visible = !LLFloaterReg::instanceVisible("im_container")
&& !LLFloaterReg::instanceVisible("impanel", session_id);
// <FS:Ansariel> [FS communication UI]
//const bool im_not_visible = !LLFloaterReg::instanceVisible("im_container")
// && !LLFloaterReg::instanceVisible("impanel", session_id);
const bool im_not_visible = !LLFloaterReg::instanceVisible("fs_im_container")
&& !LLFloaterReg::instanceVisible("fs_impanel", session_id);
// </FS:Ansariel> [FS communication UI]
setNewMessagesState(counter > mCounter && im_not_visible);
@ -607,7 +614,10 @@ bool LLIMChiclet::getShowNewMessagesIcon()
void LLIMChiclet::onMouseDown()
{
LLIMFloater::toggle(getSessionId());
// <FS:Ansariel> [FS communication UI]
//LLIMFloater::toggle(getSessionId());
FSFloaterIM::toggle(getSessionId());
// </FS:Ansariel> [FS communication UI]
setCounter(0);
}
@ -756,7 +766,10 @@ void LLIMP2PChiclet::updateMenuItems()
if(getSessionId().isNull())
return;
LLIMFloater* open_im_floater = LLIMFloater::findInstance(getSessionId());
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* open_im_floater = LLIMFloater::findInstance(getSessionId());
FSFloaterIM* open_im_floater = FSFloaterIM::findInstance(getSessionId());
// </FS:Ansariel> [FS communication UI]
bool open_window_exists = open_im_floater && open_im_floater->getVisible();
mPopupMenu->getChild<LLUICtrl>("Send IM")->setEnabled(!open_window_exists);
@ -1032,7 +1045,10 @@ void LLIMGroupChiclet::updateMenuItems()
if(getSessionId().isNull())
return;
LLIMFloater* open_im_floater = LLIMFloater::findInstance(getSessionId());
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* open_im_floater = LLIMFloater::findInstance(getSessionId());
FSFloaterIM* open_im_floater = FSFloaterIM::findInstance(getSessionId());
// </FS:Ansariel> [FS communication UI]
bool open_window_exists = open_im_floater && open_im_floater->getVisible();
mPopupMenu->getChild<LLUICtrl>("Chat")->setEnabled(!open_window_exists);
}
@ -1118,7 +1134,10 @@ void LLChicletPanel::onMessageCountChanged(const LLSD& data)
LLUUID session_id = data["session_id"].asUUID();
S32 unread = data["participant_unread"].asInteger();
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if (im_floater && im_floater->getVisible() && im_floater->hasFocus())
{
unread = 0;
@ -1199,7 +1218,10 @@ void LLChicletPanel::onCurrentVoiceChannelChanged(const LLUUID& session_id)
chiclet->setShowSpeaker(true);
if (gSavedSettings.getBOOL("OpenIMOnVoice"))
{
LLIMFloater::show(chiclet->getSessionId());
// <FS:Ansariel> [FS communication UI]
//LLIMFloater::show(chiclet->getSessionId());
FSFloaterIM::show(chiclet->getSessionId());
// </FS:Ansariel> [FS communication UI]
}
}
}
@ -1690,8 +1712,12 @@ bool LLChicletPanel::isAnyIMFloaterDoked()
for (chiclet_list_t::iterator it = mChicletList.begin(); it
!= mChicletList.end(); it++)
{
LLIMFloater* im_floater = LLFloaterReg::findTypedInstance<LLIMFloater>(
"impanel", (*it)->getSessionId());
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLFloaterReg::findTypedInstance<LLIMFloater>(
// "impanel", (*it)->getSessionId());
FSFloaterIM* im_floater = LLFloaterReg::findTypedInstance<FSFloaterIM>(
"fs_impanel", (*it)->getSessionId());
// </FS:Ansariel> [FS communication UI]
if (im_floater != NULL && im_floater->getVisible()
&& !im_floater->isMinimized() && im_floater->isDocked())
{

View File

@ -34,7 +34,10 @@
// newview includes
#include "llchiclet.h"
#include "llimfloater.h" // for LLIMFloater
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h" // for LLIMFloater
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "llpaneltopinfobar.h"
#include "llsyswellwindow.h"
@ -110,7 +113,10 @@ void LLChicletBar::sessionAdded(const LLUUID& session_id, const std::string& nam
chiclet->setIMSessionName(name);
chiclet->setOtherParticipantId(other_participant_id);
LLIMFloater::onIMChicletCreated(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater::onIMChicletCreated(session_id);
FSFloaterIM::onIMChicletCreated(session_id);
// </FS:Ansariel> [FS communication UI]
}
else
@ -125,7 +131,10 @@ void LLChicletBar::sessionRemoved(const LLUUID& session_id)
if(getChicletPanel())
{
// IM floater should be closed when session removed and associated chiclet closed
LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
FSFloaterIM* iMfloater = LLFloaterReg::findTypedInstance<FSFloaterIM>("fs_impanel", session_id);
// </FS:Ansariel> [FS communication UI]
if (iMfloater != NULL)
{
iMfloater->closeFloater();

View File

@ -76,7 +76,10 @@ void LLFirstUse::otherAvatarChatFirst(bool enable)
{
// <FS:Zi> Remove floating chat bar
// firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "chat_bar").with("direction", "top_right").with("distance", 24));
firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "nearby_chat").with("direction", "top_right").with("distance", 24));
// <FS:Ansariel> [FS communication UI]
//firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "nearby_chat").with("direction", "top_right").with("distance", 24));
firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "fs_nearby_chat").with("direction", "top_right").with("distance", 24));
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
}

View File

@ -27,6 +27,8 @@
#include "llviewerprecompiledheaders.h"
#if 0
#include "llfloaternearbychat.h"
#include "llviewercontrol.h"
@ -64,8 +66,12 @@
#include "llbutton.h"
#include "lllayoutstack.h"
#include "llimfloatercontainer.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloatercontainer.h"
//#include "llimfloater.h"
#include "fsfloaterim.h"
#include "fsfloaterimcontainer.h"
// </FS:Ansariel> [FS communication UI]
#include "lllineeditor.h"
//AO - includes for textentry
@ -349,7 +355,10 @@ void LLFloaterNearbyChat::openFloater(const LLSD& key)
// We override this to put nearbychat in the IM floater. -AO
if(isChatMultiTab())
{
LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* floater_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
// only show the floater container if we are actually attached -Zi
if (floater_container && !gSavedSettings.getBOOL("ChatHistoryTornOff"))
{
@ -381,7 +390,10 @@ void LLFloaterNearbyChat::setVisible(BOOL visible)
static LLCachedControl<bool> chatHistoryTornOff(gSavedSettings, "ChatHistoryTornOff");
if (FSUseNearbyChatConsole)
{
LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* floater_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
if (floater_container && !chatHistoryTornOff && !floater_container->getVisible())
{
// In case the nearby chat is docked into the IM floater and the
@ -406,7 +418,10 @@ void LLFloaterNearbyChat::onFocusReceived()
void LLFloaterNearbyChat::onOpen(const LLSD& key )
{
LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* floater_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
if (floater_container)
{
if (gSavedSettings.getBOOL("ChatHistoryTornOff"))
@ -612,7 +627,10 @@ BOOL LLFloaterNearbyChat::getVisible()
{
if(isChatMultiTab())
{
LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* im_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
// Treat inactive floater as invisible.
bool is_active = im_container->getActiveFloater() == this;
@ -631,3 +649,5 @@ BOOL LLFloaterNearbyChat::getVisible()
return LLDockableFloater::getVisible();
}
}
#endif

View File

@ -25,6 +25,8 @@
* $/LicenseInfo$
*/
#if 0
#ifndef LL_LLFLOATERNEARBYCHAT_H
#define LL_LLFLOATERNEARBYCHAT_H
@ -113,3 +115,5 @@ private:
};
#endif
#endif

View File

@ -52,13 +52,19 @@
#include "llfloaterabout.h"
#include "llfloaterhardwaresettings.h"
#include "llfloatersidepanelcontainer.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "llkeyboard.h"
#include "llmodaldialog.h"
#include "llnavigationbar.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llnotifications.h"
#include "llnotificationsutil.h"
@ -580,13 +586,16 @@ void LLFloaterPreference::saveAvatarProperties( void )
BOOL LLFloaterPreference::postBuild()
{
gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&LLIMFloater::processChatHistoryStyleUpdate, _2));
gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&LLFloaterNearbyChat::processChatHistoryStyleUpdate, _2));
gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLIMFloater::processChatHistoryStyleUpdate, _2));
gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLFloaterNearbyChat::processChatHistoryStyleUpdate, _2));
// <FS:Ansariel> [FS communication UI]
//gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&LLIMFloater::processChatHistoryStyleUpdate, _2));
//gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&LLFloaterNearbyChat::processChatHistoryStyleUpdate, _2));
//gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLIMFloater::processChatHistoryStyleUpdate, _2));
//gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLFloaterNearbyChat::processChatHistoryStyleUpdate, _2));
gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&FSFloaterIM::processChatHistoryStyleUpdate, _2));
gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&FSFloaterNearbyChat::processChatHistoryStyleUpdate, _2));
gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&FSFloaterIM::processChatHistoryStyleUpdate, _2));
gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&FSFloaterNearbyChat::processChatHistoryStyleUpdate, _2));
// </FS:Ansariel> [FS communication UI]
gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLViewerChat::signalChatFontChanged));

View File

@ -53,7 +53,7 @@
#include "llviewerstats.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychatbar.h"
#include "llnearbychathub.h"
#include "fsnearbychathub.h"
// </FS:Zi>
#include "llappearancemgr.h"
#include "llgesturelistener.h"
@ -1013,7 +1013,7 @@ void LLGestureMgr::runStep(LLMultiGesture* gesture, LLGestureStep* step)
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar::getInstance()->sendChatFromViewer(chat_text, CHAT_TYPE_NORMAL, animate);
LLNearbyChat::instance().sendChatFromViewer(chat_text, CHAT_TYPE_NORMAL, animate);
FSNearbyChat::instance().sendChatFromViewer(chat_text, CHAT_TYPE_NORMAL, animate);
// </FS:Zi>
gesture->mCurrentStep++;

View File

@ -39,7 +39,10 @@
#include "llimview.h" // for gIMMgr
#include "llnotificationsutil.h"
#include "llstatusbar.h" // can_afford_transaction()
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "groupchatlistener.h"
// [RLVa:KB] - Checked: 2011-03-28 (RLVa-1.3.0f)
#include "llslurl.h"
@ -489,7 +492,10 @@ LLUUID LLGroupActions::startIM(const LLUUID& group_id)
group_id);
if (session_id != LLUUID::null)
{
LLIMFloater::show(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater::show(session_id);
FSFloaterIM::show(session_id);
// </FS:Ansariel> [FS communication UI]
}
make_ui_sound("UISndStartIM");
return session_id;

View File

@ -26,6 +26,8 @@
#include "llviewerprecompiledheaders.h"
#if 0
#include "llimfloater.h"
#include "llnotificationsutil.h"
@ -1872,3 +1874,5 @@ void LLIMFloater::setEnableAddFriendButton(BOOL enabled)
getChild<LLButton>("add_friend_btn")->setEnabled(enabled);
}
// </FS:Ansariel>
#endif

View File

@ -24,6 +24,8 @@
* $/LicenseInfo$
*/
#if 0
#ifndef LL_IMFLOATER_H
#define LL_IMFLOATER_H
@ -221,3 +223,5 @@ private:
#endif // LL_IMFLOATER_H
#endif

View File

@ -27,6 +27,8 @@
#include "llviewerprecompiledheaders.h"
#if 0
#include "llimfloatercontainer.h"
#include "llfloaterreg.h"
#include "llimview.h"
@ -286,3 +288,5 @@ void LLIMFloaterContainer::setMinimized(BOOL b)
}
// EOF
#endif

View File

@ -24,6 +24,8 @@
* $/LicenseInfo$
*/
#if 0
#ifndef LL_LLIMFLOATERCONTAINER_H
#define LL_LLIMFLOATERCONTAINER_H
@ -71,3 +73,5 @@ private:
};
#endif // LL_LLIMFLOATERCONTAINER_H
#endif

View File

@ -48,7 +48,10 @@
#include "llavatariconctrl.h"
#include "llcallingcard.h"
#include "llchat.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "llgroupiconctrl.h"
#include "llmd5.h"
#include "llmutelist.h"
@ -59,7 +62,10 @@
#include "llnotificationsutil.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llspeakers.h" //for LLIMSpeakerMgr
#include "lltextbox.h"
@ -116,7 +122,10 @@ static void on_avatar_name_cache_toast(const LLUUID& agent_id,
args["FROM"] = av_name.getCompleteName();
args["FROM_ID"] = msg["from_id"];
args["SESSION_ID"] = msg["session_id"];
LLNotificationsUtil::add("IMToast", args, LLSD(), boost::bind(&LLIMFloater::show, msg["session_id"].asUUID()));
// <FS:Ansariel> [FS communication UI]
//LLNotificationsUtil::add("IMToast", args, LLSD(), boost::bind(&LLIMFloater::show, msg["session_id"].asUUID()));
LLNotificationsUtil::add("IMToast", args, LLSD(), boost::bind(&FSFloaterIM::show, msg["session_id"].asUUID()));
// </FS:Ansariel> [FS communication UI]
}
void toast_callback(const LLSD& msg){
@ -168,7 +177,10 @@ void toast_callback(const LLSD& msg){
}
// Skip toasting if we have open window of IM with this session id
LLIMFloater* open_im_floater = LLIMFloater::findInstance(msg["session_id"]);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* open_im_floater = LLIMFloater::findInstance(msg["session_id"]);
FSFloaterIM* open_im_floater = FSFloaterIM::findInstance(msg["session_id"]);
// </FS:Ansariel> [FS communication UI]
if (open_im_floater && open_im_floater->getVisible())
{
return;
@ -193,7 +205,10 @@ void LLIMModel::setActiveSessionID(const LLUUID& session_id)
LLIMModel::LLIMModel()
{
addNewMsgCallback(boost::bind(&LLIMFloater::newIMCallback, _1));
// <FS:Ansariel> [FS communication UI]
//addNewMsgCallback(boost::bind(&LLIMFloater::newIMCallback, _1));
addNewMsgCallback(boost::bind(&FSFloaterIM::newIMCallback, _1));
// </FS:Ansariel> [FS communication UI]
addNewMsgCallback(boost::bind(&toast_callback, _1));
}
@ -712,7 +727,10 @@ void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, con
gIMMgr->notifyObserverSessionIDUpdated(old_session_id, new_session_id);
}
LLIMFloater* im_floater = LLIMFloater::findInstance(old_session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(old_session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(old_session_id);
// </FS:Ansariel> [FS communication UI]
if (im_floater)
{
im_floater->sessionInitReplyReceived(new_session_id);
@ -882,7 +900,10 @@ bool LLIMModel::addToHistory(const LLUUID& session_id, const std::string& from,
chat.mSourceType = CHAT_SOURCE_AGENT;
chat.mText = utf8_text;
chat.mTimeStr = timestr;
LLFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD());
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD());
FSFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<FSFloaterNearbyChat>("fs_nearby_chat", LLSD());
// </FS:Ansariel> [FS communication UI]
nearby_chat->addMessage(chat, true, LLSD());
}
// </Ansariel>
@ -1737,7 +1758,10 @@ LLIMMgr::onConfirmForceCloseError(
//only 1 option really
LLUUID session_id = notification["payload"]["session_id"];
LLFloater* floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLFloater* floater = LLIMFloater::findInstance(session_id);
LLFloater* floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if ( floater )
{
floater->closeFloater(FALSE);
@ -2603,7 +2627,10 @@ LLIMMgr::LLIMMgr()
mPendingInvitations = LLSD::emptyMap();
mPendingAgentListUpdates = LLSD::emptyMap();
LLIMModel::getInstance()->addNewMsgCallback(boost::bind(&LLIMFloater::sRemoveTypingIndicator, _1));
// <FS:Ansariel> [FS communication UI]
//LLIMModel::getInstance()->addNewMsgCallback(boost::bind(&LLIMFloater::sRemoveTypingIndicator, _1));
LLIMModel::getInstance()->addNewMsgCallback(boost::bind(&FSFloaterIM::sRemoveTypingIndicator, _1));
// </FS:Ansariel> [FS communication UI]
}
// Add a message to a session.
@ -2713,7 +2740,10 @@ void LLIMMgr::addMessage(
// <FS:WoLf> IM Sounds only for sessions not in focus
else if(PlayModeUISndNewIncomingIMSession == 3 && dialog == IM_NOTHING_SPECIAL)
{
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if (im_floater && !im_floater->hasFocus())
{
make_ui_sound("UISndNewIncomingIMSession");
@ -2721,7 +2751,10 @@ void LLIMMgr::addMessage(
}
else if(PlayModeUISndNewIncomingGroupIMSession == 3 && dialog != IM_NOTHING_SPECIAL)
{
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if (im_floater && !im_floater->hasFocus())
{
make_ui_sound("UISndNewIncomingGroupIMSession");
@ -2766,7 +2799,10 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
// <FS:Zi> Remove floating chat bar
// LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
// LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
FSFloaterNearbyChat* nearby_chat = FSFloaterNearbyChat::getInstance();
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
if(nearby_chat)
@ -3095,7 +3131,10 @@ void LLIMMgr::clearPendingInvitation(const LLUUID& session_id)
void LLIMMgr::processAgentListUpdates(const LLUUID& session_id, const LLSD& body)
{
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if ( im_floater )
{
im_floater->processAgentListUpdates(body);
@ -3452,7 +3491,10 @@ void LLIMMgr::processIMTypingCore(const LLIMInfo* im_info, BOOL typing)
}
// </Ansariel>
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if ( im_floater )
{
@ -3498,7 +3540,10 @@ public:
speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(session_id));
}
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if ( im_floater )
{
if ( body.has("session_info") )
@ -3592,7 +3637,10 @@ public:
const LLSD& input) const
{
LLUUID session_id = input["body"]["session_id"].asUUID();
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if ( im_floater )
{
im_floater->processSessionUpdate(input["body"]["info"]);

View File

@ -28,10 +28,13 @@
#include "llviewerprecompiledheaders.h"
#if 0
#include "llnearbychatbarlistener.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychatbar.h"
#include "llnearbychathub.h"
#include "fsnearbychathub.h"
// </FS:Zi>
#include "llagent.h"
@ -105,7 +108,10 @@ void LLNearbyChatBarListener::sendChat(LLSD const & chat_data) const
// Send it as if it was typed in
// <FS:Zi> Remove floating chat bar
// mChatbar.sendChatFromViewer(chat_to_send, type_o_chat, (BOOL)(channel == 0));
LLNearbyChat::instance().sendChatFromViewer(chat_to_send, type_o_chat, ((BOOL)(channel == 0)) && gSavedSettings.getBOOL("FSPlayChatAnimation"));
// <FS:Ansariel> [FS communication UI]
//LLNearbyChat::instance().sendChatFromViewer(chat_to_send, type_o_chat, ((BOOL)(channel == 0)) && gSavedSettings.getBOOL("FSPlayChatAnimation"));
FSNearbyChat::instance().sendChatFromViewer(chat_to_send, type_o_chat, ((BOOL)(channel == 0)) && gSavedSettings.getBOOL("FSPlayChatAnimation"));
// </FS:Ansariel> [FS communication UI]
// <FS:Zi>
}
#endif

View File

@ -26,6 +26,7 @@
* $/LicenseInfo$
*/
#if 0
#ifndef LL_LLNEARBYCHATBARLISTENER_H
#define LL_LLNEARBYCHATBARLISTENER_H
@ -51,3 +52,4 @@ private:
#endif // LL_LLNEARBYCHATBARLISTENER_H
#endif

View File

@ -43,7 +43,10 @@
#include "llviewerwindow.h"//for screen channel position
// <FS:Zi> Remove floating chat bar
// #include "llnearbychatbar.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llrootview.h"
#include "lllayoutstack.h"
@ -528,7 +531,9 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,
// <FS:Ansariel> Optional muted chat history
//return;
{
LLFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD()); // ## Zi - Post merge fixup ##
// <FS:Ansariel> [FS communication UI]
FSFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<FSFloaterNearbyChat>("fs_nearby_chat", LLSD()); // ## Zi - Post merge fixup ##
// <FS:Ansariel> [FS communication UI]
nearby_chat->addMessage(chat_msg, true, args);
return;
}
@ -559,7 +564,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,
// ## Zi - Post merge fixup ## // LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
// ## Zi - Post merge fixup ## // LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
LLFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD()); // ## Zi - Post merge fixup ##
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLFloaterNearbyChat>("nearby_chat", LLSD()); // ## Zi - Post merge fixup ##
FSFloaterNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<FSFloaterNearbyChat>("fs_nearby_chat", LLSD()); // ## Zi - Post merge fixup ##
// </FS:Ansariel> [FS communication UI]
// Build notification data
LLSD notification;
notification["message"] = chat_msg.mText;

View File

@ -38,7 +38,10 @@
#include "llavatarname.h"
class LLIMFloater;
// <FS:Ansariel> [FS communication UI]
//class LLIMFloater;
class FSFloaterIM;
// </FS:Ansariel> [FS communication UI]
namespace LLNotificationsUI
{
@ -415,7 +418,10 @@ private:
/**
* Find IM floater based on "from_id"
*/
static LLIMFloater* findIMFloater(const LLNotificationPtr& notification);
// <FS:Ansariel> [FS communication UI]
//static LLIMFloater* findIMFloater(const LLNotificationPtr& notification);
static FSFloaterIM* findIMFloater(const LLNotificationPtr& notification);
// </FS:Ansariel> [FS communication UI]
// [SL:KB] - Patch: UI-Notifications | Checked: 2011-04-11 (Catznip-2.5.0a) | Added: Catznip-2.5.0a
/**

View File

@ -34,11 +34,17 @@
#include "llurlaction.h"
#include "llagent.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "llimview.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llnotificationhandler.h"
#include "llnotifications.h"
@ -296,11 +302,17 @@ bool LLHandlerUtil::canSpawnToast(const LLNotificationPtr& notification)
}
// static
LLIMFloater* LLHandlerUtil::findIMFloater(const LLNotificationPtr& notification)
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* LLHandlerUtil::findIMFloater(const LLNotificationPtr& notification)
FSFloaterIM* LLHandlerUtil::findIMFloater(const LLNotificationPtr& notification)
// </FS:Ansariel> [FS communication UI]
{
LLUUID from_id = notification->getPayload()["from_id"];
LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id);
return LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
// <FS:Ansariel> [FS communication UI]
//return LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
return LLFloaterReg::findTypedInstance<FSFloaterIM>("fs_impanel", session_id);
// </FS:Ansariel> [FS communication UI]
}
// static
@ -308,7 +320,10 @@ bool LLHandlerUtil::isIMFloaterOpened(const LLNotificationPtr& notification)
{
bool res = false;
LLIMFloater* im_floater = findIMFloater(notification);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = findIMFloater(notification);
FSFloaterIM* im_floater = findIMFloater(notification);
// </FS:Ansariel> [FS communication UI]
if (im_floater != NULL)
{
res = im_floater->getVisible() == TRUE;
@ -321,7 +336,10 @@ bool LLHandlerUtil::isIMFloaterFocused(const LLNotificationPtr& notification)
{
bool res = false;
LLIMFloater* im_floater = findIMFloater(notification);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = findIMFloater(notification);
FSFloaterIM* im_floater = findIMFloater(notification);
// </FS:Ansariel> [FS communication UI]
if (im_floater != NULL)
{
res = im_floater->hasFocus() == TRUE;
@ -484,7 +502,10 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
// static
void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type)
{
LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
FSFloaterNearbyChat* nearby_chat = FSFloaterNearbyChat::getInstance();
// </FS:Ansariel> [FS communication UI]
if(nearby_chat)
{
LLChat chat_msg(notification->getMessage());
@ -573,7 +594,10 @@ void LLHandlerUtil::addNotifPanelToIM(const LLNotificationPtr& notification)
// static
void LLHandlerUtil::updateIMFLoaterMesages(const LLUUID& session_id)
{
LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(session_id);
// </FS:Ansariel> [FS communication UI]
if (im_floater != NULL && im_floater->getVisible())
{
im_floater->updateMessages();

View File

@ -31,7 +31,10 @@
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
// #include "llnearbychatbar.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llnotificationhandler.h"
#include "llnotifications.h"
@ -98,7 +101,10 @@ bool LLTipHandler::processNotification(const LLSD& notify)
LLHandlerUtil::logToNearbyChat(notification, CHAT_SOURCE_SYSTEM);
// don't show toast if Nearby Chat is opened
LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
FSFloaterNearbyChat* nearby_chat = FSFloaterNearbyChat::getInstance();
// </FS:Ansariel> [FS communication UI]
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar* nearby_chat_bar = LLNearbyChatBar::getInstance();
// if (!nearby_chat_bar->isMinimized() && nearby_chat_bar->getVisible() && nearby_chat->getVisible())

View File

@ -54,7 +54,10 @@
#include "llfloaterreg.h"
#include "llfocusmgr.h"
#include "llhttpsender.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
#include "lllocationhistory.h"
#include "llimageworker.h"
@ -65,7 +68,10 @@
#include "llmoveview.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llnotifications.h"
#include "llnotificationsutil.h"
@ -1686,7 +1692,10 @@ LLWorld::getInstance()->addRegion(gFirstSimHandle, gFirstSim, first_sim_size_x,
//so I just moved nearby history loading a few states further
if (gSavedPerAccountSettings.getBOOL("LogShowHistory"))
{
LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
FSFloaterNearbyChat* nearby_chat = FSFloaterNearbyChat::getInstance();
// </FS:Ansariel> [FS communication UI]
if (nearby_chat) nearby_chat->loadHistory();
}
display_startup();
@ -2532,7 +2541,10 @@ LLWorld::getInstance()->addRegion(gFirstSimHandle, gFirstSim, first_sim_size_x,
LLAgentPicksInfo::getInstance()->requestNumberOfPicks();
LLIMFloater::initIMFloater();
// <FS:Ansariel> [FS communication UI]
//LLIMFloater::initIMFloater();
FSFloaterIM::initIMFloater();
// </FS:Ansariel> [FS communication UI]
display_startup();
llassert(LLPathfindingManager::getInstance() != NULL);

View File

@ -40,7 +40,10 @@
#include "lltrans.h"
#include "llnotificationsutil.h"
#include "llviewermessage.h"
#include "llimfloater.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloater.h"
#include "fsfloaterim.h"
// </FS:Ansariel> [FS communication UI]
const S32 BOTTOM_PAD = VPAD * 3;
const S32 IGNORE_BTN_TOP_DELTA = 3*VPAD;//additional ignore_btn padding
@ -561,7 +564,10 @@ LLIMToastNotifyPanel::~LLIMToastNotifyPanel()
// This may happened when IM floater reloads messages, exactly when user
// changes layout of IM chat log(disable/enable plaintext mode).
// See EXT-6500
LLIMFloater* im_floater = LLIMFloater::findInstance(mSessionID);
// <FS:Ansariel> [FS communication UI]
//LLIMFloater* im_floater = LLIMFloater::findInstance(mSessionID);
FSFloaterIM* im_floater = FSFloaterIM::findInstance(mSessionID);
// </FS:Ansariel> [FS communication UI]
if (im_floater != NULL && !im_floater->isDead())
{
mCloseNotificationOnDestroy = false;

View File

@ -126,7 +126,10 @@
#include "llmoveview.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
// <//FS:Zi>
#include "llpanelblockedlist.h"
#include "llpanelclassified.h"
@ -153,6 +156,8 @@
#include "fscontactsfloater.h"
#include "fsfloaterblocklist.h"
#include "fsfloatergroup.h"
#include "fsfloaterim.h"
#include "fsfloaterimcontainer.h"
#include "fsfloaterplacedetails.h"
#include "fsfloaterprofile.h"
#include "fsfloatersearch.h"
@ -224,7 +229,10 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
// <FS:Zi> Remove floating chat bar
// LLFloaterReg::add("chat_bar", "floater_chat_bar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChatBar>);
LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNearbyChat>);
// <FS:Ansariel> [FS communication UI]
//LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNearbyChat>);
LLFloaterReg::add("fs_nearby_chat", "floater_fs_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterNearbyChat>);
// </FS:Ansariel> [FS communication UI]
// </FS:Zi>
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
@ -249,8 +257,12 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("help_browser", "floater_help_browser.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHelpBrowser>);
LLFloaterReg::add("hud", "floater_hud.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHUD>);
LLFloaterReg::add("impanel", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloater>);
LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloaterContainer>);
// <FS:Ansariel> [FS communication UI]
//LLFloaterReg::add("impanel", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloater>);
//LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloaterContainer>);
LLFloaterReg::add("fs_impanel", "floater_fs_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterIM>);
LLFloaterReg::add("fs_im_container", "floater_fs_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<FSFloaterIMContainer>);
// <FS:Ansariel> [FS communication UI]
LLFloaterReg::add("im_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMWellWindow>);
LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>);
LLFloaterReg::add("inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);

View File

@ -42,7 +42,7 @@
#include "llagent.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychatbar.h"
#include "llnearbychathub.h"
#include "fsnearbychathub.h"
// </FS:Zi>
// Globals
@ -135,7 +135,7 @@ void LLViewerGesture::doTrigger( BOOL send_chat )
// with the gesture animation.
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar::getInstance()->sendChatFromViewer(mOutputString, CHAT_TYPE_NORMAL, FALSE);
LLNearbyChat::instance().sendChatFromViewer(mOutputString, CHAT_TYPE_NORMAL, FALSE);
FSNearbyChat::instance().sendChatFromViewer(mOutputString, CHAT_TYPE_NORMAL, FALSE);
}
}

View File

@ -33,7 +33,7 @@
#include "llagentcamera.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychatbar.h"
#include "llnearbychathub.h"
#include "fsnearbychathub.h"
#include "lllineeditor.h"
// </FS:Zi>
#include "llviewercontrol.h"
@ -582,7 +582,7 @@ void start_chat( EKeystate s )
// start chat
// <FS:Zi> Remove floating chat bar
// LLNearbyChatBar::startChat(NULL);
LLNearbyChat::instance().showDefaultChatBar(TRUE);
FSNearbyChat::instance().showDefaultChatBar(TRUE);
// </FS:Zi>
}
@ -620,7 +620,7 @@ void start_gesture( EKeystate s )
// LLNearbyChat::startChat(NULL);
//}
LLNearbyChat::instance().showDefaultChatBar(TRUE,"/");
FSNearbyChat::instance().showDefaultChatBar(TRUE,"/");
// </FS:Ansariel>
}
}

View File

@ -80,7 +80,10 @@
#include <boost/tokenizer.hpp>
#include "llinventorydefines.h"
#include "llimfloatercontainer.h"
// <FS:Ansariel> [FS communication UI]
//#include "llimfloatercontainer.h"
#include "fsfloaterimcontainer.h"
// </FS:Ansariel> [FS communication UI]
class LLFileEnableUpload : public view_listener_t
@ -662,7 +665,10 @@ class LLFileCloseWindow : public view_listener_t
bool handleEvent(const LLSD& userdata)
{
// If the IM container is focused, try to close the selected tab instead of the container -KC
LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
FSFloaterIMContainer* im_container = FSFloaterIMContainer::getInstance();
// </FS:Ansariel> [FS communication UI]
if (im_container && im_container->hasFocus())
{
LLFloater* floater = im_container->getActiveFloater();

View File

@ -70,7 +70,10 @@
#include "llinventorypanel.h"
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
//#include "llfloaternearbychat.h"
#include "fsfloaternearbychat.h"
// <FS:Ansariel> [FS communication UI]
// </FS:Zi>
#include "llnotifications.h"
#include "llnotificationsutil.h"
@ -2504,7 +2507,10 @@ void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string m
// Treat like a system message and put in chat history.
chat.mText = av_name.getCompleteName() + ": " + message;
LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
FSFloaterNearbyChat* nearby_chat = FSFloaterNearbyChat::getInstance();
// </FS:Ansariel> [FS communication UI]
if(nearby_chat)
{
nearby_chat->addMessage(chat);
@ -3298,7 +3304,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Note: lie to Nearby Chat, pretending that this is NOT an IM, because
// IMs from obejcts don't open IM sessions.
LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
FSFloaterNearbyChat* nearby_chat = FSFloaterNearbyChat::getInstance();
// </FS:Ansariel> [FS communication UI]
if(!chat_from_system && nearby_chat)
{
chat.mOwnerID = from_id;
@ -7474,7 +7483,10 @@ void notify_cautioned_script_question(const LLSD& notification, const LLSD& resp
// [RLVa:KB] - Checked: 2012-07-28 (RLVa-1.4.7)
if (caution)
{
LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
// <FS:Ansariel> [FS communication UI]
//LLFloaterNearbyChat* nearby_chat = LLFloaterNearbyChat::getInstance();
FSFloaterNearbyChat* nearby_chat = FSFloaterNearbyChat::getInstance();
// </FS:Ansariel> [FS communication UI]
if(nearby_chat)
{
LLChat chat_msg(notice.getString());

View File

@ -202,7 +202,7 @@
// <FS:Zi> Remove floating chat bar
// #include "llnearbychat.h"
#include "llnearbychathub.h"
#include "fsnearbychathub.h"
// </FS:Zi>
#include "llwindowlistener.h"
#include "llviewerwindowlistener.h"
@ -2110,7 +2110,7 @@ void LLViewerWindow::initWorldUI()
// <FS:Zi> Autohide main chat bar if applicable
BOOL visible=!gSavedSettings.getBOOL("AutohideChatBar");
LLNearbyChat::instance().showDefaultChatBar(visible);
FSNearbyChat::instance().showDefaultChatBar(visible);
gSavedSettings.setBOOL("MainChatbarVisible",visible);
// </FS:Zi>
}
@ -2702,8 +2702,8 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
// // cursor with arrow keys, so allow movement
// if (chat_editor->getText().empty()
// || gSavedSettings.getBOOL("ArrowKeysAlwaysMove"))
if(LLNearbyChat::instance().defaultChatBarHasFocus() &&
(LLNearbyChat::instance().defaultChatBarIsIdle() ||
if(FSNearbyChat::instance().defaultChatBarHasFocus() &&
(FSNearbyChat::instance().defaultChatBarIsIdle() ||
// <FS:PP> Attempt to speed up things a little
// gSavedSettings.getBOOL("ArrowKeysAlwaysMove")))
ArrowKeysAlwaysMove))
@ -2782,7 +2782,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
// LLNearbyChatBar::getInstance()->startChat(NULL);
// return TRUE;
// }
LLNearbyChat::instance().showDefaultChatBar(TRUE);
FSNearbyChat::instance().showDefaultChatBar(TRUE);
return TRUE;
// </FS:Zi>
}

View File

@ -590,7 +590,10 @@ bool RlvUIEnabler::canViewRegionProperties()
bool RlvUIEnabler::hasOpenIM(const LLUUID& idAgent)
{
LLUUID idSession = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, idAgent);
return (NULL != LLFloaterReg::findInstance("impanel", idSession));
// <FS:Ansariel> [FS communication UI]
//return (NULL != LLFloaterReg::findInstance("impanel", idSession));
return (NULL != LLFloaterReg::findInstance("fs_impanel", idSession));
// </FS:Ansariel> [FS communication UI]
}
// Checked: 2011-11-04 (RLVa-1.4.4a) | Modified: RLVa-1.4.4a

View File

@ -221,7 +221,7 @@
width="80">
<commit_callback
function="Floater.Toggle"
parameter="nearby_chat" />
parameter="fs_nearby_chat" />
</button>
<nearby_chat_voice_monitor layout="topleft"

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="SAMTALER"/>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="Til" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="Gespräche"/>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="ls_control_panel">
<layout_panel name="gprofile_panel">
<button name="group_info_btn" tool_tip="Zeige Gruppenprofil"/>
</layout_panel>
<layout_panel name="profile_panel">
<button name="view_profile_btn" tool_tip="Zeige Einwohnerprofil"/>
</layout_panel>
<layout_panel name="trans_panel">
<button name="translate_btn" tool_tip="Chat mit konfiguriertem Dienst übersetzen"/>
</layout_panel>
<layout_panel name="friend_panel">
<button name="add_friend_btn" tool_tip="Einwohner als Freund hinzufügen"/>
</layout_panel>
<layout_panel name="tp_panel">
<button name="teleport_btn" tool_tip="Teleport anbieten"/>
</layout_panel>
<layout_panel name="share_panel">
<button name="share_btn" tool_tip="Objekt an Einwohner senden"/>
</layout_panel>
<layout_panel name="pay_panel">
<button name="pay_btn" tool_tip="Geld an Einwohner überweisen"/>
</layout_panel>
<layout_panel name="call_btn_panel">
<button name="call_btn" tool_tip="Einwohner über Voice anrufen"/>
</layout_panel>
<layout_panel name="end_call_btn_panel">
<button name="end_call_btn" tool_tip="Anruf beenden"/>
</layout_panel>
<layout_panel name="voice_ctrls_btn_panel">
<button name="voice_ctrls_btn" tool_tip="Anruf-Eigenschaften"/>
</layout_panel>
<layout_panel name="im_history_btn_panel">
<button name="im_history_btn" tool_tip="IM-Protokoll öffnen"/>
</layout_panel>
</layout_stack>
<check_box label="Viewer-Kennung senden" name="FSSupportGroupChatPrefix_toggle" tool_tip="Fügt ein (FS) am Anfang jeder Nachrichtig hinzu, damit die Support-Mitarbeiter wissen, ob sich eine Frage auf Phoenix oder Firestorm bezieht. Da hierdurch eine unnötige Konfusion vermieden wird, wäre nett, diese Option zu aktivieren!"/>
<button name="send_sysinfo_btn" tool_tip="System-Informationen übermitteln"/>
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="An" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="money_tracker" title="Tip-Tracker" width="250">
<chat_history name="money_chat_history" width="248"/>
<fs_chat_history name="money_chat_history" width="248"/>
<button name="Clear" label="Löschen" width="242"/>
</floater>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="Chat in der Nähe">
<layout_stack name="main_layout_stack">
<layout_panel name="chat_history_and_buttons_panel">
<button name="translate_btn" tool_tip="Chat mit konfiguriertem Dienst übersetzen"/>
<button name="chat_history_btn" tool_tip="Protokoll für Chat in der Nähe öffnen"/>
<button name="chat_history_muted_btn" tool_tip="Ignorierten Chat in Chat in der Nähe anzeigen"/>
</layout_panel>
<layout_panel name="chat_bar_visibility_panel">
<layout_stack name="chat_bar_channel_spinner_layout_stack">
<layout_panel name="chat_bar_layout_panel">
<line_editor name="chat_box" label="An Chat in der Nähe"/>
</layout_panel>
<layout_panel name="channel_spinner_visibility_panel">
<spinner label="Kanal:" name="ChatChannel" tool_tip="Kanal, an den der Chat gesendet werden soll. Kann unter Einstellungen -> Chat -> Firestorm -> Kanalauswahl in Eingabezeile anzeigen aktiviert werden." label_width="35"/>
</layout_panel>
</layout_stack>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<multi_floater
can_close="true"
can_minimize="false"
can_resize="true"
height="390"
layout="topleft"
name="floater_im_box"
save_rect="true"
save_visibility="true"
save_dock_state="true"
single_instance="true"
title="Conversations"
width="396">
<tab_container
follows="left|right|top|bottom"
height="390"
layout="topleft"
left="1"
name="im_box_tab_container"
tab_position="left"
tab_drag_commit="true"
tab_width="115"
tab_max_width = "115"
tab_height="20"
use_custom_icon_ctrl="false"
tab_icon_ctrl_pad="2"
halign="left"
use_ellipses="true"
top="0"
width="394">
<first_tab
tab_bottom_image_flash="Toolbar_Left_Flash"/>
<middle_tab
tab_bottom_image_flash="Toolbar_Middle_Flash"/>
<last_tab
tab_bottom_image_flash="Toolbar_Right_Flash"/>
</tab_container>
<icon
color="DefaultShadowLight"
enabled="false"
follows="left|right|bottom"
height="20"
image_name="tabarea.tga"
layout="bottomleft"
left="1"
name="im_box_tab_container_icon"
bottom="10"
width="394" />
</multi_floater>

View File

@ -0,0 +1,408 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
background_visible="true"
show_title="true"
follows="all"
height="350"
layout="topleft"
left="0"
name="panel_im"
top="0"
can_dock="false"
can_minimize="true"
can_close="true"
visible="false"
width="394"
can_resize="true"
min_width="250"
min_height="150">
<layout_stack
border_size="0"
animate="false"
follows="top|left"
clip="false"
height="27"
width="200"
left_pad="0"
layout="topleft"
orientation="horizontal"
name="ls_control_panel"
top="13"
left="3">
<layout_panel
auto_resize="false"
user_resize="false"
name="slide_panel"
top="0"
layout="topleft"
height="24"
width="40"
follows="left|top">
<button
height="20"
follows="left|top"
top="0"
left="5"
image_overlay="TabIcon_Open_Off"
layout="topleft"
width="24"
name="slide_left_btn" />
<button
height="20"
follows="left|top"
top="0"
left="5"
image_overlay="TabIcon_Close_Off"
width="24"
name="slide_right_btn" />
</layout_panel>
<layout_panel
name="gprofile_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
name="group_info_btn"
follows="left|top"
top="0"
height="20"
width="24"
left_delta="5"
image_overlay="profile_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Show this group's profile"/>
</layout_panel>
<layout_panel
name="profile_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
name="view_profile_btn"
follows="left|top"
top="0"
height="20"
width="24"
left_delta="5"
image_overlay="profile_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Show this resident's profile" />
</layout_panel>
<!-- Ansariel: Translation of IMs is currently not available
<layout_panel
name="trans_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="20"
width="20"
follows="left|top">
<button
follows="left|top"
top="0"
width="24"
height="24"
image_overlay="TabIcon_Translate_Off"
control_name="TranslateChat"
is_toggle="true"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Use selected translation service"
name="translate_btn"/>
</layout_panel>
-->
<layout_panel
name="friend_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
height="20"
top="0"
left_delta="5"
image_overlay="friends_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Add this resident as a friend"
name="add_friend_btn"
width="24" />
</layout_panel>
<layout_panel
name="tp_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
top="0"
height="20"
left_delta="5"
image_overlay="teleport_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Summon / Teleport this resident"
name="teleport_btn"
width="24" />
</layout_panel>
<layout_panel
name="share_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
top="0"
height="20"
left_delta="5"
image_overlay="gift_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Send an item to this resident"
name="share_btn"
width="24" />
</layout_panel>
<layout_panel
name="pay_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
top="0"
height="20"
left_delta="5"
image_overlay="sale_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Send money to this resident"
name="pay_btn"
width="24" />
</layout_panel>
<layout_panel
name="call_btn_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
height="20"
left_delta="5"
image_overlay="call_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Add a voice to this chat"
name="call_btn"
top="0"
width="24" />
</layout_panel>
<layout_panel
name="end_call_btn_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
height="20"
left_delta="5"
image_overlay="call_end_icon_24x24"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="End Voice Call"
name="end_call_btn"
top="0"
width="24" />
</layout_panel>
<layout_panel
name="voice_ctrls_btn_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
height="20"
left_delta="10"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Voice Properties"
image_overlay="VoicePTT_Off"
name="voice_ctrls_btn"
top="0"
width="24" />
</layout_panel>
<layout_panel
name="im_history_btn_panel"
auto_resize="false"
user_resize="false"
top="0"
layout="topleft"
height="24"
width="27"
follows="left|top">
<button
follows="left|top"
height="20"
left_delta="5"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Open this Instant Message's past history."
image_overlay="List_View_On"
name="im_history_btn"
top="0"
width="25" />
</layout_panel>
</layout_stack>
<!-- Checkbox for FS prefix on support groups -->
<check_box
visible="true"
control_name="FSSupportGroupChatPrefix2"
follows="left|top"
height="18"
label="Specify viewer type"
layout="topleft"
left_pad="-50"
name="FSSupportGroupChatPrefix_toggle"
tab_group="5"
tool_tip="Add (FS) in front of your messages to help support staff understand whether your question pertains to Phoenix or Firestorm. Your help avoiding confusion is greatly appreciated!"
width="150" />
<!-- END: FS Prefix -->
<!--button for sending sys info-->
<button
follows="right|top"
height="20"
image_pressed="Info_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Send System Info"
image_overlay="Info_Off"
name="send_sysinfo_btn"
left_delta="0"
right="-35"
tab_group="5"
width="24" />
<!--End sys info button-->
<layout_stack
animate="false"
follows="all"
height="308"
width="394"
layout="topleft"
orientation="horizontal"
name="im_panels"
top="40"
left="0">
<layout_panel
name="im_control_panel_holder"
min_width="115"
width="150"
height="320"
auto_resize="false"
user_resize="true">
<panel
name="panel_im_control_panel"
layout="topleft"
height="320"
width="150"
follows="all"/>
</layout_panel>
<layout_panel
name="panel_im_control_lp"
left="0"
top="0"
height="200"
width="244"
user_resize="true">
<fs_chat_history
font="SansSerifSmall"
follows="left|right|top|bottom"
height="170"
name="chat_history"
parse_highlights="true"
parse_urls="true"
left="3"
width="238">
</fs_chat_history>
<line_editor
bottom="0"
left="3"
follows="left|right|bottom"
font="SansSerifSmall"
height="20"
label="To"
layout="bottomleft"
select_on_focus="true"
name="chat_editor"
spellcheck="true"
tab_group="1"
width="238">
</line_editor>
</layout_panel>
</layout_stack>
</floater>

View File

@ -10,7 +10,7 @@
can_minimize="true"
can_close="true"
can_drag_on_left="false">
<chat_history
<fs_chat_history
font="SansSerifSmall"
follows="left|right|top|bottom"
height="155"
@ -19,7 +19,7 @@
parse_urls="true"
left="1"
width="198">
</chat_history>
</fs_chat_history>
<button
name="Clear"
label="Clear"

View File

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
legacy_header_height="18"
background_visible="true"
default_tab_group="1"
follows="all"
height="225"
layout="topleft"
left="0"
name="nearby_chat"
title="Nearby Chat"
top="0"
can_dock="false"
can_close="true"
can_minimize="false"
can_tear_off="true"
single_instance="true"
save_rect="true"
save_visibility="true"
save_dock_state="true"
save_tearoff_state="true"
visible="false"
width="394"
can_resize="true"
min_width="250"
min_height="150">
<layout_stack
border_size="0"
follows="all"
height="203"
layout="topleft"
left="0"
name="main_layout_stack"
orientation="vertical"
top="20"
width="394">
<layout_panel
follows="all"
height="200"
layout="topleft"
name="chat_history_and_buttons_panel"
right="394"
user_resize="false">
<button
height="20"
follows="left|top"
top="0"
left="2"
image_overlay="TabIcon_Open_Off"
layout="topleft"
width="25"
name="slide_left_btn" />
<button
height="20"
follows="left|top"
top_delta="0"
left="2"
image_overlay="TabIcon_Close_Off"
layout="topleft"
width="25"
name="slide_right_btn" />
<button
height="20"
follows="left|top"
top_delta="0"
left="2"
image_overlay="TabIcon_Translate_Off"
layout="topleft"
width="25"
control_name="TranslateChat"
is_toggle="true"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Use selected translation service"
name="translate_btn"/>
<button
height="20"
follows="left|top"
left_pad="2"
image_overlay="List_View_On"
layout="topleft"
width="25"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Open the nearby chat history."
name="chat_history_btn"/>
<button
height="20"
follows="left|top"
left_pad="2"
image_overlay="Muted_Chat"
layout="topleft"
width="25"
control_name="FSShowMutedChatHistory"
image_pressed="PushButton_Press"
image_pressed_selected="PushButton_Selected_Press"
image_selected="PushButton_Selected_Press"
tool_tip="Shows the muted chat in nearby chat history."
name="chat_history_muted_btn">
<button.commit_callback
function="ToggleControl"
parameter="FSShowMutedChatHistory"/>
</button>
<fs_chat_history
invisibility_control="FSShowMutedChatHistory"
top_pad="4"
font="SansSerifSmall"
follows="all"
height="174"
mouse_opaque="false"
name="chat_history"
parse_highlights="true"
parse_urls="true"
layout="topleft"
left="2"
right="-2" />
<fs_chat_history
visibility_control="FSShowMutedChatHistory"
top_delta="0"
font="SansSerifSmall"
follows="all"
height="174"
mouse_opaque="false"
name="chat_history_muted"
parse_highlights="true"
parse_urls="true"
layout="topleft"
left="2"
right="-2" />
</layout_panel>
<layout_panel
auto_resize="false"
follows="all"
height="20"
layout="topleft"
name="chat_bar_visibility_panel"
right="394"
user_resize="false"
visible="true">
<layout_stack
orientation="horizontal"
border_size="0"
follows="left|right|bottom"
height="20"
layout="topleft"
name="chat_bar_channel_spinner_layout_stack"
right="-2"
top_pad="0">
<layout_panel
follows="all"
height="20"
layout="topleft"
name="chat_bar_layout_panel"
user_resize="false"
width="300">
<fs_nearby_chat_control
layout="topleft"
top="0"
left="3"
right="-1"
follows="all"
font="SansSerifSmall"
height="20"
label="To nearby chat"
name="chat_box"
spellcheck="true"
tab_group="3" />
</layout_panel>
<layout_panel
auto_resize="false"
follows="all"
height="20"
layout="topleft"
name="channel_spinner_visibility_panel"
user_resize="false"
visible="true"
width="90">
<spinner
layout="topleft"
top="0"
left="0"
width="90"
decimal_digits="0"
follows="all"
height="20"
increment="1.00"
initial_value="0"
label="Chan"
label_width="29"
max_val="2147483647"
min_val="-2147483647"
mouse_opaque="true"
name="ChatChannel"
tool_tip="Channel to send chat on. Enabled in Preferences -> Chat -> Firestorm -> Show channel selection in chat bar." />
</layout_panel>
</layout_stack>
</layout_panel>
</layout_stack>
</floater>

View File

@ -379,7 +379,7 @@
width="244"
user_resize="true">
<chat_history
<fs_chat_history
font="SansSerifSmall"
follows="left|right|top|bottom"
height="170"
@ -388,7 +388,7 @@
parse_urls="true"
left="3"
width="238">
</chat_history>
</fs_chat_history>
<line_editor
bottom="0"
left="3"

View File

@ -85,7 +85,7 @@
image_selected="PushButton_Selected_Press"
tool_tip="Open the nearby chat history."
name="chat_history_btn"/>
<chat_history
<fs_chat_history
font="SansSerifSmall"
follows="left|right|top|bottom"
height="255"
@ -94,7 +94,7 @@
parse_urls="true"
left="1"
width="250">
</chat_history>
</fs_chat_history>
</layout_panel>
</layout_stack>

View File

@ -106,7 +106,7 @@
function="ToggleControl"
parameter="FSShowMutedChatHistory"/>
</button>
<chat_history
<fs_chat_history
invisibility_control="FSShowMutedChatHistory"
top_pad="4"
font="SansSerifSmall"
@ -119,7 +119,7 @@
layout="topleft"
left="2"
right="-2" />
<chat_history
<fs_chat_history
visibility_control="FSShowMutedChatHistory"
top_delta="0"
font="SansSerifSmall"
@ -162,7 +162,7 @@
user_resize="false"
width="300">
<nearby_chat_control
<fs_nearby_chat_control
layout="topleft"
top="0"
left="3"

View File

@ -481,10 +481,10 @@
use_mac_ctrl="true">
<menu_item_check.on_check
function="Floater.Visible"
parameter="nearby_chat" />
parameter="fs_nearby_chat" />
<menu_item_check.on_click
function="Floater.Toggle"
parameter="nearby_chat" />
parameter="fs_nearby_chat" />
</menu_item_check>
<menu_item_check
label="People"
@ -503,10 +503,10 @@
use_mac_ctrl="true">
<menu_item_check.on_check
function="Floater.Visible"
parameter="im_container" />
parameter="fs_im_container" />
<menu_item_check.on_click
function="Floater.ToggleOrBringToFront"
parameter="im_container" />
parameter="fs_im_container" />
</menu_item_check>
<menu_item_separator/>

View File

@ -42,7 +42,7 @@
layout="topleft"
name="chat_history_lp"
width="318">
<chat_history
<fs_chat_history
bg_readonly_color="ChatHistoryBgColor"
bg_writeable_color="ChatHistoryBgColor"
follows="all"

View File

@ -219,7 +219,7 @@
width="80">
<commit_callback
function="Floater.Toggle"
parameter="nearby_chat" />
parameter="fs_nearby_chat" />
</button>
<nearby_chat_voice_monitor layout="topleft"

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<fs_chat_history
message_header="panel_chat_header.xml"
message_separator="panel_chat_separator.xml"
left_text_pad="10"
right_text_pad="15"
left_widget_pad="0"
right_widget_pad="10"
top_separator_pad="1"
bottom_separator_pad="1"
top_header_pad="12"
bottom_header_pad="5"
max_length="67108864"
track_bottom="true"
name="chat_history"
type="string"
word_wrap="true"
line_spacing.multiple="1.0"
font="SansSerif">
<more_chat_text
mouse_opaque="true"
parse_urls="false"
word_wrap="true"
/>
</fs_chat_history>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<line_editor max_length_bytes="3000">
</line_editor>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="CONVERSACIONES"/>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="ls_control_panel">
<layout_panel name="gprofile_panel">
<button name="group_info_btn" tool_tip="Mostrar el perfil de este grupo"/>
</layout_panel>
<layout_panel name="profile_panel">
<button name="view_profile_btn" tool_tip="Mostrar el perfil de este residente"/>
</layout_panel>
<layout_panel name="trans_panel">
<button tool_tip="Usar el servicio de traducción de Google" name="translate_btn"/>
</layout_panel>
<layout_panel name="friend_panel">
<button tool_tip="Ofrecer amistad a este residente" name="add_friend_btn"/>
</layout_panel>
<layout_panel name="tp_panel">
<button tool_tip="Convocar / Ofrecer teleporte a este residente" name="teleport_btn"/>
</layout_panel>
<layout_panel name="share_panel">
<button tool_tip="Enviar un elemento de tu inventario a este residente" name="share_btn"/>
</layout_panel>
<layout_panel name="pay_panel">
<button tool_tip="Enviar dinero a este residente" name="pay_btn"/>
</layout_panel>
<layout_panel name="call_btn_panel">
<button tool_tip="Añadir voz a este chat" name="call_btn"/>
</layout_panel>
<layout_panel name="end_call_btn_panel">
<button tool_tip="Finalizar llamada de voz" name="end_call_btn"/>
</layout_panel>
<layout_panel name="voice_ctrls_btn_panel">
<button tool_tip="Controles de voz" name="voice_ctrls_btn"/>
</layout_panel>
<layout_panel name="im_history_btn_panel">
<button tool_tip="Abre el historial de chat con este residente o grupo" name="im_history_btn"/>
</layout_panel>
</layout_stack>
<check_box label="Especificar visor" name="FSSupportGroupChatPrefix_toggle" tool_tip="Añade (FS) al principio de tus mensajes para ayudar al equipo de soporte a determinar si tu pregunta se refiere a Phoenix o a Firestorm. ¡Se agradece tu ayuda para evitar confusiones!"/>
<button tool_tip="Enviar información de tu sistema" name="send_sysinfo_btn"/>
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="A" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="nearby_chat" title="Chat local">
<layout_stack name="main_layout_stack">
<layout_panel name="chat_history_and_buttons_panel">
<button tool_tip="Usar el servicio de traducción seleccionado" name="translate_btn"/>
<button tool_tip="Abre la pestaña de chat local." name="chat_history_btn"/>
<button tool_tip="Muestra el chat silenciado en la pestaña de chat local." name="chat_history_muted_btn"/>
</layout_panel>
<layout_panel name="chat_bar_visibility_panel">
<layout_stack name="chat_bar_channel_spinner_layout_stack">
<layout_panel name="chat_bar_layout_panel">
<fs_nearby_chat_control label="Decir en el chat local" name="chat_box"/>
</layout_panel>
<layout_panel name="channel_spinner_visibility_panel" width="95">
<spinner width="95" label="Canal" label_width="34" name="ChatChannel" tool_tip="Canal al que enviar el chat. Activado en Preferencias -> Chat -> Firestorm -> Mostrar selector de canal en la barra de chat."/>
</layout_panel>
</layout_stack>
</layout_panel>
</layout_stack>
</floater>

View File

@ -9,7 +9,7 @@
<layout_panel name="chat_bar_visibility_panel">
<layout_stack name="chat_bar_channel_spinner_layout_stack">
<layout_panel name="chat_bar_layout_panel">
<nearby_chat_control label="Decir en el chat local" name="chat_box"/>
<fs_nearby_chat_control label="Decir en el chat local" name="chat_box"/>
</layout_panel>
<layout_panel name="channel_spinner_visibility_panel" width="95">
<spinner width="95" label="Canal" label_width="34" name="ChatChannel" tool_tip="Canal al que enviar el chat. Activado en Preferencias -> Chat -> Firestorm -> Mostrar selector de canal en la barra de chat."/>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="CONVERSATIONS"/>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="À" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="CONVERSAZIONI"/>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="ls_control_panel">
<layout_panel name="gprofile_panel">
<button name="group_info_btn" tool_tip="Mostra profilo di questo gruppo"/>
</layout_panel>
<layout_panel name="profile_panel">
<button name="view_profile_btn" tool_tip="Mostra profilo di questo residente"/>
</layout_panel>
<layout_panel name="friend_panel">
<button name="add_friend_btn" tool_tip="Aggiungi residente alla tua lista amici"/>
</layout_panel>
<layout_panel name="tp_panel">
<button name="teleport_btn" tool_tip="Offri Teleport al residente/Evoca residente!"/>
</layout_panel>
<layout_panel name="share_panel">
<button name="share_btn" tool_tip="Invia oggetti a questo residente"/>
</layout_panel>
<layout_panel name="pay_panel">
<button name="pay_btn" tool_tip="Invia denaro a questo residente"/>
</layout_panel>
<layout_panel name="call_btn_panel">
<button name="call_btn" tool_tip="Avvia conversazione in voice con questo residente"/>
</layout_panel>
<layout_panel name="end_call_btn_panel">
<button name="end_call_btn" tool_tip="Termina chiamata"/>
</layout_panel>
<layout_panel name="voice_ctrls_btn_panel">
<button name="voice_ctrls_btn" tool_tip="Funzioni vocali"/>
</layout_panel>
<layout_panel name="im_history_btn_panel">
<button name="im_history_btn" tool_tip="Apri cronologia di questo IM"/>
</layout_panel>
</layout_stack>
<check_box label="Mostra il viewer in chat" name="FSSupportGroupChatPrefix_toggle" tool_tip="Aggiunge (FS) all'inizio dei vostri messaggi per facilitare gli helper del gruppo ad aiutarvi, e soprattutto per capire subito se il problema riguarda Firestorm o Phoenix. Spuntandola ci aiuterete ad aiutarvi! Ed è cosa buona e giusta!"/>
<button tool_tip="Invia informazioni del sistema" name="send_sysinfo_btn"/>
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="A" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="会話"/>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="宛先" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="Rozmowy"/>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="ls_control_panel">
<layout_panel name="gprofile_panel">
<button name="group_info_btn" tool_tip="Pokaż profil tej grupy"/>
</layout_panel>
<layout_panel name="profile_panel">
<button name="view_profile_btn" tool_tip="Pokaż profil tego rezydenta"/>
</layout_panel>
<layout_panel name="friend_panel">
<button name="add_friend_btn" tool_tip="Dodaj tego rezydenta do znajomych"/>
</layout_panel>
<layout_panel name="tp_panel">
<button name="teleport_btn" tool_tip="Zaoferuj teleportację do siebie temu rezydentowi"/>
</layout_panel>
<layout_panel name="share_panel">
<button name="share_btn" tool_tip="Wyślij przedmiot temu rezydentowi"/>
</layout_panel>
<layout_panel name="pay_panel">
<button name="pay_btn" tool_tip="Wyślij pieniądze temu rezydentowi"/>
</layout_panel>
<layout_panel name="call_btn_panel">
<button name="call_btn" tool_tip="Dodaj rozmowę głosową do tego czata"/>
</layout_panel>
<layout_panel name="end_call_btn_panel">
<button name="end_call_btn" tool_tip="Zakończ rozmowę głosową"/>
</layout_panel>
<layout_panel name="voice_ctrls_btn_panel">
<button name="voice_ctrls_btn" tool_tip="Właściwości głosu"/>
</layout_panel>
<layout_panel name="im_history_btn_panel">
<button name="im_history_btn" tool_tip="Otwórz historię konwersacji"/>
</layout_panel>
</layout_stack>
<check_box label="Dodawaj typ Przeglądarki" name="FSSupportGroupChatPrefix_toggle" tool_tip="Dodaje (FS) na początku Twoich wiadomości aby pomóc grupie wsparcia dowiedzieć się, czy Twój problem dotyczy Firestorma / Phoenixa. Twoja pomoc w unikaniu zamieszania jest mile widziana!"/>
<button tool_tip="Wyślij info systemowe" name="send_sysinfo_btn"/>
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="Do" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="nearby_chat" title="Czat lokalny">
<layout_stack name="main_layout_stack">
<layout_panel name="chat_history_and_buttons_panel">
<button tool_tip="Użyj zdefiniowanej wcześniej usługi tłumaczącej" name="translate_btn"/>
<button tool_tip="Otwórz historię czatu lokalnego." name="chat_history_btn"/>
<button tool_tip="Pokazuj wyciszone wiadomości w oknie historii czatu lokalnego." name="chat_history_muted_btn"/>
</layout_panel>
<layout_panel name="chat_bar_visibility_panel">
<layout_stack name="chat_bar_channel_spinner_layout_stack">
<layout_panel name="chat_bar_layout_panel">
<fs_nearby_chat_control label="Na czat lokalny" name="chat_box"/>
</layout_panel>
<layout_panel name="channel_spinner_visibility_panel">
<spinner label="Kan." name="ChatChannel" tool_tip="Kanał, na jaki wiadomość na zostać wysłana. Włączone w Ustawienia -> Czat -> Firestorm -> Oferuj ręczny wybór kanału w pasku czatu."/>
</layout_panel>
</layout_stack>
</layout_panel>
</layout_stack>
</floater>

View File

@ -9,7 +9,7 @@
<layout_panel name="chat_bar_visibility_panel">
<layout_stack name="chat_bar_channel_spinner_layout_stack">
<layout_panel name="chat_bar_layout_panel">
<nearby_chat_control label="Na czat lokalny" name="chat_box"/>
<fs_nearby_chat_control label="Na czat lokalny" name="chat_box"/>
</layout_panel>
<layout_panel name="channel_spinner_visibility_panel">
<spinner label="Kan." name="ChatChannel" tool_tip="Kanał, na jaki wiadomość na zostać wysłana. Włączone w Ustawienia -> Czat -> Firestorm -> Oferuj ręczny wybór kanału w pasku czatu."/>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="CONVERSAS"/>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="Para" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="ОБЩЕНИЕ"/>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="Кому" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -74,7 +74,7 @@
image_selected="PushButton_Selected_Press"
tool_tip="Использовать переводчик Google"
name="translate_btn"/>
<chat_history
<fs_chat_history
font="SansSerifSmall"
follows="left|right|top|bottom"
height="255"
@ -83,7 +83,7 @@
parse_urls="true"
left="1"
width="250">
</chat_history>
</fs_chat_history>
</layout_panel>
</layout_stack>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<fs_chat_history
message_header="panel_chat_header.xml"
message_separator="panel_chat_separator.xml"
left_text_pad="10"
right_text_pad="15"
left_widget_pad="0"
right_widget_pad="10"
top_separator_pad="1"
bottom_separator_pad="1"
top_header_pad="12"
bottom_header_pad="5"
max_length="67108864"
track_bottom="true"
name="chat_history"
type="string"
word_wrap="true"
line_spacing.multiple="1.0"
font="SansSerif">
<more_chat_text
mouse_opaque="true"
parse_urls="false"
word_wrap="true"
/>
</fs_chat_history>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="SOHBETLER"/>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="panel_im">
<layout_stack name="im_panels">
<layout_panel name="panel_im_control_lp">
<line_editor label="Kime" name="chat_editor"/>
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<multi_floater name="floater_im_box" title="交談"/>

Some files were not shown because too many files have changed in this diff Show More