diff options
author | Aimee Linden <aimee@lindenlab.com> | 2010-04-30 19:38:52 +0100 |
---|---|---|
committer | Aimee Linden <aimee@lindenlab.com> | 2010-04-30 19:38:52 +0100 |
commit | 7a6474129c6015e102b30570fa474ba48e4c85e0 (patch) | |
tree | 88d47e0fb823003e71996f23d2979961c17a1626 /indra | |
parent | 5a9d0803beef57cc35dbf076b2d61cb3ad730475 (diff) |
Move the Voice Font control from LLCallFloater to its own panel so that it can be reused.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/CMakeLists.txt | 2 | ||||
-rw-r--r-- | indra/newview/llcallfloater.cpp | 57 | ||||
-rw-r--r-- | indra/newview/llcallfloater.h | 12 | ||||
-rw-r--r-- | indra/newview/llvoiceclient.cpp | 7 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_voice_controls.xml | 66 |
5 files changed, 36 insertions, 108 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 835a9aacd5..688886de3a 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -350,6 +350,7 @@ set(viewer_SOURCE_FILES llpanelprofileview.cpp llpanelteleporthistory.cpp llpaneltiptoast.cpp + llpanelvoicefont.cpp llpanelvolume.cpp llpanelvolumepulldown.cpp llparcelselection.cpp @@ -857,6 +858,7 @@ set(viewer_HEADER_FILES llpanelprofileview.h llpanelteleporthistory.h llpaneltiptoast.h + llpanelvoicefont.h llpanelvolume.h llpanelvolumepulldown.h llparcelselection.h diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index 37e551890a..1c03fbde41 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -52,7 +52,7 @@ #include "lltransientfloatermgr.h" #include "llviewerwindow.h" #include "llvoicechannel.h" -#include "llvoiceclient.h" // for Voice font list types +#include "llviewercontrol.h" #include "llviewerparcelmgr.h" static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids); @@ -106,7 +106,6 @@ LLCallFloater::LLCallFloater(const LLSD& key) , mNonAvatarCaller(NULL) , mVoiceType(VC_LOCAL_CHAT) , mAgentPanel(NULL) -, mVoiceFont(NULL) , mSpeakingIndicator(NULL) , mIsModeratorMutedVoice(false) , mInitParticipantsVoiceState(false) @@ -115,10 +114,7 @@ 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::instance().addObserver(dynamic_cast<LLVoiceClientParticipantObserver*>(this)); - LLVoiceClient::instance().addObserver(dynamic_cast<LLVoiceClientFontsObserver*>(this)); - mCommitCallbackRegistrar.add("Voice.CommitVoiceFont", boost::bind(&LLCallFloater::onCommitVoiceFont, this)); + LLVoiceClient::instance().addObserver(this); LLTransientFloaterMgr::getInstance()->addControlView(this); // force docked state since this floater doesn't save it between recreations @@ -138,8 +134,7 @@ LLCallFloater::~LLCallFloater() if(LLVoiceClient::instanceExists()) { - LLVoiceClient::instance().removeObserver(dynamic_cast<LLVoiceClientParticipantObserver*>(this)); - LLVoiceClient::instance().removeObserver(dynamic_cast<LLVoiceClientFontsObserver*>(this)); + LLVoiceClient::instance().removeObserver(this); } LLTransientFloaterMgr::getInstance()->removeControlView(this); } @@ -153,7 +148,6 @@ BOOL LLCallFloater::postBuild() childSetAction("leave_call_btn", boost::bind(&LLCallFloater::leaveCall, this)); - mVoiceFont = getChild<LLComboBox>("voice_font"); mNonAvatarCaller = getChild<LLNonAvatarCaller>("non_avatar_caller"); mNonAvatarCaller->setVisible(FALSE); @@ -225,12 +219,6 @@ void LLCallFloater::onParticipantsChanged() } } -// virtual -void LLCallFloater::onVoiceFontsChanged() -{ - updateVoiceFont(); -} - ////////////////////////////////////////////////////////////////////////// /// PRIVATE SECTION ////////////////////////////////////////////////////////////////////////// @@ -244,38 +232,6 @@ void LLCallFloater::leaveCall() } } -void LLCallFloater::onCommitVoiceFont() -{ - if (LLVoiceClient::instance().hasVoiceFonts()) - { - LLVoiceClient::getInstance()->setVoiceFont(mVoiceFont->getValue()); - } -} - -void LLCallFloater::updateVoiceFont() -{ - if (mVoiceFont) - { - mVoiceFont->removeall(); - mVoiceFont->add(getString("no_voice_font"), LLUUID::null); - - if (LLVoiceClient::instance().hasVoiceFonts()) - { - 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::instance().getVoiceFont()); - } - else - { - mVoiceFont->setEnabled(false); - } - } -} - void LLCallFloater::updateSession() { LLVoiceChannel* voice_channel = LLVoiceChannel::getCurrentVoiceChannel(); @@ -333,23 +289,22 @@ void LLCallFloater::updateSession() if (NULL == mSpeakerManager) { - // by default let show nearby chat participants + // By default show nearby chat participants mSpeakerManager = LLLocalSpeakerMgr::getInstance(); lldebugs << "Set DEFAULT speaker manager" << llendl; mVoiceType = VC_LOCAL_CHAT; } updateTitle(); - updateVoiceFont(); - //hide "Leave Call" button for nearby chat + // Hide "Leave Call" button for nearby chat bool is_local_chat = mVoiceType == VC_LOCAL_CHAT; childSetVisible("leave_call_btn_panel", !is_local_chat); refreshParticipantList(); updateAgentModeratorState(); - //show floater for voice calls & only in CONNECTED to voice channel state + // Show floater for voice calls & only in CONNECTED to voice channel state if (!is_local_chat && voice_channel && LLVoiceChannel::STATE_CONNECTED == voice_channel->getState()) diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index 90b23eb4c4..e4341175e2 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -40,7 +40,6 @@ class LLAvatarList; class LLAvatarListItem; -class LLComboBox; class LLNonAvatarCaller; class LLOutputMonitorCtrl; class LLParticipantList; @@ -58,9 +57,7 @@ class LLSpeakersDelayActionsStorage; * When the Resident is engaged in any chat except Nearby Chat, the Voice Control Panel * also provides a 'Leave Call' button to allow the Resident to leave that voice channel. */ -class LLCallFloater : public LLTransientDockableFloater, - LLVoiceClientParticipantObserver, - LLVoiceClientFontsObserver +class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipantObserver { public: @@ -80,9 +77,6 @@ public: */ /*virtual*/ void onParticipantsChanged(); - /// Called by LLVoiceClient::notifyVoiceFontObservers when voice font list is changed. - /*virtual*/ void onVoiceFontsChanged(); - static void sOnCurrentChannelChanged(const LLUUID& session_id); private: @@ -107,9 +101,6 @@ private: void leaveCall(); - void onCommitVoiceFont(); - void updateVoiceFont(); - /** * Updates mSpeakerManager and list according to current Voice Channel * @@ -239,7 +230,6 @@ private: LLNonAvatarCaller* mNonAvatarCaller; EVoiceControls mVoiceType; LLPanel* mAgentPanel; - LLComboBox* mVoiceFont; LLOutputMonitorCtrl* mSpeakingIndicator; bool mIsModeratorMutedVoice; diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 497f1db44d..007d95043d 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -7262,8 +7262,13 @@ bool LLVoiceClient::setVoiceFont(const LLUUID& id) bool LLVoiceClient::setVoiceFont(const std::string &session_handle, const LLUUID& id) { sessionState *session = findSession(session_handle); + if (!session) + { + LL_DEBUGS("Voice") << "Invalid Session." << LL_ENDL; + return false; + } - if (!session || !session->mVoiceEnabled || !hasVoiceFonts()) + if (!hasVoiceFonts()) { LL_DEBUGS("Voice") << "Voice fonts not available." << LL_ENDL; return false; 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 370bc05c28..83380577ca 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -3,7 +3,7 @@ can_resize="true" can_minimize="true" can_close="false" - height="202" + height="205" layout="topleft" min_height="124" min_width="190" @@ -35,9 +35,6 @@ name="no_one_near"> No one near has voice enabled </string> - <floater.string name="no_voice_font"> - No Voice Effect - </floater.string> <layout_stack clip="false" follows="all" @@ -53,7 +50,7 @@ user_resize="false" auto_resize="false" layout="topleft" - height="26" + height="20" name="my_panel"> <avatar_icon enabled="false" @@ -93,55 +90,34 @@ clip="true" auto_resize="false" follows="left|top|right" - height="23" + height="26" layout="topleft" - left="10" mouse_opaque="false" name="voice_font_and_leave_call_stack" orientation="horizontal" - width="263"> + width="262"> + <panel + class="panel_voice_font" + name="panel_voice_font" + visiblity_control="VoiceFontUI" + filename="panel_voice_font.xml" /> <layout_panel - auto_resize="true" + auto_resize="false" user_resize="false" - follows="top|left" - height="26" - visiblity_control="VoiceFontUI" + follows="top|right" + height="23" + visible="true" layout="topleft" - name="voice_font_panel" - width="150"> - <combo_box - enabled="false" - follows="left|top|right" + name="leave_call_btn_panel" + width="100"> + <button + follows="right|top" height="23" - name="voice_font" - top_pad="0" - width="150"> - <combo_box.item - label="No Voice Effect" - name="no_voice_font" - value="0" /> - <combo_box.commit_callback - function="Voice.CommitVoiceFont" /> - </combo_box> + label="Leave Call" + name="leave_call_btn" + width="100" /> </layout_panel> - <layout_panel - auto_resize="false" - user_resize="false" - follows="top|right" - height="26" - visible="true" - layout="topleft" - name="leave_call_btn_panel" - width="100"> - <button - follows="right|top" - height="23" - top_pad="0" - label="Leave Call" - name="leave_call_btn" - width="100" /> - </layout_panel> - </layout_stack> + </layout_stack> <layout_panel follows="all" layout="topleft" |