summaryrefslogtreecommitdiff
path: root/LibGUI
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-03-25 04:25:25 +0100
committerAndreas Kling <awesomekling@gmail.com>2019-03-25 04:25:25 +0100
commit614dafea327148874aadbcdb82ac02ec5b09df9c (patch)
tree843c1eea09c15e5e0e2c4c060c54cbf5a9e9bfba /LibGUI
parent32191b0d4b8c9577350095841fdde27898f59e61 (diff)
downloadserenity-614dafea327148874aadbcdb82ac02ec5b09df9c.zip
FileManager+LibGUI: Show thumbnail generation progress in the statusbar.
Diffstat (limited to 'LibGUI')
-rw-r--r--LibGUI/GProgressBar.cpp11
-rw-r--r--LibGUI/GProgressBar.h9
-rw-r--r--LibGUI/GWidget.cpp1
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();
}