focusedParameter.h (1729B)
1 #pragma once 2 3 #include "focusedParameterTooltip.h" 4 5 #include "juce_events/juce_events.h" 6 7 #include "jucePluginLib/parameterlistener.h" 8 9 namespace juce 10 { 11 class MouseEvent; 12 } 13 14 namespace genericUI 15 { 16 class Editor; 17 } 18 19 namespace pluginLib 20 { 21 class Parameter; 22 class Controller; 23 class ParameterBinding; 24 } 25 26 namespace jucePluginEditorLib 27 { 28 class FocusedParameter : juce::Timer 29 { 30 public: 31 enum class Priority 32 { 33 None, 34 Low, 35 Medium, 36 High 37 }; 38 39 FocusedParameter(const pluginLib::Controller& _controller, const pluginLib::ParameterBinding& _parameterBinding, const genericUI::Editor& _editor); 40 ~FocusedParameter() override; 41 42 void onMouseEnter(const juce::MouseEvent& _event); 43 44 void updateByComponent(juce::Component* _comp); 45 46 virtual void updateParameter(const std::string& _name, const std::string& _value); 47 48 private: 49 void timerCallback() override; 50 void updateControlLabel(juce::Component* _component, Priority _prio); 51 void updateControlLabel(juce::Component* _component, const pluginLib::Parameter* _param); 52 void updateControlLabel(juce::Component* _component, const pluginLib::Parameter* _param, Priority _priority); 53 54 const pluginLib::Parameter* getParameterFromComponent(juce::Component* _component) const; 55 56 const pluginLib::Parameter* resolveSoftKnob(const pluginLib::Parameter* _sourceParam) const; 57 58 const pluginLib::ParameterBinding& m_parameterBinding; 59 const pluginLib::Controller& m_controller; 60 61 juce::Label* m_focusedParameterName = nullptr; 62 juce::Label* m_focusedParameterValue = nullptr; 63 64 std::unique_ptr<FocusedParameterTooltip> m_tooltip; 65 66 std::map<pluginLib::Parameter*, pluginLib::ParameterListener> m_boundParameters; 67 Priority m_currentPriority = Priority::None; 68 }; 69 }