diff --git a/Libraries/LibGUI/GStatusBar.cpp b/Libraries/LibGUI/GStatusBar.cpp index f9813d1990..2624f94423 100644 --- a/Libraries/LibGUI/GStatusBar.cpp +++ b/Libraries/LibGUI/GStatusBar.cpp @@ -1,11 +1,16 @@ +#include #include #include #include #include #include -#include GStatusBar::GStatusBar(GWidget* parent) + : GStatusBar(1, parent) +{ +} + +GStatusBar::GStatusBar(int label_count, GWidget* parent) : GWidget(parent) { set_size_policy(SizePolicy::Fill, SizePolicy::Fixed); @@ -13,11 +18,12 @@ GStatusBar::GStatusBar(GWidget* parent) set_layout(make(Orientation::Horizontal)); layout()->set_margins({ 2, 2, 2, 2 }); layout()->set_spacing(2); - m_label = GLabel::construct(this); - m_label->set_frame_shadow(FrameShadow::Sunken); - m_label->set_frame_shape(FrameShape::Panel); - m_label->set_frame_thickness(1); - m_label->set_text_alignment(TextAlignment::CenterLeft); + + if (label_count < 1) + label_count = 1; + + for (auto i = 0; i < label_count; i++) + m_labels.append(create_label()); m_corner = GResizeCorner::construct(this); } @@ -26,14 +32,34 @@ GStatusBar::~GStatusBar() { } +NonnullRefPtr GStatusBar::create_label() +{ + auto label = GLabel::construct(this); + label->set_frame_shadow(FrameShadow::Sunken); + label->set_frame_shape(FrameShape::Panel); + label->set_frame_thickness(1); + label->set_text_alignment(TextAlignment::CenterLeft); + return label; +} + void GStatusBar::set_text(const StringView& text) { - m_label->set_text(text); + m_labels.first().set_text(text); } String GStatusBar::text() const { - return m_label->text(); + return m_labels.first().text(); +} + +void GStatusBar::set_text(int index, const StringView& text) +{ + m_labels.at(index).set_text(text); +} + +String GStatusBar::text(int index) const +{ + return m_labels.at(index).text(); } void GStatusBar::paint_event(GPaintEvent& event) diff --git a/Libraries/LibGUI/GStatusBar.h b/Libraries/LibGUI/GStatusBar.h index 4f687192e6..9dfe3fceb6 100644 --- a/Libraries/LibGUI/GStatusBar.h +++ b/Libraries/LibGUI/GStatusBar.h @@ -11,13 +11,17 @@ public: virtual ~GStatusBar() override; String text() const; + String text(int index) const; void set_text(const StringView&); + void set_text(int index, const StringView&); protected: explicit GStatusBar(GWidget* parent); + explicit GStatusBar(int label_count, GWidget* parent); virtual void paint_event(GPaintEvent&) override; private: - RefPtr m_label; + NonnullRefPtr create_label(); + NonnullRefPtrVector m_labels; RefPtr m_corner; };