[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:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
163
indra/newview/llpanelvoiceeffect.cpp
Executable file
163
indra/newview/llpanelvoiceeffect.cpp
Executable 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
67
indra/newview/llpanelvoiceeffect.h
Executable file
67
indra/newview/llpanelvoiceeffect.h
Executable 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
|
||||
@@ -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" />
|
||||
|
||||
@@ -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">
|
||||
|
||||
34
indra/newview/skins/default/xui/en-us/panel_voice_effect.xml
Normal file
34
indra/newview/skins/default/xui/en-us/panel_voice_effect.xml
Normal 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>
|
||||
15
indra/newview/skins/default/xui/es/panel_voice_effect.xml
Normal file
15
indra/newview/skins/default/xui/es/panel_voice_effect.xml
Normal 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>
|
||||
15
indra/newview/skins/default/xui/fr/panel_voice_effect.xml
Normal file
15
indra/newview/skins/default/xui/fr/panel_voice_effect.xml
Normal 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>
|
||||
15
indra/newview/skins/default/xui/pt/panel_voice_effect.xml
Normal file
15
indra/newview/skins/default/xui/pt/panel_voice_effect.xml
Normal 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>
|
||||
Reference in New Issue
Block a user