diff options
Diffstat (limited to 'indra/newview')
50 files changed, 882 insertions, 496 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index b1cb10665b..95cfc23ede 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -214,6 +214,7 @@ set(viewer_SOURCE_FILES      llfloatersettingsdebug.cpp      llfloatersidetraytab.cpp      llfloatersnapshot.cpp +    llfloatersounddevices.cpp      llfloatertelehub.cpp      llfloatertestinspectors.cpp      llfloatertestlistview.cpp @@ -758,6 +759,7 @@ set(viewer_HEADER_FILES      llfloatersettingsdebug.h      llfloatersidetraytab.h      llfloatersnapshot.h +    llfloatersounddevices.h      llfloatertelehub.h      llfloatertestinspectors.h      llfloatertestlistview.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 4e666952ce..ac52cff49a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -11651,10 +11651,10 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>VoiceCallsRejectAll</key> +    <key>VoiceCallsRejectGroup</key>      <map>        <key>Comment</key> -      <string>Silently reject all incoming voice calls.</string> +      <string>Silently reject all incoming group voice calls.</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -12546,6 +12546,17 @@        <string>Boolean</string>        <key>Value</key>        <integer>1</integer> +    </map>     +    <key>EnablePlaceProfile</key> +    <map> +      <key>Comment</key> +      <string>Enable viewing of place profile from web link</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>1</integer>      </map>      <key>EnablePicks</key>      <map> @@ -12712,5 +12723,27 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>OpenIMOnVoice</key> +    <map> +      <key>Comment</key> +      <string>Open the corresponding IM window when connecting to a voice call.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map> +     <key>AllowBottomTrayButtonReordering</key> +    <map> +      <key>Comment</key> +      <string>Allow user to move and hide bottom tray buttons</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>1</integer> +    </map>  </map>  </llsd> diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml index bc97ec00e9..d3f0ec5dad 100644 --- a/indra/newview/app_settings/settings_minimal.xml +++ b/indra/newview/app_settings/settings_minimal.xml @@ -52,7 +52,7 @@          <key>Type</key>              <string>Boolean</string>          <key>Value</key> -            <integer>0</integer> +            <integer>1</integer>          </map>      <key>HelpURLFormat</key>          <map> @@ -117,10 +117,10 @@          <key>Value</key>              <integer>0</integer>          </map> -    <key>VoiceCallsRejectAll</key> +    <key>VoiceCallsRejectGroup</key>          <map>          <key>Comment</key> -            <string>Silently reject all incoming voice calls.</string> +            <string>Silently reject all incoming group voice calls.</string>          <key>Type</key>              <string>Boolean</string>          <key>Value</key> @@ -133,7 +133,7 @@          <key>Type</key>              <string>Boolean</string>          <key>Value</key> -            <integer>1</integer> +            <integer>0</integer>          </map>        <key>ScriptsCanShowUI</key>        <map> @@ -248,6 +248,17 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>EnablePlaceProfile</key> +    <map> +      <key>Comment</key> +      <string>Enable viewing of place profile from web link</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>EnablePicks</key>      <map>        <key>Comment</key> @@ -290,7 +301,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>0</integer> +      <integer>1</integer>      </map>      <key>EnableAvatarShare</key>      <map> @@ -435,5 +446,27 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>OpenIMOnVoice</key> +    <map> +      <key>Comment</key> +      <string>Open the corresponding IM window when connecting to a voice call.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>1</integer> +    </map> +    <key>AllowBottomTrayButtonReordering</key> +    <map> +      <key>Comment</key> +      <string>Allow user to move and hide bottom tray buttons</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>    </map>  </llsd> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index aea4e78436..7319c0d902 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -62,6 +62,7 @@  #include "llstatusbar.h"  #include "llteleportflags.h"  #include "lltool.h" +#include "lltoolpie.h"  #include "lltoolmgr.h"  #include "lltrans.h"  #include "llurlentry.h" @@ -559,6 +560,8 @@ void LLAgent::setFlying(BOOL fly)  // static  void LLAgent::toggleFlying()  { +	LLToolPie::instance().stopClickToWalk(); +  	BOOL fly = !gAgent.getFlying();  	gAgent.mMoveTimer.reset(); diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index b6482e0ec4..c72cdfd1dc 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -218,7 +218,7 @@ LLBottomTray::LLBottomTray(const LLSD&)  	mLandingTab(NULL),  	mCheckForDrag(false)  { -	// Firstly add ourself to IMSession observers, so we catch session events +	// Firstly add our self to IMSession observers, so we catch session events  	// before chiclets do that.  	LLIMMgr::getInstance()->addSessionObserver(this); @@ -378,12 +378,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b  	}  	// We have to enable/disable right and left parts of speak button separately (EXT-4648) -	mSpeakBtn->setSpeakBtnEnabled(enable); +	getChild<LLButton>("speak_btn")->setEnabled(enable); +  	// skipped to avoid button blinking  	if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)  	{  		bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking(); -		mSpeakBtn->setFlyoutBtnEnabled(voice_status); +		getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);  		if (voice_status)  		{  			LLFirstUse::speak(true); @@ -546,17 +547,27 @@ BOOL LLBottomTray::postBuild()  	setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));  	mSpeakPanel = getChild<LLPanel>("speak_panel"); -	mSpeakBtn = getChild<LLSpeakButton>("talk"); -	LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle()); +	mSpeakBtn = findChild<LLSpeakButton>("talk"); +	if (mSpeakBtn) +	{ +		LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle()); + +		// Localization tool doesn't understand custom buttons like <talk_button> +		mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") ); +		mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") ); +	}	 +	else +	{ +		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_btn")); +		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_flyout_btn")); +	} +  	// Both parts of speak button should be initially disabled because  	// it takes some time between logging in to world and connecting to voice channel. -	mSpeakBtn->setSpeakBtnEnabled(false); -	mSpeakBtn->setFlyoutBtnEnabled(false); +	getChild<LLButton>("speak_btn")->setEnabled(false); +	getChild<LLButton>("speak_flyout_btn")->setEnabled(false); -	// Localization tool doesn't understand custom buttons like <talk_button> -	mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") ); -	mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );  	// Registering Chat Bar to receive Voice client status change notifications.  	LLVoiceClient::getInstance()->addObserver(this); @@ -740,6 +751,8 @@ void LLBottomTray::updateButtonsOrdersAfterDnD()  void LLBottomTray::saveButtonsOrder()  { +	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return; +  	std::string user_dir = gDirUtilp->getLindenUserDir();  	if (user_dir.empty()) return; @@ -760,6 +773,8 @@ void LLBottomTray::saveButtonsOrder()  void LLBottomTray::loadButtonsOrder()  { +	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return; +  	// load per-resident sorting information  	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME); @@ -852,6 +867,10 @@ void LLBottomTray::draw()  	getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible); +	bool openmic = LLVoiceClient::getInstance()->getUserPTTState(); +	bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled(); +	getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled); +	getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);  } @@ -1309,7 +1328,11 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_  			if (possible_shrink_width > 0)  			{ -				mSpeakBtn->setLabelVisible(false); +				if (mSpeakBtn) +				{	 +					mSpeakBtn->setLabelVisible(false); +				} +  				mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());  				required_width += possible_shrink_width; @@ -1435,7 +1458,7 @@ bool LLBottomTray::processExtendSpeakButton(S32& available_width)  		}  		// Reshape the Speak button to its maximum width. -		mSpeakBtn->setLabelVisible(true); +		if (mSpeakBtn) mSpeakBtn->setLabelVisible(true);  		mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());  		available_width -= required_headroom; @@ -1510,21 +1533,35 @@ void LLBottomTray::initResizeStateContainers()  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLPanel>("gesture_panel")));  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLPanel>("movement_panel")));  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLPanel>("cam_panel"))); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_DESTINATIONS, getChild<LLPanel>("destinations_panel"))); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_AVATARS, getChild<LLPanel>("avatar_panel")));  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, getChild<LLPanel>("snapshot_panel")));  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_BUILD, getChild<LLPanel>("build_btn_panel")));  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SEARCH, getChild<LLPanel>("search_btn_panel")));  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_WORLD_MAP, getChild<LLPanel>("world_map_btn_panel")));  	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MINI_MAP, getChild<LLPanel>("mini_map_btn_panel"))); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_1, getChild<LLPanel>("splitter_panel_1"))); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PEOPLE, getChild<LLPanel>("people_panel"))); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PROFILE, getChild<LLPanel>("profile_panel"))); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_2, getChild<LLPanel>("splitter_panel_2"))); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_HOWTO, getChild<LLPanel>("howto_panel")));  	// init an order of processed buttons -	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES); -	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT); -	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA); +	mButtonsProcessOrder.push_back(RS_BUTTON_DESTINATIONS); +	mButtonsProcessOrder.push_back(RS_BUTTON_AVATARS);  	mButtonsProcessOrder.push_back(RS_BUTTON_SNAPSHOT);  	mButtonsProcessOrder.push_back(RS_BUTTON_BUILD);  	mButtonsProcessOrder.push_back(RS_BUTTON_SEARCH);  	mButtonsProcessOrder.push_back(RS_BUTTON_WORLD_MAP);  	mButtonsProcessOrder.push_back(RS_BUTTON_MINI_MAP); +	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_1); +	mButtonsProcessOrder.push_back(RS_BUTTON_PEOPLE); +	mButtonsProcessOrder.push_back(RS_BUTTON_PROFILE); +	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_2); +	mButtonsProcessOrder.push_back(RS_BUTTON_HOWTO); +	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT); +	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA); +	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);  	mButtonsOrder.push_back(RS_BUTTON_SPEAK);  	mButtonsOrder.insert(mButtonsOrder.end(), mButtonsProcessOrder.begin(), mButtonsProcessOrder.end()); @@ -1857,26 +1894,36 @@ S32 LLBottomTray::getChicletPanelShrinkHeadroom() const  // static  std::string LLBottomTray::resizeStateToString(EResizeState state)  { +	const char *rs_string = "UNKNOWN_BUTTON"; +	  	switch (state)  	{ -	case RS_NORESIZE:				return "RS_NORESIZE"; -	case RS_CHICLET_PANEL:			return "RS_CHICLET_PANEL"; -	case RS_CHATBAR_INPUT:			return "RS_CHATBAR_INPUT"; -	case RS_BUTTON_SNAPSHOT:		return "RS_BUTTON_SNAPSHOT"; -	case RS_BUTTON_CAMERA:			return "RS_BUTTON_CAMERA"; -	case RS_BUTTON_MOVEMENT:		return "RS_BUTTON_MOVEMENT"; -	case RS_BUTTON_GESTURES:		return "RS_BUTTON_GESTURES"; -	case RS_BUTTON_SPEAK:			return "RS_BUTTON_SPEAK"; -	case RS_IM_WELL:				return "RS_IM_WELL"; -	case RS_NOTIFICATION_WELL:		return "RS_NOTIFICATION_WELL"; -	case RS_BUTTON_BUILD:			return "RS_BUTTON_BUILD"; -	case RS_BUTTON_SEARCH:			return "RS_BUTTON_SEARCH"; -	case RS_BUTTON_WORLD_MAP:		return "RS_BUTTON_WORLD_MAP"; -	case RS_BUTTON_MINI_MAP:		return "RS_BUTTON_MINI_MAP"; -	case RS_BUTTONS_CAN_BE_HIDDEN:	return "RS_BUTTONS_CAN_BE_HIDDEN"; -	// No default to track additions. -	} -	return "UNKNOWN_BUTTON"; +		case RS_NORESIZE:               rs_string = "RS_NORESIZE";              break; +		case RS_CHICLET_PANEL:          rs_string = "RS_CHICLET_PANEL";         break; +		case RS_CHATBAR_INPUT:          rs_string = "RS_CHATBAR_INPUT";         break; +		case RS_BUTTON_SNAPSHOT:        rs_string = "RS_BUTTON_SNAPSHOT";       break; +		case RS_BUTTON_CAMERA:          rs_string = "RS_BUTTON_CAMERA";         break; +		case RS_BUTTON_MOVEMENT:        rs_string = "RS_BUTTON_MOVEMENT";       break; +		case RS_BUTTON_GESTURES:        rs_string = "RS_BUTTON_GESTURES";       break; +		case RS_BUTTON_SPEAK:           rs_string = "RS_BUTTON_SPEAK";          break; +		case RS_IM_WELL:                rs_string = "RS_IM_WELL";               break; +		case RS_NOTIFICATION_WELL:      rs_string = "RS_NOTIFICATION_WELL";     break; +		case RS_BUTTON_BUILD:           rs_string = "RS_BUTTON_BUILD";          break; +		case RS_BUTTON_SEARCH:          rs_string = "RS_BUTTON_SEARCH";         break; +		case RS_BUTTON_WORLD_MAP:       rs_string = "RS_BUTTON_WORLD_MAP";      break; +		case RS_BUTTON_MINI_MAP:        rs_string = "RS_BUTTON_MINI_MAP";       break; +		case RS_BUTTON_DESTINATIONS:    rs_string = "RS_BUTTON_DESTINATIONS";   break; +		case RS_BUTTON_AVATARS:         rs_string = "RS_BUTTON_AVATARS";        break; +		case RS_BUTTON_PEOPLE:          rs_string = "RS_BUTTON_PEOPLE";         break; +		case RS_BUTTON_PROFILE:         rs_string = "RS_BUTTON_PROFILE";        break; +		case RS_BUTTON_HOWTO:           rs_string = "RS_BUTTON_HOWTO";          break; +		case RS_BUTTON_SPLITTER_1:      rs_string = "RS_BUTTON_SPLITTER_1";     break; +		case RS_BUTTON_SPLITTER_2:      rs_string = "RS_BUTTON_SPLITTER_2";     break; +		case RS_BUTTONS_CAN_BE_HIDDEN:  rs_string = "RS_BUTTONS_CAN_BE_HIDDEN"; break; +		// No default to track additions. +	} + +	return rs_string;  }  // static diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 52bcd2ddac..d9c95d82e5 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -140,22 +140,29 @@ public:  private: -	typedef enum e_resize_status_type +	typedef enum e_resize_state  	{ -		  RS_NORESIZE			= 0x0000 -		, RS_CHICLET_PANEL		= 0x0001 -		, RS_CHATBAR_INPUT		= 0x0002 -		, RS_BUTTON_SNAPSHOT	= 0x0004 -		, RS_BUTTON_CAMERA		= 0x0008 -		, RS_BUTTON_MOVEMENT	= 0x0010 -		, RS_BUTTON_GESTURES	= 0x0020 -		, RS_BUTTON_SPEAK		= 0x0040 -		, RS_IM_WELL			= 0x0080 -		, RS_NOTIFICATION_WELL	= 0x0100 -		, RS_BUTTON_BUILD		= 0x0200 -		, RS_BUTTON_SEARCH		= 0x0400 -		, RS_BUTTON_WORLD_MAP	= 0x0800 -		, RS_BUTTON_MINI_MAP	= 0x1000 +		RS_NORESIZE				= 0x0000, +		RS_CHICLET_PANEL		= 0x0001, +		RS_CHATBAR_INPUT		= 0x0002, +		RS_BUTTON_SNAPSHOT		= 0x0004, +		RS_BUTTON_CAMERA		= 0x0008, +		RS_BUTTON_MOVEMENT		= 0x0010, +		RS_BUTTON_GESTURES		= 0x0020, +		RS_BUTTON_SPEAK			= 0x0040, +		RS_IM_WELL				= 0x0080, +		RS_NOTIFICATION_WELL	= 0x0100, +		RS_BUTTON_BUILD			= 0x0200, +		RS_BUTTON_SEARCH		= 0x0400, +		RS_BUTTON_WORLD_MAP		= 0x0800, +		RS_BUTTON_MINI_MAP		= 0x1000, +		RS_BUTTON_DESTINATIONS	= 0x2000, +		RS_BUTTON_AVATARS		= 0x4000, +		RS_BUTTON_PEOPLE		= 0x8000, +		RS_BUTTON_PROFILE		= 0x10000, +		RS_BUTTON_HOWTO			= 0x20000, +		RS_BUTTON_SPLITTER_1	= 0x40000, +		RS_BUTTON_SPLITTER_2	= 0x80000,  		/*  		Once new button that can be hidden on resize is added don't forget to update related places: @@ -166,10 +173,11 @@ private:  		/**  		 * Specifies buttons which can be hidden when bottom tray is shrunk.  		 * They are: Gestures, Movement (Move), Camera (View), Snapshot -		 *		new: Build, Search, Map, World Map, Mini-Map. +		 *		new: Build, Search, Map, World Map, Mini-Map, destinations, avatars  		 */ -		, RS_BUTTONS_CAN_BE_HIDDEN = RS_BUTTON_SNAPSHOT | RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES +		RS_BUTTONS_CAN_BE_HIDDEN = RS_BUTTON_SNAPSHOT | RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES  									| RS_BUTTON_BUILD | RS_BUTTON_SEARCH | RS_BUTTON_WORLD_MAP | RS_BUTTON_MINI_MAP +									| RS_BUTTON_DESTINATIONS | RS_BUTTON_AVATARS  	}EResizeState;  	// Below are three methods that were introduced to handle drag'n'drop diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 885d553524..3000209aad 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -483,8 +483,9 @@ void LLIMChiclet::setShowSpeaker(bool show)  	if(needs_resize)  	{		  		mShowSpeaker = show; -		toggleSpeakerControl();  	} + +	toggleSpeakerControl();  }  void LLIMChiclet::enableCounterControl(bool enable)  @@ -1183,6 +1184,10 @@ void LLChicletPanel::onCurrentVoiceChannelChanged(const LLUUID& session_id)  		if(chiclet)  		{  			chiclet->setShowSpeaker(true); +			if (gSavedSettings.getBOOL("OpenIMOnVoice")) +			{ +				LLIMFloater::show(chiclet->getSessionId()); +			}  		}  	} diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp new file mode 100644 index 0000000000..3903b9b015 --- /dev/null +++ b/indra/newview/llfloatersounddevices.cpp @@ -0,0 +1,90 @@ +/**  + * @file llfloatersounddevices.cpp + * @author Leyla Farazha + * @brief Sound Preferences used for minimal skin + * +* $LicenseInfo:firstyear=2011&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$ + */ +#include "llviewerprecompiledheaders.h" + +#include "llfloatersounddevices.h" + +#include "llbottomtray.h" +#include "lldraghandle.h" + +#include "llpanelvoicedevicesettings.h" + +// Library includes +#include "indra_constants.h" + +// protected +LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key) +:	LLTransientDockableFloater(NULL, false, key) +{ +	LLTransientFloaterMgr::getInstance()->addControlView(this); + +	// force docked state since this floater doesn't save it between recreations +	setDocked(true); +} + +LLFloaterSoundDevices::~LLFloaterSoundDevices() +{ +	LLTransientFloaterMgr::getInstance()->removeControlView(this); +} + +// virtual +BOOL LLFloaterSoundDevices::postBuild() +{ +	LLTransientDockableFloater::postBuild(); +		 +	LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn"); +	setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP)); + +	setIsChrome(TRUE); +	if (mDragHandle) +		mDragHandle->setTitleVisible(TRUE); +	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730) + +	LLPanelVoiceDeviceSettings* panel = findChild<LLPanelVoiceDeviceSettings>("device_settings_panel"); +	if (panel) +	{ +		panel->setUseTuningMode(false); +	} +	return TRUE; +} + +//virtual +void LLFloaterSoundDevices::setDocked(bool docked, bool pop_on_undock/* = true*/) +{ +	LLTransientDockableFloater::setDocked(docked, pop_on_undock); +} + +// virtual +void LLFloaterSoundDevices::setFocus( BOOL b ) +{ +	LLTransientDockableFloater::setFocus(b); + +	// Force using active floater transparency +	// We have to override setFocus() for because selecting an item of the +	// combobox causes the floater to lose focus and thus become transparent. +	updateTransparency(TT_ACTIVE); +} diff --git a/indra/newview/llfloatersounddevices.h b/indra/newview/llfloatersounddevices.h new file mode 100644 index 0000000000..f09ee3b069 --- /dev/null +++ b/indra/newview/llfloatersounddevices.h @@ -0,0 +1,49 @@ +/**  + * @file llfloatersounddevices.h + * @author Leyla Farazha + * @brief Sound Preferences used for minimal skin + * +* $LicenseInfo:firstyear=2011&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$ + */ + +#ifndef LL_LLFLOATERSOUNDDEVICES_H +#define LL_LLFLOATERSOUNDDEVICES_H + +#include "lltransientdockablefloater.h" + +class LLFloaterSoundDevices : public LLTransientDockableFloater +{ +public: + +	LOG_CLASS(LLFloaterSoundDevices); + +	LLFloaterSoundDevices(const LLSD& key); +	~LLFloaterSoundDevices(); + +	/*virtual*/ BOOL postBuild(); +	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true); +	/*virtual*/ void setFocus( BOOL b ); +}; + + +#endif //LL_LLFLOATERSOUNDDEVICES_H + diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index b3b1ce5743..3884b94b60 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -301,18 +301,6 @@ BOOL LLFolderView::canFocusChildren() const  	return FALSE;  } -void LLFolderView::checkTreeResortForModelChanged() -{ -	if (mSortOrder & LLInventoryFilter::SO_DATE && !(mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME)) -	{ -		// This is the case where something got added or removed.  If we are date sorting -		// everything including folders, then we need to rebuild the whole tree. -		// Just set to something not SO_DATE to force the folder most resent date resort. -		mSortOrder = mSortOrder & ~LLInventoryFilter::SO_DATE; -		setSortOrder(mSortOrder | LLInventoryFilter::SO_DATE); -	} -} -  static LLFastTimer::DeclareTimer FTM_SORT("Sort Inventory");  void LLFolderView::setSortOrder(U32 order) diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 210ba9eb3c..1464a058d8 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -101,7 +101,6 @@ public:  	// FolderViews default to sort by name.  This will change that,  	// and resort the items if necessary.  	void setSortOrder(U32 order); -	void checkTreeResortForModelChanged();  	void setFilterPermMask(PermissionMask filter_perm_mask);  	void setAllowMultiSelect(BOOL allow) { mAllowMultiSelect = allow; } diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 3c36248c1f..e9d1ad3a9e 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -1835,7 +1835,7 @@ void LLFolderViewFolder::sortBy(U32 order)  		return;  	} -	// Propegate this change to sub folders +	// Propagate this change to sub folders  	for (folders_t::iterator iter = mFolders.begin();  		iter != mFolders.end();)  	{ diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index ec3fe48151..38c5ba71bd 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2696,10 +2696,10 @@ void LLIMMgr::inviteToSession(  	if (voice_invite)  	{ -		if	(	// if we're rejecting all incoming call requests -				gSavedSettings.getBOOL("VoiceCallsRejectAll")	 +		if	(	// if we are rejecting group calls  +				(gSavedSettings.getBOOL("VoiceCallsRejectGroup") && notify_box_type == "VoiceInviteGroup") ||  				// or we're rejecting non-friend voice calls and this isn't a friend	 -				|| (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL)) +				(gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))  			)  		{  			// silently decline the call diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h index f488b2ed1b..39e6f797a2 100644 --- a/indra/newview/llinventoryfilter.h +++ b/indra/newview/llinventoryfilter.h @@ -66,10 +66,13 @@ public:  		FILTERLINK_ONLY_LINKS		// only show links  	}; -	// REFACTOR: Change this to an enum. -	static const U32 SO_DATE = 1; -	static const U32 SO_FOLDERS_BY_NAME = 2; -	static const U32 SO_SYSTEM_FOLDERS_TO_TOP = 4; +	enum ESortOrderType +	{ +		SO_NAME = 0,						// Sort inventory by name +		SO_DATE = 0x1,						// Sort inventory by date +		SO_FOLDERS_BY_NAME = 0x1 << 1,		// Force folder sort by name +		SO_SYSTEM_FOLDERS_TO_TOP = 0x1 << 2	// Force system folders to be on top +	};  	LLInventoryFilter(const std::string& name);  	virtual ~LLInventoryFilter(); diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 5007f1c17a..b3ad9efeb2 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -68,7 +68,6 @@ LLMediaCtrl::Params::Params()  :	start_url("start_url"),  	border_visible("border_visible", true),  	ignore_ui_scale("ignore_ui_scale", true), -	hide_loading("hide_loading", false),  	decouple_texture_size("decouple_texture_size", false),  	texture_width("texture_width", 1024),  	texture_height("texture_height", 1024), @@ -97,8 +96,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :  	mCurrentNavUrl( "" ),  	mStretchToFill( true ),  	mMaintainAspectRatio ( true ), -	mHideLoading (false), -	mHidingInitialLoad (false),  	mDecoupleTextureSize ( false ),  	mTextureWidth ( 1024 ),  	mTextureHeight ( 1024 ), @@ -121,8 +118,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :  	setBorderVisible(p.border_visible); -	mHideLoading = p.hide_loading; -	  	setDecoupleTextureSize(p.decouple_texture_size);  	setTextureSize(p.texture_width, p.texture_height); @@ -684,11 +679,6 @@ bool LLMediaCtrl::ensureMediaSourceExists()  				mMediaSource->clearCache();  				mClearCache = false;  			} -			 -			if(mHideLoading) -			{ -				mHidingInitialLoad = true; -			}  		}  		else  		{ @@ -756,11 +746,11 @@ void LLMediaCtrl::draw()  		}  	} -	if(mHidingInitialLoad) -	{ -		// If we're hiding loading, don't draw at all. -		draw_media = false; -	} +//	if(mHidingInitialLoad) +//	{ +//		// If we're hiding loading, don't draw at all. +//		draw_media = false; +//	}  	bool background_visible = isBackgroundVisible();  	bool background_opaque = isBackgroundOpaque(); diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 979d96ca0d..4ac3a248d3 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -100,58 +100,6 @@ public:  	}  }; -LLLoginRefreshHandler gLoginRefreshHandler; - - -// helper class that trys to download a URL from a web site and calls a method  -// on parent class indicating if the web server is working or not -class LLIamHereLogin : public LLHTTPClient::Responder -{ -	private: -		LLIamHereLogin( LLPanelLogin* parent ) : -		   mParent( parent ) -		{} - -		LLPanelLogin* mParent; - -	public: -		static boost::intrusive_ptr< LLIamHereLogin > build( LLPanelLogin* parent ) -		{ -			return boost::intrusive_ptr< LLIamHereLogin >( new LLIamHereLogin( parent ) ); -		}; - -		virtual void  setParent( LLPanelLogin* parentIn ) -		{ -			mParent = parentIn; -		}; - -		// We don't actually expect LLSD back, so need to override completedRaw -		virtual void completedRaw(U32 status, const std::string& reason, -								  const LLChannelDescriptors& channels, -								  const LLIOPipe::buffer_ptr_t& buffer) -		{ -			completed(status, reason, LLSD()); // will call result() or error() -		} -	 -		virtual void result( const LLSD& content ) -		{ -			if ( mParent ) -				mParent->setSiteIsAlive( true ); -		}; - -		virtual void error( U32 status, const std::string& reason ) -		{ -			if ( mParent ) -				mParent->setSiteIsAlive( false ); -		}; -}; - -// this is global and not a class member to keep crud out of the header file -namespace { -	boost::intrusive_ptr< LLIamHereLogin > gResponsePtr = 0; -}; - -  //---------------------------------------------------------------------------  // Public methods  //--------------------------------------------------------------------------- @@ -163,7 +111,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	mLogoImage(),  	mCallback(callback),  	mCallbackData(cb_data), -	mHtmlAvailable( TRUE ),  	mListener(new LLPanelLoginListener(this))  {  	setBackgroundVisible(FALSE); @@ -193,21 +140,11 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	buildFromFile( "panel_login.xml"); -	// Legacy login web page is hidden under the menu bar. -	// Adjust reg-in-client web browser widget to not be hidden. -	if (gSavedSettings.getBOOL("RegInClient")) -	{ -		reshape(rect.getWidth(), rect.getHeight() - MENU_BAR_HEIGHT); -	} -	else -	{ -		reshape(rect.getWidth(), rect.getHeight()); -	} +	reshape(rect.getWidth(), rect.getHeight());  	getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);  	// change z sort of clickable text to be behind buttons -	//sendChildToBack(getChildView("channel_text"));  	sendChildToBack(getChildView("forgot_password_text"));  	if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION) @@ -252,16 +189,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");  	web_browser->addObserver(this); -	// Clear the browser's cache to avoid any potential for the cache messing up the login screen. -	web_browser->clearCache(); -  	reshapeBrowser(); -	// kick off a request to grab the url manually -	gResponsePtr = LLIamHereLogin::build( this ); - -	LLHTTPClient::head( LLGridManager::getInstance()->getLoginPage(), gResponsePtr ); - +	loadLoginPage(); +			  	// Show last logged in user favorites in "Start at" combo.  	addUsersWithFavoritesToUsername();  	getChild<LLComboBox>("username_combo")->setTextChangedCallback(boost::bind(&LLPanelLogin::addFavoritesToStartLocation, this)); @@ -344,46 +275,10 @@ void LLPanelLogin::reshapeBrowser()  	reshape( rect.getWidth(), rect.getHeight(), 1 );  } -void LLPanelLogin::setSiteIsAlive( bool alive ) -{ -	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html"); -	// if the contents of the site was retrieved -	if ( alive ) -	{ -		if ( web_browser ) -		{ -			loadLoginPage(); -			 -			// mark as available -			mHtmlAvailable = TRUE; -		} -	} -	else -	// the site is not available (missing page, server down, other badness) -	{ -		if ( web_browser ) -		{ -			// hide browser control (revealing default one) -			web_browser->setVisible( FALSE ); - -			// mark as unavailable -			mHtmlAvailable = FALSE; -		} -	} -} - -  LLPanelLogin::~LLPanelLogin()  {  	LLPanelLogin::sInstance = NULL; -	// tell the responder we're not here anymore -	if ( gResponsePtr ) -		gResponsePtr->setParent( 0 ); - -	//// We know we're done with the image, so be rid of it. -	//gTextureList.deleteImage( mLogoImage ); -  	// Controls having keyboard focus by default  	// must reset it on destroy. (EXT-2748)  	gFocusMgr.setDefaultKeyboardFocus(NULL); @@ -406,22 +301,13 @@ void LLPanelLogin::draw()  		S32 width = getRect().getWidth();  		S32 height = getRect().getHeight(); -		if ( mHtmlAvailable ) +		if (getChild<LLView>("login_widgets")->getVisible())  		{ -			if (getChild<LLView>("login_widgets")->getVisible()) -			{ -				// draw a background box in black -				gl_rect_2d( 0, height - 264, width, 264, LLColor4::black ); -				// draw the bottom part of the background image -				// just the blue background to the native client UI -				mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight()); -			} -		} -		else -		{ -			// the HTML login page is not available so default to the original screen -			S32 offscreen_part = height / 3; -			mLogoImage->draw(0, -offscreen_part, width, height+offscreen_part); +			// draw a background box in black +			gl_rect_2d( 0, height - 264, width, 264, LLColor4::black ); +			// draw the bottom part of the background image +			// just the blue background to the native client UI +			mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());  		};  	}  	glPopMatrix(); @@ -880,23 +766,10 @@ void LLPanelLogin::loadLoginPage()  	oStr << "&os=" << os_info;  	curl_free(os_info); -	  	gViewerWindow->setMenuBackgroundColor(false, !LLGridManager::getInstance()->isInProductionGrid()); -	gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor());  	LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html"); - -	// navigate to the "real" page -	if (gSavedSettings.getBOOL("RegInClient")) -	{ -		web_browser->setFocus(TRUE); -		login_page = sInstance->getString("reg_in_client_url"); -		web_browser->navigateTo(login_page, "text/html"); -	} -	else -	{ -		web_browser->navigateTo( oStr.str(), "text/html" ); -	} +	web_browser->navigateTo( oStr.str(), "text/html" );  }  void LLPanelLogin::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event) @@ -927,10 +800,6 @@ void LLPanelLogin::onClickConnect(void *)  {  	if (sInstance && sInstance->mCallback)  	{ -		// tell the responder we're not here anymore -		if ( gResponsePtr ) -			gResponsePtr->setParent( 0 ); -  		// JC - Make sure the fields all get committed.  		sInstance->setFocus(FALSE); @@ -998,24 +867,6 @@ void LLPanelLogin::onClickConnect(void *)  	}  } -/* -// static -bool LLPanelLogin::newAccountAlertCallback(const LLSD& notification, const LLSD& response) -{ -	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); -	if (0 == option) -	{ -		llinfos << "Going to account creation URL" << llendl; -		LLWeb::loadURLExternal( LLNotifications::instance().getGlobalString("CREATE_ACCOUNT_URL"));  -	} -	else -	{ -		sInstance->setFocus(TRUE); -	} -	return false; -} -*/ -  // static  void LLPanelLogin::onClickNewAccount(void*)  { diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h index 9cc5e3456a..11273453ba 100644 --- a/indra/newview/llpanellogin.h +++ b/indra/newview/llpanellogin.h @@ -89,7 +89,6 @@ private:  	void addUsersWithFavoritesToUsername();  	static void onClickConnect(void*);  	static void onClickNewAccount(void*); -//	static bool newAccountAlertCallback(const LLSD& notification, const LLSD& response);  	static void onClickVersion(void*);  	static void onClickForgotPassword(void*);  	static void onClickHelp(void*); @@ -114,7 +113,6 @@ private:  	static LLPanelLogin* sInstance;  	static BOOL		sCapslockDidNotification; -	BOOL			mHtmlAvailable;  };  std::string load_password_from_disk(void); diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 90617b7dc7..f79a1bb5ab 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -139,6 +139,7 @@ BOOL LLPanelMainInventory::postBuild()  		mActivePanel->getFilter()->markDefault();  		mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);  		mActivePanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mActivePanel, _1, _2)); +		mResortActivePanel = true;  	}  	LLInventoryPanel* recent_items_panel = getChild<LLInventoryPanel>("Recent Items");  	if (recent_items_panel) @@ -528,6 +529,17 @@ void LLPanelMainInventory::draw()  	{  		mFilterEditor->setText(mFilterSubString);  	}	 +	if (mActivePanel && mResortActivePanel) +	{ +		// EXP-756: Force resorting of the list the first time we draw the list:  +		// In the case of date sorting, we don't have enough information at initialization time +		// to correctly sort the folders. Later manual resort doesn't do anything as the order value is  +		// set correctly. The workaround is to reset the order to alphabetical (or anything) then to the correct order. +		U32 order = mActivePanel->getSortOrder(); +		mActivePanel->setSortOrder(LLInventoryFilter::SO_NAME); +		mActivePanel->setSortOrder(order); +		mResortActivePanel = false; +	}  	LLPanel::draw();  	updateItemcountText();  } diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index c2b78ff9ea..2b2ee1c0c9 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -121,6 +121,7 @@ private:  	LLTabContainer*				mFilterTabs;  	LLHandle<LLFloater>			mFinderHandle;  	LLInventoryPanel*			mActivePanel; +	bool						mResortActivePanel;  	LLSaveFolderState*			mSavedFolderState;  	std::string					mFilterText;  	std::string					mFilterSubString; diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 00ac34efa5..46262832dc 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -91,11 +91,18 @@ public:  	LLParcelHandler() : LLCommandHandler("parcel", UNTRUSTED_THROTTLE) { }  	bool handle(const LLSD& params, const LLSD& query_map,  				LLMediaCtrl* web) -	{ +	{		  		if (params.size() < 2)  		{  			return false;  		} + +		if (!LLUI::sSettingGroups["config"]->getBOOL("EnablePlaceProfile")) +		{ +			LLNotificationsUtil::add("NoPlaceInfo", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit")); +			return true; +		} +  		LLUUID parcel_id;  		if (!parcel_id.set(params[0], FALSE))  		{ diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index aef870d352..71bb4a5584 100644 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -51,6 +51,7 @@ LLPanelVoiceDeviceSettings::LLPanelVoiceDeviceSettings()  	mInputDevice = gSavedSettings.getString("VoiceInputAudioDevice");  	mOutputDevice = gSavedSettings.getString("VoiceOutputAudioDevice");  	mDevicesUpdated = FALSE; +	mUseTuningMode = true;  	// grab "live" mic volume level  	mMicVolume = gSavedSettings.getF32("AudioLevelMic"); @@ -96,7 +97,7 @@ void LLPanelVoiceDeviceSettings::draw()  	// let user know that volume indicator is not yet available  	bool is_in_tuning_mode = LLVoiceClient::getInstance()->inTuningMode(); -	getChildView("wait_text")->setVisible( !is_in_tuning_mode); +	getChildView("wait_text")->setVisible( !is_in_tuning_mode && mUseTuningMode);  	LLPanel::draw(); @@ -292,14 +293,20 @@ void LLPanelVoiceDeviceSettings::initialize()  	LLVoiceClient::getInstance()->refreshDeviceLists();  	// put voice client in "tuning" mode -	LLVoiceClient::getInstance()->tuningStart(); -	LLVoiceChannel::suspend(); +	if (mUseTuningMode) +	{ +		LLVoiceClient::getInstance()->tuningStart(); +		LLVoiceChannel::suspend(); +	}  }  void LLPanelVoiceDeviceSettings::cleanup()  { -	LLVoiceClient::getInstance()->tuningStop(); -	LLVoiceChannel::resume(); +	if (mUseTuningMode) +	{ +		LLVoiceClient::getInstance()->tuningStop(); +		LLVoiceChannel::resume(); +	}  }  void LLPanelVoiceDeviceSettings::onCommitInputDevice() @@ -316,6 +323,6 @@ void LLPanelVoiceDeviceSettings::onCommitOutputDevice()  	if(LLVoiceClient::getInstance())  	{  		LLVoiceClient::getInstance()->setRenderDevice( -			getChild<LLComboBox>("voice_input_device")->getValue().asString()); +			getChild<LLComboBox>("voice_output_device")->getValue().asString());  	}  } diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h index 636b8b9948..d09476d469 100644 --- a/indra/newview/llpanelvoicedevicesettings.h +++ b/indra/newview/llpanelvoicedevicesettings.h @@ -45,6 +45,8 @@ public:  	void cleanup();  	/*virtual*/ void handleVisibilityChange ( BOOL new_visibility ); + +	void setUseTuningMode(bool use) { mUseTuningMode = use; };  protected:  	void onCommitInputDevice(); @@ -56,6 +58,7 @@ protected:  	class LLComboBox		*mCtrlInputDevices;  	class LLComboBox		*mCtrlOutputDevices;  	BOOL mDevicesUpdated; +	bool mUseTuningMode;  };  #endif // LL_LLPANELVOICEDEVICESETTINGS_H diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp index d52e0a6c86..d3e96f8dfb 100644 --- a/indra/newview/llspeakbutton.cpp +++ b/indra/newview/llspeakbutton.cpp @@ -54,26 +54,6 @@ LLSpeakButton::Params::Params()  	// See widgets/talk_button.xml  } -void LLSpeakButton::draw() -{ -	// LLVoiceClient::getInstance() is the authoritative global source of info regarding our open-mic state, we merely reflect that state. -	bool openmic = LLVoiceClient::getInstance()->getUserPTTState(); -	bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled(); -	mSpeakBtn->setToggleState(openmic && voiceenabled); -	mOutputMonitor->setIsMuted(!voiceenabled); -	LLUICtrl::draw(); -} -void LLSpeakButton::setSpeakBtnEnabled(bool enabled) -{ -	LLButton* speak_btn = getChild<LLButton>("speak_btn"); -	speak_btn->setEnabled(enabled); -} -void LLSpeakButton::setFlyoutBtnEnabled(bool enabled) -{ -	LLButton* show_btn = getChild<LLBottomtrayButton>("speak_flyout_btn"); -	show_btn->setEnabled(enabled); -} -  LLSpeakButton::LLSpeakButton(const Params& p)  : LLUICtrl(p)  , mOutputMonitor(NULL) diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h index 2fdf80c1f2..7db01112ef 100644 --- a/indra/newview/llspeakbutton.h +++ b/indra/newview/llspeakbutton.h @@ -53,12 +53,7 @@ public:  	};  	/*virtual*/ ~LLSpeakButton(); -	/*virtual*/ void draw(); -	// methods for enabling/disabling right and left parts of speak button separately(EXT-4648) -	void setSpeakBtnEnabled(bool enabled); -	void setFlyoutBtnEnabled(bool enabled); -  	// *HACK: Need to put tooltips in a translatable location,  	// the panel that contains this button.  	void setSpeakToolTip(const std::string& msg); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 06e0d17b8c..9ec4d33036 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -688,6 +688,15 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)  	return LLTool::handleMouseUp(x, y, mask);  } +void LLToolPie::stopClickToWalk() +{ +	mPick.mPosGlobal = gAgent.getPositionGlobal(); +	handle_go_to(); +	if(mAutoPilotDestination)  +	{  +		mAutoPilotDestination->markDead();  +	} +}  BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)  { diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h index 22359a6db8..d7c79ee223 100644 --- a/indra/newview/lltoolpie.h +++ b/indra/newview/lltoolpie.h @@ -67,6 +67,7 @@ public:  	LLObjectSelection*	getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }  	void 				resetSelection();  	void				blockClickToWalk() { mBlockClickToWalk = true; } +	void				stopClickToWalk();  	static void			selectionPropertiesReceived(); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index dca1e33e60..6dc85799ce 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -91,6 +91,7 @@  #include "llfloatersettingsdebug.h"  #include "llfloatersidetraytab.h"  #include "llfloatersnapshot.h" +#include "llfloatersounddevices.h"  #include "llfloatertelehub.h"  #include "llfloatertestinspectors.h"  #include "llfloatertestlistview.h" @@ -239,6 +240,7 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);  	LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);  	LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>); +	LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);  	LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);  	LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);  	LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 5a3baf2650..d958551a0a 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -5591,6 +5591,14 @@ class LLToggleHelp : public view_listener_t  	}  }; +class LLToggleSpeak : public view_listener_t +{ +	bool handleEvent(const LLSD& userdata) +	{ +		LLVoiceClient::getInstance()->toggleUserPTTState(); +		return true; +	} +};  class LLShowSidetrayPanel : public view_listener_t  {  	bool handleEvent(const LLSD& userdata) @@ -8187,6 +8195,7 @@ void initialize_menus()  	commit.add("BuyCurrency", boost::bind(&handle_buy_currency));  	view_listener_t::addMenu(new LLShowHelp(), "ShowHelp");  	view_listener_t::addMenu(new LLToggleHelp(), "ToggleHelp"); +	view_listener_t::addMenu(new LLToggleSpeak(), "ToggleSpeak");  	view_listener_t::addMenu(new LLPromptShowURL(), "PromptShowURL");  	view_listener_t::addMenu(new LLShowAgentProfile(), "ShowAgentProfile");  	view_listener_t::addMenu(new LLToggleAgentProfile(), "ToggleAgentProfile"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3f018fc57c..ef5968a5e2 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5522,14 +5522,19 @@ void process_alert_core(const std::string& message, BOOL modal)  	}  	else  	{ -		LLSD args; -		std::string new_msg =LLNotifications::instance().getGlobalString(message); +		// Hack fix for EXP-623 (blame fix on RN :)) to avoid a sim deploy +		const std::string AUTOPILOT_CANCELED_MSG("Autopilot canceled"); +		if (message.find(AUTOPILOT_CANCELED_MSG) == std::string::npos ) +		{ +			LLSD args; +			std::string new_msg =LLNotifications::instance().getGlobalString(message); -		std::string localized_msg; -		bool is_message_localized = LLTrans::findString(localized_msg, new_msg); +			std::string localized_msg; +			bool is_message_localized = LLTrans::findString(localized_msg, new_msg); -		args["MESSAGE"] = is_message_localized ? localized_msg : new_msg; -		LLNotificationsUtil::add("SystemMessageTip", args); +			args["MESSAGE"] = is_message_localized ? localized_msg : new_msg; +			LLNotificationsUtil::add("SystemMessageTip", args); +		}  	}  } diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml new file mode 100644 index 0000000000..c7c7a05af2 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater + border_visible="false" + border="false" + legacy_header_height="18" + can_minimize="true" + can_resize="false" + can_close="false" + save_dock_state="true" + save_visibility="true" + save_rect="true" + single_instance="true" + bevel_style="in" + height="140" + layout="topleft" + name="floater_sound_devices" + title="Sound Devices" + width="315"> +  <panel +    layout="topleft" +    follows="all" +    filename="panel_sound_devices.xml" +    name="device_settings_panel" +    width="400" +    left="2" +    top="26" +    class="panel_voice_device_settings"/> +</floater> diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index e5ae0b950a..3ead67ca57 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -8,12 +8,6 @@   tab_stop="false"    name="main_view"   width="1024"> -  <panel top="0" -     follows="all" -     height="768" -     mouse_opaque="false" -     name="login_panel_holder" -     width="1024"/>    <layout_stack border_size="0"                  follows="all"                  mouse_opaque="false" @@ -133,7 +127,14 @@                        user_resize="false"                        visible="false"                        width="333"/> -      </layout_stack>       +      </layout_stack> +      <panel top="0" +         follows="all" +         height="500" +         mouse_opaque="false" +         name="login_panel_holder" +         width="1024"/> +        <panel follows="all"                      height="500"                      left="0" @@ -171,6 +172,7 @@           top="0"            width="1024"           visible="false"/> +      <view mouse_opaque="false"          follows="all"          name="menu_bar_holder" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index a5115b0faa..8a85a331e5 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2696,7 +2696,7 @@            <menu_item_call             label="Web Content Browser"             name="Web Content Browser" -           shortcut="control|alt|W"> +           shortcut="control|shift|Z">              <menu_item_call.on_click               function="Advanced.WebContentTest"               parameter="http://google.com"/> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 3fb3717e68..c64d492612 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -7146,6 +7146,20 @@ The site at '<nolink>[HOST_NAME]</nolink>' in realm '    </notification>    <notification + name="NoPlaceInfo" + label="" + type="alertmodal" + unique="true"> +    <tag>fail</tag> +    <tag>confirm</tag> +    Viewing place profile is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen. +    <usetemplate +   name="okcancelbuttons" +   yestext="Quit" +   notext="Don't Quit"/> +  </notification> +   +  <notification   name="NoPicks"   label=""   type="alertmodal" diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index a6e5e7a219..c8f8d07701 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -47,13 +47,13 @@           mouse_opaque="false"  		 name="chat_bar_layout_panel"           user_resize="true" -         width="250" > +     width="310" >            <panel              name="chat_bar"              filename="panel_nearby_chat_bar.xml"              left="0"              height="28" -            width="248" +        width="308"              top="0"              mouse_opaque="false"              follows="left|right" @@ -341,7 +341,7 @@ Disabled for now.           height="28"           layout="topleft"           min_height="28" -         min_width="62" +     min_width="52"           mouse_opaque="false"           name="mini_map_btn_panel"           user_resize="false" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index f89494da72..e374c89f21 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -479,163 +479,12 @@     width="190">    </button>      <panel -     background_visible="false" -     bg_alpha_color="DkGray" +    layout="topleft" +    filename="panel_sound_devices.xml"       visiblity_control="ShowDeviceSettings" -     border="false" -     follows="top|left" -     height="100" -     label="Device Settings" -     layout="topleft" -     left_delta="-2"       name="device_settings_panel" -     class="panel_voice_device_settings" -     width="470" -     top_pad="0"> -      <panel.string -        name="default_text"> -        Default -      </panel.string> -      <panel.string -        name="default system device"> -        Default system device -      </panel.string> -      <panel.string -        name="no device"> -        No device -      </panel.string> -      <icon -             height="18" -             image_name="Microphone_On" -             left_delta="4" -             name="microphone_icon" -             mouse_opaque="false" -             top="7" -             visible="true" -             width="18" /> -    <text -     type="string" -     length="1" -      font.style="BOLD" -     follows="left|top" -     height="16" -     layout="topleft" -     left_pad="3" -     name="Input" -     width="70"> -        Input -    </text> -    <combo_box -     height="23" -     control_name="VoiceInputAudioDevice" -     layout="topleft" -     left_pad="0" -     max_chars="128" -     name="voice_input_device" -     top_delta="-5" -     width="200" /> -   <text -     type="string" -     length="1" -     follows="left|top" -     height="16" -     layout="topleft" -     left_delta="-70" -     name="My volume label" -     top_pad="4" -     width="200"> -        My volume: -    </text> -      <slider_bar -        control_name="AudioLevelMic" -     follows="left|top" -     height="17" -     increment="0.025" -     initial_value="1.0" -     layout="topleft" -     left_delta="-6" -     max_val="2" -     name="mic_volume_slider" -     tool_tip="Change the volume using this slider" -     top_pad="-1" -     width="220" /> -    <text -     type="string" -     text_color="EmphasisColor" -     length="1" -     follows="left|top" -     height="18" -     layout="topleft" -     left_pad="5" -     name="wait_text" -     top_delta="-1" -     width="110"> -        Please wait -    </text> -    <locate -     height="20" -     layout="topleft" -     left_delta="0" -     name="bar0" -     top_delta="-2" -     width="20" /> -    <locate -     height="20" -     layout="topleft" -     left_pad="5" -     name="bar1" -     top_delta="0" -     width="20" /> -    <locate -     height="20" -     layout="topleft" -     left_pad="5" -     name="bar2" -     top_delta="0" -     width="20" /> -    <locate -     height="20" -     layout="topleft" -     left_pad="5" -     name="bar3" -     top_delta="0" -     width="20" /> -    <locate -     height="20" -     layout="topleft" -     left_pad="5" -     name="bar4" -     top_delta="0" -     width="20" /> -          <icon -             height="18" -             image_name="Parcel_Voice_Light" -             left="5" -             name="speaker_icon" -             mouse_opaque="false" -             top_pad="3" -             visible="true" -             width="22" /> -    <text -     font.style="BOLD" -     type="string" -     length="1" -     follows="left|top" -     height="15" -     layout="topleft" -     left_pad="0" -     name="Output" -     width="70"> -        Output -    </text> -    <combo_box -     control_name="VoiceOutputAudioDevice" -     height="23" -     layout="topleft" -     left_pad="0" -     max_chars="128" -     name="voice_output_device" -     top_delta="-3" -     width="200" /> -    </panel> +    top="314" +    width="345" +    left="18" +    class="panel_voice_device_settings"/>      </panel> diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml new file mode 100644 index 0000000000..9812281323 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml @@ -0,0 +1,163 @@ +<panel + background_visible="false" + bg_alpha_color="DkGray" + follows="all" + height="200" + label="Device Settings" + layout="topleft" + name="device_settings_panel" + width="360"> +	<panel.string +	  name="default_text"> +		Default +	</panel.string> +	<panel.string +	  name="default system device"> +		Default system device +	</panel.string> +	<panel.string +	  name="no device"> +		No device +	</panel.string> +	<icon +		   height="18" +		   image_name="Microphone_On" +		   left_delta="4" +		   name="microphone_icon" +		   mouse_opaque="false" +		   top="7" +       layout="topleft" +		   visible="true" +		   width="18" /> +	<text +     type="string" +     length="1" +      font.style="BOLD" +     follows="left|top" +     height="16" +     layout="topleft" +     left_pad="3" +     name="Input" +     width="70"> +		Input +	</text> +	<combo_box +     height="23" +     control_name="VoiceInputAudioDevice" +     follows="left|top" +     layout="topleft" +     left_pad="0" +     max_chars="128" +     name="voice_input_device" +     top_delta="-5" +     width="200" /> +	<text +	  type="string" +	  length="1" +	  follows="left|top" +	  height="16" +	  layout="topleft" +	  left_delta="-70" +	  name="My volume label" +	  top_pad="4" +	  width="200"> +		My volume: +	</text> +	<slider_bar +	  control_name="AudioLevelMic" +   follows="top|right|left" +   height="17" +   increment="0.025" +   initial_value="1.0" +   layout="topleft" +   left_delta="-6" +   max_val="2" +   name="mic_volume_slider" +   tool_tip="Change the volume using this slider" +   top_pad="-1" +   width="220" /> +	<text +     type="string" +     text_color="EmphasisColor" +     length="1" +     follows="right|top" +     height="18" +     layout="topleft" +     left_pad="5" +     name="wait_text" +     top_delta="-1" +     width="110"> +		Please wait +	</text> +  <locate +     follows="right|top" +     height="20" +     layout="topleft" +     left_delta="0" +     name="bar0" +     top_delta="-2" +     width="20" /> +  <locate +     follows="right|top" +     height="20" +     layout="topleft" +     left_pad="5" +     name="bar1" +     top_delta="0" +     width="20" /> +  <locate +     follows="right|top" +     height="20" +     layout="topleft" +     left_pad="5" +     name="bar2" +     top_delta="0" +     width="20" /> +  <locate +     follows="right|top" +     height="20" +     layout="topleft" +     left_pad="5" +     name="bar3" +     top_delta="0" +     width="20" /> +  <locate +     follows="right|top" +     height="20" +     layout="topleft" +     left_pad="5" +     name="bar4" +     top_delta="0" +     width="20" /> +	<icon +	   height="18" +	   image_name="Parcel_Voice_Light" +	   left="5" +	   name="speaker_icon" +	   mouse_opaque="false" +	   top_pad="3" +	   visible="true" +	   width="22" /> +	<text +     font.style="BOLD" +     type="string" +     length="1" +     follows="left|top" +     height="15" +     layout="topleft" +     left_pad="0" +     name="Output" +     width="70"> +		Output +	</text> +	<combo_box +     control_name="VoiceOutputAudioDevice" +     height="23" +     follows="left|top" +     layout="topleft" +     left_pad="0" +     max_chars="128" +     name="voice_output_device" +     top_delta="-3" +     width="200" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml index 99807d4717..d27c14f4e7 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml @@ -21,6 +21,7 @@       width="20" />      <chiclet_im_p2p.avatar_icon       bottom="3" +     color="white"       follows="left|top|bottom"       height="20"       left="2" diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.pngBinary files differ new file mode 100644 index 0000000000..b6e9eef891 --- /dev/null +++ b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.pngBinary files differ new file mode 100644 index 0000000000..687cb7fb53 --- /dev/null +++ b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png diff --git a/indra/newview/skins/minimal/textures/textures.xml b/indra/newview/skins/minimal/textures/textures.xml index b4848a0619..e3ed01721a 100644 --- a/indra/newview/skins/minimal/textures/textures.xml +++ b/indra/newview/skins/minimal/textures/textures.xml @@ -6,4 +6,6 @@    <texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />    <texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />    <texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" /> -</textures> +  <texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" /> +  <texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" /> + </textures> diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml index 45ba785c1f..ac5bae2f3b 100644 --- a/indra/newview/skins/minimal/xui/en/main_view.xml +++ b/indra/newview/skins/minimal/xui/en/main_view.xml @@ -8,13 +8,6 @@   tab_stop="false"    name="main_view"   width="1024"> -  <panel top="0" -   follows="all" -   height="768" -   mouse_opaque="false" -   name="login_panel_holder" -   width="1024"/> -     <layout_stack border_size="0"                  follows="all"                  mouse_opaque="false" @@ -96,6 +89,14 @@                       name="stand_stop_flying_container"                       visible="false"                       width="500"/> +               +              <panel top="0" +               follows="all" +               height="500" +               mouse_opaque="false" +               name="login_panel_holder" +               width="1024"/> +                <panel follows="all"  										 height="500"  										 left="0" diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml index b55e677276..80cf365c46 100644 --- a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml @@ -25,6 +25,14 @@          <menu_item_call.on_click           function="Avatar.SendIM" />      </menu_item_call> +  <menu_item_call +     label="Call" +     name="Call"> +    <menu_item_call.on_click +     function="Avatar.Call" /> +    <menu_item_call.on_enable +     function="Avatar.EnableCall" /> +  </menu_item_call>     <menu_item_separator />      <menu_item_call       enabled="false" diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml index b76629f401..2c81b5a778 100644 --- a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml @@ -25,6 +25,14 @@          <menu_item_call.on_click           function="Avatar.SendIM" />      </menu_item_call> +  <menu_item_call +     label="Call" +     name="Call"> +    <menu_item_call.on_click +     function="Avatar.Call" /> +    <menu_item_call.on_enable +     function="Avatar.EnableCall" /> +  </menu_item_call>     <menu_item_separator />      <menu_item_call       enabled="false" diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml index 5a4a059781..a11e367d66 100644 --- a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml @@ -27,6 +27,15 @@       function="InspectAvatar.IM"/>    </menu_item_call>    <menu_item_call +   label="Call" +   enabled="true" +   name="call"> +    <menu_item_call.on_click +     function="InspectAvatar.Call"/> +    <menu_item_call.on_enable +     function="InspectAvatar.Gear.EnableCall"/> +  </menu_item_call> +  <menu_item_call     label="Teleport"     name="teleport">      <menu_item_call.on_click diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml index 3d64133f54..1840ebd491 100644 --- a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml @@ -36,6 +36,16 @@  		<menu_item_call.on_click           function="Avatar.IM" />  	</menu_item_call> +  <menu_item_call +     label="Call" +     layout="topleft" +     name="Call"> +    <menu_item_call.on_click +     function="Avatar.Call" /> +    <menu_item_call.on_enable +     function="Avatar.EnableItem" +     parameter="can_call" /> +  </menu_item_call>  	<menu_item_check       label="Block/Unblock"       layout="topleft" diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml index 616b544847..bdd3c3d4a4 100644 --- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml +++ b/indra/newview/skins/minimal/xui/en/notification_visibility.xml @@ -1,12 +1,9 @@  <?xml version="1.0" ?>  <notification_visibility> -  <respond name="VoiceInviteP2P" response="Decline"/> -  <respond name="VoiceInviteAdHoc" response="Decline"/>    <respond name="VoiceInviteGroup" response="Decline"/>    <!-- group and voice are disabled features -->    <hide tag="group"/> -  <hide tag="voice"/>    <!-- no spammy scripts -->    <!-- <hide name="ScriptDialog"/> --> @@ -16,6 +13,7 @@    <hide name="FirstInventory"/>    <hide name="HintSidePanel"/>    <hide name="HintMove"/> +  <hide name="HintSpeak"/>    <hide name="HintDisplayName"/>    <hide name="HintInventory"/>    <hide name="HintLindenDollar"/> diff --git a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml index 5730adab8a..39d1a90850 100644 --- a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml @@ -42,5 +42,40 @@               show_speaking_indicator="false"               width="147" />          </layout_panel> +      <layout_panel +         auto_resize="false" +         follows="top|left|right" +         height="25" +         layout="topleft" +         min_height="25" +         width="130" +         name="call_btn_panel" +         user_resize="false" +         visible="false"> +        <button +         follows="all" +         height="20" +         label="Call" +         name="call_btn" +         width="130" +         top="5" /> +      </layout_panel> +      <layout_panel +       auto_resize="false" +       follows="top|left|right" +       height="25" +       layout="topleft" +       min_height="25" +       width="130" +       name="end_call_btn_panel" +       user_resize="false" +       visible="false"> +        <button +         follows="all" +         height="20" +         label="Leave Call" +         name="end_call_btn" +         top="5"/> +      </layout_panel>      </layout_stack>  </panel> diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml index e0c0bd13d9..237af61717 100644 --- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml @@ -47,7 +47,7 @@           mouse_opaque="false"  		 name="chat_bar_layout_panel"           user_resize="true" -         width="308" > +         width="312" >  			<panel  		   name="chat_bar"  			  filename="panel_nearby_chat_bar.xml" @@ -61,6 +61,79 @@  		</layout_panel>      <layout_panel          auto_resize="false" +        follows="left|right" +        height="28" +        layout="topleft" +        min_height="28" +        min_width="35" +        mouse_opaque="false" +        name="speak_panel" +        top_delta="0" +        user_resize="false" +        width="85"> +      <button +       follows="left|right" +       height="23" +       layout="topleft" +       label="Speak" +       left="0" +       name="speak_btn" +       tool_tip="Turn your microphone on and off" +       pad_right="30" +       halign="center" +       use_ellipses="true" +       tab_stop="true" +    is_toggle="true" +    image_selected="Speak_Btn_Selected_Press" +    image_unselected="Speak_Btn_Off" +		 image_pressed="Speak_Btn_Selected_Press" +		 image_pressed_selected="Speak_Btn_Selected_Press" +       top="5" +       width="85"> + +        <commit_callback +				  function="ToggleSpeak" +				  parameter="f1_help" /> +      </button> +    </layout_panel> + +    <layout_panel +          auto_resize="false" +          follows="left|right" +          height="28" +          layout="topleft" +          min_height="28" +          min_width="20" +          mouse_opaque="false" +          name="speak_flyout_panel" +          top_delta="0" +          user_resize="false" +          width="26"> +      <button +     follows="left|right" +     width="20" +        top="5" +     left="0" +     height="23" +     name="speak_flyout_btn" +     label="" +     tab_stop="false" +     tool_tip="Change your sound preferences" +     is_toggle="true" +     image_disabled="ComboButton_UpOff" +     image_unselected="ComboButton_UpOff" +     image_selected="ComboButton_On" +     image_pressed="ComboButton_UpSelected" +     image_pressed_selected="ComboButton_Selected"> +        <init_callback +         function="Button.SetDockableFloaterToggle" +         parameter="sound_devices" /> +      </button> + +    </layout_panel> + +    <layout_panel +         auto_resize="false"           follows="right"           height="28"           layout="topleft" @@ -70,7 +143,7 @@           name="gesture_panel"           top_delta="0"           user_resize="false" -         width="85"> +         width="88">  			<gesture_combo_list               follows="left|right"               height="23" @@ -80,7 +153,7 @@               view_all="false"               left="0"               name="Gesture" -             tool_tip="Shows/hides gestures" +             tool_tip="Make your avatar do things"               top="5"               width="82">  				<combo_button @@ -101,7 +174,7 @@           mouse_opaque="false"           name="cam_panel"           user_resize="false" -         width="83"> +         width="86">  			<bottomtray_button                can_drag="false"               follows="left|right" @@ -114,7 +187,7 @@               layout="topleft"               left="0"               name="camera_btn" -             tool_tip="Shows/hides camera controls" +             tool_tip="Control your camera angle"               top="5"               use_ellipses="true"               width="80"> @@ -128,15 +201,15 @@           follows="left|right"           height="28"           layout="topleft" -         min_width="17" -         name="splitter_panel" +         min_width="8" +         name="splitter_panel_1"           user_resize="false" -         width="17"> +         width="8">  			<icon               follows="left|bottom"               height="18"               width="2" -             left="6" +             left="0"               image_name="Button_Separator"               name="separator"               top="7"/> @@ -149,9 +222,9 @@  		  min_height="28"  		  min_width="83"  		  mouse_opaque="false" -		  name="avatar_and_destinations_panel" +		  name="destinations_panel"  		  user_resize="false" -		  width="103"> +		  width="106">  			<bottomtray_button  			 can_drag="false"  			follows="left|right" @@ -163,7 +236,7 @@  			layout="topleft"  			left="0"  			name="destination_btn" -			tool_tip="Shows destinations window" +			tool_tip="Travel through Second Life"  			top="5"  			is_toggle="true"  			use_ellipses="true" @@ -180,9 +253,9 @@  		  min_height="28"  		  min_width="73"  		  mouse_opaque="false" -		  name="avatar_and_destinations_panel" +		  name="avatar_panel"  		  user_resize="false" -		  width="103"> +		  width="106">  			<bottomtray_button  			 can_drag="false"  			follows="left|right" @@ -196,6 +269,7 @@  			name="avatar_btn"  			top="5"  			is_toggle="true" +			tool_tip="Change your appearance"  			use_ellipses="true"  			width="100">  				<bottomtray_button.commit_callback @@ -207,15 +281,15 @@  		  follows="left|right"  		  height="28"  		  layout="topleft" -		  min_width="17" -		  name="splitter_panel" +		  min_width="8" +		  name="splitter_panel_2"  		  user_resize="false" -		  width="17"> +		  width="8">  			<icon               follows="left|bottom"               height="18"               width="2" -             left="6" +             left="0"               image_name="Button_Separator"               name="separator"               top="7"/> @@ -231,7 +305,7 @@           name="people_panel"           top_delta="0"           user_resize="false" -         width="105"> +         width="106">  			<bottomtray_button  			   can_drag="false"  			  follows="left|right" @@ -243,7 +317,7 @@  			  layout="topleft"  			  left="0"  			  name="show_people_button" -			  tool_tip="Shows people window" +			  tool_tip="Find people in Second Life"  			  top="5"  			  is_toggle="true"  			  use_ellipses="true" @@ -264,7 +338,7 @@  		   name="profile_panel"  		   top_delta="0"  		   user_resize="false" -		   width="105"> +		   width="106">  			<bottomtray_button  			   can_drag="false"  			  follows="left|right" @@ -276,7 +350,7 @@  			  layout="topleft"  			  left="0"  			  name="show_profile_btn" -			  tool_tip="Shows profile window" +			  tool_tip="View and edit your Profile"  			  is_toggle="true"  			  top="5"  			  use_ellipses="true" @@ -297,7 +371,7 @@  		   name="howto_panel"  		   top_delta="0"  		   user_resize="false" -		   width="105"> +		   width="106">  			<bottomtray_button  			   can_drag="false"  			  follows="left|right" @@ -309,7 +383,7 @@  			  layout="topleft"  			  left="0"  			  name="show_help_btn" -			  tool_tip="Open Second Life How To topics" +			  tool_tip="View Second Life help info"  			  is_toggle="true"  			  top="5"  			  use_ellipses="true" diff --git a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml index c3f46f11e0..be13bc1bb7 100644 --- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml @@ -78,6 +78,39 @@               width="140" />        </layout_panel>        <layout_panel +         auto_resize="false" +         follows="top|left|right" +         height="25" +         layout="topleft" +         min_height="25" +         width="140" +         name="call_btn_panel" +         user_resize="false"> +        <button +         follows="left|top|right" +         height="23" +         label="Call" +         name="call_btn" +         width="140" /> +      </layout_panel> +      <layout_panel +       auto_resize="false" +       follows="top|left|right" +       height="25" +       layout="topleft" +       min_height="25" +       width="140" +       name="end_call_btn_panel" +       user_resize="false" +       visible="false"> +        <button +         follows="left|top|right" +         height="23" +         label="End Call" +         name="end_call_btn" +         width="140" /> +      </layout_panel> +      <layout_panel         mouse_opaque="false"         auto_resize="true"         follows="top|left" diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml index 4a72653d76..76baacb091 100644 --- a/indra/newview/skins/minimal/xui/en/panel_people.xml +++ b/indra/newview/skins/minimal/xui/en/panel_people.xml @@ -452,6 +452,27 @@ Looking for people to hang out with? Try the Destinations button below.  			name="chat_btn_lp"  		    user_resize="false"   		    auto_resize="true" +			width="52"> +				<button +		         follows="bottom|left|right" +		         left="1" +		         height="23" +		         label="Call" +		         layout="topleft" +		         name="call_btn" +		         tool_tip="Call this Resident" +		         top="0" +		         width="51" />		 +			</layout_panel> +						 +			<layout_panel +			follows="bottom|left|right" +			height="23" +			layout="bottomleft" +			left_pad="3" +			name="chat_btn_lp" +		    user_resize="false"  +		    auto_resize="true"  			width="77">  				<button  		         follows="bottom|left|right" | 
