summaryrefslogtreecommitdiff
path: root/indra/newview/llcallfloater.cpp
diff options
context:
space:
mode:
authorAimee Linden <aimee@lindenlab.com>2010-04-28 03:33:15 +0100
committerAimee Linden <aimee@lindenlab.com>2010-04-28 03:33:15 +0100
commitcacfa18643092547e7665b36d482ad9c8c5dfc54 (patch)
tree49c19b54135bfd678dfda67dbee9a572888ba866 /indra/newview/llcallfloater.cpp
parentda54c180a0e5624968431c7ee97a6c193ea8cb35 (diff)
Persist Voice Font selection.
Added 'VoiceFontDefault' saved setting. Implemented LLVoiceClientFontsObserver to update the UI when the voice font list is received. Renamed LLVoiceClientParticipantObserver::onChange() to onParticipantsChanged to avoid ambiguity and make the code more readable. Made the Voice Font combo in the VCP auto resize to make best use of the available space when the 'Leave Call button is not visible.
Diffstat (limited to 'indra/newview/llcallfloater.cpp')
-rw-r--r--indra/newview/llcallfloater.cpp64
1 files changed, 30 insertions, 34 deletions
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index f41875f67b..703c7dd435 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -115,7 +115,8 @@ LLCallFloater::LLCallFloater(const LLSD& key)
mSpeakerDelayRemover = new LLSpeakersDelayActionsStorage(boost::bind(&LLCallFloater::removeVoiceLeftParticipant, this, _1), voice_left_remove_delay);
mFactoryMap["non_avatar_caller"] = LLCallbackMap(create_non_avatar_caller, NULL);
- LLVoiceClient::getInstance()->addObserver(this);
+ LLVoiceClient::instance().addObserver(dynamic_cast<LLVoiceClientParticipantObserver*>(this));
+ LLVoiceClient::instance().addObserver(dynamic_cast<LLVoiceClientFontsObserver*>(this));
LLTransientFloaterMgr::getInstance()->addControlView(this);
// force docked state since this floater doesn't save it between recreations
@@ -135,7 +136,8 @@ LLCallFloater::~LLCallFloater()
if(LLVoiceClient::instanceExists())
{
- LLVoiceClient::instance().removeObserver(this);
+ LLVoiceClient::instance().removeObserver(dynamic_cast<LLVoiceClientParticipantObserver*>(this));
+ LLVoiceClient::instance().removeObserver(dynamic_cast<LLVoiceClientFontsObserver*>(this));
}
LLTransientFloaterMgr::getInstance()->removeControlView(this);
}
@@ -208,11 +210,8 @@ void LLCallFloater::draw()
}
// virtual
-void LLCallFloater::onChange()
+void LLCallFloater::onParticipantsChanged()
{
- // *FIX: Temporarily dumping this here till I decide where it should go
- updateVoiceFont();
-
if (NULL == mParticipants) return;
updateParticipantsVoiceState();
@@ -226,42 +225,23 @@ void LLCallFloater::onChange()
}
}
-//////////////////////////////////////////////////////////////////////////
-/// PRIVATE SECTION
-//////////////////////////////////////////////////////////////////////////
-
-void LLCallFloater::leaveCall()
-{
- LLVoiceChannel* voice_channel = LLVoiceChannel::getCurrentVoiceChannel();
- if (voice_channel)
- {
- gIMMgr->endCall(voice_channel->getSessionID());
- }
-}
-
-/* static */
-void LLCallFloater::commitVoiceFont(LLUICtrl* ctrl, void* userdata)
-{
- LLVoiceClient::getInstance()->setVoiceFont(ctrl->getValue());
-}
-
-void LLCallFloater::updateVoiceFont()
+// virtual
+void LLCallFloater::onVoiceFontsChanged()
{
if (mVoiceFont)
{
mVoiceFont->removeall();
mVoiceFont->add(getString("no_voice_font"), LLUUID::null);
- if (LLVoiceClient::getInstance()->hasVoiceFonts())
+ if (LLVoiceClient::instance().hasVoiceFonts())
{
- const LLVoiceClient::voice_font_list_t font_list = LLVoiceClient::getInstance()->getVoiceFontList();
-
+ const LLVoiceClient::voice_font_list_t font_list = LLVoiceClient::instance().getVoiceFontList();
for (LLVoiceClient::voice_font_list_t::const_iterator it = font_list.begin(); it != font_list.end(); ++it)
{
mVoiceFont->add(*(it->first), *(it->second), ADD_BOTTOM);
}
mVoiceFont->setEnabled(true);
- mVoiceFont->setValue(LLVoiceClient::getInstance()->getVoiceFont());
+ mVoiceFont->setValue(LLVoiceClient::instance().getVoiceFont());
}
else
{
@@ -270,6 +250,25 @@ void LLCallFloater::updateVoiceFont()
}
}
+//////////////////////////////////////////////////////////////////////////
+/// PRIVATE SECTION
+//////////////////////////////////////////////////////////////////////////
+
+void LLCallFloater::leaveCall()
+{
+ LLVoiceChannel* voice_channel = LLVoiceChannel::getCurrentVoiceChannel();
+ if (voice_channel)
+ {
+ gIMMgr->endCall(voice_channel->getSessionID());
+ }
+}
+
+/* static */
+void LLCallFloater::commitVoiceFont(LLUICtrl* ctrl, void* userdata)
+{
+ LLVoiceClient::getInstance()->setVoiceFont(ctrl->getValue());
+}
+
void LLCallFloater::updateSession()
{
LLVoiceChannel* voice_channel = LLVoiceChannel::getCurrentVoiceChannel();
@@ -334,7 +333,7 @@ void LLCallFloater::updateSession()
}
updateTitle();
-
+
//hide "Leave Call" button for nearby chat
bool is_local_chat = mVoiceType == VC_LOCAL_CHAT;
childSetVisible("leave_call_btn_panel", !is_local_chat);
@@ -787,9 +786,6 @@ void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state)
{
reset(new_state);
}
-
- // *FIX: Dumped here till I decide where to put it
- updateVoiceFont();
}
void LLCallFloater::reset(const LLVoiceChannel::EState& new_state)