[Voice Update] LLPanelVoiceEffect added to LLFloaterActiveSpeakers

Comments out xml menu entry for LLFloaterVoiceEffect access from LLPanelVoiceEffect is the intended method
TODO: Once Shyotl's new layout stack code comes in, make LLFloaterActiveSpeakers into a vertical stack so we can properly hide LLPanelVoiceEffect upon a debug setting.
This commit is contained in:
Lirusaito
2013-06-13 06:29:00 -04:00
parent 01ec6905ab
commit 2d71b9be17
10 changed files with 326 additions and 4 deletions

View File

@@ -381,6 +381,7 @@ set(viewer_SOURCE_FILES
llpanelprofile.cpp
llpanelskins.cpp
llpanelvoicedevicesettings.cpp
llpanelvoiceeffect.cpp
llpanelvolume.cpp
llpanelweb.cpp
llparcelselection.cpp
@@ -887,6 +888,7 @@ set(viewer_HEADER_FILES
llpanelprofile.h
llpanelskins.h
llpanelvoicedevicesettings.h
llpanelvoiceeffect.h
llpanelvolume.h
llpanelweb.h
llparcelselection.h

View File

@@ -34,12 +34,22 @@
#include "llfloateractivespeakers.h"
#include "llparticipantlist.h"
#include "llpanelvoiceeffect.h"
#include "llspeakers.h"
#include "lluictrlfactory.h"
namespace
{
void* createEffectPanel(void*)
{
return new LLPanelVoiceEffect;
}
}
LLFloaterActiveSpeakers::LLFloaterActiveSpeakers(const LLSD& seed) : mPanel(NULL)
{
mFactoryMap["active_speakers_panel"] = LLCallbackMap(createSpeakersPanel, NULL);
mFactoryMap["panel_voice_effect"] = LLCallbackMap(createEffectPanel, NULL);
// do not automatically open singleton floaters (as result of getInstance())
BOOL no_open = FALSE;
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_active_speakers.xml", &getFactoryMap(), no_open);

View File

@@ -0,0 +1,163 @@
/**
* @file llpanelvoiceeffect.cpp
* @author Aimee
* @brief Panel to select Voice Morphs.
*
* $LicenseInfo:firstyear=2010&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 "llpanelvoiceeffect.h"
#include "llcombobox.h"
#include "llfloatervoiceeffect.h"
#include "lltrans.h"
LLPanelVoiceEffect::LLPanelVoiceEffect()
: mVoiceEffectCombo(NULL)
{
mCommitCallbackRegistrar.add("Voice.CommitVoiceEffect", boost::bind(&LLPanelVoiceEffect::onCommitVoiceEffect, this));
}
LLPanelVoiceEffect::~LLPanelVoiceEffect()
{
/*
LLView* combo_list_view = mVoiceEffectCombo->getChildView("ComboBox");
LLTransientFloaterMgr::getInstance()->removeControlView(combo_list_view);
*/
if(LLVoiceClient::instanceExists())
{
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
if (effect_interface)
{
effect_interface->removeObserver(this);
}
}
}
// virtual
BOOL LLPanelVoiceEffect::postBuild()
{
mVoiceEffectCombo = getChild<LLComboBox>("voice_effect");
/*
// Need to tell LLTransientFloaterMgr about the combo list, otherwise it can't
// be clicked while in a docked floater as it extends outside the floater area.
LLView* combo_list_view = mVoiceEffectCombo->getChildView("ComboBox");
LLTransientFloaterMgr::getInstance()->addControlView(combo_list_view);
*/
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
if (effect_interface)
{
effect_interface->addObserver(this);
}
update(true);
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
/// PRIVATE SECTION
//////////////////////////////////////////////////////////////////////////
void LLPanelVoiceEffect::onCommitVoiceEffect()
{
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
if (!effect_interface)
{
mVoiceEffectCombo->setEnabled(false);
return;
}
LLSD value = mVoiceEffectCombo->getValue();
if (value.asInteger() == PREVIEW_VOICE_EFFECTS)
{
// Open the Voice Morph preview floater
LLFloaterVoiceEffect::showInstance();
}
else if (value.asInteger() == GET_VOICE_EFFECTS)
{
// Open the voice morphing info web page
LLWeb::loadURL(LLTrans::getString("voice_morphing_url"));
}
else
{
effect_interface->setVoiceEffect(value.asUUID());
}
mVoiceEffectCombo->setValue(effect_interface->getVoiceEffect());
}
// virtual
void LLPanelVoiceEffect::onVoiceEffectChanged(bool effect_list_updated)
{
update(effect_list_updated);
}
void LLPanelVoiceEffect::update(bool list_updated)
{
if (mVoiceEffectCombo)
{
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
if (!effect_interface) return;
if (list_updated)
{
// Add the default "No Voice Morph" entry.
mVoiceEffectCombo->removeall();
mVoiceEffectCombo->add(getString("no_voice_effect"), LLUUID::null);
mVoiceEffectCombo->addSeparator();
// Add entries for each Voice Morph.
const voice_effect_list_t& effect_list = effect_interface->getVoiceEffectList();
if (!effect_list.empty())
{
for (voice_effect_list_t::const_iterator it = effect_list.begin(); it != effect_list.end(); ++it)
{
mVoiceEffectCombo->add(it->first, it->second, ADD_BOTTOM);
}
mVoiceEffectCombo->addSeparator();
}
// Add the fixed entries to go to the preview floater or marketing page.
mVoiceEffectCombo->add(getString("preview_voice_effects"), PREVIEW_VOICE_EFFECTS);
mVoiceEffectCombo->add(getString("get_voice_effects"), GET_VOICE_EFFECTS);
}
if (effect_interface && LLVoiceClient::instance().isVoiceWorking())
{
// Select the current Voice Morph.
mVoiceEffectCombo->setValue(effect_interface->getVoiceEffect());
mVoiceEffectCombo->setEnabled(true);
}
else
{
// If voice isn't working or Voice Effects are not supported disable the control.
mVoiceEffectCombo->setValue(LLUUID::null);
mVoiceEffectCombo->setEnabled(false);
}
}
}

View File

@@ -0,0 +1,67 @@
/**
* @file llpanelvoiceeffect.h
* @author Aimee
* @brief Panel to select Voice Effects.
*
* $LicenseInfo:firstyear=2010&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_PANELVOICEEFFECT_H
#define LL_PANELVOICEEFFECT_H
#include "llpanel.h"
#include "llvoiceclient.h"
class LLComboBox;
class LLPanelVoiceEffect
: public LLPanel
, public LLVoiceEffectObserver
{
public:
LOG_CLASS(LLPanelVoiceEffect);
LLPanelVoiceEffect();
virtual ~LLPanelVoiceEffect();
virtual BOOL postBuild();
private:
void onCommitVoiceEffect();
void update(bool list_updated);
/// Called by voice effect provider when voice effect list is changed.
virtual void onVoiceEffectChanged(bool effect_list_updated);
// Fixed entries in the Voice Morph list
typedef enum e_voice_effect_combo_items
{
NO_VOICE_EFFECT = 0,
PREVIEW_VOICE_EFFECTS = 1,
GET_VOICE_EFFECTS = 2
} EVoiceEffectComboItems;
LLComboBox* mVoiceEffectCombo;
};
#endif //LL_PANELVOICEEFFECT_H

View File

@@ -5,10 +5,11 @@
width="250">
<panel bottom="0" follows="left|top|right|bottom" left="0" mouse_opaque="false"
name="active_speakers_panel" right="250" top="300">
<scroll_list bottom="35" can_resize="true" column_padding="0" draw_heading="true"
<panel top="-18" left="11" right="-9" name="panel_voice_effect" visiblity_control="VoiceMorphingEnabled" filename="panel_voice_effect.xml" follows="top|right|left"/>
<scroll_list bottom="32" can_resize="true" column_padding="0" draw_heading="true"
draw_stripes="false" follows="left|top|bottom|right" left="10"
multi_select="false" name="speakers_list" right="-10" search_column="1"
sort_column="2" top="-20">
sort_column="2" top="-46">
<column name="icon_speaking_status" sort="speaking_status" width="20" />
<column dynamicwidth="true" label="Name" name="speaker_name" />
<column label="" name="speaking_status" width="0" />

View File

@@ -45,10 +45,10 @@
mouse_opaque="true" name="perm prefs" >
<on_click function="ShowFloater" userdata="perm prefs" />
</menu_item_call>
<menu_item_check mouse_opaque="true" label="Show Voice Morpher" name="voice effect">
<!--menu_item_check mouse_opaque="true" label="Show Voice Morpher" name="voice effect">
<on_click function="ShowFloater" userdata="voice effect"/>
<on_check function="FloaterVisible" userdata="voice effect"/>
</menu_item_check>
</menu_item_check-->
<menu_item_separator bottom="-94" enabled="true" height="8" label="-----------" left="0"
mouse_opaque="true" name="separator" width="243" />
<menu_item_call label="Minimize All Windows" mouse_opaque="true" name="Minimize All Windows">

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
bottom="0"
follows="all"
height="23"
layout="topleft"
name="panel_voice_effect"
width="200">
<string name="no_voice_effect">
Voice Morphing Off
</string>
<string name="preview_voice_effects">
Preview Voice Morphing ▶
</string>
<string name="get_voice_effects">
Get Voice Morphing ▶
</string>
<combo_box
enabled="false"
follows="left|top|right"
height="20"
name="voice_effect"
tool_tip="Select a Voice Morph to change your voice"
bottom="0"
width="200">
<combo_item
label="Voice Morphing Off"
name="no_voice_effect"
top_pad="0"
value="0" />
<combo_box.commit_callback
function="Voice.CommitVoiceEffect" />
</combo_box>
</panel>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_voice_effect">
<string name="no_voice_effect">
Transformación de voz desactivada
</string>
<string name="preview_voice_effects">
Probar transformación de voz ▶
</string>
<string name="get_voice_effects">
Obtener transformación de voz ▶
</string>
<combo_box name="voice_effect" tool_tip="Selecciona una transformación de voz para cambiar tu voz">
<combo_item label="Transformación de voz desactivada" name="no_voice_effect"/>
</combo_box>
</panel>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_voice_effect">
<string name="no_voice_effect">
Effet de voix désactivé
</string>
<string name="preview_voice_effects">
Aperçu des effets de voix ▶
</string>
<string name="get_voice_effects">
Obtenir un effet de voix ▶
</string>
<combo_box name="voice_effect" tool_tip="Sélectionner un effet pour modifier le son de votre voix">
<combo_item label="Effet de voix désactivé" name="no_voice_effect"/>
</combo_box>
</panel>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="panel_voice_effect">
<string name="no_voice_effect">
Distorção de voz desligada
</string>
<string name="preview_voice_effects">
Checar distorção de voz ▶
</string>
<string name="get_voice_effects">
Distorcer voz ▶
</string>
<combo_box name="voice_effect" tool_tip="Selecione um efeito de distorção para mudar sua voz.">
<combo_item label="Distorção de voz desligada" name="no_voice_effect"/>
</combo_box>
</panel>