diff options
Diffstat (limited to 'indra')
33 files changed, 637 insertions, 535 deletions
| diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index affd7276cc..447e3661db 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -108,9 +108,6 @@ static long getDictLong (CFDictionaryRef refDict, CFStringRef key);  static EventTypeSpec WindowHandlerEventList[] =  {  	// Window-related events -	//	{ kEventClassWindow, kEventWindowCollapsing }, -	//	{ kEventClassWindow, kEventWindowCollapsed }, -	//	{ kEventClassWindow, kEventWindowShown },  	{ kEventClassWindow, kEventWindowActivated },  	{ kEventClassWindow, kEventWindowDeactivated },  	{ kEventClassWindow, kEventWindowShown }, @@ -121,8 +118,7 @@ static EventTypeSpec WindowHandlerEventList[] =  	{ kEventClassWindow, kEventWindowClose },  	{ kEventClassWindow, kEventWindowBoundsChanging },  	{ kEventClassWindow, kEventWindowBoundsChanged }, -	//	{ kEventClassWindow, kEventWindowZoomed }, -	//	{ kEventClassWindow, kEventWindowDrawContent }, +	{ kEventClassWindow, kEventWindowGetIdealSize },  	// Mouse events  	{ kEventClassMouse, kEventMouseDown }, @@ -248,6 +244,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,  	mCursorIgnoreNextDelta = FALSE;  	mNeedsResize = FALSE;  	mOverrideAspectRatio = 0.f; +	mMaximized = FALSE;  	mMinimized = FALSE;  	mTSMDocument = NULL; // Just in case.  	mLanguageTextInputAllowed = FALSE; @@ -455,24 +452,23 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits  	if(!mFullscreen && (mWindow == NULL))  	{ -		Rect			window_rect;  		//int				displayWidth = CGDisplayPixelsWide(mDisplay);  		//int				displayHeight = CGDisplayPixelsHigh(mDisplay);  		//const int		menuBarPlusTitleBar = 44;   // Ugly magic number.  		LL_DEBUGS("Window") << "createContext: creating window" << LL_ENDL; -		window_rect.left = (long) x; -		window_rect.right = (long) x + width; -		window_rect.top = (long) y; -		window_rect.bottom = (long) y + height; +		mPreviousWindowRect.left = (long) x; +		mPreviousWindowRect.right = (long) x + width; +		mPreviousWindowRect.top = (long) y; +		mPreviousWindowRect.bottom = (long) y + height;  		//-----------------------------------------------------------------------  		// Create the window  		//-----------------------------------------------------------------------  		mWindow = NewCWindow(  			NULL, -			&window_rect, +			&mPreviousWindowRect,  			mWindowTitle,  			false,				// Create the window invisible.  Whoever calls createContext() should show it after any moving/resizing.  			//		noGrowDocProc,		// Window with no grow box and no zoom box @@ -481,8 +477,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits  			kFirstWindowOfClass,  			true,  			(long)this); - - +		  		if (!mWindow)  		{  			setupFailure("Window creation error", "Error", OSMB_OK); @@ -1093,31 +1088,22 @@ BOOL LLWindowMacOSX::getVisible()  BOOL LLWindowMacOSX::getMinimized()  { -	BOOL result = FALSE; -	 -	// Since the set of states where we want to act "minimized" is non-trivial, it's easier to -	// track things locally than to try and retrieve the state from the window manager. -	result = mMinimized; - -	return(result); +	return mMinimized;  }  BOOL LLWindowMacOSX::getMaximized()  { -	BOOL result = FALSE; - -	if (mWindow) -	{ -		// TODO -	} - -	return(result); +	return mMaximized;  }  BOOL LLWindowMacOSX::maximize()  { -	// TODO -	return FALSE; +	if (mWindow && !mMaximized) +	{ +		ZoomWindow(mWindow, inContent, true); +	} +	 +	return mMaximized;  }  BOOL LLWindowMacOSX::getFullscreen() @@ -2559,7 +2545,24 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e  				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, ¤tBounds);  				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds); - +				 +				// Put an offset into window un-maximize operation since the kEventWindowGetIdealSize +				// event only allows the specification of size and not position. +				if (mMaximized) +				{ +					short leftOffset = mPreviousWindowRect.left - currentBounds.left; +					currentBounds.left += leftOffset; +					currentBounds.right += leftOffset; +					 +					short topOffset = mPreviousWindowRect.top - currentBounds.top; +					currentBounds.top += topOffset; +					currentBounds.bottom += topOffset; +				} +				else +				{ +					// Store off the size for future un-maximize operations +					mPreviousWindowRect = previousBounds; +				}  				if ((currentBounds.right - currentBounds.left) < MIN_WIDTH)  				{ @@ -2578,13 +2581,43 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e  		case kEventWindowBoundsChanged:  			{ +				// Get new window bounds  				Rect newBounds; -  				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds); +				 +				// Get previous window bounds +				Rect oldBounds; +				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds); +				 +				// Determine if the new size is larger than the old +				bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left)); +				newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top)); +				 +				// Check to see if this is a zoom event (+ button on window pane) +				unsigned int eventParams; +				GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams); +				bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0); +				 +				// Maximized flag is if zoom event and increasing window size +				mMaximized = (isZoomEvent && newBoundsLarger); +				  				aglUpdateContext(mContext); +				  				mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top); - - +			} +			break; +			 +		case kEventWindowGetIdealSize: +			// Only recommend a new ideal size when un-maximizing +			if (mMaximized == TRUE) +			{ +				Point nonMaximizedSize; +				 +				nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top; +				nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left; +				 +				SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize); +				result = noErr;  			}  			break; diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 6dc093b4be..6c9e075a21 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -156,7 +156,6 @@ protected:  	static pascal Boolean staticMoveEventComparator( EventRef event, void* data);  	OSStatus eventHandler (EventHandlerCallRef myHandler, EventRef event);  	void adjustCursorDecouple(bool warpingMouse = false); -	void fixWindowSize(void);  	void stopDockTileBounce();  	static MASK modifiersToMask(SInt16 modifiers); @@ -182,6 +181,7 @@ protected:  	EventComparatorUPP  mMoveEventCampartorUPP;  	Rect		mOldMouseClip;  // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse() +	Rect		mPreviousWindowRect;  // Save previous window for un-maximize event  	Str255 		mWindowTitle;  	double		mOriginalAspectRatio;  	BOOL		mSimulatedRightClick; @@ -195,6 +195,7 @@ protected:  	BOOL		mNeedsResize;		// Constructor figured out the window is too big, it needs a resize.  	LLCoordScreen   mNeedsResizeSize;  	F32			mOverrideAspectRatio; +	BOOL		mMaximized;  	BOOL		mMinimized;  	U32			mFSAASamples;  	BOOL		mForceRebuild; 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..6b56da5edd 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> diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml index 60aecb279c..2180abdcee 100644 --- a/indra/newview/app_settings/settings_minimal.xml +++ b/indra/newview/app_settings/settings_minimal.xml @@ -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> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 7d491a7774..a6d2c96d52 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..a29f157cdf 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -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,21 @@ 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") ); +	}  	// 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); @@ -852,6 +857,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 +1318,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 +1448,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; diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 885d553524..277fc9d7b9 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)  diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp new file mode 100644 index 0000000000..4f3945c95f --- /dev/null +++ b/indra/newview/llfloatersounddevices.cpp @@ -0,0 +1,85 @@ +/**  + * @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) +	 +	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/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/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/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index aef870d352..d13f57bd6a 100644 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -316,6 +316,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/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/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..584413c030 --- /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="true" + 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="300" +    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/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index f89494da72..62e445862f 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -478,164 +478,13 @@     name="device_settings_btn"     width="190">    </button> -    <panel -     background_visible="false" -     bg_alpha_color="DkGray" -     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> -    </panel> +  <panel +    layout="topleft" +    filename="panel_sound_devices.xml" +    visiblity_control="ShowDeviceSettings" +    name="device_settings_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/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_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml index 95f2010e44..49eead5079 100644 --- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml @@ -12,16 +12,16 @@   focus_root="true"   top="28"   width="1310"> -	<string +  <string       name="DragIndicationImageName"       value="Accordion_ArrowOpened_Off" /> -	<string +  <string       name="SpeakBtnToolTip"       value="Turns microphone on/off" /> -	<string +  <string       name="VoiceControlBtnToolTip"       value="Shows/hides voice control panel" /> -	<layout_stack +  <layout_stack       border_size="0"       clip="false"       follows="all" @@ -33,12 +33,12 @@       orientation="horizontal"       top="0"       width="1310"> -		<layout_panel +    <layout_panel           auto_resize="false"           user_resize="false"           min_width="2"           width="2" /> -		<layout_panel +    <layout_panel           auto_resize="false"           layout="topleft"           max_width="320" @@ -48,7 +48,7 @@  		 name="chat_bar_layout_panel"           user_resize="true"           width="308" > -			<panel +      <panel  		   name="chat_bar"  			  filename="panel_nearby_chat_bar.xml"  			  left="0" @@ -65,39 +65,74 @@          height="28"          layout="topleft"          min_height="28" -        min_width="59" +        min_width="35"          mouse_opaque="false"          name="speak_panel"          top_delta="0"          user_resize="false" -        width="108"> -      <talk_button +        width="85"> +      <button         follows="left|right"         height="23"         layout="topleft" +       label="Speak"         left="0" -       name="talk" +       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="105"> -        <show_button -         tab_stop="true"> -          <init_callback -           function="Button.SetDockableFloaterToggle" -           parameter="voice_controls" /> -        </show_button> -        <!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales. -                 & pad_right is default value for long label which can be right aligned. See EXT-6318 --> -        <speak_button -         halign="center" -         label="Speak" -         label_selected="Speak" -         name="speak_btn" -         pad_right="20" -         tab_stop="true" -         use_ellipses="true" /> -      </talk_button> +       width="85"> + +        <commit_callback +				  function="ToggleSpeak" +				  parameter="f1_help" /> +      </button>      </layout_panel> -		<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="20"> +      <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" @@ -108,7 +143,7 @@           name="gesture_panel"           top_delta="0"           user_resize="false" -         width="85"> +         width="88">  			<gesture_combo_list               follows="left|right"               height="23" @@ -116,20 +151,20 @@               layout="topleft"               get_more="false"               view_all="false" -             left="0" +             left="3"               name="Gesture" -             tool_tip="Shows/hides gestures" +             tool_tip="Make your avatar do things"               top="5"               width="82"> -				<combo_button +        <combo_button                   pad_right="10"                   can_drag="false"                   use_ellipses="true" /> -				<combo_list +        <combo_list                   page_lines="17" /> -			</gesture_combo_list> -		</layout_panel> -		<layout_panel +      </gesture_combo_list> +    </layout_panel> +    <layout_panel           auto_resize="false"           follows="left|right"           height="28" @@ -140,7 +175,7 @@           name="cam_panel"           user_resize="false"           width="83"> -			<bottomtray_button +      <bottomtray_button                can_drag="false"               follows="left|right"               height="23" @@ -152,16 +187,16 @@               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"> -				<init_callback +        <init_callback                   function="Button.SetDockableFloaterToggle"                   parameter="camera" /> -			</bottomtray_button> -		</layout_panel> -		<layout_panel +      </bottomtray_button> +    </layout_panel> +    <layout_panel           auto_resize="false"           follows="left|right"           height="28" @@ -170,7 +205,7 @@           name="splitter_panel"           user_resize="false"           width="17"> -			<icon +      <icon               follows="left|bottom"               height="18"               width="2" @@ -178,8 +213,8 @@               image_name="Button_Separator"               name="separator"               top="7"/> -		</layout_panel> -		<layout_panel +    </layout_panel> +    <layout_panel  		  auto_resize="false"  		  follows="left|right"  		  height="28" @@ -190,7 +225,7 @@  		  name="avatar_and_destinations_panel"  		  user_resize="false"  		  width="103"> -			<bottomtray_button +      <bottomtray_button  			 can_drag="false"  			follows="left|right"  			height="23" @@ -201,16 +236,16 @@  			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"  			width="100"> -				<bottomtray_button.commit_callback +        <bottomtray_button.commit_callback  				  function="Destination.show" /> -			</bottomtray_button> -		</layout_panel> -		<layout_panel +      </bottomtray_button> +    </layout_panel> +    <layout_panel  		  auto_resize="false"  		  follows="left|right"  		  height="28" @@ -221,7 +256,7 @@  		  name="avatar_and_destinations_panel"  		  user_resize="false"  		  width="103"> -			<bottomtray_button +      <bottomtray_button  			 can_drag="false"  			follows="left|right"  			height="23" @@ -234,13 +269,14 @@  			name="avatar_btn"  			top="5"  			is_toggle="true" +			tool_tip="Change your appearance"  			use_ellipses="true"  			width="100"> -				<bottomtray_button.commit_callback +        <bottomtray_button.commit_callback  				  function="Avatar.show" /> -			</bottomtray_button> -		</layout_panel> -		<layout_panel +      </bottomtray_button> +    </layout_panel> +    <layout_panel  		  auto_resize="false"  		  follows="left|right"  		  height="28" @@ -249,7 +285,7 @@  		  name="splitter_panel"  		  user_resize="false"  		  width="17"> -			<icon +      <icon               follows="left|bottom"               height="18"               width="2" @@ -257,8 +293,8 @@               image_name="Button_Separator"               name="separator"               top="7"/> -		</layout_panel> -		<layout_panel +    </layout_panel> +    <layout_panel           auto_resize="false"           follows="right"           height="28" @@ -270,7 +306,7 @@           top_delta="0"           user_resize="false"           width="105"> -			<bottomtray_button +      <bottomtray_button  			   can_drag="false"  			  follows="left|right"  			  height="23" @@ -281,17 +317,17 @@  			  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"  			  width="100"> -				<bottomtray_button.commit_callback +        <bottomtray_button.commit_callback  				  function="ShowSidetrayPanel"  				 parameter="panel_people" /> -			</bottomtray_button> -		</layout_panel> -		<layout_panel +      </bottomtray_button> +    </layout_panel> +    <layout_panel  		   auto_resize="false"  		   follows="right"  		   height="28" @@ -303,7 +339,7 @@  		   top_delta="0"  		   user_resize="false"  		   width="105"> -			<bottomtray_button +      <bottomtray_button  			   can_drag="false"  			  follows="left|right"  			  height="23" @@ -314,17 +350,17 @@  			  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"  			  width="100"> -				<bottomtray_button.commit_callback +        <bottomtray_button.commit_callback  				  function="ToggleAgentProfile"  				  parameter="agent"/> -			</bottomtray_button> -		</layout_panel> -		<layout_panel +      </bottomtray_button> +    </layout_panel> +    <layout_panel  		   auto_resize="false"  		   follows="right"  		   height="28" @@ -336,7 +372,7 @@  		   top_delta="0"  		   user_resize="false"  		   width="105"> -			<bottomtray_button +      <bottomtray_button  			   can_drag="false"  			  follows="left|right"  			  height="23" @@ -347,17 +383,17 @@  			  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"  			  width="100"> -				<bottomtray_button.commit_callback +        <bottomtray_button.commit_callback  				  function="ToggleHelp"  				  parameter="f1_help" /> -			</bottomtray_button> -		</layout_panel> -		<layout_panel +      </bottomtray_button> +    </layout_panel> +    <layout_panel  		   follows="left|right"  		   height="30"  		   layout="topleft" @@ -367,9 +403,9 @@  		   top="0"  		   user_resize="false"  		   width="189"> -			<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same +      <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same  as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991--> -			<chiclet_panel +      <chiclet_panel               chiclet_padding="4"               follows="left|right"               height="24" @@ -380,7 +416,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.               name="chiclet_list"               top="7"               width="189"> -				<button +        <button                   auto_resize="true"                   follows="right"                   height="29" @@ -397,7 +433,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.                   top="-28"                   visible="false"                   width="7" /> -				<button +        <button                   auto_resize="true"                   follows="right"                   height="29" @@ -414,13 +450,13 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.                   top="-28"                   visible="false"                   width="7" /> -			</chiclet_panel> -		</layout_panel> -		<layout_panel auto_resize="false" +      </chiclet_panel> +    </layout_panel> +    <layout_panel auto_resize="false"                        user_resize="false"                        width="4"                        min_width="4"/> -		<layout_panel +    <layout_panel           auto_resize="false"           follows="right"           height="28" @@ -431,7 +467,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.           top="0"           user_resize="false"           width="37"> -			<chiclet_im_well +      <chiclet_im_well               follows="right"               height="28"               layout="topleft" @@ -440,7 +476,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.               name="im_well"               top="0"               width="35"> -				<!-- +        <!--  Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button  xml attribute           Description  image_unselected        "Unlit" - there are no new messages @@ -448,7 +484,7 @@ image_selected          "Unlit" + "Selected" - there are no new messages and the  image_pressed           "Lit" - there are new messages  image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well is open               --> -				<button +        <button                   auto_resize="true"                   follows="right"                   halign="center" @@ -463,13 +499,13 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well                   name="Unread IM messages"                   tool_tip="Conversations"                   width="34"> -					<init_callback +          <init_callback                       function="Button.SetDockableFloaterToggle"                       parameter="im_well_window" /> -				</button> -			</chiclet_im_well> -		</layout_panel> -		<layout_panel +        </button> +      </chiclet_im_well> +    </layout_panel> +    <layout_panel           auto_resize="false"           follows="right"           height="28" @@ -480,7 +516,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well           top="0"           user_resize="false"           width="37"> -			<chiclet_notification +      <chiclet_notification               follows="right"               height="23"               layout="topleft" @@ -489,7 +525,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well               name="notification_well"               top="5"               width="35"> -				<button +        <button                   auto_resize="true"                   bottom_pad="3"                   follows="right" @@ -505,7 +541,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well                   name="Unread"                   tool_tip="Notifications"                   width="34"> -					<init_callback +          <init_callback                       function="Button.SetDockableFloaterToggle"                       parameter="notification_well_window" />  				</button> @@ -517,5 +553,5 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well  		   min_width="4"  		   name="DUMMY2"  		   width="8" /> -	</layout_stack> +  </layout_stack>  </panel> | 
