1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 05:07:34 +00:00

FileManager+LibGUI: Show thumbnail generation progress in the statusbar.

This commit is contained in:
Andreas Kling 2019-03-25 04:25:25 +01:00
parent 32191b0d4b
commit 614dafea32
9 changed files with 63 additions and 11 deletions

View file

@ -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);

View file

@ -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;
};

View file

@ -336,6 +336,7 @@ void GWidget::invalidate_layout()
return;
if (!w->main_widget())
return;
do_layout();
w->main_widget()->do_layout();
}