Bläddra i källkod

LibGUI: Add HorizontalSlider and VerticalSlider convenience classes

Andreas Kling 5 år sedan
förälder
incheckning
dccf335d5b

+ 7 - 7
Applications/Piano/KnobsWidget.cpp

@@ -74,7 +74,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
 
     // FIXME: Implement vertical flipping in GSlider, not here.
 
-    m_octave_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
+    m_octave_knob = GUI::VerticalSlider::construct(m_knobs_container);
     m_octave_knob->set_tooltip("Z: octave down, X: octave up");
     m_octave_knob->set_range(octave_min - 1, octave_max - 1);
     m_octave_knob->set_value((octave_max - 1) - (m_audio_engine.octave() - 1));
@@ -86,7 +86,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
         m_octave_value->set_text(String::number(new_octave));
     };
 
-    m_wave_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
+    m_wave_knob = GUI::VerticalSlider::construct(m_knobs_container);
     m_wave_knob->set_tooltip("C: cycle through waveforms");
     m_wave_knob->set_range(0, last_wave);
     m_wave_knob->set_value(last_wave - m_audio_engine.wave());
@@ -98,7 +98,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
     };
 
     constexpr int max_attack = 1000;
-    m_attack_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
+    m_attack_knob = GUI::VerticalSlider::construct(m_knobs_container);
     m_attack_knob->set_range(0, max_attack);
     m_attack_knob->set_value(max_attack - m_audio_engine.attack());
     m_attack_knob->on_value_changed = [this](int value) {
@@ -109,7 +109,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
     };
 
     constexpr int max_decay = 1000;
-    m_decay_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
+    m_decay_knob = GUI::VerticalSlider::construct(m_knobs_container);
     m_decay_knob->set_range(0, max_decay);
     m_decay_knob->set_value(max_decay - m_audio_engine.decay());
     m_decay_knob->on_value_changed = [this](int value) {
@@ -120,7 +120,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
     };
 
     constexpr int max_sustain = 1000;
-    m_sustain_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
+    m_sustain_knob = GUI::VerticalSlider::construct(m_knobs_container);
     m_sustain_knob->set_range(0, max_sustain);
     m_sustain_knob->set_value(max_sustain - m_audio_engine.sustain());
     m_sustain_knob->on_value_changed = [this](int value) {
@@ -131,7 +131,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
     };
 
     constexpr int max_release = 1000;
-    m_release_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
+    m_release_knob = GUI::VerticalSlider::construct(m_knobs_container);
     m_release_knob->set_range(0, max_release);
     m_release_knob->set_value(max_release - m_audio_engine.release());
     m_release_knob->on_value_changed = [this](int value) {
@@ -142,7 +142,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
     };
 
     constexpr int max_delay = 8;
-    m_delay_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
+    m_delay_knob = GUI::VerticalSlider::construct(m_knobs_container);
     m_delay_knob->set_range(0, max_delay);
     m_delay_knob->set_value(max_delay - (m_audio_engine.delay() / m_audio_engine.tick()));
     m_delay_knob->on_value_changed = [this](int value) {

+ 1 - 1
Applications/Terminal/main.cpp

@@ -156,7 +156,7 @@ RefPtr<GUI::Window> create_settings_window(TerminalWidget& terminal)
     slider_container->layout()->set_margins({ 6, 16, 6, 6 });
     slider_container->set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed);
     slider_container->set_preferred_size(100, 50);
-    auto slider = GUI::Slider::construct(Orientation::Horizontal, slider_container);
+    auto slider = GUI::HorizontalSlider::construct(slider_container);
 
     slider->on_value_changed = [&terminal](int value) {
         terminal.set_opacity(value);

+ 6 - 6
Demos/WidgetGallery/main.cpp

@@ -96,19 +96,19 @@ int main(int argc, char** argv)
     vertical_slider_container->set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed);
     vertical_slider_container->set_preferred_size(0, 100);
     vertical_slider_container->set_layout(make<GUI::HBoxLayout>());
-    auto vslider1 = GUI::Slider::construct(Orientation::Vertical, vertical_slider_container);
+    auto vslider1 = GUI::VerticalSlider::construct(vertical_slider_container);
     (void)vslider1;
-    auto vslider2 = GUI::Slider::construct(Orientation::Vertical, vertical_slider_container);
+    auto vslider2 = GUI::VerticalSlider::construct(vertical_slider_container);
     vslider2->set_enabled(false);
-    auto vslider3 = GUI::Slider::construct(Orientation::Vertical, vertical_slider_container);
+    auto vslider3 = GUI::VerticalSlider::construct(vertical_slider_container);
     vslider3->set_max(5);
     vslider3->set_knob_size_mode(GUI::Slider::KnobSizeMode::Proportional);
 
-    auto slider1 = GUI::Slider::construct(Orientation::Horizontal, main_widget);
+    auto slider1 = GUI::HorizontalSlider::construct(main_widget);
     (void)slider1;
-    auto slider2 = GUI::Slider::construct(Orientation::Horizontal, main_widget);
+    auto slider2 = GUI::HorizontalSlider::construct(main_widget);
     slider2->set_enabled(false);
-    auto slider3 = GUI::Slider::construct(Orientation::Horizontal, main_widget);
+    auto slider3 = GUI::HorizontalSlider::construct(main_widget);
     slider3->set_max(5);
     slider3->set_knob_size_mode(GUI::Slider::KnobSizeMode::Proportional);
 

+ 1 - 1
DevTools/VisualBuilder/VBWidgetRegistry.cpp

@@ -133,7 +133,7 @@ static RefPtr<GUI::Widget> build_gwidget(VBWidgetType type, GUI::Widget* parent)
         return bar;
     }
     case VBWidgetType::GSlider: {
-        auto slider = GUI::Slider::construct(Orientation::Horizontal, parent);
+        auto slider = GUI::HorizontalSlider::construct(parent);
         slider->set_range(0, 100);
         slider->set_value(50);
         return slider;

+ 24 - 0
Libraries/LibGUI/GSlider.h

@@ -96,4 +96,28 @@ private:
     Orientation m_orientation { Orientation::Horizontal };
 };
 
+class VerticalSlider final : public Slider {
+    C_OBJECT(VerticalSlider)
+public:
+    virtual ~VerticalSlider() override {}
+
+private:
+    explicit VerticalSlider(Widget* parent)
+        : Slider(Orientation::Vertical, parent)
+    {
+    }
+};
+
+class HorizontalSlider final : public Slider {
+    C_OBJECT(HorizontalSlider)
+public:
+    virtual ~HorizontalSlider() override {}
+
+private:
+    explicit HorizontalSlider(Widget* parent)
+        : Slider(Orientation::Horizontal, parent)
+    {
+    }
+};
+
 }