diff options
| author | Igor Borovkov <iborovkov@productengine.com> | 2009-12-18 17:39:01 +0200 | 
|---|---|---|
| committer | Igor Borovkov <iborovkov@productengine.com> | 2009-12-18 17:39:01 +0200 | 
| commit | f7fadaa807a0652df1da41ac69ab069273605965 (patch) | |
| tree | 3e0b76ef0a2b65b7adb76352f5f3b854d48767ea | |
| parent | b28de65a8ba2704c5d567f112a51f878b746c802 (diff) | |
completed EXT-3545 Voice controls panel should auto-open on starting call w/o text chat
--HG--
branch : product-engine
| -rw-r--r-- | indra/newview/llcallfloater.cpp | 24 | ||||
| -rw-r--r-- | indra/newview/llcallfloater.h | 8 | ||||
| -rw-r--r-- | indra/newview/llspeakbutton.cpp | 3 | 
3 files changed, 26 insertions, 9 deletions
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index 1f23840109..f60f1e59d7 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -42,6 +42,8 @@  #include "llagentdata.h" // for gAgentID  #include "llavatarlist.h"  #include "llbottomtray.h" +#include "llimfloater.h" +#include "llfloaterreg.h"  #include "llparticipantlist.h"  #include "llspeakers.h"  #include "lltransientfloatermgr.h" @@ -95,7 +97,6 @@ LLCallFloater::LLCallFloater(const LLSD& key)  LLCallFloater::~LLCallFloater()  { -	mChannelChangedConnection.disconnect();  	delete mPaticipants;  	mPaticipants = NULL; @@ -128,8 +129,6 @@ BOOL LLCallFloater::postBuild()  	// update list for current session  	updateSession(); -	// subscribe to to be notified Voice Channel is changed -	mChannelChangedConnection = LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::onCurrentChannelChanged, this, _1));  	return TRUE;  } @@ -245,6 +244,17 @@ void LLCallFloater::updateSession()  	refreshPartisipantList();  	updateModeratorState(); + +	//show floater for voice calls +	if (!is_local_chat) +	{ +		LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); +		bool show_me = !(im_floater && im_floater->getVisible()); +		if (show_me)  +		{ +			setVisible(true); +		} +	}  }  void LLCallFloater::refreshPartisipantList() @@ -281,7 +291,7 @@ void LLCallFloater::refreshPartisipantList()  	}  } -void LLCallFloater::onCurrentChannelChanged(const LLUUID& /*session_id*/) +void LLCallFloater::sOnCurrentChannelChanged(const LLUUID& /*session_id*/)  {  	// Don't update participant list if no channel info is available.  	// Fix for ticket EXT-3427 @@ -291,9 +301,11 @@ void LLCallFloater::onCurrentChannelChanged(const LLUUID& /*session_id*/)  	{  		return;  	} +	LLCallFloater* call_floater = LLFloaterReg::getTypedInstance<LLCallFloater>("voice_controls"); +  	// Forget speaker manager from the previous session to avoid using it after session was destroyed. -	mSpeakerManager = NULL; -	updateSession(); +	call_floater->mSpeakerManager = NULL; +	call_floater->updateSession();  }  void LLCallFloater::updateTitle() diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index b2288a42ff..f9c9149085 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -70,6 +70,8 @@ public:  	 */  	/*virtual*/ void onChange(); +	static void sOnCurrentChannelChanged(const LLUUID& session_id); +  private:  	typedef enum e_voice_controls_type  	{ @@ -93,7 +95,9 @@ private:  	 * Refreshes participant list according to current Voice Channel  	 */  	void refreshPartisipantList(); -	void onCurrentChannelChanged(const LLUUID& session_id); + + +	  	void updateTitle();  	void initAgentData();  	void setModeratorMutedVoice(bool moderator_muted); @@ -108,8 +112,6 @@ private:  	LLPanel* mAgentPanel;  	LLOutputMonitorCtrl* mSpeakingIndicator;  	bool mIsModeratorMutedVoice; - -	boost::signals2::connection mChannelChangedConnection;  }; diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp index 5edc4804ca..fd39bde118 100644 --- a/indra/newview/llspeakbutton.cpp +++ b/indra/newview/llspeakbutton.cpp @@ -119,6 +119,9 @@ LLSpeakButton::LLSpeakButton(const Params& p)  	// never show "muted" because you can't mute yourself  	mOutputMonitor->setIsMuted(false);  	mOutputMonitor->setIsAgentControl(true); + +	//*TODO find a better place to do that +	LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1));  }  LLSpeakButton::~LLSpeakButton()  | 
