diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llcallfloater.cpp | 31 | ||||
| -rw-r--r-- | indra/newview/llcallfloater.h | 28 | ||||
| -rw-r--r-- | indra/newview/llspeakbutton.cpp | 48 | ||||
| -rw-r--r-- | indra/newview/llspeakbutton.h | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_voice_controls.xml | 3 | 
5 files changed, 75 insertions, 39 deletions
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index 82f86bbaed..eaa048f5aa 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -35,4 +35,35 @@  #include "llcallfloater.h" +#include "llavatarlist.h" +#include "llparticipantlist.h" +#include "llspeakers.h" + + +LLCallFloater::LLCallFloater() +: LLFloater(LLSD()) +, mSpeakerManager(NULL) +, mPaticipants(NULL) +, mAvatarList(NULL) +{ +	LLUICtrlFactory::getInstance()->buildFloater(this, "floater_voice_controls.xml", NULL); +} + +LLCallFloater::~LLCallFloater() +{ +	delete mPaticipants; +	mPaticipants = NULL; +} + +// virtual +BOOL LLCallFloater::postBuild() +{ +	LLFloater::postBuild(); +	mAvatarList = getChild<LLAvatarList>("speakers_list"); + +	mSpeakerManager = LLLocalSpeakerMgr::getInstance(); +	mPaticipants = new LLParticipantList(mSpeakerManager, mAvatarList); + +	return TRUE; +}  //EOF diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index 3732379da2..f1afddb1cc 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -36,20 +36,34 @@  #include "llfloater.h" +class LLAvatarList; +class LLParticipantList; +class LLSpeakerMgr; +  /** - * The Voice Control Panel is an ambient window summoned by clicking the flyout chevron on the Speak button.
 - * It can be torn-off and freely positioned onscreen.
 - *
 - * When the Resident is engaged in Nearby Voice Chat, the Voice Control Panel provides control over 
 - * the Resident's own microphone input volume, the audible volume of each of the other participants,
 - * the Resident's own Voice Morphing settings (if she has subscribed to enable the feature), and Voice Recording.
 - *
 + * The Voice Control Panel is an ambient window summoned by clicking the flyout chevron on the Speak button. + * It can be torn-off and freely positioned onscreen. + * + * When the Resident is engaged in Nearby Voice Chat, the Voice Control Panel provides control over  + * the Resident's own microphone input volume, the audible volume of each of the other participants, + * the Resident's own Voice Morphing settings (if she has subscribed to enable the feature), and Voice Recording. + *   * When the Resident is engaged in Group Voice Chat, the Voice Control Panel also provides an    * 'End Call' button to allow the Resident to leave that voice channel.   */  class LLCallFloater : public LLFloater  { +public: +	LLCallFloater(); +	~LLCallFloater(); + +	/*virtual*/ BOOL postBuild(); + +private: +	LLSpeakerMgr* mSpeakerManager; +	LLParticipantList* mPaticipants; +	LLAvatarList* mAvatarList;  }; diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp index 54f776ca6a..9562d7828c 100644 --- a/indra/newview/llspeakbutton.cpp +++ b/indra/newview/llspeakbutton.cpp @@ -32,19 +32,13 @@  #include "llviewerprecompiledheaders.h" // must be first include +#include "llbutton.h" +  #include "llagent.h"  #include "llbottomtray.h" -#include "llfloaterreg.h" -#include "llvoiceclient.h" -#include "llvoicecontrolpanel.h" -#include "lltransientfloatermgr.h" - -#include "llavatariconctrl.h" -#include "llbutton.h" -#include "llpanel.h" -#include "lltextbox.h" +#include "llcallfloater.h"  #include "lloutputmonitorctrl.h" -#include "llgroupmgr.h" +#include "lltransientfloatermgr.h"  #include "llspeakbutton.h" @@ -72,7 +66,6 @@ void LLSpeakButton::draw()  LLSpeakButton::LLSpeakButton(const Params& p)  : LLUICtrl(p) -, mPrivateCallPanel(NULL)  , mOutputMonitor(NULL)  , mSpeakBtn(NULL)  , mShowBtn(NULL) @@ -179,9 +172,11 @@ void LLSpeakButton::onClick_ShowBtn()  {  	if(!mShowBtn->getToggleState())  	{ -		mPrivateCallPanel->onClickClose(mPrivateCallPanel); -		delete mPrivateCallPanel; -		mPrivateCallPanel = NULL; +		if (!mPrivateCallPanel.isDead()) +		{ +			LLFloater* instance = mPrivateCallPanel.get(); +			instance->onClickClose(instance); +		}  		mShowBtn->setToggleState(FALSE);  		return;  	} @@ -191,25 +186,20 @@ void LLSpeakButton::onClick_ShowBtn()  	localPointToScreen(x, y, &x, &y); -	mPrivateCallPanel = new LLVoiceControlPanel; -	getRootView()->addChild(mPrivateCallPanel); - -	y = LLBottomTray::getInstance()->getRect().getHeight() + mPrivateCallPanel->getRect().getHeight(); +	LLCallFloater* instance = new LLCallFloater; +	mPrivateCallPanel = instance->getHandle(); -	LLRect rect; -	rect.setLeftTopAndSize(x, y, mPrivateCallPanel->getRect().getWidth(), mPrivateCallPanel->getRect().getHeight()); -	mPrivateCallPanel->setRect(rect); +	// *TODO: mantipov: why we are adding this floater to Root View? It is in FloaterView by default +	getRootView()->addChild(instance); +	y = LLBottomTray::getInstance()->getRect().getHeight() + instance->getRect().getHeight(); -	LLAvatarListItem* item = new LLAvatarListItem(); -	item->showLastInteractionTime(false); -	item->showInfoBtn(true); -	item->showSpeakingIndicator(true); -	item->reshape(mPrivateCallPanel->getRect().getWidth(), item->getRect().getHeight(), FALSE); +	LLRect rect; +	rect.setLeftTopAndSize(x, y, instance->getRect().getWidth(), instance->getRect().getHeight()); +	instance->setRect(rect); -	mPrivateCallPanel->addItem(item); -	mPrivateCallPanel->setVisible(TRUE); -	mPrivateCallPanel->setFrontmost(TRUE); +	instance->setVisible(TRUE); +	instance->setFrontmost(TRUE);  	mShowBtn->setToggleState(TRUE);  } diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h index 424ee5357a..33f7c9fa28 100644 --- a/indra/newview/llspeakbutton.h +++ b/indra/newview/llspeakbutton.h @@ -36,7 +36,7 @@  #include "llinitparam.h"  #include "lluictrl.h" -class LLVoiceControlPanel; +class LLCallFloater;  class LLButton;  class LLOutputMonitorCtrl; @@ -91,7 +91,7 @@ protected:  private:  	LLButton*	mSpeakBtn;  	LLButton*	mShowBtn; -	LLVoiceControlPanel* mPrivateCallPanel; +	LLHandle<LLFloater> mPrivateCallPanel;  	LLOutputMonitorCtrl* mOutputMonitor;  }; diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml index 705b4276e3..82b4372a4b 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -87,9 +87,10 @@      <avatar_list       follows="all"       height="197" +     ignore_online_status="true"       layout="topleft"       left="0"       multi_select="true" -     name="avatar_list" +     name="speakers_list"       width="282" />  </floater>  | 
