//=========== Copyright Valve Corporation, All rights reserved. ===============// // // Purpose: //=============================================================================// #ifndef VUMETER_H #define VUMETER_H #ifdef _WIN32 #pragma once #endif #include "panorama/controls/panel2d.h" namespace panorama { DECLARE_PANEL_EVENT1( VUMeterBarsChanged, int ); ////////////////////////////////////////////////////////////////////////// // // volume bars control for volume/mic levels // class CVUMeter: public panorama::CPanel2D { DECLARE_PANEL2D( CVUMeter, panorama::CPanel2D ); public: CVUMeter( panorama::CPanel2D *pParent, const char *pchID ); virtual ~CVUMeter(); virtual bool BSetProperty( CPanoramaSymbol symName, const char *pchValue ) OVERRIDE; virtual void OnInitializedFromLayout(); int GetNumActiveBars() const { return m_numActive; } void SetNumActiveBars( int numActive ); int GetNumBarsTotal() const { return m_numBars; } virtual bool OnMoveLeft( int cRepeats ); virtual bool OnMoveRight( int cRepeats ); // Override these to avoid focus slipping away when setting with analog virtual bool OnMoveUp( int nRepeats ); virtual bool OnMoveDown( int nRepeats ); virtual bool OnMouseButtonUp(const MouseData_t &code); virtual bool OnMouseWheel(const MouseData_t &code); virtual void OnMouseMove(float flMouseX, float flMouseY); virtual bool OnActivate(panorama::EPanelEventSource_t eSource); virtual bool OnCancel(panorama::EPanelEventSource_t eSource); virtual void OnStyleFlagsChanged(); // if VU meter is "writable," it will be a tab stop, and be focusable. when activated // it will enter a mode where you can set the bar with the dpad. if VU meter is not // writable, it just displays a value. void SetWritable( bool bWritable ); bool EventActivated( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel, panorama::EPanelEventSource_t eSource ); bool EventCancelled( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel, panorama::EPanelEventSource_t eSource ); bool EventStyleFlagsChanged( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel ); #ifdef DBGFLAG_VALIDATE virtual void ValidateClientPanel( CValidator &validator, const tchar *pchName ) OVERRIDE; #endif protected: bool OnLeftRight( int dx ); bool m_bWritable; int m_numBars, m_numActive; CPanoramaSymbol m_symBarPanelType; CPanoramaSymbol m_symBarPanelAddClass; CPanoramaSymbol m_symBarPanelActiveClass; CUtlVector< panorama::CPanel2D * > m_arrBars; float m_flLastMouseX; float m_flLastMouseY; }; } // namespace panorama #endif // VUMETER_H