diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-03-25 04:25:25 +0100 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-03-25 04:25:25 +0100 |
commit | 614dafea327148874aadbcdb82ac02ec5b09df9c (patch) | |
tree | 843c1eea09c15e5e0e2c4c060c54cbf5a9e9bfba /LibGUI | |
parent | 32191b0d4b8c9577350095841fdde27898f59e61 (diff) | |
download | serenity-614dafea327148874aadbcdb82ac02ec5b09df9c.zip |
FileManager+LibGUI: Show thumbnail generation progress in the statusbar.
Diffstat (limited to 'LibGUI')
-rw-r--r-- | LibGUI/GProgressBar.cpp | 11 | ||||
-rw-r--r-- | LibGUI/GProgressBar.h | 9 | ||||
-rw-r--r-- | LibGUI/GWidget.cpp | 1 |
3 files changed, 20 insertions, 1 deletions
diff --git a/LibGUI/GProgressBar.cpp b/LibGUI/GProgressBar.cpp index c83952187c..a0aa7b07f0 100644 --- a/LibGUI/GProgressBar.cpp +++ b/LibGUI/GProgressBar.cpp @@ -1,5 +1,6 @@ #include <LibGUI/GProgressBar.h> #include <SharedGraphics/Painter.h> +#include <AK/StringBuilder.h> GProgressBar::GProgressBar(GWidget* parent) : GWidget(parent) @@ -45,7 +46,15 @@ void GProgressBar::paint_event(GPaintEvent& event) // Then we draw the progress text over the gradient. // We draw it twice, once offset (1, 1) for a drop shadow look. - auto progress_text = String::format("%d%%", (int)(progress * 100)); + StringBuilder builder; + builder.append(m_caption); + if (m_format == Format::Percentage) + builder.appendf("%d%%", (int)(progress * 100)); + else if (m_format == Format::ValueSlashMax) + builder.appendf("%d/%d", m_value, m_max); + + auto progress_text = builder.to_string(); + painter.draw_text(rect().translated(1, 1), progress_text, TextAlignment::Center, Color::Black); painter.draw_text(rect(), progress_text, TextAlignment::Center, Color::White); diff --git a/LibGUI/GProgressBar.h b/LibGUI/GProgressBar.h index 6768e28871..4e34f29c4e 100644 --- a/LibGUI/GProgressBar.h +++ b/LibGUI/GProgressBar.h @@ -12,11 +12,20 @@ public: int value() const { return m_value; } + String caption() const { return m_caption; } + void set_caption(const String& caption) { m_caption = caption; } + + enum Format { Percentage, ValueSlashMax }; + Format format() const { return m_format; } + void set_format(Format format) { m_format = format; } + protected: virtual void paint_event(GPaintEvent&) override; private: + Format m_format { Percentage }; int m_min { 0 }; int m_max { 100 }; int m_value { 0 }; + String m_caption; }; diff --git a/LibGUI/GWidget.cpp b/LibGUI/GWidget.cpp index 0dcb5e7ca5..fc5177ebdd 100644 --- a/LibGUI/GWidget.cpp +++ b/LibGUI/GWidget.cpp @@ -336,6 +336,7 @@ void GWidget::invalidate_layout() return; if (!w->main_widget()) return; + do_layout(); w->main_widget()->do_layout(); } |