Skip to content
Snippets Groups Projects
Commit 3e5f5a20 authored by richard's avatar richard
Browse files

EXT-3444 Volume control slider appears in an odd location

reviewed by Leyla
parent daa4965f
No related branches found
No related tags found
No related merge requests found
......@@ -878,9 +878,11 @@ void LLFloater::setSnappedTo(const LLView* snap_view)
else
{
//RN: assume it's a floater as it must be a sibling to our parent floater
LLFloater* floaterp = (LLFloater*)snap_view;
setSnapTarget(floaterp->getHandle());
const LLFloater* floaterp = dynamic_cast<const LLFloater*>(snap_view);
if (floaterp)
{
setSnapTarget(floaterp->getHandle());
}
}
}
......
......@@ -214,7 +214,6 @@ set(viewer_SOURCE_FILES
llfloaterurldisplay.cpp
llfloaterurlentry.cpp
llfloatervoicedevicesettings.cpp
llfloatervolumepulldown.cpp
llfloaterwater.cpp
llfloaterwhitelistentry.cpp
llfloaterwindlight.cpp
......@@ -349,6 +348,7 @@ set(viewer_SOURCE_FILES
llpanelshower.cpp
llpanelteleporthistory.cpp
llpanelvolume.cpp
llpanelvolumepulldown.cpp
llparcelselection.cpp
llparticipantlist.cpp
llpatchvertexarray.cpp
......@@ -852,6 +852,7 @@ set(viewer_HEADER_FILES
llpanelshower.h
llpanelteleporthistory.h
llpanelvolume.h
llpanelvolumepulldown.h
llparcelselection.h
llparticipantlist.h
llpatchvertexarray.h
......
/**
* @file llpanelvolumepulldown.cpp
* @author Tofu Linden
* @brief A floater showing the master volume pull-down
*
* $LicenseInfo:firstyear=2008&license=viewergpl$
*
* Copyright (c) 2008-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "llpanelvolumepulldown.h"
// Viewer libs
#include "llviewercontrol.h"
#include "llstatusbar.h"
// Linden libs
#include "llbutton.h"
#include "lltabcontainer.h"
#include "llfloaterreg.h"
#include "llfloaterpreference.h"
#include "llslider.h"
/* static */ const F32 LLPanelVolumePulldown::sAutoCloseFadeStartTimeSec = 4.0f;
/* static */ const F32 LLPanelVolumePulldown::sAutoCloseTotalTimeSec = 5.0f;
///----------------------------------------------------------------------------
/// Class LLPanelVolumePulldown
///----------------------------------------------------------------------------
// Default constructor
LLPanelVolumePulldown::LLPanelVolumePulldown()
{
mCommitCallbackRegistrar.add("Vol.setControlFalse", boost::bind(&LLPanelVolumePulldown::setControlFalse, this, _2));
mCommitCallbackRegistrar.add("Vol.GoAudioPrefs", boost::bind(&LLPanelVolumePulldown::onAdvancedButtonClick, this, _2));
LLUICtrlFactory::instance().buildPanel(this, "panel_volume_pulldown.xml");
}
BOOL LLPanelVolumePulldown::postBuild()
{
// set the initial volume-slider's position to reflect reality
LLSlider* volslider = getChild<LLSlider>( "mastervolume" );
volslider->setValue(gSavedSettings.getF32("AudioLevelMaster"));
return LLPanel::postBuild();
}
/*virtual*/
void LLPanelVolumePulldown::onMouseEnter(S32 x, S32 y, MASK mask)
{
mHoverTimer.stop();
LLPanel::onMouseEnter(x,y,mask);
}
/*virtual*/
void LLPanelVolumePulldown::onMouseLeave(S32 x, S32 y, MASK mask)
{
mHoverTimer.start();
LLPanel::onMouseLeave(x,y,mask);
}
/*virtual*/
void LLPanelVolumePulldown::handleVisibilityChange ( BOOL new_visibility )
{
if (new_visibility)
{
mHoverTimer.start(); // timer will be stopped when mouse hovers over panel
gFocusMgr.setTopCtrl(this);
}
else
{
mHoverTimer.stop();
gFocusMgr.setTopCtrl(NULL);
}
}
/*virtual*/
void LLPanelVolumePulldown::onTopLost()
{
setVisible(FALSE);
}
void LLPanelVolumePulldown::onAdvancedButtonClick(const LLSD& user_data)
{
// close the global volume minicontrol, we're bringing up the big one
setVisible(FALSE);
// bring up the prefs floater
LLFloaterPreference* prefsfloater = dynamic_cast<LLFloaterPreference*>
(LLFloaterReg::showInstance("preferences"));
if (prefsfloater)
{
// grab the 'audio' panel from the preferences floater and
// bring it the front!
LLTabContainer* tabcontainer = prefsfloater->getChild<LLTabContainer>("pref core");
LLPanel* audiopanel = prefsfloater->getChild<LLPanel>("audio");
if (tabcontainer && audiopanel)
{
tabcontainer->selectTabPanel(audiopanel);
}
}
}
void LLPanelVolumePulldown::setControlFalse(const LLSD& user_data)
{
std::string control_name = user_data.asString();
LLControlVariable* control = findControl(control_name);
if (control)
control->set(LLSD(FALSE));
}
//virtual
void LLPanelVolumePulldown::draw()
{
F32 alpha = mHoverTimer.getStarted()
? clamp_rescale(mHoverTimer.getElapsedTimeF32(), sAutoCloseFadeStartTimeSec, sAutoCloseTotalTimeSec, 1.f, 0.f)
: 1.0f;
LLViewDrawContext context(alpha);
LLPanel::draw();
if (alpha == 0.f)
{
setVisible(FALSE);
}
}
/**
* @file llpanelvolumepulldown.h
* @author Tofu Linden
* @brief A panel showing the master volume pull-down
*
* $LicenseInfo:firstyear=2008&license=viewergpl$
*
* Copyright (c) 2008-2009, Linden Research, Inc.
*
* Second Life Viewer Source Code
* The source code in this file ("Source Code") is provided by Linden Lab
* to you under the terms of the GNU General Public License, version 2.0
* ("GPL"), unless you have obtained a separate licensing agreement
* ("Other License"), formally executed by you and Linden Lab. Terms of
* the GPL can be found in doc/GPL-license.txt in this distribution, or
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
*
* There are special exceptions to the terms and conditions of the GPL as
* it is applied to this Source Code. View the full text of the exception
* in the file doc/FLOSS-exception.txt in this software distribution, or
* online at
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
*
* By copying, modifying or distributing this software, you acknowledge
* that you have read and understood your obligations described above,
* and agree to abide by those obligations.
*
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
* COMPLETENESS OR PERFORMANCE.
* $/LicenseInfo$
*/
#ifndef LL_LLPANELVOLUMEPULLDOWN_H
#define LL_LLPANELVOLUMEPULLDOWN_H
#include "linden_common.h"
#include "llpanel.h"
class LLFrameTimer;
class LLPanelVolumePulldown : public LLPanel
{
public:
LLPanelVolumePulldown();
/*virtual*/ void draw();
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
/*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
/*virtual*/ void onTopLost();
/*virtual*/ BOOL postBuild();
private:
void setControlFalse(const LLSD& user_data);
void onAdvancedButtonClick(const LLSD& user_data);
LLFrameTimer mHoverTimer;
static const F32 sAutoCloseFadeStartTimeSec;
static const F32 sAutoCloseTotalTimeSec;
};
#endif // LL_LLPANELVOLUMEPULLDOWN_H
......@@ -42,7 +42,7 @@
#include "llfloaterbuycurrency.h"
#include "llfloaterchat.h"
#include "llfloaterlagmeter.h"
#include "llfloatervolumepulldown.h"
#include "llpanelvolumepulldown.h"
#include "llfloaterregioninfo.h"
#include "llfloaterscriptdebug.h"
#include "llhudicon.h"
......@@ -204,6 +204,21 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
addChild(mSGPacketLoss);
childSetActionTextbox("stat_btn", onClickStatGraph);
mPanelVolumePulldown = new LLPanelVolumePulldown();
addChild(mPanelVolumePulldown);
LLRect volume_pulldown_rect = mPanelVolumePulldown->getRect();
LLButton* volbtn = getChild<LLButton>( "volume_btn" );
volume_pulldown_rect.setLeftTopAndSize(volbtn->getRect().mLeft -
(volume_pulldown_rect.getWidth() - volbtn->getRect().getWidth())/2,
volbtn->calcScreenRect().mBottom,
volume_pulldown_rect.getWidth(),
volume_pulldown_rect.getHeight());
mPanelVolumePulldown->setShape(volume_pulldown_rect);
mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
mPanelVolumePulldown->setVisible(FALSE);
}
LLStatusBar::~LLStatusBar()
......@@ -501,7 +516,7 @@ static void onClickScriptDebug(void*)
void LLStatusBar::onMouseEnterVolume(LLUICtrl* ctrl)
{
// show the master volume pull-down
LLFloaterReg::showInstance("volume_pulldown");
gStatusBar->mPanelVolumePulldown->setVisible(TRUE);
}
static void onClickVolume(void* data)
......
......@@ -112,7 +112,7 @@ class LLStatusBar
S32 mSquareMetersCommitted;
LLFrameTimer* mBalanceTimer;
LLFrameTimer* mHealthTimer;
LLPanelVolumePulldown* mPanelVolumePulldown;
static std::vector<std::string> sDays;
static std::vector<std::string> sMonths;
static const U32 MAX_DATE_STRING_LENGTH;
......
......@@ -106,7 +106,6 @@
#include "llfloateruipreview.h"
#include "llfloaterurldisplay.h"
#include "llfloatervoicedevicesettings.h"
#include "llfloatervolumepulldown.h"
#include "llfloaterwater.h"
#include "llfloaterwhitelistentry.h"
#include "llfloaterwindlight.h"
......@@ -256,7 +255,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("upload_image", "floater_image_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterImagePreview>, "upload");
LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");
LLFloaterReg::add("volume_pulldown", "floater_volume_pulldown.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVolumePulldown>);
LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);
LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);
......
......@@ -84,7 +84,6 @@
tool_tip="Global Volume Control"
width="16" />
<text
enabled="true"
follows="right|bottom"
halign="center"
height="12"
......
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_opaque="true"
background_visible="false"
border_visible="false"
border="false"
chrome="true"
follows="bottom"
height="150"
layout="topleft"
name="volumepulldown_floater"
width="32">
<!-- floater background image -->
<icon
height="150"
image_name="Inspector_Background"
layout="topleft"
left="0"
name="normal_background"
top="0"
width="32" />
<slider
control_name="AudioLevelMaster"
follows="left|top"
left="0"
top="1"
orientation="vertical"
height="120"
increment="0.05"
initial_value="0.5"
layout="topleft"
name="mastervolume"
show_text="false"
slider_label.halign="right"
top_pad="2"
volume="true">
<slider.commit_callback
function="Vol.setControlFalse"
parameter="MuteAudio" />
</slider>
<button
left="7"
top_pad="9"
width="18"
height="12"
follows="top|left"
name="prefs_btn"
image_unselected="Icon_Gear_Foreground"
image_disabled="Icon_Gear_Background"
image_pressed="Icon_Gear_Press"
scale_image="false">
<button.commit_callback
function="Vol.GoAudioPrefs" />
</button>
</panel>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment