diff --git a/src/plugins/coreplugin/progressmanager/progresspie.cpp b/src/plugins/coreplugin/progressmanager/progresspie.cpp index bf2c0804e19c9e45bcfa4a87395c6bec362bc579..da9b16a8714d16db7bcf1c9d324676dd8085bf34 100644 --- a/src/plugins/coreplugin/progressmanager/progresspie.cpp +++ b/src/plugins/coreplugin/progressmanager/progresspie.cpp @@ -39,7 +39,7 @@ #define PROGRESSBAR_HEIGHT 11 ProgressBar::ProgressBar(QWidget *parent) - : QProgressBar(parent), m_error(false) + : QWidget(parent), m_error(false), m_minimum(1), m_maximum(100), m_value(1) { setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); setMouseTracking(true); @@ -49,6 +49,32 @@ ProgressBar::~ProgressBar() { } +void ProgressBar::reset() +{ + m_value = m_minimum; + update(); +} + +void ProgressBar::setRange(int minimum, int maximum) +{ + m_minimum = minimum; + m_maximum = maximum; + if (m_value < m_minimum || m_value > m_maximum) + m_value = m_minimum; + update(); +} + +void ProgressBar::setValue(int value) +{ + if (m_value == value + || m_value < m_minimum + || m_value > m_maximum) { + return; + } + m_value = value; + update(); +} + QString ProgressBar::title() const { return m_title; @@ -62,6 +88,7 @@ bool ProgressBar::hasError() const void ProgressBar::setTitle(const QString &title) { m_title = title; + update(); } void ProgressBar::setError(bool on) @@ -88,7 +115,7 @@ void ProgressBar::mousePressEvent(QMouseEvent *event) emit clicked(); return; } - QProgressBar::mousePressEvent(event); + QWidget::mousePressEvent(event); } void ProgressBar::mouseMoveEvent(QMouseEvent *) diff --git a/src/plugins/coreplugin/progressmanager/progresspie.h b/src/plugins/coreplugin/progressmanager/progresspie.h index 8351d5332f2d87c01ddb320917d2de2db5d21e80..405b6da99fc8f46f9ed18b83b95abb8c21400c4a 100644 --- a/src/plugins/coreplugin/progressmanager/progresspie.h +++ b/src/plugins/coreplugin/progressmanager/progresspie.h @@ -35,7 +35,7 @@ #include <QtGui/QProgressBar> #include <QtGui/QMouseEvent> -class ProgressBar : public QProgressBar +class ProgressBar : public QWidget { Q_OBJECT public: @@ -51,6 +51,12 @@ public: void paintEvent(QPaintEvent *); void mouseMoveEvent(QMouseEvent *); + int minimum() const { return m_minimum; } + int maximum() const { return m_maximum; } + int value() const { return m_value; } + void reset(); + void setRange(int minimum, int maximum); + void setValue(int value); signals: void clicked(); @@ -62,6 +68,10 @@ private: QString m_title; bool m_error; int m_progressHeight; + + int m_minimum; + int m_maximum; + int m_value; }; #endif // PROGRESSPIE_H